This is page 121 of 168. Use http://codebase.md/romanshablio/mcp_server?lines=true&page={x} to view the full context.
# Directory Structure
```
├── .DS_Store
├── .venv
│ ├── __pycache__
│ │ └── hello.cpython-312.pyc
│ ├── bin
│ │ ├── activate
│ │ ├── activate.csh
│ │ ├── activate.fish
│ │ ├── Activate.ps1
│ │ ├── flask
│ │ ├── normalizer
│ │ ├── pip
│ │ ├── pip3
│ │ ├── pip3.12
│ │ ├── python
│ │ ├── python3
│ │ └── python3.12
│ ├── hello.py
│ ├── lib
│ │ └── python3.12
│ │ └── site-packages
│ │ ├── beautifulsoup4-4.12.3.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── licenses
│ │ │ │ ├── AUTHORS
│ │ │ │ └── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ └── WHEEL
│ │ ├── blinker
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _utilities.cpython-312.pyc
│ │ │ │ └── base.cpython-312.pyc
│ │ │ ├── _utilities.py
│ │ │ ├── base.py
│ │ │ └── py.typed
│ │ ├── blinker-1.8.2.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── bs4
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── css.cpython-312.pyc
│ │ │ │ ├── dammit.cpython-312.pyc
│ │ │ │ ├── diagnose.cpython-312.pyc
│ │ │ │ ├── element.cpython-312.pyc
│ │ │ │ └── formatter.cpython-312.pyc
│ │ │ ├── builder
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── _html5lib.cpython-312.pyc
│ │ │ │ │ ├── _htmlparser.cpython-312.pyc
│ │ │ │ │ └── _lxml.cpython-312.pyc
│ │ │ │ ├── _html5lib.py
│ │ │ │ ├── _htmlparser.py
│ │ │ │ └── _lxml.py
│ │ │ ├── css.py
│ │ │ ├── dammit.py
│ │ │ ├── diagnose.py
│ │ │ ├── element.py
│ │ │ ├── formatter.py
│ │ │ └── tests
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── test_builder_registry.cpython-312.pyc
│ │ │ │ ├── test_builder.cpython-312.pyc
│ │ │ │ ├── test_css.cpython-312.pyc
│ │ │ │ ├── test_dammit.cpython-312.pyc
│ │ │ │ ├── test_docs.cpython-312.pyc
│ │ │ │ ├── test_element.cpython-312.pyc
│ │ │ │ ├── test_formatter.cpython-312.pyc
│ │ │ │ ├── test_fuzz.cpython-312.pyc
│ │ │ │ ├── test_html5lib.cpython-312.pyc
│ │ │ │ ├── test_htmlparser.cpython-312.pyc
│ │ │ │ ├── test_lxml.cpython-312.pyc
│ │ │ │ ├── test_navigablestring.cpython-312.pyc
│ │ │ │ ├── test_pageelement.cpython-312.pyc
│ │ │ │ ├── test_soup.cpython-312.pyc
│ │ │ │ ├── test_tag.cpython-312.pyc
│ │ │ │ └── test_tree.cpython-312.pyc
│ │ │ ├── fuzz
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-4818336571064320.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-4999465949331456.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5000587759190016.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5270998950477824.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5492400320282624.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5843991618256896.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5984173902397440.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6124268085182464.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6241471367348224.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6306874195312640.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6600557255327744.testcase
│ │ │ │ ├── crash-0d306a50c8ed8bcd0785b67000fcd5dea1d33f08.testcase
│ │ │ │ └── crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a.testcase
│ │ │ ├── test_builder_registry.py
│ │ │ ├── test_builder.py
│ │ │ ├── test_css.py
│ │ │ ├── test_dammit.py
│ │ │ ├── test_docs.py
│ │ │ ├── test_element.py
│ │ │ ├── test_formatter.py
│ │ │ ├── test_fuzz.py
│ │ │ ├── test_html5lib.py
│ │ │ ├── test_htmlparser.py
│ │ │ ├── test_lxml.py
│ │ │ ├── test_navigablestring.py
│ │ │ ├── test_pageelement.py
│ │ │ ├── test_soup.py
│ │ │ ├── test_tag.py
│ │ │ └── test_tree.py
│ │ ├── certifi
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ └── core.cpython-312.pyc
│ │ │ ├── cacert.pem
│ │ │ ├── core.py
│ │ │ └── py.typed
│ │ ├── certifi-2024.8.30.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── charset_normalizer
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ ├── api.cpython-312.pyc
│ │ │ │ ├── cd.cpython-312.pyc
│ │ │ │ ├── constant.cpython-312.pyc
│ │ │ │ ├── legacy.cpython-312.pyc
│ │ │ │ ├── md.cpython-312.pyc
│ │ │ │ ├── models.cpython-312.pyc
│ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ └── version.cpython-312.pyc
│ │ │ ├── api.py
│ │ │ ├── cd.py
│ │ │ ├── cli
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __main__.py
│ │ │ │ └── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ └── __main__.cpython-312.pyc
│ │ │ ├── constant.py
│ │ │ ├── legacy.py
│ │ │ ├── md__mypyc.cpython-312-darwin.so
│ │ │ ├── md.cpython-312-darwin.so
│ │ │ ├── md.py
│ │ │ ├── models.py
│ │ │ ├── py.typed
│ │ │ ├── utils.py
│ │ │ └── version.py
│ │ ├── charset_normalizer-3.4.0.dist-info
│ │ │ ├── entry_points.txt
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── click
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _compat.cpython-312.pyc
│ │ │ │ ├── _termui_impl.cpython-312.pyc
│ │ │ │ ├── _textwrap.cpython-312.pyc
│ │ │ │ ├── _winconsole.cpython-312.pyc
│ │ │ │ ├── core.cpython-312.pyc
│ │ │ │ ├── decorators.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── formatting.cpython-312.pyc
│ │ │ │ ├── globals.cpython-312.pyc
│ │ │ │ ├── parser.cpython-312.pyc
│ │ │ │ ├── shell_completion.cpython-312.pyc
│ │ │ │ ├── termui.cpython-312.pyc
│ │ │ │ ├── testing.cpython-312.pyc
│ │ │ │ ├── types.cpython-312.pyc
│ │ │ │ └── utils.cpython-312.pyc
│ │ │ ├── _compat.py
│ │ │ ├── _termui_impl.py
│ │ │ ├── _textwrap.py
│ │ │ ├── _winconsole.py
│ │ │ ├── core.py
│ │ │ ├── decorators.py
│ │ │ ├── exceptions.py
│ │ │ ├── formatting.py
│ │ │ ├── globals.py
│ │ │ ├── parser.py
│ │ │ ├── py.typed
│ │ │ ├── shell_completion.py
│ │ │ ├── termui.py
│ │ │ ├── testing.py
│ │ │ ├── types.py
│ │ │ └── utils.py
│ │ ├── click-8.1.7.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.rst
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── fake_useragent
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── errors.cpython-312.pyc
│ │ │ │ ├── fake.cpython-312.pyc
│ │ │ │ ├── log.cpython-312.pyc
│ │ │ │ ├── settings.cpython-312.pyc
│ │ │ │ └── utils.cpython-312.pyc
│ │ │ ├── data
│ │ │ │ └── browsers.json
│ │ │ ├── errors.py
│ │ │ ├── fake.py
│ │ │ ├── log.py
│ │ │ ├── settings.py
│ │ │ └── utils.py
│ │ ├── fake_useragent-1.5.1.dist-info
│ │ │ ├── AUTHORS
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── flask
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ ├── app.cpython-312.pyc
│ │ │ │ ├── blueprints.cpython-312.pyc
│ │ │ │ ├── cli.cpython-312.pyc
│ │ │ │ ├── config.cpython-312.pyc
│ │ │ │ ├── ctx.cpython-312.pyc
│ │ │ │ ├── debughelpers.cpython-312.pyc
│ │ │ │ ├── globals.cpython-312.pyc
│ │ │ │ ├── helpers.cpython-312.pyc
│ │ │ │ ├── logging.cpython-312.pyc
│ │ │ │ ├── sessions.cpython-312.pyc
│ │ │ │ ├── signals.cpython-312.pyc
│ │ │ │ ├── templating.cpython-312.pyc
│ │ │ │ ├── testing.cpython-312.pyc
│ │ │ │ ├── typing.cpython-312.pyc
│ │ │ │ ├── views.cpython-312.pyc
│ │ │ │ └── wrappers.cpython-312.pyc
│ │ │ ├── app.py
│ │ │ ├── blueprints.py
│ │ │ ├── cli.py
│ │ │ ├── config.py
│ │ │ ├── ctx.py
│ │ │ ├── debughelpers.py
│ │ │ ├── globals.py
│ │ │ ├── helpers.py
│ │ │ ├── json
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── provider.cpython-312.pyc
│ │ │ │ │ └── tag.cpython-312.pyc
│ │ │ │ ├── provider.py
│ │ │ │ └── tag.py
│ │ │ ├── logging.py
│ │ │ ├── py.typed
│ │ │ ├── sansio
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── app.cpython-312.pyc
│ │ │ │ │ ├── blueprints.cpython-312.pyc
│ │ │ │ │ └── scaffold.cpython-312.pyc
│ │ │ │ ├── app.py
│ │ │ │ ├── blueprints.py
│ │ │ │ ├── README.md
│ │ │ │ └── scaffold.py
│ │ │ ├── sessions.py
│ │ │ ├── signals.py
│ │ │ ├── templating.py
│ │ │ ├── testing.py
│ │ │ ├── typing.py
│ │ │ ├── views.py
│ │ │ └── wrappers.py
│ │ ├── flask-3.0.3.dist-info
│ │ │ ├── entry_points.txt
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ └── WHEEL
│ │ ├── idna
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── codec.cpython-312.pyc
│ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ ├── core.cpython-312.pyc
│ │ │ │ ├── idnadata.cpython-312.pyc
│ │ │ │ ├── intranges.cpython-312.pyc
│ │ │ │ ├── package_data.cpython-312.pyc
│ │ │ │ └── uts46data.cpython-312.pyc
│ │ │ ├── codec.py
│ │ │ ├── compat.py
│ │ │ ├── core.py
│ │ │ ├── idnadata.py
│ │ │ ├── intranges.py
│ │ │ ├── package_data.py
│ │ │ ├── py.typed
│ │ │ └── uts46data.py
│ │ ├── idna-3.10.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.md
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── itsdangerous
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _json.cpython-312.pyc
│ │ │ │ ├── encoding.cpython-312.pyc
│ │ │ │ ├── exc.cpython-312.pyc
│ │ │ │ ├── serializer.cpython-312.pyc
│ │ │ │ ├── signer.cpython-312.pyc
│ │ │ │ ├── timed.cpython-312.pyc
│ │ │ │ └── url_safe.cpython-312.pyc
│ │ │ ├── _json.py
│ │ │ ├── encoding.py
│ │ │ ├── exc.py
│ │ │ ├── py.typed
│ │ │ ├── serializer.py
│ │ │ ├── signer.py
│ │ │ ├── timed.py
│ │ │ └── url_safe.py
│ │ ├── itsdangerous-2.2.0.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── jinja2
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _identifier.cpython-312.pyc
│ │ │ │ ├── async_utils.cpython-312.pyc
│ │ │ │ ├── bccache.cpython-312.pyc
│ │ │ │ ├── compiler.cpython-312.pyc
│ │ │ │ ├── constants.cpython-312.pyc
│ │ │ │ ├── debug.cpython-312.pyc
│ │ │ │ ├── defaults.cpython-312.pyc
│ │ │ │ ├── environment.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── ext.cpython-312.pyc
│ │ │ │ ├── filters.cpython-312.pyc
│ │ │ │ ├── idtracking.cpython-312.pyc
│ │ │ │ ├── lexer.cpython-312.pyc
│ │ │ │ ├── loaders.cpython-312.pyc
│ │ │ │ ├── meta.cpython-312.pyc
│ │ │ │ ├── nativetypes.cpython-312.pyc
│ │ │ │ ├── nodes.cpython-312.pyc
│ │ │ │ ├── optimizer.cpython-312.pyc
│ │ │ │ ├── parser.cpython-312.pyc
│ │ │ │ ├── runtime.cpython-312.pyc
│ │ │ │ ├── sandbox.cpython-312.pyc
│ │ │ │ ├── tests.cpython-312.pyc
│ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ └── visitor.cpython-312.pyc
│ │ │ ├── _identifier.py
│ │ │ ├── async_utils.py
│ │ │ ├── bccache.py
│ │ │ ├── compiler.py
│ │ │ ├── constants.py
│ │ │ ├── debug.py
│ │ │ ├── defaults.py
│ │ │ ├── environment.py
│ │ │ ├── exceptions.py
│ │ │ ├── ext.py
│ │ │ ├── filters.py
│ │ │ ├── idtracking.py
│ │ │ ├── lexer.py
│ │ │ ├── loaders.py
│ │ │ ├── meta.py
│ │ │ ├── nativetypes.py
│ │ │ ├── nodes.py
│ │ │ ├── optimizer.py
│ │ │ ├── parser.py
│ │ │ ├── py.typed
│ │ │ ├── runtime.py
│ │ │ ├── sandbox.py
│ │ │ ├── tests.py
│ │ │ ├── utils.py
│ │ │ └── visitor.py
│ │ ├── jinja2-3.1.4.dist-info
│ │ │ ├── entry_points.txt
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── lxml
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _elementpath.cpython-312.pyc
│ │ │ │ ├── builder.cpython-312.pyc
│ │ │ │ ├── cssselect.cpython-312.pyc
│ │ │ │ ├── doctestcompare.cpython-312.pyc
│ │ │ │ ├── ElementInclude.cpython-312.pyc
│ │ │ │ ├── pyclasslookup.cpython-312.pyc
│ │ │ │ ├── sax.cpython-312.pyc
│ │ │ │ └── usedoctest.cpython-312.pyc
│ │ │ ├── _elementpath.cpython-312-darwin.so
│ │ │ ├── _elementpath.py
│ │ │ ├── apihelpers.pxi
│ │ │ ├── builder.cpython-312-darwin.so
│ │ │ ├── builder.py
│ │ │ ├── classlookup.pxi
│ │ │ ├── cleanup.pxi
│ │ │ ├── cssselect.py
│ │ │ ├── debug.pxi
│ │ │ ├── docloader.pxi
│ │ │ ├── doctestcompare.py
│ │ │ ├── dtd.pxi
│ │ │ ├── ElementInclude.py
│ │ │ ├── etree_api.h
│ │ │ ├── etree.cpython-312-darwin.so
│ │ │ ├── etree.h
│ │ │ ├── etree.pyx
│ │ │ ├── extensions.pxi
│ │ │ ├── html
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── _diffcommand.cpython-312.pyc
│ │ │ │ │ ├── _html5builder.cpython-312.pyc
│ │ │ │ │ ├── _setmixin.cpython-312.pyc
│ │ │ │ │ ├── builder.cpython-312.pyc
│ │ │ │ │ ├── clean.cpython-312.pyc
│ │ │ │ │ ├── defs.cpython-312.pyc
│ │ │ │ │ ├── diff.cpython-312.pyc
│ │ │ │ │ ├── ElementSoup.cpython-312.pyc
│ │ │ │ │ ├── formfill.cpython-312.pyc
│ │ │ │ │ ├── html5parser.cpython-312.pyc
│ │ │ │ │ ├── soupparser.cpython-312.pyc
│ │ │ │ │ └── usedoctest.cpython-312.pyc
│ │ │ │ ├── _diffcommand.py
│ │ │ │ ├── _html5builder.py
│ │ │ │ ├── _setmixin.py
│ │ │ │ ├── builder.py
│ │ │ │ ├── clean.py
│ │ │ │ ├── defs.py
│ │ │ │ ├── diff.cpython-312-darwin.so
│ │ │ │ ├── diff.py
│ │ │ │ ├── ElementSoup.py
│ │ │ │ ├── formfill.py
│ │ │ │ ├── html5parser.py
│ │ │ │ ├── soupparser.py
│ │ │ │ └── usedoctest.py
│ │ │ ├── includes
│ │ │ │ ├── __init__.pxd
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ ├── c14n.pxd
│ │ │ │ ├── config.pxd
│ │ │ │ ├── dtdvalid.pxd
│ │ │ │ ├── etree_defs.h
│ │ │ │ ├── etreepublic.pxd
│ │ │ │ ├── extlibs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── libcharset.h
│ │ │ │ │ ├── localcharset.h
│ │ │ │ │ ├── zconf.h
│ │ │ │ │ └── zlib.h
│ │ │ │ ├── htmlparser.pxd
│ │ │ │ ├── libexslt
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── exslt.h
│ │ │ │ │ ├── exsltconfig.h
│ │ │ │ │ └── exsltexports.h
│ │ │ │ ├── libxml
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── c14n.h
│ │ │ │ │ ├── catalog.h
│ │ │ │ │ ├── chvalid.h
│ │ │ │ │ ├── debugXML.h
│ │ │ │ │ ├── dict.h
│ │ │ │ │ ├── encoding.h
│ │ │ │ │ ├── entities.h
│ │ │ │ │ ├── globals.h
│ │ │ │ │ ├── hash.h
│ │ │ │ │ ├── HTMLparser.h
│ │ │ │ │ ├── HTMLtree.h
│ │ │ │ │ ├── list.h
│ │ │ │ │ ├── nanoftp.h
│ │ │ │ │ ├── nanohttp.h
│ │ │ │ │ ├── parser.h
│ │ │ │ │ ├── parserInternals.h
│ │ │ │ │ ├── relaxng.h
│ │ │ │ │ ├── SAX.h
│ │ │ │ │ ├── SAX2.h
│ │ │ │ │ ├── schemasInternals.h
│ │ │ │ │ ├── schematron.h
│ │ │ │ │ ├── threads.h
│ │ │ │ │ ├── tree.h
│ │ │ │ │ ├── uri.h
│ │ │ │ │ ├── valid.h
│ │ │ │ │ ├── xinclude.h
│ │ │ │ │ ├── xlink.h
│ │ │ │ │ ├── xmlautomata.h
│ │ │ │ │ ├── xmlerror.h
│ │ │ │ │ ├── xmlexports.h
│ │ │ │ │ ├── xmlIO.h
│ │ │ │ │ ├── xmlmemory.h
│ │ │ │ │ ├── xmlmodule.h
│ │ │ │ │ ├── xmlreader.h
│ │ │ │ │ ├── xmlregexp.h
│ │ │ │ │ ├── xmlsave.h
│ │ │ │ │ ├── xmlschemas.h
│ │ │ │ │ ├── xmlschemastypes.h
│ │ │ │ │ ├── xmlstring.h
│ │ │ │ │ ├── xmlunicode.h
│ │ │ │ │ ├── xmlversion.h
│ │ │ │ │ ├── xmlwriter.h
│ │ │ │ │ ├── xpath.h
│ │ │ │ │ ├── xpathInternals.h
│ │ │ │ │ └── xpointer.h
│ │ │ │ ├── libxslt
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── attributes.h
│ │ │ │ │ ├── documents.h
│ │ │ │ │ ├── extensions.h
│ │ │ │ │ ├── extra.h
│ │ │ │ │ ├── functions.h
│ │ │ │ │ ├── imports.h
│ │ │ │ │ ├── keys.h
│ │ │ │ │ ├── namespaces.h
│ │ │ │ │ ├── numbersInternals.h
│ │ │ │ │ ├── pattern.h
│ │ │ │ │ ├── preproc.h
│ │ │ │ │ ├── security.h
│ │ │ │ │ ├── templates.h
│ │ │ │ │ ├── transform.h
│ │ │ │ │ ├── variables.h
│ │ │ │ │ ├── xslt.h
│ │ │ │ │ ├── xsltconfig.h
│ │ │ │ │ ├── xsltexports.h
│ │ │ │ │ ├── xsltInternals.h
│ │ │ │ │ ├── xsltlocale.h
│ │ │ │ │ └── xsltutils.h
│ │ │ │ ├── lxml-version.h
│ │ │ │ ├── relaxng.pxd
│ │ │ │ ├── schematron.pxd
│ │ │ │ ├── tree.pxd
│ │ │ │ ├── uri.pxd
│ │ │ │ ├── xinclude.pxd
│ │ │ │ ├── xmlerror.pxd
│ │ │ │ ├── xmlparser.pxd
│ │ │ │ ├── xmlschema.pxd
│ │ │ │ ├── xpath.pxd
│ │ │ │ └── xslt.pxd
│ │ │ ├── isoschematron
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ └── resources
│ │ │ │ ├── rng
│ │ │ │ │ └── iso-schematron.rng
│ │ │ │ └── xsl
│ │ │ │ ├── iso-schematron-xslt1
│ │ │ │ │ ├── iso_abstract_expand.xsl
│ │ │ │ │ ├── iso_dsdl_include.xsl
│ │ │ │ │ ├── iso_schematron_message.xsl
│ │ │ │ │ ├── iso_schematron_skeleton_for_xslt1.xsl
│ │ │ │ │ ├── iso_svrl_for_xslt1.xsl
│ │ │ │ │ └── readme.txt
│ │ │ │ ├── RNG2Schtrn.xsl
│ │ │ │ └── XSD2Schtrn.xsl
│ │ │ ├── iterparse.pxi
│ │ │ ├── lxml.etree_api.h
│ │ │ ├── lxml.etree.h
│ │ │ ├── nsclasses.pxi
│ │ │ ├── objectify.cpython-312-darwin.so
│ │ │ ├── objectify.pyx
│ │ │ ├── objectpath.pxi
│ │ │ ├── parser.pxi
│ │ │ ├── parsertarget.pxi
│ │ │ ├── proxy.pxi
│ │ │ ├── public-api.pxi
│ │ │ ├── pyclasslookup.py
│ │ │ ├── readonlytree.pxi
│ │ │ ├── relaxng.pxi
│ │ │ ├── sax.cpython-312-darwin.so
│ │ │ ├── sax.py
│ │ │ ├── saxparser.pxi
│ │ │ ├── schematron.pxi
│ │ │ ├── serializer.pxi
│ │ │ ├── usedoctest.py
│ │ │ ├── xinclude.pxi
│ │ │ ├── xmlerror.pxi
│ │ │ ├── xmlid.pxi
│ │ │ ├── xmlschema.pxi
│ │ │ ├── xpath.pxi
│ │ │ ├── xslt.pxi
│ │ │ └── xsltext.pxi
│ │ ├── lxml-5.3.0.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── LICENSES.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── markupsafe
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ └── _native.cpython-312.pyc
│ │ │ ├── _native.py
│ │ │ ├── _speedups.c
│ │ │ ├── _speedups.cpython-312-darwin.so
│ │ │ ├── _speedups.pyi
│ │ │ └── py.typed
│ │ ├── MarkupSafe-3.0.1.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── pip
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── __pip-runner__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ └── __pip-runner__.cpython-312.pyc
│ │ │ ├── _internal
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── build_env.cpython-312.pyc
│ │ │ │ │ ├── cache.cpython-312.pyc
│ │ │ │ │ ├── configuration.cpython-312.pyc
│ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ ├── main.cpython-312.pyc
│ │ │ │ │ ├── pyproject.cpython-312.pyc
│ │ │ │ │ ├── self_outdated_check.cpython-312.pyc
│ │ │ │ │ └── wheel_builder.cpython-312.pyc
│ │ │ │ ├── build_env.py
│ │ │ │ ├── cache.py
│ │ │ │ ├── cli
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── autocompletion.cpython-312.pyc
│ │ │ │ │ │ ├── base_command.cpython-312.pyc
│ │ │ │ │ │ ├── cmdoptions.cpython-312.pyc
│ │ │ │ │ │ ├── command_context.cpython-312.pyc
│ │ │ │ │ │ ├── index_command.cpython-312.pyc
│ │ │ │ │ │ ├── main_parser.cpython-312.pyc
│ │ │ │ │ │ ├── main.cpython-312.pyc
│ │ │ │ │ │ ├── parser.cpython-312.pyc
│ │ │ │ │ │ ├── progress_bars.cpython-312.pyc
│ │ │ │ │ │ ├── req_command.cpython-312.pyc
│ │ │ │ │ │ ├── spinners.cpython-312.pyc
│ │ │ │ │ │ └── status_codes.cpython-312.pyc
│ │ │ │ │ ├── autocompletion.py
│ │ │ │ │ ├── base_command.py
│ │ │ │ │ ├── cmdoptions.py
│ │ │ │ │ ├── command_context.py
│ │ │ │ │ ├── index_command.py
│ │ │ │ │ ├── main_parser.py
│ │ │ │ │ ├── main.py
│ │ │ │ │ ├── parser.py
│ │ │ │ │ ├── progress_bars.py
│ │ │ │ │ ├── req_command.py
│ │ │ │ │ ├── spinners.py
│ │ │ │ │ └── status_codes.py
│ │ │ │ ├── commands
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── cache.cpython-312.pyc
│ │ │ │ │ │ ├── check.cpython-312.pyc
│ │ │ │ │ │ ├── completion.cpython-312.pyc
│ │ │ │ │ │ ├── configuration.cpython-312.pyc
│ │ │ │ │ │ ├── debug.cpython-312.pyc
│ │ │ │ │ │ ├── download.cpython-312.pyc
│ │ │ │ │ │ ├── freeze.cpython-312.pyc
│ │ │ │ │ │ ├── hash.cpython-312.pyc
│ │ │ │ │ │ ├── help.cpython-312.pyc
│ │ │ │ │ │ ├── index.cpython-312.pyc
│ │ │ │ │ │ ├── inspect.cpython-312.pyc
│ │ │ │ │ │ ├── install.cpython-312.pyc
│ │ │ │ │ │ ├── list.cpython-312.pyc
│ │ │ │ │ │ ├── search.cpython-312.pyc
│ │ │ │ │ │ ├── show.cpython-312.pyc
│ │ │ │ │ │ ├── uninstall.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── cache.py
│ │ │ │ │ ├── check.py
│ │ │ │ │ ├── completion.py
│ │ │ │ │ ├── configuration.py
│ │ │ │ │ ├── debug.py
│ │ │ │ │ ├── download.py
│ │ │ │ │ ├── freeze.py
│ │ │ │ │ ├── hash.py
│ │ │ │ │ ├── help.py
│ │ │ │ │ ├── index.py
│ │ │ │ │ ├── inspect.py
│ │ │ │ │ ├── install.py
│ │ │ │ │ ├── list.py
│ │ │ │ │ ├── search.py
│ │ │ │ │ ├── show.py
│ │ │ │ │ ├── uninstall.py
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── configuration.py
│ │ │ │ ├── distributions
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── base.cpython-312.pyc
│ │ │ │ │ │ ├── installed.cpython-312.pyc
│ │ │ │ │ │ ├── sdist.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── installed.py
│ │ │ │ │ ├── sdist.py
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── exceptions.py
│ │ │ │ ├── index
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── collector.cpython-312.pyc
│ │ │ │ │ │ ├── package_finder.cpython-312.pyc
│ │ │ │ │ │ └── sources.cpython-312.pyc
│ │ │ │ │ ├── collector.py
│ │ │ │ │ ├── package_finder.py
│ │ │ │ │ └── sources.py
│ │ │ │ ├── locations
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _distutils.cpython-312.pyc
│ │ │ │ │ │ ├── _sysconfig.cpython-312.pyc
│ │ │ │ │ │ └── base.cpython-312.pyc
│ │ │ │ │ ├── _distutils.py
│ │ │ │ │ ├── _sysconfig.py
│ │ │ │ │ └── base.py
│ │ │ │ ├── main.py
│ │ │ │ ├── metadata
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _json.cpython-312.pyc
│ │ │ │ │ │ ├── base.cpython-312.pyc
│ │ │ │ │ │ └── pkg_resources.cpython-312.pyc
│ │ │ │ │ ├── _json.py
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── importlib
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── _compat.cpython-312.pyc
│ │ │ │ │ │ │ ├── _dists.cpython-312.pyc
│ │ │ │ │ │ │ └── _envs.cpython-312.pyc
│ │ │ │ │ │ ├── _compat.py
│ │ │ │ │ │ ├── _dists.py
│ │ │ │ │ │ └── _envs.py
│ │ │ │ │ └── pkg_resources.py
│ │ │ │ ├── models
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── candidate.cpython-312.pyc
│ │ │ │ │ │ ├── direct_url.cpython-312.pyc
│ │ │ │ │ │ ├── format_control.cpython-312.pyc
│ │ │ │ │ │ ├── index.cpython-312.pyc
│ │ │ │ │ │ ├── installation_report.cpython-312.pyc
│ │ │ │ │ │ ├── link.cpython-312.pyc
│ │ │ │ │ │ ├── scheme.cpython-312.pyc
│ │ │ │ │ │ ├── search_scope.cpython-312.pyc
│ │ │ │ │ │ ├── selection_prefs.cpython-312.pyc
│ │ │ │ │ │ ├── target_python.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── candidate.py
│ │ │ │ │ ├── direct_url.py
│ │ │ │ │ ├── format_control.py
│ │ │ │ │ ├── index.py
│ │ │ │ │ ├── installation_report.py
│ │ │ │ │ ├── link.py
│ │ │ │ │ ├── scheme.py
│ │ │ │ │ ├── search_scope.py
│ │ │ │ │ ├── selection_prefs.py
│ │ │ │ │ ├── target_python.py
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── network
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── auth.cpython-312.pyc
│ │ │ │ │ │ ├── cache.cpython-312.pyc
│ │ │ │ │ │ ├── download.cpython-312.pyc
│ │ │ │ │ │ ├── lazy_wheel.cpython-312.pyc
│ │ │ │ │ │ ├── session.cpython-312.pyc
│ │ │ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ │ │ └── xmlrpc.cpython-312.pyc
│ │ │ │ │ ├── auth.py
│ │ │ │ │ ├── cache.py
│ │ │ │ │ ├── download.py
│ │ │ │ │ ├── lazy_wheel.py
│ │ │ │ │ ├── session.py
│ │ │ │ │ ├── utils.py
│ │ │ │ │ └── xmlrpc.py
│ │ │ │ ├── operations
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── check.cpython-312.pyc
│ │ │ │ │ │ ├── freeze.cpython-312.pyc
│ │ │ │ │ │ └── prepare.cpython-312.pyc
│ │ │ │ │ ├── build
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── build_tracker.cpython-312.pyc
│ │ │ │ │ │ │ ├── metadata_editable.cpython-312.pyc
│ │ │ │ │ │ │ ├── metadata_legacy.cpython-312.pyc
│ │ │ │ │ │ │ ├── metadata.cpython-312.pyc
│ │ │ │ │ │ │ ├── wheel_editable.cpython-312.pyc
│ │ │ │ │ │ │ ├── wheel_legacy.cpython-312.pyc
│ │ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ │ ├── build_tracker.py
│ │ │ │ │ │ ├── metadata_editable.py
│ │ │ │ │ │ ├── metadata_legacy.py
│ │ │ │ │ │ ├── metadata.py
│ │ │ │ │ │ ├── wheel_editable.py
│ │ │ │ │ │ ├── wheel_legacy.py
│ │ │ │ │ │ └── wheel.py
│ │ │ │ │ ├── check.py
│ │ │ │ │ ├── freeze.py
│ │ │ │ │ ├── install
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── editable_legacy.cpython-312.pyc
│ │ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ │ ├── editable_legacy.py
│ │ │ │ │ │ └── wheel.py
│ │ │ │ │ └── prepare.py
│ │ │ │ ├── pyproject.py
│ │ │ │ ├── req
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── constructors.cpython-312.pyc
│ │ │ │ │ │ ├── req_file.cpython-312.pyc
│ │ │ │ │ │ ├── req_install.cpython-312.pyc
│ │ │ │ │ │ ├── req_set.cpython-312.pyc
│ │ │ │ │ │ └── req_uninstall.cpython-312.pyc
│ │ │ │ │ ├── constructors.py
│ │ │ │ │ ├── req_file.py
│ │ │ │ │ ├── req_install.py
│ │ │ │ │ ├── req_set.py
│ │ │ │ │ └── req_uninstall.py
│ │ │ │ ├── resolution
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ └── base.cpython-312.pyc
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── legacy
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ └── resolver.cpython-312.pyc
│ │ │ │ │ │ └── resolver.py
│ │ │ │ │ └── resolvelib
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── base.cpython-312.pyc
│ │ │ │ │ │ ├── candidates.cpython-312.pyc
│ │ │ │ │ │ ├── factory.cpython-312.pyc
│ │ │ │ │ │ ├── found_candidates.cpython-312.pyc
│ │ │ │ │ │ ├── provider.cpython-312.pyc
│ │ │ │ │ │ ├── reporter.cpython-312.pyc
│ │ │ │ │ │ ├── requirements.cpython-312.pyc
│ │ │ │ │ │ └── resolver.cpython-312.pyc
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── candidates.py
│ │ │ │ │ ├── factory.py
│ │ │ │ │ ├── found_candidates.py
│ │ │ │ │ ├── provider.py
│ │ │ │ │ ├── reporter.py
│ │ │ │ │ ├── requirements.py
│ │ │ │ │ └── resolver.py
│ │ │ │ ├── self_outdated_check.py
│ │ │ │ ├── utils
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _jaraco_text.cpython-312.pyc
│ │ │ │ │ │ ├── _log.cpython-312.pyc
│ │ │ │ │ │ ├── appdirs.cpython-312.pyc
│ │ │ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ │ │ ├── compatibility_tags.cpython-312.pyc
│ │ │ │ │ │ ├── datetime.cpython-312.pyc
│ │ │ │ │ │ ├── deprecation.cpython-312.pyc
│ │ │ │ │ │ ├── direct_url_helpers.cpython-312.pyc
│ │ │ │ │ │ ├── egg_link.cpython-312.pyc
│ │ │ │ │ │ ├── encoding.cpython-312.pyc
│ │ │ │ │ │ ├── entrypoints.cpython-312.pyc
│ │ │ │ │ │ ├── filesystem.cpython-312.pyc
│ │ │ │ │ │ ├── filetypes.cpython-312.pyc
│ │ │ │ │ │ ├── glibc.cpython-312.pyc
│ │ │ │ │ │ ├── hashes.cpython-312.pyc
│ │ │ │ │ │ ├── logging.cpython-312.pyc
│ │ │ │ │ │ ├── misc.cpython-312.pyc
│ │ │ │ │ │ ├── packaging.cpython-312.pyc
│ │ │ │ │ │ ├── retry.cpython-312.pyc
│ │ │ │ │ │ ├── setuptools_build.cpython-312.pyc
│ │ │ │ │ │ ├── subprocess.cpython-312.pyc
│ │ │ │ │ │ ├── temp_dir.cpython-312.pyc
│ │ │ │ │ │ ├── unpacking.cpython-312.pyc
│ │ │ │ │ │ ├── urls.cpython-312.pyc
│ │ │ │ │ │ ├── virtualenv.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── _jaraco_text.py
│ │ │ │ │ ├── _log.py
│ │ │ │ │ ├── appdirs.py
│ │ │ │ │ ├── compat.py
│ │ │ │ │ ├── compatibility_tags.py
│ │ │ │ │ ├── datetime.py
│ │ │ │ │ ├── deprecation.py
│ │ │ │ │ ├── direct_url_helpers.py
│ │ │ │ │ ├── egg_link.py
│ │ │ │ │ ├── encoding.py
│ │ │ │ │ ├── entrypoints.py
│ │ │ │ │ ├── filesystem.py
│ │ │ │ │ ├── filetypes.py
│ │ │ │ │ ├── glibc.py
│ │ │ │ │ ├── hashes.py
│ │ │ │ │ ├── logging.py
│ │ │ │ │ ├── misc.py
│ │ │ │ │ ├── packaging.py
│ │ │ │ │ ├── retry.py
│ │ │ │ │ ├── setuptools_build.py
│ │ │ │ │ ├── subprocess.py
│ │ │ │ │ ├── temp_dir.py
│ │ │ │ │ ├── unpacking.py
│ │ │ │ │ ├── urls.py
│ │ │ │ │ ├── virtualenv.py
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── vcs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── bazaar.cpython-312.pyc
│ │ │ │ │ │ ├── git.cpython-312.pyc
│ │ │ │ │ │ ├── mercurial.cpython-312.pyc
│ │ │ │ │ │ ├── subversion.cpython-312.pyc
│ │ │ │ │ │ └── versioncontrol.cpython-312.pyc
│ │ │ │ │ ├── bazaar.py
│ │ │ │ │ ├── git.py
│ │ │ │ │ ├── mercurial.py
│ │ │ │ │ ├── subversion.py
│ │ │ │ │ └── versioncontrol.py
│ │ │ │ └── wheel_builder.py
│ │ │ ├── _vendor
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ └── typing_extensions.cpython-312.pyc
│ │ │ │ ├── cachecontrol
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _cmd.cpython-312.pyc
│ │ │ │ │ │ ├── adapter.cpython-312.pyc
│ │ │ │ │ │ ├── cache.cpython-312.pyc
│ │ │ │ │ │ ├── controller.cpython-312.pyc
│ │ │ │ │ │ ├── filewrapper.cpython-312.pyc
│ │ │ │ │ │ ├── heuristics.cpython-312.pyc
│ │ │ │ │ │ ├── serialize.cpython-312.pyc
│ │ │ │ │ │ └── wrapper.cpython-312.pyc
│ │ │ │ │ ├── _cmd.py
│ │ │ │ │ ├── adapter.py
│ │ │ │ │ ├── cache.py
│ │ │ │ │ ├── caches
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── file_cache.cpython-312.pyc
│ │ │ │ │ │ │ └── redis_cache.cpython-312.pyc
│ │ │ │ │ │ ├── file_cache.py
│ │ │ │ │ │ └── redis_cache.py
│ │ │ │ │ ├── controller.py
│ │ │ │ │ ├── filewrapper.py
│ │ │ │ │ ├── heuristics.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── serialize.py
│ │ │ │ │ └── wrapper.py
│ │ │ │ ├── certifi
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ └── core.cpython-312.pyc
│ │ │ │ │ ├── cacert.pem
│ │ │ │ │ ├── core.py
│ │ │ │ │ └── py.typed
│ │ │ │ ├── distlib
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ │ │ ├── database.cpython-312.pyc
│ │ │ │ │ │ ├── index.cpython-312.pyc
│ │ │ │ │ │ ├── locators.cpython-312.pyc
│ │ │ │ │ │ ├── manifest.cpython-312.pyc
│ │ │ │ │ │ ├── markers.cpython-312.pyc
│ │ │ │ │ │ ├── metadata.cpython-312.pyc
│ │ │ │ │ │ ├── resources.cpython-312.pyc
│ │ │ │ │ │ ├── scripts.cpython-312.pyc
│ │ │ │ │ │ ├── util.cpython-312.pyc
│ │ │ │ │ │ ├── version.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── compat.py
│ │ │ │ │ ├── database.py
│ │ │ │ │ ├── index.py
│ │ │ │ │ ├── locators.py
│ │ │ │ │ ├── manifest.py
│ │ │ │ │ ├── markers.py
│ │ │ │ │ ├── metadata.py
│ │ │ │ │ ├── resources.py
│ │ │ │ │ ├── scripts.py
│ │ │ │ │ ├── t32.exe
│ │ │ │ │ ├── t64-arm.exe
│ │ │ │ │ ├── t64.exe
│ │ │ │ │ ├── util.py
│ │ │ │ │ ├── version.py
│ │ │ │ │ ├── w32.exe
│ │ │ │ │ ├── w64-arm.exe
│ │ │ │ │ ├── w64.exe
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── distro
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ └── distro.cpython-312.pyc
│ │ │ │ │ ├── distro.py
│ │ │ │ │ └── py.typed
│ │ │ │ ├── idna
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── codec.cpython-312.pyc
│ │ │ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ │ │ ├── core.cpython-312.pyc
│ │ │ │ │ │ ├── idnadata.cpython-312.pyc
│ │ │ │ │ │ ├── intranges.cpython-312.pyc
│ │ │ │ │ │ ├── package_data.cpython-312.pyc
│ │ │ │ │ │ └── uts46data.cpython-312.pyc
│ │ │ │ │ ├── codec.py
│ │ │ │ │ ├── compat.py
│ │ │ │ │ ├── core.py
│ │ │ │ │ ├── idnadata.py
│ │ │ │ │ ├── intranges.py
│ │ │ │ │ ├── package_data.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ └── uts46data.py
│ │ │ │ ├── msgpack
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ │ ├── ext.cpython-312.pyc
│ │ │ │ │ │ └── fallback.cpython-312.pyc
│ │ │ │ │ ├── exceptions.py
│ │ │ │ │ ├── ext.py
│ │ │ │ │ └── fallback.py
│ │ │ │ ├── packaging
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _elffile.cpython-312.pyc
│ │ │ │ │ │ ├── _manylinux.cpython-312.pyc
│ │ │ │ │ │ ├── _musllinux.cpython-312.pyc
│ │ │ │ │ │ ├── _parser.cpython-312.pyc
│ │ │ │ │ │ ├── _structures.cpython-312.pyc
│ │ │ │ │ │ ├── _tokenizer.cpython-312.pyc
│ │ │ │ │ │ ├── markers.cpython-312.pyc
│ │ │ │ │ │ ├── metadata.cpython-312.pyc
│ │ │ │ │ │ ├── requirements.cpython-312.pyc
│ │ │ │ │ │ ├── specifiers.cpython-312.pyc
│ │ │ │ │ │ ├── tags.cpython-312.pyc
│ │ │ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ │ │ └── version.cpython-312.pyc
│ │ │ │ │ ├── _elffile.py
│ │ │ │ │ ├── _manylinux.py
│ │ │ │ │ ├── _musllinux.py
│ │ │ │ │ ├── _parser.py
│ │ │ │ │ ├── _structures.py
│ │ │ │ │ ├── _tokenizer.py
│ │ │ │ │ ├── markers.py
│ │ │ │ │ ├── metadata.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── requirements.py
│ │ │ │ │ ├── specifiers.py
│ │ │ │ │ ├── tags.py
│ │ │ │ │ ├── utils.py
│ │ │ │ │ └── version.py
│ │ │ │ ├── pkg_resources
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── __pycache__
│ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ ├── platformdirs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ ├── android.cpython-312.pyc
│ │ │ │ │ │ ├── api.cpython-312.pyc
│ │ │ │ │ │ ├── macos.cpython-312.pyc
│ │ │ │ │ │ ├── unix.cpython-312.pyc
│ │ │ │ │ │ ├── version.cpython-312.pyc
│ │ │ │ │ │ └── windows.cpython-312.pyc
│ │ │ │ │ ├── android.py
│ │ │ │ │ ├── api.py
│ │ │ │ │ ├── macos.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── unix.py
│ │ │ │ │ ├── version.py
│ │ │ │ │ └── windows.py
│ │ │ │ ├── pygments
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ ├── cmdline.cpython-312.pyc
│ │ │ │ │ │ ├── console.cpython-312.pyc
│ │ │ │ │ │ ├── filter.cpython-312.pyc
│ │ │ │ │ │ ├── formatter.cpython-312.pyc
│ │ │ │ │ │ ├── lexer.cpython-312.pyc
│ │ │ │ │ │ ├── modeline.cpython-312.pyc
│ │ │ │ │ │ ├── plugin.cpython-312.pyc
│ │ │ │ │ │ ├── regexopt.cpython-312.pyc
│ │ │ │ │ │ ├── scanner.cpython-312.pyc
│ │ │ │ │ │ ├── sphinxext.cpython-312.pyc
│ │ │ │ │ │ ├── style.cpython-312.pyc
│ │ │ │ │ │ ├── token.cpython-312.pyc
│ │ │ │ │ │ ├── unistring.cpython-312.pyc
│ │ │ │ │ │ └── util.cpython-312.pyc
│ │ │ │ │ ├── cmdline.py
│ │ │ │ │ ├── console.py
│ │ │ │ │ ├── filter.py
│ │ │ │ │ ├── filters
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── formatter.py
│ │ │ │ │ ├── formatters
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── _mapping.cpython-312.pyc
│ │ │ │ │ │ │ ├── bbcode.cpython-312.pyc
│ │ │ │ │ │ │ ├── groff.cpython-312.pyc
│ │ │ │ │ │ │ ├── html.cpython-312.pyc
│ │ │ │ │ │ │ ├── img.cpython-312.pyc
│ │ │ │ │ │ │ ├── irc.cpython-312.pyc
│ │ │ │ │ │ │ ├── latex.cpython-312.pyc
│ │ │ │ │ │ │ ├── other.cpython-312.pyc
│ │ │ │ │ │ │ ├── pangomarkup.cpython-312.pyc
│ │ │ │ │ │ │ ├── rtf.cpython-312.pyc
│ │ │ │ │ │ │ ├── svg.cpython-312.pyc
│ │ │ │ │ │ │ ├── terminal.cpython-312.pyc
│ │ │ │ │ │ │ └── terminal256.cpython-312.pyc
│ │ │ │ │ │ ├── _mapping.py
│ │ │ │ │ │ ├── bbcode.py
│ │ │ │ │ │ ├── groff.py
│ │ │ │ │ │ ├── html.py
│ │ │ │ │ │ ├── img.py
│ │ │ │ │ │ ├── irc.py
│ │ │ │ │ │ ├── latex.py
│ │ │ │ │ │ ├── other.py
│ │ │ │ │ │ ├── pangomarkup.py
│ │ │ │ │ │ ├── rtf.py
│ │ │ │ │ │ ├── svg.py
│ │ │ │ │ │ ├── terminal.py
│ │ │ │ │ │ └── terminal256.py
│ │ │ │ │ ├── lexer.py
│ │ │ │ │ ├── lexers
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── _mapping.cpython-312.pyc
│ │ │ │ │ │ │ └── python.cpython-312.pyc
│ │ │ │ │ │ ├── _mapping.py
│ │ │ │ │ │ └── python.py
│ │ │ │ │ ├── modeline.py
│ │ │ │ │ ├── plugin.py
│ │ │ │ │ ├── regexopt.py
│ │ │ │ │ ├── scanner.py
│ │ │ │ │ ├── sphinxext.py
│ │ │ │ │ ├── style.py
│ │ │ │ │ ├── styles
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ └── _mapping.cpython-312.pyc
│ │ │ │ │ │ └── _mapping.py
│ │ │ │ │ ├── token.py
│ │ │ │ │ ├── unistring.py
│ │ │ │ │ └── util.py
│ │ │ │ ├── pyproject_hooks
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _compat.cpython-312.pyc
│ │ │ │ │ │ └── _impl.cpython-312.pyc
│ │ │ │ │ ├── _compat.py
│ │ │ │ │ ├── _impl.py
│ │ │ │ │ └── _in_process
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ └── _in_process.cpython-312.pyc
│ │ │ │ │ └── _in_process.py
│ │ │ │ ├── requests
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __version__.cpython-312.pyc
│ │ │ │ │ │ ├── _internal_utils.cpython-312.pyc
│ │ │ │ │ │ ├── adapters.cpython-312.pyc
│ │ │ │ │ │ ├── api.cpython-312.pyc
│ │ │ │ │ │ ├── auth.cpython-312.pyc
│ │ │ │ │ │ ├── certs.cpython-312.pyc
│ │ │ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ │ │ ├── cookies.cpython-312.pyc
│ │ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ │ ├── help.cpython-312.pyc
│ │ │ │ │ │ ├── hooks.cpython-312.pyc
│ │ │ │ │ │ ├── models.cpython-312.pyc
│ │ │ │ │ │ ├── packages.cpython-312.pyc
│ │ │ │ │ │ ├── sessions.cpython-312.pyc
│ │ │ │ │ │ ├── status_codes.cpython-312.pyc
│ │ │ │ │ │ ├── structures.cpython-312.pyc
│ │ │ │ │ │ └── utils.cpython-312.pyc
│ │ │ │ │ ├── __version__.py
│ │ │ │ │ ├── _internal_utils.py
│ │ │ │ │ ├── adapters.py
│ │ │ │ │ ├── api.py
│ │ │ │ │ ├── auth.py
│ │ │ │ │ ├── certs.py
│ │ │ │ │ ├── compat.py
│ │ │ │ │ ├── cookies.py
│ │ │ │ │ ├── exceptions.py
│ │ │ │ │ ├── help.py
│ │ │ │ │ ├── hooks.py
│ │ │ │ │ ├── models.py
│ │ │ │ │ ├── packages.py
│ │ │ │ │ ├── sessions.py
│ │ │ │ │ ├── status_codes.py
│ │ │ │ │ ├── structures.py
│ │ │ │ │ └── utils.py
│ │ │ │ ├── resolvelib
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── providers.cpython-312.pyc
│ │ │ │ │ │ ├── reporters.cpython-312.pyc
│ │ │ │ │ │ ├── resolvers.cpython-312.pyc
│ │ │ │ │ │ └── structs.cpython-312.pyc
│ │ │ │ │ ├── compat
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ └── collections_abc.cpython-312.pyc
│ │ │ │ │ │ └── collections_abc.py
│ │ │ │ │ ├── providers.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── reporters.py
│ │ │ │ │ ├── resolvers.py
│ │ │ │ │ └── structs.py
│ │ │ │ ├── rich
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ ├── _cell_widths.cpython-312.pyc
│ │ │ │ │ │ ├── _emoji_codes.cpython-312.pyc
│ │ │ │ │ │ ├── _emoji_replace.cpython-312.pyc
│ │ │ │ │ │ ├── _export_format.cpython-312.pyc
│ │ │ │ │ │ ├── _extension.cpython-312.pyc
│ │ │ │ │ │ ├── _fileno.cpython-312.pyc
│ │ │ │ │ │ ├── _inspect.cpython-312.pyc
│ │ │ │ │ │ ├── _log_render.cpython-312.pyc
│ │ │ │ │ │ ├── _loop.cpython-312.pyc
│ │ │ │ │ │ ├── _null_file.cpython-312.pyc
│ │ │ │ │ │ ├── _palettes.cpython-312.pyc
│ │ │ │ │ │ ├── _pick.cpython-312.pyc
│ │ │ │ │ │ ├── _ratio.cpython-312.pyc
│ │ │ │ │ │ ├── _spinners.cpython-312.pyc
│ │ │ │ │ │ ├── _stack.cpython-312.pyc
│ │ │ │ │ │ ├── _timer.cpython-312.pyc
│ │ │ │ │ │ ├── _win32_console.cpython-312.pyc
│ │ │ │ │ │ ├── _windows_renderer.cpython-312.pyc
│ │ │ │ │ │ ├── _windows.cpython-312.pyc
│ │ │ │ │ │ ├── _wrap.cpython-312.pyc
│ │ │ │ │ │ ├── abc.cpython-312.pyc
│ │ │ │ │ │ ├── align.cpython-312.pyc
│ │ │ │ │ │ ├── ansi.cpython-312.pyc
│ │ │ │ │ │ ├── bar.cpython-312.pyc
│ │ │ │ │ │ ├── box.cpython-312.pyc
│ │ │ │ │ │ ├── cells.cpython-312.pyc
│ │ │ │ │ │ ├── color_triplet.cpython-312.pyc
│ │ │ │ │ │ ├── color.cpython-312.pyc
│ │ │ │ │ │ ├── columns.cpython-312.pyc
│ │ │ │ │ │ ├── console.cpython-312.pyc
│ │ │ │ │ │ ├── constrain.cpython-312.pyc
│ │ │ │ │ │ ├── containers.cpython-312.pyc
│ │ │ │ │ │ ├── control.cpython-312.pyc
│ │ │ │ │ │ ├── default_styles.cpython-312.pyc
│ │ │ │ │ │ ├── diagnose.cpython-312.pyc
│ │ │ │ │ │ ├── emoji.cpython-312.pyc
│ │ │ │ │ │ ├── errors.cpython-312.pyc
│ │ │ │ │ │ ├── file_proxy.cpython-312.pyc
│ │ │ │ │ │ ├── filesize.cpython-312.pyc
│ │ │ │ │ │ ├── highlighter.cpython-312.pyc
│ │ │ │ │ │ ├── json.cpython-312.pyc
│ │ │ │ │ │ ├── jupyter.cpython-312.pyc
│ │ │ │ │ │ ├── layout.cpython-312.pyc
│ │ │ │ │ │ ├── live_render.cpython-312.pyc
│ │ │ │ │ │ ├── live.cpython-312.pyc
│ │ │ │ │ │ ├── logging.cpython-312.pyc
│ │ │ │ │ │ ├── markup.cpython-312.pyc
│ │ │ │ │ │ ├── measure.cpython-312.pyc
│ │ │ │ │ │ ├── padding.cpython-312.pyc
│ │ │ │ │ │ ├── pager.cpython-312.pyc
│ │ │ │ │ │ ├── palette.cpython-312.pyc
│ │ │ │ │ │ ├── panel.cpython-312.pyc
│ │ │ │ │ │ ├── pretty.cpython-312.pyc
│ │ │ │ │ │ ├── progress_bar.cpython-312.pyc
│ │ │ │ │ │ ├── progress.cpython-312.pyc
│ │ │ │ │ │ ├── prompt.cpython-312.pyc
│ │ │ │ │ │ ├── protocol.cpython-312.pyc
│ │ │ │ │ │ ├── region.cpython-312.pyc
│ │ │ │ │ │ ├── repr.cpython-312.pyc
│ │ │ │ │ │ ├── rule.cpython-312.pyc
│ │ │ │ │ │ ├── scope.cpython-312.pyc
│ │ │ │ │ │ ├── screen.cpython-312.pyc
│ │ │ │ │ │ ├── segment.cpython-312.pyc
│ │ │ │ │ │ ├── spinner.cpython-312.pyc
│ │ │ │ │ │ ├── status.cpython-312.pyc
│ │ │ │ │ │ ├── style.cpython-312.pyc
│ │ │ │ │ │ ├── styled.cpython-312.pyc
│ │ │ │ │ │ ├── syntax.cpython-312.pyc
│ │ │ │ │ │ ├── table.cpython-312.pyc
│ │ │ │ │ │ ├── terminal_theme.cpython-312.pyc
│ │ │ │ │ │ ├── text.cpython-312.pyc
│ │ │ │ │ │ ├── theme.cpython-312.pyc
│ │ │ │ │ │ ├── themes.cpython-312.pyc
│ │ │ │ │ │ ├── traceback.cpython-312.pyc
│ │ │ │ │ │ └── tree.cpython-312.pyc
│ │ │ │ │ ├── _cell_widths.py
│ │ │ │ │ ├── _emoji_codes.py
│ │ │ │ │ ├── _emoji_replace.py
│ │ │ │ │ ├── _export_format.py
│ │ │ │ │ ├── _extension.py
│ │ │ │ │ ├── _fileno.py
│ │ │ │ │ ├── _inspect.py
│ │ │ │ │ ├── _log_render.py
│ │ │ │ │ ├── _loop.py
│ │ │ │ │ ├── _null_file.py
│ │ │ │ │ ├── _palettes.py
│ │ │ │ │ ├── _pick.py
│ │ │ │ │ ├── _ratio.py
│ │ │ │ │ ├── _spinners.py
│ │ │ │ │ ├── _stack.py
│ │ │ │ │ ├── _timer.py
│ │ │ │ │ ├── _win32_console.py
│ │ │ │ │ ├── _windows_renderer.py
│ │ │ │ │ ├── _windows.py
│ │ │ │ │ ├── _wrap.py
│ │ │ │ │ ├── abc.py
│ │ │ │ │ ├── align.py
│ │ │ │ │ ├── ansi.py
│ │ │ │ │ ├── bar.py
│ │ │ │ │ ├── box.py
│ │ │ │ │ ├── cells.py
│ │ │ │ │ ├── color_triplet.py
│ │ │ │ │ ├── color.py
│ │ │ │ │ ├── columns.py
│ │ │ │ │ ├── console.py
│ │ │ │ │ ├── constrain.py
│ │ │ │ │ ├── containers.py
│ │ │ │ │ ├── control.py
│ │ │ │ │ ├── default_styles.py
│ │ │ │ │ ├── diagnose.py
│ │ │ │ │ ├── emoji.py
│ │ │ │ │ ├── errors.py
│ │ │ │ │ ├── file_proxy.py
│ │ │ │ │ ├── filesize.py
│ │ │ │ │ ├── highlighter.py
│ │ │ │ │ ├── json.py
│ │ │ │ │ ├── jupyter.py
│ │ │ │ │ ├── layout.py
│ │ │ │ │ ├── live_render.py
│ │ │ │ │ ├── live.py
│ │ │ │ │ ├── logging.py
│ │ │ │ │ ├── markup.py
│ │ │ │ │ ├── measure.py
│ │ │ │ │ ├── padding.py
│ │ │ │ │ ├── pager.py
│ │ │ │ │ ├── palette.py
│ │ │ │ │ ├── panel.py
│ │ │ │ │ ├── pretty.py
│ │ │ │ │ ├── progress_bar.py
│ │ │ │ │ ├── progress.py
│ │ │ │ │ ├── prompt.py
│ │ │ │ │ ├── protocol.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── region.py
│ │ │ │ │ ├── repr.py
│ │ │ │ │ ├── rule.py
│ │ │ │ │ ├── scope.py
│ │ │ │ │ ├── screen.py
│ │ │ │ │ ├── segment.py
│ │ │ │ │ ├── spinner.py
│ │ │ │ │ ├── status.py
│ │ │ │ │ ├── style.py
│ │ │ │ │ ├── styled.py
│ │ │ │ │ ├── syntax.py
│ │ │ │ │ ├── table.py
│ │ │ │ │ ├── terminal_theme.py
│ │ │ │ │ ├── text.py
│ │ │ │ │ ├── theme.py
│ │ │ │ │ ├── themes.py
│ │ │ │ │ ├── traceback.py
│ │ │ │ │ └── tree.py
│ │ │ │ ├── tomli
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _parser.cpython-312.pyc
│ │ │ │ │ │ ├── _re.cpython-312.pyc
│ │ │ │ │ │ └── _types.cpython-312.pyc
│ │ │ │ │ ├── _parser.py
│ │ │ │ │ ├── _re.py
│ │ │ │ │ ├── _types.py
│ │ │ │ │ └── py.typed
│ │ │ │ ├── truststore
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _api.cpython-312.pyc
│ │ │ │ │ │ ├── _macos.cpython-312.pyc
│ │ │ │ │ │ ├── _openssl.cpython-312.pyc
│ │ │ │ │ │ ├── _ssl_constants.cpython-312.pyc
│ │ │ │ │ │ └── _windows.cpython-312.pyc
│ │ │ │ │ ├── _api.py
│ │ │ │ │ ├── _macos.py
│ │ │ │ │ ├── _openssl.py
│ │ │ │ │ ├── _ssl_constants.py
│ │ │ │ │ ├── _windows.py
│ │ │ │ │ └── py.typed
│ │ │ │ ├── typing_extensions.py
│ │ │ │ ├── urllib3
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _collections.cpython-312.pyc
│ │ │ │ │ │ ├── _version.cpython-312.pyc
│ │ │ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ │ │ ├── connectionpool.cpython-312.pyc
│ │ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ │ ├── fields.cpython-312.pyc
│ │ │ │ │ │ ├── filepost.cpython-312.pyc
│ │ │ │ │ │ ├── poolmanager.cpython-312.pyc
│ │ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ │ └── response.cpython-312.pyc
│ │ │ │ │ ├── _collections.py
│ │ │ │ │ ├── _version.py
│ │ │ │ │ ├── connection.py
│ │ │ │ │ ├── connectionpool.py
│ │ │ │ │ ├── contrib
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── _appengine_environ.cpython-312.pyc
│ │ │ │ │ │ │ ├── appengine.cpython-312.pyc
│ │ │ │ │ │ │ ├── ntlmpool.cpython-312.pyc
│ │ │ │ │ │ │ ├── pyopenssl.cpython-312.pyc
│ │ │ │ │ │ │ ├── securetransport.cpython-312.pyc
│ │ │ │ │ │ │ └── socks.cpython-312.pyc
│ │ │ │ │ │ ├── _appengine_environ.py
│ │ │ │ │ │ ├── _securetransport
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ │ ├── bindings.cpython-312.pyc
│ │ │ │ │ │ │ │ └── low_level.cpython-312.pyc
│ │ │ │ │ │ │ ├── bindings.py
│ │ │ │ │ │ │ └── low_level.py
│ │ │ │ │ │ ├── appengine.py
│ │ │ │ │ │ ├── ntlmpool.py
│ │ │ │ │ │ ├── pyopenssl.py
│ │ │ │ │ │ ├── securetransport.py
│ │ │ │ │ │ └── socks.py
│ │ │ │ │ ├── exceptions.py
│ │ │ │ │ ├── fields.py
│ │ │ │ │ ├── filepost.py
│ │ │ │ │ ├── packages
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ └── six.cpython-312.pyc
│ │ │ │ │ │ ├── backports
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ │ ├── makefile.cpython-312.pyc
│ │ │ │ │ │ │ │ └── weakref_finalize.cpython-312.pyc
│ │ │ │ │ │ │ ├── makefile.py
│ │ │ │ │ │ │ └── weakref_finalize.py
│ │ │ │ │ │ └── six.py
│ │ │ │ │ ├── poolmanager.py
│ │ │ │ │ ├── request.py
│ │ │ │ │ ├── response.py
│ │ │ │ │ └── util
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ │ │ ├── proxy.cpython-312.pyc
│ │ │ │ │ │ ├── queue.cpython-312.pyc
│ │ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ │ ├── response.cpython-312.pyc
│ │ │ │ │ │ ├── retry.cpython-312.pyc
│ │ │ │ │ │ ├── ssl_.cpython-312.pyc
│ │ │ │ │ │ ├── ssl_match_hostname.cpython-312.pyc
│ │ │ │ │ │ ├── ssltransport.cpython-312.pyc
│ │ │ │ │ │ ├── timeout.cpython-312.pyc
│ │ │ │ │ │ ├── url.cpython-312.pyc
│ │ │ │ │ │ └── wait.cpython-312.pyc
│ │ │ │ │ ├── connection.py
│ │ │ │ │ ├── proxy.py
│ │ │ │ │ ├── queue.py
│ │ │ │ │ ├── request.py
│ │ │ │ │ ├── response.py
│ │ │ │ │ ├── retry.py
│ │ │ │ │ ├── ssl_.py
│ │ │ │ │ ├── ssl_match_hostname.py
│ │ │ │ │ ├── ssltransport.py
│ │ │ │ │ ├── timeout.py
│ │ │ │ │ ├── url.py
│ │ │ │ │ └── wait.py
│ │ │ │ └── vendor.txt
│ │ │ └── py.typed
│ │ ├── pip-24.2.dist-info
│ │ │ ├── AUTHORS.txt
│ │ │ ├── entry_points.txt
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── requests
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __version__.cpython-312.pyc
│ │ │ │ ├── _internal_utils.cpython-312.pyc
│ │ │ │ ├── adapters.cpython-312.pyc
│ │ │ │ ├── api.cpython-312.pyc
│ │ │ │ ├── auth.cpython-312.pyc
│ │ │ │ ├── certs.cpython-312.pyc
│ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ ├── cookies.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── help.cpython-312.pyc
│ │ │ │ ├── hooks.cpython-312.pyc
│ │ │ │ ├── models.cpython-312.pyc
│ │ │ │ ├── packages.cpython-312.pyc
│ │ │ │ ├── sessions.cpython-312.pyc
│ │ │ │ ├── status_codes.cpython-312.pyc
│ │ │ │ ├── structures.cpython-312.pyc
│ │ │ │ └── utils.cpython-312.pyc
│ │ │ ├── __version__.py
│ │ │ ├── _internal_utils.py
│ │ │ ├── adapters.py
│ │ │ ├── api.py
│ │ │ ├── auth.py
│ │ │ ├── certs.py
│ │ │ ├── compat.py
│ │ │ ├── cookies.py
│ │ │ ├── exceptions.py
│ │ │ ├── help.py
│ │ │ ├── hooks.py
│ │ │ ├── models.py
│ │ │ ├── packages.py
│ │ │ ├── sessions.py
│ │ │ ├── status_codes.py
│ │ │ ├── structures.py
│ │ │ └── utils.py
│ │ ├── requests-2.32.3.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── soupsieve
│ │ │ ├── __init__.py
│ │ │ ├── __meta__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __meta__.cpython-312.pyc
│ │ │ │ ├── css_match.cpython-312.pyc
│ │ │ │ ├── css_parser.cpython-312.pyc
│ │ │ │ ├── css_types.cpython-312.pyc
│ │ │ │ ├── pretty.cpython-312.pyc
│ │ │ │ └── util.cpython-312.pyc
│ │ │ ├── css_match.py
│ │ │ ├── css_parser.py
│ │ │ ├── css_types.py
│ │ │ ├── pretty.py
│ │ │ ├── py.typed
│ │ │ └── util.py
│ │ ├── soupsieve-2.6.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── licenses
│ │ │ │ └── LICENSE.md
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── urllib3
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _base_connection.cpython-312.pyc
│ │ │ │ ├── _collections.cpython-312.pyc
│ │ │ │ ├── _request_methods.cpython-312.pyc
│ │ │ │ ├── _version.cpython-312.pyc
│ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ ├── connectionpool.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── fields.cpython-312.pyc
│ │ │ │ ├── filepost.cpython-312.pyc
│ │ │ │ ├── poolmanager.cpython-312.pyc
│ │ │ │ └── response.cpython-312.pyc
│ │ │ ├── _base_connection.py
│ │ │ ├── _collections.py
│ │ │ ├── _request_methods.py
│ │ │ ├── _version.py
│ │ │ ├── connection.py
│ │ │ ├── connectionpool.py
│ │ │ ├── contrib
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── pyopenssl.cpython-312.pyc
│ │ │ │ │ └── socks.cpython-312.pyc
│ │ │ │ ├── emscripten
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ │ │ ├── fetch.cpython-312.pyc
│ │ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ │ └── response.cpython-312.pyc
│ │ │ │ │ ├── connection.py
│ │ │ │ │ ├── emscripten_fetch_worker.js
│ │ │ │ │ ├── fetch.py
│ │ │ │ │ ├── request.py
│ │ │ │ │ └── response.py
│ │ │ │ ├── pyopenssl.py
│ │ │ │ └── socks.py
│ │ │ ├── exceptions.py
│ │ │ ├── fields.py
│ │ │ ├── filepost.py
│ │ │ ├── http2
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ │ └── probe.cpython-312.pyc
│ │ │ │ ├── connection.py
│ │ │ │ └── probe.py
│ │ │ ├── poolmanager.py
│ │ │ ├── py.typed
│ │ │ ├── response.py
│ │ │ └── util
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ ├── proxy.cpython-312.pyc
│ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ ├── response.cpython-312.pyc
│ │ │ │ ├── retry.cpython-312.pyc
│ │ │ │ ├── ssl_.cpython-312.pyc
│ │ │ │ ├── ssl_match_hostname.cpython-312.pyc
│ │ │ │ ├── ssltransport.cpython-312.pyc
│ │ │ │ ├── timeout.cpython-312.pyc
│ │ │ │ ├── url.cpython-312.pyc
│ │ │ │ ├── util.cpython-312.pyc
│ │ │ │ └── wait.cpython-312.pyc
│ │ │ ├── connection.py
│ │ │ ├── proxy.py
│ │ │ ├── request.py
│ │ │ ├── response.py
│ │ │ ├── retry.py
│ │ │ ├── ssl_.py
│ │ │ ├── ssl_match_hostname.py
│ │ │ ├── ssltransport.py
│ │ │ ├── timeout.py
│ │ │ ├── url.py
│ │ │ ├── util.py
│ │ │ └── wait.py
│ │ ├── urllib3-2.2.3.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── licenses
│ │ │ │ └── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── useragent
│ │ │ ├── __init__.py
│ │ │ ├── __init__.pyc
│ │ │ ├── __pycache__
│ │ │ │ └── __init__.cpython-312.pyc
│ │ │ ├── resources
│ │ │ │ └── user_agent_data.json
│ │ │ └── test
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ └── __init__.cpython-312.pyc
│ │ │ ├── test_additional_os.json
│ │ │ ├── test_browser.json
│ │ │ ├── test_device.json
│ │ │ ├── test_firefox.json
│ │ │ ├── test_os.json
│ │ │ └── test_pgts_browser.json
│ │ ├── useragent-0.1.1.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── werkzeug
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _internal.cpython-312.pyc
│ │ │ │ ├── _reloader.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── formparser.cpython-312.pyc
│ │ │ │ ├── http.cpython-312.pyc
│ │ │ │ ├── local.cpython-312.pyc
│ │ │ │ ├── security.cpython-312.pyc
│ │ │ │ ├── serving.cpython-312.pyc
│ │ │ │ ├── test.cpython-312.pyc
│ │ │ │ ├── testapp.cpython-312.pyc
│ │ │ │ ├── urls.cpython-312.pyc
│ │ │ │ ├── user_agent.cpython-312.pyc
│ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ └── wsgi.cpython-312.pyc
│ │ │ ├── _internal.py
│ │ │ ├── _reloader.py
│ │ │ ├── datastructures
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── accept.cpython-312.pyc
│ │ │ │ │ ├── auth.cpython-312.pyc
│ │ │ │ │ ├── cache_control.cpython-312.pyc
│ │ │ │ │ ├── csp.cpython-312.pyc
│ │ │ │ │ ├── etag.cpython-312.pyc
│ │ │ │ │ ├── file_storage.cpython-312.pyc
│ │ │ │ │ ├── headers.cpython-312.pyc
│ │ │ │ │ ├── mixins.cpython-312.pyc
│ │ │ │ │ ├── range.cpython-312.pyc
│ │ │ │ │ └── structures.cpython-312.pyc
│ │ │ │ ├── accept.py
│ │ │ │ ├── accept.pyi
│ │ │ │ ├── auth.py
│ │ │ │ ├── cache_control.py
│ │ │ │ ├── cache_control.pyi
│ │ │ │ ├── csp.py
│ │ │ │ ├── csp.pyi
│ │ │ │ ├── etag.py
│ │ │ │ ├── etag.pyi
│ │ │ │ ├── file_storage.py
│ │ │ │ ├── file_storage.pyi
│ │ │ │ ├── headers.py
│ │ │ │ ├── headers.pyi
│ │ │ │ ├── mixins.py
│ │ │ │ ├── mixins.pyi
│ │ │ │ ├── range.py
│ │ │ │ ├── range.pyi
│ │ │ │ ├── structures.py
│ │ │ │ └── structures.pyi
│ │ │ ├── debug
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── console.cpython-312.pyc
│ │ │ │ │ ├── repr.cpython-312.pyc
│ │ │ │ │ └── tbtools.cpython-312.pyc
│ │ │ │ ├── console.py
│ │ │ │ ├── repr.py
│ │ │ │ ├── shared
│ │ │ │ │ ├── console.png
│ │ │ │ │ ├── debugger.js
│ │ │ │ │ ├── ICON_LICENSE.md
│ │ │ │ │ ├── less.png
│ │ │ │ │ ├── more.png
│ │ │ │ │ └── style.css
│ │ │ │ └── tbtools.py
│ │ │ ├── exceptions.py
│ │ │ ├── formparser.py
│ │ │ ├── http.py
│ │ │ ├── local.py
│ │ │ ├── middleware
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── dispatcher.cpython-312.pyc
│ │ │ │ │ ├── http_proxy.cpython-312.pyc
│ │ │ │ │ ├── lint.cpython-312.pyc
│ │ │ │ │ ├── profiler.cpython-312.pyc
│ │ │ │ │ ├── proxy_fix.cpython-312.pyc
│ │ │ │ │ └── shared_data.cpython-312.pyc
│ │ │ │ ├── dispatcher.py
│ │ │ │ ├── http_proxy.py
│ │ │ │ ├── lint.py
│ │ │ │ ├── profiler.py
│ │ │ │ ├── proxy_fix.py
│ │ │ │ └── shared_data.py
│ │ │ ├── py.typed
│ │ │ ├── routing
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── converters.cpython-312.pyc
│ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ ├── map.cpython-312.pyc
│ │ │ │ │ ├── matcher.cpython-312.pyc
│ │ │ │ │ └── rules.cpython-312.pyc
│ │ │ │ ├── converters.py
│ │ │ │ ├── exceptions.py
│ │ │ │ ├── map.py
│ │ │ │ ├── matcher.py
│ │ │ │ └── rules.py
│ │ │ ├── sansio
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── http.cpython-312.pyc
│ │ │ │ │ ├── multipart.cpython-312.pyc
│ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ ├── response.cpython-312.pyc
│ │ │ │ │ └── utils.cpython-312.pyc
│ │ │ │ ├── http.py
│ │ │ │ ├── multipart.py
│ │ │ │ ├── request.py
│ │ │ │ ├── response.py
│ │ │ │ └── utils.py
│ │ │ ├── security.py
│ │ │ ├── serving.py
│ │ │ ├── test.py
│ │ │ ├── testapp.py
│ │ │ ├── urls.py
│ │ │ ├── user_agent.py
│ │ │ ├── utils.py
│ │ │ ├── wrappers
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ └── response.cpython-312.pyc
│ │ │ │ ├── request.py
│ │ │ │ └── response.py
│ │ │ └── wsgi.py
│ │ └── werkzeug-3.0.4.dist-info
│ │ ├── INSTALLER
│ │ ├── LICENSE.txt
│ │ ├── METADATA
│ │ ├── RECORD
│ │ └── WHEEL
│ ├── pyvenv.cfg
│ ├── static
│ │ └── styles.css
│ ├── templates
│ │ └── index.html
│ └── test.py
├── cline_config.json
├── mcp_server.py
├── README.md
├── search_results.json
├── settings.json
└── test_files
├── text1.txt
└── text2.txt
```
# Files
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/charset_normalizer/constant.py:
--------------------------------------------------------------------------------
```python
1 | # -*- coding: utf-8 -*-
2 | from codecs import BOM_UTF8, BOM_UTF16_BE, BOM_UTF16_LE, BOM_UTF32_BE, BOM_UTF32_LE
3 | from encodings.aliases import aliases
4 | from re import IGNORECASE, compile as re_compile
5 | from typing import Dict, List, Set, Union
6 |
7 | # Contain for each eligible encoding a list of/item bytes SIG/BOM
8 | ENCODING_MARKS: Dict[str, Union[bytes, List[bytes]]] = {
9 | "utf_8": BOM_UTF8,
10 | "utf_7": [
11 | b"\x2b\x2f\x76\x38",
12 | b"\x2b\x2f\x76\x39",
13 | b"\x2b\x2f\x76\x2b",
14 | b"\x2b\x2f\x76\x2f",
15 | b"\x2b\x2f\x76\x38\x2d",
16 | ],
17 | "gb18030": b"\x84\x31\x95\x33",
18 | "utf_32": [BOM_UTF32_BE, BOM_UTF32_LE],
19 | "utf_16": [BOM_UTF16_BE, BOM_UTF16_LE],
20 | }
21 |
22 | TOO_SMALL_SEQUENCE: int = 32
23 | TOO_BIG_SEQUENCE: int = int(10e6)
24 |
25 | UTF8_MAXIMAL_ALLOCATION: int = 1_112_064
26 |
27 | # Up-to-date Unicode ucd/15.0.0
28 | UNICODE_RANGES_COMBINED: Dict[str, range] = {
29 | "Control character": range(32),
30 | "Basic Latin": range(32, 128),
31 | "Latin-1 Supplement": range(128, 256),
32 | "Latin Extended-A": range(256, 384),
33 | "Latin Extended-B": range(384, 592),
34 | "IPA Extensions": range(592, 688),
35 | "Spacing Modifier Letters": range(688, 768),
36 | "Combining Diacritical Marks": range(768, 880),
37 | "Greek and Coptic": range(880, 1024),
38 | "Cyrillic": range(1024, 1280),
39 | "Cyrillic Supplement": range(1280, 1328),
40 | "Armenian": range(1328, 1424),
41 | "Hebrew": range(1424, 1536),
42 | "Arabic": range(1536, 1792),
43 | "Syriac": range(1792, 1872),
44 | "Arabic Supplement": range(1872, 1920),
45 | "Thaana": range(1920, 1984),
46 | "NKo": range(1984, 2048),
47 | "Samaritan": range(2048, 2112),
48 | "Mandaic": range(2112, 2144),
49 | "Syriac Supplement": range(2144, 2160),
50 | "Arabic Extended-B": range(2160, 2208),
51 | "Arabic Extended-A": range(2208, 2304),
52 | "Devanagari": range(2304, 2432),
53 | "Bengali": range(2432, 2560),
54 | "Gurmukhi": range(2560, 2688),
55 | "Gujarati": range(2688, 2816),
56 | "Oriya": range(2816, 2944),
57 | "Tamil": range(2944, 3072),
58 | "Telugu": range(3072, 3200),
59 | "Kannada": range(3200, 3328),
60 | "Malayalam": range(3328, 3456),
61 | "Sinhala": range(3456, 3584),
62 | "Thai": range(3584, 3712),
63 | "Lao": range(3712, 3840),
64 | "Tibetan": range(3840, 4096),
65 | "Myanmar": range(4096, 4256),
66 | "Georgian": range(4256, 4352),
67 | "Hangul Jamo": range(4352, 4608),
68 | "Ethiopic": range(4608, 4992),
69 | "Ethiopic Supplement": range(4992, 5024),
70 | "Cherokee": range(5024, 5120),
71 | "Unified Canadian Aboriginal Syllabics": range(5120, 5760),
72 | "Ogham": range(5760, 5792),
73 | "Runic": range(5792, 5888),
74 | "Tagalog": range(5888, 5920),
75 | "Hanunoo": range(5920, 5952),
76 | "Buhid": range(5952, 5984),
77 | "Tagbanwa": range(5984, 6016),
78 | "Khmer": range(6016, 6144),
79 | "Mongolian": range(6144, 6320),
80 | "Unified Canadian Aboriginal Syllabics Extended": range(6320, 6400),
81 | "Limbu": range(6400, 6480),
82 | "Tai Le": range(6480, 6528),
83 | "New Tai Lue": range(6528, 6624),
84 | "Khmer Symbols": range(6624, 6656),
85 | "Buginese": range(6656, 6688),
86 | "Tai Tham": range(6688, 6832),
87 | "Combining Diacritical Marks Extended": range(6832, 6912),
88 | "Balinese": range(6912, 7040),
89 | "Sundanese": range(7040, 7104),
90 | "Batak": range(7104, 7168),
91 | "Lepcha": range(7168, 7248),
92 | "Ol Chiki": range(7248, 7296),
93 | "Cyrillic Extended-C": range(7296, 7312),
94 | "Georgian Extended": range(7312, 7360),
95 | "Sundanese Supplement": range(7360, 7376),
96 | "Vedic Extensions": range(7376, 7424),
97 | "Phonetic Extensions": range(7424, 7552),
98 | "Phonetic Extensions Supplement": range(7552, 7616),
99 | "Combining Diacritical Marks Supplement": range(7616, 7680),
100 | "Latin Extended Additional": range(7680, 7936),
101 | "Greek Extended": range(7936, 8192),
102 | "General Punctuation": range(8192, 8304),
103 | "Superscripts and Subscripts": range(8304, 8352),
104 | "Currency Symbols": range(8352, 8400),
105 | "Combining Diacritical Marks for Symbols": range(8400, 8448),
106 | "Letterlike Symbols": range(8448, 8528),
107 | "Number Forms": range(8528, 8592),
108 | "Arrows": range(8592, 8704),
109 | "Mathematical Operators": range(8704, 8960),
110 | "Miscellaneous Technical": range(8960, 9216),
111 | "Control Pictures": range(9216, 9280),
112 | "Optical Character Recognition": range(9280, 9312),
113 | "Enclosed Alphanumerics": range(9312, 9472),
114 | "Box Drawing": range(9472, 9600),
115 | "Block Elements": range(9600, 9632),
116 | "Geometric Shapes": range(9632, 9728),
117 | "Miscellaneous Symbols": range(9728, 9984),
118 | "Dingbats": range(9984, 10176),
119 | "Miscellaneous Mathematical Symbols-A": range(10176, 10224),
120 | "Supplemental Arrows-A": range(10224, 10240),
121 | "Braille Patterns": range(10240, 10496),
122 | "Supplemental Arrows-B": range(10496, 10624),
123 | "Miscellaneous Mathematical Symbols-B": range(10624, 10752),
124 | "Supplemental Mathematical Operators": range(10752, 11008),
125 | "Miscellaneous Symbols and Arrows": range(11008, 11264),
126 | "Glagolitic": range(11264, 11360),
127 | "Latin Extended-C": range(11360, 11392),
128 | "Coptic": range(11392, 11520),
129 | "Georgian Supplement": range(11520, 11568),
130 | "Tifinagh": range(11568, 11648),
131 | "Ethiopic Extended": range(11648, 11744),
132 | "Cyrillic Extended-A": range(11744, 11776),
133 | "Supplemental Punctuation": range(11776, 11904),
134 | "CJK Radicals Supplement": range(11904, 12032),
135 | "Kangxi Radicals": range(12032, 12256),
136 | "Ideographic Description Characters": range(12272, 12288),
137 | "CJK Symbols and Punctuation": range(12288, 12352),
138 | "Hiragana": range(12352, 12448),
139 | "Katakana": range(12448, 12544),
140 | "Bopomofo": range(12544, 12592),
141 | "Hangul Compatibility Jamo": range(12592, 12688),
142 | "Kanbun": range(12688, 12704),
143 | "Bopomofo Extended": range(12704, 12736),
144 | "CJK Strokes": range(12736, 12784),
145 | "Katakana Phonetic Extensions": range(12784, 12800),
146 | "Enclosed CJK Letters and Months": range(12800, 13056),
147 | "CJK Compatibility": range(13056, 13312),
148 | "CJK Unified Ideographs Extension A": range(13312, 19904),
149 | "Yijing Hexagram Symbols": range(19904, 19968),
150 | "CJK Unified Ideographs": range(19968, 40960),
151 | "Yi Syllables": range(40960, 42128),
152 | "Yi Radicals": range(42128, 42192),
153 | "Lisu": range(42192, 42240),
154 | "Vai": range(42240, 42560),
155 | "Cyrillic Extended-B": range(42560, 42656),
156 | "Bamum": range(42656, 42752),
157 | "Modifier Tone Letters": range(42752, 42784),
158 | "Latin Extended-D": range(42784, 43008),
159 | "Syloti Nagri": range(43008, 43056),
160 | "Common Indic Number Forms": range(43056, 43072),
161 | "Phags-pa": range(43072, 43136),
162 | "Saurashtra": range(43136, 43232),
163 | "Devanagari Extended": range(43232, 43264),
164 | "Kayah Li": range(43264, 43312),
165 | "Rejang": range(43312, 43360),
166 | "Hangul Jamo Extended-A": range(43360, 43392),
167 | "Javanese": range(43392, 43488),
168 | "Myanmar Extended-B": range(43488, 43520),
169 | "Cham": range(43520, 43616),
170 | "Myanmar Extended-A": range(43616, 43648),
171 | "Tai Viet": range(43648, 43744),
172 | "Meetei Mayek Extensions": range(43744, 43776),
173 | "Ethiopic Extended-A": range(43776, 43824),
174 | "Latin Extended-E": range(43824, 43888),
175 | "Cherokee Supplement": range(43888, 43968),
176 | "Meetei Mayek": range(43968, 44032),
177 | "Hangul Syllables": range(44032, 55216),
178 | "Hangul Jamo Extended-B": range(55216, 55296),
179 | "High Surrogates": range(55296, 56192),
180 | "High Private Use Surrogates": range(56192, 56320),
181 | "Low Surrogates": range(56320, 57344),
182 | "Private Use Area": range(57344, 63744),
183 | "CJK Compatibility Ideographs": range(63744, 64256),
184 | "Alphabetic Presentation Forms": range(64256, 64336),
185 | "Arabic Presentation Forms-A": range(64336, 65024),
186 | "Variation Selectors": range(65024, 65040),
187 | "Vertical Forms": range(65040, 65056),
188 | "Combining Half Marks": range(65056, 65072),
189 | "CJK Compatibility Forms": range(65072, 65104),
190 | "Small Form Variants": range(65104, 65136),
191 | "Arabic Presentation Forms-B": range(65136, 65280),
192 | "Halfwidth and Fullwidth Forms": range(65280, 65520),
193 | "Specials": range(65520, 65536),
194 | "Linear B Syllabary": range(65536, 65664),
195 | "Linear B Ideograms": range(65664, 65792),
196 | "Aegean Numbers": range(65792, 65856),
197 | "Ancient Greek Numbers": range(65856, 65936),
198 | "Ancient Symbols": range(65936, 66000),
199 | "Phaistos Disc": range(66000, 66048),
200 | "Lycian": range(66176, 66208),
201 | "Carian": range(66208, 66272),
202 | "Coptic Epact Numbers": range(66272, 66304),
203 | "Old Italic": range(66304, 66352),
204 | "Gothic": range(66352, 66384),
205 | "Old Permic": range(66384, 66432),
206 | "Ugaritic": range(66432, 66464),
207 | "Old Persian": range(66464, 66528),
208 | "Deseret": range(66560, 66640),
209 | "Shavian": range(66640, 66688),
210 | "Osmanya": range(66688, 66736),
211 | "Osage": range(66736, 66816),
212 | "Elbasan": range(66816, 66864),
213 | "Caucasian Albanian": range(66864, 66928),
214 | "Vithkuqi": range(66928, 67008),
215 | "Linear A": range(67072, 67456),
216 | "Latin Extended-F": range(67456, 67520),
217 | "Cypriot Syllabary": range(67584, 67648),
218 | "Imperial Aramaic": range(67648, 67680),
219 | "Palmyrene": range(67680, 67712),
220 | "Nabataean": range(67712, 67760),
221 | "Hatran": range(67808, 67840),
222 | "Phoenician": range(67840, 67872),
223 | "Lydian": range(67872, 67904),
224 | "Meroitic Hieroglyphs": range(67968, 68000),
225 | "Meroitic Cursive": range(68000, 68096),
226 | "Kharoshthi": range(68096, 68192),
227 | "Old South Arabian": range(68192, 68224),
228 | "Old North Arabian": range(68224, 68256),
229 | "Manichaean": range(68288, 68352),
230 | "Avestan": range(68352, 68416),
231 | "Inscriptional Parthian": range(68416, 68448),
232 | "Inscriptional Pahlavi": range(68448, 68480),
233 | "Psalter Pahlavi": range(68480, 68528),
234 | "Old Turkic": range(68608, 68688),
235 | "Old Hungarian": range(68736, 68864),
236 | "Hanifi Rohingya": range(68864, 68928),
237 | "Rumi Numeral Symbols": range(69216, 69248),
238 | "Yezidi": range(69248, 69312),
239 | "Arabic Extended-C": range(69312, 69376),
240 | "Old Sogdian": range(69376, 69424),
241 | "Sogdian": range(69424, 69488),
242 | "Old Uyghur": range(69488, 69552),
243 | "Chorasmian": range(69552, 69600),
244 | "Elymaic": range(69600, 69632),
245 | "Brahmi": range(69632, 69760),
246 | "Kaithi": range(69760, 69840),
247 | "Sora Sompeng": range(69840, 69888),
248 | "Chakma": range(69888, 69968),
249 | "Mahajani": range(69968, 70016),
250 | "Sharada": range(70016, 70112),
251 | "Sinhala Archaic Numbers": range(70112, 70144),
252 | "Khojki": range(70144, 70224),
253 | "Multani": range(70272, 70320),
254 | "Khudawadi": range(70320, 70400),
255 | "Grantha": range(70400, 70528),
256 | "Newa": range(70656, 70784),
257 | "Tirhuta": range(70784, 70880),
258 | "Siddham": range(71040, 71168),
259 | "Modi": range(71168, 71264),
260 | "Mongolian Supplement": range(71264, 71296),
261 | "Takri": range(71296, 71376),
262 | "Ahom": range(71424, 71504),
263 | "Dogra": range(71680, 71760),
264 | "Warang Citi": range(71840, 71936),
265 | "Dives Akuru": range(71936, 72032),
266 | "Nandinagari": range(72096, 72192),
267 | "Zanabazar Square": range(72192, 72272),
268 | "Soyombo": range(72272, 72368),
269 | "Unified Canadian Aboriginal Syllabics Extended-A": range(72368, 72384),
270 | "Pau Cin Hau": range(72384, 72448),
271 | "Devanagari Extended-A": range(72448, 72544),
272 | "Bhaiksuki": range(72704, 72816),
273 | "Marchen": range(72816, 72896),
274 | "Masaram Gondi": range(72960, 73056),
275 | "Gunjala Gondi": range(73056, 73136),
276 | "Makasar": range(73440, 73472),
277 | "Kawi": range(73472, 73568),
278 | "Lisu Supplement": range(73648, 73664),
279 | "Tamil Supplement": range(73664, 73728),
280 | "Cuneiform": range(73728, 74752),
281 | "Cuneiform Numbers and Punctuation": range(74752, 74880),
282 | "Early Dynastic Cuneiform": range(74880, 75088),
283 | "Cypro-Minoan": range(77712, 77824),
284 | "Egyptian Hieroglyphs": range(77824, 78896),
285 | "Egyptian Hieroglyph Format Controls": range(78896, 78944),
286 | "Anatolian Hieroglyphs": range(82944, 83584),
287 | "Bamum Supplement": range(92160, 92736),
288 | "Mro": range(92736, 92784),
289 | "Tangsa": range(92784, 92880),
290 | "Bassa Vah": range(92880, 92928),
291 | "Pahawh Hmong": range(92928, 93072),
292 | "Medefaidrin": range(93760, 93856),
293 | "Miao": range(93952, 94112),
294 | "Ideographic Symbols and Punctuation": range(94176, 94208),
295 | "Tangut": range(94208, 100352),
296 | "Tangut Components": range(100352, 101120),
297 | "Khitan Small Script": range(101120, 101632),
298 | "Tangut Supplement": range(101632, 101760),
299 | "Kana Extended-B": range(110576, 110592),
300 | "Kana Supplement": range(110592, 110848),
301 | "Kana Extended-A": range(110848, 110896),
302 | "Small Kana Extension": range(110896, 110960),
303 | "Nushu": range(110960, 111360),
304 | "Duployan": range(113664, 113824),
305 | "Shorthand Format Controls": range(113824, 113840),
306 | "Znamenny Musical Notation": range(118528, 118736),
307 | "Byzantine Musical Symbols": range(118784, 119040),
308 | "Musical Symbols": range(119040, 119296),
309 | "Ancient Greek Musical Notation": range(119296, 119376),
310 | "Kaktovik Numerals": range(119488, 119520),
311 | "Mayan Numerals": range(119520, 119552),
312 | "Tai Xuan Jing Symbols": range(119552, 119648),
313 | "Counting Rod Numerals": range(119648, 119680),
314 | "Mathematical Alphanumeric Symbols": range(119808, 120832),
315 | "Sutton SignWriting": range(120832, 121520),
316 | "Latin Extended-G": range(122624, 122880),
317 | "Glagolitic Supplement": range(122880, 122928),
318 | "Cyrillic Extended-D": range(122928, 123024),
319 | "Nyiakeng Puachue Hmong": range(123136, 123216),
320 | "Toto": range(123536, 123584),
321 | "Wancho": range(123584, 123648),
322 | "Nag Mundari": range(124112, 124160),
323 | "Ethiopic Extended-B": range(124896, 124928),
324 | "Mende Kikakui": range(124928, 125152),
325 | "Adlam": range(125184, 125280),
326 | "Indic Siyaq Numbers": range(126064, 126144),
327 | "Ottoman Siyaq Numbers": range(126208, 126288),
328 | "Arabic Mathematical Alphabetic Symbols": range(126464, 126720),
329 | "Mahjong Tiles": range(126976, 127024),
330 | "Domino Tiles": range(127024, 127136),
331 | "Playing Cards": range(127136, 127232),
332 | "Enclosed Alphanumeric Supplement": range(127232, 127488),
333 | "Enclosed Ideographic Supplement": range(127488, 127744),
334 | "Miscellaneous Symbols and Pictographs": range(127744, 128512),
335 | "Emoticons range(Emoji)": range(128512, 128592),
336 | "Ornamental Dingbats": range(128592, 128640),
337 | "Transport and Map Symbols": range(128640, 128768),
338 | "Alchemical Symbols": range(128768, 128896),
339 | "Geometric Shapes Extended": range(128896, 129024),
340 | "Supplemental Arrows-C": range(129024, 129280),
341 | "Supplemental Symbols and Pictographs": range(129280, 129536),
342 | "Chess Symbols": range(129536, 129648),
343 | "Symbols and Pictographs Extended-A": range(129648, 129792),
344 | "Symbols for Legacy Computing": range(129792, 130048),
345 | "CJK Unified Ideographs Extension B": range(131072, 173792),
346 | "CJK Unified Ideographs Extension C": range(173824, 177984),
347 | "CJK Unified Ideographs Extension D": range(177984, 178208),
348 | "CJK Unified Ideographs Extension E": range(178208, 183984),
349 | "CJK Unified Ideographs Extension F": range(183984, 191472),
350 | "CJK Compatibility Ideographs Supplement": range(194560, 195104),
351 | "CJK Unified Ideographs Extension G": range(196608, 201552),
352 | "CJK Unified Ideographs Extension H": range(201552, 205744),
353 | "Tags": range(917504, 917632),
354 | "Variation Selectors Supplement": range(917760, 918000),
355 | "Supplementary Private Use Area-A": range(983040, 1048576),
356 | "Supplementary Private Use Area-B": range(1048576, 1114112),
357 | }
358 |
359 |
360 | UNICODE_SECONDARY_RANGE_KEYWORD: List[str] = [
361 | "Supplement",
362 | "Extended",
363 | "Extensions",
364 | "Modifier",
365 | "Marks",
366 | "Punctuation",
367 | "Symbols",
368 | "Forms",
369 | "Operators",
370 | "Miscellaneous",
371 | "Drawing",
372 | "Block",
373 | "Shapes",
374 | "Supplemental",
375 | "Tags",
376 | ]
377 |
378 | RE_POSSIBLE_ENCODING_INDICATION = re_compile(
379 | r"(?:(?:encoding)|(?:charset)|(?:coding))(?:[\:= ]{1,10})(?:[\"\']?)([a-zA-Z0-9\-_]+)(?:[\"\']?)",
380 | IGNORECASE,
381 | )
382 |
383 | IANA_NO_ALIASES = [
384 | "cp720",
385 | "cp737",
386 | "cp856",
387 | "cp874",
388 | "cp875",
389 | "cp1006",
390 | "koi8_r",
391 | "koi8_t",
392 | "koi8_u",
393 | ]
394 |
395 | IANA_SUPPORTED: List[str] = sorted(
396 | filter(
397 | lambda x: x.endswith("_codec") is False
398 | and x not in {"rot_13", "tactis", "mbcs"},
399 | list(set(aliases.values())) + IANA_NO_ALIASES,
400 | )
401 | )
402 |
403 | IANA_SUPPORTED_COUNT: int = len(IANA_SUPPORTED)
404 |
405 | # pre-computed code page that are similar using the function cp_similarity.
406 | IANA_SUPPORTED_SIMILAR: Dict[str, List[str]] = {
407 | "cp037": ["cp1026", "cp1140", "cp273", "cp500"],
408 | "cp1026": ["cp037", "cp1140", "cp273", "cp500"],
409 | "cp1125": ["cp866"],
410 | "cp1140": ["cp037", "cp1026", "cp273", "cp500"],
411 | "cp1250": ["iso8859_2"],
412 | "cp1251": ["kz1048", "ptcp154"],
413 | "cp1252": ["iso8859_15", "iso8859_9", "latin_1"],
414 | "cp1253": ["iso8859_7"],
415 | "cp1254": ["iso8859_15", "iso8859_9", "latin_1"],
416 | "cp1257": ["iso8859_13"],
417 | "cp273": ["cp037", "cp1026", "cp1140", "cp500"],
418 | "cp437": ["cp850", "cp858", "cp860", "cp861", "cp862", "cp863", "cp865"],
419 | "cp500": ["cp037", "cp1026", "cp1140", "cp273"],
420 | "cp850": ["cp437", "cp857", "cp858", "cp865"],
421 | "cp857": ["cp850", "cp858", "cp865"],
422 | "cp858": ["cp437", "cp850", "cp857", "cp865"],
423 | "cp860": ["cp437", "cp861", "cp862", "cp863", "cp865"],
424 | "cp861": ["cp437", "cp860", "cp862", "cp863", "cp865"],
425 | "cp862": ["cp437", "cp860", "cp861", "cp863", "cp865"],
426 | "cp863": ["cp437", "cp860", "cp861", "cp862", "cp865"],
427 | "cp865": ["cp437", "cp850", "cp857", "cp858", "cp860", "cp861", "cp862", "cp863"],
428 | "cp866": ["cp1125"],
429 | "iso8859_10": ["iso8859_14", "iso8859_15", "iso8859_4", "iso8859_9", "latin_1"],
430 | "iso8859_11": ["tis_620"],
431 | "iso8859_13": ["cp1257"],
432 | "iso8859_14": [
433 | "iso8859_10",
434 | "iso8859_15",
435 | "iso8859_16",
436 | "iso8859_3",
437 | "iso8859_9",
438 | "latin_1",
439 | ],
440 | "iso8859_15": [
441 | "cp1252",
442 | "cp1254",
443 | "iso8859_10",
444 | "iso8859_14",
445 | "iso8859_16",
446 | "iso8859_3",
447 | "iso8859_9",
448 | "latin_1",
449 | ],
450 | "iso8859_16": [
451 | "iso8859_14",
452 | "iso8859_15",
453 | "iso8859_2",
454 | "iso8859_3",
455 | "iso8859_9",
456 | "latin_1",
457 | ],
458 | "iso8859_2": ["cp1250", "iso8859_16", "iso8859_4"],
459 | "iso8859_3": ["iso8859_14", "iso8859_15", "iso8859_16", "iso8859_9", "latin_1"],
460 | "iso8859_4": ["iso8859_10", "iso8859_2", "iso8859_9", "latin_1"],
461 | "iso8859_7": ["cp1253"],
462 | "iso8859_9": [
463 | "cp1252",
464 | "cp1254",
465 | "cp1258",
466 | "iso8859_10",
467 | "iso8859_14",
468 | "iso8859_15",
469 | "iso8859_16",
470 | "iso8859_3",
471 | "iso8859_4",
472 | "latin_1",
473 | ],
474 | "kz1048": ["cp1251", "ptcp154"],
475 | "latin_1": [
476 | "cp1252",
477 | "cp1254",
478 | "cp1258",
479 | "iso8859_10",
480 | "iso8859_14",
481 | "iso8859_15",
482 | "iso8859_16",
483 | "iso8859_3",
484 | "iso8859_4",
485 | "iso8859_9",
486 | ],
487 | "mac_iceland": ["mac_roman", "mac_turkish"],
488 | "mac_roman": ["mac_iceland", "mac_turkish"],
489 | "mac_turkish": ["mac_iceland", "mac_roman"],
490 | "ptcp154": ["cp1251", "kz1048"],
491 | "tis_620": ["iso8859_11"],
492 | }
493 |
494 |
495 | CHARDET_CORRESPONDENCE: Dict[str, str] = {
496 | "iso2022_kr": "ISO-2022-KR",
497 | "iso2022_jp": "ISO-2022-JP",
498 | "euc_kr": "EUC-KR",
499 | "tis_620": "TIS-620",
500 | "utf_32": "UTF-32",
501 | "euc_jp": "EUC-JP",
502 | "koi8_r": "KOI8-R",
503 | "iso8859_1": "ISO-8859-1",
504 | "iso8859_2": "ISO-8859-2",
505 | "iso8859_5": "ISO-8859-5",
506 | "iso8859_6": "ISO-8859-6",
507 | "iso8859_7": "ISO-8859-7",
508 | "iso8859_8": "ISO-8859-8",
509 | "utf_16": "UTF-16",
510 | "cp855": "IBM855",
511 | "mac_cyrillic": "MacCyrillic",
512 | "gb2312": "GB2312",
513 | "gb18030": "GB18030",
514 | "cp932": "CP932",
515 | "cp866": "IBM866",
516 | "utf_8": "utf-8",
517 | "utf_8_sig": "UTF-8-SIG",
518 | "shift_jis": "SHIFT_JIS",
519 | "big5": "Big5",
520 | "cp1250": "windows-1250",
521 | "cp1251": "windows-1251",
522 | "cp1252": "Windows-1252",
523 | "cp1253": "windows-1253",
524 | "cp1255": "windows-1255",
525 | "cp1256": "windows-1256",
526 | "cp1254": "Windows-1254",
527 | "cp949": "CP949",
528 | }
529 |
530 |
531 | COMMON_SAFE_ASCII_CHARACTERS: Set[str] = {
532 | "<",
533 | ">",
534 | "=",
535 | ":",
536 | "/",
537 | "&",
538 | ";",
539 | "{",
540 | "}",
541 | "[",
542 | "]",
543 | ",",
544 | "|",
545 | '"',
546 | "-",
547 | "(",
548 | ")",
549 | }
550 |
551 |
552 | KO_NAMES: Set[str] = {"johab", "cp949", "euc_kr"}
553 | ZH_NAMES: Set[str] = {"big5", "cp950", "big5hkscs", "hz"}
554 |
555 | # Logging LEVEL below DEBUG
556 | TRACE: int = 5
557 |
558 |
559 | # Language label that contain the em dash "—"
560 | # character are to be considered alternative seq to origin
561 | FREQUENCIES: Dict[str, List[str]] = {
562 | "English": [
563 | "e",
564 | "a",
565 | "t",
566 | "i",
567 | "o",
568 | "n",
569 | "s",
570 | "r",
571 | "h",
572 | "l",
573 | "d",
574 | "c",
575 | "u",
576 | "m",
577 | "f",
578 | "p",
579 | "g",
580 | "w",
581 | "y",
582 | "b",
583 | "v",
584 | "k",
585 | "x",
586 | "j",
587 | "z",
588 | "q",
589 | ],
590 | "English—": [
591 | "e",
592 | "a",
593 | "t",
594 | "i",
595 | "o",
596 | "n",
597 | "s",
598 | "r",
599 | "h",
600 | "l",
601 | "d",
602 | "c",
603 | "m",
604 | "u",
605 | "f",
606 | "p",
607 | "g",
608 | "w",
609 | "b",
610 | "y",
611 | "v",
612 | "k",
613 | "j",
614 | "x",
615 | "z",
616 | "q",
617 | ],
618 | "German": [
619 | "e",
620 | "n",
621 | "i",
622 | "r",
623 | "s",
624 | "t",
625 | "a",
626 | "d",
627 | "h",
628 | "u",
629 | "l",
630 | "g",
631 | "o",
632 | "c",
633 | "m",
634 | "b",
635 | "f",
636 | "k",
637 | "w",
638 | "z",
639 | "p",
640 | "v",
641 | "ü",
642 | "ä",
643 | "ö",
644 | "j",
645 | ],
646 | "French": [
647 | "e",
648 | "a",
649 | "s",
650 | "n",
651 | "i",
652 | "t",
653 | "r",
654 | "l",
655 | "u",
656 | "o",
657 | "d",
658 | "c",
659 | "p",
660 | "m",
661 | "é",
662 | "v",
663 | "g",
664 | "f",
665 | "b",
666 | "h",
667 | "q",
668 | "à",
669 | "x",
670 | "è",
671 | "y",
672 | "j",
673 | ],
674 | "Dutch": [
675 | "e",
676 | "n",
677 | "a",
678 | "i",
679 | "r",
680 | "t",
681 | "o",
682 | "d",
683 | "s",
684 | "l",
685 | "g",
686 | "h",
687 | "v",
688 | "m",
689 | "u",
690 | "k",
691 | "c",
692 | "p",
693 | "b",
694 | "w",
695 | "j",
696 | "z",
697 | "f",
698 | "y",
699 | "x",
700 | "ë",
701 | ],
702 | "Italian": [
703 | "e",
704 | "i",
705 | "a",
706 | "o",
707 | "n",
708 | "l",
709 | "t",
710 | "r",
711 | "s",
712 | "c",
713 | "d",
714 | "u",
715 | "p",
716 | "m",
717 | "g",
718 | "v",
719 | "f",
720 | "b",
721 | "z",
722 | "h",
723 | "q",
724 | "è",
725 | "à",
726 | "k",
727 | "y",
728 | "ò",
729 | ],
730 | "Polish": [
731 | "a",
732 | "i",
733 | "o",
734 | "e",
735 | "n",
736 | "r",
737 | "z",
738 | "w",
739 | "s",
740 | "c",
741 | "t",
742 | "k",
743 | "y",
744 | "d",
745 | "p",
746 | "m",
747 | "u",
748 | "l",
749 | "j",
750 | "ł",
751 | "g",
752 | "b",
753 | "h",
754 | "ą",
755 | "ę",
756 | "ó",
757 | ],
758 | "Spanish": [
759 | "e",
760 | "a",
761 | "o",
762 | "n",
763 | "s",
764 | "r",
765 | "i",
766 | "l",
767 | "d",
768 | "t",
769 | "c",
770 | "u",
771 | "m",
772 | "p",
773 | "b",
774 | "g",
775 | "v",
776 | "f",
777 | "y",
778 | "ó",
779 | "h",
780 | "q",
781 | "í",
782 | "j",
783 | "z",
784 | "á",
785 | ],
786 | "Russian": [
787 | "о",
788 | "а",
789 | "е",
790 | "и",
791 | "н",
792 | "с",
793 | "т",
794 | "р",
795 | "в",
796 | "л",
797 | "к",
798 | "м",
799 | "д",
800 | "п",
801 | "у",
802 | "г",
803 | "я",
804 | "ы",
805 | "з",
806 | "б",
807 | "й",
808 | "ь",
809 | "ч",
810 | "х",
811 | "ж",
812 | "ц",
813 | ],
814 | # Jap-Kanji
815 | "Japanese": [
816 | "人",
817 | "一",
818 | "大",
819 | "亅",
820 | "丁",
821 | "丨",
822 | "竹",
823 | "笑",
824 | "口",
825 | "日",
826 | "今",
827 | "二",
828 | "彳",
829 | "行",
830 | "十",
831 | "土",
832 | "丶",
833 | "寸",
834 | "寺",
835 | "時",
836 | "乙",
837 | "丿",
838 | "乂",
839 | "气",
840 | "気",
841 | "冂",
842 | "巾",
843 | "亠",
844 | "市",
845 | "目",
846 | "儿",
847 | "見",
848 | "八",
849 | "小",
850 | "凵",
851 | "県",
852 | "月",
853 | "彐",
854 | "門",
855 | "間",
856 | "木",
857 | "東",
858 | "山",
859 | "出",
860 | "本",
861 | "中",
862 | "刀",
863 | "分",
864 | "耳",
865 | "又",
866 | "取",
867 | "最",
868 | "言",
869 | "田",
870 | "心",
871 | "思",
872 | "刂",
873 | "前",
874 | "京",
875 | "尹",
876 | "事",
877 | "生",
878 | "厶",
879 | "云",
880 | "会",
881 | "未",
882 | "来",
883 | "白",
884 | "冫",
885 | "楽",
886 | "灬",
887 | "馬",
888 | "尸",
889 | "尺",
890 | "駅",
891 | "明",
892 | "耂",
893 | "者",
894 | "了",
895 | "阝",
896 | "都",
897 | "高",
898 | "卜",
899 | "占",
900 | "厂",
901 | "广",
902 | "店",
903 | "子",
904 | "申",
905 | "奄",
906 | "亻",
907 | "俺",
908 | "上",
909 | "方",
910 | "冖",
911 | "学",
912 | "衣",
913 | "艮",
914 | "食",
915 | "自",
916 | ],
917 | # Jap-Katakana
918 | "Japanese—": [
919 | "ー",
920 | "ン",
921 | "ス",
922 | "・",
923 | "ル",
924 | "ト",
925 | "リ",
926 | "イ",
927 | "ア",
928 | "ラ",
929 | "ッ",
930 | "ク",
931 | "ド",
932 | "シ",
933 | "レ",
934 | "ジ",
935 | "タ",
936 | "フ",
937 | "ロ",
938 | "カ",
939 | "テ",
940 | "マ",
941 | "ィ",
942 | "グ",
943 | "バ",
944 | "ム",
945 | "プ",
946 | "オ",
947 | "コ",
948 | "デ",
949 | "ニ",
950 | "ウ",
951 | "メ",
952 | "サ",
953 | "ビ",
954 | "ナ",
955 | "ブ",
956 | "ャ",
957 | "エ",
958 | "ュ",
959 | "チ",
960 | "キ",
961 | "ズ",
962 | "ダ",
963 | "パ",
964 | "ミ",
965 | "ェ",
966 | "ョ",
967 | "ハ",
968 | "セ",
969 | "ベ",
970 | "ガ",
971 | "モ",
972 | "ツ",
973 | "ネ",
974 | "ボ",
975 | "ソ",
976 | "ノ",
977 | "ァ",
978 | "ヴ",
979 | "ワ",
980 | "ポ",
981 | "ペ",
982 | "ピ",
983 | "ケ",
984 | "ゴ",
985 | "ギ",
986 | "ザ",
987 | "ホ",
988 | "ゲ",
989 | "ォ",
990 | "ヤ",
991 | "ヒ",
992 | "ユ",
993 | "ヨ",
994 | "ヘ",
995 | "ゼ",
996 | "ヌ",
997 | "ゥ",
998 | "ゾ",
999 | "ヶ",
1000 | "ヂ",
1001 | "ヲ",
1002 | "ヅ",
1003 | "ヵ",
1004 | "ヱ",
1005 | "ヰ",
1006 | "ヮ",
1007 | "ヽ",
1008 | "゠",
1009 | "ヾ",
1010 | "ヷ",
1011 | "ヿ",
1012 | "ヸ",
1013 | "ヹ",
1014 | "ヺ",
1015 | ],
1016 | # Jap-Hiragana
1017 | "Japanese——": [
1018 | "の",
1019 | "に",
1020 | "る",
1021 | "た",
1022 | "と",
1023 | "は",
1024 | "し",
1025 | "い",
1026 | "を",
1027 | "で",
1028 | "て",
1029 | "が",
1030 | "な",
1031 | "れ",
1032 | "か",
1033 | "ら",
1034 | "さ",
1035 | "っ",
1036 | "り",
1037 | "す",
1038 | "あ",
1039 | "も",
1040 | "こ",
1041 | "ま",
1042 | "う",
1043 | "く",
1044 | "よ",
1045 | "き",
1046 | "ん",
1047 | "め",
1048 | "お",
1049 | "け",
1050 | "そ",
1051 | "つ",
1052 | "だ",
1053 | "や",
1054 | "え",
1055 | "ど",
1056 | "わ",
1057 | "ち",
1058 | "み",
1059 | "せ",
1060 | "じ",
1061 | "ば",
1062 | "へ",
1063 | "び",
1064 | "ず",
1065 | "ろ",
1066 | "ほ",
1067 | "げ",
1068 | "む",
1069 | "べ",
1070 | "ひ",
1071 | "ょ",
1072 | "ゆ",
1073 | "ぶ",
1074 | "ご",
1075 | "ゃ",
1076 | "ね",
1077 | "ふ",
1078 | "ぐ",
1079 | "ぎ",
1080 | "ぼ",
1081 | "ゅ",
1082 | "づ",
1083 | "ざ",
1084 | "ぞ",
1085 | "ぬ",
1086 | "ぜ",
1087 | "ぱ",
1088 | "ぽ",
1089 | "ぷ",
1090 | "ぴ",
1091 | "ぃ",
1092 | "ぁ",
1093 | "ぇ",
1094 | "ぺ",
1095 | "ゞ",
1096 | "ぢ",
1097 | "ぉ",
1098 | "ぅ",
1099 | "ゐ",
1100 | "ゝ",
1101 | "ゑ",
1102 | "゛",
1103 | "゜",
1104 | "ゎ",
1105 | "ゔ",
1106 | "゚",
1107 | "ゟ",
1108 | "゙",
1109 | "ゕ",
1110 | "ゖ",
1111 | ],
1112 | "Portuguese": [
1113 | "a",
1114 | "e",
1115 | "o",
1116 | "s",
1117 | "i",
1118 | "r",
1119 | "d",
1120 | "n",
1121 | "t",
1122 | "m",
1123 | "u",
1124 | "c",
1125 | "l",
1126 | "p",
1127 | "g",
1128 | "v",
1129 | "b",
1130 | "f",
1131 | "h",
1132 | "ã",
1133 | "q",
1134 | "é",
1135 | "ç",
1136 | "á",
1137 | "z",
1138 | "í",
1139 | ],
1140 | "Swedish": [
1141 | "e",
1142 | "a",
1143 | "n",
1144 | "r",
1145 | "t",
1146 | "s",
1147 | "i",
1148 | "l",
1149 | "d",
1150 | "o",
1151 | "m",
1152 | "k",
1153 | "g",
1154 | "v",
1155 | "h",
1156 | "f",
1157 | "u",
1158 | "p",
1159 | "ä",
1160 | "c",
1161 | "b",
1162 | "ö",
1163 | "å",
1164 | "y",
1165 | "j",
1166 | "x",
1167 | ],
1168 | "Chinese": [
1169 | "的",
1170 | "一",
1171 | "是",
1172 | "不",
1173 | "了",
1174 | "在",
1175 | "人",
1176 | "有",
1177 | "我",
1178 | "他",
1179 | "这",
1180 | "个",
1181 | "们",
1182 | "中",
1183 | "来",
1184 | "上",
1185 | "大",
1186 | "为",
1187 | "和",
1188 | "国",
1189 | "地",
1190 | "到",
1191 | "以",
1192 | "说",
1193 | "时",
1194 | "要",
1195 | "就",
1196 | "出",
1197 | "会",
1198 | "可",
1199 | "也",
1200 | "你",
1201 | "对",
1202 | "生",
1203 | "能",
1204 | "而",
1205 | "子",
1206 | "那",
1207 | "得",
1208 | "于",
1209 | "着",
1210 | "下",
1211 | "自",
1212 | "之",
1213 | "年",
1214 | "过",
1215 | "发",
1216 | "后",
1217 | "作",
1218 | "里",
1219 | "用",
1220 | "道",
1221 | "行",
1222 | "所",
1223 | "然",
1224 | "家",
1225 | "种",
1226 | "事",
1227 | "成",
1228 | "方",
1229 | "多",
1230 | "经",
1231 | "么",
1232 | "去",
1233 | "法",
1234 | "学",
1235 | "如",
1236 | "都",
1237 | "同",
1238 | "现",
1239 | "当",
1240 | "没",
1241 | "动",
1242 | "面",
1243 | "起",
1244 | "看",
1245 | "定",
1246 | "天",
1247 | "分",
1248 | "还",
1249 | "进",
1250 | "好",
1251 | "小",
1252 | "部",
1253 | "其",
1254 | "些",
1255 | "主",
1256 | "样",
1257 | "理",
1258 | "心",
1259 | "她",
1260 | "本",
1261 | "前",
1262 | "开",
1263 | "但",
1264 | "因",
1265 | "只",
1266 | "从",
1267 | "想",
1268 | "实",
1269 | ],
1270 | "Ukrainian": [
1271 | "о",
1272 | "а",
1273 | "н",
1274 | "і",
1275 | "и",
1276 | "р",
1277 | "в",
1278 | "т",
1279 | "е",
1280 | "с",
1281 | "к",
1282 | "л",
1283 | "у",
1284 | "д",
1285 | "м",
1286 | "п",
1287 | "з",
1288 | "я",
1289 | "ь",
1290 | "б",
1291 | "г",
1292 | "й",
1293 | "ч",
1294 | "х",
1295 | "ц",
1296 | "ї",
1297 | ],
1298 | "Norwegian": [
1299 | "e",
1300 | "r",
1301 | "n",
1302 | "t",
1303 | "a",
1304 | "s",
1305 | "i",
1306 | "o",
1307 | "l",
1308 | "d",
1309 | "g",
1310 | "k",
1311 | "m",
1312 | "v",
1313 | "f",
1314 | "p",
1315 | "u",
1316 | "b",
1317 | "h",
1318 | "å",
1319 | "y",
1320 | "j",
1321 | "ø",
1322 | "c",
1323 | "æ",
1324 | "w",
1325 | ],
1326 | "Finnish": [
1327 | "a",
1328 | "i",
1329 | "n",
1330 | "t",
1331 | "e",
1332 | "s",
1333 | "l",
1334 | "o",
1335 | "u",
1336 | "k",
1337 | "ä",
1338 | "m",
1339 | "r",
1340 | "v",
1341 | "j",
1342 | "h",
1343 | "p",
1344 | "y",
1345 | "d",
1346 | "ö",
1347 | "g",
1348 | "c",
1349 | "b",
1350 | "f",
1351 | "w",
1352 | "z",
1353 | ],
1354 | "Vietnamese": [
1355 | "n",
1356 | "h",
1357 | "t",
1358 | "i",
1359 | "c",
1360 | "g",
1361 | "a",
1362 | "o",
1363 | "u",
1364 | "m",
1365 | "l",
1366 | "r",
1367 | "à",
1368 | "đ",
1369 | "s",
1370 | "e",
1371 | "v",
1372 | "p",
1373 | "b",
1374 | "y",
1375 | "ư",
1376 | "d",
1377 | "á",
1378 | "k",
1379 | "ộ",
1380 | "ế",
1381 | ],
1382 | "Czech": [
1383 | "o",
1384 | "e",
1385 | "a",
1386 | "n",
1387 | "t",
1388 | "s",
1389 | "i",
1390 | "l",
1391 | "v",
1392 | "r",
1393 | "k",
1394 | "d",
1395 | "u",
1396 | "m",
1397 | "p",
1398 | "í",
1399 | "c",
1400 | "h",
1401 | "z",
1402 | "á",
1403 | "y",
1404 | "j",
1405 | "b",
1406 | "ě",
1407 | "é",
1408 | "ř",
1409 | ],
1410 | "Hungarian": [
1411 | "e",
1412 | "a",
1413 | "t",
1414 | "l",
1415 | "s",
1416 | "n",
1417 | "k",
1418 | "r",
1419 | "i",
1420 | "o",
1421 | "z",
1422 | "á",
1423 | "é",
1424 | "g",
1425 | "m",
1426 | "b",
1427 | "y",
1428 | "v",
1429 | "d",
1430 | "h",
1431 | "u",
1432 | "p",
1433 | "j",
1434 | "ö",
1435 | "f",
1436 | "c",
1437 | ],
1438 | "Korean": [
1439 | "이",
1440 | "다",
1441 | "에",
1442 | "의",
1443 | "는",
1444 | "로",
1445 | "하",
1446 | "을",
1447 | "가",
1448 | "고",
1449 | "지",
1450 | "서",
1451 | "한",
1452 | "은",
1453 | "기",
1454 | "으",
1455 | "년",
1456 | "대",
1457 | "사",
1458 | "시",
1459 | "를",
1460 | "리",
1461 | "도",
1462 | "인",
1463 | "스",
1464 | "일",
1465 | ],
1466 | "Indonesian": [
1467 | "a",
1468 | "n",
1469 | "e",
1470 | "i",
1471 | "r",
1472 | "t",
1473 | "u",
1474 | "s",
1475 | "d",
1476 | "k",
1477 | "m",
1478 | "l",
1479 | "g",
1480 | "p",
1481 | "b",
1482 | "o",
1483 | "h",
1484 | "y",
1485 | "j",
1486 | "c",
1487 | "w",
1488 | "f",
1489 | "v",
1490 | "z",
1491 | "x",
1492 | "q",
1493 | ],
1494 | "Turkish": [
1495 | "a",
1496 | "e",
1497 | "i",
1498 | "n",
1499 | "r",
1500 | "l",
1501 | "ı",
1502 | "k",
1503 | "d",
1504 | "t",
1505 | "s",
1506 | "m",
1507 | "y",
1508 | "u",
1509 | "o",
1510 | "b",
1511 | "ü",
1512 | "ş",
1513 | "v",
1514 | "g",
1515 | "z",
1516 | "h",
1517 | "c",
1518 | "p",
1519 | "ç",
1520 | "ğ",
1521 | ],
1522 | "Romanian": [
1523 | "e",
1524 | "i",
1525 | "a",
1526 | "r",
1527 | "n",
1528 | "t",
1529 | "u",
1530 | "l",
1531 | "o",
1532 | "c",
1533 | "s",
1534 | "d",
1535 | "p",
1536 | "m",
1537 | "ă",
1538 | "f",
1539 | "v",
1540 | "î",
1541 | "g",
1542 | "b",
1543 | "ș",
1544 | "ț",
1545 | "z",
1546 | "h",
1547 | "â",
1548 | "j",
1549 | ],
1550 | "Farsi": [
1551 | "ا",
1552 | "ی",
1553 | "ر",
1554 | "د",
1555 | "ن",
1556 | "ه",
1557 | "و",
1558 | "م",
1559 | "ت",
1560 | "ب",
1561 | "س",
1562 | "ل",
1563 | "ک",
1564 | "ش",
1565 | "ز",
1566 | "ف",
1567 | "گ",
1568 | "ع",
1569 | "خ",
1570 | "ق",
1571 | "ج",
1572 | "آ",
1573 | "پ",
1574 | "ح",
1575 | "ط",
1576 | "ص",
1577 | ],
1578 | "Arabic": [
1579 | "ا",
1580 | "ل",
1581 | "ي",
1582 | "م",
1583 | "و",
1584 | "ن",
1585 | "ر",
1586 | "ت",
1587 | "ب",
1588 | "ة",
1589 | "ع",
1590 | "د",
1591 | "س",
1592 | "ف",
1593 | "ه",
1594 | "ك",
1595 | "ق",
1596 | "أ",
1597 | "ح",
1598 | "ج",
1599 | "ش",
1600 | "ط",
1601 | "ص",
1602 | "ى",
1603 | "خ",
1604 | "إ",
1605 | ],
1606 | "Danish": [
1607 | "e",
1608 | "r",
1609 | "n",
1610 | "t",
1611 | "a",
1612 | "i",
1613 | "s",
1614 | "d",
1615 | "l",
1616 | "o",
1617 | "g",
1618 | "m",
1619 | "k",
1620 | "f",
1621 | "v",
1622 | "u",
1623 | "b",
1624 | "h",
1625 | "p",
1626 | "å",
1627 | "y",
1628 | "ø",
1629 | "æ",
1630 | "c",
1631 | "j",
1632 | "w",
1633 | ],
1634 | "Serbian": [
1635 | "а",
1636 | "и",
1637 | "о",
1638 | "е",
1639 | "н",
1640 | "р",
1641 | "с",
1642 | "у",
1643 | "т",
1644 | "к",
1645 | "ј",
1646 | "в",
1647 | "д",
1648 | "м",
1649 | "п",
1650 | "л",
1651 | "г",
1652 | "з",
1653 | "б",
1654 | "a",
1655 | "i",
1656 | "e",
1657 | "o",
1658 | "n",
1659 | "ц",
1660 | "ш",
1661 | ],
1662 | "Lithuanian": [
1663 | "i",
1664 | "a",
1665 | "s",
1666 | "o",
1667 | "r",
1668 | "e",
1669 | "t",
1670 | "n",
1671 | "u",
1672 | "k",
1673 | "m",
1674 | "l",
1675 | "p",
1676 | "v",
1677 | "d",
1678 | "j",
1679 | "g",
1680 | "ė",
1681 | "b",
1682 | "y",
1683 | "ų",
1684 | "š",
1685 | "ž",
1686 | "c",
1687 | "ą",
1688 | "į",
1689 | ],
1690 | "Slovene": [
1691 | "e",
1692 | "a",
1693 | "i",
1694 | "o",
1695 | "n",
1696 | "r",
1697 | "s",
1698 | "l",
1699 | "t",
1700 | "j",
1701 | "v",
1702 | "k",
1703 | "d",
1704 | "p",
1705 | "m",
1706 | "u",
1707 | "z",
1708 | "b",
1709 | "g",
1710 | "h",
1711 | "č",
1712 | "c",
1713 | "š",
1714 | "ž",
1715 | "f",
1716 | "y",
1717 | ],
1718 | "Slovak": [
1719 | "o",
1720 | "a",
1721 | "e",
1722 | "n",
1723 | "i",
1724 | "r",
1725 | "v",
1726 | "t",
1727 | "s",
1728 | "l",
1729 | "k",
1730 | "d",
1731 | "m",
1732 | "p",
1733 | "u",
1734 | "c",
1735 | "h",
1736 | "j",
1737 | "b",
1738 | "z",
1739 | "á",
1740 | "y",
1741 | "ý",
1742 | "í",
1743 | "č",
1744 | "é",
1745 | ],
1746 | "Hebrew": [
1747 | "י",
1748 | "ו",
1749 | "ה",
1750 | "ל",
1751 | "ר",
1752 | "ב",
1753 | "ת",
1754 | "מ",
1755 | "א",
1756 | "ש",
1757 | "נ",
1758 | "ע",
1759 | "ם",
1760 | "ד",
1761 | "ק",
1762 | "ח",
1763 | "פ",
1764 | "ס",
1765 | "כ",
1766 | "ג",
1767 | "ט",
1768 | "צ",
1769 | "ן",
1770 | "ז",
1771 | "ך",
1772 | ],
1773 | "Bulgarian": [
1774 | "а",
1775 | "и",
1776 | "о",
1777 | "е",
1778 | "н",
1779 | "т",
1780 | "р",
1781 | "с",
1782 | "в",
1783 | "л",
1784 | "к",
1785 | "д",
1786 | "п",
1787 | "м",
1788 | "з",
1789 | "г",
1790 | "я",
1791 | "ъ",
1792 | "у",
1793 | "б",
1794 | "ч",
1795 | "ц",
1796 | "й",
1797 | "ж",
1798 | "щ",
1799 | "х",
1800 | ],
1801 | "Croatian": [
1802 | "a",
1803 | "i",
1804 | "o",
1805 | "e",
1806 | "n",
1807 | "r",
1808 | "j",
1809 | "s",
1810 | "t",
1811 | "u",
1812 | "k",
1813 | "l",
1814 | "v",
1815 | "d",
1816 | "m",
1817 | "p",
1818 | "g",
1819 | "z",
1820 | "b",
1821 | "c",
1822 | "č",
1823 | "h",
1824 | "š",
1825 | "ž",
1826 | "ć",
1827 | "f",
1828 | ],
1829 | "Hindi": [
1830 | "क",
1831 | "र",
1832 | "स",
1833 | "न",
1834 | "त",
1835 | "म",
1836 | "ह",
1837 | "प",
1838 | "य",
1839 | "ल",
1840 | "व",
1841 | "ज",
1842 | "द",
1843 | "ग",
1844 | "ब",
1845 | "श",
1846 | "ट",
1847 | "अ",
1848 | "ए",
1849 | "थ",
1850 | "भ",
1851 | "ड",
1852 | "च",
1853 | "ध",
1854 | "ष",
1855 | "इ",
1856 | ],
1857 | "Estonian": [
1858 | "a",
1859 | "i",
1860 | "e",
1861 | "s",
1862 | "t",
1863 | "l",
1864 | "u",
1865 | "n",
1866 | "o",
1867 | "k",
1868 | "r",
1869 | "d",
1870 | "m",
1871 | "v",
1872 | "g",
1873 | "p",
1874 | "j",
1875 | "h",
1876 | "ä",
1877 | "b",
1878 | "õ",
1879 | "ü",
1880 | "f",
1881 | "c",
1882 | "ö",
1883 | "y",
1884 | ],
1885 | "Thai": [
1886 | "า",
1887 | "น",
1888 | "ร",
1889 | "อ",
1890 | "ก",
1891 | "เ",
1892 | "ง",
1893 | "ม",
1894 | "ย",
1895 | "ล",
1896 | "ว",
1897 | "ด",
1898 | "ท",
1899 | "ส",
1900 | "ต",
1901 | "ะ",
1902 | "ป",
1903 | "บ",
1904 | "ค",
1905 | "ห",
1906 | "แ",
1907 | "จ",
1908 | "พ",
1909 | "ช",
1910 | "ข",
1911 | "ใ",
1912 | ],
1913 | "Greek": [
1914 | "α",
1915 | "τ",
1916 | "ο",
1917 | "ι",
1918 | "ε",
1919 | "ν",
1920 | "ρ",
1921 | "σ",
1922 | "κ",
1923 | "η",
1924 | "π",
1925 | "ς",
1926 | "υ",
1927 | "μ",
1928 | "λ",
1929 | "ί",
1930 | "ό",
1931 | "ά",
1932 | "γ",
1933 | "έ",
1934 | "δ",
1935 | "ή",
1936 | "ω",
1937 | "χ",
1938 | "θ",
1939 | "ύ",
1940 | ],
1941 | "Tamil": [
1942 | "க",
1943 | "த",
1944 | "ப",
1945 | "ட",
1946 | "ர",
1947 | "ம",
1948 | "ல",
1949 | "ன",
1950 | "வ",
1951 | "ற",
1952 | "ய",
1953 | "ள",
1954 | "ச",
1955 | "ந",
1956 | "இ",
1957 | "ண",
1958 | "அ",
1959 | "ஆ",
1960 | "ழ",
1961 | "ங",
1962 | "எ",
1963 | "உ",
1964 | "ஒ",
1965 | "ஸ",
1966 | ],
1967 | "Kazakh": [
1968 | "а",
1969 | "ы",
1970 | "е",
1971 | "н",
1972 | "т",
1973 | "р",
1974 | "л",
1975 | "і",
1976 | "д",
1977 | "с",
1978 | "м",
1979 | "қ",
1980 | "к",
1981 | "о",
1982 | "б",
1983 | "и",
1984 | "у",
1985 | "ғ",
1986 | "ж",
1987 | "ң",
1988 | "з",
1989 | "ш",
1990 | "й",
1991 | "п",
1992 | "г",
1993 | "ө",
1994 | ],
1995 | }
1996 |
1997 | LANGUAGE_SUPPORTED_COUNT: int = len(FREQUENCIES)
1998 |
```