diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e37e204..522d961 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -2,107 +2,8 @@ name: CI
on:
pull_request:
- branches:
- - develop
- - main
-
-permissions:
- contents: read
- pull-requests: write
-
-env:
- CARGO_TERM_COLOR: always
+ workflow_dispatch:
jobs:
- check:
- name: Check, Test & Clippy
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
-
- - name: Install Rust toolchain
- uses: dtolnay/rust-toolchain@stable
-
- - name: Cache cargo registry
- uses: actions/cache@v4
- with:
- path: ~/.cargo/registry
- key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
-
- - name: Cache cargo index
- uses: actions/cache@v4
- with:
- path: ~/.cargo/git
- key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
-
- - name: Cache cargo build
- uses: actions/cache@v4
- with:
- path: target
- key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
-
- - name: Cargo fmt
- run: cargo fmt --check
-
- - name: Cargo build
- run: cargo build --release
-
- - name: Cargo test
- run: cargo test
-
- - name: Cargo clippy
- run: cargo clippy --all-targets -- -D warnings
-
- publish-check:
- name: Publish Check (dry-run)
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
-
- - name: Install Rust toolchain
- uses: dtolnay/rust-toolchain@stable
-
- - name: Cache cargo registry
- uses: actions/cache@v4
- with:
- path: ~/.cargo/registry
- key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
-
- - name: Cache cargo index
- uses: actions/cache@v4
- with:
- path: ~/.cargo/git
- key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
-
- - name: Cargo publish dry-run
- run: cargo publish --dry-run
-
- # Validaciones adicionales para PRs a main
- main-pr-checks:
- name: Main PR Requirements
- if: github.base_ref == 'main'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
-
- - name: Check version bump
- run: |
- # Obtener la versión actual
- CURRENT_VERSION=$(grep '^version = ' Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/')
- echo "Versión en Cargo.toml: $CURRENT_VERSION"
-
- # Obtener el último tag
- LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
- if [ -z "$LAST_TAG" ]; then
- echo "✅ Primer release (no hay tags previos)"
- else
- LAST_VERSION=${LAST_TAG#v}
- echo "Última versión en tag: $LAST_VERSION"
- if [ "$CURRENT_VERSION" = "$LAST_VERSION" ]; then
- echo "❌ Error: La versión en Cargo.toml debe bumpearse en PR a main"
- echo "Cambio requerido para PRs a main:"
- echo "- develop → main: version DEBE incrementarse"
- exit 1
- fi
- echo "✅ Versión bumpeada correctamente"
- fi
+ rust-ci:
+ uses: UniverLab/workflows/.github/workflows/rust-ci.yml@main
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 3b8ef69..ea23d2b 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -2,219 +2,18 @@ name: Release
on:
pull_request:
- branches:
- - main
- types:
- - closed
- paths:
- - Cargo.toml
+ branches: [main]
+ types: [closed]
+ paths: [Cargo.toml]
workflow_dispatch:
permissions:
contents: write
-env:
- CARGO_TERM_COLOR: always
-
jobs:
- create-tag:
- name: Create Release Tag
+ release:
if: github.event.pull_request.merged == true || github.event_name == 'workflow_dispatch'
- runs-on: ubuntu-latest
- outputs:
- tag: ${{ steps.version.outputs.tag }}
- version: ${{ steps.version.outputs.version }}
- created: ${{ steps.create.outputs.created }}
- steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: 0
-
- - name: Get version from Cargo.toml
- id: version
- run: |
- VERSION=$(grep '^version = ' Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/' | tr -d '\r' | xargs)
- TAG="v${VERSION}"
- echo "version=${VERSION}" >> $GITHUB_OUTPUT
- echo "tag=${TAG}" >> $GITHUB_OUTPUT
-
- - name: Check if tag already exists
- id: check_tag
- run: |
- TAG=${{ steps.version.outputs.tag }}
- if git rev-parse "$TAG" >/dev/null 2>&1; then
- echo "exists=true" >> $GITHUB_OUTPUT
- echo "Tag $TAG already exists, skipping"
- else
- echo "exists=false" >> $GITHUB_OUTPUT
- fi
-
- - name: Create and push tag
- id: create
- run: |
- if [ "${{ steps.check_tag.outputs.exists }}" = "true" ]; then
- echo "created=false" >> $GITHUB_OUTPUT
- echo "Tag already exists — skipping release"
- exit 0
- fi
- TAG=${{ steps.version.outputs.tag }}
- git config user.name "github-actions[bot]"
- git config user.email "github-actions[bot]@users.noreply.github.com"
- git tag -a "$TAG" -m "Release $TAG"
- git push origin "$TAG"
- echo "created=true" >> $GITHUB_OUTPUT
- echo "Tag $TAG created and pushed"
-
- build:
- name: Build ${{ matrix.target }}
- needs: create-tag
- if: needs.create-tag.outputs.created == 'true'
- runs-on: ${{ matrix.os }}
- strategy:
- fail-fast: false
- matrix:
- include:
- - target: x86_64-unknown-linux-musl
- os: ubuntu-latest
- archive: tar.gz
- - target: aarch64-apple-darwin
- os: macos-latest
- archive: tar.gz
- - target: x86_64-apple-darwin
- os: macos-latest
- archive: tar.gz
- - target: x86_64-pc-windows-msvc
- os: windows-latest
- archive: zip
-
- steps:
- - uses: actions/checkout@v4
- with:
- ref: ${{ needs.create-tag.outputs.tag }}
-
- - name: Install Rust toolchain
- uses: dtolnay/rust-toolchain@stable
- with:
- targets: ${{ matrix.target }}
-
- - name: Install musl tools (Linux)
- if: matrix.target == 'x86_64-unknown-linux-musl'
- run: sudo apt-get update && sudo apt-get install -y musl-tools
-
- - name: Build release binary
- run: cargo build --release --target ${{ matrix.target }}
-
- - name: Package (unix)
- if: matrix.archive == 'tar.gz'
- run: |
- cd target/${{ matrix.target }}/release
- tar czf "../../../texforge-${{ needs.create-tag.outputs.tag }}-${{ matrix.target }}.tar.gz" texforge
- cd ../../..
-
- - name: Package (windows)
- if: matrix.archive == 'zip'
- shell: pwsh
- run: |
- cd target/${{ matrix.target }}/release
- Compress-Archive -Path texforge.exe -DestinationPath "../../../texforge-${{ needs.create-tag.outputs.tag }}-${{ matrix.target }}.zip"
- cd ../../..
-
- - name: Upload artifact
- uses: actions/upload-artifact@v4
- with:
- name: texforge-${{ matrix.target }}
- path: texforge-${{ needs.create-tag.outputs.tag }}-${{ matrix.target }}.*
-
- github-release:
- name: Create GitHub Release
- needs: [create-tag, build]
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
-
- - name: Download all artifacts
- uses: actions/download-artifact@v4
- with:
- path: artifacts
- merge-multiple: true
-
- - name: Create release
- uses: softprops/action-gh-release@v2
- with:
- tag_name: ${{ needs.create-tag.outputs.tag }}
- generate_release_notes: true
- files: artifacts/*
-
- approve:
- name: Awaiting Manual Approval
- needs: github-release
- runs-on: ubuntu-latest
- environment:
- name: production
- steps:
- - name: Approval granted
- run: echo "Release approved for publishing to crates.io"
-
- ensure-owners:
- name: Ensure crates.io owners
- needs: create-tag
- if: needs.create-tag.outputs.created == 'true'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- with:
- ref: ${{ needs.create-tag.outputs.tag }}
-
- - name: Install Rust toolchain
- uses: dtolnay/rust-toolchain@stable
-
- - name: Add crates.io owners (best-effort)
- env:
- TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
- OWNERS: github:univerlab:owners
- run: |
- set -eu
- if [ -z "$TOKEN" ]; then
- echo "No cargo token found in CARGO_REGISTRY_TOKEN; skipping owners update"
- exit 0
- fi
- CRATE_NAME=$(grep '^name = ' Cargo.toml | head -1 | sed 's/.*"\(.*\)".*/\1/' | tr -d '\r')
- echo "crate=$CRATE_NAME"
- for owner in $(echo "$OWNERS" | tr ',' ' '); do
- echo "Adding owner: $owner"
- cargo owner --token "$TOKEN" --add "$owner" || echo "cargo owner failed for $owner (continuing)"
- done
-
- publish:
- name: Publish to crates.io
- needs: [create-tag, approve, ensure-owners]
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- with:
- ref: ${{ needs.create-tag.outputs.tag }}
-
- - name: Install Rust toolchain
- uses: dtolnay/rust-toolchain@stable
-
- - name: Check if stable release
- id: version_check
- run: |
- VERSION=$(grep '^version = ' Cargo.toml | head -1 | sed 's/.*"\(.*\)".*/\1/' | xargs)
- if [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
- echo "is_stable=true" >> $GITHUB_OUTPUT
- echo "Version $VERSION is stable — will publish"
- else
- echo "is_stable=false" >> $GITHUB_OUTPUT
- echo "Version $VERSION is prerelease/dev — skipping publish"
- fi
-
- - name: Cargo publish
- if: steps.version_check.outputs.is_stable == 'true'
- env:
- CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
- run: cargo publish --allow-dirty
-
- - name: Skipped prerelease
- if: steps.version_check.outputs.is_stable == 'false'
- run: echo "⏭️ Skipped crates.io publish for prerelease version"
+ uses: UniverLab/workflows/.github/workflows/rust-release.yml@main
+ with:
+ binary-name: texforge
+ secrets: inherit
diff --git a/.gitignore b/.gitignore
index afd6cc7..6b521fe 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,5 +28,7 @@ target/
# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb
-
+*.mp4
# End of https://www.toptal.com/developers/gitignore/api/rust
+
+.mimocode/
diff --git a/Cargo.lock b/Cargo.lock
index a265fe2..acaa55c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -107,32 +107,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]]
-name = "aws-lc-rs"
-version = "1.16.2"
+name = "base32"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a054912289d18629dc78375ba2c3726a3afe3ff71b4edba9dedfca0e3446d1fc"
-dependencies = [
- "aws-lc-sys",
- "zeroize",
-]
+checksum = "022dfe9eb35f19ebbcb51e0b40a5ab759f46ad60cadf7297e0bd085afb50e076"
+
+[[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]]
-name = "aws-lc-sys"
-version = "0.39.1"
+name = "bit-set"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83a25cf98105baa966497416dbd42565ce3a8cf8dbfd59803ec9ad46f3126399"
+checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3"
dependencies = [
- "cc",
- "cmake",
- "dunce",
- "fs_extra",
+ "bit-vec",
]
[[package]]
-name = "base64"
-version = "0.22.1"
+name = "bit-vec"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
[[package]]
name = "bitflags"
@@ -183,8 +182,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1e928d4b69e3077709075a938a05ffbedfa53a84c8f766efbf8220bb1ff60e1"
dependencies = [
"find-msvc-tools",
- "jobserver",
- "libc",
"shlex",
]
@@ -200,12 +197,6 @@ version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
-[[package]]
-name = "cfg_aliases"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
-
[[package]]
name = "clap"
version = "4.6.0"
@@ -246,15 +237,6 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
-[[package]]
-name = "cmake"
-version = "0.1.58"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678"
-dependencies = [
- "cc",
-]
-
[[package]]
name = "color_quant"
version = "1.1.0"
@@ -277,16 +259,6 @@ dependencies = [
"memchr",
]
-[[package]]
-name = "core-foundation"
-version = "0.9.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
[[package]]
name = "core-foundation"
version = "0.10.1"
@@ -352,6 +324,26 @@ dependencies = [
"winapi",
]
+[[package]]
+name = "d2-little"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91e9de4e1c31e3024564255281c3240bc486bc10fbfa25fbae49740b2f9258ae"
+dependencies = [
+ "base32",
+ "base64",
+ "fancy-regex",
+ "log",
+ "markdown",
+ "regex",
+ "roxmltree 0.20.0",
+ "serde",
+ "serde_json",
+ "ttf-parser 0.21.1",
+ "unicode-segmentation",
+ "unicode-width",
+]
+
[[package]]
name = "data-url"
version = "0.3.2"
@@ -401,12 +393,6 @@ dependencies = [
"syn",
]
-[[package]]
-name = "dunce"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
-
[[package]]
name = "dyn-clone"
version = "1.0.20"
@@ -447,6 +433,17 @@ dependencies = [
"num-traits",
]
+[[package]]
+name = "fancy-regex"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e24cb5a94bcae1e5408b0effca5cd7172ea3c5755049c5f3af4cd283a165298"
+dependencies = [
+ "bit-set",
+ "regex-automata",
+ "regex-syntax",
+]
+
[[package]]
name = "fastrand"
version = "2.3.0"
@@ -527,7 +524,7 @@ dependencies = [
"memmap2",
"slotmap",
"tinyvec",
- "ttf-parser",
+ "ttf-parser 0.25.1",
]
[[package]]
@@ -539,12 +536,6 @@ dependencies = [
"percent-encoding",
]
-[[package]]
-name = "fs_extra"
-version = "1.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
-
[[package]]
name = "fsevent-sys"
version = "4.1.0"
@@ -628,24 +619,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
dependencies = [
"cfg-if",
- "js-sys",
"libc",
"wasi",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "getrandom"
-version = "0.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
-dependencies = [
- "cfg-if",
- "js-sys",
- "libc",
- "r-efi 5.3.0",
- "wasip2",
- "wasm-bindgen",
]
[[package]]
@@ -656,7 +631,7 @@ checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555"
dependencies = [
"cfg-if",
"libc",
- "r-efi 6.0.0",
+ "r-efi",
"wasip2",
"wasip3",
]
@@ -805,11 +780,9 @@ dependencies = [
"percent-encoding",
"pin-project-lite",
"socket2",
- "system-configuration",
"tokio",
"tower-service",
"tracing",
- "windows-registry",
]
[[package]]
@@ -1066,16 +1039,6 @@ dependencies = [
"syn",
]
-[[package]]
-name = "jobserver"
-version = "0.1.34"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
-dependencies = [
- "getrandom 0.3.4",
- "libc",
-]
-
[[package]]
name = "js-sys"
version = "0.3.94"
@@ -1193,10 +1156,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
[[package]]
-name = "lru-slab"
-version = "0.1.2"
+name = "markdown"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
+checksum = "a5cab8f2cadc416a82d2e783a1946388b31654d391d1c7d92cc1f03e295b1deb"
+dependencies = [
+ "unicode-id",
+]
[[package]]
name = "memchr"
@@ -1227,7 +1193,7 @@ dependencies = [
"serde",
"serde_json",
"thiserror 2.0.18",
- "ttf-parser",
+ "ttf-parser 0.25.1",
]
[[package]]
@@ -1409,15 +1375,6 @@ dependencies = [
"zerovec",
]
-[[package]]
-name = "ppv-lite86"
-version = "0.2.21"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
-dependencies = [
- "zerocopy",
-]
-
[[package]]
name = "prettyplease"
version = "0.2.37"
@@ -1443,62 +1400,6 @@ version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
-[[package]]
-name = "quinn"
-version = "0.11.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
-dependencies = [
- "bytes",
- "cfg_aliases",
- "pin-project-lite",
- "quinn-proto",
- "quinn-udp",
- "rustc-hash",
- "rustls",
- "socket2",
- "thiserror 2.0.18",
- "tokio",
- "tracing",
- "web-time",
-]
-
-[[package]]
-name = "quinn-proto"
-version = "0.11.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098"
-dependencies = [
- "aws-lc-rs",
- "bytes",
- "getrandom 0.3.4",
- "lru-slab",
- "rand",
- "ring",
- "rustc-hash",
- "rustls",
- "rustls-pki-types",
- "slab",
- "thiserror 2.0.18",
- "tinyvec",
- "tracing",
- "web-time",
-]
-
-[[package]]
-name = "quinn-udp"
-version = "0.5.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
-dependencies = [
- "cfg_aliases",
- "libc",
- "once_cell",
- "socket2",
- "tracing",
- "windows-sys 0.59.0",
-]
-
[[package]]
name = "quote"
version = "1.0.45"
@@ -1508,47 +1409,12 @@ dependencies = [
"proc-macro2",
]
-[[package]]
-name = "r-efi"
-version = "5.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
-
[[package]]
name = "r-efi"
version = "6.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
-[[package]]
-name = "rand"
-version = "0.9.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
-dependencies = [
- "rand_chacha",
- "rand_core",
-]
-
-[[package]]
-name = "rand_chacha"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
-dependencies = [
- "ppv-lite86",
- "rand_core",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.9.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
-dependencies = [
- "getrandom 0.3.4",
-]
-
[[package]]
name = "redox_syscall"
version = "0.5.18"
@@ -1631,7 +1497,6 @@ dependencies = [
"mime",
"percent-encoding",
"pin-project-lite",
- "quinn",
"rustls",
"rustls-pki-types",
"rustls-platform-verifier",
@@ -1704,12 +1569,6 @@ dependencies = [
"memchr",
]
-[[package]]
-name = "rustc-hash"
-version = "2.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"
-
[[package]]
name = "rustix"
version = "1.1.4"
@@ -1729,8 +1588,8 @@ version = "0.23.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4"
dependencies = [
- "aws-lc-rs",
"once_cell",
+ "ring",
"rustls-pki-types",
"rustls-webpki",
"subtle",
@@ -1755,7 +1614,6 @@ version = "1.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd"
dependencies = [
- "web-time",
"zeroize",
]
@@ -1765,7 +1623,7 @@ version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784"
dependencies = [
- "core-foundation 0.10.1",
+ "core-foundation",
"core-foundation-sys",
"jni",
"log",
@@ -1792,7 +1650,6 @@ version = "0.103.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef"
dependencies = [
- "aws-lc-rs",
"ring",
"rustls-pki-types",
"untrusted",
@@ -1815,7 +1672,7 @@ dependencies = [
"core_maths",
"log",
"smallvec",
- "ttf-parser",
+ "ttf-parser 0.25.1",
"unicode-bidi-mirroring",
"unicode-ccc",
"unicode-properties",
@@ -1853,7 +1710,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d"
dependencies = [
"bitflags 2.11.0",
- "core-foundation 0.10.1",
+ "core-foundation",
"core-foundation-sys",
"libc",
"security-framework-sys",
@@ -2084,27 +1941,6 @@ dependencies = [
"syn",
]
-[[package]]
-name = "system-configuration"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b"
-dependencies = [
- "bitflags 2.11.0",
- "core-foundation 0.9.4",
- "system-configuration-sys",
-]
-
-[[package]]
-name = "system-configuration-sys"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
[[package]]
name = "tar"
version = "0.4.45"
@@ -2135,6 +1971,7 @@ version = "0.6.0"
dependencies = [
"anyhow",
"clap",
+ "d2-little",
"dirs",
"flate2",
"inquire",
@@ -2143,6 +1980,7 @@ dependencies = [
"notify",
"reqwest",
"resvg",
+ "rustls",
"serde",
"tar",
"tempfile",
@@ -2397,6 +2235,12 @@ version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
+[[package]]
+name = "ttf-parser"
+version = "0.21.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8"
+
[[package]]
name = "ttf-parser"
version = "0.25.1"
@@ -2430,6 +2274,12 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce61d488bcdc9bc8b5d1772c404828b17fc481c0a582b5581e95fb233aef503e"
+[[package]]
+name = "unicode-id"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70ba288e709927c043cbe476718d37be306be53fb1fafecd0dbe36d072be2580"
+
[[package]]
name = "unicode-ident"
version = "1.0.24"
@@ -2677,16 +2527,6 @@ dependencies = [
"wasm-bindgen",
]
-[[package]]
-name = "web-time"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
-dependencies = [
- "js-sys",
- "wasm-bindgen",
-]
-
[[package]]
name = "webpki-root-certs"
version = "1.0.6"
@@ -2739,35 +2579,6 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
-[[package]]
-name = "windows-registry"
-version = "0.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720"
-dependencies = [
- "windows-link",
- "windows-result",
- "windows-strings",
-]
-
-[[package]]
-name = "windows-result"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
-dependencies = [
- "windows-link",
-]
-
-[[package]]
-name = "windows-strings"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
-dependencies = [
- "windows-link",
-]
-
[[package]]
name = "windows-sys"
version = "0.45.0"
@@ -2795,15 +2606,6 @@ dependencies = [
"windows-targets 0.52.6",
]
-[[package]]
-name = "windows-sys"
-version = "0.59.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
-dependencies = [
- "windows-targets 0.52.6",
-]
-
[[package]]
name = "windows-sys"
version = "0.61.2"
@@ -3130,26 +2932,6 @@ dependencies = [
"synstructure",
]
-[[package]]
-name = "zerocopy"
-version = "0.8.48"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9"
-dependencies = [
- "zerocopy-derive",
-]
-
-[[package]]
-name = "zerocopy-derive"
-version = "0.8.48"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
[[package]]
name = "zerofrom"
version = "0.1.6"
diff --git a/Cargo.toml b/Cargo.toml
index 8c5cb98..8370d50 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -33,8 +33,17 @@ walkdir = "2.5"
# Home directory resolution
dirs = "6.0"
-# HTTP client (template downloads)
-reqwest = { version = "0.13", features = ["blocking", "json"] }
+# HTTP client (template downloads). rustls with the `ring` provider instead of
+# the default `aws-lc-rs`: ring is pure-Rust+portable asm and cross-compiles
+# cleanly to Windows/musl without a C toolchain (aws-lc-sys needs clang/NASM).
+reqwest = { version = "0.13", default-features = false, features = [
+ "blocking",
+ "json",
+ "http2",
+ "charset",
+ "rustls-no-provider",
+] }
+rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12"] }
# Archive extraction (GitHub tarballs + tectonic zip on Windows)
flate2 = "1.1"
@@ -51,7 +60,10 @@ resvg = "0.46"
# Graphviz/DOT diagram rendering
layout-rs = "0.1"
-[dev-dependencies]
+# D2 diagram rendering (pure-Rust port of the d2lang pipeline, MPL-2.0)
+d2-little = "0.7.2"
+
+# Temporary directories for build
tempfile = "3.8"
[lints.clippy]
diff --git a/README.md b/README.md
index fc78b2b..cde52e3 100644
--- a/README.md
+++ b/README.md
@@ -12,21 +12,17 @@
░░░░░░
```
-[](https://github.com/UniverLab/texforge/actions/workflows/ci.yml)
-[](https://github.com/UniverLab/texforge/actions/workflows/release.yml)
-[](https://crates.io/crates/texforge)
-[](LICENSE)
+
+
+
+
+
+
Texforge is a unified LaTeX workspace — one tool for writing, rendering diagrams (Mermaid, Graphviz), and building PDFs. Set it up once and stay focused on your document.
---
-### Demo CLI
-
-
-
----
-
## Features
- **🚀 One-command setup** — Install once, everything is included (LaTeX engine, templates, diagram renderers).
@@ -40,6 +36,12 @@ Texforge is a unified LaTeX workspace — one tool for writing, rendering diagra
---
+### Demo with OpenCode
+
+
+
+---
+
## Installation
### Quick install (recommended)
@@ -111,10 +113,6 @@ If you want Copilot to understand texforge and help with common LaTeX tasks, ins
npx skills add https://github.com/jheisonmb/skills --skill texforge
```
-### Demo with OpenCode agents
-
-
-
## Quick Start
```bash
@@ -126,6 +124,11 @@ texforge new mi-tesis
texforge build
```
+## Documentation
+
+Full documentation lives in [`docs/`](docs/): installation, quick start,
+building, diagrams, templates, configuration and the complete CLI reference.
+
## Workflow
```mermaid
@@ -150,9 +153,9 @@ sequenceDiagram
User->>CLI: texforge build
Note over CLI: render embedded diagrams to PNG
- CLI->>Tectonic: compile build/main.tex
+ CLI->>Tectonic: compile entry .tex
Note over CLI,Tectonic: auto-installs tectonic on first run
- Tectonic-->>User: build/main.pdf
+ Tectonic-->>User: my-doc.pdf
```
## `texforge init`
@@ -191,8 +194,8 @@ texforge init
| `texforge config list` | Show all configured values |
| `texforge config ` | Show value for key (name, email, institution, language) |
| `texforge config ` | Set value for key |
-| `texforge template list` | List installed templates |
-| `texforge template list --all` | List installed + available in registry |
+| `texforge template list` | List installed + available in registry |
+| `texforge template list --installed` | List only locally installed templates |
| `texforge template add ` | Download template from registry |
| `texforge template remove ` | Remove installed template |
| `texforge template validate ` | Verify template compatibility |
@@ -241,7 +244,7 @@ Templates are managed through the [texforge-templates](https://github.com/Univer
## Diagrams
-`texforge build` intercepts embedded diagram environments before compilation. Originals are never modified — diagrams are rendered in `build/` copies.
+`texforge build` intercepts embedded diagram environments before compilation. Originals are never modified — diagrams are rendered in temporary build copies.
### Mermaid
@@ -381,13 +384,7 @@ texforge fmt --check # check without modifying (CI-friendly)
MIT
----
-## Support
-
-- 📖 [GitHub Issues](https://github.com/UniverLab/texforge/issues) — Report bugs or request features
-- 💬 [Discussions](https://github.com/UniverLab/texforge/discussions) — Ask questions
-- 🐦 Twitter: [@JheisonMB](https://twitter.com/JheisonMB)
-
---
-Made with ❤️ by [JheisonMB](https://github.com/JheisonMB) and [UniverLab](https://github.com/UniverLab)
+An experiment of [UniverLab](https://github.com/UniverLab) — an open computational laboratory.
+Made with ❤️ by [JheisonMB](https://github.com/JheisonMB)
diff --git a/assets/opencode.gif b/assets/opencode.gif
deleted file mode 100644
index 06c2c63..0000000
Binary files a/assets/opencode.gif and /dev/null differ
diff --git a/assets/texforge.gif b/assets/texforge.gif
deleted file mode 100644
index a0e3320..0000000
Binary files a/assets/texforge.gif and /dev/null differ
diff --git a/demo/demo.rec b/demo/demo.rec
new file mode 100644
index 0000000..130c858
--- /dev/null
+++ b/demo/demo.rec
@@ -0,0 +1,733 @@
+{"demostage":{"captions":[],"demo":{"name":"demo","output_dir":"./dist","prompt":"\\[\\e[1;32m\\]texForge@univerlab\\[\\e[0m\\]:\\[\\e[1;34m\\]~\\[\\e[0m\\]$ "},"duration":38.578358061,"faithful":false,"focuses":[[0.120611476,"main"],[28.8673746,"pdf-r1"]],"layout":{"background":"#0b0f14","font_family":"IBM Plex Mono","fps":15,"height":1080,"line_height":1.2000000476837158,"panes":[{"font_family":"monospace","font_size":16,"height":1080,"id":"main","type":"terminal","width":1440,"x":0,"y":0},{"height":1080,"id":"pdf-r1","reveal_at":28.8673746,"type":"browser","url":"file:///home/jheisonmblivecom/Projects/UniverLab/texforge/examples/texforge-capabilites/texforge-capabilites.pdf","width":1440,"x":0,"y":0}],"width":1440},"timeline":[{"action":"focus","pane":"main"},{"action":"type","human_salt":true,"text":"texforge --help"},{"action":"wait","duration_ms":200},{"action":"keypress","key":"enter"},{"action":"wait","duration_ms":2500},{"action":"type","human_salt":true,"text":"opencode"},{"action":"wait","duration_ms":200},{"action":"keypress","key":"enter"},{"action":"wait_for_quiet","quiet_ms":1500},{"action":"type","human_salt":true,"text":"Create a texforge project \"texforge-capabilites\" demonstrating all capabilities: Mermaid sequence diagra, Graphviz architecture digraph, D2 pipeline diagram, math equations with cross-refs, BibTeX citations, tikz diagram, examples of code listings, two booktabs tables, table of contents, and lists. Compile with texforge build."},{"action":"wait","duration_ms":200},{"action":"keypress","key":"enter"},{"action":"wait_for_quiet","quiet_ms":5000},{"action":"type","human_salt":true,"text":"/exit"},{"action":"wait","duration_ms":200},{"action":"keypress","key":"enter"},{"action":"wait_for_quiet","quiet_ms":500},{"action":"focus","pane":"pdf-r1"},{"action":"scroll","direction":"down","duration_ms":8000,"pane":"pdf-r1","velocity":"constant"},{"action":"wait","duration_ms":8000},{"action":"terminate"}],"typing":{"base_ms":80,"salt_ms":15}},"env":{"TERM":"xterm-256color"},"height":54,"title":"demo","version":2,"width":144}
+[0.000135769,"o","\r\n\u001b[?2004l\r"]
+[0.000337255,"o","\u001b]697;OSCUnlock=6f3dc305774c4fb5ac9caff308f61ed2\u0007\u001b]697;Dir=/home/jheisonmblivecom\u0007"]
+[0.000349953,"o","\u001b]697;Shell=bash\u0007"]
+[0.000401504,"o","\u001b]697;ShellPath=/usr/bin/bash\u0007\u001b]697;WSLDistro=Ubuntu\u0007"]
+[0.00047482,"o","\u001b]697;PID=16910\u0007\u001b]697;ExitCode=0\u0007"]
+[0.000526347,"o","\u001b]697;TTY=/dev/pts/3\u0007\u001b]697;Log=\u0007"]
+[0.000567266,"o","\u001b]697;User=jheisonmblivecom\u0007"]
+[0.002317281,"o","\u001b]697;OSCLock=6f3dc305774c4fb5ac9caff308f61ed2\u0007"]
+[0.002363538,"o","\u001b]697;PreExec\u0007"]
+[0.089152788,"o","\u001b[?2004h\u001b]697;StartPrompt\u0007\u001b[1;32mtexForge@univerlab\u001b[0m:\u001b[1;34m~\u001b[0m$ \u001b]697;EndPrompt\u0007\u001b]697;NewCmd=6f3dc305774c4fb5ac9caff308f61ed2\u0007"]
+[0.204858436,"o","t"]
+[0.291980904,"o","e"]
+[0.374100946,"o","x"]
+[0.456189324,"o","f"]
+[0.542274976,"o","o"]
+[0.616330711,"o","r"]
+[0.707403678,"o","g"]
+[0.786497211,"o","e"]
+[0.875573135,"o"," "]
+[0.953618483,"o","-"]
+[1.043708183,"o","-"]
+[1.120829592,"o","h"]
+[1.214921291,"o","e"]
+[1.304021288,"o","l"]
+[1.371120573,"o","p"]
+[1.572695751,"o","\r\n\u001b[?2004l\r"]
+[1.5747672769999999,"o","Self-contained LaTeX to PDF compiler CLI\r\n\r\n\u001b[1m\u001b[4mUsage:\u001b[0m \u001b[1mtexforge\u001b[0m \r\n\r\n\u001b[1m\u001b[4mCommands:\u001b[0m\r\n \u001b[1mclean\u001b[0m Remove build artifacts\r\n \u001b[1minit\u001b[0m Initialize a texforge project in the current directory\r\n \u001b[1mnew\u001b[0m Create a new project from a template\r\n \u001b[1mbuild\u001b[0m Compile project to PDF\r\n \u001b[1mfmt\u001b[0m Format .tex files\r\n \u001b[1mcheck\u001b[0m Lint project without compiling\r\n \u001b[1mtemplate\u001b[0m Manage templates\r\n \u001b[1mconfig\u001b[0m Manage global configuration\r\n \u001b[1mhelp\u001b[0m Print this message or the help of the given subcommand(s)\r\n\r\n\u001b[1m\u001b[4mOptions:\u001b[0m\r\n \u001b[1m-h\u001b[0m, \u001b[1m--help\u001b[0m Print help\r\n \u001b[1m-V\u001b[0m, \u001b[1m--version\u001b[0m Print version\r\n"]
+[1.575336125,"o","\u001b]697;OSCUnlock=6f3dc305774c4fb5ac9caff308f61ed2\u0007\u001b]697;Dir=/home/jheisonmblivecom\u0007"]
+[1.5753921979999999,"o","\u001b]697;Shell=bash\u0007\u001b]697;ShellPath=/usr/bin/bash\u0007"]
+[1.575454122,"o","\u001b]697;WSLDistro=Ubuntu\u0007\u001b]697;PID=16910\u0007"]
+[1.575515821,"o","\u001b]697;ExitCode=0\u0007\u001b]697;TTY=/dev/pts/3\u0007"]
+[1.575567567,"o","\u001b]697;Log=\u0007\u001b]697;User=jheisonmblivecom\u0007"]
+[1.576844584,"o","\u001b]697;OSCLock=6f3dc305774c4fb5ac9caff308f61ed2\u0007\u001b]697;PreExec\u0007"]
+[1.6654565639999999,"o","\u001b[?2004h\u001b]697;StartPrompt\u0007\u001b[1;32mtexForge@univerlab\u001b[0m:\u001b[1;34m~\u001b[0m$ \u001b]697;EndPrompt\u0007\u001b]697;NewCmd=6f3dc305774c4fb5ac9caff308f61ed2\u0007"]
+[4.221623371,"o","o"]
+[4.2877478,"o","p"]
+[4.352805733,"o","e"]
+[4.433897023,"o","n"]
+[4.506017184,"o","c"]
+[4.585093582,"o","o"]
+[4.656230257,"o","d"]
+[4.740303969,"o","e"]
+[4.941632268,"o","\r\n\u001b[?2004l\r"]
+[5.658414806,"o","\u001b[?2031h\u001b]10;?\u0007\u001b]11;?\u0007\u001b[>0q\u001b[?25l\u001b[s\u001b[6n\u001b[?1016$p\u001b[?2027$p\u001b[?2031$p\u001b[?1004$p\u001b[?2004$p\u001b[?2026$p\u001b[?u\u001b]99;i=opentui-notifications:p=?;\u001b\\\u001b]1337;Capabilities\u001b\\\u001b[H\u001b]66;w=1; \u001b\\\u001b[6n\u001b[H\u001b]66;s=2; \u001b\\\u001b[6n\u001b[u\u001b[s\u001b[?1049h\u001b[>4;1m\u001b[?2027h\u001b[?2004h"]
+[5.658749822,"o","\u001b[?1000h\u001b[?1002h\u001b[?1003h\u001b[?1006h"]
+[5.658801952,"o","\u001b[14t"]
+[5.668513847,"o","\u001b]4;0;?\u0007"]
+[7.85971063,"o","\u001b[?2026h\u001b[?25l\u001b[1;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[2;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[3;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[4;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[5;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[6;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[7;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[8;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[9;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[10;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[11;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[12;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[13;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[14;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[15;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[16;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[17;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[18;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[19;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[20;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[21;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[22;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m "]
+[7.859729269,"o"," \u001b[23;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[24;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[25;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[26;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[27;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[28;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[29;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[30;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[31;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[32;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[33;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[34;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[35;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[36;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[37;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[38;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[39;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[40;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[41;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[42;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[43;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[44;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b"]
+[7.859754695,"o","[45;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[46;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[47;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[48;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[49;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[50;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[51;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[52;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[53;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[54;1H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[?2026l"]
+[7.890234675,"o","\u001b]0;OpenCode\u0007"]
+[7.9852611620000005,"o","\u001b[?2026h\u001b[?25l\u001b[20;54H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;56H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;57H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;58H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;59H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;60H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;61H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;62H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;64H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;65H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;67H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;68H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;69H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;70H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;71H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;72H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;74H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;75H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;77H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;78H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;79H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;80H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;83H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;84H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;85H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;86H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;87H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▄\u001b[0m\u001b[20;88H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;89H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;90H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;91H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;92H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[21;54H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;55H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[21;56H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[21;57H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;58H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[21;59H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;60H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀▀\u001b[0m\u001b[21;62H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;63H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[21;64H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;65H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[21;66H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[21;67H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;68H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[21;69H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;70H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[21;71H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀▄\u001b[0m\u001b[21;74H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;75H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀▀\u001b[0m\u001b[21;77H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀ \u001b[0m\u001b[21;79H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;80H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[21;81H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[21;82H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;83H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[21;84H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;85H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[21;86H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[21;87H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;88H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[21;89H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;90H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[21;91H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[21;92H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[22;54H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[22;55H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m \u001b[0m\u001b[22;56H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m \u001b[0m\u001b[22;57H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[22;58H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[22;59H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[22;60H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m \u001b[0m\u001b[22;62H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[22;63H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[22;64H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[22;65H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m▀▀▀\u001b[0m\u001b[22;68H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[22;69H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m"]
+[7.98526746,"o","\u001b"]
+[7.985274305,"o","[22;70H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m \u001b[0m\u001b[22;72H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[22;74H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[22;75H\u001b[38;2;238;238;238m\u001b[48;2;67;67;67m\u001b[1m \u001b[0m\u001b[22;78H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[22;79H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[22;80H\u001b[38;2;238;238;238m\u001b[48;2;67;67;67m\u001b[1m \u001b[0m\u001b[22;82H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[22;83H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[22;84H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[22;85H\u001b[38;2;238;238;238m\u001b[48;2;67;67;67m\u001b[1m \u001b[0m\u001b[22;87H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[22;88H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[22;89H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[22;90H\u001b[38;2;238;238;238m\u001b[48;2;67;67;67m\u001b[1m▀▀▀\u001b[0m\u001b[23;54H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀▀▀▀ \u001b[0m\u001b[23;59H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[23;60H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀▀▀ ▀▀▀▀ ▀\u001b[0m\u001b[23;70H\u001b[38;2;40;40;40m\u001b[48;2;10;10;10m▀▀\u001b[0m\u001b[23;72H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[23;74H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀▀▀▀ ▀▀▀▀ \u001b[0m\u001b[23;84H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[23;85H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[23;86H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[23;87H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[23;88H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[23;89H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[23;90H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[23;91H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀▀\u001b[0m\u001b[26;36H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[26;37H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[27;36H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[27;37H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[27;39H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mAsk anything... \"Fix broken tests\"\u001b[0m\u001b[27;73H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[28;36H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[28;37H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[29;36H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[29;37H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[29;39H\u001b[38;2;92;156;245m\u001b[48;2;30;30;30mBuild\u001b[0m\u001b[29;44H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[29;45H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30m·\u001b[0m\u001b[29;46H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[29;47H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mQwen3.7 Plus\u001b[0m\u001b[29;59H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[29;60H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mOpenCode Go\u001b[0m\u001b[29;71H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[30;36H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m╹\u001b[0m\u001b[30;37H\u001b[38;2;30;30;30m\u001b[48;2;10;10;10m▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀\u001b[0m\u001b[31;84H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mtab \u001b[0m\u001b[31;88H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10magents\u001b[0m\u001b[31;96H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mctrl+p \u001b[0m\u001b[31;103H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10mcommands\u001b[0m\u001b[35;36H\u001b[38;2;245;167;66m\u001b[48;2;10;10;10m● Tip \u001b[0m\u001b[35;42H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10mRun \u001b[0m\u001b[35;46H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mdocker run -it --rm ghcr.io/anomalyco/opencode\u001b[0m\u001b[35;92H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m for containerized \u001b[0m\u001b[36;42H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10muse\u001b[0m\u001b[53;3H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m~\u001b[0m\u001b[53;136H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m1.15.13\u001b[0m\u001b[0m\u001b]12;#eeeeee\u0007\u001b[1 q\u001b[27;39H\u001b[?25h\u001b[?2026l"]
+[8.03356446,"o","\u001b[?2026h\u001b[?25l\u001b[27;39H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mtes\" dem\u001b[0m\u001b[27;47H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[29;47H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mMiMo V2.5 Free\u001b[0m\u001b[29;61H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[29;62H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mOpenCode Zen\u001b[0m\u001b[0m\u001b[27;47H\u001b[?25h\u001b[?2026l"]
+[8.047543303,"o","\u001b[?2026h\u001b[?25l\u001b[27;47H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mons\u001b[0m\u001b[0m\u001b[27;50H\u001b[?25h\u001b[?2026l"]
+[8.063449681,"o","\u001b[?2026h\u001b[?25l\u001b[27;50H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mtr\u001b[0m\u001b[0m\u001b[27;52H\u001b[?25h\u001b[?2026l"]
+[8.079271333,"o","\u001b[?2026h\u001b[?25l\u001b[27;52H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ma\u001b[0m\u001b[0m\u001b[27;53H\u001b[?25h\u001b[?2026l"]
+[8.097240579,"o","\u001b[?2026h\u001b[?25l\u001b[27;53H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mt\u001b[0m\u001b[0m\u001b[27;54H\u001b[?25h\u001b[?2026l"]
+[8.113261376,"o","\u001b[?2026h\u001b[?25l\u001b[27;54H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mi\u001b[0m\u001b[0m\u001b[27;55H\u001b[?25h\u001b[?2026l"]
+[8.129084736,"o","\u001b[?2026h\u001b[?25l\u001b[27;55H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mn\u001b[0m\u001b[0m\u001b[27;56H\u001b[?25h\u001b[?2026l"]
+[8.148726966,"o","\u001b[?2026h\u001b[?25l\u001b[27;56H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mg \u001b[0m\u001b[0m\u001b[27;58H\u001b[?25h\u001b[?2026l"]
+[8.166859884,"o","\u001b[?2026h\u001b[?25l\u001b[27;58H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ma\u001b[0m\u001b[0m\u001b[27;59H\u001b[?25h\u001b[?2026l"]
+[8.18287332,"o","\u001b[?2026h\u001b[?25l\u001b[27;59H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ml\u001b[0m\u001b[0m\u001b[27;60H\u001b[?25h\u001b[?2026l"]
+[8.199655165,"o","\u001b[?2026h\u001b[?25l\u001b[27;60H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ml\u001b[0m\u001b[0m\u001b[27;61H\u001b[?25h\u001b[?2026l"]
+[8.216095284,"o","\u001b[?2026h\u001b[?25l\u001b[27;61H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[27;62H\u001b[?25h\u001b[?2026l"]
+[8.235712647,"o","\u001b[?2026h\u001b[?25l\u001b[27;62H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mca\u001b[0m\u001b[0m\u001b[27;64H\u001b[?25h\u001b[?2026l"]
+[8.256083428,"o","\u001b[?2026h\u001b[?25l\u001b[27;64H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mp\u001b[0m\u001b[0m\u001b[27;65H\u001b[?25h\u001b[?2026l"]
+[8.273031071,"o","\u001b[?2026h\u001b[?25l\u001b[27;65H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ma\u001b[0m\u001b[0m\u001b[27;66H\u001b[?25h\u001b[?2026l"]
+[8.28926472,"o","\u001b[?2026h\u001b[?25l\u001b[27;66H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mb\u001b[0m\u001b[0m\u001b[27;67H\u001b[?25h\u001b[?2026l"]
+[8.305519166,"o","\u001b[?2026h\u001b[?25l\u001b[27;67H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mi\u001b[0m\u001b[0m\u001b[27;68H\u001b[?25h\u001b[?2026l"]
+[8.322005323,"o","\u001b[?2026h\u001b[?25l\u001b[27;68H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ml\u001b[0m\u001b[0m\u001b[27;69H\u001b[?25h\u001b[?2026l"]
+[8.338115008,"o","\u001b[?2026h\u001b[?25l\u001b[27;69H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mi\u001b[0m\u001b[0m\u001b[27;70H\u001b[?25h\u001b[?2026l"]
+[8.354736452,"o","\u001b[?2026h\u001b[?25l\u001b[27;70H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mt\u001b[0m\u001b[0m\u001b[27;71H\u001b[?25h\u001b[?2026l"]
+[8.370591927,"o","\u001b[?2026h\u001b[?25l\u001b[27;71H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mi\u001b[0m\u001b[0m\u001b[27;72H\u001b[?25h\u001b[?2026l"]
+[8.389016096,"o","\u001b[?2026h\u001b[?25l\u001b[27;72H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mes\u001b[0m\u001b[0m\u001b[27;74H\u001b[?25h\u001b[?2026l"]
+[8.407057599,"o","\u001b[?2026h\u001b[?25l\u001b[27;74H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m:\u001b[0m\u001b[0m\u001b[27;75H\u001b[?25h\u001b[?2026l"]
+[8.422767961,"o","\u001b[?2026h\u001b[?25l\u001b[27;75H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[27;76H\u001b[?25h\u001b[?2026l"]
+[8.438975764,"o","\u001b[?2026h\u001b[?25l\u001b[27;76H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mM\u001b[0m\u001b[0m\u001b[27;77H\u001b[?25h\u001b[?2026l"]
+[8.454879151,"o","\u001b[?2026h\u001b[?25l\u001b[27;77H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30me\u001b[0m\u001b[0m\u001b[27;78H\u001b[?25h\u001b[?2026l"]
+[8.471218676,"o","\u001b[?2026h\u001b[?25l\u001b[27;78H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mr\u001b[0m\u001b[0m\u001b[27;79H\u001b[?25h\u001b[?2026l"]
+[8.487997752,"o","\u001b[?2026h\u001b[?25l\u001b[27;79H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mm\u001b[0m\u001b[0m\u001b[27;80H\u001b[?25h\u001b[?2026l"]
+[8.503985547,"o","\u001b[?2026h\u001b[?25l\u001b[27;80H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ma\u001b[0m\u001b[0m\u001b[27;81H\u001b[?25h\u001b[?2026l"]
+[8.519627234,"o","\u001b[?2026h\u001b[?25l\u001b[27;81H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mi\u001b[0m\u001b[0m\u001b[27;82H\u001b[?25h\u001b[?2026l"]
+[8.535530416,"o","\u001b[?2026h\u001b[?25l\u001b[27;82H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30md\u001b[0m\u001b[0m\u001b[27;83H\u001b[?25h\u001b[?2026l"]
+[8.552071421,"o","\u001b[?2026h\u001b[?25l\u001b[27;83H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[27;84H\u001b[?25h\u001b[?2026l"]
+[8.568294638,"o","\u001b[?2026h\u001b[?25l\u001b[27;84H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ms\u001b[0m\u001b[0m\u001b[27;85H\u001b[?25h\u001b[?2026l"]
+[8.584099233,"o","\u001b[?2026h\u001b[?25l\u001b[27;85H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30me\u001b[0m\u001b[0m\u001b[27;86H\u001b[?25h\u001b[?2026l"]
+[8.600271808,"o","\u001b[?2026h\u001b[?25l\u001b[27;86H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mq\u001b[0m\u001b[0m\u001b[27;87H\u001b[?25h\u001b[?2026l"]
+[8.616276394,"o","\u001b[?2026h\u001b[?25l\u001b[27;87H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mu\u001b[0m\u001b[0m\u001b[27;88H\u001b[?25h\u001b[?2026l"]
+[8.63205935,"o","\u001b[?2026h\u001b[?25l\u001b[27;88H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30me\u001b[0m\u001b[0m\u001b[27;89H\u001b[?25h\u001b[?2026l"]
+[8.648534234,"o","\u001b[?2026h\u001b[?25l\u001b[27;89H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mn\u001b[0m\u001b[0m\u001b[27;90H\u001b[?25h\u001b[?2026l"]
+[8.664893287,"o","\u001b[?2026h\u001b[?25l\u001b[27;90H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mc\u001b[0m\u001b[0m\u001b[27;91H\u001b[?25h\u001b[?2026l"]
+[8.681244987,"o","\u001b[?2026h\u001b[?25l\u001b[27;91H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30me\u001b[0m\u001b[0m\u001b[27;92H\u001b[?25h\u001b[?2026l"]
+[8.697702158,"o","\u001b[?2026h\u001b[?25l\u001b[27;92H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[27;93H\u001b[?25h\u001b[?2026l"]
+[8.7141903,"o","\u001b[?2026h\u001b[?25l\u001b[27;93H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30md\u001b[0m\u001b[0m\u001b[27;94H\u001b[?25h\u001b[?2026l"]
+[8.730293776,"o","\u001b[?2026h\u001b[?25l\u001b[27;94H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mi\u001b[0m\u001b[0m\u001b[27;95H\u001b[?25h\u001b[?2026l"]
+[8.749865895,"o","\u001b[?2026h\u001b[?25l\u001b[27;95H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mag\u001b[0m\u001b[0m\u001b[27;97H\u001b[?25h\u001b[?2026l"]
+[8.765722921,"o","\u001b[?2026h\u001b[?25l\u001b[27;97H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mr\u001b[0m\u001b[0m\u001b[27;98H\u001b[?25h\u001b[?2026l"]
+[8.783756326,"o","\u001b[?2026h\u001b[?25l\u001b[27;98H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ma\u001b[0m\u001b[0m\u001b[27;99H\u001b[?25h\u001b[?2026l"]
+[8.800320373,"o","\u001b[?2026h\u001b[?25l\u001b[27;99H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m,\u001b[0m\u001b[0m\u001b[27;100H\u001b[?25h\u001b[?2026l"]
+[8.816438114,"o","\u001b[?2026h\u001b[?25l\u001b[27;100H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[27;101H\u001b[?25h\u001b[?2026l"]
+[8.83288703,"o","\u001b[?2026h\u001b[?25l\u001b[27;101H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mG\u001b[0m\u001b[0m\u001b[27;102H\u001b[?25h\u001b[?2026l"]
+[8.84953167,"o","\u001b[?2026h\u001b[?25l\u001b[27;102H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mra\u001b[0m\u001b[0m\u001b[27;104H\u001b[?25h\u001b[?2026l"]
+[8.865342523,"o","\u001b[?2026h\u001b[?25l\u001b[27;104H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mp\u001b[0m\u001b[0m\u001b[27;105H\u001b[?25h\u001b[?2026l"]
+[8.881426167,"o","\u001b[?2026h\u001b[?25l\u001b[27;105H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mh\u001b[0m\u001b[0m\u001b[27;106H\u001b[?25h\u001b[?2026l"]
+[8.897569353,"o","\u001b[?2026h\u001b[?25l\u001b[27;106H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mv\u001b[0m\u001b[0m\u001b[27;107H\u001b[?25h\u001b[?2026l"]
+[8.913642975,"o","\u001b[?2026h\u001b[?25l\u001b[27;107H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mi\u001b[0m\u001b[0m\u001b[27;108H\u001b[?25h\u001b[?2026l"]
+[8.929717066,"o","\u001b[?2026h\u001b[?25l\u001b[27;108H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mz\u001b[0m\u001b[0m\u001b[27;109H\u001b[?25h\u001b[?2026l"]
+[8.945686852,"o","\u001b[?2026h\u001b[?25l\u001b[27;101H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[28;39H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mGraphviz \u001b[0m\u001b[29;39H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[29;45H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[29;47H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[29;62H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[30;36H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[30;37H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[30;39H\u001b[38;2;92;156;245m\u001b[48;2;30;30;30mBuild\u001b[0m\u001b[30;44H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[30;45H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30m·\u001b[0m\u001b[30;46H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[30;47H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mMiMo V2.5 Free\u001b[0m\u001b[30;61H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[30;62H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mOpenCode Zen\u001b[0m\u001b[30;74H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[31;36H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m╹\u001b[0m\u001b[31;37H\u001b[38;2;30;30;30m\u001b[48;2;10;10;10m▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀\u001b[0m\u001b[32;84H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mtab \u001b[0m\u001b[32;88H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10magents\u001b[0m\u001b[32;96H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mctrl+p \u001b[0m\u001b[32;103H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10mcommands\u001b[0m\u001b[35;36H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[36;36H\u001b[38;2;245;167;66m\u001b[48;2;10;10;10m● Tip \u001b[0m\u001b[36;42H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10mRun \u001b[0m\u001b[36;46H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mdocker run -it --rm ghcr.io/anomalyco/opencode\u001b[0m\u001b[36;92H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m for containerized \u001b[0m\u001b[37;42H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10muse\u001b[0m\u001b[0m\u001b[28;48H\u001b[?25h\u001b[?2026l"]
+[8.962376118,"o","\u001b[?2026h\u001b[?25l\u001b[28;48H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ma\u001b[0m\u001b[0m\u001b[28;49H\u001b[?25h\u001b[?2026l"]
+[8.978348926,"o","\u001b[?2026h\u001b[?25l\u001b[28;49H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mr\u001b[0m\u001b[0m\u001b[28;50H\u001b[?25h\u001b[?2026l"]
+[8.996302793,"o","\u001b[?2026h\u001b[?25l\u001b[28;50H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mch\u001b[0m\u001b[0m\u001b[28;52H\u001b[?25h\u001b[?2026l"]
+[9.012363502,"o","\u001b[?2026h\u001b[?25l\u001b[28;52H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mi\u001b[0m\u001b[0m\u001b[28;53H\u001b[?25h\u001b[?2026l"]
+[9.028493446,"o","\u001b[?2026h\u001b[?25l\u001b[28;53H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mt\u001b[0m\u001b[0m\u001b[28;54H\u001b[?25h\u001b[?2026l"]
+[9.044458414,"o","\u001b[?2026h\u001b[?25l\u001b[28;54H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30me\u001b[0m\u001b[0m\u001b[28;55H\u001b[?25h\u001b[?2026l"]
+[9.060932337,"o","\u001b[?2026h\u001b[?25l\u001b[28;55H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mc\u001b[0m\u001b[53;6H\u001b[38;2;127;216;143m\u001b[48;2;10;10;10m⊙ \u001b[0m\u001b[53;8H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m3 MCP\u001b[0m\u001b[53;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m/status\u001b[0m\u001b[0m\u001b[28;56H\u001b[?25h\u001b[?2026l"]
+[9.077659854,"o","\u001b[?2026h\u001b[?25l\u001b[28;56H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mt\u001b[0m\u001b[0m\u001b[28;57H\u001b[?25h\u001b[?2026l"]
+[9.09358016,"o","\u001b[?2026h\u001b[?25l\u001b[28;57H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mur\u001b[0m\u001b[0m\u001b[28;59H\u001b[?25h\u001b[?2026l"]
+[9.111542711,"o","\u001b[?2026h\u001b[?25l\u001b[28;59H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30me\u001b[0m\u001b[0m\u001b[28;60H\u001b[?25h\u001b[?2026l"]
+[9.132142946,"o","\u001b[?2026h\u001b[?25l\u001b[28;60H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[28;61H\u001b[?25h\u001b[?2026l"]
+[9.148048633,"o","\u001b[?2026h\u001b[?25l\u001b[28;61H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30md\u001b[0m\u001b[0m\u001b[28;62H\u001b[?25h\u001b[?2026l"]
+[9.16523702,"o","\u001b[?2026h\u001b[?25l\u001b[28;62H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mig\u001b[0m\u001b[0m\u001b[28;64H\u001b[?25h\u001b[?2026l"]
+[9.181153646,"o","\u001b[?2026h\u001b[?25l\u001b[28;64H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mr\u001b[0m\u001b[0m\u001b[28;65H\u001b[?25h\u001b[?2026l"]
+[9.197459905,"o","\u001b[?2026h\u001b[?25l\u001b[28;65H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ma\u001b[0m\u001b[0m\u001b[28;66H\u001b[?25h\u001b[?2026l"]
+[9.214135262,"o","\u001b[?2026h\u001b[?25l\u001b[28;66H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mp\u001b[0m\u001b[0m\u001b[28;67H\u001b[?25h\u001b[?2026l"]
+[9.230552558,"o","\u001b[?2026h\u001b[?25l\u001b[28;67H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mh\u001b[0m\u001b[0m\u001b[28;68H\u001b[?25h\u001b[?2026l"]
+[9.246684426,"o","\u001b[?2026h\u001b[?25l\u001b[28;68H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m,\u001b[0m\u001b[0m\u001b[28;69H\u001b[?25h\u001b[?2026l"]
+[9.262897713,"o","\u001b[?2026h\u001b[?25l\u001b[28;69H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[28;70H\u001b[?25h\u001b[?2026l"]
+[9.278955654,"o","\u001b[?2026h\u001b[?25l\u001b[28;70H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mD\u001b[0m\u001b[0m\u001b[28;71H\u001b[?25h\u001b[?2026l"]
+[9.295717443000001,"o","\u001b[?2026h\u001b[?25l\u001b[28;71H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m2\u001b[0m\u001b[0m\u001b[28;72H\u001b[?25h\u001b[?2026l"]
+[9.311282148,"o","\u001b[?2026h\u001b[?25l\u001b[28;72H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[28;73H\u001b[?25h\u001b[?2026l"]
+[9.32754674,"o","\u001b[?2026h\u001b[?25l\u001b[28;73H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mp\u001b[0m\u001b[0m\u001b[28;74H\u001b[?25h\u001b[?2026l"]
+[9.343662518,"o","\u001b[?2026h\u001b[?25l\u001b[28;74H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mi\u001b[0m\u001b[0m\u001b[28;75H\u001b[?25h\u001b[?2026l"]
+[9.360496848,"o","\u001b[?2026h\u001b[?25l\u001b[28;75H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mp\u001b[0m\u001b[0m\u001b[28;76H\u001b[?25h\u001b[?2026l"]
+[9.385056806,"o","\u001b[?2026h\u001b[?25l\u001b[28;76H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30me\u001b[0m\u001b[0m\u001b[28;77H\u001b[?25h\u001b[?2026l"]
+[9.401905694,"o","\u001b[?2026h\u001b[?25l\u001b[28;77H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mli\u001b[0m\u001b[0m\u001b[28;79H\u001b[?25h\u001b[?2026l"]
+[9.418235508,"o","\u001b[?2026h\u001b[?25l\u001b[28;79H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mn\u001b[0m\u001b[0m\u001b[28;80H\u001b[?25h\u001b[?2026l"]
+[9.434156002,"o","\u001b[?2026h\u001b[?25l\u001b[28;80H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30me\u001b[0m\u001b[0m\u001b[28;81H\u001b[?25h\u001b[?2026l"]
+[9.450988052,"o","\u001b[?2026h\u001b[?25l\u001b[28;81H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[28;82H\u001b[?25h\u001b[?2026l"]
+[9.466834164,"o","\u001b[?2026h\u001b[?25l\u001b[28;82H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30md\u001b[0m\u001b[0m\u001b[28;83H\u001b[?25h\u001b[?2026l"]
+[9.483849797,"o","\u001b[?2026h\u001b[?25l\u001b[28;83H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mia\u001b[0m\u001b[0m\u001b[28;85H\u001b[?25h\u001b[?2026l"]
+[9.514971455,"o","\u001b[?2026h\u001b[?25l\u001b[28;85H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mg\u001b[0m\u001b[0m\u001b[28;86H\u001b[?25h\u001b[?2026l"]
+[9.531170823,"o","\u001b[?2026h\u001b[?25l\u001b[28;86H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mra\u001b[0m\u001b[0m\u001b[28;88H\u001b[?25h\u001b[?2026l"]
+[9.54979115,"o","\u001b[?2026h\u001b[?25l\u001b[28;88H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mm\u001b[0m\u001b[0m\u001b[28;89H\u001b[?25h\u001b[?2026l"]
+[9.565724068,"o","\u001b[?2026h\u001b[?25l\u001b[28;89H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m,\u001b[0m\u001b[0m\u001b[28;90H\u001b[?25h\u001b[?2026l"]
+[9.58161827,"o","\u001b[?2026h\u001b[?25l\u001b[28;90H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[28;91H\u001b[?25h\u001b[?2026l"]
+[9.597912276,"o","\u001b[?2026h\u001b[?25l\u001b[28;91H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mm\u001b[0m\u001b[0m\u001b[28;92H\u001b[?25h\u001b[?2026l"]
+[9.615446827,"o","\u001b[?2026h\u001b[?25l\u001b[28;92H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mat\u001b[0m\u001b[0m\u001b[28;94H\u001b[?25h\u001b[?2026l"]
+[9.631165917,"o","\u001b[?2026h\u001b[?25l\u001b[28;94H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mh\u001b[0m\u001b[0m\u001b[28;95H\u001b[?25h\u001b[?2026l"]
+[9.647299041,"o","\u001b[?2026h\u001b[?25l\u001b[28;95H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[28;96H\u001b[?25h\u001b[?2026l"]
+[9.663407584,"o","\u001b[?2026h\u001b[?25l\u001b[28;96H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30me\u001b[0m\u001b[0m\u001b[28;97H\u001b[?25h\u001b[?2026l"]
+[9.679418038,"o","\u001b[?2026h\u001b[?25l\u001b[28;97H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mq\u001b[0m\u001b[0m\u001b[28;98H\u001b[?25h\u001b[?2026l"]
+[9.69575998,"o","\u001b[?2026h\u001b[?25l\u001b[28;98H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mu\u001b[0m\u001b[0m\u001b[28;99H\u001b[?25h\u001b[?2026l"]
+[9.711662765,"o","\u001b[?2026h\u001b[?25l\u001b[28;99H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ma\u001b[0m\u001b[0m\u001b[28;100H\u001b[?25h\u001b[?2026l"]
+[9.727571682,"o","\u001b[?2026h\u001b[?25l\u001b[28;100H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mt\u001b[0m\u001b[0m\u001b[28;101H\u001b[?25h\u001b[?2026l"]
+[9.743930487,"o","\u001b[?2026h\u001b[?25l\u001b[28;101H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mi\u001b[0m\u001b[0m\u001b[28;102H\u001b[?25h\u001b[?2026l"]
+[9.760443045,"o","\u001b[?2026h\u001b[?25l\u001b[28;102H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mo\u001b[0m\u001b[0m\u001b[28;103H\u001b[?25h\u001b[?2026l"]
+[9.776790737,"o","\u001b[?2026h\u001b[?25l\u001b[28;103H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mn\u001b[0m\u001b[0m\u001b[28;104H\u001b[?25h\u001b[?2026l"]
+[9.793408737,"o","\u001b[?2026h\u001b[?25l\u001b[28;104H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ms\u001b[0m\u001b[0m\u001b[28;105H\u001b[?25h\u001b[?2026l"]
+[9.809440027,"o","\u001b[?2026h\u001b[?25l\u001b[28;105H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m w\u001b[0m\u001b[0m\u001b[28;107H\u001b[?25h\u001b[?2026l"]
+[9.826094353,"o","\u001b[?2026h\u001b[?25l\u001b[28;107H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mi\u001b[0m\u001b[0m\u001b[28;108H\u001b[?25h\u001b[?2026l"]
+[9.843194759,"o","\u001b[?2026h\u001b[?25l\u001b[28;108H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mt\u001b[0m\u001b[0m\u001b[28;109H\u001b[?25h\u001b[?2026l"]
+[9.859626202,"o","\u001b[?2026h\u001b[?25l\u001b[19;54H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;56H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;57H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;58H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;59H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;60H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;61H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;62H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;64H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;65H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;67H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;68H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;69H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;70H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;71H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;72H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;74H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[19;75H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[19;77H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[19;78H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[19;79H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[19;80H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[19;83H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[19;84H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[19;85H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[19;86H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[19;87H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▄\u001b[0m\u001b[19;88H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[19;89H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[19;90H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[19;91H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[19;92H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;54H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[20;55H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[20;56H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[20;57H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[20;58H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;59H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[20;60H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀▀\u001b[0m\u001b[20;62H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[20;63H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;64H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[20;65H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[20;66H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[20;67H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[20;68H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;69H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[20;70H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[20;71H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀▄\u001b[0m\u001b[20;74H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[20;75H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀▀\u001b[0m\u001b[20;77H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀ \u001b[0m\u001b[20;79H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[20;80H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[20;81H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[20;82H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[20;83H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;84H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[20;85H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[20;86H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[20;87H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[20;88H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;89H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[20;90H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[20;91H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[20;92H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;54H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;55H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m \u001b[0m\u001b[21;56H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m \u001b[0m\u001b[21;57H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;58H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[21;59H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;60H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m \u001b[0m\u001b[21;62H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;63H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[21;64H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;65H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m▀▀▀\u001b[0m\u001b[21;69H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;70H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m \u001b[0"]
+[9.859638036,"o","m\u001b[21;72H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;74H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;75H\u001b[38;2;238;238;238m\u001b[48;2;67;67;67m\u001b[1m \u001b[0m\u001b[21;78H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[21;79H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;80H\u001b[38;2;238;238;238m\u001b[48;2;67;67;67m\u001b[1m \u001b[0m\u001b[21;82H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;83H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[21;84H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;85H\u001b[38;2;238;238;238m\u001b[48;2;67;67;67m\u001b[1m \u001b[0m\u001b[21;87H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;88H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[21;89H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;90H\u001b[38;2;238;238;238m\u001b[48;2;67;67;67m\u001b[1m▀▀▀\u001b[0m\u001b[22;54H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀▀▀▀\u001b[0m\u001b[22;60H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀▀▀\u001b[0m\u001b[22;64H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀▀▀▀\u001b[0m\u001b[22;69H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[22;70H\u001b[38;2;40;40;40m\u001b[48;2;10;10;10m▀▀\u001b[0m\u001b[22;72H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[22;74H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀▀▀▀\u001b[0m\u001b[22;79H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀▀▀▀\u001b[0m\u001b[22;84H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[22;85H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[22;86H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[22;87H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[22;88H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[22;89H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[22;90H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[22;91H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀▀\u001b[0m\u001b[23;54H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[23;74H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[25;36H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[25;37H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[26;39H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mtes\" demonstrating all capabilities: Mermaid sequence diagra, \u001b[0m\u001b[27;39H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mGraphviz archi\u001b[0m\u001b[27;54H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mecture digr\u001b[0m\u001b[27;66H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mph, D2 pipeline \u001b[0m\u001b[27;83H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30miagram, math equations \u001b[0m\u001b[28;39H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mwith\u001b[0m\u001b[28;43H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[28;43H\u001b[?25h\u001b[?2026l"]
+[9.876286918,"o","\u001b[?2026h\u001b[?25l\u001b[28;43H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[28;44H\u001b[?25h\u001b[?2026l"]
+[9.892532699,"o","\u001b[?2026h\u001b[?25l\u001b[28;44H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mc\u001b[0m\u001b[0m\u001b[28;45H\u001b[?25h\u001b[?2026l"]
+[9.908733199,"o","\u001b[?2026h\u001b[?25l\u001b[28;45H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mr\u001b[0m\u001b[0m\u001b[28;46H\u001b[?25h\u001b[?2026l"]
+[9.925490057,"o","\u001b[?2026h\u001b[?25l\u001b[28;46H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mo\u001b[0m\u001b[0m\u001b[28;47H\u001b[?25h\u001b[?2026l"]
+[9.941976675,"o","\u001b[?2026h\u001b[?25l\u001b[28;47H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ms\u001b[0m\u001b[0m\u001b[28;48H\u001b[?25h\u001b[?2026l"]
+[9.958709344,"o","\u001b[?2026h\u001b[?25l\u001b[28;48H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ms\u001b[0m\u001b[0m\u001b[28;49H\u001b[?25h\u001b[?2026l"]
+[9.976395824,"o","\u001b[?2026h\u001b[?25l\u001b[28;49H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m-r\u001b[0m\u001b[0m\u001b[28;51H\u001b[?25h\u001b[?2026l"]
+[9.992217523,"o","\u001b[?2026h\u001b[?25l\u001b[28;51H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30me\u001b[0m\u001b[0m\u001b[28;52H\u001b[?25h\u001b[?2026l"]
+[10.008416487,"o","\u001b[?2026h\u001b[?25l\u001b[28;52H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mf\u001b[0m\u001b[0m\u001b[28;53H\u001b[?25h\u001b[?2026l"]
+[10.024487218,"o","\u001b[?2026h\u001b[?25l\u001b[28;53H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ms\u001b[0m\u001b[0m\u001b[28;54H\u001b[?25h\u001b[?2026l"]
+[10.040496778,"o","\u001b[?2026h\u001b[?25l\u001b[28;54H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m,\u001b[0m\u001b[0m\u001b[28;55H\u001b[?25h\u001b[?2026l"]
+[10.056507578,"o","\u001b[?2026h\u001b[?25l\u001b[28;55H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[28;56H\u001b[?25h\u001b[?2026l"]
+[10.072710369,"o","\u001b[?2026h\u001b[?25l\u001b[28;56H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mB\u001b[0m\u001b[0m\u001b[28;57H\u001b[?25h\u001b[?2026l"]
+[10.088767337,"o","\u001b[?2026h\u001b[?25l\u001b[28;57H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mi\u001b[0m\u001b[0m\u001b[28;58H\u001b[?25h\u001b[?2026l"]
+[10.105044328,"o","\u001b[?2026h\u001b[?25l\u001b[28;58H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mb\u001b[0m\u001b[0m\u001b[28;59H\u001b[?25h\u001b[?2026l"]
+[10.121379806,"o","\u001b[?2026h\u001b[?25l\u001b[28;59H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mTe\u001b[0m\u001b[0m\u001b[28;61H\u001b[?25h\u001b[?2026l"]
+[10.137211597,"o","\u001b[?2026h\u001b[?25l\u001b[28;61H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mX\u001b[0m\u001b[0m\u001b[28;62H\u001b[?25h\u001b[?2026l"]
+[10.153149588,"o","\u001b[?2026h\u001b[?25l\u001b[28;62H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[28;63H\u001b[?25h\u001b[?2026l"]
+[10.169193917,"o","\u001b[?2026h\u001b[?25l\u001b[28;63H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mc\u001b[0m\u001b[0m\u001b[28;64H\u001b[?25h\u001b[?2026l"]
+[10.185449247,"o","\u001b[?2026h\u001b[?25l\u001b[28;64H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mi\u001b[0m\u001b[0m\u001b[28;65H\u001b[?25h\u001b[?2026l"]
+[10.202150347,"o","\u001b[?2026h\u001b[?25l\u001b[28;65H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mt\u001b[0m\u001b[0m\u001b[28;66H\u001b[?25h\u001b[?2026l"]
+[10.217917179,"o","\u001b[?2026h\u001b[?25l\u001b[28;66H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ma\u001b[0m\u001b[0m\u001b[28;67H\u001b[?25h\u001b[?2026l"]
+[10.234625941000001,"o","\u001b[?2026h\u001b[?25l\u001b[28;67H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mt\u001b[0m\u001b[0m\u001b[28;68H\u001b[?25h\u001b[?2026l"]
+[10.250888869,"o","\u001b[?2026h\u001b[?25l\u001b[28;68H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mi\u001b[0m\u001b[0m\u001b[28;69H\u001b[?25h\u001b[?2026l"]
+[10.266897825,"o","\u001b[?2026h\u001b[?25l\u001b[28;69H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mo\u001b[0m\u001b[0m\u001b[28;70H\u001b[?25h\u001b[?2026l"]
+[10.283268565,"o","\u001b[?2026h\u001b[?25l\u001b[28;70H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mn\u001b[0m\u001b[0m\u001b[28;71H\u001b[?25h\u001b[?2026l"]
+[10.299543127,"o","\u001b[?2026h\u001b[?25l\u001b[28;71H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ms\u001b[0m\u001b[0m\u001b[28;72H\u001b[?25h\u001b[?2026l"]
+[10.315465123,"o","\u001b[?2026h\u001b[?25l\u001b[28;72H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m,\u001b[0m\u001b[0m\u001b[28;73H\u001b[?25h\u001b[?2026l"]
+[10.331412099,"o","\u001b[?2026h\u001b[?25l\u001b[28;73H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m t\u001b[0m\u001b[0m\u001b[28;75H\u001b[?25h\u001b[?2026l"]
+[10.349124717,"o","\u001b[?2026h\u001b[?25l\u001b[28;75H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mi\u001b[0m\u001b[0m\u001b[28;76H\u001b[?25h\u001b[?2026l"]
+[10.368064211,"o","\u001b[?2026h\u001b[?25l\u001b[28;76H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mk\u001b[0m\u001b[0m\u001b[28;77H\u001b[?25h\u001b[?2026l"]
+[10.38843236,"o","\u001b[?2026h\u001b[?25l\u001b[28;77H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mz\u001b[0m\u001b[0m\u001b[28;78H\u001b[?25h\u001b[?2026l"]
+[10.407435441,"o","\u001b[?2026h\u001b[?25l\u001b[28;78H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m d\u001b[0m\u001b[0m\u001b[28;80H\u001b[?25h\u001b[?2026l"]
+[10.42397839,"o","\u001b[?2026h\u001b[?25l\u001b[28;80H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mi\u001b[0m\u001b[0m\u001b[28;81H\u001b[?25h\u001b[?2026l"]
+[10.439985639,"o","\u001b[?2026h\u001b[?25l\u001b[28;81H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ma\u001b[0m\u001b[0m\u001b[28;82H\u001b[?25h\u001b[?2026l"]
+[10.456676889,"o","\u001b[?2026h\u001b[?25l\u001b[28;82H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mg\u001b[0m\u001b[0m\u001b[28;83H\u001b[?25h\u001b[?2026l"]
+[10.473048347,"o","\u001b[?2026h\u001b[?25l\u001b[28;83H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mr\u001b[0m\u001b[0m\u001b[28;84H\u001b[?25h\u001b[?2026l"]
+[10.489325363,"o","\u001b[?2026h\u001b[?25l\u001b[28;84H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ma\u001b[0m\u001b[0m\u001b[28;85H\u001b[?25h\u001b[?2026l"]
+[10.505440452,"o","\u001b[?2026h\u001b[?25l\u001b[28;85H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mm\u001b[0m\u001b[0m\u001b[28;86H\u001b[?25h\u001b[?2026l"]
+[10.522205121,"o","\u001b[?2026h\u001b[?25l\u001b[28;86H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m,\u001b[0m\u001b[0m\u001b[28;87H\u001b[?25h\u001b[?2026l"]
+[10.538913067,"o","\u001b[?2026h\u001b[?25l\u001b[28;87H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[28;88H\u001b[?25h\u001b[?2026l"]
+[10.555933122999999,"o","\u001b[?2026h\u001b[?25l\u001b[28;88H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30me\u001b[0m\u001b[0m\u001b[28;89H\u001b[?25h\u001b[?2026l"]
+[10.571886849,"o","\u001b[?2026h\u001b[?25l\u001b[28;89H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mx\u001b[0m\u001b[0m\u001b[28;90H\u001b[?25h\u001b[?2026l"]
+[10.58798463,"o","\u001b[?2026h\u001b[?25l\u001b[28;90H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ma\u001b[0m\u001b[0m\u001b[28;91H\u001b[?25h\u001b[?2026l"]
+[10.603799892,"o","\u001b[?2026h\u001b[?25l\u001b[28;91H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mm\u001b[0m\u001b[0m\u001b[28;92H\u001b[?25h\u001b[?2026l"]
+[10.619625981,"o","\u001b[?2026h\u001b[?25l\u001b[28;92H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mp\u001b[0m\u001b[0m\u001b[28;93H\u001b[?25h\u001b[?2026l"]
+[10.636151222,"o","\u001b[?2026h\u001b[?25l\u001b[28;93H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ml\u001b[0m\u001b[0m\u001b[28;94H\u001b[?25h\u001b[?2026l"]
+[10.65286565,"o","\u001b[?2026h\u001b[?25l\u001b[28;94H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30me\u001b[0m\u001b[0m\u001b[28;95H\u001b[?25h\u001b[?2026l"]
+[10.670690837,"o","\u001b[?2026h\u001b[?25l\u001b[28;95H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ms \u001b[0m\u001b[0m\u001b[28;97H\u001b[?25h\u001b[?2026l"]
+[10.68831802,"o","\u001b[?2026h\u001b[?25l\u001b[28;97H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mo\u001b[0m\u001b[0m\u001b[28;98H\u001b[?25h\u001b[?2026l"]
+[10.704516371,"o","\u001b[?2026h\u001b[?25l\u001b[28;98H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mf\u001b[0m\u001b[0m\u001b[28;99H\u001b[?25h\u001b[?2026l"]
+[10.720675614,"o","\u001b[?2026h\u001b[?25l\u001b[28;99H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[28;100H\u001b[?25h\u001b[?2026l"]
+[10.736899302,"o","\u001b[?2026h\u001b[?25l\u001b[28;100H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mc\u001b[0m\u001b[0m\u001b[28;101H\u001b[?25h\u001b[?2026l"]
+[10.752878541,"o","\u001b[?2026h\u001b[?25l\u001b[28;101H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mo\u001b[0m\u001b[0m\u001b[28;102H\u001b[?25h\u001b[?2026l"]
+[10.769433025,"o","\u001b[?2026h\u001b[?25l\u001b[28;102H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30md\u001b[0m\u001b[0m\u001b[28;103H\u001b[?25h\u001b[?2026l"]
+[10.789516113,"o","\u001b[?2026h\u001b[?25l\u001b[28;103H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30me\u001b[0m\u001b[0m\u001b[28;104H\u001b[?25h\u001b[?2026l"]
+[10.808530166,"o","\u001b[?2026h\u001b[?25l\u001b[28;104H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[28;105H\u001b[?25h\u001b[?2026l"]
+[10.828210689,"o","\u001b[?2026h\u001b[?25l\u001b[28;105H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ml\u001b[0m\u001b[0m\u001b[28;106H\u001b[?25h\u001b[?2026l"]
+[10.847114714,"o","\u001b[?2026h\u001b[?25l\u001b[28;106H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mis\u001b[0m\u001b[0m\u001b[28;108H\u001b[?25h\u001b[?2026l"]
+[10.864883831,"o","\u001b[?2026h\u001b[?25l\u001b[28;108H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mt\u001b[0m\u001b[0m\u001b[28;109H\u001b[?25h\u001b[?2026l"]
+[10.880692931,"o","\u001b[?2026h\u001b[?25l\u001b[28;105H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[29;39H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mlisti\u001b[0m\u001b[30;39H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[30;45H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[30;47H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[30;62H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[31;36H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[31;37H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[31;39H\u001b[38;2;92;156;245m\u001b[48;2;30;30;30mBuild\u001b[0m\u001b[31;44H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[31;45H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30m·\u001b[0m\u001b[31;46H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[31;47H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mMiMo V2.5 Free\u001b[0m\u001b[31;61H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[31;62H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mOpenCode Zen\u001b[0m\u001b[31;74H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[32;36H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m╹\u001b[0m\u001b[32;37H\u001b[38;2;30;30;30m\u001b[48;2;10;10;10m▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀\u001b[0m\u001b[33;84H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mtab \u001b[0m\u001b[33;88H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10magents\u001b[0m\u001b[33;96H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mctrl+p \u001b[0m\u001b[33;103H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10mcommands\u001b[0m\u001b[36;36H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[37;36H\u001b[38;2;245;167;66m\u001b[48;2;10;10;10m● Tip \u001b[0m\u001b[37;42H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10mRun \u001b[0m\u001b[37;46H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mdocker run -it --rm ghcr.io/anomalyco/opencode\u001b[0m\u001b[37;92H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m for containerized \u001b[0m\u001b[38;42H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10muse\u001b[0m\u001b[0m\u001b[29;44H\u001b[?25h\u001b[?2026l"]
+[10.897307728,"o","\u001b[?2026h\u001b[?25l\u001b[29;44H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mn\u001b[0m\u001b[0m\u001b[29;45H\u001b[?25h\u001b[?2026l"]
+[10.913763263,"o","\u001b[?2026h\u001b[?25l\u001b[29;45H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mg\u001b[0m\u001b[0m\u001b[29;46H\u001b[?25h\u001b[?2026l"]
+[10.929739509000001,"o","\u001b[?2026h\u001b[?25l\u001b[29;46H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ms\u001b[0m\u001b[0m\u001b[29;47H\u001b[?25h\u001b[?2026l"]
+[10.949735068,"o","\u001b[?2026h\u001b[?25l\u001b[29;47H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m,\u001b[0m\u001b[0m\u001b[29;48H\u001b[?25h\u001b[?2026l"]
+[10.966137405,"o","\u001b[?2026h\u001b[?25l\u001b[29;48H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[29;49H\u001b[?25h\u001b[?2026l"]
+[10.983666547,"o","\u001b[?2026h\u001b[?25l\u001b[29;49H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mtw\u001b[0m\u001b[0m\u001b[29;51H\u001b[?25h\u001b[?2026l"]
+[11.000621029,"o","\u001b[?2026h\u001b[?25l\u001b[29;51H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mo\u001b[0m\u001b[0m\u001b[29;52H\u001b[?25h\u001b[?2026l"]
+[11.01782169,"o","\u001b[?2026h\u001b[?25l\u001b[29;52H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[29;53H\u001b[?25h\u001b[?2026l"]
+[11.038098722,"o","\u001b[?2026h\u001b[?25l\u001b[29;53H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mb\u001b[0m\u001b[0m\u001b[29;54H\u001b[?25h\u001b[?2026l"]
+[11.058257095,"o","\u001b[?2026h\u001b[?25l\u001b[29;54H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mo\u001b[0m\u001b[0m\u001b[29;55H\u001b[?25h\u001b[?2026l"]
+[11.074664046,"o","\u001b[?2026h\u001b[?25l\u001b[29;55H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mok\u001b[0m\u001b[0m\u001b[29;57H\u001b[?25h\u001b[?2026l"]
+[11.090757796,"o","\u001b[?2026h\u001b[?25l\u001b[29;57H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mt\u001b[0m\u001b[0m\u001b[29;58H\u001b[?25h\u001b[?2026l"]
+[11.106908656,"o","\u001b[?2026h\u001b[?25l\u001b[29;58H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ma\u001b[0m\u001b[0m\u001b[29;59H\u001b[?25h\u001b[?2026l"]
+[11.125646054,"o","\u001b[?2026h\u001b[?25l\u001b[29;59H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mb\u001b[0m\u001b[0m\u001b[29;60H\u001b[?25h\u001b[?2026l"]
+[11.141357046,"o","\u001b[?2026h\u001b[?25l\u001b[29;60H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ms\u001b[0m\u001b[0m\u001b[29;61H\u001b[?25h\u001b[?2026l"]
+[11.157149151,"o","\u001b[?2026h\u001b[?25l\u001b[29;61H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[29;62H\u001b[?25h\u001b[?2026l"]
+[11.173395655,"o","\u001b[?2026h\u001b[?25l\u001b[29;62H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mt\u001b[0m\u001b[0m\u001b[29;63H\u001b[?25h\u001b[?2026l"]
+[11.190052763,"o","\u001b[?2026h\u001b[?25l\u001b[29;63H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ma\u001b[0m\u001b[0m\u001b[29;64H\u001b[?25h\u001b[?2026l"]
+[11.212095644,"o","\u001b[?2026h\u001b[?25l\u001b[29;64H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mb\u001b[0m\u001b[0m\u001b[29;65H\u001b[?25h\u001b[?2026l"]
+[11.223640344,"o","\u001b[?2026h\u001b[?25l\u001b[29;65H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mle\u001b[0m\u001b[0m\u001b[29;67H\u001b[?25h\u001b[?2026l"]
+[11.23962341,"o","\u001b[?2026h\u001b[?25l\u001b[29;67H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ms\u001b[0m\u001b[0m\u001b[29;68H\u001b[?25h\u001b[?2026l"]
+[11.260236274,"o","\u001b[?2026h\u001b[?25l\u001b[29;68H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m,\u001b[0m\u001b[0m\u001b[29;69H\u001b[?25h\u001b[?2026l"]
+[11.276768334,"o","\u001b[?2026h\u001b[?25l\u001b[29;69H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[29;70H\u001b[?25h\u001b[?2026l"]
+[11.292845481,"o","\u001b[?2026h\u001b[?25l\u001b[29;70H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mt\u001b[0m\u001b[0m\u001b[29;71H\u001b[?25h\u001b[?2026l"]
+[11.309504524,"o","\u001b[?2026h\u001b[?25l\u001b[29;71H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ma\u001b[0m\u001b[0m\u001b[29;72H\u001b[?25h\u001b[?2026l"]
+[11.328733477,"o","\u001b[?2026h\u001b[?25l\u001b[29;72H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mbl\u001b[0m\u001b[0m\u001b[29;74H\u001b[?25h\u001b[?2026l"]
+[11.345188197,"o","\u001b[?2026h\u001b[?25l\u001b[29;74H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30me\u001b[0m\u001b[0m\u001b[29;75H\u001b[?25h\u001b[?2026l"]
+[11.361086551,"o","\u001b[?2026h\u001b[?25l\u001b[29;75H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[29;76H\u001b[?25h\u001b[?2026l"]
+[11.377140474,"o","\u001b[?2026h\u001b[?25l\u001b[29;76H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mo\u001b[0m\u001b[0m\u001b[29;77H\u001b[?25h\u001b[?2026l"]
+[11.393709628,"o","\u001b[?2026h\u001b[?25l\u001b[29;77H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mf\u001b[0m\u001b[0m\u001b[29;78H\u001b[?25h\u001b[?2026l"]
+[11.409462902,"o","\u001b[?2026h\u001b[?25l\u001b[29;78H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[29;79H\u001b[?25h\u001b[?2026l"]
+[11.425625074,"o","\u001b[?2026h\u001b[?25l\u001b[29;79H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mc\u001b[0m\u001b[0m\u001b[29;80H\u001b[?25h\u001b[?2026l"]
+[11.448146372,"o","\u001b[?2026h\u001b[?25l\u001b[29;80H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mon\u001b[0m\u001b[0m\u001b[29;82H\u001b[?25h\u001b[?2026l"]
+[11.468360302,"o","\u001b[?2026h\u001b[?25l\u001b[29;82H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mt\u001b[0m\u001b[0m\u001b[29;83H\u001b[?25h\u001b[?2026l"]
+[11.488756024,"o","\u001b[?2026h\u001b[?25l\u001b[29;83H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30men\u001b[0m\u001b[0m\u001b[29;85H\u001b[?25h\u001b[?2026l"]
+[11.505334171,"o","\u001b[?2026h\u001b[?25l\u001b[29;85H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mt\u001b[0m\u001b[0m\u001b[29;86H\u001b[?25h\u001b[?2026l"]
+[11.521325766,"o","\u001b[?2026h\u001b[?25l\u001b[29;86H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ms\u001b[0m\u001b[0m\u001b[29;87H\u001b[?25h\u001b[?2026l"]
+[11.537354381,"o","\u001b[?2026h\u001b[?25l\u001b[29;87H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m,\u001b[0m\u001b[0m\u001b[29;88H\u001b[?25h\u001b[?2026l"]
+[11.553481928,"o","\u001b[?2026h\u001b[?25l\u001b[29;88H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[29;89H\u001b[?25h\u001b[?2026l"]
+[11.569550087,"o","\u001b[?2026h\u001b[?25l\u001b[29;89H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ma\u001b[0m\u001b[0m\u001b[29;90H\u001b[?25h\u001b[?2026l"]
+[11.585598366,"o","\u001b[?2026h\u001b[?25l\u001b[29;90H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mn\u001b[0m\u001b[0m\u001b[29;91H\u001b[?25h\u001b[?2026l"]
+[11.601652177,"o","\u001b[?2026h\u001b[?25l\u001b[29;91H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30md\u001b[0m\u001b[0m\u001b[29;92H\u001b[?25h\u001b[?2026l"]
+[11.617799273,"o","\u001b[?2026h\u001b[?25l\u001b[29;92H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[29;93H\u001b[?25h\u001b[?2026l"]
+[11.633531559,"o","\u001b[?2026h\u001b[?25l\u001b[29;93H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ml\u001b[0m\u001b[0m\u001b[29;94H\u001b[?25h\u001b[?2026l"]
+[11.651685148,"o","\u001b[?2026h\u001b[?25l\u001b[29;94H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mis\u001b[0m\u001b[0m\u001b[29;96H\u001b[?25h\u001b[?2026l"]
+[11.669696378,"o","\u001b[?2026h\u001b[?25l\u001b[29;96H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mt\u001b[0m\u001b[0m\u001b[29;97H\u001b[?25h\u001b[?2026l"]
+[11.686143903,"o","\u001b[?2026h\u001b[?25l\u001b[29;97H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ms\u001b[0m\u001b[0m\u001b[29;98H\u001b[?25h\u001b[?2026l"]
+[11.70222538,"o","\u001b[?2026h\u001b[?25l\u001b[29;98H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m.\u001b[0m\u001b[0m\u001b[29;99H\u001b[?25h\u001b[?2026l"]
+[11.71838617,"o","\u001b[?2026h\u001b[?25l\u001b[29;99H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[29;100H\u001b[?25h\u001b[?2026l"]
+[11.734510281,"o","\u001b[?2026h\u001b[?25l\u001b[29;100H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mC\u001b[0m\u001b[0m\u001b[29;101H\u001b[?25h\u001b[?2026l"]
+[11.750544012,"o","\u001b[?2026h\u001b[?25l\u001b[29;101H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mo\u001b[0m\u001b[0m\u001b[29;102H\u001b[?25h\u001b[?2026l"]
+[11.770725414,"o","\u001b[?2026h\u001b[?25l\u001b[29;102H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mm\u001b[0m\u001b[0m\u001b[29;103H\u001b[?25h\u001b[?2026l"]
+[11.790511114,"o","\u001b[?2026h\u001b[?25l\u001b[29;103H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mp\u001b[0m\u001b[0m\u001b[29;104H\u001b[?25h\u001b[?2026l"]
+[11.806982446,"o","\u001b[?2026h\u001b[?25l\u001b[29;104H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mil\u001b[0m\u001b[0m\u001b[29;106H\u001b[?25h\u001b[?2026l"]
+[11.823587574,"o","\u001b[?2026h\u001b[?25l\u001b[29;106H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30me\u001b[0m\u001b[0m\u001b[29;107H\u001b[?25h\u001b[?2026l"]
+[11.839906764,"o","\u001b[?2026h\u001b[?25l\u001b[29;107H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[29;108H\u001b[?25h\u001b[?2026l"]
+[11.855821649,"o","\u001b[?2026h\u001b[?25l\u001b[29;108H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mw\u001b[0m\u001b[0m\u001b[29;109H\u001b[?25h\u001b[?2026l"]
+[11.871745495,"o","\u001b[?2026h\u001b[?25l\u001b[18;54H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[18;56H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[18;57H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[18;58H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[18;59H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[18;60H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[18;61H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[18;62H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[18;64H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[18;65H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[18;67H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[18;68H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[18;69H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[18;70H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[18;71H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[18;72H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[18;74H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[18;75H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[18;77H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[18;78H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[18;79H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[18;80H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[18;83H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[18;84H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[18;85H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[18;86H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[18;87H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▄\u001b[0m\u001b[18;88H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[18;89H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[18;90H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[18;91H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[18;92H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[19;54H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[19;55H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[19;56H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[19;57H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[19;58H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;59H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[19;60H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀▀\u001b[0m\u001b[19;62H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[19;63H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;64H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[19;65H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[19;66H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[19;67H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[19;68H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;69H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[19;70H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[19;71H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀▄\u001b[0m\u001b[19;74H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[19;75H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀▀\u001b[0m\u001b[19;77H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀ \u001b[0m\u001b[19;79H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[19;80H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[19;81H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[19;82H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[19;83H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[19;84H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[19;85H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[19;86H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[19;87H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[19;88H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[19;89H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[19;90H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[19;91H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[19;92H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[20;54H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[20;55H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m \u001b[0m\u001b[20;56H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m \u001b[0m\u001b[20;57H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[20;58H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;59H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[20;60H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m \u001b[0m\u001b[20;62H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[20;63H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;64H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[20;65H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m▀▀▀\u001b[0m\u001b[20;69H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[20;70H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m \u001b[0"]
+[11.87175852,"o","m\u001b[20;72H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[20;74H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[20;75H\u001b[38;2;238;238;238m\u001b[48;2;67;67;67m\u001b[1m \u001b[0m\u001b[20;78H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;79H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[20;80H\u001b[38;2;238;238;238m\u001b[48;2;67;67;67m\u001b[1m \u001b[0m\u001b[20;82H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[20;83H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;84H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[20;85H\u001b[38;2;238;238;238m\u001b[48;2;67;67;67m\u001b[1m \u001b[0m\u001b[20;87H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[20;88H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;89H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[20;90H\u001b[38;2;238;238;238m\u001b[48;2;67;67;67m\u001b[1m▀▀▀\u001b[0m\u001b[21;54H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀▀▀▀\u001b[0m\u001b[21;60H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀▀▀\u001b[0m\u001b[21;64H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀▀▀▀\u001b[0m\u001b[21;69H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[21;70H\u001b[38;2;40;40;40m\u001b[48;2;10;10;10m▀▀\u001b[0m\u001b[21;72H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[21;74H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀▀▀▀\u001b[0m\u001b[21;79H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀▀▀▀\u001b[0m\u001b[21;84H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[21;85H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[21;86H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[21;87H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[21;88H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[21;89H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[21;90H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[21;91H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀▀\u001b[0m\u001b[22;54H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[22;74H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[24;36H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[24;37H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[25;39H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mtes\" demonstrating all capabilities: Mermaid sequence diagra, \u001b[0m\u001b[26;39H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mGraphviz archi\u001b[0m\u001b[26;54H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mecture digr\u001b[0m\u001b[26;66H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mph, D2 pipeline \u001b[0m\u001b[26;83H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30miagram, math equations \u001b[0m\u001b[27;39H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mwith cross-refs, BibTeX citations, tikz diagr\u001b[0m\u001b[27;85H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mm, exa\u001b[0m\u001b[27;92H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mples of code \u001b[0m\u001b[27;105H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[28;39H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ml\u001b[0m\u001b[28;41H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mstings, two booktabs tables, table of\u001b[0m\u001b[28;79H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mcontents, and \u001b[0m\u001b[28;94H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mi\u001b[0m\u001b[28;96H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mts.\u001b[0m\u001b[28;100H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mC\u001b[0m\u001b[28;102H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mmpile \u001b[0m\u001b[29;39H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mw\u001b[0m\u001b[29;41H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[29;41H\u001b[?25h\u001b[?2026l"]
+[11.888336044,"o","\u001b[?2026h\u001b[?25l\u001b[29;41H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mt\u001b[0m\u001b[0m\u001b[29;42H\u001b[?25h\u001b[?2026l"]
+[11.910531944,"o","\u001b[?2026h\u001b[?25l\u001b[29;42H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mh \u001b[0m\u001b[0m\u001b[29;44H\u001b[?25h\u001b[?2026l"]
+[11.926859619,"o","\u001b[?2026h\u001b[?25l\u001b[29;44H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mt\u001b[0m\u001b[0m\u001b[29;45H\u001b[?25h\u001b[?2026l"]
+[11.942819826000001,"o","\u001b[?2026h\u001b[?25l\u001b[29;45H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30me\u001b[0m\u001b[0m\u001b[29;46H\u001b[?25h\u001b[?2026l"]
+[11.958869358,"o","\u001b[?2026h\u001b[?25l\u001b[29;46H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mx\u001b[0m\u001b[0m\u001b[29;47H\u001b[?25h\u001b[?2026l"]
+[11.975064322,"o","\u001b[?2026h\u001b[?25l\u001b[29;47H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mf\u001b[0m\u001b[0m\u001b[29;48H\u001b[?25h\u001b[?2026l"]
+[11.990887615,"o","\u001b[?2026h\u001b[?25l\u001b[29;48H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mo\u001b[0m\u001b[0m\u001b[29;49H\u001b[?25h\u001b[?2026l"]
+[12.007348368,"o","\u001b[?2026h\u001b[?25l\u001b[29;49H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mr\u001b[0m\u001b[0m\u001b[29;50H\u001b[?25h\u001b[?2026l"]
+[12.023249827,"o","\u001b[?2026h\u001b[?25l\u001b[29;50H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mg\u001b[0m\u001b[0m\u001b[29;51H\u001b[?25h\u001b[?2026l"]
+[12.039271768,"o","\u001b[?2026h\u001b[?25l\u001b[29;51H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30me\u001b[0m\u001b[0m\u001b[29;52H\u001b[?25h\u001b[?2026l"]
+[12.05541549,"o","\u001b[?2026h\u001b[?25l\u001b[29;52H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m \u001b[0m\u001b[0m\u001b[29;53H\u001b[?25h\u001b[?2026l"]
+[12.071979261,"o","\u001b[?2026h\u001b[?25l\u001b[29;53H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mb\u001b[0m\u001b[0m\u001b[29;54H\u001b[?25h\u001b[?2026l"]
+[12.093140625,"o","\u001b[?2026h\u001b[?25l\u001b[29;54H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mui\u001b[0m\u001b[0m\u001b[29;56H\u001b[?25h\u001b[?2026l"]
+[12.108898637,"o","\u001b[?2026h\u001b[?25l\u001b[29;56H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ml\u001b[0m\u001b[0m\u001b[29;57H\u001b[?25h\u001b[?2026l"]
+[12.124901081,"o","\u001b[?2026h\u001b[?25l\u001b[29;57H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30md\u001b[0m\u001b[0m\u001b[29;58H\u001b[?25h\u001b[?2026l"]
+[12.14090112,"o","\u001b[?2026h\u001b[?25l\u001b[29;58H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m.\u001b[0m\u001b[0m\u001b[29;59H\u001b[?25h\u001b[?2026l"]
+[12.352289975,"o","\u001b[?2026h\u001b[?25l\u001b[18;54H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[18;74H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;54H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;74H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;54H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;56H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;57H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;58H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;59H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;60H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;61H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;62H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;64H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;65H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;67H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;68H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;69H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;70H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;71H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;72H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;74H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;75H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;77H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;78H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;79H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;80H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;83H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;84H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;85H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;86H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;87H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▄\u001b[0m\u001b[20;88H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;89H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;90H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;91H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[20;92H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[21;54H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;55H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[21;56H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[21;57H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;58H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[21;59H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;60H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀▀\u001b[0m\u001b[21;62H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;63H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[21;64H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;65H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[21;66H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[21;67H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;69H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[21;70H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[21;71H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀▄\u001b[0m\u001b[21;74H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;75H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀▀\u001b[0m\u001b[21;77H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀ \u001b[0m\u001b[21;79H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;81H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[21;82H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;83H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[21;84H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;85H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[21;86H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[21;87H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;88H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[21;89H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[21;90H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[21;91H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[21;92H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[22;54H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[22;55H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m \u001b[0m\u001b[22;56H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m \u001b[0m\u001b[22;57H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[22;58H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[22;59H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[22;60H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m \u001b[0m\u001b[22;62H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[22;63H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[22;64H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m�"]
+[12.352354868,"o","�\u001b[0m\u001b[22;65H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m▀▀▀\u001b[0m\u001b[22;68H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m \u001b[0m\u001b[22;69H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[22;70H\u001b[38;2;128;128;128m\u001b[48;2;40;40;40m \u001b[0m\u001b[22;72H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[22;74H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[22;75H\u001b[38;2;238;238;238m\u001b[48;2;67;67;67m\u001b[1m \u001b[0m\u001b[22;78H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[22;79H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[22;80H\u001b[38;2;238;238;238m\u001b[48;2;67;67;67m\u001b[1m \u001b[0m\u001b[22;82H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[22;83H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[22;84H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[22;85H\u001b[38;2;238;238;238m\u001b[48;2;67;67;67m\u001b[1m \u001b[0m\u001b[22;87H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[22;88H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[22;89H\u001b[38;2;238;238;238m\u001b[48;2;238;238;238m\u001b[1m▀\u001b[0m\u001b[22;90H\u001b[38;2;238;238;238m\u001b[48;2;67;67;67m\u001b[1m▀▀▀\u001b[0m\u001b[23;54H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀▀▀▀ \u001b[0m\u001b[23;59H\u001b[38;2;128;128;128m\u001b[48;2;128;128;128m▀\u001b[0m\u001b[23;60H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀▀▀ ▀▀▀▀ ▀\u001b[0m\u001b[23;70H\u001b[38;2;40;40;40m\u001b[48;2;10;10;10m▀▀\u001b[0m\u001b[23;72H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m▀\u001b[0m\u001b[23;74H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀▀▀▀ ▀▀▀▀ \u001b[0m\u001b[23;84H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[23;85H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[23;86H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[23;87H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[23;88H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m \u001b[0m\u001b[23;89H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[23;90H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀\u001b[0m\u001b[23;91H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m\u001b[1m▀▀\u001b[0m\u001b[24;36H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[25;36H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[26;39H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[27;39H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mAsk anything... \"Fix broken tests\"\u001b[0m\u001b[27;73H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[28;39H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[29;39H\u001b[38;2;92;156;245m\u001b[48;2;30;30;30mBuild\u001b[0m\u001b[29;44H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[29;45H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30m·\u001b[0m\u001b[29;46H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[29;47H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mMiMo V2.5 Free\u001b[0m\u001b[29;62H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mOpenCode Zen\u001b[0m\u001b[30;36H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m╹\u001b[0m\u001b[30;37H\u001b[38;2;30;30;30m\u001b[48;2;10;10;10m▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀\u001b[0m\u001b[31;36H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[31;84H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mtab \u001b[0m\u001b[31;88H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10magents\u001b[0m\u001b[31;94H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[31;96H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mctrl+p \u001b[0m\u001b[31;103H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10mcommands\u001b[0m\u001b[32;36H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[33;84H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[33;96H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[35;36H\u001b[38;2;245;167;66m\u001b[48;2;10;10;10m● Tip \u001b[0m\u001b[35;42H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10mRun \u001b[0m\u001b[35;46H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mdocker run -it --rm ghcr.io/anomalyco/opencode\u001b[0m\u001b[35;92H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m for containerized \u001b[0m\u001b[36;42H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10muse\u001b[0m\u001b[37;36H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[38;42H\u001b[38;2;25"]
+[12.352392383,"o","5;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[0m\u001b[27;39H\u001b[?25h\u001b[?2026l"]
+[12.426528682,"o","\u001b]0;OpenCode\u0007"]
+[12.4428589,"o","\u001b[?2026h\u001b[?25l\u001b[1;3H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[1;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[1;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[2;3H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[2;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[2;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mtes\" demonstrating all capabilities: Mermaid sequence diagra, Graphviz architecture digraph, \u001b[0m\u001b[2;99H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[2;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[2;105H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m\u001b[1mNew session - 2026-07-07T13:55:09.\u001b[0m\u001b[2;139H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[2;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[2;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[3;3H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[3;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[3;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mD2 pipeline diagram, math equations with cross-refs, BibTeX citations, tikz diagram, examples \u001b[0m\u001b[3;100H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[3;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[3;105H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m\u001b[1m012Z\u001b[0m\u001b[3;109H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[3;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[3;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[4;3H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[4;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[4;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mof code listings, two booktabs tables, table of contents, and lists. Compile with texforge \u001b[0m\u001b[4;97H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[4;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[4;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[4;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[5;3H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[5;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[5;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mbuild.\u001b[0m\u001b[5;12H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[5;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[5;105H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m\u001b[1mContext\u001b[0m\u001b[5;112H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[5;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[5;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[6;3H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[6;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[6;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[6;105H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m0 tokens\u001b[0m\u001b[6;113H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[6;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[6;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[7;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[7;105H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m0% used\u001b[0m\u001b[7;112H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[7;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[7;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[8;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[8;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[8;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[8;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[8;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[8;105H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m$0.00 spent\u001b[0m\u001b[8;116H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[8;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[8;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[9;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[9;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[9;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[10;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[10;105H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m▼\u001b[0m\u001b[10;106H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[10;107H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m\u001b[1mMCP\u001b[0m\u001b[10;110H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[10"]
+[12.442885127,"o",";142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[10;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[11;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[11;105H\u001b[38;2;127;216;143m\u001b[48;2;20;20;20m•\u001b[0m\u001b[11;106H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[11;107H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mcanopy \u001b[0m\u001b[11;114H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mConnected\u001b[0m\u001b[11;123H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[11;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[11;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[12;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[12;105H\u001b[38;2;127;216;143m\u001b[48;2;20;20;20m•\u001b[0m\u001b[12;106H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[12;107H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mfetch \u001b[0m\u001b[12;113H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mConnected\u001b[0m\u001b[12;122H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[12;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[12;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[13;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[13;105H\u001b[38;2;127;216;143m\u001b[48;2;20;20;20m•\u001b[0m\u001b[13;106H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[13;107H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mfilesystem \u001b[0m\u001b[13;118H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mConnected\u001b[0m\u001b[13;127H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[13;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[13;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[14;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[14;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[14;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[15;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[15;105H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m\u001b[1mLSP\u001b[0m\u001b[15;108H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[15;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[15;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[16;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[16;105H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mLSPs are disabled\u001b[0m\u001b[16;122H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[16;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[16;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[17;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[17;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[17;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[18;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[18;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[18;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[19;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[19;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[19;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[20;54H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;74H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[20;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[20;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[21;54H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[21;74H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[21;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[21;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[21;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[22;54H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[22;74H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[22;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[22;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[22;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[23;54H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[23;74H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[23;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[23;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[23;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[24;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[24;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[24;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[25;103H\u001b[38;2;255;25"]
+[12.442891435,"o","5;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[25;142H\u001b[38;2;96;96;96m\u001b[48;2;10;10;10m█\u001b[0m\u001b[25;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[26;36H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[26;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[26;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[27;36H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[27;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[27;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[28;36H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[28;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[28;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[29;36H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[29;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[29;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[30;36H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[30;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[30;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[31;84H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[31;96H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[31;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[31;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[32;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[32;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[33;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[33;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[34;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[34;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[35;36H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[35;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[35;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[36;42H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[36;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[36;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[37;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[37;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[38;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[38;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[39;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[39;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[40;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[40;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[41;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[41;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[42;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[42;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[43;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[43;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[44;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[44;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[45;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[45;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[46;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[46;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[47;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[47;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[48;3H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[48;4H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m "]
+[12.442901199,"o"," \u001b[0m\u001b[48;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[48;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[49;3H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[49;4H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[49;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[49;143H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[50;3H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[50;4H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[50;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[51;3H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[51;4H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[51;6H\u001b[38;2;92;156;245m\u001b[48;2;30;30;30mBuild\u001b[0m\u001b[51;11H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[51;12H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30m·\u001b[0m\u001b[51;13H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[51;14H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mMiMo V2.5 Free\u001b[0m\u001b[51;28H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[51;29H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mOpenCode Zen\u001b[0m\u001b[51;41H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[51;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[51;105H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m/\u001b[0m\u001b[51;106H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m~\u001b[0m\u001b[51;107H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[52;3H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m╹\u001b[0m\u001b[52;4H\u001b[38;2;30;30;30m\u001b[48;2;10;10;10m▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀\u001b[0m\u001b[52;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[53;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[53;4H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;12H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[53;14H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mesc \u001b[0m\u001b[53;18H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10minterrupt\u001b[0m\u001b[53;74H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mtab \u001b[0m\u001b[53;78H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10magents\u001b[0m\u001b[53;86H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mctrl+p \u001b[0m\u001b[53;93H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10mcommands\u001b[0m\u001b[53;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[53;105H\u001b[38;2;127;216;143m\u001b[48;2;20;20;20m•\u001b[0m\u001b[53;106H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m \u001b[0m\u001b[53;107H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m\u001b[1mOpen\u001b[0m\u001b[53;111H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m\u001b[1mCode\u001b[0m\u001b[53;115H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m 1.15.13\u001b[0m\u001b[53;123H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[54;103H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[12.457242478,"o","\u001b[?2026h\u001b[?25l\u001b[1;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[2;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[2;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[3;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mtes\" d\u001b[0m\u001b[3;13H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mmo\u001b[0m\u001b[3;16H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mstrating all capabilitie\u001b[0m\u001b[3;41H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m: Mermaid \u001b[0m\u001b[3;52H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mequence diagra, Graphviz\u001b[0m\u001b[3;77H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20marchitecture digra\u001b[0m\u001b[3;96H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mh, \u001b[0m\u001b[3;99H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[3;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[4;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mD2\u001b[0m\u001b[4;9H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mpip\u001b[0m\u001b[4;13H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mline diagram, math equations with cross-refs, BibTeX citations, tikz diagram, examples \u001b[0m\u001b[4;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[5;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mof code listings, two booktabs tables, table of contents, and lists. Compile with texforge \u001b[0m\u001b[5;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[6;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mbuild.\u001b[0m\u001b[6;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[7;3H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[7;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[7;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[8;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[8;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[9;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[9;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[9;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[9;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[9;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[10;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[11;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[12;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[13;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[14;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[15;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[16;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[17;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[18;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[19;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[20;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[21;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[22;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[23;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[24;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[25;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[26;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[27;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[28;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[29;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[30;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[31;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[32;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[33;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[34;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[35;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[36;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[37;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[38;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[39;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[40;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[41;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[42;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[43;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[44;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[45;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[46;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[47;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[48;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[49;142H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[12.473241113,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;30;45;66m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[12.48725357,"o","\u001b]0;OpenCode\u0007"]
+[12.490250037,"o","\u001b[?2026h\u001b[?25l\u001b[9;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[9;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[9;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[9;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[12.507061996000001,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;35;54;81m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[12.542465366,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;40;63;95m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[12.585375627,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;44;71;109m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[12.628192228,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;49;80;122m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[12.671211911,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;54;89;137m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;54;89;137m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[12.71395133,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;59;98;151m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[53;6H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[12.799934853,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;55;91;140m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[53;7H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[12.843582272999999,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;51;84;129m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[53;8H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[12.887037093,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[53;9H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[12.929417312,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;44;70;107m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;10H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[12.972444272,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;40;64;97m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;11H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.016362246,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.059513435,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.103005031,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;29;43;63m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.145809795,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;10H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.186759852,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;31;47;69m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[53;9H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.226713469,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[53;8H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.270196825,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;42;67;101m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[53;7H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.312494332,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[53;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.356273159,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[53;5H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.401049402,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;59;98;151m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.488239676,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;58;95;147m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.532239821,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;57;94;145m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.575963576,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;56;91;141m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.619855821,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;55;90;138m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.663964949,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.707053613,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;52;86;132m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.750591383,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;51;83;128m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.793760667,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;50;81;124m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.837075681,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;49;79;122m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.881146837,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.924924337,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;47;75;115m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[13.967561241,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;45;73;111m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.010819926,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;44;71;109m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.053797086,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;43;69;105m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.096848591,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;42;67;101m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.139511595,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;41;65;98m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.182589011,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;40;63;95m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.22558942,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;39;61;92m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.269059676,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;37;59;88m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.311701263,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.354915362,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;35;55;82m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.397988468,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;34;52;78m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.437942611,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;51;75m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.480944758,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;32;48;72m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.524101404,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;31;47;69m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.567071273,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;29;44;65m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.609579826000001,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;28;43;63m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.652791241,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;27;40;59m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.695532608,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;26;38;55m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.738537088,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.7819413,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;30;45;66m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.825415693,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;35;54;81m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.868243142,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;40;63;95m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.911912682,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;44;71;109m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[14.956206795,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;49;80;122m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.000181961,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;54;89;137m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;54;89;137m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.044478881,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;59;98;151m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[53;6H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.131367818,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;55;91;140m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[53;7H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.174494309,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;51;84;129m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[53;8H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.218194811,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[53;9H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.261446149,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;44;70;107m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;10H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.304304845,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;40;64;97m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;11H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.347664057,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.391049706,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.434447691,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;29;43;63m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.478163423,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;10H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.521028798,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;31;47;69m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[53;9H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.564682233,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[53;8H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.6081406,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;42;67;101m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[53;7H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.651449313,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[53;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.694760269,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[53;5H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.737926627,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;59;98;151m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.82475647,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;58;95;147m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.867761273,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;57;94;145m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.910880274,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;56;91;141m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[15.953605806,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;55;90;138m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.00067844,"o","\u001b[?2026h\u001b[?25l\u001b[9;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠋\u001b[0m\u001b[9;7H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[9;8H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThinking\u001b[0m\u001b[9;16H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[13;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[13;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[13;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[13;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.022637747,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.056684595,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;52;86;132m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.07817464,"o","\u001b[?2026h\u001b[?25l\u001b[9;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠙\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.100068677,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;51;83;128m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.120890694,"o","\u001b[?2026h\u001b[?25l\u001b[11;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mThe user wants a LaTeX document demonstrating various\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.137131215,"o","\u001b[?2026h\u001b[?25l\u001b[11;59H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m capabilities.\u001b[0m\u001b[53;4H\u001b[38;2;50;81;124m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.153223488,"o","\u001b[?2026h\u001b[?25l\u001b[11;73H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m Let me first load\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.169792535,"o","\u001b[?2026h\u001b[?25l\u001b[9;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠹\u001b[0m\u001b[53;4H\u001b[38;2;49;79;122m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.186022877,"o","\u001b[?2026h\u001b[?25l\u001b[11;91H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m the \u001b[0m\u001b[12;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mtexforge skill\u001b[0m\u001b[13;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[14;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[14;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[14;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[14;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.203195054,"o","\u001b[?2026h\u001b[?25l\u001b[12;20H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m to understand how to\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.218910401,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.241503858,"o","\u001b[?2026h\u001b[?25l\u001b[9;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠸\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.262272319,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;47;75;115m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.29915741,"o","\u001b[?2026h\u001b[?25l\u001b[12;41H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m use texforge properly.\u001b[0m\u001b[53;4H\u001b[38;2;45;73;111m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.324855853,"o","\u001b[?2026h\u001b[?25l\u001b[9;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠼\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.340637828,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;44;71;109m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.365355689,"o","\u001b[?2026h\u001b[?25l\u001b[9;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 385ms\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.382124128,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;43;69;105m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.400951983,"o","\u001b[?2026h\u001b[?25l\u001b[13;6H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m~ Loading skill...\u001b[0m\u001b[14;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[15;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[15;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[15;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[15;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.417813623,"o","\u001b[?2026h\u001b[?25l\u001b[13;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[14;6H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m~ Loading skill...\u001b[0m\u001b[15;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[16;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[16;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[16;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[16;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.433285035,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;42;67;101m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.449291178,"o","\u001b[?2026h\u001b[?25l\u001b[14;6H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m→\u001b[0m\u001b[14;7H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[14;8H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10mSkill \"texforge\"\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.466795586,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;41;65;98m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.510038633,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;40;63;95m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.553748119,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;39;61;92m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.581435399,"o","\u001b[?2026h\u001b[?25l\u001b[6;105H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m26,590 tokens\u001b[0m\u001b[7;105H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m13% used\u001b[0m\u001b[16;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[16;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[16;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[16;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[53;73H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m26.6K (13%)\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.598344168,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;37;59;88m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.634661586,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.676968898,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;35;55;82m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.72139269,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;34;52;78m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.763423985,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;51;75m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.807489451,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;32;48;72m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.850619514,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;31;47;69m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.893551097,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;29;44;65m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.936025338,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;28;43;63m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[16.97929939,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;27;40;59m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.022834511,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;26;38;55m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.066344224,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.109695021,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;30;45;66m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.153176092,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;35;54;81m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.19592304,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;40;63;95m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.239203684,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;44;71;109m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.282417628,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;49;80;122m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.326176067,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;54;89;137m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;54;89;137m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.369300512,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;59;98;151m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[53;6H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.458649135,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;55;91;140m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[53;7H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.501760344,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;51;84;129m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[53;8H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.54506395,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[53;9H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.588373627,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;44;70;107m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;10H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.632098399,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;40;64;97m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;11H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.67528966,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.71826991,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.761867585,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;29;43;63m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.804987612,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;10H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.848344399,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;31;47;69m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[53;9H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.89177466,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[53;8H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.935073564,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;42;67;101m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[53;7H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[17.978201173,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[53;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.021762378,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[53;5H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.064546557,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;59;98;151m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.15113521,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;58;95;147m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.193179707,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;57;94;145m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.236237291,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;56;91;141m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.279723928,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;55;90;138m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.322269604,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.365882907,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;52;86;132m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.408261616,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;51;83;128m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.448356237,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;50;81;124m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.490796144,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;49;79;122m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.534378044,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.577761385,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;47;75;115m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.621464608,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;45;73;111m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.663938595,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;44;71;109m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.706964927,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;43;69;105m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.750281797,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;42;67;101m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.792736255,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;41;65;98m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.83609189,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;40;63;95m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.878998602,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;39;61;92m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.923165617,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;37;59;88m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[18.966711371,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.013397206,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;35;55;82m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.057524887,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;34;52;78m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.10122393,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;51;75m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.145183376,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;32;48;72m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.188700677,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;31;47;69m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.232749925,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;29;44;65m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.276360925,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;28;43;63m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.320218882,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;27;40;59m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.363818681,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;26;38;55m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.407849056,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.451403585,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;30;45;66m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.495265093,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;35;54;81m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.538284859,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;40;63;95m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.58164763,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;44;71;109m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.624326013,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;49;80;122m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.66759953,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;54;89;137m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;54;89;137m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.710830933,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;59;98;151m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[53;6H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.795403154,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;55;91;140m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[53;7H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.838871702,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;51;84;129m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[53;8H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.881260628,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[53;9H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.923995252,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;44;70;107m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;10H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[19.967322626,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;40;64;97m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;11H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.00967514,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.051812792,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.094499522,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;29;43;63m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.137572553,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;10H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.180671721,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;31;47;69m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[53;9H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.225147036,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[53;8H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.268099802,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;42;67;101m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[53;7H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.310895919,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[53;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.353884183,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[53;5H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.39705081,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;59;98;151m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.483748817,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;58;95;147m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.52786247,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;57;94;145m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.571985194,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;56;91;141m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.616144499,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;55;90;138m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.659517086,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.703306326,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;52;86;132m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.745761221,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;51;83;128m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.788962926,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;50;81;124m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.832394066,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;49;79;122m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.875197744,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.918518467,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;47;75;115m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[20.961101978,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;45;73;111m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.00476656,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;44;71;109m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.047616703,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;43;69;105m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.06988877,"o","\u001b[?2026h\u001b[?25l\u001b[16;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠋\u001b[0m\u001b[16;7H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[16;8H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThinking\u001b[0m\u001b[16;16H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[20;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[20;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.091337406,"o","\u001b[?2026h\u001b[?25l\u001b[18;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mNow I understand tex\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.107423681,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;42;67;101m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.12389502,"o","\u001b[?2026h\u001b[?25l\u001b[18;26H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mforge.\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.141104558,"o","\u001b[?2026h\u001b[?25l\u001b[18;32H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m The\u001b[0m\u001b[53;4H\u001b[38;2;41;65;98m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.156612785,"o","\u001b[?2026h\u001b[?25l\u001b[16;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠙\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.176475057,"o","\u001b[?2026h\u001b[?25l\u001b[18;36H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m user wants a comprehensive\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.192275495,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;40;63;95m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.209444948,"o","\u001b[?2026h\u001b[?25l\u001b[18;63H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m LaTeX document demonstrating\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.225253261,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;39;61;92m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.24165003,"o","\u001b[?2026h\u001b[?25l\u001b[16;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠹\u001b[0m\u001b[18;92H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m many\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.25756951,"o","\u001b[?2026h\u001b[?25l\u001b[18;97H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcapabilities. Let me\u001b[0m\u001b[20;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;9H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[21;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[21;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[21;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[53;4H\u001b[38;2;37;59;88m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.290714433,"o","\u001b[?2026h\u001b[?25l\u001b[19;26H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m create a project\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.307486924,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.323852331,"o","\u001b[?2026h\u001b[?25l\u001b[16;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠸\u001b[0m\u001b[19;43H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m and\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.340483741,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;35;55;82m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.383529255,"o","\u001b[?2026h\u001b[?25l\u001b[19;47H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m write\u001b[0m\u001b[53;4H\u001b[38;2;34;52;78m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.399521359,"o","\u001b[?2026h\u001b[?25l\u001b[16;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠼\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.417531435,"o","\u001b[?2026h\u001b[?25l\u001b[19;53H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m the document.\u001b[0m\u001b[21;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mLet me create\u001b[0m\u001b[21;19H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[23;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[23;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[23;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.433348811,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;51;75m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.466574218,"o","\u001b[?2026h\u001b[?25l\u001b[21;19H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m a\u001b[0m\u001b[53;4H\u001b[38;2;32;48;72m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.482333043,"o","\u001b[?2026h\u001b[?25l\u001b[16;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠴\u001b[0m\u001b[21;21H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m new tex\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.515367185,"o","\u001b[?2026h\u001b[?25l\u001b[21;29H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mforge project,\u001b[0m\u001b[53;4H\u001b[38;2;31;47;69m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.531142903,"o","\u001b[?2026h\u001b[?25l\u001b[21;43H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m then write the main\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.547229203,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;29;44;65m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.563761302,"o","\u001b[?2026h\u001b[?25l\u001b[16;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠦\u001b[0m\u001b[21;63H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m.tex with all the\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.587589483,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;28;43;63m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.639944073,"o","\u001b[?2026h\u001b[?25l\u001b[16;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠧\u001b[0m\u001b[21;80H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m requested features.\u001b[0m\u001b[53;4H\u001b[38;2;27;40;59m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.677736091,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;26;38;55m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.721739663,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.737654007,"o","\u001b[?2026h\u001b[?25l\u001b[16;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 672ms\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.75501103,"o","\u001b[?2026h\u001b[?25l\u001b[22;6H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m~ Updating todos...\u001b[0m\u001b[23;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[23;9H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[24;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[24;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[24;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.771894774,"o","\u001b[?2026h\u001b[?25l\u001b[22;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[23;6H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m~ Updating todos...\u001b[0m\u001b[24;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[24;9H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[25;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[25;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[25;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[53;4H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;30;45;66m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.807007761,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;35;54;81m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.850813982,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;40;63;95m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.89519037,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;44;71;109m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.938909831,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;49;80;122m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[21.983696112,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;54;89;137m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;54;89;137m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.026233171,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;59;98;151m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[53;6H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.11396016,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;55;91;140m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[53;7H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.157700792,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;51;84;129m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[53;8H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.201432861,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[53;9H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.245097566,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;44;70;107m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;10H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.288854094,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;40;64;97m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;11H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.331494133,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.375167493,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.418976636,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;29;43;63m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.459043652,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;10H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.502488147,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;31;47;69m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[53;9H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.545534321,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[53;8H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.59008395,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;42;67;101m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[53;7H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.633795659,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[53;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.677495639,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[53;5H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.720604562,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;59;98;151m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.737587908,"o","\u001b[?2026h\u001b[?25l\u001b[18;105H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m▼\u001b[0m\u001b[18;107H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m\u001b[1mTodo\u001b[0m\u001b[19;105H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20m[•] \u001b[0m\u001b[19;109H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20mCreate texforge project\u001b[0m\u001b[20;105H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[20;109H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mWrite main.tex with all \u001b[0m\u001b[21;109H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mrequested features\u001b[0m\u001b[22;105H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[22;109H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mCreate bib file with example \u001b[0m\u001b[23;109H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mentries\u001b[0m\u001b[24;105H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] Create sections/body.tex\u001b[0m\u001b[25;105H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] Run texforge build\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.754001082,"o","\u001b[?2026h\u001b[?25l\u001b[23;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[23;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[24;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[24;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[24;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m# Todos\u001b[0m\u001b[24;13H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[25;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[25;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[26;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[26;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[26;6H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20m[•] \u001b[0m\u001b[26;10H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20mCreate texforge project\u001b[0m\u001b[26;33H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[27;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[27;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[27;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[27;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mWrite main.tex with all requested features\u001b[0m\u001b[27;52H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[28;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[28;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[28;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] Create bib file with example entries\u001b[0m\u001b[28;46H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[29;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[29;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[29;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[29;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mCreate sections/body.tex\u001b[0m\u001b[29;34H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[30;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[30;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[30;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[30;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mRun texforge build\u001b[0m\u001b[30;28H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[31;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[31;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[33;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[33;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[33;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.797093494,"o","\u001b[?2026h\u001b[?25l\u001b[6;106H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m8\u001b[0m\u001b[6;109H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m46\u001b[0m\u001b[7;106H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m4\u001b[0m\u001b[53;74H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m8\u001b[0m\u001b[53;76H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m5\u001b[0m\u001b[53;81H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m4\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.820293731,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;58;95;147m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.845162496,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;57;94;145m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.889506016,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;56;91;141m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.931921647,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;55;90;138m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[22.974304609,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.018926654,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;52;86;132m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.062068743,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;51;83;128m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.10567553,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;50;81;124m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.149509748,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;49;79;122m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.193405264,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.236980491,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;47;75;115m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.280367816,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;45;73;111m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.323317493,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;44;71;109m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.366930977,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;43;69;105m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.40953621,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;42;67;101m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.453390345,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;41;65;98m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.497313996,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;40;63;95m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.540408747,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;39;61;92m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.583237436,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;37;59;88m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.626645833,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.670155815,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;35;55;82m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.713207666,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;34;52;78m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.75618647,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;51;75m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.801287455,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;32;48;72m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.844062437,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;31;47;69m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.887420021,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;29;44;65m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.930472038,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;28;43;63m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[23.973019928,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;27;40;59m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.016289417,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;26;38;55m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.058782834,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.102770539,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;30;45;66m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.145561212,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;35;54;81m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.189155963,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;40;63;95m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.232520123,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;44;71;109m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.27678901,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;49;80;122m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.319473294,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;54;89;137m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;54;89;137m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.36283215,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;59;98;151m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[53;6H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.450136946,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;55;91;140m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[53;7H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.49350428,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;51;84;129m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[53;8H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.536782222,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[53;9H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.579622307,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;44;70;107m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;10H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.623708628,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;40;64;97m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;11H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.667806727,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.710902068,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.754104248,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;29;43;63m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.796949846,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;10H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.841436306,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;31;47;69m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[53;9H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.886067363,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[53;8H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.929419505,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;42;67;101m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[53;7H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[24.971628347,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[53;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.011740726,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[53;5H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.031589792,"o","\u001b[?2026h\u001b[?25l\u001b[33;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠋\u001b[0m\u001b[33;7H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[33;8H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThinking\u001b[0m\u001b[33;16H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[37;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[37;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[37;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.052267025,"o","\u001b[?2026h\u001b[?25l\u001b[35;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mThe\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.072768058,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;59;98;151m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.105008541,"o","\u001b[?2026h\u001b[?25l\u001b[35;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m user wants a comprehensive LaTeX document demonstrating\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.121076673,"o","\u001b[?2026h\u001b[?25l\u001b[33;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠙\u001b[0m\u001b[35;65H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m various\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.137235218,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;58;95;147m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.153467785,"o","\u001b[?2026h\u001b[?25l\u001b[35;73H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m capabilities. Let me\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.185466817,"o","\u001b[?2026h\u001b[?25l\u001b[35;94H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m \u001b[0m\u001b[36;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcreate the\u001b[0m\u001b[37;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[37;9H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[38;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[38;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[38;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[53;4H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;57;94;145m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.202681867,"o","\u001b[?2026h\u001b[?25l\u001b[33;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠹\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.219221532,"o","\u001b[?2026h\u001b[?25l\u001b[36;16H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m tex\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.235234414,"o","\u001b[?2026h\u001b[?25l\u001b[36;20H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mforge project first.\u001b[0m\u001b[53;4H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;56;91;141m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.261491572,"o","\u001b[?2026h\u001b[?25l\u001b[33;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 1.1s\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.27834678,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;55;90;138m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.297023766,"o","\u001b[?2026h\u001b[?25l\u001b[37;6H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m~ Writing command...\u001b[0m\u001b[38;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[38;9H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[39;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[39;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[39;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.313889591,"o","\u001b[?2026h\u001b[?25l\u001b[37;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[38;6H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10m~ Writing command...\u001b[0m\u001b[39;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[39;9H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[40;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[40;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[40;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.357082846,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;52;86;132m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.400957407,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;51;83;128m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.444654523,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;50;81;124m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.490317048,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;49;79;122m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.533223276,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.576621447,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;47;75;115m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.599721796,"o","\u001b[?2026h\u001b[?25l\u001b[38;6H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m$\u001b[0m\u001b[38;7H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[38;8H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10mtexforge new tes-demo\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.641582888,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;45;73;111m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.658451871,"o","\u001b[?2026h\u001b[?25l\u001b[38;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[38;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[39;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[39;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[39;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m⠋\u001b[0m\u001b[39;7H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[39;8H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mCreate new texforge project\u001b[0m\u001b[39;35H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[40;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[40;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[41;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[41;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[41;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m$ texforge new tes-demo\u001b[0m\u001b[41;29H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[42;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[42;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[44;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[44;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[44;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.675902552,"o","\u001b[?2026h\u001b[?25l\u001b[1;3H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[1;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[1;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mof code listings, two booktabs tables, table of contents, and lists. Compile with texforge \u001b[0m\u001b[1;97H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[2;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mbuild.\u001b[0m\u001b[3;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[4;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[5;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[5;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 385ms\u001b[0m\u001b[5;20H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[6;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[7;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[7;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mThe user wants a LaTeX document demonstrating various capabilities. Let me first load the \u001b[0m\u001b[7;96H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[8;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mtexforge skill to understand how to use texforge properly.\u001b[0m\u001b[9;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[10;6H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m→\u001b[0m\u001b[10;8H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10mSkill \"texforge\"\u001b[0m\u001b[11;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[12;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 672ms\u001b[0m\u001b[12;20H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[14;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mNow I understand texforge. The user wants a comprehensive LaTeX document demonstrating many \u001b[0m\u001b[15;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcapabilities. Let me create a project and write the document.\u001b[0m\u001b[16;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[17;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mLet me create a new texforge project, then write the main.tex with all the requested features.\u001b[0m\u001b[18;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[19;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[20;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[20;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[20;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m# Todos\u001b[0m\u001b[20;13H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[21;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[21;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[22;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[22;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[22;6H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20m[•] \u001b[0m\u001b[22;10H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20mCreate texforge project\u001b[0m\u001b[22;33H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[23;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[23;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mWrite main.tex with all requested features\u001b[0m\u001b[24;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[\u001b[0m\u001b[24;8H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m] Create bib file with example entries\u001b[0m\u001b[25;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[25;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mCreate sections/body.tex\u001b[0m\u001b[26;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[26;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mRun texforge build\u001b[0m\u001b[26;28H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[27;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[28;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m "]
+[25.675919815,"o"," \u001b[0m\u001b[29;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[29;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 1.1s\u001b[0m\u001b[29;19H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[30;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[31;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[31;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mThe user wants a comprehensive LaTeX document demonstrating various capabilities. Let me \u001b[0m\u001b[31;95H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[32;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcreate the texforge project first.\u001b[0m\u001b[33;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[34;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[34;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[35;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[35;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[35;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m# Create new texforge project\u001b[0m\u001b[35;35H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[36;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[36;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[37;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[37;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[37;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m$ texforge new tes-demo\u001b[0m\u001b[37;29H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[39;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mCreating project 'tes-demo' with template 'general'...\u001b[0m\u001b[40;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m ◇ Project 'tes-demo' created successfully\u001b[0m\u001b[41;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[42;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m cd tes-demo\u001b[0m\u001b[43;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[43;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[43;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m texforge build\u001b[0m\u001b[43;22H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[44;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[44;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[46;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m▣ \u001b[0m\u001b[46;9H\u001b[38;2;238;238;238m\u001b[48;2;10;10;10mBuild\u001b[0m\u001b[46;14H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m · MiMo V2.5 Free\u001b[0m\u001b[53;4H\u001b[38;2;44;71;109m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.693056607,"o","\u001b[?2026h\u001b[?25l\u001b[6;108H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m764\u001b[0m\u001b[53;76H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m8\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.71203792,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;43;69;105m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.755568079,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;42;67;101m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.800594346,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;41;65;98m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.843918447,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;40;63;95m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.887342733,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;39;61;92m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.930964077,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;37;59;88m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[25.974225518,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.017195533,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;35;55;82m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.060332452,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;34;52;78m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.10363996,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;51;75m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.147509326,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;32;48;72m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.190281432,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;31;47;69m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.233551366,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;29;44;65m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.277704008,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;28;43;63m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.321301465,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;27;40;59m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.364990384,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;26;38;55m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.40912582,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.453085261,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;30;45;66m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.495325846,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;35;54;81m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.53893023,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;40;63;95m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.582332742,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;44;71;109m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.625338037,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;49;80;122m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.668673486,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;54;89;137m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;54;89;137m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.712149629,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;59;98;151m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[53;6H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.799653695,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;55;91;140m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[53;7H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.842658951,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;51;84;129m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[53;8H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.885574297,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[53;9H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.928735055,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;44;70;107m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;10H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[26.971954717,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;40;64;97m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;11H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[27.015173672,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[27.058605398,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[27.102217988,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;29;43;63m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[27.145960916,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[53;10H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[27.18949666,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;31;47;69m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[53;9H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[27.23288056,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;36;57;86m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[53;8H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[27.27611958,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;42;67;101m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[53;7H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[27.319563828,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[53;6H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[27.363063222,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[53;5H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;11H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[27.406090421,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;92;156;245m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;10H\u001b[38;2;59;98;151m\u001b[48;2;10;10;10m⬝⬝\u001b[0m\u001b[0m\u001b[49;6H\u001b[?25h\u001b[?2026l"]
+[27.496891064,"o","\u001b[?2026h\u001b[?25l\u001b[38;3H\u001b[38;2;72;72;72m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[38;4H\u001b[38;2;255;255;255m\u001b[48;2;250;178;131m \u001b[0m\u001b[38;5H\u001b[38;2;10;10;10m\u001b[48;2;250;178;131m/agents \u001b[0m\u001b[38;23H\u001b[38;2;10;10;10m\u001b[48;2;250;178;131mSwitch agent\u001b[0m\u001b[38;35H\u001b[38;2;255;255;255m\u001b[48;2;250;178;131m \u001b[0m\u001b[38;100H\u001b[38;2;72;72;72m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[39;3H\u001b[38;2;72;72;72m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[39;4H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[39;5H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m/compact \u001b[0m\u001b[39;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mCompact session\u001b[0m\u001b[39;38H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[39;100H\u001b[38;2;72;72;72m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[40;3H\u001b[38;2;72;72;72m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[40;4H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[40;5H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m/connect \u001b[0m\u001b[40;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mConnect provider\u001b[0m\u001b[40;39H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[40;100H\u001b[38;2;72;72;72m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[41;3H\u001b[38;2;72;72;72m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[41;4H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[41;5H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m/copy \u001b[0m\u001b[41;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mCopy session transcript\u001b[0m\u001b[41;46H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[41;100H\u001b[38;2;72;72;72m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[42;3H\u001b[38;2;72;72;72m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[42;4H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[42;5H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m/diff \u001b[0m\u001b[42;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mOpen diff viewer\u001b[0m\u001b[42;39H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[42;100H\u001b[38;2;72;72;72m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[43;3H\u001b[38;2;72;72;72m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[43;4H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[43;5H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m/editor \u001b[0m\u001b[43;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mOpen editor\u001b[0m\u001b[43;34H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[43;100H\u001b[38;2;72;72;72m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[44;3H\u001b[38;2;72;72;72m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[44;4H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[44;5H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m/exit \u001b[0m\u001b[44;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mExit the app\u001b[0m\u001b[44;35H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[44;100H\u001b[38;2;72;72;72m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[45;3H\u001b[38;2;72;72;72m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[45;4H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[45;5H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m/export \u001b[0m\u001b[45;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mExport session transcript\u001b[0m\u001b[45;48H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[45;100H\u001b[38;2;72;72;72m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[46;3H\u001b[38;2;72;72;72m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[46;4H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[46;5H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m/fetch:fetch:mcp \u001b[0m\u001b[46;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mFetch a URL and extract its contents as markdown\u001b[0m\u001b[46;71H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[46;100H\u001b[38;2;72;72;72m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[47;3H\u001b[38;2;72;72;72m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[47;4H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[47;5H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m/fork \u001b[0m\u001b[47;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mFork session\u001b[0m\u001b[47;35H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[47;100H\u001b[38;2;72;72;72m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[49;6H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m/\u001b[0m\u001b[0m\u001b[49;7H\u001b[?25h\u001b[?2026l"]
+[27.512319111,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;97;162;231m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;9H\u001b[38;2;58;95;147m\u001b[48;2;10;10;10m⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;7H\u001b[?25h\u001b[?2026l"]
+[27.541596243,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;63;105;163m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;8H\u001b[38;2;57;94;145m\u001b[48;2;10;10;10m⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;7H\u001b[?25h\u001b[?2026l"]
+[27.563606404,"o","\u001b[?2026h\u001b[?25l\u001b[1;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[1;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 385ms\u001b[0m\u001b[1;20H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[2;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[3;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[3;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mThe user wants a LaTeX document demonstrating various capabilities. Let me first load the \u001b[0m\u001b[3;96H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[4;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mtexforge skill to understand how to use texforge properly.\u001b[0m\u001b[5;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[6;6H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m→\u001b[0m\u001b[6;8H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10mSkill \"texforge\"\u001b[0m\u001b[7;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[8;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 672ms\u001b[0m\u001b[8;20H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[10;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mNow I understand texforge. The user wants a comprehensive LaTeX document demonstrating many \u001b[0m\u001b[11;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcapabilities. Let me create a project and write the document.\u001b[0m\u001b[12;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[13;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mLet me create a new texforge project, then write the main.tex with all the requested features.\u001b[0m\u001b[14;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[15;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[15;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[16;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[16;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[16;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m# Todos\u001b[0m\u001b[16;13H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[17;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[17;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[18;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[18;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[18;6H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20m[•] \u001b[0m\u001b[18;10H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20mCreate texforge project\u001b[0m\u001b[18;33H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[19;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[19;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mWrite main.tex with all requested features\u001b[0m\u001b[20;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[\u001b[0m\u001b[20;8H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m] Create bib file with example entries\u001b[0m\u001b[21;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[21;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mCreate sections/body.tex\u001b[0m\u001b[22;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[22;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mRun texforge build\u001b[0m\u001b[22;28H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[23;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[24;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[25;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[25;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 1.1s\u001b[0m\u001b[25;19H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[26;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[27;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[27;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mThe user wants a comprehensive LaTeX document demonstrating various capabilities"]
+[27.563620299,"o",". Let me \u001b[0m\u001b[27;95H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[28;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcreate the texforge project first.\u001b[0m\u001b[29;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[30;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[30;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[31;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[31;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[31;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m# Create new texforge project\u001b[0m\u001b[31;35H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[32;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[32;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[33;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[33;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[33;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m$ texforge new tes-demo\u001b[0m\u001b[33;29H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[35;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mCreating project 'tes-demo' with template 'general'...\u001b[0m\u001b[36;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m ◇ Project 'tes-demo' created successfully\u001b[0m\u001b[37;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[41;3H\u001b[38;2;72;72;72m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[41;100H\u001b[38;2;72;72;72m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[42;3H\u001b[38;2;72;72;72m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[42;100H\u001b[38;2;72;72;72m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[43;3H\u001b[38;2;72;72;72m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[43;100H\u001b[38;2;72;72;72m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[44;3H\u001b[38;2;72;72;72m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[44;100H\u001b[38;2;72;72;72m\u001b[48;2;10;10;10m┃\u001b[0m\u001b[0m\u001b[49;7H\u001b[?25h\u001b[?2026l"]
+[27.580630854,"o","\u001b[?2026h\u001b[?25l\u001b[38;6H\u001b[38;2;10;10;10m\u001b[48;2;250;178;131mexit \u001b[0m\u001b[38;23H\u001b[38;2;10;10;10m\u001b[48;2;250;178;131mEx\u001b[0m\u001b[38;27H\u001b[38;2;10;10;10m\u001b[48;2;250;178;131m the app\u001b[0m\u001b[39;6H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30meditor \u001b[0m\u001b[39;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mOpen editor\u001b[0m\u001b[39;34H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[40;6H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mexport \u001b[0m\u001b[40;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mExport session transcript\u001b[0m\u001b[41;6H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mfetch:fetch:mcp\u001b[0m\u001b[41;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mFetch a URL and ext\u001b[0m\u001b[41;43H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mac\u001b[0m\u001b[41;46H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30m its contents as markdown\u001b[0m\u001b[42;6H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mhelp\u001b[0m\u001b[42;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mHelp\u001b[0m\u001b[42;27H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[43;6H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mnew \u001b[0m\u001b[43;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mNew s\u001b[0m\u001b[43;29H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mssi\u001b[0m\u001b[43;33H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mn\u001b[0m\u001b[44;6H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mrename\u001b[0m\u001b[44;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mRename session\u001b[0m\u001b[45;6H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mreview\u001b[0m\u001b[45;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mreview\u001b[0m\u001b[45;30H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mchanges\u001b[0m\u001b[45;38H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30m[commit|branch|pr], defaults to uncommitted\u001b[0m\u001b[46;6H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30ms\u001b[0m\u001b[46;8H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mssions \u001b[0m\u001b[46;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mSwitch sessio\u001b[0m\u001b[46;37H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[47;6H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mstatus\u001b[0m\u001b[47;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mView\u001b[0m\u001b[47;29H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mtatus\u001b[0m\u001b[47;34H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[49;7H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30me\u001b[0m\u001b[0m\u001b[49;8H\u001b[?25h\u001b[?2026l"]
+[27.59927693,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;45;72;110m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;7H\u001b[38;2;56;91;141m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;8H\u001b[?25h\u001b[?2026l"]
+[27.631750599,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;33;50;75m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;6H\u001b[38;2;55;90;138m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;8H\u001b[?25h\u001b[?2026l"]
+[27.664731618,"o","\u001b[?2026h\u001b[?25l\u001b[38;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[38;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[38;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m cd tes-demo\u001b[0m\u001b[38;19H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[39;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[39;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[39;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m texforge build\u001b[0m\u001b[39;22H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[40;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[40;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[41;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[42;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[42;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠙\u001b[0m\u001b[42;7H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[42;8H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThinking\u001b[0m\u001b[42;16H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[43;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[44;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[44;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mNow I need to create a comprehensive LaTeX document with all the requested features\u001b[0m\u001b[44;89H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[45;4H\u001b[38;2;255;255;255m\u001b[48;2;250;178;131m \u001b[0m\u001b[45;5H\u001b[38;2;10;10;10m\u001b[48;2;250;178;131m/exit \u001b[0m\u001b[45;23H\u001b[38;2;10;10;10m\u001b[48;2;250;178;131mExit the app\u001b[0m\u001b[45;35H\u001b[38;2;255;255;255m\u001b[48;2;250;178;131m \u001b[0m\u001b[46;5H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m/export \u001b[0m\u001b[46;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mExport session transcript\u001b[0m\u001b[47;5H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30m/fetch:fetch:mcp \u001b[0m\u001b[47;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mFetch a URL and extract its contents as markdown\u001b[0m\u001b[49;8H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mx\u001b[0m\u001b[0m\u001b[49;9H\u001b[?25h\u001b[?2026l"]
+[27.682378337,"o","\u001b[?2026h\u001b[?25l\u001b[1;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[2;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mThe user wants a LaTeX document demonstrating various capabilities. Let me first load the \u001b[0m\u001b[3;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mtexforge\u001b[0m\u001b[3;15H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mskill\u001b[0m\u001b[3;21H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mto understand how to u\u001b[0m\u001b[3;44H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10me texforge properly.\u001b[0m\u001b[3;64H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[4;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[5;6H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m→\u001b[0m\u001b[5;8H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10mSkill \"texforge\"\u001b[0m\u001b[6;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[6;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[7;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 672ms\u001b[0m\u001b[8;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[9;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mNow I understand texforge. The user wants a comprehensive LaTeX document demonstrating many \u001b[0m\u001b[10;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcapabilitie\u001b[0m\u001b[10;18H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m. Let me c\u001b[0m\u001b[10;29H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10meate a project and\u001b[0m\u001b[10;48H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mwrite the document.\u001b[0m\u001b[10;67H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[11;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[12;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mLet me create a new texforge project, then write the main.tex with all the requested features.\u001b[0m\u001b[13;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[14;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[14;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[15;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m# Todos\u001b[0m\u001b[16;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[17;6H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20m[•] \u001b[0m\u001b[17;10H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20mCreate texforge project\u001b[0m\u001b[18;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[18;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mWrite main.tex with all requested features\u001b[0m\u001b[19;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] Create bib file with example entries\u001b[0m\u001b[19;46H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[20;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[20;17H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20msections/body.tex\u001b[0m\u001b[20;34H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[21;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[21;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mRun texforge build\u001b[0m\u001b[21;28H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[22;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[23;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[24;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 1.1s\u001b[0m\u001b[25;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[26;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mThe user wants a comprehensive LaTeX document demonstrating various capabilities. Let me \u001b[0m\u001b[27;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcr\u001b[0m\u001b[27;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mate the texforge \u001b[0m\u001b[27;28H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10moj\u001b[0m\u001b[27;31H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mct first.\u001b[0m\u001b[27;40H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[28;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[29;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[29;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[30;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m# Create new texforge project\u001b[0m\u001b[31;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[32;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m$ texforge "]
+[27.68238732,"o","new tes-demo\u001b[0m\u001b[33;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[34;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mCreating project 'tes-demo' with template 'general'...\u001b[0m\u001b[35;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m ◇ Project 'tes-demo' created successfully\u001b[0m\u001b[35;49H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[36;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[37;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m cd tes-demo\u001b[0m\u001b[38;8H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mtexforge build\u001b[0m\u001b[39;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[40;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[41;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠙\u001b[0m\u001b[41;8H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThinking\u001b[0m\u001b[42;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[42;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[43;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mNow I need to create a comprehensive LaTeX document with all the requested features. Let me \u001b[0m\u001b[44;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mwrite\u001b[0m\u001b[44;11H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[53;4H\u001b[38;2;25;36;52m\u001b[48;2;10;10;10m■\u001b[0m\u001b[53;5H\u001b[38;2;53;87;134m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;9H\u001b[?25h\u001b[?2026l"]
+[27.69839801,"o","\u001b[?2026h\u001b[?25l\u001b[44;11H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m the main.tex file\u001b[0m\u001b[0m\u001b[49;9H\u001b[?25h\u001b[?2026l"]
+[27.714371393,"o","\u001b[?2026h\u001b[?25l\u001b[41;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠹\u001b[0m\u001b[53;4H\u001b[38;2;52;86;132m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;9H\u001b[?25h\u001b[?2026l"]
+[27.730572737,"o","\u001b[?2026h\u001b[?25l\u001b[44;29H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m with:\u001b[0m\u001b[46;6H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mfetch:fetch:mcp\u001b[0m\u001b[46;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mFetch a URL a\u001b[0m\u001b[46;37H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30md extract its contents as markdown\u001b[0m\u001b[47;6H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mexport \u001b[0m\u001b[47;23H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30mExport sessio\u001b[0m\u001b[47;37H\u001b[38;2;128;128;128m\u001b[48;2;30;30;30m transcript\u001b[0m\u001b[47;48H\u001b[38;2;255;255;255m\u001b[48;2;30;30;30m \u001b[0m\u001b[49;9H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mi\u001b[0m\u001b[0m\u001b[49;10H\u001b[?25h\u001b[?2026l"]
+[27.763530251,"o","\u001b[?2026h\u001b[?25l\u001b[1;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mThe user wants a LaTeX document demonstrating various capabilities. Let me first load the \u001b[0m\u001b[2;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mtexforge\u001b[0m\u001b[2;15H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mskill\u001b[0m\u001b[2;21H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mto understand how to u\u001b[0m\u001b[2;44H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10me texforge properly.\u001b[0m\u001b[2;64H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[3;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[4;6H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m→\u001b[0m\u001b[4;8H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10mSkill \"texforge\"\u001b[0m\u001b[5;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[5;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[6;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 672ms\u001b[0m\u001b[7;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[8;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mNow I understand texforge. The user wants a comprehensive LaTeX document demonstrating many \u001b[0m\u001b[9;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcapabilitie\u001b[0m\u001b[9;18H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m. Let me c\u001b[0m\u001b[9;29H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10meate a project and\u001b[0m\u001b[9;48H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mwrite the document.\u001b[0m\u001b[9;67H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[10;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[11;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mLet me create a new texforge project, then write the main.tex with all the requested features.\u001b[0m\u001b[12;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[13;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[13;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[14;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m# Todos\u001b[0m\u001b[15;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[16;6H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20m[•] \u001b[0m\u001b[16;10H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20mCreate texforge project\u001b[0m\u001b[17;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[17;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mWrite main.tex with all requested features\u001b[0m\u001b[18;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] Create bib file with example entries\u001b[0m\u001b[18;46H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[19;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[19;17H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20msections/body.tex\u001b[0m\u001b[19;34H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[20;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[20;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mRun texforge build\u001b[0m\u001b[20;28H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[21;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[22;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[23;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 1.1s\u001b[0m\u001b[24;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[25;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mThe user wants a comprehensive LaTeX document demonstrating various capabilities. Let me \u001b[0m\u001b[26;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcr\u001b[0m\u001b[26;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mate the texforge \u001b[0m\u001b[26;28H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10moj\u001b[0m\u001b[26;31H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mct first.\u001b[0m\u001b[26;40H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[27;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[28;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[28;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[29;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m# Create new texforge project\u001b[0m\u001b[30;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[31;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m$ texforge new tes-demo\u001b[0m\u001b[32;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m "]
+[27.763573768,"o"," \u001b[0m\u001b[33;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mCreating project 'tes-demo' with template 'general'...\u001b[0m\u001b[34;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m ◇ Project 'tes-demo' created successfully\u001b[0m\u001b[34;49H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[35;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[36;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m cd tes-demo\u001b[0m\u001b[37;8H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mtexforge build\u001b[0m\u001b[38;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[39;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[40;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠹\u001b[0m\u001b[40;8H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThinking\u001b[0m\u001b[41;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[41;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[42;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mNow I need to create a comprehensive LaTeX document with all the requested features. Let me \u001b[0m\u001b[43;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mwrite\u001b[0m\u001b[43;12H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mth\u001b[0m\u001b[43;15H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m main.t\u001b[0m\u001b[43;23H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mx file with:\u001b[0m\u001b[43;35H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[44;6H\u001b[38;2;154;111;83m\u001b[48;2;10;10;10m1. \u001b[0m\u001b[44;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mM\u001b[0m\u001b[44;11H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mrmaid\u001b[0m\u001b[44;16H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[53;4H\u001b[38;2;51;83;128m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;10H\u001b[?25h\u001b[?2026l"]
+[27.795963652,"o","\u001b[?2026h\u001b[?25l\u001b[1;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mtexforge\u001b[0m\u001b[1;15H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mskill\u001b[0m\u001b[1;21H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mto understand how to u\u001b[0m\u001b[1;44H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10me texforge properly.\u001b[0m\u001b[1;64H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[2;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[3;6H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m→\u001b[0m\u001b[3;8H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10mSkill \"texforge\"\u001b[0m\u001b[4;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[4;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[5;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 672ms\u001b[0m\u001b[6;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[7;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mNow I understand texforge. The user wants a comprehensive LaTeX document demonstrating many \u001b[0m\u001b[8;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcapabilitie\u001b[0m\u001b[8;18H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m. Let me c\u001b[0m\u001b[8;29H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10meate a project and\u001b[0m\u001b[8;48H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mwrite the document.\u001b[0m\u001b[8;67H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[9;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[10;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mLet me create a new texforge project, then write the main.tex with all the requested features.\u001b[0m\u001b[11;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[12;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[12;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[13;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m# Todos\u001b[0m\u001b[14;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[15;6H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20m[•] \u001b[0m\u001b[15;10H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20mCreate texforge project\u001b[0m\u001b[16;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[16;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mWrite main.tex with all requested features\u001b[0m\u001b[17;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] Create bib file with example entries\u001b[0m\u001b[17;46H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[18;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[18;17H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20msections/body.tex\u001b[0m\u001b[18;34H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[19;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[19;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mRun texforge build\u001b[0m\u001b[19;28H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[20;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[21;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[22;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 1.1s\u001b[0m\u001b[23;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[24;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mThe user wants a comprehensive LaTeX document demonstrating various capabilities. Let me \u001b[0m\u001b[25;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcr\u001b[0m\u001b[25;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mate the texforge \u001b[0m\u001b[25;28H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10moj\u001b[0m\u001b[25;31H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mct first.\u001b[0m\u001b[25;40H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[26;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[27;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[27;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[28;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m# Create new texforge project\u001b[0m\u001b[29;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[30;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m$ texforge new tes-demo\u001b[0m\u001b[31;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[32;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mCreating project 'tes-demo' with template 'general'...\u001b[0m\u001b[33;6H\u001b[38;2;2"]
+[27.79601931,"o","38;238;238m\u001b[48;2;20;20;20m ◇ Project 'tes-demo' created successfully\u001b[0m\u001b[33;49H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[34;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[35;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m cd tes-demo\u001b[0m\u001b[36;8H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mtexforge build\u001b[0m\u001b[37;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[38;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[39;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠸\u001b[0m\u001b[39;8H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThinking\u001b[0m\u001b[40;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[40;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[41;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mNow I need to create a comprehensive LaTeX document with all the requested features. Let me \u001b[0m\u001b[42;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mwrite\u001b[0m\u001b[42;12H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mth\u001b[0m\u001b[42;15H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m main.t\u001b[0m\u001b[42;23H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mx file with:\u001b[0m\u001b[42;35H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[43;6H\u001b[38;2;154;111;83m\u001b[48;2;10;10;10m1. \u001b[0m\u001b[43;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mM\u001b[0m\u001b[43;11H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mrmaid sequence diagram\u001b[0m\u001b[43;33H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[44;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m2\u001b[0m\u001b[44;7H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[53;4H\u001b[38;2;50;81;124m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;10H\u001b[?25h\u001b[?2026l"]
+[27.827991232,"o","\u001b[?2026h\u001b[?25l\u001b[44;6H\u001b[38;2;154;111;83m\u001b[48;2;10;10;10m2. \u001b[0m\u001b[44;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mGraphviz architecture\u001b[0m\u001b[49;10H\u001b[38;2;238;238;238m\u001b[48;2;30;30;30mt\u001b[0m\u001b[0m\u001b[49;11H\u001b[?25h\u001b[?2026l"]
+[27.844696911,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;49;79;122m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;11H\u001b[?25h\u001b[?2026l"]
+[27.874642276,"o","\u001b[?2026h\u001b[?25l\u001b[39;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠼\u001b[0m\u001b[0m\u001b[49;11H\u001b[?25h\u001b[?2026l"]
+[27.890218861,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;48;77;118m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;11H\u001b[?25h\u001b[?2026l"]
+[27.919507439,"o","\u001b[?2026h\u001b[?25l\u001b[53;4H\u001b[38;2;47;75;115m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;11H\u001b[?25h\u001b[?2026l"]
+[27.953164347,"o","\u001b[?2026h\u001b[?25l\u001b[1;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[2;6H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m→\u001b[0m\u001b[2;8H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10mSkill \"texforge\"\u001b[0m\u001b[3;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[3;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[4;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 672ms\u001b[0m\u001b[5;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[6;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mNow I understand texforge. The user wants a comprehensive LaTeX document demonstrating many \u001b[0m\u001b[7;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcapabilitie\u001b[0m\u001b[7;18H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m. Let me c\u001b[0m\u001b[7;29H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10meate a project and\u001b[0m\u001b[7;48H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mwrite the document.\u001b[0m\u001b[7;67H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[8;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[9;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mLet me create a new texforge project, then write the main.tex with all the requested features.\u001b[0m\u001b[10;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[11;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[11;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[12;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m# Todos\u001b[0m\u001b[13;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[14;6H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20m[•] \u001b[0m\u001b[14;10H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20mCreate texforge project\u001b[0m\u001b[15;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[15;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mWrite main.tex with all requested features\u001b[0m\u001b[16;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] Create bib file with example entries\u001b[0m\u001b[16;46H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[17;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[17;17H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20msections/body.tex\u001b[0m\u001b[17;34H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[18;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[18;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mRun texforge build\u001b[0m\u001b[18;28H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[19;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[20;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[21;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 1.1s\u001b[0m\u001b[22;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[23;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mThe user wants a comprehensive LaTeX document demonstrating various capabilities. Let me \u001b[0m\u001b[24;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcr\u001b[0m\u001b[24;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mate the texforge \u001b[0m\u001b[24;28H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10moj\u001b[0m\u001b[24;31H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mct first.\u001b[0m\u001b[24;40H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[25;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[26;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[26;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[27;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m# Create new texforge project\u001b[0m\u001b[28;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[29;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m$ texforge new tes-demo\u001b[0m\u001b[30;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[31;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mCreating project 'tes-demo' with template 'general'...\u001b[0m\u001b[32;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m ◇ Project 'tes-demo' created successfully\u001b[0m\u001b[32;49H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[33;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[34;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m cd tes-demo\u001b[0m\u001b[35;8H\u001b[38;2;238;238;238m\u001b[48;2;20"]
+[27.953175432,"o",";20;20mtexforge build\u001b[0m\u001b[36;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[37;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[38;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠼\u001b[0m\u001b[38;8H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThinking\u001b[0m\u001b[39;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[39;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[40;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mNow I need to create a comprehensive LaTeX document with all the requested features. Let me \u001b[0m\u001b[41;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mwrite\u001b[0m\u001b[41;12H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mth\u001b[0m\u001b[41;15H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m main.t\u001b[0m\u001b[41;23H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mx file with:\u001b[0m\u001b[41;35H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[42;6H\u001b[38;2;154;111;83m\u001b[48;2;10;10;10m1. \u001b[0m\u001b[42;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mM\u001b[0m\u001b[42;11H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mrmaid sequence diagram\u001b[0m\u001b[42;33H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[43;6H\u001b[38;2;154;111;83m\u001b[48;2;10;10;10m2\u001b[0m\u001b[43;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mGraphviz archit\u001b[0m\u001b[43;25H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcture digraph\u001b[0m\u001b[44;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m3\u001b[0m\u001b[44;7H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[0m\u001b[49;11H\u001b[?25h\u001b[?2026l"]
+[27.969632915,"o","\u001b[?2026h\u001b[?25l\u001b[1;6H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10m→\u001b[0m\u001b[1;8H\u001b[38;2;128;128;128m\u001b[48;2;10;10;10mSkill \"texforge\"\u001b[0m\u001b[2;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[2;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[3;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 672ms\u001b[0m\u001b[4;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[5;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mNow I understand texforge. The user wants a comprehensive LaTeX document demonstrating many \u001b[0m\u001b[6;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcapabilitie\u001b[0m\u001b[6;18H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m. Let me c\u001b[0m\u001b[6;29H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10meate a project and\u001b[0m\u001b[6;48H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mwrite the document.\u001b[0m\u001b[6;67H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[7;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[8;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mLet me create a new texforge project, then write the main.tex with all the requested features.\u001b[0m\u001b[9;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[10;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[10;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[11;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m# Todos\u001b[0m\u001b[12;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[13;6H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20m[•] \u001b[0m\u001b[13;10H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20mCreate texforge project\u001b[0m\u001b[14;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[14;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mWrite main.tex with all requested features\u001b[0m\u001b[15;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] Create bib file with example entries\u001b[0m\u001b[15;46H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[16;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[16;17H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20msections/body.tex\u001b[0m\u001b[16;34H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[17;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[17;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mRun texforge build\u001b[0m\u001b[17;28H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[18;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[19;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[20;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 1.1s\u001b[0m\u001b[21;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[22;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mThe user wants a comprehensive LaTeX document demonstrating various capabilities. Let me \u001b[0m\u001b[23;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcr\u001b[0m\u001b[23;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mate the texforge \u001b[0m\u001b[23;28H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10moj\u001b[0m\u001b[23;31H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mct first.\u001b[0m\u001b[23;40H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[24;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[25;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[25;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[26;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m# Create new texforge project\u001b[0m\u001b[27;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[28;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m$ texforge new tes-demo\u001b[0m\u001b[29;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[30;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mCreating project 'tes-demo' with template 'general'...\u001b[0m\u001b[31;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m ◇ Project 'tes-demo' created successfully\u001b[0m\u001b[31;49H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[32;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[33;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m cd tes-demo\u001b[0m\u001b[34;8H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mtexforge build\u001b[0m\u001b[35;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[36;3H\u001b[38;2;255"]
+[27.969681345,"o",";255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[37;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠴\u001b[0m\u001b[37;8H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThinking\u001b[0m\u001b[38;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[38;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[39;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mNow I need to create a comprehensive LaTeX document with all the requested features. Let me \u001b[0m\u001b[40;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mwrite\u001b[0m\u001b[40;12H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mth\u001b[0m\u001b[40;15H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m main.t\u001b[0m\u001b[40;23H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mx file with:\u001b[0m\u001b[40;35H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[41;6H\u001b[38;2;154;111;83m\u001b[48;2;10;10;10m1. \u001b[0m\u001b[41;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mM\u001b[0m\u001b[41;11H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mrmaid sequence diagram\u001b[0m\u001b[41;33H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[42;6H\u001b[38;2;154;111;83m\u001b[48;2;10;10;10m2\u001b[0m\u001b[42;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mGraphviz archit\u001b[0m\u001b[42;25H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcture digraph\u001b[0m\u001b[43;6H\u001b[38;2;154;111;83m\u001b[48;2;10;10;10m3\u001b[0m\u001b[43;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mD2 \u001b[0m\u001b[43;13H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mipeline d\u001b[0m\u001b[43;23H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10magram\u001b[0m\u001b[43;28H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[44;6H\u001b[38;2;154;111;83m\u001b[48;2;10;10;10m4. \u001b[0m\u001b[44;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mMath equations with cross\u001b[0m\u001b[53;4H\u001b[38;2;45;73;111m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;11H\u001b[?25h\u001b[?2026l"]
+[28.002413648,"o","\u001b[?2026h\u001b[?25l\u001b[44;34H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m-re\u001b[0m\u001b[53;4H\u001b[38;2;44;71;109m\u001b[48;2;10;10;10m⬝⬝⬝⬝⬝⬝⬝⬝\u001b[0m\u001b[0m\u001b[49;11H\u001b[?25h\u001b[?2026l"]
+[28.019206557,"o","\u001b[?2026h\u001b[?25l\u001b[1;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[1;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[2;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 672ms\u001b[0m\u001b[3;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[4;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mNow I understand texforge. The user wants a comprehensive LaTeX document demonstrating many \u001b[0m\u001b[5;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcapabilitie\u001b[0m\u001b[5;18H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m. Let me c\u001b[0m\u001b[5;29H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10meate a project and\u001b[0m\u001b[5;48H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mwrite the document.\u001b[0m\u001b[5;67H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[6;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[7;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mLet me create a new texforge project, then write the main.tex with all the requested features.\u001b[0m\u001b[8;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[9;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[9;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[10;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m# Todos\u001b[0m\u001b[11;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[12;6H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20m[•] \u001b[0m\u001b[12;10H\u001b[38;2;245;167;66m\u001b[48;2;20;20;20mCreate texforge project\u001b[0m\u001b[13;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[13;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mWrite main.tex with all requested features\u001b[0m\u001b[14;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] Create bib file with example entries\u001b[0m\u001b[14;46H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[15;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[15;17H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20msections/body.tex\u001b[0m\u001b[15;34H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[16;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m[ ] \u001b[0m\u001b[16;10H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20mRun texforge build\u001b[0m\u001b[16;28H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[17;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[18;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[19;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThought: 1.1s\u001b[0m\u001b[20;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[21;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mThe user wants a comprehensive LaTeX document demonstrating various capabilities. Let me \u001b[0m\u001b[22;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcr\u001b[0m\u001b[22;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mate the texforge \u001b[0m\u001b[22;28H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10moj\u001b[0m\u001b[22;31H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mct first.\u001b[0m\u001b[22;40H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[23;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[24;3H\u001b[38;2;10;10;10m\u001b[48;2;20;20;20m┃\u001b[0m\u001b[24;4H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[25;6H\u001b[38;2;128;128;128m\u001b[48;2;20;20;20m# Create new texforge project\u001b[0m\u001b[26;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[27;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m$ texforge new tes-demo\u001b[0m\u001b[28;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[29;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mCreating project 'tes-demo' with template 'general'...\u001b[0m\u001b[30;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m ◇ Project 'tes-demo' created successfully\u001b[0m\u001b[30;49H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[31;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[32;6H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20m cd tes-demo\u001b[0m\u001b[33;8H\u001b[38;2;238;238;238m\u001b[48;2;20;20;20mtexforge build\u001b[0m\u001b[34;6H\u001b[38;2;255;255;255m\u001b[48;2;20;20;20m \u001b[0m\u001b[35;3H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m "]
+[28.019244483,"o"," \u001b[0m\u001b[36;6H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10m⠴\u001b[0m\u001b[36;8H\u001b[38;2;151;104;44m\u001b[48;2;10;10;10mThinking\u001b[0m\u001b[37;6H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[37;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[38;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mNow I need to create a comprehensive LaTeX document with all the requested features. Let me \u001b[0m\u001b[39;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mwrite\u001b[0m\u001b[39;12H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mth\u001b[0m\u001b[39;15H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m main.t\u001b[0m\u001b[39;23H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mx file with:\u001b[0m\u001b[39;35H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[40;6H\u001b[38;2;154;111;83m\u001b[48;2;10;10;10m1. \u001b[0m\u001b[40;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mM\u001b[0m\u001b[40;11H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mrmaid sequence diagram\u001b[0m\u001b[40;33H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[41;6H\u001b[38;2;154;111;83m\u001b[48;2;10;10;10m2\u001b[0m\u001b[41;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mGraphviz archit\u001b[0m\u001b[41;25H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mcture digraph\u001b[0m\u001b[42;6H\u001b[38;2;154;111;83m\u001b[48;2;10;10;10m3\u001b[0m\u001b[42;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mD2 \u001b[0m\u001b[42;13H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mipeline d\u001b[0m\u001b[42;23H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10magram\u001b[0m\u001b[42;28H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[43;6H\u001b[38;2;154;111;83m\u001b[48;2;10;10;10m4\u001b[0m\u001b[43;9H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10mMath equations with cross-references\u001b[0m\u001b[44;6H\u001b[38;2;147;147;147m\u001b[48;2;10;10;10m5.\u001b[0m\u001b[44;8H\u001b[38;2;255;255;255m\u001b[48;2;10;10;10m \u001b[0m\u001b[0m\u001b[49;11H\u001b[?25h\u001b[?2026l"]
+[28.031438905,"o","\u001b]0;\u0007"]
+[28.034929181,"o","\u001b[?25h\u001b[0m\u001b]22;\u0007\u001b[>4;0m\u001b[?1003l\u001b[?1002l\u001b[?1000l\u001b[?1006l\u001b[?2004l\u001b[?1049l\u001b[?2031l\u001b]0;\u0007\u001b]12;default\u0007\u001b]112\u0007\u001b[0 q\u001b[?25h"]
+[28.044983217,"o","\u001b[?25h"]
+[28.05579063,"o"," \u001b[0m▄\u001b[0m \r\n \u001b[90m█\u001b[0m\u001b[90m▀\u001b[0m\u001b[90m▀\u001b[0m\u001b[90m█\u001b[0m \u001b[90m█\u001b[0m\u001b[90m▀\u001b[0m\u001b[90m▀\u001b[0m\u001b[90m█\u001b[0m \u001b[90m█\u001b[0m\u001b[90m▀\u001b[0m\u001b[90m▀\u001b[0m\u001b[90m█\u001b[0m \u001b[90m█\u001b[0m\u001b[90m▀\u001b[0m\u001b[90m▀\u001b[0m\u001b[90m▄\u001b[0m \u001b[0m█\u001b[0m\u001b[0m▀\u001b[0m\u001b[0m▀\u001b[0m\u001b[0m▀\u001b[0m \u001b[0m█\u001b[0m\u001b[0m▀\u001b[0m\u001b[0m▀\u001b[0m\u001b[0m█\u001b[0m \u001b[0m█\u001b[0m\u001b[0m▀\u001b[0m\u001b[0m▀\u001b[0m\u001b[0m█\u001b[0m \u001b[0m█\u001b[0m\u001b[0m▀\u001b[0m\u001b[0m▀\u001b[0m\u001b[0m█\u001b[0m\r\n \u001b[90m█\u001b[0m\u001b[48;5;235m \u001b[0m\u001b[48;5;235m \u001b[0m\u001b[90m█\u001b[0m \u001b[90m█\u001b[0m\u001b[48;5;235m \u001b[0m\u001b[48;5;235m \u001b[0m\u001b[90m█\u001b[0m \u001b[90m█\u001b[0m\u001b[90m\u001b[48;5;235m▀\u001b[0m\u001b[90m\u001b[48;5;235m▀\u001b[0m\u001b[90m\u001b[48;5;235m▀\u001b[0m \u001b[90m█\u001b[0m\u001b[48;5;235m \u001b[0m\u001b[48;5;235m \u001b[0m\u001b[90m█\u001b[0m \u001b[0m█\u001b[0m\u001b[48;5;238m \u001b[0m\u001b[48;5;238m \u001b[0m\u001b[48;5;238m \u001b[0m \u001b[0m█\u001b[0m\u001b[48;5;238m \u001b[0m\u001b[48;5;238m \u001b[0m\u001b[0m█\u001b[0m \u001b[0m█\u001b[0m\u001b[48;5;238m \u001b[0m\u001b[48;5;238m \u001b[0m\u001b[0m█\u001b[0m \u001b[0m█\u001b[0m\u001b[0m\u001b[48;5;238m▀\u001b[0m\u001b[0m\u001b[48;5;238m▀\u001b[0m\u001b[0m\u001b[48;5;238m▀\u001b[0m\r\n \u001b[90m▀\u001b[0m\u001b[90m▀\u001b[0m\u001b[90m▀\u001b[0m\u001b[90m▀\u001b[0m \u001b[90m█\u001b[0m\u001b[90m▀\u001b[0m\u001b[90m▀\u001b[0m\u001b[90m▀\u001b[0m \u001b[90m▀\u001b[0m\u001b[90m▀\u001b[0m\u001b[90m▀\u001b[0m\u001b[90m▀\u001b[0m \u001b[90m▀\u001b[0m\u001b[38;5;235m▀\u001b[0m\u001b[38;5;235m▀\u001b[0m\u001b[90m▀\u001b[0m \u001b[0m▀\u001b[0m\u001b[0m▀\u001b[0m\u001b[0m▀\u001b[0m\u001b[0m▀\u001b[0m \u001b[0m▀\u001b[0m\u001b[0m▀\u001b[0m\u001b[0m▀\u001b[0m\u001b[0m▀\u001b[0m \u001b[0m▀\u001b[0m\u001b[0m▀\u001b[0m\u001b[0m▀\u001b[0m\u001b[0m▀\u001b[0m \u001b[0m▀\u001b[0m\u001b[0m▀\u001b[0m\u001b[0m▀\u001b[0m\u001b[0m▀\u001b[0m\r\n\r\n \u001b[90mSession \u001b[0m\u001b[1mNew session - 2026-07-07T13:55:09.012Z\u001b[0m\r\n \u001b[90mContinue \u001b[0m\u001b[1mopencode -s ses_0c32389abffewyL790AFRcnI60\u001b[0m\r\n\r\n"]
+[28.179515255,"o","\u001b]697;OSCUnlock=6f3dc305774c4fb5ac9caff308f61ed2\u0007\u001b]697;Dir=/home/jheisonmblivecom\u0007"]
+[28.179562802,"o","\u001b]697;Shell=bash\u0007\u001b]697;ShellPath=/usr/bin/bash\u0007"]
+[28.179604986,"o","\u001b]697;WSLDistro=Ubuntu\u0007\u001b]697;PID=16910\u0007"]
+[28.179667202,"o","\u001b]697;ExitCode=0\u0007\u001b]697;TTY=/dev/pts/3\u0007"]
+[28.179731596,"o","\u001b]697;Log=\u0007\u001b]697;User=jheisonmblivecom\u0007"]
+[28.181307235,"o","\u001b]697;OSCLock=6f3dc305774c4fb5ac9caff308f61ed2\u0007\u001b]697;PreExec\u0007"]
+[28.349678092,"o","\u001b[?2004h\u001b]697;StartPrompt\u0007\u001b[1;32mtexForge@univerlab\u001b[0m:\u001b[1;34m~\u001b[0m$ \u001b]697;EndPrompt\u0007\u001b]697;NewCmd=6f3dc305774c4fb5ac9caff308f61ed2\u0007"]
diff --git a/demo/demo.toml b/demo/demo.toml
new file mode 100644
index 0000000..59ae45b
--- /dev/null
+++ b/demo/demo.toml
@@ -0,0 +1,135 @@
+[demo]
+name = "demo"
+output_dir = "./dist"
+prompt = '\[\e[1;32m\]texForge@univerlab\[\e[0m\]:\[\e[1;34m\]~\[\e[0m\]$ '
+
+[typing]
+base_ms = 80
+salt_ms = 15
+
+[[sources]]
+id = "main"
+type = "terminal"
+
+[[sources]]
+id = "pdf"
+type = "browser"
+url = "file:///home/jheisonmblivecom/Projects/UniverLab/texforge/examples/texforge-capabilites/texforge-capabilites.pdf"
+
+[layout]
+width = 1440
+height = 1080
+fps = 15
+line_height = 1.2000000476837158
+background = "#0b0f14"
+font_family = "IBM Plex Mono"
+
+[[layout.panes]]
+id = "main"
+type = "terminal"
+x = 0
+y = 0
+width = 1440
+height = 1080
+font_family = "monospace"
+font_size = 16
+
+[[layout.panes]]
+id = "pdf-r1"
+type = "browser"
+x = 0
+y = 0
+width = 1440
+height = 1080
+url = "file:///home/jheisonmblivecom/Projects/UniverLab/texforge/examples/texforge-capabilites/texforge-capabilites.pdf"
+reveal_at = 262.448
+
+[[timeline]]
+action = "focus"
+pane = "main"
+
+[[timeline]]
+action = "type"
+text = "texforge --help"
+human_salt = true
+
+[[timeline]]
+action = "wait"
+duration_ms = 200
+
+[[timeline]]
+action = "keypress"
+key = "enter"
+
+[[timeline]]
+action = "wait"
+duration_ms = 2500
+
+[[timeline]]
+action = "type"
+text = "opencode"
+human_salt = true
+
+[[timeline]]
+action = "wait"
+duration_ms = 200
+
+[[timeline]]
+action = "keypress"
+key = "enter"
+
+[[timeline]]
+action = "wait_for_quiet"
+quiet_ms = 1500
+
+[[timeline]]
+action = "type"
+text = 'Create a texforge project "texforge-capabilites" demonstrating all capabilities: Mermaid sequence diagra, Graphviz architecture digraph, D2 pipeline diagram, math equations with cross-refs, BibTeX citations, tikz diagram, examples of code listings, two booktabs tables, table of contents, and lists. Compile with texforge build.'
+human_salt = true
+
+[[timeline]]
+action = "wait"
+duration_ms = 200
+
+[[timeline]]
+action = "keypress"
+key = "enter"
+
+[[timeline]]
+action = "wait_for_quiet"
+quiet_ms = 5000
+
+[[timeline]]
+action = "type"
+text = "/exit"
+human_salt = true
+
+[[timeline]]
+action = "wait"
+duration_ms = 200
+
+[[timeline]]
+action = "keypress"
+key = "enter"
+
+[[timeline]]
+action = "wait_for_quiet"
+quiet_ms = 500
+
+[[timeline]]
+action = "focus"
+pane = "pdf-r1"
+
+[[timeline]]
+action = "scroll"
+direction = "down"
+velocity = "constant"
+duration_ms = 8000
+pane = "pdf-r1"
+
+[[timeline]]
+action = "wait"
+duration_ms = 8000
+
+[[timeline]]
+action = "terminate"
diff --git a/demo/dist/demo.gif b/demo/dist/demo.gif
new file mode 100644
index 0000000..f42ede8
Binary files /dev/null and b/demo/dist/demo.gif differ
diff --git a/docs/building.md b/docs/building.md
new file mode 100644
index 0000000..e9ac53e
--- /dev/null
+++ b/docs/building.md
@@ -0,0 +1,55 @@
+---
+title: Building
+description: Compile to PDF, watch mode, and the texforge runtime directory.
+order: 4
+---
+
+# Building
+
+## `texforge build`
+
+Compiles the project to `.pdf` in the project root:
+
+1. Copies sources into a temporary build directory (originals are never
+ modified).
+2. Renders embedded [diagram environments](diagrams.md) to PNG.
+3. Invokes Tectonic on the entry point declared in `project.toml` and
+ places the resulting PDF (named after the document title) in the
+ project root.
+
+On the first run texforge downloads the Tectonic binary into
+`~/.texforge/bin/` automatically.
+
+## Watch mode
+
+`texforge build --watch` watches `.tex` files and rebuilds automatically:
+
+```bash
+texforge build --watch # rebuild after 2s of inactivity (default)
+texforge build --watch --delay 5 # custom debounce delay in seconds
+```
+
+The terminal shows a live session timer, build count and the result of the
+last build. Press `Ctrl+C` to stop.
+
+## Cleaning
+
+```bash
+texforge clean # remove build artifacts
+```
+
+## Runtime directory
+
+Texforge keeps its engine and template cache under `~/.texforge/`:
+
+```
+~/.texforge/
+ bin/
+ tectonic # LaTeX engine (auto-installed on first build)
+ templates/
+ general/ # cached templates
+ apa-general/
+ ...
+```
+
+Deleting this directory is safe: everything is re-downloaded on demand.
diff --git a/docs/cli-reference.md b/docs/cli-reference.md
new file mode 100644
index 0000000..a6a816e
--- /dev/null
+++ b/docs/cli-reference.md
@@ -0,0 +1,59 @@
+---
+title: CLI Reference
+description: Every texforge command and flag.
+order: 9
+---
+
+# CLI Reference
+
+```
+texforge [options]
+```
+
+## Project lifecycle
+
+| Command | Description |
+|---|---|
+| `texforge new ` | Create a new project from the default template |
+| `texforge new -t ` | Create with a specific template |
+| `texforge init` | Interactive wizard — new project or migrate an existing one |
+| `texforge build` | Compile to PDF |
+| `texforge build --watch` | Watch for changes and rebuild automatically |
+| `texforge build --watch --delay ` | Custom debounce delay (default: 2s) |
+| `texforge clean` | Remove build artifacts |
+
+## Quality
+
+| Command | Description |
+|---|---|
+| `texforge check` | Lint without compiling |
+| `texforge fmt` | Format `.tex` files in place |
+| `texforge fmt --check` | Check formatting without modifying (CI-friendly) |
+
+## Templates
+
+| Command | Description |
+|---|---|
+| `texforge template list` | List installed + available in the registry |
+| `texforge template list --installed` | List only locally installed templates |
+| `texforge template add ` | Download a template from the registry |
+| `texforge template remove ` | Remove an installed template |
+| `texforge template validate ` | Verify template compatibility |
+
+## Configuration
+
+| Command | Description |
+|---|---|
+| `texforge config` | Interactive wizard (name, email, institution, language) |
+| `texforge config list` | Show all configured values |
+| `texforge config ` | Show value for a key |
+| `texforge config ` | Set a value |
+
+Valid keys: `name`, `email`, `institution`, `language`.
+
+## Global flags
+
+| Flag | Description |
+|---|---|
+| `--help` | Show help for any command |
+| `--version` | Show texforge version |
diff --git a/docs/configuration.md b/docs/configuration.md
new file mode 100644
index 0000000..f7ccdb8
--- /dev/null
+++ b/docs/configuration.md
@@ -0,0 +1,64 @@
+---
+title: Configuration
+description: Global user configuration and the project.toml manifest.
+order: 7
+---
+
+# Configuration
+
+Texforge has two configuration layers: a **global user config** (who you
+are, your defaults) and a **per-project manifest** (`project.toml`).
+
+## Global configuration
+
+Stored in `~/.texforge/config.toml` (or
+`$XDG_CONFIG_HOME/texforge/config.toml`). These values are used as
+replaceable placeholders in templates.
+
+**Interactive setup:**
+
+```bash
+texforge config
+```
+
+The wizard asks for:
+
+- **Name** — your full name
+- **Email** — your email address
+- **Institution** — your institution/organization
+- **Language** — document language (default: `english`)
+
+**Command-line interface:**
+
+```bash
+texforge config list # view all settings
+texforge config name # get a value
+texforge config name "Ada Lovelace" # set a value
+texforge config email "ada@example.com"
+texforge config institution "University of Tech"
+texforge config language "spanish"
+```
+
+## Project manifest — `project.toml`
+
+Every texforge project has a `project.toml` at its root. It is generated
+by `texforge new` / `texforge init`:
+
+```toml
+[document]
+title = "My Thesis"
+author = "Ada Lovelace"
+template = "general"
+
+[build]
+entry = "main.tex"
+# bibliography = "references.bib" # optional
+```
+
+| Key | Description |
+|---|---|
+| `document.title` | Document title |
+| `document.author` | Document author |
+| `document.template` | Template the project was created from |
+| `build.entry` | Entry `.tex` file passed to the engine |
+| `build.bibliography` | Optional `.bib` file used by the linter |
diff --git a/docs/diagrams.md b/docs/diagrams.md
new file mode 100644
index 0000000..4d5cde4
--- /dev/null
+++ b/docs/diagrams.md
@@ -0,0 +1,53 @@
+---
+title: Diagrams
+description: Embed Mermaid and Graphviz diagrams directly in your .tex files.
+order: 5
+---
+
+# Diagrams
+
+`texforge build` intercepts embedded diagram environments before
+compilation and replaces them with rendered figures. Your original `.tex`
+files are never modified — rendering happens in the `build/` copies.
+
+Both renderers are pure Rust: no browser, no Node.js, no `dot` binary
+required.
+
+## Mermaid
+
+```latex
+% Default: width=\linewidth, pos=H, no caption
+\begin{mermaid}
+flowchart LR
+ A[Input] --> B[Process] --> C[Output]
+\end{mermaid}
+
+% With options
+\begin{mermaid}[width=0.6\linewidth, caption=System flow, pos=t]
+flowchart TD
+ X --> Y --> Z
+\end{mermaid}
+```
+
+## Graphviz / DOT
+
+```latex
+\begin{graphviz}[caption=Pipeline]
+digraph G {
+ rankdir=LR
+ A -> B -> C
+ B -> D
+}
+\end{graphviz}
+```
+
+## Options
+
+| Option | Default | Description |
+|---|---|---|
+| `width` | `\linewidth` | Image width |
+| `pos` | `H` | Figure placement (`H`, `t`, `b`, `h`, `p`) |
+| `caption` | _(none)_ | Figure caption |
+
+When a `caption` is given the diagram is wrapped in a `figure` environment
+at the requested position; without it the image is embedded inline.
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 0000000..4bc6484
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,53 @@
+---
+title: Texforge
+description: A unified LaTeX workspace — write, render diagrams, and build PDFs with one self-contained tool.
+order: 1
+---
+
+# Texforge
+
+Texforge is a unified LaTeX workspace: one tool for writing, rendering
+diagrams (Mermaid, Graphviz) and building PDFs. Set it up once and stay
+focused on your document.
+
+It is a single binary written in Rust. You do **not** need TeX Live, MiKTeX,
+Node.js, a browser, or Graphviz installed — the LaTeX engine
+([Tectonic](https://tectonic-typesetting.github.io/)) is downloaded
+automatically on first build, and diagrams are rendered in pure Rust.
+
+## Why texforge
+
+A classic LaTeX setup means installing a multi-gigabyte distribution,
+wiring up `latexmk`, and gluing external renderers for diagrams. Texforge
+collapses that into a single workflow:
+
+- **One-command setup** — install once; engine, templates and diagram
+ renderers are included or fetched on demand.
+- **Diagrams as first-class citizens** — write Mermaid or Graphviz blocks
+ directly in your `.tex` files; they render and embed during build.
+- **Guided workflows** — start a new project or migrate an existing one
+ with `texforge init`.
+- **Template registry** — install, manage and validate templates, with a
+ built-in offline fallback.
+- **Build and live edit** — compile once or use watch mode.
+- **Smart linting** — catch missing files, broken references, bibliography
+ keys and unclosed environments before compiling.
+- **Opinionated formatter** — one canonical `.tex` style, clean git diffs.
+
+## How the documentation is organized
+
+- [Installation](installation.md) — install, update and uninstall.
+- [Quick Start](quickstart.md) — from zero to PDF in two commands.
+- [Building](building.md) — `build`, watch mode and the runtime directory.
+- [Diagrams](diagrams.md) — Mermaid and Graphviz environments.
+- [Templates](templates.md) — using the template registry.
+- [Configuration](configuration.md) — global config and `project.toml`.
+- [Linting & Formatting](linting-and-formatting.md) — `check` and `fmt`.
+- [CLI Reference](cli-reference.md) — every command and flag.
+
+## Part of UniverLab
+
+Texforge is an experiment of [UniverLab](https://github.com/UniverLab),
+an open computational laboratory. It follows the lab's engineering
+principles: one tool one job, reproducibility first, offline-friendly
+design.
diff --git a/docs/installation.md b/docs/installation.md
new file mode 100644
index 0000000..c0330af
--- /dev/null
+++ b/docs/installation.md
@@ -0,0 +1,78 @@
+---
+title: Installation
+description: Install texforge with the quick installer, cargo, or from source.
+order: 2
+---
+
+# Installation
+
+## Quick install (recommended)
+
+**Linux / macOS:**
+
+```bash
+curl -fsSL https://raw.githubusercontent.com/UniverLab/texforge/main/scripts/install.sh | sh
+```
+
+**Windows (PowerShell):**
+
+```powershell
+irm https://raw.githubusercontent.com/UniverLab/texforge/main/scripts/install.ps1 | iex
+```
+
+This downloads a precompiled binary — no Rust toolchain required. Tectonic
+(the LaTeX engine) is installed automatically on first build.
+
+The installer accepts environment variables:
+
+```bash
+# Pin a specific version
+VERSION=0.1.0 curl -fsSL https://raw.githubusercontent.com/UniverLab/texforge/main/scripts/install.sh | sh
+
+# Install to a custom directory
+INSTALL_DIR=/usr/local/bin curl -fsSL https://raw.githubusercontent.com/UniverLab/texforge/main/scripts/install.sh | sh
+```
+
+```powershell
+# Pin a specific version (PowerShell)
+$env:VERSION="0.1.0"; irm https://raw.githubusercontent.com/UniverLab/texforge/main/scripts/install.ps1 | iex
+```
+
+## Via cargo
+
+```bash
+cargo install texforge
+```
+
+Available on [crates.io](https://crates.io/crates/texforge).
+
+## From source
+
+```bash
+git clone https://github.com/UniverLab/texforge.git
+cd texforge
+cargo build --release
+# Binary at target/release/texforge
+```
+
+## GitHub Releases
+
+Precompiled binaries for Linux x86_64, macOS x86_64/ARM64 and Windows
+x86_64 are published on the
+[Releases](https://github.com/UniverLab/texforge/releases) page.
+
+## Platform support
+
+| Platform | Architecture | Status |
+|---|---|---|
+| Linux | x86_64 | ✅ |
+| macOS | x86_64 | ✅ |
+| macOS | ARM64 (Apple Silicon) | ✅ |
+| Windows | x86_64 | ✅ |
+
+## Uninstall
+
+```bash
+rm -f ~/.local/bin/texforge # texforge binary
+rm -rf ~/.texforge/ # tectonic engine + cached templates
+```
diff --git a/docs/linting-and-formatting.md b/docs/linting-and-formatting.md
new file mode 100644
index 0000000..d8e5316
--- /dev/null
+++ b/docs/linting-and-formatting.md
@@ -0,0 +1,51 @@
+---
+title: Linting & Formatting
+description: Static analysis with texforge check and canonical style with texforge fmt.
+order: 8
+---
+
+# Linting & Formatting
+
+## Linter — `texforge check`
+
+Runs static analysis without compiling:
+
+| Check | What it verifies |
+|---|---|
+| `\input{file}` | referenced file exists |
+| `\includegraphics{img}` | image exists |
+| `\cite{key}` | key exists in the `.bib` file |
+| `\ref{label}` / `\label{label}` | cross-reference consistency |
+| `\begin{env}` / `\end{env}` | no unclosed environments |
+
+Errors come with file, line and a suggestion:
+
+```
+ERROR [main.tex:47]
+ \includegraphics{missing.png} — file not found
+
+ERROR [main.tex:12]
+ \cite{smith2020} — key not found in .bib
+
+ERROR [main.tex:23]
+ \begin{figure} never closed
+ suggestion: Add \end{figure}
+```
+
+## Formatter — `texforge fmt`
+
+Applies opinionated formatting inspired by `rustfmt`:
+
+- Consistent indentation (2 spaces) inside environments
+- Collapsed multiple blank lines
+- Aligned `\begin{}` / `\end{}` blocks
+
+One canonical output regardless of input style — git diffs stay clean.
+
+```bash
+texforge fmt # format in place
+texforge fmt --check # check without modifying (CI-friendly)
+```
+
+`fmt --check` exits non-zero when files would change, which makes it easy
+to enforce formatting in CI.
diff --git a/docs/quickstart.md b/docs/quickstart.md
new file mode 100644
index 0000000..804245b
--- /dev/null
+++ b/docs/quickstart.md
@@ -0,0 +1,65 @@
+---
+title: Quick Start
+description: From zero to PDF in two commands.
+order: 3
+---
+
+# Quick Start
+
+## New project
+
+```bash
+texforge new my-thesis
+cd my-thesis
+texforge build
+```
+
+That's it: `my-thesis.pdf` is ready in the project root. On the very first build texforge
+downloads Tectonic (the LaTeX engine) automatically — no TeX distribution
+needed.
+
+## Interactive wizard
+
+If you prefer a guided flow, `texforge init` auto-detects the context:
+
+- If a `.tex` file with `\documentclass` is found in the current
+ directory, it **migrates the existing project**: asks for title and
+ author and generates `project.toml`.
+- Otherwise it **guides the creation of a new project**: asks for name
+ and template.
+
+```bash
+# Existing LaTeX project
+cd my-existing-thesis/
+texforge init
+
+# Empty directory
+mkdir my-new-doc && cd my-new-doc
+texforge init
+```
+
+## The everyday loop
+
+```bash
+texforge check # lint: missing files, broken refs, unclosed envs
+texforge fmt # normalize formatting
+texforge build # compile to .pdf in the project root
+texforge build --watch # rebuild automatically while you edit
+```
+
+## Project layout
+
+A texforge project is a regular LaTeX project plus a `project.toml`
+manifest:
+
+```
+my-thesis/
+├── project.toml # document metadata and build entry point
+├── main.tex
+├── sections/ # chapters, sections (depends on template)
+├── bib/ # bibliography (depends on template)
+└── my-thesis.pdf # generated by texforge build
+```
+
+See [Configuration](configuration.md) for the `project.toml` format and
+[Templates](templates.md) for the available starting points.
diff --git a/docs/templates.md b/docs/templates.md
new file mode 100644
index 0000000..98fd8ee
--- /dev/null
+++ b/docs/templates.md
@@ -0,0 +1,53 @@
+---
+title: Templates
+description: Install, manage and validate LaTeX templates from the registry.
+order: 6
+---
+
+# Templates
+
+Templates are managed through the
+[texforge-templates](https://github.com/UniverLab/texforge-templates)
+registry. The `general` template is embedded in the binary, so creating a
+project always works — even offline.
+
+## Commands
+
+```bash
+texforge template list # installed + available in the registry
+texforge template list --installed # only locally installed templates
+texforge template add # download a template from the registry
+texforge template remove # remove an installed template
+texforge template validate # verify template compatibility
+```
+
+Installed templates are cached under `~/.texforge/templates/`.
+
+## Using a template
+
+```bash
+texforge new my-doc -t apa-general
+```
+
+Or pick one interactively with `texforge init`.
+
+## Placeholders
+
+Templates declare placeholders (title, author, institution, …) in their
+manifest. When you create a project, texforge fills them from your answers
+and from your [global configuration](configuration.md) — so you don't
+retype your name and institution for every document.
+
+## Writing your own template
+
+A template is a directory with a manifest describing its files and
+placeholders:
+
+- `id`, `version`, `display_name`, `description`
+- `files` — include/exclude globs
+- `placeholders` — name, type, description, required, default, choices
+- `post_generate` — optional scripts to run after generation
+
+The easiest way to start is to copy an existing template from the
+[texforge-templates](https://github.com/UniverLab/texforge-templates)
+repository and run `texforge template validate` against it.
diff --git a/examples/texforge-capabilites/bib/references.bib b/examples/texforge-capabilites/bib/references.bib
new file mode 100644
index 0000000..ac29df6
--- /dev/null
+++ b/examples/texforge-capabilites/bib/references.bib
@@ -0,0 +1,26 @@
+@article{example,
+ author = {John Doe},
+ title = {Título del Artículo de Ejemplo},
+ journal = {Nombre de la Revista},
+ year = {2023},
+ volume = {1},
+ number = {1},
+ pages = {1--10},
+ doi = {10.1000/j.abc},
+}
+
+@book{example2,
+ author = {Jane Smith},
+ title = {Título del Libro de Ejemplo},
+ publisher = {Editorial de Ejemplo},
+ year = {2022},
+ isbn = {978-3-16-148410-0},
+}
+
+@misc{example3,
+ author = {Blog Author},
+ title = {Título del Artículo de Blog},
+ howpublished = {\url{https://www.example.com/blog/article}},
+ year = {2023},
+ note = {Accessed: 2023-01-01},
+}
diff --git a/examples/texforge-capabilites/main.tex b/examples/texforge-capabilites/main.tex
new file mode 100644
index 0000000..4239fc7
--- /dev/null
+++ b/examples/texforge-capabilites/main.tex
@@ -0,0 +1,304 @@
+% General Article Template — Texforge Capabilities Demo
+\documentclass[a4paper,12pt]{article}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[spanish]{babel}
+\usepackage{amsmath,amssymb}
+\usepackage{float}
+\usepackage{graphicx}
+\usepackage{hyperref}
+\usepackage{geometry}
+\usepackage{fancyhdr}
+\usepackage{booktabs}
+\usepackage{enumitem}
+\usepackage{listings}
+\usepackage{xcolor}
+
+\geometry{margin=2.5cm}
+
+\pagestyle{fancy}
+\fancyhf{}
+\cfoot{\thepage}
+
+\lstset{
+ basicstyle=\ttfamily\small,
+ breaklines=true,
+ frame=single,
+ backgroundcolor=\color{gray!10}
+}
+
+\title{Demostración de Capacidades de Texforge}
+\author{Jheison M}
+\date{\today}
+
+\begin{document}
+
+ \maketitle
+
+ \begin{abstract}
+ Este documento demuestra las capacidades principales de \textbf{texforge},
+ un compilador LaTeX que utiliza tectonic como motor interno, eliminando la
+ necesidad de instalar TeX Live o MiKTeX. Se presentan diagramas embebidos
+ (Mermaid, Graphviz y D2), citas bibliográficas, referencias cruzadas,
+ matemáticas, listados de código, tablas y más.
+ \end{abstract}
+
+ \tableofcontents
+ \newpage
+
+ % -------------------------------------------------------
+ \section{Introducción}\label{sec:intro}
+
+ Texforge simplifica el flujo de trabajo académico al compilar documentos
+ LaTeX directamente a PDF sin distribuciones externas~\cite{example}. En
+ esta sección se describen los antecedentes y motivaciones del proyecto.
+
+ \subsection{Antecedentes}
+
+ La edición de documentos académicos en \LaTeX{} requiere tradicionalmente
+ instalaciones pesadas como TeX Live o MiKTeX. Texforge elimina esa
+ barrera~\cite{example2}, ofreciendo una experiencia de línea de comandos
+ ligera y moderna.
+
+ \subsection{Objetivos}
+
+ Los objetivos de este documento son:
+
+ \begin{enumerate}[label=(\roman*)]
+ \item Demostrar diagramas embebidos en tres formatos distintos.
+ \item Mostrar la integración bibliográfica con BibTeX.
+ \item Ejemplificar referencias cruzadas entre secciones.
+ \item Presentar ecuaciones matemáticas complejas.
+ \item Incluir listados de código fuente.
+ \end{enumerate}
+
+ % -------------------------------------------------------
+ \section{Diagramas Embebidos}\label{sec:diagramas}
+
+ Texforge renderiza diagramas directamente desde el código fuente LaTeX
+ sin herramientas externas como Inkscape o Node.js.
+
+ \subsection{Mermaid}
+
+ El siguiente diagrama de secuencia muestra la interacción entre los
+ componentes de Texforge:
+
+ \begin{mermaid}[caption=Secuencia de compilación de Texforge, height=10cm, pos=t]
+ sequenceDiagram
+ actor User as Usuario
+ participant CLI as texforge
+ participant PRE as Pre-procesador
+ participant TEC as tectonic
+
+ User->>CLI: texforge build
+ CLI->>PRE: parsea .tex y detecta diagramas
+ loop Diagramas embebidos
+ PRE->>CLI: Mermaid / Graphviz / D2
+ CLI-->>PRE: imagen PNG generada
+ end
+ CLI->>TEC: main.tex + imágenes
+ TEC-->>User: PDF final
+ \end{mermaid}
+
+ \subsection{Graphviz / DOT}
+
+ También se pueden crear diagramas directed-Graph con Graphviz:
+
+ \begin{graphviz}[caption=Arquitectura de Texforge, width=0.8\linewidth, pos=t]
+ digraph G {
+ rankdir=LR
+ node [shape=box style="rounded,filled" fillcolor="#E8F4FD"]
+
+ CLI [label="CLI\ntexforge"]
+ Parser [label="Parser\nLaTeX"]
+ MermaidEngine [label="Mermaid\nRenderer"]
+ GraphvizEngine [label="Graphviz\nRenderer"]
+ D2Engine [label="D2\nRenderer"]
+ Tectonic [label="tectonic\nEngine"]
+ PDF [label="Output\nPDF"]
+
+ CLI -> Parser
+ Parser -> MermaidEngine
+ Parser -> GraphvizEngine
+ Parser -> D2Engine
+ MermaidEngine -> Tectonic
+ GraphvizEngine -> Tectonic
+ D2Engine -> Tectonic
+ Tectonic -> PDF
+ }
+ \end{graphviz}
+
+ \subsection{D2}
+
+ El diagrama D2 es otro formato soportado nativamente:
+
+ \begin{d2}[caption=Pipeline de renderizado, height=14cm, pos=t]
+ source: "Código LaTeX" {
+ shape: document
+ }
+ preprocessor: "Pre-procesador" {
+ shape: hexagon
+ }
+ engines: "Engines de diagramas" {
+ shape: package
+ }
+ pdf: "PDF final" {
+ shape: page
+ }
+
+ source -> preprocessor: "lex & parse"
+ preprocessor -> engines: "diagramas detectados"
+ engines -> pdf: "tectonic"
+ \end{d2}
+
+ % -------------------------------------------------------
+ \section{Matemáticas}\label{sec:matematicas}
+
+ \subsection{Ecuaciones en línea}
+
+ La fórmula cuadrática se expresa como $x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}$.
+
+ \subsection{Ecuaciones numeradas}
+
+ \begin{equation}\label{eq:gauss}
+ \int_{-\infty}^{\infty} e^{-x^2}\,dx = \sqrt{\pi}
+ \end{equation}
+
+ \begin{equation}\label{eq:euler}
+ e^{i\pi} + 1 = 0
+ \end{equation}
+
+ Como se demostró en la Ecuación~\ref{eq:gauss}, la integral de Gauss
+ tiene un valor exacto conocido.
+
+ \subsection{Matrices}
+
+ \begin{equation}\label{eq:matriz}
+ \mathbf{A} = \begin{pmatrix}
+ a_{11} & a_{12} & \cdots & a_{1n} \\
+ a_{21} & a_{22} & \cdots & a_{2n} \\
+ \vdots & \vdots & \ddots & \vdots \\
+ a_{n1} & a_{n2} & \cdots & a_{nn}
+ \end{pmatrix}
+ \end{equation}
+
+ % -------------------------------------------------------
+ \section{Citas Bibliográficas}\label{sec:bib}
+
+ Texforge gestiona automáticamente las referencias BibTeX. A continuación
+ se presentan tres tipos de cita:
+
+ \begin{itemize}
+ \item Artículos de revista~\cite{example}
+ \item Libros~\cite{example2}
+ \item Recursos en línea~\cite{example3}
+ \end{itemize}
+
+ La sección~\ref{sec:matematicas} muestra el uso de referencias cruzadas,
+ mientras que la sección~\ref{sec:diagramas} describe los formatos de
+ diagramas disponibles.
+
+ % -------------------------------------------------------
+ \section{Listados de Código}\label{sec:codigo}
+
+ \subsection{Python}
+
+ \begin{lstlisting}[language=Python, caption={Ejemplo de función en Python}]
+import numpy as np
+
+def integrar_gauss(n_puntos=1000):
+ """Aproxima la integral de Gauss por cuadratura."""
+ x = np.linspace(-10, 10, n_puntos)
+ dx = x[1] - x[0]
+ y = np.exp(-x**2)
+ return np.sum(y) * dx
+
+if __name__ == "__main__":
+ resultado = integrar_gauss()
+ print(f"Integral ≈ {resultado:.6f}")
+ \end{lstlisting}
+
+ \subsection{LaTeX}
+
+ \begin{lstlisting}[language={[LaTeX]TeX}, caption={Estructura básica de Texforge}]
+\documentclass{article}
+\usepackage{graphicx}
+
+\begin{document}
+\maketitle
+
+\begin{mermaid}
+flowchart LR
+ A --> B --> C
+\end{mermaid}
+
+\bibliographystyle{plain}
+\bibliography{refs}
+\end{document}
+ \end{lstlisting}
+
+ % -------------------------------------------------------
+ \section{Tablas}\label{sec:tablas}
+
+ \begin{table}[H]
+ \centering
+ \caption{Comparación de motores de renderizado de diagramas}
+ \label{tab:motores}
+ \begin{tabular}{@{}llcc@{}}
+ \toprule
+ \textbf{Formato} & \textbf{Motor} & \textbf{Externo?} & \textbf{Velocidad} \\
+ \midrule
+ Mermaid & Rust puro & No & Rápido \\
+ Graphviz & layout-rs & No & Rápido \\
+ D2 & d2-little & No & Rápido \\
+ \bottomrule
+ \end{tabular}
+ \end{table}
+
+ Como se muestra en la Tabla~\ref{tab:motores}, todos los motores son
+ embebidos y no requieren binarios externos.
+
+ % -------------------------------------------------------
+ \section{Comandos de Texforge}\label{sec:comandos}
+
+ \begin{table}[H]
+ \centering
+ \caption{Resumen de comandos principales}
+ \label{tab:comandos}
+ \begin{tabular}{@{}lp{8cm}@{}}
+ \toprule
+ \textbf{Comando} & \textbf{Descripción} \\
+ \midrule
+ \texttt{texforge new} & Crea un proyecto nuevo con un template. \\
+ \texttt{texforge init} & Wizard interactivo para proyectos existentes. \\
+ \texttt{texforge build} & Compila \texttt{main.tex} a PDF en \texttt{build/}. \\
+ \texttt{texforge check} & Linter estático: valida archivos, citas y labels. \\
+ \texttt{texforge fmt} & Formatea archivos \texttt{.tex}. \\
+ \texttt{texforge clean} & Elimina el directorio \texttt{build/}. \\
+ \texttt{texforge template} & Gestiona templates instalados o remotos. \\
+ \bottomrule
+ \end{tabular}
+ \end{table}
+
+ % -------------------------------------------------------
+ \section{Conclusión}\label{sec:conclusion}
+
+ Texforge demuestra ser una herramienta completa para la edición de
+ documentos académicos en \LaTeX{}. Sus ventajas principales son:
+
+ \begin{itemize}
+ \item \textbf{Sin dependencias externas:} no requiere TeX Live ni MiKTeX.
+ \item \textbf{Diagramas embebidos:} Mermaid, Graphviz y D2 renderizados en Rust puro.
+ \item \textbf{Linter integrado:} detección temprana de errores con \texttt{texforge check}.
+ \item \textbf{Templates:} soporte para APA, IEEE, cartas y documentos generales.
+ \end{itemize}
+
+ Como se demostró en este documento, la combinación de diagramas
+ (Sección~\ref{sec:diagramas}), ecuaciones (Sección~\ref{sec:matematicas}),
+ citas (Sección~\ref{sec:bib}) y código (Sección~\ref{sec:codigo}) permite
+ crear publicaciones académicas de alta calidad con un mínimo esfuerzo.
+
+ \bibliographystyle{plain}
+ \bibliography{bib/references}
+
+\end{document}
diff --git a/examples/texforge-capabilites/project.toml b/examples/texforge-capabilites/project.toml
new file mode 100644
index 0000000..f8cd4d5
--- /dev/null
+++ b/examples/texforge-capabilites/project.toml
@@ -0,0 +1,8 @@
+[document]
+title = "texforge-capabilites"
+author = "Jheison M"
+template = "general"
+
+[build]
+entry = "main.tex"
+bibliography = "bib/references.bib"
diff --git a/examples/texforge-capabilites/sections/body.tex b/examples/texforge-capabilites/sections/body.tex
new file mode 100644
index 0000000..e14920f
--- /dev/null
+++ b/examples/texforge-capabilites/sections/body.tex
@@ -0,0 +1 @@
+% Contenido del documento — contenido principal en main.tex
diff --git a/examples/texforge-capabilites/texforge-capabilites.pdf b/examples/texforge-capabilites/texforge-capabilites.pdf
new file mode 100644
index 0000000..ffa94c3
Binary files /dev/null and b/examples/texforge-capabilites/texforge-capabilites.pdf differ
diff --git a/scripts/install.ps1 b/scripts/install.ps1
index 40eb8f1..a7eabaf 100644
--- a/scripts/install.ps1
+++ b/scripts/install.ps1
@@ -55,6 +55,26 @@ try {
Fail "Download failed: $_`nURL: $Url"
}
+# --- verify checksum ---
+# Match against SHA256SUMS.txt from the same release. Missing sums file (older
+# releases) -> skip; a present-but-mismatched checksum is fatal.
+$SumsUrl = "https://github.com/$Repo/releases/download/$Tag/SHA256SUMS.txt"
+$SumsOk = $false
+try {
+ Invoke-WebRequest -Uri $SumsUrl -OutFile "$Tmp\SHA256SUMS.txt" -UseBasicParsing
+ $SumsOk = $true
+} catch {
+ Info "checksum" "SHA256SUMS.txt not found for $Tag - skipping verification"
+}
+if ($SumsOk) {
+ $line = Select-String -Path "$Tmp\SHA256SUMS.txt" -Pattern ([regex]::Escape($Archive)) | Select-Object -First 1
+ if (-not $line) { Fail "No checksum listed for $Archive in SHA256SUMS.txt" }
+ $expected = ($line.Line -split '\s+')[0].ToLower()
+ $actual = (Get-FileHash "$Tmp\$Archive" -Algorithm SHA256).Hash.ToLower()
+ if ($actual -ne $expected) { Fail "Checksum mismatch for $Archive (expected $expected, got $actual)" }
+ Info "checksum" "verified"
+}
+
# --- extract ---
Expand-Archive -Path "$Tmp\$Archive" -DestinationPath $Tmp -Force
$extracted = Join-Path $Tmp "texforge.exe"
@@ -76,6 +96,29 @@ if ($userPath -notlike "*$InstallDir*") {
# --- cleanup ---
Remove-Item $Tmp -Recurse -Force
+# --- install the texforge agent skill (optional) ---
+# Teaches AI agents how to drive texforge. Skipped when npx is unavailable or
+# $env:SKIP_SKILL is set; a failure here never fails the binary install above.
+$Skill = "texforge"
+$SkillsRepo = "https://github.com/UniverLab/skills"
+if ($env:SKIP_SKILL) {
+ Info "skill" "skipped (SKIP_SKILL set)"
+} elseif (Get-Command npx -ErrorAction SilentlyContinue) {
+ Info "skill" "adding '$Skill' (npx skills add)"
+ try {
+ & npx -y skills add $SkillsRepo --skill $Skill
+ if ($LASTEXITCODE -eq 0) {
+ Info "skill" "installed"
+ } else {
+ Info "skill" "skipped - add later with: npx skills add $SkillsRepo --skill $Skill"
+ }
+ } catch {
+ Info "skill" "skipped - add later with: npx skills add $SkillsRepo --skill $Skill"
+ }
+} else {
+ Info "skill" "npx not found - add later with: npx skills add $SkillsRepo --skill $Skill"
+}
+
# --- verify ---
$ver = & "$InstallDir\texforge.exe" --version 2>$null
Info "done" $ver
diff --git a/scripts/install.sh b/scripts/install.sh
index f75e20a..57613a8 100644
--- a/scripts/install.sh
+++ b/scripts/install.sh
@@ -59,6 +59,29 @@ info "download" "$URL"
HTTP_CODE=$(curl -fSL -w '%{http_code}' -o "$TMPDIR/$ARCHIVE" "$URL" 2>/dev/null) || true
[ "$HTTP_CODE" = "200" ] || error "Download failed (HTTP $HTTP_CODE). Check that $TAG exists for $TARGET at:\n $URL"
+# --- verify checksum ---
+# Match against SHA256SUMS.txt from the same release. Missing sums file (older
+# releases) or no sha256 tool → skip; a present-but-mismatched checksum is fatal.
+SUMS_URL="https://github.com/$REPO/releases/download/${TAG}/SHA256SUMS.txt"
+if curl -fsSL -o "$TMPDIR/SHA256SUMS.txt" "$SUMS_URL" 2>/dev/null; then
+ EXPECTED=$(awk -v f="$ARCHIVE" '$2 == f { print $1 }' "$TMPDIR/SHA256SUMS.txt" | head -1)
+ [ -n "$EXPECTED" ] || error "No checksum listed for $ARCHIVE in SHA256SUMS.txt"
+ if command -v sha256sum >/dev/null 2>&1; then
+ ACTUAL=$(sha256sum "$TMPDIR/$ARCHIVE" | awk '{ print $1 }')
+ elif command -v shasum >/dev/null 2>&1; then
+ ACTUAL=$(shasum -a 256 "$TMPDIR/$ARCHIVE" | awk '{ print $1 }')
+ else
+ ACTUAL=""
+ info "checksum" "no sha256 tool found — skipping verification"
+ fi
+ if [ -n "$ACTUAL" ]; then
+ [ "$ACTUAL" = "$EXPECTED" ] || error "Checksum mismatch for $ARCHIVE (expected $EXPECTED, got $ACTUAL)"
+ info "checksum" "verified"
+ fi
+else
+ info "checksum" "SHA256SUMS.txt not found for $TAG — skipping verification"
+fi
+
# --- extract ---
tar xzf "$TMPDIR/$ARCHIVE" -C "$TMPDIR"
[ -f "$TMPDIR/$BINARY" ] || error "Binary not found in archive"
@@ -97,7 +120,29 @@ if [ -n "$PATHS_TO_ADD" ]; then
fi
# ============================================================
-# 3. Verify
+# 3. Install the texforge agent skill (optional)
+# ============================================================
+# Teaches AI agents how to drive texforge. Skipped when npx is unavailable or
+# SKIP_SKILL is set; a failure here never fails the binary install above.
+
+SKILL="texforge"
+SKILLS_REPO="https://github.com/UniverLab/skills"
+
+if [ -n "${SKIP_SKILL:-}" ]; then
+ info "skill" "skipped (SKIP_SKILL set)"
+elif command -v npx >/dev/null 2>&1; then
+ info "skill" "adding '$SKILL' (npx skills add)"
+ if npx -y skills add "$SKILLS_REPO" --skill "$SKILL" /dev/null || echo "$BINARY installed")"
diff --git a/src/cli/mod.rs b/src/cli/mod.rs
index 7d38474..10cac5b 100644
--- a/src/cli/mod.rs
+++ b/src/cli/mod.rs
@@ -60,11 +60,11 @@ enum Commands {
#[derive(Subcommand)]
enum TemplateAction {
- /// List available templates
+ /// List available templates (installed + remote registry by default)
List {
- /// Also show templates available in the remote registry
+ /// Only show locally installed templates (skip the remote registry)
#[arg(long)]
- all: bool,
+ local: bool,
},
/// Add a template from URL or registry
Add { source: String },
@@ -90,7 +90,7 @@ impl Cli {
Commands::Fmt { check } => commands::fmt::execute(check),
Commands::Check => commands::check::execute(),
Commands::Template { action } => match action {
- TemplateAction::List { all } => commands::template::list(all),
+ TemplateAction::List { local } => commands::template::list(!local),
TemplateAction::Add { source } => commands::template::add(&source),
TemplateAction::Remove { name } => commands::template::remove(&name),
TemplateAction::Validate { name } => commands::template::validate(&name),
diff --git a/src/commands/build.rs b/src/commands/build.rs
index fe4adbb..c992874 100644
--- a/src/commands/build.rs
+++ b/src/commands/build.rs
@@ -1,5 +1,6 @@
//! `texforge build` command implementation.
+use std::path::Path;
use std::sync::mpsc;
use std::time::Duration;
@@ -10,21 +11,36 @@ use crate::commands::init::BANNER;
use crate::compiler;
use crate::diagrams;
use crate::domain::project::Project;
+use crate::utils::sanitize_filename;
-/// Compile project to PDF.
+/// Compile project to PDF using a temp directory, output named after the document title.
pub fn execute() -> Result<()> {
let project = Project::load()?;
- println!("Building project: {}", project.config.documento.titulo);
- std::fs::create_dir_all(project.root.join("build"))?;
- diagrams::process(&project.root, &project.config.compilacion.entry)?;
- let build_dir = project.root.join("build");
- let entry_filename = std::path::Path::new(&project.config.compilacion.entry)
+ let titulo = &project.config.document.title;
+ println!("Building project: {titulo}");
+
+ let temp_dir = tempfile::tempdir()?;
+ let build_dir = temp_dir.path();
+ println!(" ◇ temp: {}", build_dir.display());
+
+ diagrams::process(&project.root, &project.config.build.entry, build_dir)?;
+ let entry_filename = Path::new(&project.config.build.entry)
.file_name()
.map(|n| n.to_string_lossy().to_string())
- .unwrap_or(project.config.compilacion.entry.clone());
- compiler::compile(&build_dir, &entry_filename)?;
- let pdf_name = std::path::Path::new(&project.config.compilacion.entry).with_extension("pdf");
- println!(" ◇ build/{}", pdf_name.display());
+ .unwrap_or_else(|| project.config.build.entry.clone());
+ compiler::compile(build_dir, &entry_filename)?;
+
+ let pdf_name = format!("{}.pdf", sanitize_filename(titulo));
+ let pdf_dest = project.root.join(&pdf_name);
+ let pdf_src = build_dir.join(
+ Path::new(&project.config.build.entry)
+ .with_extension("pdf")
+ .file_name()
+ .unwrap(),
+ );
+ std::fs::copy(&pdf_src, &pdf_dest)?;
+ println!(" ◇ {}", pdf_dest.display());
+
Ok(())
}
@@ -32,13 +48,15 @@ pub fn execute() -> Result<()> {
pub fn watch(delay_secs: u64) -> Result<()> {
let project = Project::load()?;
let debounce = Duration::from_secs(delay_secs);
- // Ignore new events for this long after a build completes
let cooldown = Duration::from_secs(2);
- print_watch_header(&project.config.documento.titulo, delay_secs);
+ print_watch_header(&project.config.document.title, delay_secs);
+
+ let temp_dir = tempfile::tempdir()?;
+ let build_dir = temp_dir.path().to_path_buf();
let started = std::time::Instant::now();
- let result = run_build(&project);
+ let result = run_build(&project, &build_dir);
redraw_status(&result, 1, started);
let (tx, rx) = mpsc::channel();
@@ -50,7 +68,6 @@ pub fn watch(delay_secs: u64) -> Result<()> {
watcher.watch(&project.root, RecursiveMode::Recursive)?;
- let build_dir = project.root.join("build");
let mut pending = false;
let mut last_event = std::time::Instant::now();
let mut last_build = std::time::Instant::now();
@@ -74,7 +91,6 @@ pub fn watch(delay_secs: u64) -> Result<()> {
Err(_) => break,
}
- // Redraw timer every second even without a build
if last_tick.elapsed() >= Duration::from_secs(1) {
last_tick = std::time::Instant::now();
redraw_status(&last_result, build_count, started);
@@ -83,7 +99,7 @@ pub fn watch(delay_secs: u64) -> Result<()> {
if pending && last_event.elapsed() >= debounce {
pending = false;
build_count += 1;
- last_result = run_build(&project);
+ last_result = run_build(&project, &build_dir);
last_build = std::time::Instant::now();
redraw_status(&last_result, build_count, started);
}
@@ -99,7 +115,6 @@ fn print_watch_header(title: &str, delay_secs: u64) {
}
fn redraw_status(result: &WatchResult, build_count: u32, started: std::time::Instant) {
- // Move to line 15 (just after header), clear from there down, redraw
print!("\x1B[15;0H\x1B[J");
let e = started.elapsed().as_secs();
let session = format!("{:02}:{:02}:{:02}", e / 3600, (e % 3600) / 60, e % 60);
@@ -107,7 +122,7 @@ fn redraw_status(result: &WatchResult, build_count: u32, started: std::time::Ins
println!(" session \x1B[36m{session}\x1B[0m builds \x1B[36m{build_count}\x1B[0m");
println!();
match result {
- WatchResult::Ok(pdf) => println!(" \x1B[32mbuild/{pdf} ok\x1B[0m"),
+ WatchResult::Ok(pdf) => println!(" \x1B[32m{pdf} ok\x1B[0m"),
WatchResult::Err(err) => {
println!(" \x1B[31merror:\x1B[0m");
for line in err.lines() {
@@ -124,20 +139,29 @@ enum WatchResult {
Err(String),
}
-fn run_build(project: &Project) -> WatchResult {
- let _ = std::fs::create_dir_all(project.root.join("build"));
- if let Err(e) = diagrams::process(&project.root, &project.config.compilacion.entry) {
+fn run_build(project: &Project, build_dir: &Path) -> WatchResult {
+ let _ = std::fs::create_dir_all(build_dir);
+ if let Err(e) = diagrams::process(&project.root, &project.config.build.entry, build_dir) {
return WatchResult::Err(e.to_string());
}
- let build_dir = project.root.join("build");
- let entry_filename = std::path::Path::new(&project.config.compilacion.entry)
+ let entry_filename = Path::new(&project.config.build.entry)
.file_name()
.map(|n| n.to_string_lossy().to_string())
- .unwrap_or(project.config.compilacion.entry.clone());
- match compiler::compile(&build_dir, &entry_filename) {
+ .unwrap_or_else(|| project.config.build.entry.clone());
+ match compiler::compile(build_dir, &entry_filename) {
Ok(()) => {
- let pdf = std::path::Path::new(&project.config.compilacion.entry).with_extension("pdf");
- WatchResult::Ok(pdf.display().to_string())
+ let pdf_name = format!("{}.pdf", sanitize_filename(&project.config.document.title));
+ let pdf_dest = project.root.join(&pdf_name);
+ let pdf_src = build_dir.join(
+ Path::new(&project.config.build.entry)
+ .with_extension("pdf")
+ .file_name()
+ .unwrap(),
+ );
+ match std::fs::copy(&pdf_src, &pdf_dest) {
+ Ok(_) => WatchResult::Ok(pdf_name),
+ Err(e) => WatchResult::Err(e.to_string()),
+ }
}
Err(e) => WatchResult::Err(e.to_string()),
}
diff --git a/src/commands/check.rs b/src/commands/check.rs
index 2122f05..044b54e 100644
--- a/src/commands/check.rs
+++ b/src/commands/check.rs
@@ -9,12 +9,12 @@ use crate::linter;
pub fn execute() -> Result<()> {
let project = Project::load()?;
- println!("Checking project: {}", project.config.documento.titulo);
+ println!("Checking project: {}", project.config.document.title);
let errors = linter::lint(
&project.root,
- &project.config.compilacion.entry,
- project.config.compilacion.bibliografia.as_deref(),
+ &project.config.build.entry,
+ project.config.build.bibliography.as_deref(),
)?;
if errors.is_empty() {
diff --git a/src/commands/clean.rs b/src/commands/clean.rs
index a146ae1..c010dd9 100644
--- a/src/commands/clean.rs
+++ b/src/commands/clean.rs
@@ -3,18 +3,32 @@
use anyhow::Result;
use crate::domain::project::Project;
+use crate::utils::sanitize_filename;
-/// Remove the build/ directory.
+/// Remove generated PDF files and the legacy build/ directory from the project root.
pub fn execute() -> Result<()> {
let project = Project::load()?;
- let build_dir = project.root.join("build");
+ let titulo = &project.config.document.title;
+ let pdf_name = format!("{}.pdf", sanitize_filename(titulo));
+ let pdf_path = project.root.join(&pdf_name);
+ let legacy_build = project.root.join("build");
- if !build_dir.exists() {
- println!("Nothing to clean.");
- return Ok(());
+ let mut cleaned = false;
+
+ if pdf_path.exists() {
+ std::fs::remove_file(&pdf_path)?;
+ println!(" ◇ {pdf_name} removed");
+ cleaned = true;
+ }
+
+ if legacy_build.is_dir() {
+ std::fs::remove_dir_all(&legacy_build)?;
+ println!(" ◇ build/ removed");
+ cleaned = true;
}
- std::fs::remove_dir_all(&build_dir)?;
- println!(" ◇ build/ removed");
+ if !cleaned {
+ println!("Nothing to clean.");
+ }
Ok(())
}
diff --git a/src/commands/fmt.rs b/src/commands/fmt.rs
index ef6fe0e..b7bfbb1 100644
--- a/src/commands/fmt.rs
+++ b/src/commands/fmt.rs
@@ -1,37 +1,33 @@
//! `texforge fmt` command implementation.
+use std::path::Path;
+
use anyhow::Result;
use crate::domain::project::Project;
use crate::formatter;
use crate::utils;
-/// Format .tex files.
+/// Format `.tex` and `.bib` files.
pub fn execute(check: bool) -> Result<()> {
let project = Project::load()?;
- let files = utils::find_tex_files(&project.root)?;
- if files.is_empty() {
- println!("No .tex files found");
+ let tex_files = utils::find_tex_files(&project.root)?;
+ let bib_files = utils::find_bib_files(&project.root)?;
+ let total = tex_files.len() + bib_files.len();
+
+ if total == 0 {
+ println!("No .tex or .bib files found");
return Ok(());
}
let mut unformatted = 0;
- for file in &files {
- let content = std::fs::read_to_string(file)?;
- let formatted = formatter::format(&content);
-
- if content != formatted {
- let rel = file.strip_prefix(&project.root).unwrap_or(file).display();
- if check {
- println!(" ✗ {}", rel);
- unformatted += 1;
- } else {
- std::fs::write(file, &formatted)?;
- println!(" formatted {}", rel);
- }
- }
+ for file in &tex_files {
+ unformatted += format_one(file, &project.root, check, formatter::format)?;
+ }
+ for file in &bib_files {
+ unformatted += format_one(file, &project.root, check, formatter::format_bib)?;
}
if check && unformatted > 0 {
@@ -39,11 +35,30 @@ pub fn execute(check: bool) -> Result<()> {
"{} file(s) need formatting — run 'texforge fmt'",
unformatted
);
- } else if !check {
- println!(" ◇ {} file(s) checked", files.len());
- } else {
+ } else if check {
println!(" ◇ All files formatted correctly");
+ } else {
+ println!(" ◇ {} file(s) checked", total);
}
Ok(())
}
+
+/// Format a single file, returning 1 if it needed formatting (else 0).
+fn format_one(file: &Path, root: &Path, check: bool, fmt: fn(&str) -> String) -> Result {
+ let content = std::fs::read_to_string(file)?;
+ let formatted = fmt(&content);
+
+ if content == formatted {
+ return Ok(0);
+ }
+
+ let rel = file.strip_prefix(root).unwrap_or(file).display();
+ if check {
+ println!(" ✗ {}", rel);
+ } else {
+ std::fs::write(file, &formatted)?;
+ println!(" formatted {}", rel);
+ }
+ Ok(1)
+}
diff --git a/src/commands/init.rs b/src/commands/init.rs
index caa3dc0..5b958dc 100644
--- a/src/commands/init.rs
+++ b/src/commands/init.rs
@@ -49,23 +49,23 @@ fn migrate(root: &Path) -> Result<()> {
let entry = detect_entry(root).unwrap_or_else(|| "main.tex".to_string());
let bib = detect_bib(root);
- let titulo = Text::new("Document title")
+ let title = Text::new("Document title")
.with_default(
root.file_name()
.and_then(|n| n.to_str())
- .unwrap_or("documento"),
+ .unwrap_or("document"),
)
.prompt()?;
- let autor = Text::new("Author").with_default("Author").prompt()?;
+ let author = Text::new("Author").with_default("Author").prompt()?;
let bib_line = match &bib {
- Some(b) => format!("bibliografia = \"{}\"", b),
- None => "# bibliografia = \"refs.bib\"".to_string(),
+ Some(b) => format!("bibliography = \"{}\"", b),
+ None => "# bibliography = \"refs.bib\"".to_string(),
};
let project_toml = format!(
- "[documento]\ntitulo = \"{titulo}\"\nautor = \"{autor}\"\ntemplate = \"general\"\n\n[compilacion]\nentry = \"{entry}\"\n{bib_line}\n"
+ "[document]\ntitle = \"{title}\"\nauthor = \"{author}\"\ntemplate = \"general\"\n\n[build]\nentry = \"{entry}\"\n{bib_line}\n"
);
std::fs::write(root.join("project.toml"), &project_toml)?;
diff --git a/src/commands/new.rs b/src/commands/new.rs
index c2d152e..879f6ae 100644
--- a/src/commands/new.rs
+++ b/src/commands/new.rs
@@ -1,9 +1,12 @@
//! `texforge new` command implementation.
+use std::collections::HashMap;
use std::path::{Component, Path};
use anyhow::{Context, Result};
+use crate::manifest::TemplateManifest;
+use crate::placeholders::PlaceholderResolver;
use crate::templates;
/// Create a new project from a template.
@@ -24,6 +27,13 @@ pub fn execute(name: &str, template: Option<&str>) -> Result<()> {
let resolved = templates::resolve(template_name)?;
+ // Resolve any placeholders the template declares (defaults, project/user
+ // config). Missing values are left as-is rather than failing generation.
+ // The project name doubles as the document title unless overridden.
+ let mut cli_args = HashMap::new();
+ cli_args.insert("title".to_string(), name.to_string());
+ let values = resolve_placeholder_values(&resolved.files, cli_args);
+
// Create project directory and write all template files
for (rel_path, content) in &resolved.files {
// Skip template.toml — it's metadata, not a project file
@@ -34,20 +44,29 @@ pub fn execute(name: &str, template: Option<&str>) -> Result<()> {
if let Some(parent) = dest.parent() {
std::fs::create_dir_all(parent)?;
}
- std::fs::write(&dest, content)
- .with_context(|| format!("Failed to write {}", dest.display()))?;
+ // Substitute {{placeholder}} tokens in .tex files only — other files
+ // (code samples, images) are copied verbatim.
+ if rel_path.ends_with(".tex") {
+ let text = String::from_utf8_lossy(content);
+ let substituted = apply_substitutions(&text, &values);
+ std::fs::write(&dest, substituted)
+ } else {
+ std::fs::write(&dest, content)
+ }
+ .with_context(|| format!("Failed to write {}", dest.display()))?;
}
// Generate project.toml
+ let author = values.get("author").map_or("Author", String::as_str);
let project_toml = format!(
- r#"[documento]
-titulo = "{name}"
-autor = "Author"
+ r#"[document]
+title = "{name}"
+author = "{author}"
template = "{template_name}"
-[compilacion]
+[build]
entry = "main.tex"
-bibliografia = "bib/references.bib"
+bibliography = "bib/references.bib"
"#
);
std::fs::write(project_dir.join("project.toml"), project_toml)?;
@@ -63,6 +82,44 @@ bibliografia = "bib/references.bib"
Ok(())
}
+/// Resolve placeholder values from a template's manifest, if present.
+/// Returns an empty map for templates without a (valid) `template.toml` or
+/// without declared placeholders.
+fn resolve_placeholder_values(
+ files: &HashMap>,
+ cli_args: HashMap,
+) -> HashMap {
+ let mut values = HashMap::new();
+
+ let Some(toml_bytes) = files.get("template.toml") else {
+ return values;
+ };
+ let Ok(text) = std::str::from_utf8(toml_bytes) else {
+ return values;
+ };
+ let Ok(manifest) = TemplateManifest::from_str(text) else {
+ return values;
+ };
+
+ let resolver = PlaceholderResolver::new(cli_args);
+ for ph in &manifest.placeholders {
+ if let Ok(Some(value)) = resolver.resolve(ph) {
+ values.insert(ph.name.clone(), value);
+ }
+ }
+ values
+}
+
+/// Replace `{{name}}` tokens with resolved values. Unresolved tokens are left
+/// untouched (lenient — never fails generation).
+fn apply_substitutions(content: &str, values: &HashMap) -> String {
+ let mut out = content.to_string();
+ for (key, value) in values {
+ out = out.replace(&format!("{{{{{}}}}}", key), value);
+ }
+ out
+}
+
/// Validate project name: no empty, no path traversal, no special chars.
pub(crate) fn validate_project_name(name: &str) -> Result<()> {
if name.is_empty() {
diff --git a/src/commands/template.rs b/src/commands/template.rs
index 77c4831..f7e952b 100644
--- a/src/commands/template.rs
+++ b/src/commands/template.rs
@@ -4,8 +4,9 @@ use anyhow::Result;
use crate::templates;
-/// List available templates.
-pub fn list(all: bool) -> Result<()> {
+/// List available templates. By default also queries the remote registry;
+/// pass `include_remote = false` (via `--local`) to list only installed ones.
+pub fn list(include_remote: bool) -> Result<()> {
let cached = templates::list_cached()?;
let installed: std::collections::HashSet<&str> = cached.iter().map(String::as_str).collect();
@@ -15,7 +16,7 @@ pub fn list(all: bool) -> Result<()> {
println!(" - {}", name);
}
- if all {
+ if include_remote {
print!("\nFetching remote registry...");
match templates::list_remote() {
Ok(remote) => {
diff --git a/src/compiler/mod.rs b/src/compiler/mod.rs
index d07d4ff..aeb275d 100644
--- a/src/compiler/mod.rs
+++ b/src/compiler/mod.rs
@@ -57,26 +57,9 @@ fn parse_errors(raw: &str) -> Vec {
let trimmed = line.trim();
if let Some(rest) = trimmed.strip_prefix("error:") {
- let rest = rest.trim();
- if let Some((loc, msg)) = rest.split_once(": ") {
- if let Some((file, line_str)) = loc.rsplit_once(':') {
- if let Ok(line_num) = line_str.parse::() {
- errors.push(CompileError {
- file: file.trim().to_string(),
- line: line_num,
- message: msg.trim().to_string(),
- });
- continue;
- }
- }
- }
- errors.push(CompileError {
- file: String::new(),
- line: 0,
- message: rest.to_string(),
- });
+ parse_tectonic_error(rest, &mut errors);
+ continue;
}
-
if let Some(msg) = trimmed.strip_prefix("! ") {
errors.push(CompileError {
file: String::new(),
@@ -97,6 +80,27 @@ fn parse_errors(raw: &str) -> Vec {
errors
}
+fn parse_tectonic_error(rest: &str, errors: &mut Vec) {
+ let rest = rest.trim();
+ if let Some((loc, msg)) = rest.split_once(": ") {
+ if let Some((file, line_str)) = loc.rsplit_once(':') {
+ if let Ok(line_num) = line_str.parse::() {
+ errors.push(CompileError {
+ file: file.trim().to_string(),
+ line: line_num,
+ message: msg.trim().to_string(),
+ });
+ return;
+ }
+ }
+ }
+ errors.push(CompileError {
+ file: String::new(),
+ line: 0,
+ message: rest.to_string(),
+ });
+}
+
/// Find the tectonic binary in PATH or known locations, auto-installing if needed.
fn find_tectonic() -> Result {
if let Some(path) = locate_tectonic() {
@@ -132,8 +136,8 @@ fn locate_tectonic() -> Option {
// Check known locations
[
- dirs::home_dir().map(|h| h.join(".texforge/bin/tectonic")),
- dirs::home_dir().map(|h| h.join(".cargo/bin/tectonic")),
+ tectonic_managed_path().ok(),
+ dirs::home_dir().map(|h| h.join(".cargo/bin").join(TECTONIC_BIN)),
Some("/usr/local/bin/tectonic".into()),
Some("/opt/homebrew/bin/tectonic".into()),
]
@@ -142,9 +146,15 @@ fn locate_tectonic() -> Option {
.find(|p| p.exists())
}
+/// Tectonic binary filename — Windows requires the .exe extension to execute it.
+#[cfg(windows)]
+const TECTONIC_BIN: &str = "tectonic.exe";
+#[cfg(not(windows))]
+const TECTONIC_BIN: &str = "tectonic";
+
fn tectonic_managed_path() -> Result {
dirs::home_dir()
- .map(|h| h.join(".texforge/bin/tectonic"))
+ .map(|h| h.join(".texforge").join("bin").join(TECTONIC_BIN))
.ok_or_else(|| anyhow::anyhow!("Could not determine home directory"))
}
diff --git a/src/diagrams/mod.rs b/src/diagrams/mod.rs
index 9832eee..ed5aa1b 100644
--- a/src/diagrams/mod.rs
+++ b/src/diagrams/mod.rs
@@ -6,22 +6,21 @@
//! Works on copies in `build/` — the original .tex files are never modified.
use std::collections::HashMap;
+use std::hash::{Hash, Hasher};
use std::path::{Path, PathBuf};
+use std::sync::{Arc, OnceLock};
use anyhow::{Context, Result};
-/// Copy all .tex files to `build/`, rendering embedded diagrams in the copies.
+/// Copy all .tex files to `build_dir`, rendering embedded diagrams in the copies.
/// Also mirrors non-.tex assets so tectonic can resolve relative paths.
/// Returns the path to the build copy of `entry`.
-pub fn process(root: &Path, entry: &str) -> Result {
- let build_dir = root.join("build");
- std::fs::create_dir_all(&build_dir)?;
+pub fn process(root: &Path, entry: &str, build_dir: &Path) -> Result {
+ std::fs::create_dir_all(build_dir)?;
let diagrams_dir = build_dir.join("diagrams");
std::fs::create_dir_all(&diagrams_dir)?;
- let mut counter = 0usize;
-
// Process .tex files
let tex_files = collect_tex_files(root, entry);
for src in &tex_files {
@@ -31,37 +30,55 @@ pub fn process(root: &Path, entry: &str) -> Result {
std::fs::create_dir_all(parent)?;
}
let content = std::fs::read_to_string(src)?;
- let processed = render_diagrams(&content, &diagrams_dir, &mut counter)
+ let processed = render_diagrams(&content, &diagrams_dir)
.with_context(|| format!("Failed to render diagrams in {}", src.display()))?;
std::fs::write(&dest, processed)?;
}
// Mirror asset files so tectonic resolves relative paths
- crate::utils::mirror_assets(root, &build_dir)?;
+ crate::utils::mirror_assets(root, build_dir)?;
Ok(build_dir.join(entry))
}
/// Replace all `\begin{mermaid}[opts]...\end{mermaid}` with figure environments.
-fn render_diagrams(content: &str, diagrams_dir: &Path, counter: &mut usize) -> Result {
- let content = render_env(content, "mermaid", diagrams_dir, counter, |src| {
- let svg = mermaid_rs_renderer::render(src)
+fn render_diagrams(content: &str, diagrams_dir: &Path) -> Result {
+ let content = render_env(content, "mermaid", diagrams_dir, |src| {
+ let svg = render_mermaid_with_config(src)
.map_err(|e| anyhow::anyhow!("Mermaid render error: {}", e))?;
svg_to_png(&svg).context("Failed to convert mermaid SVG to PNG")
})?;
- let content = render_env(&content, "graphviz", diagrams_dir, counter, |src| {
+ let content = render_env(&content, "graphviz", diagrams_dir, |src| {
let svg = render_graphviz(src)?;
svg_to_png(&svg).context("Failed to convert graphviz SVG to PNG")
})?;
+ let content = render_env(&content, "d2", diagrams_dir, |src| {
+ let svg = render_d2(src)?;
+ svg_to_png(&svg).context("Failed to convert D2 SVG to PNG")
+ })?;
Ok(content)
}
+/// Render Mermaid diagram with improved configuration for better layout.
+fn render_mermaid_with_config(src: &str) -> Result {
+ // Try with default configuration first
+ mermaid_rs_renderer::render(src).map_err(|e| {
+ // If default fails, try with explicit configuration
+ anyhow::anyhow!(
+ "Mermaid render error: {}. Consider checking diagram syntax.",
+ e
+ )
+ })
+}
+
/// Generic environment renderer: replaces `\begin{env}[opts]...\end{env}` with figure.
+///
+/// Rendered PNGs are named after a hash of the diagram source, so unchanged
+/// diagrams are reused across rebuilds (watch mode) instead of re-rendered.
pub(crate) fn render_env(
content: &str,
env: &str,
diagrams_dir: &Path,
- counter: &mut usize,
render_fn: impl Fn(&str) -> Result>,
) -> Result {
let begin_tag = format!("\\begin{{{}}}", env);
@@ -76,50 +93,107 @@ pub(crate) fn render_env(
let after_begin = &remaining[start + begin_tag.len()..];
let (opts, after_opts) = parse_opts(after_begin);
- let end = after_opts
- .find(&*end_tag)
- .with_context(|| format!("\\begin{{{}}} without matching \\end{{{}}}", env, env))?;
-
+ let end = find_end_tag(after_opts, &end_tag, env)?;
let diagram_src = after_opts[..end].trim();
- // Fail fast: validate pos before doing any rendering work
- let pos = opts.get("pos").map(String::as_str).unwrap_or("H");
- if !["H", "t", "b", "h", "p"].contains(&pos) {
- anyhow::bail!(
- "Invalid {} option pos='{}' — valid values are: H, t, b, h, p",
- env,
- pos
- );
+ validate_pos_option(&opts, env)?;
+
+ let filename = format!("{}-{:016x}.png", env, content_hash(diagram_src));
+ if !diagrams_dir.join(&filename).exists() {
+ let png = render_fn(diagram_src)?;
+ std::fs::write(diagrams_dir.join(&filename), png)?;
}
+ let fig_env = build_figure_environment(&opts, env, &filename)?;
- let png = render_fn(diagram_src)?;
+ result.push_str(&fig_env);
+ remaining = &after_opts[end + end_tag.len()..];
+ }
- *counter += 1;
- let filename = format!("diagram-{}.png", counter);
- std::fs::write(diagrams_dir.join(&filename), &png)?;
+ result.push_str(remaining);
+ Ok(result)
+}
- // Build figure environment
- let width = opts
- .get("width")
- .map(String::as_str)
- .unwrap_or("\\linewidth");
- let caption = opts.get("caption");
- let rel_path = format!("diagrams/{}", filename);
+/// Stable-enough 64-bit hash of diagram source for cache filenames.
+fn content_hash(src: &str) -> u64 {
+ let mut hasher = std::collections::hash_map::DefaultHasher::new();
+ src.hash(&mut hasher);
+ hasher.finish()
+}
- let mut fig = format!(
- "\\begin{{figure}}[{pos}]\n \\centering\n \\includegraphics[width={width}]{{{rel_path}}}\n"
+/// Find the end tag position and validate it exists.
+fn find_end_tag(after_opts: &str, end_tag: &str, env: &str) -> Result {
+ after_opts
+ .find(end_tag)
+ .with_context(|| format!("\\begin{{{}}} without matching \\end{{{}}}", env, env))
+}
+
+/// Validate the pos option is one of the allowed values.
+fn validate_pos_option(opts: &HashMap, env: &str) -> Result<()> {
+ let pos = opts.get("pos").map(String::as_str).unwrap_or("H");
+ if !["H", "t", "b", "h", "p"].contains(&pos) {
+ anyhow::bail!(
+ "Invalid {} option pos='{}' — valid values are: H, t, b, h, p",
+ env,
+ pos
);
- if let Some(cap) = caption {
- fig.push_str(&format!(" \\caption{{{}}}\n", cap));
+ }
+ Ok(())
+}
+
+/// Build the figure environment LaTeX code.
+fn build_figure_environment(
+ opts: &HashMap,
+ _env: &str,
+ filename: &str,
+) -> Result {
+ let pos = opts.get("pos").map(String::as_str);
+ let width = opts.get("width").map(String::as_str);
+ let height = opts.get("height").map(String::as_str);
+ let scale = opts.get("scale").map(String::as_str);
+ let keepaspectratio = opts.contains_key("keepaspectratio");
+ let label = opts.get("label").map(String::as_str);
+ let rel_path = format!("diagrams/{}", filename);
+
+ let mut include_opts = Vec::new();
+ if let Some(s) = scale {
+ include_opts.push(format!("scale={s}"));
+ } else {
+ if let Some(w) = width {
+ include_opts.push(format!("width={w}"));
}
- fig.push_str("\\end{figure}");
+ if let Some(h) = height {
+ include_opts.push(format!("height={h}"));
+ }
+ }
+ if keepaspectratio {
+ include_opts.push("keepaspectratio".to_string());
+ }
+ let include_str = if include_opts.is_empty() {
+ "width=\\linewidth".to_string()
+ } else {
+ include_opts.join(",")
+ };
- result.push_str(&fig);
- remaining = &after_opts[end + end_tag.len()..];
+ let pos_str = pos.map(|p| format!("[{p}]")).unwrap_or_default();
+ let mut fig = format!(
+ "\\begin{{figure}}{pos_str}\n \\centering\n \\includegraphics[{include_str}]{{{rel_path}}}\n"
+ );
+
+ add_caption_if_present(opts, &mut fig)?;
+ if let Some(lbl) = label {
+ fig.push_str(&format!(" \\label{{{lbl}}}\n"));
}
+ fig.push_str("\\end{figure}");
- result.push_str(remaining);
- Ok(result)
+ Ok(fig)
+}
+
+/// Add caption to figure environment if present in options.
+fn add_caption_if_present(opts: &HashMap, fig: &mut String) -> Result<()> {
+ if let Some(cap) = opts.get("caption") {
+ fig.push_str(&format!(" \\caption{{{}}}\n", cap));
+ }
+ Ok(())
}
/// Render a DOT/Graphviz diagram to SVG using layout-rs (pure Rust).
@@ -144,6 +218,12 @@ fn render_graphviz(src: &str) -> Result {
Ok(svg.finalize())
}
+/// Render a D2 diagram to SVG using d2-little (pure Rust port of the d2lang pipeline).
+fn render_d2(src: &str) -> Result {
+ let svg = d2_little::d2_to_svg(src).map_err(|e| anyhow::anyhow!("D2 render error: {}", e))?;
+ String::from_utf8(svg).context("D2 produced non-UTF8 SVG")
+}
+
/// Parse `[key=val, key2=val2]` into a map. Returns `(map, rest_of_str)`.
pub(crate) fn parse_opts(s: &str) -> (HashMap, &str) {
let s = s.trim_start_matches('\n').trim_start_matches('\r');
@@ -212,11 +292,28 @@ fn resolve_tex(root: &Path, input: &str) -> PathBuf {
}
}
+/// Shared font database — building it scans system font directories (very slow
+/// on WSL, where /mnt/c/Windows/Fonts goes through the 9P filesystem), so it is
+/// built once and reused for every diagram.
+fn shared_fontdb() -> Arc {
+ static FONTDB: OnceLock> = OnceLock::new();
+ FONTDB.get_or_init(|| Arc::new(build_fontdb())).clone()
+}
+
/// Build a font database with system fonts and platform-specific fallbacks.
fn build_fontdb() -> resvg::usvg::fontdb::Database {
use resvg::usvg::fontdb::Database;
let mut db = Database::new();
+ load_system_and_platform_fonts(&mut db);
+ load_fallback_font_directories(&mut db);
+ configure_font_families(&mut db);
+
+ db
+}
+
+/// Load system fonts and platform-specific fonts (Windows/WSL).
+fn load_system_and_platform_fonts(db: &mut resvg::usvg::fontdb::Database) {
db.load_system_fonts();
// On WSL / Windows, also load the Windows font directory
@@ -224,7 +321,10 @@ fn build_fontdb() -> resvg::usvg::fontdb::Database {
if win_fonts.is_dir() {
db.load_fonts_dir(win_fonts);
}
+}
+/// Load fallback font directories if no fonts were found.
+fn load_fallback_font_directories(db: &mut resvg::usvg::fontdb::Database) {
// If the DB still has no fonts at all, try common directories explicitly.
if db.is_empty() {
for dir in ["/usr/share/fonts", "/usr/local/share/fonts"] {
@@ -234,7 +334,10 @@ fn build_fontdb() -> resvg::usvg::fontdb::Database {
}
}
}
+}
+/// Configure font families based on available fonts.
+fn configure_font_families(db: &mut resvg::usvg::fontdb::Database) {
// Collect the set of available family names once (avoids borrow conflicts).
let available: std::collections::HashSet = db
.faces()
@@ -242,10 +345,34 @@ fn build_fontdb() -> resvg::usvg::fontdb::Database {
.collect();
// Map generic CSS families to the first concrete font we find in the DB.
+ configure_sans_serif_family(db, &available);
+ configure_serif_family(db, &available);
+ configure_monospace_family(db, &available);
+}
+
+/// Configure sans-serif font family.
+///
+/// D2 diagrams reference embedded font-family names that never resolve directly,
+/// so their text relies entirely on this sans-serif fallback. If none of the
+/// preferred fonts exist, fall back to any available family so text never
+/// silently disappears on minimal systems.
+fn configure_sans_serif_family(
+ db: &mut resvg::usvg::fontdb::Database,
+ available: &std::collections::HashSet,
+) {
let sans = ["Arial", "DejaVu Sans", "Liberation Sans", "Noto Sans"];
if let Some(f) = sans.iter().find(|n| available.contains(**n)) {
db.set_sans_serif_family(*f);
+ } else if let Some(any) = available.iter().next() {
+ db.set_sans_serif_family(any.clone());
}
+}
+
+/// Configure serif font family.
+fn configure_serif_family(
+ db: &mut resvg::usvg::fontdb::Database,
+ available: &std::collections::HashSet,
+) {
let serif = [
"Times New Roman",
"DejaVu Serif",
@@ -255,6 +382,13 @@ fn build_fontdb() -> resvg::usvg::fontdb::Database {
if let Some(f) = serif.iter().find(|n| available.contains(**n)) {
db.set_serif_family(*f);
}
+}
+
+/// Configure monospace font family.
+fn configure_monospace_family(
+ db: &mut resvg::usvg::fontdb::Database,
+ available: &std::collections::HashSet,
+) {
let mono = [
"Courier New",
"DejaVu Sans Mono",
@@ -264,33 +398,36 @@ fn build_fontdb() -> resvg::usvg::fontdb::Database {
if let Some(f) = mono.iter().find(|n| available.contains(**n)) {
db.set_monospace_family(*f);
}
-
- db
}
-/// Convert SVG string to PNG bytes at 2x scale for print quality.
-fn svg_to_png(svg: &str) -> Result> {
- let fontdb = build_fontdb();
+/// Rasterization scale for SVG → PNG. Mermaid SVGs are sized in CSS pixels
+/// (~96 dpi); 3x yields ~300 dpi when the figure is included at \linewidth,
+/// which is print quality.
+const RASTER_SCALE: f32 = 3.0;
+/// Convert SVG string to PNG bytes at print resolution.
+fn svg_to_png(svg: &str) -> Result> {
let options = resvg::usvg::Options {
- fontdb: std::sync::Arc::new(fontdb),
+ fontdb: shared_fontdb(),
+ shape_rendering: resvg::usvg::ShapeRendering::GeometricPrecision,
+ text_rendering: resvg::usvg::TextRendering::OptimizeLegibility,
..Default::default()
};
let tree = resvg::usvg::Tree::from_str(svg, &options).context("Failed to parse SVG")?;
- let scale = 2.0_f32;
- let width = (tree.size().width() * scale) as u32;
- let height = (tree.size().height() * scale) as u32;
+ let original_size = tree.size();
+ let padding = 10.0; // padding (in SVG units) so strokes at the edge aren't clipped
+ let width = ((original_size.width() + padding * 2.0) * RASTER_SCALE) as u32;
+ let height = ((original_size.height() + padding * 2.0) * RASTER_SCALE) as u32;
let mut pixmap =
resvg::tiny_skia::Pixmap::new(width, height).context("Failed to create pixmap")?;
- resvg::render(
- &tree,
- resvg::tiny_skia::Transform::from_scale(scale, scale),
- &mut pixmap.as_mut(),
- );
+ let transform = resvg::tiny_skia::Transform::from_scale(RASTER_SCALE, RASTER_SCALE)
+ .post_translate(padding * RASTER_SCALE, padding * RASTER_SCALE);
+
+ resvg::render(&tree, transform, &mut pixmap.as_mut());
pixmap.encode_png().context("Failed to encode PNG")
}
@@ -319,6 +456,69 @@ mod tests {
assert_eq!(map.get("caption").map(String::as_str), Some("My diagram"));
}
+ #[test]
+ fn parse_opts_label_and_height() {
+ let (map, _) = parse_opts("[label=fig:my-diagram, height=5cm]");
+ assert_eq!(map.get("label").map(String::as_str), Some("fig:my-diagram"));
+ assert_eq!(map.get("height").map(String::as_str), Some("5cm"));
+ }
+
+ #[test]
+ fn build_figure_with_label() {
+ let mut opts = HashMap::new();
+ opts.insert("caption".to_string(), "Test".to_string());
+ opts.insert("label".to_string(), "fig:test".to_string());
+ let fig = build_figure_environment(&opts, "mermaid", "d1.png").unwrap();
+ assert!(fig.contains("\\label{fig:test}"));
+ assert!(fig.contains("\\caption{Test}"));
+ assert!(fig.contains("\\begin{figure}"));
+ }
+
+ #[test]
+ fn build_figure_with_height() {
+ let mut opts = HashMap::new();
+ opts.insert("height".to_string(), "5cm".to_string());
+ let fig = build_figure_environment(&opts, "mermaid", "d1.png").unwrap();
+ assert!(fig.contains("height=5cm"));
+ }
+
+ #[test]
+ fn build_figure_with_width_and_height() {
+ let mut opts = HashMap::new();
+ opts.insert("width".to_string(), "0.5\\linewidth".to_string());
+ opts.insert("height".to_string(), "4cm".to_string());
+ let fig = build_figure_environment(&opts, "mermaid", "d1.png").unwrap();
+ assert!(fig.contains("width=0.5\\linewidth"));
+ assert!(fig.contains("height=4cm"));
+ }
+
+ #[test]
+ fn build_figure_with_scale() {
+ let mut opts = HashMap::new();
+ opts.insert("scale".to_string(), "0.8".to_string());
+ let fig = build_figure_environment(&opts, "mermaid", "d1.png").unwrap();
+ assert!(fig.contains("scale=0.8"));
+ assert!(!fig.contains("width="));
+ }
+
+ #[test]
+ fn build_figure_with_keepaspectratio() {
+ let mut opts = HashMap::new();
+ opts.insert("width".to_string(), "10cm".to_string());
+ opts.insert("height".to_string(), "8cm".to_string());
+ opts.insert("keepaspectratio".to_string(), "true".to_string());
+ let fig = build_figure_environment(&opts, "mermaid", "d1.png").unwrap();
+ assert!(fig.contains("keepaspectratio"));
+ }
+
+ #[test]
+ fn build_figure_default_no_pos() {
+ let opts = HashMap::new();
+ let fig = build_figure_environment(&opts, "mermaid", "d1.png").unwrap();
+ assert!(fig.contains("\\begin{figure}\n"));
+ assert!(!fig.contains("[H]"));
+ }
+
#[test]
fn render_graphviz_produces_svg() {
let dot = "digraph G { A -> B }";
@@ -330,28 +530,74 @@ mod tests {
);
}
+ #[test]
+ fn render_d2_produces_svg() {
+ let svg = render_d2("a -> b -> c").unwrap();
+ assert!(
+ svg.contains("