From c4c454770617d55849e43631decbff5fb312d23b Mon Sep 17 00:00:00 2001 From: Dongho Kim Date: Mon, 9 Dec 2024 18:22:38 +0900 Subject: [PATCH] week06 --- env/bin/gitlab | 8 + env/bin/normalizer | 8 + .../PyYAML-6.0.2.dist-info/INSTALLER | 1 + .../PyYAML-6.0.2.dist-info/LICENSE | 20 + .../PyYAML-6.0.2.dist-info/METADATA | 46 + .../PyYAML-6.0.2.dist-info/RECORD | 44 + .../PyYAML-6.0.2.dist-info/REQUESTED | 0 .../PyYAML-6.0.2.dist-info/WHEEL | 6 + .../PyYAML-6.0.2.dist-info/top_level.txt | 2 + .../__pycache__/appdirs.cpython-312.pyc | Bin 0 -> 27976 bytes .../site-packages/_yaml/__init__.py | 33 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 849 bytes .../appdirs-1.4.4.dist-info/INSTALLER | 1 + .../appdirs-1.4.4.dist-info/LICENSE.txt | 23 + .../appdirs-1.4.4.dist-info/METADATA | 264 + .../appdirs-1.4.4.dist-info/RECORD | 8 + .../appdirs-1.4.4.dist-info/WHEEL | 6 + .../appdirs-1.4.4.dist-info/top_level.txt | 1 + env/lib/python3.12/site-packages/appdirs.py | 608 ++ .../certifi-2024.8.30.dist-info/INSTALLER | 1 + .../certifi-2024.8.30.dist-info/LICENSE | 20 + .../certifi-2024.8.30.dist-info/METADATA | 67 + .../certifi-2024.8.30.dist-info/RECORD | 14 + .../certifi-2024.8.30.dist-info/WHEEL | 5 + .../certifi-2024.8.30.dist-info/top_level.txt | 1 + .../site-packages/certifi/__init__.py | 4 + .../site-packages/certifi/__main__.py | 12 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 296 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 611 bytes .../certifi/__pycache__/core.cpython-312.pyc | Bin 0 -> 3181 bytes .../site-packages/certifi/cacert.pem | 4929 ++++++++++ .../python3.12/site-packages/certifi/core.py | 114 + .../python3.12/site-packages/certifi/py.typed | 0 .../INSTALLER | 1 + .../LICENSE | 21 + .../METADATA | 695 ++ .../charset_normalizer-3.4.0.dist-info/RECORD | 35 + .../charset_normalizer-3.4.0.dist-info/WHEEL | 6 + .../entry_points.txt | 2 + .../top_level.txt | 1 + .../charset_normalizer/__init__.py | 46 + .../charset_normalizer/__main__.py | 4 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1715 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 285 bytes .../__pycache__/api.cpython-312.pyc | Bin 0 -> 17996 bytes .../__pycache__/cd.cpython-312.pyc | Bin 0 -> 13478 bytes .../__pycache__/constant.cpython-312.pyc | Bin 0 -> 38748 bytes .../__pycache__/legacy.cpython-312.pyc | Bin 0 -> 2829 bytes .../__pycache__/md.cpython-312.pyc | Bin 0 -> 24908 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 17435 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 14353 bytes .../__pycache__/version.cpython-312.pyc | Bin 0 -> 312 bytes .../site-packages/charset_normalizer/api.py | 668 ++ .../site-packages/charset_normalizer/cd.py | 395 + .../charset_normalizer/cli/__init__.py | 6 + .../charset_normalizer/cli/__main__.py | 320 + .../cli/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 273 bytes .../cli/__pycache__/__main__.cpython-312.pyc | Bin 0 -> 11017 bytes .../charset_normalizer/constant.py | 1997 ++++ .../charset_normalizer/legacy.py | 65 + .../md.cpython-312-aarch64-linux-gnu.so | Bin 0 -> 69800 bytes .../site-packages/charset_normalizer/md.py | 628 ++ ...md__mypyc.cpython-312-aarch64-linux-gnu.so | Bin 0 -> 322008 bytes .../charset_normalizer/models.py | 359 + .../site-packages/charset_normalizer/py.typed | 0 .../site-packages/charset_normalizer/utils.py | 421 + .../charset_normalizer/version.py | 6 + .../site-packages/gitlab/__init__.py | 47 + .../site-packages/gitlab/__main__.py | 4 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 892 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 323 bytes .../__pycache__/_version.cpython-312.pyc | Bin 0 -> 456 bytes .../gitlab/__pycache__/base.cpython-312.pyc | Bin 0 -> 19258 bytes .../gitlab/__pycache__/cli.cpython-312.pyc | Bin 0 -> 15264 bytes .../gitlab/__pycache__/client.cpython-312.pyc | Bin 0 -> 55818 bytes .../gitlab/__pycache__/config.cpython-312.pyc | Bin 0 -> 11453 bytes .../gitlab/__pycache__/const.cpython-312.pyc | Bin 0 -> 7162 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 14269 bytes .../gitlab/__pycache__/mixins.cpython-312.pyc | Bin 0 -> 51615 bytes .../gitlab/__pycache__/types.cpython-312.pyc | Bin 0 -> 6605 bytes .../gitlab/__pycache__/utils.cpython-312.pyc | Bin 0 -> 12455 bytes .../gitlab/_backends/__init__.py | 22 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 522 bytes .../__pycache__/graphql.cpython-312.pyc | Bin 0 -> 1491 bytes .../__pycache__/protocol.cpython-312.pyc | Bin 0 -> 1819 bytes .../requests_backend.cpython-312.pyc | Bin 0 -> 8679 bytes .../site-packages/gitlab/_backends/graphql.py | 24 + .../gitlab/_backends/protocol.py | 32 + .../gitlab/_backends/requests_backend.py | 168 + .../site-packages/gitlab/_version.py | 6 + .../python3.12/site-packages/gitlab/base.py | 394 + .../python3.12/site-packages/gitlab/cli.py | 420 + .../python3.12/site-packages/gitlab/client.py | 1369 +++ .../python3.12/site-packages/gitlab/config.py | 287 + .../python3.12/site-packages/gitlab/const.py | 169 + .../site-packages/gitlab/exceptions.py | 428 + .../python3.12/site-packages/gitlab/mixins.py | 1099 +++ .../python3.12/site-packages/gitlab/py.typed | 0 .../python3.12/site-packages/gitlab/types.py | 105 + .../python3.12/site-packages/gitlab/utils.py | 303 + .../site-packages/gitlab/v4/__init__.py | 0 .../v4/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 171 bytes .../gitlab/v4/__pycache__/cli.cpython-312.pyc | Bin 0 -> 30132 bytes .../python3.12/site-packages/gitlab/v4/cli.py | 605 ++ .../gitlab/v4/objects/__init__.py | 79 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 2314 bytes .../access_requests.cpython-312.pyc | Bin 0 -> 1426 bytes .../__pycache__/appearance.cpython-312.pyc | Bin 0 -> 2753 bytes .../__pycache__/applications.cpython-312.pyc | Bin 0 -> 1045 bytes .../__pycache__/artifacts.cpython-312.pyc | Bin 0 -> 6418 bytes .../__pycache__/audit_events.cpython-312.pyc | Bin 0 -> 3506 bytes .../__pycache__/award_emojis.cpython-312.pyc | Bin 0 -> 8355 bytes .../__pycache__/badges.cpython-312.pyc | Bin 0 -> 2511 bytes .../__pycache__/boards.cpython-312.pyc | Bin 0 -> 4441 bytes .../__pycache__/branches.cpython-312.pyc | Bin 0 -> 2788 bytes .../broadcast_messages.cpython-312.pyc | Bin 0 -> 1703 bytes .../__pycache__/bulk_imports.cpython-312.pyc | Bin 0 -> 2865 bytes .../__pycache__/ci_lint.cpython-312.pyc | Bin 0 -> 3338 bytes .../cluster_agents.cpython-312.pyc | Bin 0 -> 1574 bytes .../__pycache__/clusters.cpython-312.pyc | Bin 0 -> 4411 bytes .../__pycache__/commits.cpython-312.pyc | Bin 0 -> 12167 bytes .../container_registry.cpython-312.pyc | Bin 0 -> 4988 bytes .../custom_attributes.cpython-312.pyc | Bin 0 -> 3226 bytes .../__pycache__/deploy_keys.cpython-312.pyc | Bin 0 -> 3270 bytes .../__pycache__/deploy_tokens.cpython-312.pyc | Bin 0 -> 3173 bytes .../__pycache__/deployments.cpython-312.pyc | Bin 0 -> 3918 bytes .../__pycache__/discussions.cpython-312.pyc | Bin 0 -> 5021 bytes .../__pycache__/draft_notes.cpython-312.pyc | Bin 0 -> 2550 bytes .../__pycache__/environments.cpython-312.pyc | Bin 0 -> 4113 bytes .../objects/__pycache__/epics.cpython-312.pyc | Bin 0 -> 5202 bytes .../__pycache__/events.cpython-312.pyc | Bin 0 -> 9812 bytes .../__pycache__/export_import.cpython-312.pyc | Bin 0 -> 3454 bytes .../__pycache__/features.cpython-312.pyc | Bin 0 -> 2820 bytes .../objects/__pycache__/files.cpython-312.pyc | Bin 0 -> 14073 bytes .../__pycache__/geo_nodes.cpython-312.pyc | Bin 0 -> 5583 bytes .../group_access_tokens.cpython-312.pyc | Bin 0 -> 1753 bytes .../__pycache__/groups.cpython-312.pyc | Bin 0 -> 18421 bytes .../objects/__pycache__/hooks.cpython-312.pyc | Bin 0 -> 5092 bytes .../__pycache__/integrations.cpython-312.pyc | Bin 0 -> 5711 bytes .../__pycache__/invitations.cpython-312.pyc | Bin 0 -> 3613 bytes .../__pycache__/issues.cpython-312.pyc | Bin 0 -> 12339 bytes .../__pycache__/iterations.cpython-312.pyc | Bin 0 -> 1394 bytes .../job_token_scope.cpython-312.pyc | Bin 0 -> 3842 bytes .../objects/__pycache__/jobs.cpython-312.pyc | Bin 0 -> 12674 bytes .../objects/__pycache__/keys.cpython-312.pyc | Bin 0 -> 1744 bytes .../__pycache__/labels.cpython-312.pyc | Bin 0 -> 5172 bytes .../objects/__pycache__/ldap.cpython-312.pyc | Bin 0 -> 2633 bytes .../__pycache__/members.cpython-312.pyc | Bin 0 -> 5779 bytes .../merge_request_approvals.cpython-312.pyc | Bin 0 -> 7859 bytes .../merge_requests.cpython-312.pyc | Bin 0 -> 21258 bytes .../__pycache__/merge_trains.cpython-312.pyc | Bin 0 -> 858 bytes .../__pycache__/milestones.cpython-312.pyc | Bin 0 -> 8198 bytes .../__pycache__/namespaces.cpython-312.pyc | Bin 0 -> 2671 bytes .../objects/__pycache__/notes.cpython-312.pyc | Bin 0 -> 11241 bytes .../notification_settings.cpython-312.pyc | Bin 0 -> 3185 bytes .../package_protection_rules.cpython-312.pyc | Bin 0 -> 1385 bytes .../__pycache__/packages.cpython-312.pyc | Bin 0 -> 8966 bytes .../objects/__pycache__/pages.cpython-312.pyc | Bin 0 -> 3122 bytes .../personal_access_tokens.cpython-312.pyc | Bin 0 -> 2190 bytes .../__pycache__/pipelines.cpython-312.pyc | Bin 0 -> 14357 bytes .../project_access_tokens.cpython-312.pyc | Bin 0 -> 1767 bytes .../__pycache__/projects.cpython-312.pyc | Bin 0 -> 45433 bytes .../__pycache__/push_rules.cpython-312.pyc | Bin 0 -> 2652 bytes .../registry_protection_rules.cpython-312.pyc | Bin 0 -> 1369 bytes .../__pycache__/releases.cpython-312.pyc | Bin 0 -> 2942 bytes .../__pycache__/repositories.cpython-312.pyc | Bin 0 -> 14249 bytes .../resource_groups.cpython-312.pyc | Bin 0 -> 2279 bytes .../__pycache__/reviewers.cpython-312.pyc | Bin 0 -> 895 bytes .../__pycache__/runners.cpython-312.pyc | Bin 0 -> 6602 bytes .../__pycache__/secure_files.cpython-312.pyc | Bin 0 -> 3864 bytes .../service_accounts.cpython-312.pyc | Bin 0 -> 1050 bytes .../__pycache__/settings.cpython-312.pyc | Bin 0 -> 4374 bytes .../__pycache__/sidekiq.cpython-312.pyc | Bin 0 -> 4386 bytes .../__pycache__/snippets.cpython-312.pyc | Bin 0 -> 8696 bytes .../__pycache__/statistics.cpython-312.pyc | Bin 0 -> 4393 bytes .../objects/__pycache__/tags.cpython-312.pyc | Bin 0 -> 2497 bytes .../__pycache__/templates.cpython-312.pyc | Bin 0 -> 3672 bytes .../objects/__pycache__/todos.cpython-312.pyc | Bin 0 -> 3055 bytes .../__pycache__/topics.cpython-312.pyc | Bin 0 -> 3110 bytes .../__pycache__/triggers.cpython-312.pyc | Bin 0 -> 1571 bytes .../objects/__pycache__/users.cpython-312.pyc | Bin 0 -> 27547 bytes .../__pycache__/variables.cpython-312.pyc | Bin 0 -> 3717 bytes .../objects/__pycache__/wikis.cpython-312.pyc | Bin 0 -> 2787 bytes .../gitlab/v4/objects/access_requests.py | 35 + .../gitlab/v4/objects/appearance.py | 63 + .../gitlab/v4/objects/applications.py | 21 + .../gitlab/v4/objects/artifacts.py | 147 + .../gitlab/v4/objects/audit_events.py | 73 + .../gitlab/v4/objects/award_emojis.py | 174 + .../site-packages/gitlab/v4/objects/badges.py | 44 + .../site-packages/gitlab/v4/objects/boards.py | 84 + .../gitlab/v4/objects/branches.py | 63 + .../gitlab/v4/objects/broadcast_messages.py | 40 + .../gitlab/v4/objects/bulk_imports.py | 54 + .../gitlab/v4/objects/ci_lint.py | 78 + .../gitlab/v4/objects/cluster_agents.py | 26 + .../gitlab/v4/objects/clusters.py | 115 + .../gitlab/v4/objects/commits.py | 253 + .../gitlab/v4/objects/container_registry.py | 96 + .../gitlab/v4/objects/custom_attributes.py | 58 + .../gitlab/v4/objects/deploy_keys.py | 66 + .../gitlab/v4/objects/deploy_tokens.py | 84 + .../gitlab/v4/objects/deployments.py | 89 + .../gitlab/v4/objects/discussions.py | 94 + .../gitlab/v4/objects/draft_notes.py | 43 + .../gitlab/v4/objects/environments.py | 87 + .../site-packages/gitlab/v4/objects/epics.py | 121 + .../site-packages/gitlab/v4/objects/events.py | 218 + .../gitlab/v4/objects/export_import.py | 69 + .../gitlab/v4/objects/features.py | 69 + .../site-packages/gitlab/v4/objects/files.py | 355 + .../gitlab/v4/objects/geo_nodes.py | 110 + .../gitlab/v4/objects/group_access_tokens.py | 38 + .../site-packages/gitlab/v4/objects/groups.py | 450 + .../site-packages/gitlab/v4/objects/hooks.py | 157 + .../gitlab/v4/objects/integrations.py | 295 + .../gitlab/v4/objects/invitations.py | 91 + .../site-packages/gitlab/v4/objects/issues.py | 331 + .../gitlab/v4/objects/iterations.py | 53 + .../gitlab/v4/objects/job_token_scope.py | 77 + .../site-packages/gitlab/v4/objects/jobs.py | 252 + .../site-packages/gitlab/v4/objects/keys.py | 34 + .../site-packages/gitlab/v4/objects/labels.py | 150 + .../site-packages/gitlab/v4/objects/ldap.py | 52 + .../gitlab/v4/objects/members.py | 135 + .../v4/objects/merge_request_approvals.py | 187 + .../gitlab/v4/objects/merge_requests.py | 546 ++ .../gitlab/v4/objects/merge_trains.py | 18 + .../gitlab/v4/objects/milestones.py | 184 + .../gitlab/v4/objects/namespaces.py | 49 + .../site-packages/gitlab/v4/objects/notes.py | 262 + .../v4/objects/notification_settings.py | 69 + .../v4/objects/package_protection_rules.py | 43 + .../gitlab/v4/objects/packages.py | 230 + .../site-packages/gitlab/v4/objects/pages.py | 69 + .../v4/objects/personal_access_tokens.py | 48 + .../gitlab/v4/objects/pipelines.py | 304 + .../v4/objects/project_access_tokens.py | 38 + .../gitlab/v4/objects/projects.py | 1218 +++ .../gitlab/v4/objects/push_rules.py | 109 + .../v4/objects/registry_protection_rules.py | 35 + .../gitlab/v4/objects/releases.py | 63 + .../gitlab/v4/objects/repositories.py | 293 + .../gitlab/v4/objects/resource_groups.py | 45 + .../gitlab/v4/objects/reviewers.py | 17 + .../gitlab/v4/objects/runners.py | 161 + .../gitlab/v4/objects/secure_files.py | 72 + .../gitlab/v4/objects/service_accounts.py | 18 + .../gitlab/v4/objects/settings.py | 120 + .../gitlab/v4/objects/sidekiq.py | 91 + .../gitlab/v4/objects/snippets.py | 238 + .../gitlab/v4/objects/statistics.py | 87 + .../site-packages/gitlab/v4/objects/tags.py | 48 + .../gitlab/v4/objects/templates.py | 67 + .../site-packages/gitlab/v4/objects/todos.py | 58 + .../site-packages/gitlab/v4/objects/topics.py | 69 + .../gitlab/v4/objects/triggers.py | 27 + .../site-packages/gitlab/v4/objects/users.py | 709 ++ .../gitlab/v4/objects/variables.py | 83 + .../site-packages/gitlab/v4/objects/wikis.py | 54 + .../idna-3.10.dist-info/INSTALLER | 1 + .../idna-3.10.dist-info/LICENSE.md | 31 + .../idna-3.10.dist-info/METADATA | 250 + .../site-packages/idna-3.10.dist-info/RECORD | 22 + .../site-packages/idna-3.10.dist-info/WHEEL | 4 + .../python3.12/site-packages/idna/__init__.py | 45 + .../idna/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 864 bytes .../idna/__pycache__/codec.cpython-312.pyc | Bin 0 -> 4964 bytes .../idna/__pycache__/compat.cpython-312.pyc | Bin 0 -> 868 bytes .../idna/__pycache__/core.cpython-312.pyc | Bin 0 -> 16154 bytes .../idna/__pycache__/idnadata.cpython-312.pyc | Bin 0 -> 99454 bytes .../__pycache__/intranges.cpython-312.pyc | Bin 0 -> 2616 bytes .../__pycache__/package_data.cpython-312.pyc | Bin 0 -> 195 bytes .../__pycache__/uts46data.cpython-312.pyc | Bin 0 -> 158824 bytes .../python3.12/site-packages/idna/codec.py | 122 + .../python3.12/site-packages/idna/compat.py | 15 + env/lib/python3.12/site-packages/idna/core.py | 437 + .../python3.12/site-packages/idna/idnadata.py | 4243 ++++++++ .../site-packages/idna/intranges.py | 57 + .../site-packages/idna/package_data.py | 1 + .../python3.12/site-packages/idna/py.typed | 0 .../site-packages/idna/uts46data.py | 8681 +++++++++++++++++ .../lxml-5.3.0.dist-info/INSTALLER | 1 + .../lxml-5.3.0.dist-info/LICENSE.txt | 29 + .../lxml-5.3.0.dist-info/LICENSES.txt | 29 + .../lxml-5.3.0.dist-info/METADATA | 103 + .../site-packages/lxml-5.3.0.dist-info/RECORD | 201 + .../site-packages/lxml-5.3.0.dist-info/WHEEL | 5 + .../lxml-5.3.0.dist-info/top_level.txt | 1 + .../site-packages/lxml/ElementInclude.py | 244 + .../python3.12/site-packages/lxml/__init__.py | 22 + .../ElementInclude.cpython-312.pyc | Bin 0 -> 6063 bytes .../lxml/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 998 bytes .../__pycache__/_elementpath.cpython-312.pyc | Bin 0 -> 10414 bytes .../lxml/__pycache__/builder.cpython-312.pyc | Bin 0 -> 7573 bytes .../__pycache__/cssselect.cpython-312.pyc | Bin 0 -> 4554 bytes .../doctestcompare.cpython-312.pyc | Bin 0 -> 24282 bytes .../__pycache__/pyclasslookup.cpython-312.pyc | Bin 0 -> 235 bytes .../lxml/__pycache__/sax.cpython-312.pyc | Bin 0 -> 12380 bytes .../__pycache__/usedoctest.cpython-312.pyc | Bin 0 -> 468 bytes ...ementpath.cpython-312-aarch64-linux-gnu.so | Bin 0 -> 208960 bytes .../site-packages/lxml/_elementpath.py | 341 + .../site-packages/lxml/apihelpers.pxi | 1793 ++++ .../builder.cpython-312-aarch64-linux-gnu.so | Bin 0 -> 136896 bytes .../python3.12/site-packages/lxml/builder.py | 232 + .../site-packages/lxml/classlookup.pxi | 580 ++ .../python3.12/site-packages/lxml/cleanup.pxi | 215 + .../site-packages/lxml/cssselect.py | 101 + .../python3.12/site-packages/lxml/debug.pxi | 90 + .../site-packages/lxml/docloader.pxi | 178 + .../site-packages/lxml/doctestcompare.py | 488 + env/lib/python3.12/site-packages/lxml/dtd.pxi | 478 + .../etree.cpython-312-aarch64-linux-gnu.so | Bin 0 -> 5094584 bytes env/lib/python3.12/site-packages/lxml/etree.h | 248 + .../python3.12/site-packages/lxml/etree.pyx | 3731 +++++++ .../python3.12/site-packages/lxml/etree_api.h | 195 + .../site-packages/lxml/extensions.pxi | 833 ++ .../site-packages/lxml/html/ElementSoup.py | 10 + .../site-packages/lxml/html/__init__.py | 1923 ++++ .../__pycache__/ElementSoup.cpython-312.pyc | Bin 0 -> 604 bytes .../html/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 80772 bytes .../__pycache__/_diffcommand.cpython-312.pyc | Bin 0 -> 3882 bytes .../__pycache__/_html5builder.cpython-312.pyc | Bin 0 -> 5805 bytes .../__pycache__/_setmixin.cpython-312.pyc | Bin 0 -> 2518 bytes .../html/__pycache__/builder.cpython-312.pyc | Bin 0 -> 5351 bytes .../html/__pycache__/clean.cpython-312.pyc | Bin 0 -> 608 bytes .../html/__pycache__/defs.cpython-312.pyc | Bin 0 -> 3335 bytes .../html/__pycache__/diff.cpython-312.pyc | Bin 0 -> 34283 bytes .../html/__pycache__/formfill.cpython-312.pyc | Bin 0 -> 12176 bytes .../__pycache__/html5parser.cpython-312.pyc | Bin 0 -> 8977 bytes .../__pycache__/soupparser.cpython-312.pyc | Bin 0 -> 11612 bytes .../__pycache__/usedoctest.cpython-312.pyc | Bin 0 -> 492 bytes .../site-packages/lxml/html/_diffcommand.py | 86 + .../site-packages/lxml/html/_html5builder.py | 100 + .../site-packages/lxml/html/_setmixin.py | 56 + .../site-packages/lxml/html/builder.py | 133 + .../site-packages/lxml/html/clean.py | 21 + .../site-packages/lxml/html/defs.py | 135 + .../diff.cpython-312-aarch64-linux-gnu.so | Bin 0 -> 335952 bytes .../site-packages/lxml/html/diff.py | 878 ++ .../site-packages/lxml/html/formfill.py | 299 + .../site-packages/lxml/html/html5parser.py | 260 + .../site-packages/lxml/html/soupparser.py | 314 + .../site-packages/lxml/html/usedoctest.py | 13 + .../site-packages/lxml/includes/__init__.pxd | 0 .../site-packages/lxml/includes/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 175 bytes .../site-packages/lxml/includes/c14n.pxd | 25 + .../site-packages/lxml/includes/config.pxd | 3 + .../site-packages/lxml/includes/dtdvalid.pxd | 18 + .../site-packages/lxml/includes/etree_defs.h | 379 + .../lxml/includes/etreepublic.pxd | 237 + .../lxml/includes/extlibs/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 183 bytes .../lxml/includes/extlibs/libcharset.h | 45 + .../lxml/includes/extlibs/localcharset.h | 137 + .../lxml/includes/extlibs/zconf.h | 543 ++ .../lxml/includes/extlibs/zlib.h | 1938 ++++ .../lxml/includes/htmlparser.pxd | 56 + .../lxml/includes/libexslt/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 184 bytes .../lxml/includes/libexslt/exslt.h | 108 + .../lxml/includes/libexslt/exsltconfig.h | 70 + .../lxml/includes/libexslt/exsltexports.h | 63 + .../lxml/includes/libxml/HTMLparser.h | 343 + .../lxml/includes/libxml/HTMLtree.h | 147 + .../site-packages/lxml/includes/libxml/SAX.h | 202 + .../site-packages/lxml/includes/libxml/SAX2.h | 171 + .../lxml/includes/libxml/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 182 bytes .../site-packages/lxml/includes/libxml/c14n.h | 126 + .../lxml/includes/libxml/catalog.h | 182 + .../lxml/includes/libxml/chvalid.h | 230 + .../lxml/includes/libxml/debugXML.h | 217 + .../site-packages/lxml/includes/libxml/dict.h | 82 + .../lxml/includes/libxml/encoding.h | 235 + .../lxml/includes/libxml/entities.h | 155 + .../lxml/includes/libxml/globals.h | 41 + .../site-packages/lxml/includes/libxml/hash.h | 232 + .../site-packages/lxml/includes/libxml/list.h | 137 + .../lxml/includes/libxml/nanoftp.h | 186 + .../lxml/includes/libxml/nanohttp.h | 81 + .../lxml/includes/libxml/parser.h | 1384 +++ .../lxml/includes/libxml/parserInternals.h | 663 ++ .../lxml/includes/libxml/relaxng.h | 219 + .../lxml/includes/libxml/schemasInternals.h | 959 ++ .../lxml/includes/libxml/schematron.h | 143 + .../lxml/includes/libxml/threads.h | 87 + .../site-packages/lxml/includes/libxml/tree.h | 1362 +++ .../site-packages/lxml/includes/libxml/uri.h | 95 + .../lxml/includes/libxml/valid.h | 450 + .../lxml/includes/libxml/xinclude.h | 129 + .../lxml/includes/libxml/xlink.h | 189 + .../lxml/includes/libxml/xmlIO.h | 421 + .../lxml/includes/libxml/xmlautomata.h | 146 + .../lxml/includes/libxml/xmlerror.h | 948 ++ .../lxml/includes/libxml/xmlexports.h | 50 + .../lxml/includes/libxml/xmlmemory.h | 225 + .../lxml/includes/libxml/xmlmodule.h | 57 + .../lxml/includes/libxml/xmlreader.h | 434 + .../lxml/includes/libxml/xmlregexp.h | 215 + .../lxml/includes/libxml/xmlsave.h | 97 + .../lxml/includes/libxml/xmlschemas.h | 249 + .../lxml/includes/libxml/xmlschemastypes.h | 152 + .../lxml/includes/libxml/xmlstring.h | 140 + .../lxml/includes/libxml/xmlunicode.h | 202 + .../lxml/includes/libxml/xmlversion.h | 511 + .../lxml/includes/libxml/xmlwriter.h | 488 + .../lxml/includes/libxml/xpath.h | 575 ++ .../lxml/includes/libxml/xpathInternals.h | 633 ++ .../lxml/includes/libxml/xpointer.h | 138 + .../lxml/includes/libxslt/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 183 bytes .../lxml/includes/libxslt/attributes.h | 39 + .../lxml/includes/libxslt/documents.h | 93 + .../lxml/includes/libxslt/extensions.h | 262 + .../lxml/includes/libxslt/extra.h | 72 + .../lxml/includes/libxslt/functions.h | 78 + .../lxml/includes/libxslt/imports.h | 75 + .../lxml/includes/libxslt/keys.h | 53 + .../lxml/includes/libxslt/namespaces.h | 68 + .../lxml/includes/libxslt/numbersInternals.h | 73 + .../lxml/includes/libxslt/pattern.h | 84 + .../lxml/includes/libxslt/preproc.h | 43 + .../lxml/includes/libxslt/security.h | 104 + .../lxml/includes/libxslt/templates.h | 77 + .../lxml/includes/libxslt/transform.h | 207 + .../lxml/includes/libxslt/variables.h | 118 + .../lxml/includes/libxslt/xslt.h | 110 + .../lxml/includes/libxslt/xsltInternals.h | 1995 ++++ .../lxml/includes/libxslt/xsltconfig.h | 146 + .../lxml/includes/libxslt/xsltexports.h | 64 + .../lxml/includes/libxslt/xsltlocale.h | 44 + .../lxml/includes/libxslt/xsltutils.h | 343 + .../lxml/includes/lxml-version.h | 3 + .../site-packages/lxml/includes/relaxng.pxd | 64 + .../lxml/includes/schematron.pxd | 34 + .../site-packages/lxml/includes/tree.pxd | 494 + .../site-packages/lxml/includes/uri.pxd | 5 + .../site-packages/lxml/includes/xinclude.pxd | 22 + .../site-packages/lxml/includes/xmlerror.pxd | 852 ++ .../site-packages/lxml/includes/xmlparser.pxd | 265 + .../site-packages/lxml/includes/xmlschema.pxd | 35 + .../site-packages/lxml/includes/xpath.pxd | 136 + .../site-packages/lxml/includes/xslt.pxd | 190 + .../lxml/isoschematron/__init__.py | 348 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 14203 bytes .../resources/rng/iso-schematron.rng | 709 ++ .../resources/xsl/RNG2Schtrn.xsl | 75 + .../resources/xsl/XSD2Schtrn.xsl | 77 + .../iso_abstract_expand.xsl | 313 + .../iso-schematron-xslt1/iso_dsdl_include.xsl | 1160 +++ .../iso_schematron_message.xsl | 55 + .../iso_schematron_skeleton_for_xslt1.xsl | 1796 ++++ .../iso_svrl_for_xslt1.xsl | 588 ++ .../xsl/iso-schematron-xslt1/readme.txt | 84 + .../site-packages/lxml/iterparse.pxi | 438 + .../site-packages/lxml/lxml.etree.h | 248 + .../site-packages/lxml/lxml.etree_api.h | 195 + .../site-packages/lxml/nsclasses.pxi | 281 + ...objectify.cpython-312-aarch64-linux-gnu.so | Bin 0 -> 2974808 bytes .../site-packages/lxml/objectify.pyx | 2145 ++++ .../site-packages/lxml/objectpath.pxi | 332 + .../python3.12/site-packages/lxml/parser.pxi | 2000 ++++ .../site-packages/lxml/parsertarget.pxi | 180 + .../python3.12/site-packages/lxml/proxy.pxi | 619 ++ .../site-packages/lxml/public-api.pxi | 178 + .../site-packages/lxml/pyclasslookup.py | 3 + .../site-packages/lxml/readonlytree.pxi | 565 ++ .../python3.12/site-packages/lxml/relaxng.pxi | 165 + .../lxml/sax.cpython-312-aarch64-linux-gnu.so | Bin 0 -> 202296 bytes env/lib/python3.12/site-packages/lxml/sax.py | 275 + .../site-packages/lxml/saxparser.pxi | 875 ++ .../site-packages/lxml/schematron.pxi | 168 + .../site-packages/lxml/serializer.pxi | 1781 ++++ .../site-packages/lxml/usedoctest.py | 13 + .../site-packages/lxml/xinclude.pxi | 67 + .../site-packages/lxml/xmlerror.pxi | 1654 ++++ .../python3.12/site-packages/lxml/xmlid.pxi | 179 + .../site-packages/lxml/xmlschema.pxi | 215 + .../python3.12/site-packages/lxml/xpath.pxi | 487 + .../python3.12/site-packages/lxml/xslt.pxi | 950 ++ .../python3.12/site-packages/lxml/xsltext.pxi | 242 + .../packaging-24.2.dist-info/INSTALLER | 1 + .../packaging-24.2.dist-info/LICENSE | 3 + .../packaging-24.2.dist-info/LICENSE.APACHE | 177 + .../packaging-24.2.dist-info/LICENSE.BSD | 23 + .../packaging-24.2.dist-info/METADATA | 102 + .../packaging-24.2.dist-info/RECORD | 40 + .../packaging-24.2.dist-info/WHEEL | 4 + .../site-packages/packaging/__init__.py | 15 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 536 bytes .../__pycache__/_elffile.cpython-312.pyc | Bin 0 -> 5008 bytes .../__pycache__/_manylinux.cpython-312.pyc | Bin 0 -> 9734 bytes .../__pycache__/_musllinux.cpython-312.pyc | Bin 0 -> 4547 bytes .../__pycache__/_parser.cpython-312.pyc | Bin 0 -> 13978 bytes .../__pycache__/_structures.cpython-312.pyc | Bin 0 -> 3219 bytes .../__pycache__/_tokenizer.cpython-312.pyc | Bin 0 -> 7889 bytes .../__pycache__/markers.cpython-312.pyc | Bin 0 -> 11354 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 0 -> 27232 bytes .../__pycache__/requirements.cpython-312.pyc | Bin 0 -> 4388 bytes .../__pycache__/specifiers.cpython-312.pyc | Bin 0 -> 39021 bytes .../__pycache__/tags.cpython-312.pyc | Bin 0 -> 23121 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 6613 bytes .../__pycache__/version.cpython-312.pyc | Bin 0 -> 20446 bytes .../site-packages/packaging/_elffile.py | 110 + .../site-packages/packaging/_manylinux.py | 263 + .../site-packages/packaging/_musllinux.py | 85 + .../site-packages/packaging/_parser.py | 354 + .../site-packages/packaging/_structures.py | 61 + .../site-packages/packaging/_tokenizer.py | 194 + .../packaging/licenses/__init__.py | 145 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 4095 bytes .../__pycache__/_spdx.cpython-312.pyc | Bin 0 -> 47342 bytes .../site-packages/packaging/licenses/_spdx.py | 759 ++ .../site-packages/packaging/markers.py | 331 + .../site-packages/packaging/metadata.py | 863 ++ .../site-packages/packaging/py.typed | 0 .../site-packages/packaging/requirements.py | 91 + .../site-packages/packaging/specifiers.py | 1020 ++ .../site-packages/packaging/tags.py | 617 ++ .../site-packages/packaging/utils.py | 163 + .../site-packages/packaging/version.py | 582 ++ .../prettytable-3.12.0.dist-info/INSTALLER | 1 + .../prettytable-3.12.0.dist-info/METADATA | 742 ++ .../prettytable-3.12.0.dist-info/RECORD | 15 + .../prettytable-3.12.0.dist-info/REQUESTED | 0 .../prettytable-3.12.0.dist-info/WHEEL | 4 + .../licenses/LICENSE | 30 + .../site-packages/prettytable/__init__.py | 62 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1431 bytes .../__pycache__/_version.cpython-312.pyc | Bin 0 -> 576 bytes .../__pycache__/colortable.cpython-312.pyc | Bin 0 -> 4790 bytes .../__pycache__/prettytable.cpython-312.pyc | Bin 0 -> 120194 bytes .../site-packages/prettytable/_version.py | 16 + .../site-packages/prettytable/colortable.py | 139 + .../site-packages/prettytable/prettytable.py | 2874 ++++++ .../site-packages/prettytable/py.typed | 0 .../psutil-6.1.0.dist-info/INSTALLER | 1 + .../psutil-6.1.0.dist-info/LICENSE | 29 + .../psutil-6.1.0.dist-info/METADATA | 546 ++ .../psutil-6.1.0.dist-info/RECORD | 65 + .../psutil-6.1.0.dist-info/REQUESTED | 0 .../psutil-6.1.0.dist-info/WHEEL | 6 + .../psutil-6.1.0.dist-info/top_level.txt | 1 + .../site-packages/psutil/__init__.py | 2486 +++++ .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 90780 bytes .../__pycache__/_common.cpython-312.pyc | Bin 0 -> 34081 bytes .../__pycache__/_compat.cpython-312.pyc | Bin 0 -> 18274 bytes .../psutil/__pycache__/_psaix.cpython-312.pyc | Bin 0 -> 25143 bytes .../psutil/__pycache__/_psbsd.cpython-312.pyc | Bin 0 -> 35277 bytes .../__pycache__/_pslinux.cpython-312.pyc | Bin 0 -> 92030 bytes .../psutil/__pycache__/_psosx.cpython-312.pyc | Bin 0 -> 21934 bytes .../__pycache__/_psposix.cpython-312.pyc | Bin 0 -> 6663 bytes .../__pycache__/_pssunos.cpython-312.pyc | Bin 0 -> 30865 bytes .../__pycache__/_pswindows.cpython-312.pyc | Bin 0 -> 45379 bytes .../site-packages/psutil/_common.py | 994 ++ .../site-packages/psutil/_compat.py | 477 + .../python3.12/site-packages/psutil/_psaix.py | 579 ++ .../python3.12/site-packages/psutil/_psbsd.py | 985 ++ .../site-packages/psutil/_pslinux.py | 2375 +++++ .../python3.12/site-packages/psutil/_psosx.py | 552 ++ .../site-packages/psutil/_psposix.py | 243 + .../site-packages/psutil/_pssunos.py | 753 ++ .../psutil/_psutil_linux.abi3.so | Bin 0 -> 160624 bytes .../psutil/_psutil_posix.abi3.so | Bin 0 -> 119360 bytes .../site-packages/psutil/_pswindows.py | 1174 +++ .../site-packages/psutil/tests/__init__.py | 2113 ++++ .../site-packages/psutil/tests/__main__.py | 12 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 94432 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 389 bytes .../__pycache__/test_aix.cpython-312.pyc | Bin 0 -> 5199 bytes .../__pycache__/test_bsd.cpython-312.pyc | Bin 0 -> 35683 bytes .../test_connections.cpython-312.pyc | Bin 0 -> 27235 bytes .../test_contracts.cpython-312.pyc | Bin 0 -> 22891 bytes .../__pycache__/test_linux.cpython-312.pyc | Bin 0 -> 136528 bytes .../__pycache__/test_memleaks.cpython-312.pyc | Bin 0 -> 36361 bytes .../__pycache__/test_misc.cpython-312.pyc | Bin 0 -> 55588 bytes .../__pycache__/test_osx.cpython-312.pyc | Bin 0 -> 11144 bytes .../__pycache__/test_posix.cpython-312.pyc | Bin 0 -> 24863 bytes .../__pycache__/test_process.cpython-312.pyc | Bin 0 -> 103412 bytes .../test_process_all.cpython-312.pyc | Bin 0 -> 26906 bytes .../__pycache__/test_sunos.cpython-312.pyc | Bin 0 -> 2134 bytes .../__pycache__/test_system.cpython-312.pyc | Bin 0 -> 55224 bytes .../test_testutils.cpython-312.pyc | Bin 0 -> 38607 bytes .../__pycache__/test_unicode.cpython-312.pyc | Bin 0 -> 17555 bytes .../__pycache__/test_windows.cpython-312.pyc | Bin 0 -> 56264 bytes .../site-packages/psutil/tests/test_aix.py | 115 + .../site-packages/psutil/tests/test_bsd.py | 592 ++ .../psutil/tests/test_connections.py | 567 ++ .../psutil/tests/test_contracts.py | 339 + .../site-packages/psutil/tests/test_linux.py | 2348 +++++ .../psutil/tests/test_memleaks.py | 493 + .../site-packages/psutil/tests/test_misc.py | 1058 ++ .../site-packages/psutil/tests/test_osx.py | 192 + .../site-packages/psutil/tests/test_posix.py | 496 + .../psutil/tests/test_process.py | 1746 ++++ .../psutil/tests/test_process_all.py | 543 ++ .../site-packages/psutil/tests/test_sunos.py | 39 + .../site-packages/psutil/tests/test_system.py | 987 ++ .../psutil/tests/test_testutils.py | 587 ++ .../psutil/tests/test_unicode.py | 369 + .../psutil/tests/test_windows.py | 934 ++ .../pyshark-0.6.dist-info/INSTALLER | 1 + .../pyshark-0.6.dist-info/METADATA | 25 + .../pyshark-0.6.dist-info/RECORD | 67 + .../pyshark-0.6.dist-info/REQUESTED | 0 .../site-packages/pyshark-0.6.dist-info/WHEEL | 5 + .../pyshark-0.6.dist-info/top_level.txt | 1 + .../site-packages/pyshark/__init__.py | 17 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1125 bytes .../pyshark/__pycache__/cache.cpython-312.pyc | Bin 0 -> 911 bytes .../__pycache__/config.cpython-312.pyc | Bin 0 -> 873 bytes .../ek_field_mapping.cpython-312.pyc | Bin 0 -> 4426 bytes .../python3.12/site-packages/pyshark/cache.py | 15 + .../site-packages/pyshark/capture/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 177 bytes .../__pycache__/capture.cpython-312.pyc | Bin 0 -> 25704 bytes .../__pycache__/file_capture.cpython-312.pyc | Bin 0 -> 6646 bytes .../__pycache__/inmem_capture.cpython-312.pyc | Bin 0 -> 11809 bytes .../__pycache__/live_capture.cpython-312.pyc | Bin 0 -> 7724 bytes .../live_ring_capture.cpython-312.pyc | Bin 0 -> 4220 bytes .../__pycache__/pipe_capture.cpython-312.pyc | Bin 0 -> 3452 bytes .../remote_capture.cpython-312.pyc | Bin 0 -> 3131 bytes .../site-packages/pyshark/capture/capture.py | 466 + .../pyshark/capture/file_capture.py | 93 + .../pyshark/capture/inmem_capture.py | 200 + .../pyshark/capture/live_capture.py | 132 + .../pyshark/capture/live_ring_capture.py | 57 + .../pyshark/capture/pipe_capture.py | 52 + .../pyshark/capture/remote_capture.py | 66 + .../site-packages/pyshark/config.ini | 13 + .../site-packages/pyshark/config.py | 22 + .../site-packages/pyshark/ek_field_mapping.py | 91 + .../site-packages/pyshark/packet/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 176 bytes .../packet/__pycache__/common.cpython-312.pyc | Bin 0 -> 2241 bytes .../packet/__pycache__/consts.cpython-312.pyc | Bin 0 -> 217 bytes .../packet/__pycache__/fields.cpython-312.pyc | Bin 0 -> 6203 bytes .../packet/__pycache__/packet.cpython-312.pyc | Bin 0 -> 7868 bytes .../packet_summary.cpython-312.pyc | Bin 0 -> 2286 bytes .../site-packages/pyshark/packet/common.py | 41 + .../site-packages/pyshark/packet/consts.py | 1 + .../site-packages/pyshark/packet/fields.py | 115 + .../pyshark/packet/layers/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 183 bytes .../layers/__pycache__/base.cpython-312.pyc | Bin 0 -> 3981 bytes .../__pycache__/ek_layer.cpython-312.pyc | Bin 0 -> 10776 bytes .../__pycache__/json_layer.cpython-312.pyc | Bin 0 -> 10423 bytes .../__pycache__/xml_layer.cpython-312.pyc | Bin 0 -> 7704 bytes .../pyshark/packet/layers/base.py | 71 + .../pyshark/packet/layers/ek_layer.py | 185 + .../pyshark/packet/layers/json_layer.py | 200 + .../pyshark/packet/layers/xml_layer.py | 142 + .../site-packages/pyshark/packet/packet.py | 143 + .../pyshark/packet/packet_summary.py | 27 + .../site-packages/pyshark/tshark/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 176 bytes .../tshark/__pycache__/tshark.cpython-312.pyc | Bin 0 -> 8188 bytes .../pyshark/tshark/output_parser/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 190 bytes .../__pycache__/base_parser.cpython-312.pyc | Bin 0 -> 1893 bytes .../__pycache__/tshark_ek.cpython-312.pyc | Bin 0 -> 3068 bytes .../__pycache__/tshark_json.cpython-312.pyc | Bin 0 -> 5882 bytes .../__pycache__/tshark_xml.cpython-312.pyc | Bin 0 -> 7083 bytes .../tshark/output_parser/base_parser.py | 30 + .../pyshark/tshark/output_parser/tshark_ek.py | 59 + .../tshark/output_parser/tshark_json.py | 112 + .../tshark/output_parser/tshark_xml.py | 118 + .../site-packages/pyshark/tshark/tshark.py | 169 + .../python_gitlab-5.1.0.dist-info/AUTHORS | 22 + .../python_gitlab-5.1.0.dist-info/COPYING | 165 + .../python_gitlab-5.1.0.dist-info/INSTALLER | 1 + .../python_gitlab-5.1.0.dist-info/METADATA | 227 + .../python_gitlab-5.1.0.dist-info/RECORD | 203 + .../python_gitlab-5.1.0.dist-info/REQUESTED | 0 .../python_gitlab-5.1.0.dist-info/WHEEL | 5 + .../entry_points.txt | 2 + .../top_level.txt | 1 + .../requests-2.32.3.dist-info/INSTALLER | 1 + .../requests-2.32.3.dist-info/LICENSE | 175 + .../requests-2.32.3.dist-info/METADATA | 119 + .../requests-2.32.3.dist-info/RECORD | 42 + .../requests-2.32.3.dist-info/WHEEL | 5 + .../requests-2.32.3.dist-info/top_level.txt | 1 + .../site-packages/requests/__init__.py | 184 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 5399 bytes .../__pycache__/__version__.cpython-312.pyc | Bin 0 -> 563 bytes .../_internal_utils.cpython-312.pyc | Bin 0 -> 2003 bytes .../__pycache__/adapters.cpython-312.pyc | Bin 0 -> 28343 bytes .../requests/__pycache__/api.cpython-312.pyc | Bin 0 -> 7183 bytes .../requests/__pycache__/auth.cpython-312.pyc | Bin 0 -> 13902 bytes .../__pycache__/certs.cpython-312.pyc | Bin 0 -> 645 bytes .../__pycache__/compat.cpython-312.pyc | Bin 0 -> 2064 bytes .../__pycache__/cookies.cpython-312.pyc | Bin 0 -> 25255 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 7564 bytes .../requests/__pycache__/help.cpython-312.pyc | Bin 0 -> 4306 bytes .../__pycache__/hooks.cpython-312.pyc | Bin 0 -> 1031 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 35385 bytes .../__pycache__/packages.cpython-312.pyc | Bin 0 -> 1118 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 0 -> 27861 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 0 -> 6010 bytes .../__pycache__/structures.cpython-312.pyc | Bin 0 -> 5596 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 36409 bytes .../site-packages/requests/__version__.py | 14 + .../site-packages/requests/_internal_utils.py | 50 + .../site-packages/requests/adapters.py | 719 ++ .../python3.12/site-packages/requests/api.py | 157 + .../python3.12/site-packages/requests/auth.py | 314 + .../site-packages/requests/certs.py | 17 + .../site-packages/requests/compat.py | 94 + .../site-packages/requests/cookies.py | 561 ++ .../site-packages/requests/exceptions.py | 151 + .../python3.12/site-packages/requests/help.py | 134 + .../site-packages/requests/hooks.py | 33 + .../site-packages/requests/models.py | 1037 ++ .../site-packages/requests/packages.py | 23 + .../site-packages/requests/sessions.py | 831 ++ .../site-packages/requests/status_codes.py | 128 + .../site-packages/requests/structures.py | 99 + .../site-packages/requests/utils.py | 1096 +++ .../AUTHORS.rst | 57 + .../INSTALLER | 1 + .../requests_toolbelt-1.0.0.dist-info/LICENSE | 13 + .../METADATA | 521 + .../requests_toolbelt-1.0.0.dist-info/RECORD | 75 + .../requests_toolbelt-1.0.0.dist-info/WHEEL | 6 + .../top_level.txt | 1 + .../requests_toolbelt/__init__.py | 34 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1456 bytes .../__pycache__/_compat.cpython-312.pyc | Bin 0 -> 12289 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 1228 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 0 -> 3973 bytes .../streaming_iterator.cpython-312.pyc | Bin 0 -> 5113 bytes .../requests_toolbelt/_compat.py | 302 + .../requests_toolbelt/adapters/__init__.py | 15 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 560 bytes .../__pycache__/appengine.cpython-312.pyc | Bin 0 -> 8863 bytes .../__pycache__/fingerprint.cpython-312.pyc | Bin 0 -> 2035 bytes .../host_header_ssl.cpython-312.pyc | Bin 0 -> 1759 bytes .../socket_options.cpython-312.pyc | Bin 0 -> 5592 bytes .../__pycache__/source.cpython-312.pyc | Bin 0 -> 3290 bytes .../adapters/__pycache__/ssl.cpython-312.pyc | Bin 0 -> 2962 bytes .../adapters/__pycache__/x509.cpython-312.pyc | Bin 0 -> 8988 bytes .../requests_toolbelt/adapters/appengine.py | 206 + .../requests_toolbelt/adapters/fingerprint.py | 48 + .../adapters/host_header_ssl.py | 43 + .../adapters/socket_options.py | 129 + .../requests_toolbelt/adapters/source.py | 67 + .../requests_toolbelt/adapters/ssl.py | 66 + .../requests_toolbelt/adapters/x509.py | 196 + .../requests_toolbelt/auth/__init__.py | 0 .../auth/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 184 bytes .../_digest_auth_compat.cpython-312.pyc | Bin 0 -> 1882 bytes .../auth/__pycache__/guess.cpython-312.pyc | Bin 0 -> 7666 bytes .../auth/__pycache__/handler.cpython-312.pyc | Bin 0 -> 6224 bytes .../http_proxy_digest.cpython-312.pyc | Bin 0 -> 5182 bytes .../auth/_digest_auth_compat.py | 29 + .../requests_toolbelt/auth/guess.py | 146 + .../requests_toolbelt/auth/handler.py | 142 + .../auth/http_proxy_digest.py | 103 + .../requests_toolbelt/cookies/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 187 bytes .../__pycache__/forgetful.cpython-312.pyc | Bin 0 -> 657 bytes .../requests_toolbelt/cookies/forgetful.py | 7 + .../downloadutils/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 193 bytes .../__pycache__/stream.cpython-312.pyc | Bin 0 -> 6532 bytes .../__pycache__/tee.cpython-312.pyc | Bin 0 -> 4672 bytes .../requests_toolbelt/downloadutils/stream.py | 176 + .../requests_toolbelt/downloadutils/tee.py | 123 + .../requests_toolbelt/exceptions.py | 25 + .../requests_toolbelt/multipart/__init__.py | 31 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 942 bytes .../__pycache__/decoder.cpython-312.pyc | Bin 0 -> 7882 bytes .../__pycache__/encoder.cpython-312.pyc | Bin 0 -> 28026 bytes .../requests_toolbelt/multipart/decoder.py | 156 + .../requests_toolbelt/multipart/encoder.py | 655 ++ .../requests_toolbelt/sessions.py | 89 + .../requests_toolbelt/streaming_iterator.py | 116 + .../requests_toolbelt/threaded/__init__.py | 97 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 3839 bytes .../threaded/__pycache__/pool.cpython-312.pyc | Bin 0 -> 8814 bytes .../__pycache__/thread.cpython-312.pyc | Bin 0 -> 3092 bytes .../requests_toolbelt/threaded/pool.py | 211 + .../requests_toolbelt/threaded/thread.py | 53 + .../requests_toolbelt/utils/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 185 bytes .../__pycache__/deprecated.cpython-312.pyc | Bin 0 -> 3553 bytes .../utils/__pycache__/dump.cpython-312.pyc | Bin 0 -> 8280 bytes .../__pycache__/formdata.cpython-312.pyc | Bin 0 -> 4514 bytes .../__pycache__/user_agent.cpython-312.pyc | Bin 0 -> 6357 bytes .../requests_toolbelt/utils/deprecated.py | 91 + .../requests_toolbelt/utils/dump.py | 198 + .../requests_toolbelt/utils/formdata.py | 108 + .../requests_toolbelt/utils/user_agent.py | 143 + .../termcolor-2.5.0.dist-info/INSTALLER | 1 + .../termcolor-2.5.0.dist-info/METADATA | 142 + .../termcolor-2.5.0.dist-info/RECORD | 15 + .../termcolor-2.5.0.dist-info/REQUESTED | 0 .../termcolor-2.5.0.dist-info/WHEEL | 4 + .../licenses/COPYING.txt | 19 + .../site-packages/termcolor/__init__.py | 14 + .../site-packages/termcolor/__main__.py | 69 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 454 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 3475 bytes .../__pycache__/_types.cpython-312.pyc | Bin 0 -> 802 bytes .../__pycache__/termcolor.cpython-312.pyc | Bin 0 -> 5712 bytes .../site-packages/termcolor/_types.py | 53 + .../site-packages/termcolor/py.typed | 0 .../site-packages/termcolor/termcolor.py | 214 + .../urllib3-2.2.3.dist-info/INSTALLER | 1 + .../urllib3-2.2.3.dist-info/METADATA | 155 + .../urllib3-2.2.3.dist-info/RECORD | 79 + .../urllib3-2.2.3.dist-info/WHEEL | 4 + .../licenses/LICENSE.txt | 21 + .../site-packages/urllib3/__init__.py | 211 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 7294 bytes .../_base_connection.cpython-312.pyc | Bin 0 -> 6841 bytes .../__pycache__/_collections.cpython-312.pyc | Bin 0 -> 22693 bytes .../_request_methods.cpython-312.pyc | Bin 0 -> 10610 bytes .../__pycache__/_version.cpython-312.pyc | Bin 0 -> 571 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 35733 bytes .../connectionpool.cpython-312.pyc | Bin 0 -> 39727 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 15816 bytes .../__pycache__/fields.cpython-312.pyc | Bin 0 -> 12056 bytes .../__pycache__/filepost.cpython-312.pyc | Bin 0 -> 3497 bytes .../__pycache__/poolmanager.cpython-312.pyc | Bin 0 -> 24058 bytes .../__pycache__/response.cpython-312.pyc | Bin 0 -> 50444 bytes .../site-packages/urllib3/_base_connection.py | 172 + .../site-packages/urllib3/_collections.py | 483 + .../site-packages/urllib3/_request_methods.py | 278 + .../site-packages/urllib3/_version.py | 16 + .../site-packages/urllib3/connection.py | 1033 ++ .../site-packages/urllib3/connectionpool.py | 1182 +++ .../site-packages/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 177 bytes .../__pycache__/pyopenssl.cpython-312.pyc | Bin 0 -> 27257 bytes .../contrib/__pycache__/socks.cpython-312.pyc | Bin 0 -> 8155 bytes .../urllib3/contrib/emscripten/__init__.py | 16 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 885 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 10224 bytes .../__pycache__/fetch.cpython-312.pyc | Bin 0 -> 18357 bytes .../__pycache__/request.cpython-312.pyc | Bin 0 -> 1405 bytes .../__pycache__/response.cpython-312.pyc | Bin 0 -> 12690 bytes .../urllib3/contrib/emscripten/connection.py | 254 + .../emscripten/emscripten_fetch_worker.js | 110 + .../urllib3/contrib/emscripten/fetch.py | 418 + .../urllib3/contrib/emscripten/request.py | 22 + .../urllib3/contrib/emscripten/response.py | 285 + .../urllib3/contrib/pyopenssl.py | 552 ++ .../site-packages/urllib3/contrib/socks.py | 228 + .../site-packages/urllib3/exceptions.py | 321 + .../site-packages/urllib3/fields.py | 341 + .../site-packages/urllib3/filepost.py | 89 + .../site-packages/urllib3/http2/__init__.py | 53 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1730 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 17037 bytes .../http2/__pycache__/probe.cpython-312.pyc | Bin 0 -> 3681 bytes .../site-packages/urllib3/http2/connection.py | 356 + .../site-packages/urllib3/http2/probe.py | 87 + .../site-packages/urllib3/poolmanager.py | 637 ++ .../python3.12/site-packages/urllib3/py.typed | 2 + .../site-packages/urllib3/response.py | 1265 +++ .../site-packages/urllib3/util/__init__.py | 42 + .../util/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 990 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 4728 bytes .../util/__pycache__/proxy.cpython-312.pyc | Bin 0 -> 1202 bytes .../util/__pycache__/request.cpython-312.pyc | Bin 0 -> 8016 bytes .../util/__pycache__/response.cpython-312.pyc | Bin 0 -> 2858 bytes .../util/__pycache__/retry.cpython-312.pyc | Bin 0 -> 20271 bytes .../util/__pycache__/ssl_.cpython-312.pyc | Bin 0 -> 16704 bytes .../ssl_match_hostname.cpython-312.pyc | Bin 0 -> 5542 bytes .../__pycache__/ssltransport.cpython-312.pyc | Bin 0 -> 13311 bytes .../util/__pycache__/timeout.cpython-312.pyc | Bin 0 -> 11674 bytes .../util/__pycache__/url.cpython-312.pyc | Bin 0 -> 16214 bytes .../util/__pycache__/util.cpython-312.pyc | Bin 0 -> 1979 bytes .../util/__pycache__/wait.cpython-312.pyc | Bin 0 -> 3425 bytes .../site-packages/urllib3/util/connection.py | 137 + .../site-packages/urllib3/util/proxy.py | 43 + .../site-packages/urllib3/util/request.py | 256 + .../site-packages/urllib3/util/response.py | 101 + .../site-packages/urllib3/util/retry.py | 533 + .../site-packages/urllib3/util/ssl_.py | 513 + .../urllib3/util/ssl_match_hostname.py | 159 + .../urllib3/util/ssltransport.py | 276 + .../site-packages/urllib3/util/timeout.py | 275 + .../site-packages/urllib3/util/url.py | 471 + .../site-packages/urllib3/util/util.py | 42 + .../site-packages/urllib3/util/wait.py | 124 + .../wcwidth-0.2.13.dist-info/INSTALLER | 1 + .../wcwidth-0.2.13.dist-info/LICENSE | 27 + .../wcwidth-0.2.13.dist-info/METADATA | 410 + .../wcwidth-0.2.13.dist-info/RECORD | 19 + .../wcwidth-0.2.13.dist-info/WHEEL | 6 + .../wcwidth-0.2.13.dist-info/top_level.txt | 1 + .../wcwidth-0.2.13.dist-info/zip-safe | 1 + .../site-packages/wcwidth/__init__.py | 29 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 563 bytes .../__pycache__/table_vs16.cpython-312.pyc | Bin 0 -> 1761 bytes .../__pycache__/table_wide.cpython-312.pyc | Bin 0 -> 8287 bytes .../__pycache__/table_zero.cpython-312.pyc | Bin 0 -> 23342 bytes .../unicode_versions.cpython-312.pyc | Bin 0 -> 911 bytes .../__pycache__/wcwidth.cpython-312.pyc | Bin 0 -> 12039 bytes .../site-packages/wcwidth/table_vs16.py | 125 + .../site-packages/wcwidth/table_wide.py | 1493 +++ .../site-packages/wcwidth/table_zero.py | 4843 +++++++++ .../site-packages/wcwidth/unicode_versions.py | 38 + .../site-packages/wcwidth/wcwidth.py | 345 + .../python3.12/site-packages/yaml/__init__.py | 390 + .../yaml/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 15603 bytes .../yaml/__pycache__/composer.cpython-312.pyc | Bin 0 -> 6512 bytes .../__pycache__/constructor.cpython-312.pyc | Bin 0 -> 34905 bytes .../yaml/__pycache__/cyaml.cpython-312.pyc | Bin 0 -> 4613 bytes .../yaml/__pycache__/dumper.cpython-312.pyc | Bin 0 -> 2449 bytes .../yaml/__pycache__/emitter.cpython-312.pyc | Bin 0 -> 50153 bytes .../yaml/__pycache__/error.cpython-312.pyc | Bin 0 -> 4255 bytes .../yaml/__pycache__/events.cpython-312.pyc | Bin 0 -> 4697 bytes .../yaml/__pycache__/loader.cpython-312.pyc | Bin 0 -> 3511 bytes .../yaml/__pycache__/nodes.cpython-312.pyc | Bin 0 -> 2196 bytes .../yaml/__pycache__/parser.cpython-312.pyc | Bin 0 -> 24701 bytes .../yaml/__pycache__/reader.cpython-312.pyc | Bin 0 -> 8831 bytes .../__pycache__/representer.cpython-312.pyc | Bin 0 -> 16904 bytes .../yaml/__pycache__/resolver.cpython-312.pyc | Bin 0 -> 9048 bytes .../yaml/__pycache__/scanner.cpython-312.pyc | Bin 0 -> 49839 bytes .../__pycache__/serializer.cpython-312.pyc | Bin 0 -> 6186 bytes .../yaml/__pycache__/tokens.cpython-312.pyc | Bin 0 -> 5766 bytes .../_yaml.cpython-312-aarch64-linux-gnu.so | Bin 0 -> 2456968 bytes .../python3.12/site-packages/yaml/composer.py | 139 + .../site-packages/yaml/constructor.py | 748 ++ .../python3.12/site-packages/yaml/cyaml.py | 101 + .../python3.12/site-packages/yaml/dumper.py | 62 + .../python3.12/site-packages/yaml/emitter.py | 1137 +++ .../python3.12/site-packages/yaml/error.py | 75 + .../python3.12/site-packages/yaml/events.py | 86 + .../python3.12/site-packages/yaml/loader.py | 63 + .../python3.12/site-packages/yaml/nodes.py | 49 + .../python3.12/site-packages/yaml/parser.py | 589 ++ .../python3.12/site-packages/yaml/reader.py | 185 + .../site-packages/yaml/representer.py | 389 + .../python3.12/site-packages/yaml/resolver.py | 227 + .../python3.12/site-packages/yaml/scanner.py | 1435 +++ .../site-packages/yaml/serializer.py | 111 + .../python3.12/site-packages/yaml/tokens.py | 104 + .../__pycache__/pwn_utils.cpython-312.pyc | Bin 0 -> 1476 bytes week05/hard/bruteforec.py | 44 + week05/hard/client.py | 14 +- week05/hard/pwn_utils.py | 27 + week05/hard/server.py | 2 + week05/hard/test.py | 36 + week06/easy/client.py | 26 + week06/easy/description/description.pdf | Bin 0 -> 87640 bytes week06/easy/server.py | 89 + week06/hard/alice.py | 241 + week06/hard/bob.py | 229 + week06/hard/client.py | 65 + week06/hard/description/description.pdf | Bin 0 -> 186511 bytes week06/hard/generate_sig_keys.py | 23 + week06/hard/insecurelib.py | 299 + 959 files changed, 174888 insertions(+), 6 deletions(-) create mode 100755 env/bin/gitlab create mode 100755 env/bin/normalizer create mode 100644 env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/INSTALLER create mode 100644 env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/LICENSE create mode 100644 env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/METADATA create mode 100644 env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/RECORD create mode 100644 env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/REQUESTED create mode 100644 env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/WHEEL create mode 100644 env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/top_level.txt create mode 100644 env/lib/python3.12/site-packages/__pycache__/appdirs.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/_yaml/__init__.py create mode 100644 env/lib/python3.12/site-packages/_yaml/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/appdirs-1.4.4.dist-info/INSTALLER create mode 100644 env/lib/python3.12/site-packages/appdirs-1.4.4.dist-info/LICENSE.txt create mode 100644 env/lib/python3.12/site-packages/appdirs-1.4.4.dist-info/METADATA create mode 100644 env/lib/python3.12/site-packages/appdirs-1.4.4.dist-info/RECORD create mode 100644 env/lib/python3.12/site-packages/appdirs-1.4.4.dist-info/WHEEL create mode 100644 env/lib/python3.12/site-packages/appdirs-1.4.4.dist-info/top_level.txt create mode 100644 env/lib/python3.12/site-packages/appdirs.py create mode 100644 env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/INSTALLER create mode 100644 env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/LICENSE create mode 100644 env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/METADATA create mode 100644 env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/RECORD create mode 100644 env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/WHEEL create mode 100644 env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/top_level.txt create mode 100644 env/lib/python3.12/site-packages/certifi/__init__.py create mode 100644 env/lib/python3.12/site-packages/certifi/__main__.py create mode 100644 env/lib/python3.12/site-packages/certifi/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/certifi/__pycache__/__main__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/certifi/__pycache__/core.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/certifi/cacert.pem create mode 100644 env/lib/python3.12/site-packages/certifi/core.py create mode 100644 env/lib/python3.12/site-packages/certifi/py.typed create mode 100644 env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/INSTALLER create mode 100644 env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/LICENSE create mode 100644 env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/METADATA create mode 100644 env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/RECORD create mode 100644 env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/WHEEL create mode 100644 env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/entry_points.txt create mode 100644 env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/top_level.txt create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/__init__.py create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/__main__.py create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/__pycache__/__main__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/__pycache__/api.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/__pycache__/cd.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/__pycache__/constant.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/__pycache__/legacy.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/__pycache__/md.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/__pycache__/models.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/__pycache__/utils.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/__pycache__/version.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/api.py create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/cd.py create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/cli/__init__.py create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/cli/__main__.py create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__main__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/constant.py create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/legacy.py create mode 100755 env/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-aarch64-linux-gnu.so create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/md.py create mode 100755 env/lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-aarch64-linux-gnu.so create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/models.py create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/py.typed create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/utils.py create mode 100644 env/lib/python3.12/site-packages/charset_normalizer/version.py create mode 100644 env/lib/python3.12/site-packages/gitlab/__init__.py create mode 100644 env/lib/python3.12/site-packages/gitlab/__main__.py create mode 100644 env/lib/python3.12/site-packages/gitlab/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/__pycache__/__main__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/__pycache__/_version.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/__pycache__/base.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/__pycache__/cli.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/__pycache__/client.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/__pycache__/config.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/__pycache__/const.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/__pycache__/exceptions.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/__pycache__/mixins.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/__pycache__/types.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/__pycache__/utils.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/_backends/__init__.py create mode 100644 env/lib/python3.12/site-packages/gitlab/_backends/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/_backends/__pycache__/graphql.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/_backends/__pycache__/protocol.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/_backends/__pycache__/requests_backend.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/_backends/graphql.py create mode 100644 env/lib/python3.12/site-packages/gitlab/_backends/protocol.py create mode 100644 env/lib/python3.12/site-packages/gitlab/_backends/requests_backend.py create mode 100644 env/lib/python3.12/site-packages/gitlab/_version.py create mode 100644 env/lib/python3.12/site-packages/gitlab/base.py create mode 100644 env/lib/python3.12/site-packages/gitlab/cli.py create mode 100644 env/lib/python3.12/site-packages/gitlab/client.py create mode 100644 env/lib/python3.12/site-packages/gitlab/config.py create mode 100644 env/lib/python3.12/site-packages/gitlab/const.py create mode 100644 env/lib/python3.12/site-packages/gitlab/exceptions.py create mode 100644 env/lib/python3.12/site-packages/gitlab/mixins.py create mode 100644 env/lib/python3.12/site-packages/gitlab/py.typed create mode 100644 env/lib/python3.12/site-packages/gitlab/types.py create mode 100644 env/lib/python3.12/site-packages/gitlab/utils.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/__init__.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/__pycache__/cli.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/cli.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__init__.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/access_requests.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/appearance.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/applications.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/artifacts.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/audit_events.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/award_emojis.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/badges.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/boards.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/branches.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/broadcast_messages.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/bulk_imports.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/ci_lint.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/cluster_agents.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/clusters.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/commits.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/container_registry.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/custom_attributes.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/deploy_keys.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/deploy_tokens.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/deployments.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/discussions.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/draft_notes.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/environments.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/epics.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/events.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/export_import.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/features.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/files.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/geo_nodes.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/group_access_tokens.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/groups.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/hooks.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/integrations.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/invitations.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/issues.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/iterations.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/job_token_scope.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/jobs.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/keys.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/labels.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/ldap.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/members.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/merge_request_approvals.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/merge_requests.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/merge_trains.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/milestones.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/namespaces.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/notes.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/notification_settings.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/package_protection_rules.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/packages.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/pages.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/personal_access_tokens.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/pipelines.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/project_access_tokens.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/projects.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/push_rules.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/registry_protection_rules.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/releases.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/repositories.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/resource_groups.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/reviewers.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/runners.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/secure_files.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/service_accounts.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/settings.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/sidekiq.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/snippets.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/statistics.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/tags.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/templates.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/todos.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/topics.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/triggers.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/users.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/variables.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/wikis.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/access_requests.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/appearance.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/applications.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/artifacts.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/audit_events.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/award_emojis.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/badges.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/boards.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/branches.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/broadcast_messages.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/bulk_imports.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/ci_lint.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/cluster_agents.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/clusters.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/commits.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/container_registry.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/custom_attributes.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/deploy_keys.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/deploy_tokens.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/deployments.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/discussions.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/draft_notes.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/environments.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/epics.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/events.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/export_import.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/features.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/files.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/geo_nodes.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/group_access_tokens.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/groups.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/hooks.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/integrations.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/invitations.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/issues.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/iterations.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/job_token_scope.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/jobs.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/keys.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/labels.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/ldap.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/members.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/merge_request_approvals.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/merge_requests.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/merge_trains.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/milestones.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/namespaces.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/notes.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/notification_settings.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/package_protection_rules.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/packages.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/pages.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/personal_access_tokens.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/pipelines.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/project_access_tokens.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/projects.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/push_rules.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/registry_protection_rules.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/releases.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/repositories.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/resource_groups.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/reviewers.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/runners.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/secure_files.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/service_accounts.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/settings.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/sidekiq.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/snippets.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/statistics.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/tags.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/templates.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/todos.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/topics.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/triggers.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/users.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/variables.py create mode 100644 env/lib/python3.12/site-packages/gitlab/v4/objects/wikis.py create mode 100644 env/lib/python3.12/site-packages/idna-3.10.dist-info/INSTALLER create mode 100644 env/lib/python3.12/site-packages/idna-3.10.dist-info/LICENSE.md create mode 100644 env/lib/python3.12/site-packages/idna-3.10.dist-info/METADATA create mode 100644 env/lib/python3.12/site-packages/idna-3.10.dist-info/RECORD create mode 100644 env/lib/python3.12/site-packages/idna-3.10.dist-info/WHEEL create mode 100644 env/lib/python3.12/site-packages/idna/__init__.py create mode 100644 env/lib/python3.12/site-packages/idna/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/idna/__pycache__/codec.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/idna/__pycache__/compat.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/idna/__pycache__/core.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/idna/__pycache__/idnadata.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/idna/__pycache__/intranges.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/idna/__pycache__/package_data.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/idna/__pycache__/uts46data.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/idna/codec.py create mode 100644 env/lib/python3.12/site-packages/idna/compat.py create mode 100644 env/lib/python3.12/site-packages/idna/core.py create mode 100644 env/lib/python3.12/site-packages/idna/idnadata.py create mode 100644 env/lib/python3.12/site-packages/idna/intranges.py create mode 100644 env/lib/python3.12/site-packages/idna/package_data.py create mode 100644 env/lib/python3.12/site-packages/idna/py.typed create mode 100644 env/lib/python3.12/site-packages/idna/uts46data.py create mode 100644 env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/INSTALLER create mode 100644 env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/LICENSE.txt create mode 100644 env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/LICENSES.txt create mode 100644 env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/METADATA create mode 100644 env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/RECORD create mode 100644 env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/WHEEL create mode 100644 env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/top_level.txt create mode 100644 env/lib/python3.12/site-packages/lxml/ElementInclude.py create mode 100644 env/lib/python3.12/site-packages/lxml/__init__.py create mode 100644 env/lib/python3.12/site-packages/lxml/__pycache__/ElementInclude.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/__pycache__/_elementpath.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/__pycache__/builder.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/__pycache__/cssselect.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/__pycache__/doctestcompare.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/__pycache__/pyclasslookup.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/__pycache__/sax.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/__pycache__/usedoctest.cpython-312.pyc create mode 100755 env/lib/python3.12/site-packages/lxml/_elementpath.cpython-312-aarch64-linux-gnu.so create mode 100644 env/lib/python3.12/site-packages/lxml/_elementpath.py create mode 100644 env/lib/python3.12/site-packages/lxml/apihelpers.pxi create mode 100755 env/lib/python3.12/site-packages/lxml/builder.cpython-312-aarch64-linux-gnu.so create mode 100644 env/lib/python3.12/site-packages/lxml/builder.py create mode 100644 env/lib/python3.12/site-packages/lxml/classlookup.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/cleanup.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/cssselect.py create mode 100644 env/lib/python3.12/site-packages/lxml/debug.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/docloader.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/doctestcompare.py create mode 100644 env/lib/python3.12/site-packages/lxml/dtd.pxi create mode 100755 env/lib/python3.12/site-packages/lxml/etree.cpython-312-aarch64-linux-gnu.so create mode 100644 env/lib/python3.12/site-packages/lxml/etree.h create mode 100644 env/lib/python3.12/site-packages/lxml/etree.pyx create mode 100644 env/lib/python3.12/site-packages/lxml/etree_api.h create mode 100644 env/lib/python3.12/site-packages/lxml/extensions.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/html/ElementSoup.py create mode 100644 env/lib/python3.12/site-packages/lxml/html/__init__.py create mode 100644 env/lib/python3.12/site-packages/lxml/html/__pycache__/ElementSoup.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/html/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/html/__pycache__/_diffcommand.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/html/__pycache__/_html5builder.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/html/__pycache__/_setmixin.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/html/__pycache__/builder.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/html/__pycache__/clean.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/html/__pycache__/defs.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/html/__pycache__/diff.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/html/__pycache__/formfill.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/html/__pycache__/html5parser.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/html/__pycache__/soupparser.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/html/__pycache__/usedoctest.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/html/_diffcommand.py create mode 100644 env/lib/python3.12/site-packages/lxml/html/_html5builder.py create mode 100644 env/lib/python3.12/site-packages/lxml/html/_setmixin.py create mode 100644 env/lib/python3.12/site-packages/lxml/html/builder.py create mode 100644 env/lib/python3.12/site-packages/lxml/html/clean.py create mode 100644 env/lib/python3.12/site-packages/lxml/html/defs.py create mode 100755 env/lib/python3.12/site-packages/lxml/html/diff.cpython-312-aarch64-linux-gnu.so create mode 100644 env/lib/python3.12/site-packages/lxml/html/diff.py create mode 100644 env/lib/python3.12/site-packages/lxml/html/formfill.py create mode 100644 env/lib/python3.12/site-packages/lxml/html/html5parser.py create mode 100644 env/lib/python3.12/site-packages/lxml/html/soupparser.py create mode 100644 env/lib/python3.12/site-packages/lxml/html/usedoctest.py create mode 100644 env/lib/python3.12/site-packages/lxml/includes/__init__.pxd create mode 100644 env/lib/python3.12/site-packages/lxml/includes/__init__.py create mode 100644 env/lib/python3.12/site-packages/lxml/includes/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/includes/c14n.pxd create mode 100644 env/lib/python3.12/site-packages/lxml/includes/config.pxd create mode 100644 env/lib/python3.12/site-packages/lxml/includes/dtdvalid.pxd create mode 100644 env/lib/python3.12/site-packages/lxml/includes/etree_defs.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/etreepublic.pxd create mode 100644 env/lib/python3.12/site-packages/lxml/includes/extlibs/__init__.py create mode 100644 env/lib/python3.12/site-packages/lxml/includes/extlibs/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/includes/extlibs/libcharset.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/extlibs/localcharset.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/extlibs/zconf.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/extlibs/zlib.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/htmlparser.pxd create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libexslt/__init__.py create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libexslt/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libexslt/exslt.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libexslt/exsltconfig.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libexslt/exsltexports.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/HTMLparser.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/HTMLtree.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/SAX.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/SAX2.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/__init__.py create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/c14n.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/catalog.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/chvalid.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/debugXML.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/dict.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/encoding.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/entities.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/globals.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/hash.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/list.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/nanoftp.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/nanohttp.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/parser.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/parserInternals.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/relaxng.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/schemasInternals.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/schematron.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/threads.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/tree.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/uri.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/valid.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xinclude.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xlink.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xmlIO.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xmlautomata.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xmlerror.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xmlexports.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xmlmemory.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xmlmodule.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xmlreader.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xmlregexp.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xmlsave.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xmlschemas.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xmlschemastypes.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xmlstring.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xmlunicode.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xmlversion.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xmlwriter.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xpath.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xpathInternals.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxml/xpointer.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/__init__.py create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/attributes.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/documents.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/extensions.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/extra.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/functions.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/imports.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/keys.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/namespaces.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/numbersInternals.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/pattern.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/preproc.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/security.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/templates.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/transform.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/variables.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/xslt.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/xsltInternals.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/xsltconfig.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/xsltexports.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/xsltlocale.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/libxslt/xsltutils.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/lxml-version.h create mode 100644 env/lib/python3.12/site-packages/lxml/includes/relaxng.pxd create mode 100644 env/lib/python3.12/site-packages/lxml/includes/schematron.pxd create mode 100644 env/lib/python3.12/site-packages/lxml/includes/tree.pxd create mode 100644 env/lib/python3.12/site-packages/lxml/includes/uri.pxd create mode 100644 env/lib/python3.12/site-packages/lxml/includes/xinclude.pxd create mode 100644 env/lib/python3.12/site-packages/lxml/includes/xmlerror.pxd create mode 100644 env/lib/python3.12/site-packages/lxml/includes/xmlparser.pxd create mode 100644 env/lib/python3.12/site-packages/lxml/includes/xmlschema.pxd create mode 100644 env/lib/python3.12/site-packages/lxml/includes/xpath.pxd create mode 100644 env/lib/python3.12/site-packages/lxml/includes/xslt.pxd create mode 100644 env/lib/python3.12/site-packages/lxml/isoschematron/__init__.py create mode 100644 env/lib/python3.12/site-packages/lxml/isoschematron/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/lxml/isoschematron/resources/rng/iso-schematron.rng create mode 100644 env/lib/python3.12/site-packages/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl create mode 100644 env/lib/python3.12/site-packages/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl create mode 100644 env/lib/python3.12/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl create mode 100644 env/lib/python3.12/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl create mode 100644 env/lib/python3.12/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl create mode 100644 env/lib/python3.12/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl create mode 100644 env/lib/python3.12/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl create mode 100644 env/lib/python3.12/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt create mode 100644 env/lib/python3.12/site-packages/lxml/iterparse.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/lxml.etree.h create mode 100644 env/lib/python3.12/site-packages/lxml/lxml.etree_api.h create mode 100644 env/lib/python3.12/site-packages/lxml/nsclasses.pxi create mode 100755 env/lib/python3.12/site-packages/lxml/objectify.cpython-312-aarch64-linux-gnu.so create mode 100644 env/lib/python3.12/site-packages/lxml/objectify.pyx create mode 100644 env/lib/python3.12/site-packages/lxml/objectpath.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/parser.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/parsertarget.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/proxy.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/public-api.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/pyclasslookup.py create mode 100644 env/lib/python3.12/site-packages/lxml/readonlytree.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/relaxng.pxi create mode 100755 env/lib/python3.12/site-packages/lxml/sax.cpython-312-aarch64-linux-gnu.so create mode 100644 env/lib/python3.12/site-packages/lxml/sax.py create mode 100644 env/lib/python3.12/site-packages/lxml/saxparser.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/schematron.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/serializer.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/usedoctest.py create mode 100644 env/lib/python3.12/site-packages/lxml/xinclude.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/xmlerror.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/xmlid.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/xmlschema.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/xpath.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/xslt.pxi create mode 100644 env/lib/python3.12/site-packages/lxml/xsltext.pxi create mode 100644 env/lib/python3.12/site-packages/packaging-24.2.dist-info/INSTALLER create mode 100644 env/lib/python3.12/site-packages/packaging-24.2.dist-info/LICENSE create mode 100644 env/lib/python3.12/site-packages/packaging-24.2.dist-info/LICENSE.APACHE create mode 100644 env/lib/python3.12/site-packages/packaging-24.2.dist-info/LICENSE.BSD create mode 100644 env/lib/python3.12/site-packages/packaging-24.2.dist-info/METADATA create mode 100644 env/lib/python3.12/site-packages/packaging-24.2.dist-info/RECORD create mode 100644 env/lib/python3.12/site-packages/packaging-24.2.dist-info/WHEEL create mode 100644 env/lib/python3.12/site-packages/packaging/__init__.py create mode 100644 env/lib/python3.12/site-packages/packaging/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/packaging/__pycache__/_elffile.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/packaging/__pycache__/_manylinux.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/packaging/__pycache__/_musllinux.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/packaging/__pycache__/_parser.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/packaging/__pycache__/_structures.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/packaging/__pycache__/_tokenizer.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/packaging/__pycache__/markers.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/packaging/__pycache__/metadata.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/packaging/__pycache__/requirements.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/packaging/__pycache__/specifiers.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/packaging/__pycache__/tags.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/packaging/__pycache__/utils.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/packaging/__pycache__/version.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/packaging/_elffile.py create mode 100644 env/lib/python3.12/site-packages/packaging/_manylinux.py create mode 100644 env/lib/python3.12/site-packages/packaging/_musllinux.py create mode 100644 env/lib/python3.12/site-packages/packaging/_parser.py create mode 100644 env/lib/python3.12/site-packages/packaging/_structures.py create mode 100644 env/lib/python3.12/site-packages/packaging/_tokenizer.py create mode 100644 env/lib/python3.12/site-packages/packaging/licenses/__init__.py create mode 100644 env/lib/python3.12/site-packages/packaging/licenses/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/packaging/licenses/__pycache__/_spdx.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/packaging/licenses/_spdx.py create mode 100644 env/lib/python3.12/site-packages/packaging/markers.py create mode 100644 env/lib/python3.12/site-packages/packaging/metadata.py create mode 100644 env/lib/python3.12/site-packages/packaging/py.typed create mode 100644 env/lib/python3.12/site-packages/packaging/requirements.py create mode 100644 env/lib/python3.12/site-packages/packaging/specifiers.py create mode 100644 env/lib/python3.12/site-packages/packaging/tags.py create mode 100644 env/lib/python3.12/site-packages/packaging/utils.py create mode 100644 env/lib/python3.12/site-packages/packaging/version.py create mode 100644 env/lib/python3.12/site-packages/prettytable-3.12.0.dist-info/INSTALLER create mode 100644 env/lib/python3.12/site-packages/prettytable-3.12.0.dist-info/METADATA create mode 100644 env/lib/python3.12/site-packages/prettytable-3.12.0.dist-info/RECORD create mode 100644 env/lib/python3.12/site-packages/prettytable-3.12.0.dist-info/REQUESTED create mode 100644 env/lib/python3.12/site-packages/prettytable-3.12.0.dist-info/WHEEL create mode 100644 env/lib/python3.12/site-packages/prettytable-3.12.0.dist-info/licenses/LICENSE create mode 100644 env/lib/python3.12/site-packages/prettytable/__init__.py create mode 100644 env/lib/python3.12/site-packages/prettytable/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/prettytable/__pycache__/_version.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/prettytable/__pycache__/colortable.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/prettytable/__pycache__/prettytable.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/prettytable/_version.py create mode 100644 env/lib/python3.12/site-packages/prettytable/colortable.py create mode 100644 env/lib/python3.12/site-packages/prettytable/prettytable.py create mode 100644 env/lib/python3.12/site-packages/prettytable/py.typed create mode 100644 env/lib/python3.12/site-packages/psutil-6.1.0.dist-info/INSTALLER create mode 100644 env/lib/python3.12/site-packages/psutil-6.1.0.dist-info/LICENSE create mode 100644 env/lib/python3.12/site-packages/psutil-6.1.0.dist-info/METADATA create mode 100644 env/lib/python3.12/site-packages/psutil-6.1.0.dist-info/RECORD create mode 100644 env/lib/python3.12/site-packages/psutil-6.1.0.dist-info/REQUESTED create mode 100644 env/lib/python3.12/site-packages/psutil-6.1.0.dist-info/WHEEL create mode 100644 env/lib/python3.12/site-packages/psutil-6.1.0.dist-info/top_level.txt create mode 100644 env/lib/python3.12/site-packages/psutil/__init__.py create mode 100644 env/lib/python3.12/site-packages/psutil/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/__pycache__/_common.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/__pycache__/_compat.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/__pycache__/_psaix.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/__pycache__/_psbsd.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/__pycache__/_pslinux.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/__pycache__/_psosx.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/__pycache__/_psposix.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/__pycache__/_pssunos.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/__pycache__/_pswindows.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/_common.py create mode 100644 env/lib/python3.12/site-packages/psutil/_compat.py create mode 100644 env/lib/python3.12/site-packages/psutil/_psaix.py create mode 100644 env/lib/python3.12/site-packages/psutil/_psbsd.py create mode 100644 env/lib/python3.12/site-packages/psutil/_pslinux.py create mode 100644 env/lib/python3.12/site-packages/psutil/_psosx.py create mode 100644 env/lib/python3.12/site-packages/psutil/_psposix.py create mode 100644 env/lib/python3.12/site-packages/psutil/_pssunos.py create mode 100755 env/lib/python3.12/site-packages/psutil/_psutil_linux.abi3.so create mode 100755 env/lib/python3.12/site-packages/psutil/_psutil_posix.abi3.so create mode 100644 env/lib/python3.12/site-packages/psutil/_pswindows.py create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__init__.py create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__main__.py create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__pycache__/__main__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__pycache__/test_aix.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__pycache__/test_bsd.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__pycache__/test_connections.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__pycache__/test_contracts.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__pycache__/test_linux.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__pycache__/test_memleaks.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__pycache__/test_misc.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__pycache__/test_osx.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__pycache__/test_posix.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__pycache__/test_process.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__pycache__/test_process_all.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__pycache__/test_sunos.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__pycache__/test_system.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__pycache__/test_testutils.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__pycache__/test_unicode.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/tests/__pycache__/test_windows.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/psutil/tests/test_aix.py create mode 100644 env/lib/python3.12/site-packages/psutil/tests/test_bsd.py create mode 100644 env/lib/python3.12/site-packages/psutil/tests/test_connections.py create mode 100644 env/lib/python3.12/site-packages/psutil/tests/test_contracts.py create mode 100644 env/lib/python3.12/site-packages/psutil/tests/test_linux.py create mode 100644 env/lib/python3.12/site-packages/psutil/tests/test_memleaks.py create mode 100644 env/lib/python3.12/site-packages/psutil/tests/test_misc.py create mode 100644 env/lib/python3.12/site-packages/psutil/tests/test_osx.py create mode 100644 env/lib/python3.12/site-packages/psutil/tests/test_posix.py create mode 100644 env/lib/python3.12/site-packages/psutil/tests/test_process.py create mode 100644 env/lib/python3.12/site-packages/psutil/tests/test_process_all.py create mode 100644 env/lib/python3.12/site-packages/psutil/tests/test_sunos.py create mode 100644 env/lib/python3.12/site-packages/psutil/tests/test_system.py create mode 100644 env/lib/python3.12/site-packages/psutil/tests/test_testutils.py create mode 100644 env/lib/python3.12/site-packages/psutil/tests/test_unicode.py create mode 100644 env/lib/python3.12/site-packages/psutil/tests/test_windows.py create mode 100644 env/lib/python3.12/site-packages/pyshark-0.6.dist-info/INSTALLER create mode 100644 env/lib/python3.12/site-packages/pyshark-0.6.dist-info/METADATA create mode 100644 env/lib/python3.12/site-packages/pyshark-0.6.dist-info/RECORD create mode 100644 env/lib/python3.12/site-packages/pyshark-0.6.dist-info/REQUESTED create mode 100644 env/lib/python3.12/site-packages/pyshark-0.6.dist-info/WHEEL create mode 100644 env/lib/python3.12/site-packages/pyshark-0.6.dist-info/top_level.txt create mode 100644 env/lib/python3.12/site-packages/pyshark/__init__.py create mode 100644 env/lib/python3.12/site-packages/pyshark/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/__pycache__/cache.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/__pycache__/config.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/__pycache__/ek_field_mapping.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/cache.py create mode 100644 env/lib/python3.12/site-packages/pyshark/capture/__init__.py create mode 100644 env/lib/python3.12/site-packages/pyshark/capture/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/capture/__pycache__/capture.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/capture/__pycache__/file_capture.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/capture/__pycache__/inmem_capture.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/capture/__pycache__/live_capture.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/capture/__pycache__/live_ring_capture.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/capture/__pycache__/pipe_capture.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/capture/__pycache__/remote_capture.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/capture/capture.py create mode 100644 env/lib/python3.12/site-packages/pyshark/capture/file_capture.py create mode 100644 env/lib/python3.12/site-packages/pyshark/capture/inmem_capture.py create mode 100644 env/lib/python3.12/site-packages/pyshark/capture/live_capture.py create mode 100644 env/lib/python3.12/site-packages/pyshark/capture/live_ring_capture.py create mode 100644 env/lib/python3.12/site-packages/pyshark/capture/pipe_capture.py create mode 100644 env/lib/python3.12/site-packages/pyshark/capture/remote_capture.py create mode 100644 env/lib/python3.12/site-packages/pyshark/config.ini create mode 100644 env/lib/python3.12/site-packages/pyshark/config.py create mode 100644 env/lib/python3.12/site-packages/pyshark/ek_field_mapping.py create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/__init__.py create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/__pycache__/common.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/__pycache__/consts.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/__pycache__/fields.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/__pycache__/packet.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/__pycache__/packet_summary.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/common.py create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/consts.py create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/fields.py create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/layers/__init__.py create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/layers/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/layers/__pycache__/base.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/layers/__pycache__/ek_layer.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/layers/__pycache__/json_layer.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/layers/__pycache__/xml_layer.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/layers/base.py create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/layers/ek_layer.py create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/layers/json_layer.py create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/layers/xml_layer.py create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/packet.py create mode 100644 env/lib/python3.12/site-packages/pyshark/packet/packet_summary.py create mode 100644 env/lib/python3.12/site-packages/pyshark/tshark/__init__.py create mode 100644 env/lib/python3.12/site-packages/pyshark/tshark/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/tshark/__pycache__/tshark.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/tshark/output_parser/__init__.py create mode 100644 env/lib/python3.12/site-packages/pyshark/tshark/output_parser/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/tshark/output_parser/__pycache__/base_parser.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/tshark/output_parser/__pycache__/tshark_ek.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/tshark/output_parser/__pycache__/tshark_json.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/tshark/output_parser/__pycache__/tshark_xml.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/pyshark/tshark/output_parser/base_parser.py create mode 100644 env/lib/python3.12/site-packages/pyshark/tshark/output_parser/tshark_ek.py create mode 100644 env/lib/python3.12/site-packages/pyshark/tshark/output_parser/tshark_json.py create mode 100644 env/lib/python3.12/site-packages/pyshark/tshark/output_parser/tshark_xml.py create mode 100644 env/lib/python3.12/site-packages/pyshark/tshark/tshark.py create mode 100644 env/lib/python3.12/site-packages/python_gitlab-5.1.0.dist-info/AUTHORS create mode 100644 env/lib/python3.12/site-packages/python_gitlab-5.1.0.dist-info/COPYING create mode 100644 env/lib/python3.12/site-packages/python_gitlab-5.1.0.dist-info/INSTALLER create mode 100644 env/lib/python3.12/site-packages/python_gitlab-5.1.0.dist-info/METADATA create mode 100644 env/lib/python3.12/site-packages/python_gitlab-5.1.0.dist-info/RECORD create mode 100644 env/lib/python3.12/site-packages/python_gitlab-5.1.0.dist-info/REQUESTED create mode 100644 env/lib/python3.12/site-packages/python_gitlab-5.1.0.dist-info/WHEEL create mode 100644 env/lib/python3.12/site-packages/python_gitlab-5.1.0.dist-info/entry_points.txt create mode 100644 env/lib/python3.12/site-packages/python_gitlab-5.1.0.dist-info/top_level.txt create mode 100644 env/lib/python3.12/site-packages/requests-2.32.3.dist-info/INSTALLER create mode 100644 env/lib/python3.12/site-packages/requests-2.32.3.dist-info/LICENSE create mode 100644 env/lib/python3.12/site-packages/requests-2.32.3.dist-info/METADATA create mode 100644 env/lib/python3.12/site-packages/requests-2.32.3.dist-info/RECORD create mode 100644 env/lib/python3.12/site-packages/requests-2.32.3.dist-info/WHEEL create mode 100644 env/lib/python3.12/site-packages/requests-2.32.3.dist-info/top_level.txt create mode 100644 env/lib/python3.12/site-packages/requests/__init__.py create mode 100644 env/lib/python3.12/site-packages/requests/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests/__pycache__/__version__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests/__pycache__/_internal_utils.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests/__pycache__/adapters.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests/__pycache__/api.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests/__pycache__/auth.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests/__pycache__/certs.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests/__pycache__/compat.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests/__pycache__/cookies.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests/__pycache__/exceptions.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests/__pycache__/help.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests/__pycache__/hooks.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests/__pycache__/models.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests/__pycache__/packages.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests/__pycache__/sessions.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests/__pycache__/status_codes.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests/__pycache__/structures.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests/__pycache__/utils.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests/__version__.py create mode 100644 env/lib/python3.12/site-packages/requests/_internal_utils.py create mode 100644 env/lib/python3.12/site-packages/requests/adapters.py create mode 100644 env/lib/python3.12/site-packages/requests/api.py create mode 100644 env/lib/python3.12/site-packages/requests/auth.py create mode 100644 env/lib/python3.12/site-packages/requests/certs.py create mode 100644 env/lib/python3.12/site-packages/requests/compat.py create mode 100644 env/lib/python3.12/site-packages/requests/cookies.py create mode 100644 env/lib/python3.12/site-packages/requests/exceptions.py create mode 100644 env/lib/python3.12/site-packages/requests/help.py create mode 100644 env/lib/python3.12/site-packages/requests/hooks.py create mode 100644 env/lib/python3.12/site-packages/requests/models.py create mode 100644 env/lib/python3.12/site-packages/requests/packages.py create mode 100644 env/lib/python3.12/site-packages/requests/sessions.py create mode 100644 env/lib/python3.12/site-packages/requests/status_codes.py create mode 100644 env/lib/python3.12/site-packages/requests/structures.py create mode 100644 env/lib/python3.12/site-packages/requests/utils.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt-1.0.0.dist-info/AUTHORS.rst create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt-1.0.0.dist-info/INSTALLER create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt-1.0.0.dist-info/LICENSE create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt-1.0.0.dist-info/METADATA create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt-1.0.0.dist-info/RECORD create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt-1.0.0.dist-info/WHEEL create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt-1.0.0.dist-info/top_level.txt create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/__init__.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/__pycache__/_compat.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/__pycache__/exceptions.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/__pycache__/sessions.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/__pycache__/streaming_iterator.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/_compat.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/adapters/__init__.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/adapters/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/adapters/__pycache__/appengine.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/adapters/__pycache__/fingerprint.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/adapters/__pycache__/host_header_ssl.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/adapters/__pycache__/socket_options.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/adapters/__pycache__/source.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/adapters/__pycache__/ssl.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/adapters/__pycache__/x509.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/adapters/appengine.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/adapters/fingerprint.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/adapters/host_header_ssl.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/adapters/socket_options.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/adapters/source.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/adapters/ssl.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/adapters/x509.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/auth/__init__.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/auth/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/auth/__pycache__/_digest_auth_compat.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/auth/__pycache__/guess.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/auth/__pycache__/handler.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/auth/__pycache__/http_proxy_digest.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/auth/_digest_auth_compat.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/auth/guess.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/auth/handler.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/auth/http_proxy_digest.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/cookies/__init__.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/cookies/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/cookies/__pycache__/forgetful.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/cookies/forgetful.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/downloadutils/__init__.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/downloadutils/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/downloadutils/__pycache__/stream.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/downloadutils/__pycache__/tee.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/downloadutils/stream.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/downloadutils/tee.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/exceptions.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/multipart/__init__.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/multipart/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/multipart/__pycache__/decoder.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/multipart/__pycache__/encoder.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/multipart/decoder.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/multipart/encoder.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/sessions.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/streaming_iterator.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/threaded/__init__.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/threaded/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/threaded/__pycache__/pool.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/threaded/__pycache__/thread.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/threaded/pool.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/threaded/thread.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/utils/__init__.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/utils/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/utils/__pycache__/deprecated.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/utils/__pycache__/dump.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/utils/__pycache__/formdata.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/utils/__pycache__/user_agent.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/utils/deprecated.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/utils/dump.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/utils/formdata.py create mode 100644 env/lib/python3.12/site-packages/requests_toolbelt/utils/user_agent.py create mode 100644 env/lib/python3.12/site-packages/termcolor-2.5.0.dist-info/INSTALLER create mode 100644 env/lib/python3.12/site-packages/termcolor-2.5.0.dist-info/METADATA create mode 100644 env/lib/python3.12/site-packages/termcolor-2.5.0.dist-info/RECORD create mode 100644 env/lib/python3.12/site-packages/termcolor-2.5.0.dist-info/REQUESTED create mode 100644 env/lib/python3.12/site-packages/termcolor-2.5.0.dist-info/WHEEL create mode 100644 env/lib/python3.12/site-packages/termcolor-2.5.0.dist-info/licenses/COPYING.txt create mode 100644 env/lib/python3.12/site-packages/termcolor/__init__.py create mode 100644 env/lib/python3.12/site-packages/termcolor/__main__.py create mode 100644 env/lib/python3.12/site-packages/termcolor/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/termcolor/__pycache__/__main__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/termcolor/__pycache__/_types.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/termcolor/__pycache__/termcolor.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/termcolor/_types.py create mode 100644 env/lib/python3.12/site-packages/termcolor/py.typed create mode 100644 env/lib/python3.12/site-packages/termcolor/termcolor.py create mode 100644 env/lib/python3.12/site-packages/urllib3-2.2.3.dist-info/INSTALLER create mode 100644 env/lib/python3.12/site-packages/urllib3-2.2.3.dist-info/METADATA create mode 100644 env/lib/python3.12/site-packages/urllib3-2.2.3.dist-info/RECORD create mode 100644 env/lib/python3.12/site-packages/urllib3-2.2.3.dist-info/WHEEL create mode 100644 env/lib/python3.12/site-packages/urllib3-2.2.3.dist-info/licenses/LICENSE.txt create mode 100644 env/lib/python3.12/site-packages/urllib3/__init__.py create mode 100644 env/lib/python3.12/site-packages/urllib3/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/__pycache__/_base_connection.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/__pycache__/_collections.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/__pycache__/_request_methods.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/__pycache__/_version.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/__pycache__/connection.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/__pycache__/connectionpool.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/__pycache__/exceptions.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/__pycache__/fields.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/__pycache__/filepost.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/__pycache__/poolmanager.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/__pycache__/response.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/_base_connection.py create mode 100644 env/lib/python3.12/site-packages/urllib3/_collections.py create mode 100644 env/lib/python3.12/site-packages/urllib3/_request_methods.py create mode 100644 env/lib/python3.12/site-packages/urllib3/_version.py create mode 100644 env/lib/python3.12/site-packages/urllib3/connection.py create mode 100644 env/lib/python3.12/site-packages/urllib3/connectionpool.py create mode 100644 env/lib/python3.12/site-packages/urllib3/contrib/__init__.py create mode 100644 env/lib/python3.12/site-packages/urllib3/contrib/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/contrib/__pycache__/socks.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/contrib/emscripten/__init__.py create mode 100644 env/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/connection.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/fetch.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/request.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/response.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/contrib/emscripten/connection.py create mode 100644 env/lib/python3.12/site-packages/urllib3/contrib/emscripten/emscripten_fetch_worker.js create mode 100644 env/lib/python3.12/site-packages/urllib3/contrib/emscripten/fetch.py create mode 100644 env/lib/python3.12/site-packages/urllib3/contrib/emscripten/request.py create mode 100644 env/lib/python3.12/site-packages/urllib3/contrib/emscripten/response.py create mode 100644 env/lib/python3.12/site-packages/urllib3/contrib/pyopenssl.py create mode 100644 env/lib/python3.12/site-packages/urllib3/contrib/socks.py create mode 100644 env/lib/python3.12/site-packages/urllib3/exceptions.py create mode 100644 env/lib/python3.12/site-packages/urllib3/fields.py create mode 100644 env/lib/python3.12/site-packages/urllib3/filepost.py create mode 100644 env/lib/python3.12/site-packages/urllib3/http2/__init__.py create mode 100644 env/lib/python3.12/site-packages/urllib3/http2/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/http2/__pycache__/connection.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/http2/__pycache__/probe.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/http2/connection.py create mode 100644 env/lib/python3.12/site-packages/urllib3/http2/probe.py create mode 100644 env/lib/python3.12/site-packages/urllib3/poolmanager.py create mode 100644 env/lib/python3.12/site-packages/urllib3/py.typed create mode 100644 env/lib/python3.12/site-packages/urllib3/response.py create mode 100644 env/lib/python3.12/site-packages/urllib3/util/__init__.py create mode 100644 env/lib/python3.12/site-packages/urllib3/util/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/util/__pycache__/connection.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/util/__pycache__/proxy.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/util/__pycache__/request.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/util/__pycache__/response.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/util/__pycache__/retry.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/util/__pycache__/ssltransport.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/util/__pycache__/timeout.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/util/__pycache__/url.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/util/__pycache__/util.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/util/__pycache__/wait.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/urllib3/util/connection.py create mode 100644 env/lib/python3.12/site-packages/urllib3/util/proxy.py create mode 100644 env/lib/python3.12/site-packages/urllib3/util/request.py create mode 100644 env/lib/python3.12/site-packages/urllib3/util/response.py create mode 100644 env/lib/python3.12/site-packages/urllib3/util/retry.py create mode 100644 env/lib/python3.12/site-packages/urllib3/util/ssl_.py create mode 100644 env/lib/python3.12/site-packages/urllib3/util/ssl_match_hostname.py create mode 100644 env/lib/python3.12/site-packages/urllib3/util/ssltransport.py create mode 100644 env/lib/python3.12/site-packages/urllib3/util/timeout.py create mode 100644 env/lib/python3.12/site-packages/urllib3/util/url.py create mode 100644 env/lib/python3.12/site-packages/urllib3/util/util.py create mode 100644 env/lib/python3.12/site-packages/urllib3/util/wait.py create mode 100644 env/lib/python3.12/site-packages/wcwidth-0.2.13.dist-info/INSTALLER create mode 100644 env/lib/python3.12/site-packages/wcwidth-0.2.13.dist-info/LICENSE create mode 100644 env/lib/python3.12/site-packages/wcwidth-0.2.13.dist-info/METADATA create mode 100644 env/lib/python3.12/site-packages/wcwidth-0.2.13.dist-info/RECORD create mode 100644 env/lib/python3.12/site-packages/wcwidth-0.2.13.dist-info/WHEEL create mode 100644 env/lib/python3.12/site-packages/wcwidth-0.2.13.dist-info/top_level.txt create mode 100644 env/lib/python3.12/site-packages/wcwidth-0.2.13.dist-info/zip-safe create mode 100644 env/lib/python3.12/site-packages/wcwidth/__init__.py create mode 100644 env/lib/python3.12/site-packages/wcwidth/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/wcwidth/__pycache__/table_vs16.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/wcwidth/__pycache__/table_wide.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/wcwidth/__pycache__/table_zero.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/wcwidth/__pycache__/unicode_versions.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/wcwidth/__pycache__/wcwidth.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/wcwidth/table_vs16.py create mode 100644 env/lib/python3.12/site-packages/wcwidth/table_wide.py create mode 100644 env/lib/python3.12/site-packages/wcwidth/table_zero.py create mode 100644 env/lib/python3.12/site-packages/wcwidth/unicode_versions.py create mode 100644 env/lib/python3.12/site-packages/wcwidth/wcwidth.py create mode 100644 env/lib/python3.12/site-packages/yaml/__init__.py create mode 100644 env/lib/python3.12/site-packages/yaml/__pycache__/__init__.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/yaml/__pycache__/composer.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/yaml/__pycache__/constructor.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/yaml/__pycache__/cyaml.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/yaml/__pycache__/dumper.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/yaml/__pycache__/emitter.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/yaml/__pycache__/error.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/yaml/__pycache__/events.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/yaml/__pycache__/loader.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/yaml/__pycache__/nodes.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/yaml/__pycache__/parser.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/yaml/__pycache__/reader.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/yaml/__pycache__/representer.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/yaml/__pycache__/resolver.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/yaml/__pycache__/scanner.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/yaml/__pycache__/serializer.cpython-312.pyc create mode 100644 env/lib/python3.12/site-packages/yaml/__pycache__/tokens.cpython-312.pyc create mode 100755 env/lib/python3.12/site-packages/yaml/_yaml.cpython-312-aarch64-linux-gnu.so create mode 100644 env/lib/python3.12/site-packages/yaml/composer.py create mode 100644 env/lib/python3.12/site-packages/yaml/constructor.py create mode 100644 env/lib/python3.12/site-packages/yaml/cyaml.py create mode 100644 env/lib/python3.12/site-packages/yaml/dumper.py create mode 100644 env/lib/python3.12/site-packages/yaml/emitter.py create mode 100644 env/lib/python3.12/site-packages/yaml/error.py create mode 100644 env/lib/python3.12/site-packages/yaml/events.py create mode 100644 env/lib/python3.12/site-packages/yaml/loader.py create mode 100644 env/lib/python3.12/site-packages/yaml/nodes.py create mode 100644 env/lib/python3.12/site-packages/yaml/parser.py create mode 100644 env/lib/python3.12/site-packages/yaml/reader.py create mode 100644 env/lib/python3.12/site-packages/yaml/representer.py create mode 100644 env/lib/python3.12/site-packages/yaml/resolver.py create mode 100644 env/lib/python3.12/site-packages/yaml/scanner.py create mode 100644 env/lib/python3.12/site-packages/yaml/serializer.py create mode 100644 env/lib/python3.12/site-packages/yaml/tokens.py create mode 100644 week05/hard/__pycache__/pwn_utils.cpython-312.pyc create mode 100644 week05/hard/bruteforec.py create mode 100644 week05/hard/pwn_utils.py create mode 100644 week05/hard/test.py create mode 100644 week06/easy/client.py create mode 100644 week06/easy/description/description.pdf create mode 100644 week06/easy/server.py create mode 100644 week06/hard/alice.py create mode 100644 week06/hard/bob.py create mode 100644 week06/hard/client.py create mode 100644 week06/hard/description/description.pdf create mode 100644 week06/hard/generate_sig_keys.py create mode 100644 week06/hard/insecurelib.py diff --git a/env/bin/gitlab b/env/bin/gitlab new file mode 100755 index 0000000..3055cdf --- /dev/null +++ b/env/bin/gitlab @@ -0,0 +1,8 @@ +#!/home/dongho/netsec/env/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from gitlab.cli import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/env/bin/normalizer b/env/bin/normalizer new file mode 100755 index 0000000..1937546 --- /dev/null +++ b/env/bin/normalizer @@ -0,0 +1,8 @@ +#!/home/dongho/netsec/env/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from charset_normalizer.cli import cli_detect +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(cli_detect()) diff --git a/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/INSTALLER b/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/LICENSE b/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/LICENSE new file mode 100644 index 0000000..2f1b8e1 --- /dev/null +++ b/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2017-2021 Ingy döt Net +Copyright (c) 2006-2016 Kirill Simonov + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/METADATA b/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/METADATA new file mode 100644 index 0000000..db029b7 --- /dev/null +++ b/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/METADATA @@ -0,0 +1,46 @@ +Metadata-Version: 2.1 +Name: PyYAML +Version: 6.0.2 +Summary: YAML parser and emitter for Python +Home-page: https://pyyaml.org/ +Download-URL: https://pypi.org/project/PyYAML/ +Author: Kirill Simonov +Author-email: xi@resolvent.net +License: MIT +Project-URL: Bug Tracker, https://github.com/yaml/pyyaml/issues +Project-URL: CI, https://github.com/yaml/pyyaml/actions +Project-URL: Documentation, https://pyyaml.org/wiki/PyYAMLDocumentation +Project-URL: Mailing lists, http://lists.sourceforge.net/lists/listinfo/yaml-core +Project-URL: Source Code, https://github.com/yaml/pyyaml +Platform: Any +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Cython +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Text Processing :: Markup +Requires-Python: >=3.8 +License-File: LICENSE + +YAML is a data serialization format designed for human readability +and interaction with scripting languages. PyYAML is a YAML parser +and emitter for Python. + +PyYAML features a complete YAML 1.1 parser, Unicode support, pickle +support, capable extension API, and sensible error messages. PyYAML +supports standard YAML tags and provides Python-specific tags that +allow to represent an arbitrary Python object. + +PyYAML is applicable for a broad range of tasks from complex +configuration files to object serialization and persistence. diff --git a/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/RECORD b/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/RECORD new file mode 100644 index 0000000..164e459 --- /dev/null +++ b/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/RECORD @@ -0,0 +1,44 @@ +PyYAML-6.0.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +PyYAML-6.0.2.dist-info/LICENSE,sha256=jTko-dxEkP1jVwfLiOsmvXZBAqcoKVQwfT5RZ6V36KQ,1101 +PyYAML-6.0.2.dist-info/METADATA,sha256=9-odFB5seu4pGPcEv7E8iyxNF51_uKnaNGjLAhz2lto,2060 +PyYAML-6.0.2.dist-info/RECORD,, +PyYAML-6.0.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +PyYAML-6.0.2.dist-info/WHEEL,sha256=YM7r_UgTB_CA6ZLGHfbOA_dd7lb6fUn0DsfI9DvIHHE,154 +PyYAML-6.0.2.dist-info/top_level.txt,sha256=rpj0IVMTisAjh_1vG3Ccf9v5jpCQwAz6cD1IVU5ZdhQ,11 +_yaml/__init__.py,sha256=04Ae_5osxahpJHa3XBZUAf4wi6XX32gR8D6X6p64GEA,1402 +_yaml/__pycache__/__init__.cpython-312.pyc,, +yaml/__init__.py,sha256=N35S01HMesFTe0aRRMWkPj0Pa8IEbHpE9FK7cr5Bdtw,12311 +yaml/__pycache__/__init__.cpython-312.pyc,, +yaml/__pycache__/composer.cpython-312.pyc,, +yaml/__pycache__/constructor.cpython-312.pyc,, +yaml/__pycache__/cyaml.cpython-312.pyc,, +yaml/__pycache__/dumper.cpython-312.pyc,, +yaml/__pycache__/emitter.cpython-312.pyc,, +yaml/__pycache__/error.cpython-312.pyc,, +yaml/__pycache__/events.cpython-312.pyc,, +yaml/__pycache__/loader.cpython-312.pyc,, +yaml/__pycache__/nodes.cpython-312.pyc,, +yaml/__pycache__/parser.cpython-312.pyc,, +yaml/__pycache__/reader.cpython-312.pyc,, +yaml/__pycache__/representer.cpython-312.pyc,, +yaml/__pycache__/resolver.cpython-312.pyc,, +yaml/__pycache__/scanner.cpython-312.pyc,, +yaml/__pycache__/serializer.cpython-312.pyc,, +yaml/__pycache__/tokens.cpython-312.pyc,, +yaml/_yaml.cpython-312-aarch64-linux-gnu.so,sha256=kYQNF-yCT1TQJkdO87ihsv1jctF0lAaJ2wYRWZXqWRI,2456968 +yaml/composer.py,sha256=_Ko30Wr6eDWUeUpauUGT3Lcg9QPBnOPVlTnIMRGJ9FM,4883 +yaml/constructor.py,sha256=kNgkfaeLUkwQYY_Q6Ff1Tz2XVw_pG1xVE9Ak7z-viLA,28639 +yaml/cyaml.py,sha256=6ZrAG9fAYvdVe2FK_w0hmXoG7ZYsoYUwapG8CiC72H0,3851 +yaml/dumper.py,sha256=PLctZlYwZLp7XmeUdwRuv4nYOZ2UBnDIUy8-lKfLF-o,2837 +yaml/emitter.py,sha256=jghtaU7eFwg31bG0B7RZea_29Adi9CKmXq_QjgQpCkQ,43006 +yaml/error.py,sha256=Ah9z-toHJUbE9j-M8YpxgSRM5CgLCcwVzJgLLRF2Fxo,2533 +yaml/events.py,sha256=50_TksgQiE4up-lKo_V-nBy-tAIxkIPQxY5qDhKCeHw,2445 +yaml/loader.py,sha256=UVa-zIqmkFSCIYq_PgSGm4NSJttHY2Rf_zQ4_b1fHN0,2061 +yaml/nodes.py,sha256=gPKNj8pKCdh2d4gr3gIYINnPOaOxGhJAUiYhGRnPE84,1440 +yaml/parser.py,sha256=ilWp5vvgoHFGzvOZDItFoGjD6D42nhlZrZyjAwa0oJo,25495 +yaml/reader.py,sha256=0dmzirOiDG4Xo41RnuQS7K9rkY3xjHiVasfDMNTqCNw,6794 +yaml/representer.py,sha256=IuWP-cAW9sHKEnS0gCqSa894k1Bg4cgTxaDwIcbRQ-Y,14190 +yaml/resolver.py,sha256=9L-VYfm4mWHxUD1Vg4X7rjDRK_7VZd6b92wzq7Y2IKY,9004 +yaml/scanner.py,sha256=YEM3iLZSaQwXcQRg2l2R4MdT0zGP2F9eHkKGKnHyWQY,51279 +yaml/serializer.py,sha256=ChuFgmhU01hj4xgI8GaKv6vfM2Bujwa9i7d2FAHj7cA,4165 +yaml/tokens.py,sha256=lTQIzSVw8Mg9wv459-TjiOQe6wVziqaRlqX2_89rp54,2573 diff --git a/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/REQUESTED b/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/WHEEL b/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/WHEEL new file mode 100644 index 0000000..aef658b --- /dev/null +++ b/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.44.0) +Root-Is-Purelib: false +Tag: cp312-cp312-manylinux_2_17_aarch64 +Tag: cp312-cp312-manylinux2014_aarch64 + diff --git a/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/top_level.txt b/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/top_level.txt new file mode 100644 index 0000000..e6475e9 --- /dev/null +++ b/env/lib/python3.12/site-packages/PyYAML-6.0.2.dist-info/top_level.txt @@ -0,0 +1,2 @@ +_yaml +yaml diff --git a/env/lib/python3.12/site-packages/__pycache__/appdirs.cpython-312.pyc b/env/lib/python3.12/site-packages/__pycache__/appdirs.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bbc6a196f88a5207f5eecf45e364f7d18d069060 GIT binary patch literal 27976 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/_yaml/__init__.py b/env/lib/python3.12/site-packages/_yaml/__init__.py new file mode 100644 index 0000000..7baa8c4 --- /dev/null +++ b/env/lib/python3.12/site-packages/_yaml/__init__.py @@ -0,0 +1,33 @@ +# This is a stub package designed to roughly emulate the _yaml +# extension module, which previously existed as a standalone module +# and has been moved into the `yaml` package namespace. +# It does not perfectly mimic its old counterpart, but should get +# close enough for anyone who's relying on it even when they shouldn't. +import yaml + +# in some circumstances, the yaml module we imoprted may be from a different version, so we need +# to tread carefully when poking at it here (it may not have the attributes we expect) +if not getattr(yaml, '__with_libyaml__', False): + from sys import version_info + + exc = ModuleNotFoundError if version_info >= (3, 6) else ImportError + raise exc("No module named '_yaml'") +else: + from yaml._yaml import * + import warnings + warnings.warn( + 'The _yaml extension module is now located at yaml._yaml' + ' and its location is subject to change. To use the' + ' LibYAML-based parser and emitter, import from `yaml`:' + ' `from yaml import CLoader as Loader, CDumper as Dumper`.', + DeprecationWarning + ) + del warnings + # Don't `del yaml` here because yaml is actually an existing + # namespace member of _yaml. + +__name__ = '_yaml' +# If the module is top-level (i.e. not a part of any specific package) +# then the attribute should be set to ''. +# https://docs.python.org/3.8/library/types.html +__package__ = '' diff --git a/env/lib/python3.12/site-packages/_yaml/__pycache__/__init__.cpython-312.pyc b/env/lib/python3.12/site-packages/_yaml/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7f8e86cf833f321f83172940e655de3eabd8cf24 GIT binary patch literal 849 zcmYjP&ubGw6rS1LB%5EYZK*|6n4Z!|lSMrUB7(FQg{G&1mOL=g1STcn-4p;n zEI2cRM|SeeY%c%-1a?6kIDkS5h(p{1HzCLw6Z5)G?ABcfs7q3tj{p!3^%$h7dfF(` zBz*uA_G4(+nQrE_1CyM7-8T$>V={^VzY?G34xGdT!J1F9^*qVd3j#~`dx}x7*m2u*vd*q1h4EK zt#&9HIS}1Zl-V3-^hhGcw^5h3LS=NJLRMH!*dZe*QZk8JkzvbzbAz@NQXI89A#2kr zLaQA0B}K}VS&o_y@6?tn%}|*TC>OP79j!>eXw3j1;Z>Rm)&>n*f^! zjugh#-r&@~mAvb1alxdupG`()8M+X{lLCN+Uq0~1pQ^*@(#z@3nc$m;zRyB53(13=hLb5a13N8 S3@l9T`DPoR*w2d@Q|%9yIRJ + +If on Windows (at least English Win XP) that should be:: + + C:\Documents and Settings\\Application Data\Local Settings\\ + +or possibly:: + + C:\Documents and Settings\\Application Data\\ + +for `roaming profiles `_ but that is another story. + +On Linux (and other Unices) the dir, according to the `XDG +spec `_, is:: + + ~/.local/share/ + + +``appdirs`` to the rescue +========================= + +This kind of thing is what the ``appdirs`` module is for. ``appdirs`` will +help you choose an appropriate: + +- user data dir (``user_data_dir``) +- user config dir (``user_config_dir``) +- user cache dir (``user_cache_dir``) +- site data dir (``site_data_dir``) +- site config dir (``site_config_dir``) +- user log dir (``user_log_dir``) + +and also: + +- is a single module so other Python packages can include their own private copy +- is slightly opinionated on the directory names used. Look for "OPINION" in + documentation and code for when an opinion is being applied. + + +some example output +=================== + +On Mac OS X:: + + >>> from appdirs import * + >>> appname = "SuperApp" + >>> appauthor = "Acme" + >>> user_data_dir(appname, appauthor) + '/Users/trentm/Library/Application Support/SuperApp' + >>> site_data_dir(appname, appauthor) + '/Library/Application Support/SuperApp' + >>> user_cache_dir(appname, appauthor) + '/Users/trentm/Library/Caches/SuperApp' + >>> user_log_dir(appname, appauthor) + '/Users/trentm/Library/Logs/SuperApp' + +On Windows 7:: + + >>> from appdirs import * + >>> appname = "SuperApp" + >>> appauthor = "Acme" + >>> user_data_dir(appname, appauthor) + 'C:\\Users\\trentm\\AppData\\Local\\Acme\\SuperApp' + >>> user_data_dir(appname, appauthor, roaming=True) + 'C:\\Users\\trentm\\AppData\\Roaming\\Acme\\SuperApp' + >>> user_cache_dir(appname, appauthor) + 'C:\\Users\\trentm\\AppData\\Local\\Acme\\SuperApp\\Cache' + >>> user_log_dir(appname, appauthor) + 'C:\\Users\\trentm\\AppData\\Local\\Acme\\SuperApp\\Logs' + +On Linux:: + + >>> from appdirs import * + >>> appname = "SuperApp" + >>> appauthor = "Acme" + >>> user_data_dir(appname, appauthor) + '/home/trentm/.local/share/SuperApp + >>> site_data_dir(appname, appauthor) + '/usr/local/share/SuperApp' + >>> site_data_dir(appname, appauthor, multipath=True) + '/usr/local/share/SuperApp:/usr/share/SuperApp' + >>> user_cache_dir(appname, appauthor) + '/home/trentm/.cache/SuperApp' + >>> user_log_dir(appname, appauthor) + '/home/trentm/.cache/SuperApp/log' + >>> user_config_dir(appname) + '/home/trentm/.config/SuperApp' + >>> site_config_dir(appname) + '/etc/xdg/SuperApp' + >>> os.environ['XDG_CONFIG_DIRS'] = '/etc:/usr/local/etc' + >>> site_config_dir(appname, multipath=True) + '/etc/SuperApp:/usr/local/etc/SuperApp' + + +``AppDirs`` for convenience +=========================== + +:: + + >>> from appdirs import AppDirs + >>> dirs = AppDirs("SuperApp", "Acme") + >>> dirs.user_data_dir + '/Users/trentm/Library/Application Support/SuperApp' + >>> dirs.site_data_dir + '/Library/Application Support/SuperApp' + >>> dirs.user_cache_dir + '/Users/trentm/Library/Caches/SuperApp' + >>> dirs.user_log_dir + '/Users/trentm/Library/Logs/SuperApp' + + + +Per-version isolation +===================== + +If you have multiple versions of your app in use that you want to be +able to run side-by-side, then you may want version-isolation for these +dirs:: + + >>> from appdirs import AppDirs + >>> dirs = AppDirs("SuperApp", "Acme", version="1.0") + >>> dirs.user_data_dir + '/Users/trentm/Library/Application Support/SuperApp/1.0' + >>> dirs.site_data_dir + '/Library/Application Support/SuperApp/1.0' + >>> dirs.user_cache_dir + '/Users/trentm/Library/Caches/SuperApp/1.0' + >>> dirs.user_log_dir + '/Users/trentm/Library/Logs/SuperApp/1.0' + + + +appdirs Changelog +================= + +appdirs 1.4.4 +------------- +- [PR #92] Don't import appdirs from setup.py + +Project officially classified as Stable which is important +for inclusion in other distros such as ActivePython. + +First of several incremental releases to catch up on maintenance. + +appdirs 1.4.3 +------------- +- [PR #76] Python 3.6 invalid escape sequence deprecation fixes +- Fix for Python 3.6 support + +appdirs 1.4.2 +------------- +- [PR #84] Allow installing without setuptools +- [PR #86] Fix string delimiters in setup.py description +- Add Python 3.6 support + +appdirs 1.4.1 +------------- +- [issue #38] Fix _winreg import on Windows Py3 +- [issue #55] Make appname optional + +appdirs 1.4.0 +------------- +- [PR #42] AppAuthor is now optional on Windows +- [issue 41] Support Jython on Windows, Mac, and Unix-like platforms. Windows + support requires `JNA `_. +- [PR #44] Fix incorrect behaviour of the site_config_dir method + +appdirs 1.3.0 +------------- +- [Unix, issue 16] Conform to XDG standard, instead of breaking it for + everybody +- [Unix] Removes gratuitous case mangling of the case, since \*nix-es are + usually case sensitive, so mangling is not wise +- [Unix] Fixes the utterly wrong behaviour in ``site_data_dir``, return result + based on XDG_DATA_DIRS and make room for respecting the standard which + specifies XDG_DATA_DIRS is a multiple-value variable +- [Issue 6] Add ``*_config_dir`` which are distinct on nix-es, according to + XDG specs; on Windows and Mac return the corresponding ``*_data_dir`` + +appdirs 1.2.0 +------------- + +- [Unix] Put ``user_log_dir`` under the *cache* dir on Unix. Seems to be more + typical. +- [issue 9] Make ``unicode`` work on py3k. + +appdirs 1.1.0 +------------- + +- [issue 4] Add ``AppDirs.user_log_dir``. +- [Unix, issue 2, issue 7] appdirs now conforms to `XDG base directory spec + `_. +- [Mac, issue 5] Fix ``site_data_dir()`` on Mac. +- [Mac] Drop use of 'Carbon' module in favour of hardcoded paths; supports + Python3 now. +- [Windows] Append "Cache" to ``user_cache_dir`` on Windows by default. Use + ``opinion=False`` option to disable this. +- Add ``appdirs.AppDirs`` convenience class. Usage: + + >>> dirs = AppDirs("SuperApp", "Acme", version="1.0") + >>> dirs.user_data_dir + '/Users/trentm/Library/Application Support/SuperApp/1.0' + +- [Windows] Cherry-pick Komodo's change to downgrade paths to the Windows short + paths if there are high bit chars. +- [Linux] Change default ``user_cache_dir()`` on Linux to be singular, e.g. + "~/.superapp/cache". +- [Windows] Add ``roaming`` option to ``user_data_dir()`` (for use on Windows only) + and change the default ``user_data_dir`` behaviour to use a *non*-roaming + profile dir (``CSIDL_LOCAL_APPDATA`` instead of ``CSIDL_APPDATA``). Why? Because + a large roaming profile can cause login speed issues. The "only syncs on + logout" behaviour can cause surprises in appdata info. + + +appdirs 1.0.1 (never released) +------------------------------ + +Started this changelog 27 July 2010. Before that this module originated in the +`Komodo `_ product as ``applib.py`` and then +as `applib/location.py +`_ (used by +`PyPM `_ in `ActivePython +`_). This is basically a fork of +applib.py 1.0.1 and applib/location.py 1.0.1. + + + diff --git a/env/lib/python3.12/site-packages/appdirs-1.4.4.dist-info/RECORD b/env/lib/python3.12/site-packages/appdirs-1.4.4.dist-info/RECORD new file mode 100644 index 0000000..cf88b57 --- /dev/null +++ b/env/lib/python3.12/site-packages/appdirs-1.4.4.dist-info/RECORD @@ -0,0 +1,8 @@ +__pycache__/appdirs.cpython-312.pyc,, +appdirs-1.4.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +appdirs-1.4.4.dist-info/LICENSE.txt,sha256=Nt200KdFqTqyAyA9cZCBSxuJcn0lTK_0jHp6-71HAAs,1097 +appdirs-1.4.4.dist-info/METADATA,sha256=k5TVfXMNKGHTfp2wm6EJKTuGwGNuoQR5TqQgH8iwG8M,8981 +appdirs-1.4.4.dist-info/RECORD,, +appdirs-1.4.4.dist-info/WHEEL,sha256=kGT74LWyRUZrL4VgLh6_g12IeVl_9u9ZVhadrgXZUEY,110 +appdirs-1.4.4.dist-info/top_level.txt,sha256=nKncE8CUqZERJ6VuQWL4_bkunSPDNfn7KZqb4Tr5YEM,8 +appdirs.py,sha256=g99s2sXhnvTEm79oj4bWI0Toapc-_SmKKNXvOXHkVic,24720 diff --git a/env/lib/python3.12/site-packages/appdirs-1.4.4.dist-info/WHEEL b/env/lib/python3.12/site-packages/appdirs-1.4.4.dist-info/WHEEL new file mode 100644 index 0000000..ef99c6c --- /dev/null +++ b/env/lib/python3.12/site-packages/appdirs-1.4.4.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.34.2) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/env/lib/python3.12/site-packages/appdirs-1.4.4.dist-info/top_level.txt b/env/lib/python3.12/site-packages/appdirs-1.4.4.dist-info/top_level.txt new file mode 100644 index 0000000..d64bc32 --- /dev/null +++ b/env/lib/python3.12/site-packages/appdirs-1.4.4.dist-info/top_level.txt @@ -0,0 +1 @@ +appdirs diff --git a/env/lib/python3.12/site-packages/appdirs.py b/env/lib/python3.12/site-packages/appdirs.py new file mode 100644 index 0000000..2acd1de --- /dev/null +++ b/env/lib/python3.12/site-packages/appdirs.py @@ -0,0 +1,608 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright (c) 2005-2010 ActiveState Software Inc. +# Copyright (c) 2013 Eddy Petrișor + +"""Utilities for determining application-specific dirs. + +See for details and usage. +""" +# Dev Notes: +# - MSDN on where to store app data files: +# http://support.microsoft.com/default.aspx?scid=kb;en-us;310294#XSLTH3194121123120121120120 +# - Mac OS X: http://developer.apple.com/documentation/MacOSX/Conceptual/BPFileSystem/index.html +# - XDG spec for Un*x: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html + +__version__ = "1.4.4" +__version_info__ = tuple(int(segment) for segment in __version__.split(".")) + + +import sys +import os + +PY3 = sys.version_info[0] == 3 + +if PY3: + unicode = str + +if sys.platform.startswith('java'): + import platform + os_name = platform.java_ver()[3][0] + if os_name.startswith('Windows'): # "Windows XP", "Windows 7", etc. + system = 'win32' + elif os_name.startswith('Mac'): # "Mac OS X", etc. + system = 'darwin' + else: # "Linux", "SunOS", "FreeBSD", etc. + # Setting this to "linux2" is not ideal, but only Windows or Mac + # are actually checked for and the rest of the module expects + # *sys.platform* style strings. + system = 'linux2' +else: + system = sys.platform + + + +def user_data_dir(appname=None, appauthor=None, version=None, roaming=False): + r"""Return full path to the user-specific data dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "roaming" (boolean, default False) can be set True to use the Windows + roaming appdata directory. That means that for users on a Windows + network setup for roaming profiles, this user data will be + sync'd on login. See + + for a discussion of issues. + + Typical user data directories are: + Mac OS X: ~/Library/Application Support/ + Unix: ~/.local/share/ # or in $XDG_DATA_HOME, if defined + Win XP (not roaming): C:\Documents and Settings\\Application Data\\ + Win XP (roaming): C:\Documents and Settings\\Local Settings\Application Data\\ + Win 7 (not roaming): C:\Users\\AppData\Local\\ + Win 7 (roaming): C:\Users\\AppData\Roaming\\ + + For Unix, we follow the XDG spec and support $XDG_DATA_HOME. + That means, by default "~/.local/share/". + """ + if system == "win32": + if appauthor is None: + appauthor = appname + const = roaming and "CSIDL_APPDATA" or "CSIDL_LOCAL_APPDATA" + path = os.path.normpath(_get_win_folder(const)) + if appname: + if appauthor is not False: + path = os.path.join(path, appauthor, appname) + else: + path = os.path.join(path, appname) + elif system == 'darwin': + path = os.path.expanduser('~/Library/Application Support/') + if appname: + path = os.path.join(path, appname) + else: + path = os.getenv('XDG_DATA_HOME', os.path.expanduser("~/.local/share")) + if appname: + path = os.path.join(path, appname) + if appname and version: + path = os.path.join(path, version) + return path + + +def site_data_dir(appname=None, appauthor=None, version=None, multipath=False): + r"""Return full path to the user-shared data dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "multipath" is an optional parameter only applicable to *nix + which indicates that the entire list of data dirs should be + returned. By default, the first item from XDG_DATA_DIRS is + returned, or '/usr/local/share/', + if XDG_DATA_DIRS is not set + + Typical site data directories are: + Mac OS X: /Library/Application Support/ + Unix: /usr/local/share/ or /usr/share/ + Win XP: C:\Documents and Settings\All Users\Application Data\\ + Vista: (Fail! "C:\ProgramData" is a hidden *system* directory on Vista.) + Win 7: C:\ProgramData\\ # Hidden, but writeable on Win 7. + + For Unix, this is using the $XDG_DATA_DIRS[0] default. + + WARNING: Do not use this on Windows. See the Vista-Fail note above for why. + """ + if system == "win32": + if appauthor is None: + appauthor = appname + path = os.path.normpath(_get_win_folder("CSIDL_COMMON_APPDATA")) + if appname: + if appauthor is not False: + path = os.path.join(path, appauthor, appname) + else: + path = os.path.join(path, appname) + elif system == 'darwin': + path = os.path.expanduser('/Library/Application Support') + if appname: + path = os.path.join(path, appname) + else: + # XDG default for $XDG_DATA_DIRS + # only first, if multipath is False + path = os.getenv('XDG_DATA_DIRS', + os.pathsep.join(['/usr/local/share', '/usr/share'])) + pathlist = [os.path.expanduser(x.rstrip(os.sep)) for x in path.split(os.pathsep)] + if appname: + if version: + appname = os.path.join(appname, version) + pathlist = [os.sep.join([x, appname]) for x in pathlist] + + if multipath: + path = os.pathsep.join(pathlist) + else: + path = pathlist[0] + return path + + if appname and version: + path = os.path.join(path, version) + return path + + +def user_config_dir(appname=None, appauthor=None, version=None, roaming=False): + r"""Return full path to the user-specific config dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "roaming" (boolean, default False) can be set True to use the Windows + roaming appdata directory. That means that for users on a Windows + network setup for roaming profiles, this user data will be + sync'd on login. See + + for a discussion of issues. + + Typical user config directories are: + Mac OS X: same as user_data_dir + Unix: ~/.config/ # or in $XDG_CONFIG_HOME, if defined + Win *: same as user_data_dir + + For Unix, we follow the XDG spec and support $XDG_CONFIG_HOME. + That means, by default "~/.config/". + """ + if system in ["win32", "darwin"]: + path = user_data_dir(appname, appauthor, None, roaming) + else: + path = os.getenv('XDG_CONFIG_HOME', os.path.expanduser("~/.config")) + if appname: + path = os.path.join(path, appname) + if appname and version: + path = os.path.join(path, version) + return path + + +def site_config_dir(appname=None, appauthor=None, version=None, multipath=False): + r"""Return full path to the user-shared data dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "multipath" is an optional parameter only applicable to *nix + which indicates that the entire list of config dirs should be + returned. By default, the first item from XDG_CONFIG_DIRS is + returned, or '/etc/xdg/', if XDG_CONFIG_DIRS is not set + + Typical site config directories are: + Mac OS X: same as site_data_dir + Unix: /etc/xdg/ or $XDG_CONFIG_DIRS[i]/ for each value in + $XDG_CONFIG_DIRS + Win *: same as site_data_dir + Vista: (Fail! "C:\ProgramData" is a hidden *system* directory on Vista.) + + For Unix, this is using the $XDG_CONFIG_DIRS[0] default, if multipath=False + + WARNING: Do not use this on Windows. See the Vista-Fail note above for why. + """ + if system in ["win32", "darwin"]: + path = site_data_dir(appname, appauthor) + if appname and version: + path = os.path.join(path, version) + else: + # XDG default for $XDG_CONFIG_DIRS + # only first, if multipath is False + path = os.getenv('XDG_CONFIG_DIRS', '/etc/xdg') + pathlist = [os.path.expanduser(x.rstrip(os.sep)) for x in path.split(os.pathsep)] + if appname: + if version: + appname = os.path.join(appname, version) + pathlist = [os.sep.join([x, appname]) for x in pathlist] + + if multipath: + path = os.pathsep.join(pathlist) + else: + path = pathlist[0] + return path + + +def user_cache_dir(appname=None, appauthor=None, version=None, opinion=True): + r"""Return full path to the user-specific cache dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "opinion" (boolean) can be False to disable the appending of + "Cache" to the base app data dir for Windows. See + discussion below. + + Typical user cache directories are: + Mac OS X: ~/Library/Caches/ + Unix: ~/.cache/ (XDG default) + Win XP: C:\Documents and Settings\\Local Settings\Application Data\\\Cache + Vista: C:\Users\\AppData\Local\\\Cache + + On Windows the only suggestion in the MSDN docs is that local settings go in + the `CSIDL_LOCAL_APPDATA` directory. This is identical to the non-roaming + app data dir (the default returned by `user_data_dir` above). Apps typically + put cache data somewhere *under* the given dir here. Some examples: + ...\Mozilla\Firefox\Profiles\\Cache + ...\Acme\SuperApp\Cache\1.0 + OPINION: This function appends "Cache" to the `CSIDL_LOCAL_APPDATA` value. + This can be disabled with the `opinion=False` option. + """ + if system == "win32": + if appauthor is None: + appauthor = appname + path = os.path.normpath(_get_win_folder("CSIDL_LOCAL_APPDATA")) + if appname: + if appauthor is not False: + path = os.path.join(path, appauthor, appname) + else: + path = os.path.join(path, appname) + if opinion: + path = os.path.join(path, "Cache") + elif system == 'darwin': + path = os.path.expanduser('~/Library/Caches') + if appname: + path = os.path.join(path, appname) + else: + path = os.getenv('XDG_CACHE_HOME', os.path.expanduser('~/.cache')) + if appname: + path = os.path.join(path, appname) + if appname and version: + path = os.path.join(path, version) + return path + + +def user_state_dir(appname=None, appauthor=None, version=None, roaming=False): + r"""Return full path to the user-specific state dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "roaming" (boolean, default False) can be set True to use the Windows + roaming appdata directory. That means that for users on a Windows + network setup for roaming profiles, this user data will be + sync'd on login. See + + for a discussion of issues. + + Typical user state directories are: + Mac OS X: same as user_data_dir + Unix: ~/.local/state/ # or in $XDG_STATE_HOME, if defined + Win *: same as user_data_dir + + For Unix, we follow this Debian proposal + to extend the XDG spec and support $XDG_STATE_HOME. + + That means, by default "~/.local/state/". + """ + if system in ["win32", "darwin"]: + path = user_data_dir(appname, appauthor, None, roaming) + else: + path = os.getenv('XDG_STATE_HOME', os.path.expanduser("~/.local/state")) + if appname: + path = os.path.join(path, appname) + if appname and version: + path = os.path.join(path, version) + return path + + +def user_log_dir(appname=None, appauthor=None, version=None, opinion=True): + r"""Return full path to the user-specific log dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "opinion" (boolean) can be False to disable the appending of + "Logs" to the base app data dir for Windows, and "log" to the + base cache dir for Unix. See discussion below. + + Typical user log directories are: + Mac OS X: ~/Library/Logs/ + Unix: ~/.cache//log # or under $XDG_CACHE_HOME if defined + Win XP: C:\Documents and Settings\\Local Settings\Application Data\\\Logs + Vista: C:\Users\\AppData\Local\\\Logs + + On Windows the only suggestion in the MSDN docs is that local settings + go in the `CSIDL_LOCAL_APPDATA` directory. (Note: I'm interested in + examples of what some windows apps use for a logs dir.) + + OPINION: This function appends "Logs" to the `CSIDL_LOCAL_APPDATA` + value for Windows and appends "log" to the user cache dir for Unix. + This can be disabled with the `opinion=False` option. + """ + if system == "darwin": + path = os.path.join( + os.path.expanduser('~/Library/Logs'), + appname) + elif system == "win32": + path = user_data_dir(appname, appauthor, version) + version = False + if opinion: + path = os.path.join(path, "Logs") + else: + path = user_cache_dir(appname, appauthor, version) + version = False + if opinion: + path = os.path.join(path, "log") + if appname and version: + path = os.path.join(path, version) + return path + + +class AppDirs(object): + """Convenience wrapper for getting application dirs.""" + def __init__(self, appname=None, appauthor=None, version=None, + roaming=False, multipath=False): + self.appname = appname + self.appauthor = appauthor + self.version = version + self.roaming = roaming + self.multipath = multipath + + @property + def user_data_dir(self): + return user_data_dir(self.appname, self.appauthor, + version=self.version, roaming=self.roaming) + + @property + def site_data_dir(self): + return site_data_dir(self.appname, self.appauthor, + version=self.version, multipath=self.multipath) + + @property + def user_config_dir(self): + return user_config_dir(self.appname, self.appauthor, + version=self.version, roaming=self.roaming) + + @property + def site_config_dir(self): + return site_config_dir(self.appname, self.appauthor, + version=self.version, multipath=self.multipath) + + @property + def user_cache_dir(self): + return user_cache_dir(self.appname, self.appauthor, + version=self.version) + + @property + def user_state_dir(self): + return user_state_dir(self.appname, self.appauthor, + version=self.version) + + @property + def user_log_dir(self): + return user_log_dir(self.appname, self.appauthor, + version=self.version) + + +#---- internal support stuff + +def _get_win_folder_from_registry(csidl_name): + """This is a fallback technique at best. I'm not sure if using the + registry for this guarantees us the correct answer for all CSIDL_* + names. + """ + if PY3: + import winreg as _winreg + else: + import _winreg + + shell_folder_name = { + "CSIDL_APPDATA": "AppData", + "CSIDL_COMMON_APPDATA": "Common AppData", + "CSIDL_LOCAL_APPDATA": "Local AppData", + }[csidl_name] + + key = _winreg.OpenKey( + _winreg.HKEY_CURRENT_USER, + r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" + ) + dir, type = _winreg.QueryValueEx(key, shell_folder_name) + return dir + + +def _get_win_folder_with_pywin32(csidl_name): + from win32com.shell import shellcon, shell + dir = shell.SHGetFolderPath(0, getattr(shellcon, csidl_name), 0, 0) + # Try to make this a unicode path because SHGetFolderPath does + # not return unicode strings when there is unicode data in the + # path. + try: + dir = unicode(dir) + + # Downgrade to short path name if have highbit chars. See + # . + has_high_char = False + for c in dir: + if ord(c) > 255: + has_high_char = True + break + if has_high_char: + try: + import win32api + dir = win32api.GetShortPathName(dir) + except ImportError: + pass + except UnicodeError: + pass + return dir + + +def _get_win_folder_with_ctypes(csidl_name): + import ctypes + + csidl_const = { + "CSIDL_APPDATA": 26, + "CSIDL_COMMON_APPDATA": 35, + "CSIDL_LOCAL_APPDATA": 28, + }[csidl_name] + + buf = ctypes.create_unicode_buffer(1024) + ctypes.windll.shell32.SHGetFolderPathW(None, csidl_const, None, 0, buf) + + # Downgrade to short path name if have highbit chars. See + # . + has_high_char = False + for c in buf: + if ord(c) > 255: + has_high_char = True + break + if has_high_char: + buf2 = ctypes.create_unicode_buffer(1024) + if ctypes.windll.kernel32.GetShortPathNameW(buf.value, buf2, 1024): + buf = buf2 + + return buf.value + +def _get_win_folder_with_jna(csidl_name): + import array + from com.sun import jna + from com.sun.jna.platform import win32 + + buf_size = win32.WinDef.MAX_PATH * 2 + buf = array.zeros('c', buf_size) + shell = win32.Shell32.INSTANCE + shell.SHGetFolderPath(None, getattr(win32.ShlObj, csidl_name), None, win32.ShlObj.SHGFP_TYPE_CURRENT, buf) + dir = jna.Native.toString(buf.tostring()).rstrip("\0") + + # Downgrade to short path name if have highbit chars. See + # . + has_high_char = False + for c in dir: + if ord(c) > 255: + has_high_char = True + break + if has_high_char: + buf = array.zeros('c', buf_size) + kernel = win32.Kernel32.INSTANCE + if kernel.GetShortPathName(dir, buf, buf_size): + dir = jna.Native.toString(buf.tostring()).rstrip("\0") + + return dir + +if system == "win32": + try: + import win32com.shell + _get_win_folder = _get_win_folder_with_pywin32 + except ImportError: + try: + from ctypes import windll + _get_win_folder = _get_win_folder_with_ctypes + except ImportError: + try: + import com.sun.jna + _get_win_folder = _get_win_folder_with_jna + except ImportError: + _get_win_folder = _get_win_folder_from_registry + + +#---- self test code + +if __name__ == "__main__": + appname = "MyApp" + appauthor = "MyCompany" + + props = ("user_data_dir", + "user_config_dir", + "user_cache_dir", + "user_state_dir", + "user_log_dir", + "site_data_dir", + "site_config_dir") + + print("-- app dirs %s --" % __version__) + + print("-- app dirs (with optional 'version')") + dirs = AppDirs(appname, appauthor, version="1.0") + for prop in props: + print("%s: %s" % (prop, getattr(dirs, prop))) + + print("\n-- app dirs (without optional 'version')") + dirs = AppDirs(appname, appauthor) + for prop in props: + print("%s: %s" % (prop, getattr(dirs, prop))) + + print("\n-- app dirs (without optional 'appauthor')") + dirs = AppDirs(appname) + for prop in props: + print("%s: %s" % (prop, getattr(dirs, prop))) + + print("\n-- app dirs (with disabled 'appauthor')") + dirs = AppDirs(appname, appauthor=False) + for prop in props: + print("%s: %s" % (prop, getattr(dirs, prop))) diff --git a/env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/INSTALLER b/env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/LICENSE b/env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/LICENSE new file mode 100644 index 0000000..62b076c --- /dev/null +++ b/env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/LICENSE @@ -0,0 +1,20 @@ +This package contains a modified version of ca-bundle.crt: + +ca-bundle.crt -- Bundle of CA Root Certificates + +This is a bundle of X.509 certificates of public Certificate Authorities +(CA). These were automatically extracted from Mozilla's root certificates +file (certdata.txt). This file can be found in the mozilla source tree: +https://hg.mozilla.org/mozilla-central/file/tip/security/nss/lib/ckfw/builtins/certdata.txt +It contains the certificates in PEM format and therefore +can be directly used with curl / libcurl / php_curl, or with +an Apache+mod_ssl webserver for SSL client authentication. +Just configure this file as the SSLCACertificateFile.# + +***** BEGIN LICENSE BLOCK ***** +This Source Code Form is subject to the terms of the Mozilla Public License, +v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain +one at http://mozilla.org/MPL/2.0/. + +***** END LICENSE BLOCK ***** +@(#) $RCSfile: certdata.txt,v $ $Revision: 1.80 $ $Date: 2011/11/03 15:11:58 $ diff --git a/env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/METADATA b/env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/METADATA new file mode 100644 index 0000000..0a3a772 --- /dev/null +++ b/env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/METADATA @@ -0,0 +1,67 @@ +Metadata-Version: 2.1 +Name: certifi +Version: 2024.8.30 +Summary: Python package for providing Mozilla's CA Bundle. +Home-page: https://github.com/certifi/python-certifi +Author: Kenneth Reitz +Author-email: me@kennethreitz.com +License: MPL-2.0 +Project-URL: Source, https://github.com/certifi/python-certifi +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0) +Classifier: Natural Language :: English +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Requires-Python: >=3.6 +License-File: LICENSE + +Certifi: Python SSL Certificates +================================ + +Certifi provides Mozilla's carefully curated collection of Root Certificates for +validating the trustworthiness of SSL certificates while verifying the identity +of TLS hosts. It has been extracted from the `Requests`_ project. + +Installation +------------ + +``certifi`` is available on PyPI. Simply install it with ``pip``:: + + $ pip install certifi + +Usage +----- + +To reference the installed certificate authority (CA) bundle, you can use the +built-in function:: + + >>> import certifi + + >>> certifi.where() + '/usr/local/lib/python3.7/site-packages/certifi/cacert.pem' + +Or from the command line:: + + $ python -m certifi + /usr/local/lib/python3.7/site-packages/certifi/cacert.pem + +Enjoy! + +.. _`Requests`: https://requests.readthedocs.io/en/master/ + +Addition/Removal of Certificates +-------------------------------- + +Certifi does not support any addition/removal or other modification of the +CA trust store content. This project is intended to provide a reliable and +highly portable root of trust to python deployments. Look to upstream projects +for methods to use alternate trust. diff --git a/env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/RECORD b/env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/RECORD new file mode 100644 index 0000000..12374b0 --- /dev/null +++ b/env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/RECORD @@ -0,0 +1,14 @@ +certifi-2024.8.30.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +certifi-2024.8.30.dist-info/LICENSE,sha256=6TcW2mucDVpKHfYP5pWzcPBpVgPSH2-D8FPkLPwQyvc,989 +certifi-2024.8.30.dist-info/METADATA,sha256=GhBHRVUN6a4ZdUgE_N5wmukJfyuoE-QyIl8Y3ifNQBM,2222 +certifi-2024.8.30.dist-info/RECORD,, +certifi-2024.8.30.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91 +certifi-2024.8.30.dist-info/top_level.txt,sha256=KMu4vUCfsjLrkPbSNdgdekS-pVJzBAJFO__nI8NF6-U,8 +certifi/__init__.py,sha256=p_GYZrjUwPBUhpLlCZoGb0miKBKSqDAyZC5DvIuqbHQ,94 +certifi/__main__.py,sha256=xBBoj905TUWBLRGANOcf7oi6e-3dMP4cEoG9OyMs11g,243 +certifi/__pycache__/__init__.cpython-312.pyc,, +certifi/__pycache__/__main__.cpython-312.pyc,, +certifi/__pycache__/core.cpython-312.pyc,, +certifi/cacert.pem,sha256=lO3rZukXdPyuk6BWUJFOKQliWaXH6HGh9l1GGrUgG0c,299427 +certifi/core.py,sha256=qRDDFyXVJwTB_EmoGppaXU_R9qCZvhl-EzxPMuV3nTA,4426 +certifi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/WHEEL b/env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/WHEEL new file mode 100644 index 0000000..57e56b7 --- /dev/null +++ b/env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (74.0.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/top_level.txt b/env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/top_level.txt new file mode 100644 index 0000000..963eac5 --- /dev/null +++ b/env/lib/python3.12/site-packages/certifi-2024.8.30.dist-info/top_level.txt @@ -0,0 +1 @@ +certifi diff --git a/env/lib/python3.12/site-packages/certifi/__init__.py b/env/lib/python3.12/site-packages/certifi/__init__.py new file mode 100644 index 0000000..f61d77f --- /dev/null +++ b/env/lib/python3.12/site-packages/certifi/__init__.py @@ -0,0 +1,4 @@ +from .core import contents, where + +__all__ = ["contents", "where"] +__version__ = "2024.08.30" diff --git a/env/lib/python3.12/site-packages/certifi/__main__.py b/env/lib/python3.12/site-packages/certifi/__main__.py new file mode 100644 index 0000000..8945b5d --- /dev/null +++ b/env/lib/python3.12/site-packages/certifi/__main__.py @@ -0,0 +1,12 @@ +import argparse + +from certifi import contents, where + +parser = argparse.ArgumentParser() +parser.add_argument("-c", "--contents", action="store_true") +args = parser.parse_args() + +if args.contents: + print(contents()) +else: + print(where()) diff --git a/env/lib/python3.12/site-packages/certifi/__pycache__/__init__.cpython-312.pyc b/env/lib/python3.12/site-packages/certifi/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7f44a5a455676c537870ece3193535ce63b61913 GIT binary patch literal 296 zcmX@j%ge<81iPmArpE#4#~=<2FhLog6@ZNC3@HpLj5!Rsj8TlaOi@gX3@J=0%;`)~ z%qc8UES0R9Y%dvs$~2j7aU|#Gm89mC6yIVk&qyswEn)_W7qI||DlQ`fBNIIX3q4~4 zKTXzKEXn!E(zn>-;}dgo;^S{|$H$kY78Pga=f%gbWcUo!%J9oWKO;XkRX-&^FFhk) zKQFbUI5k;6HLpxRCo@UEpt2+*KhIdt&`7^Hvm{lwATc>RF+H_dKRLCiBr`2jKR!M) zFS8^*Uaz3?7l%!5eoARhs$CH`&|r|Oi^YM&2WCb_#`_G454c4qlwaVIZ(zT{C)LPZ I#0iuG0GY{7NB{r; literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/certifi/__pycache__/__main__.cpython-312.pyc b/env/lib/python3.12/site-packages/certifi/__pycache__/__main__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..86d94e0565e7c9c00a64249f16a9e6703c0ce797 GIT binary patch literal 611 zcmZuu&ubGw6n?Y6cQI{g5Q3+mh(=5Y_1X%82QMuiC6{I088;iVv&-y6N$H^oVoNU` z1pN~%@h|AV(2Jp!)bUdBAl`)DdU7VsHWvqG-uJ%mdyh9WhqYP&Y8`x7PtH{QrITve zGjMjSz(*iJP#-!v8hw-*9V0V4CISN}^t`HQ9!E3Sv8mmw&G`xulUT(5;*87-27&S| zR_Z)n_VK9Kv*vt-_=1|iSKFwZBXpr57^0bG{!eSUf3$IMMD1I3ww8XP%a2RG$%EEA^7@m8pSxyFh`j9WH#`=}YXX^NCB7}ax z;%~Td>Nj^96Tdn3n@9fjZRZ4>3Dn0>fB*Q?-OpQJp?(ajCvI)xHpXt_$i230oto~u dwKr?uEr0j+-kopO)t?I8+`IL5gD;aOHqn) zXdf}}y`7yI&ivl*z1e^D_QnawKR$eC;q3uJzQTu4dIG2QYf8vHVv!=Ts3lcsk@{9D zN>;y4Fjy*Yo$=U+nkoKyd(UZ)LEWEG8+jllDOQ_|C3F z5BGKe9*RRSB5w5sPw5zm5o_4e?IEk*PFn-;ZV(!tC2l3(SBrXZmQ>e1hT8kcXKvYX z(`Le%cgB}i;(zH#JU+MR@LbikZdB|Xv&9Wo<2kWt=bRcBMx|m1$F1cmuGx0n`J8Fs zO5;m*HRrONBY4hqYr?JxJ|2IDro3-0m}^FYGjG@Y1|fu{{+vH=(y99Vq?{UENTu zT@xKJ1dj5>q7NYxP|DG^?benQz74IRh%kqU=;TMaw|iFGe;9OiW)h)?qsslEw`0X% z=!Y|CS0HD}19{qu26(=R?+_&)_Yz^`uAZN}#BeXH50s~sU8lBWh((6y^<*xX7lXh8 zqgbirMGS%A@HA#GI2`)?XfVXVN1erRmb$!XGn--B3_;_UL9LPJ{Unju>d8J&labNC zAH5%Ij81Hio~@6b{cNf+`kThVw{Ks5GIIFiKW}GG*R!V^+1DE*Z`_`Gk{G;u<<6Cl zuRKbe{8}H`(nkD$+7&^J61LXwKtTk9_z=||NT+9rIS^a%gO!DcU5F^q;Un@l zaCUL}S38`>I`~k60U(AXI&2m=+m|xNbC2x9QrwU)slz{p^kHdK!>BT-F!%Ss>Ql{EZ^BFdb5LD;%aD;D0G12pB zw|ZPYeiia@%DHZP(V$9V{&DvPgWSgbco9fMmvOTbH|UH&^BHgxobDa(#6OJWs`LpB zdGJ&6p0cX!mk;4+QwpwwfH@S-{1Q1uI9-+~xkf1bR>)2H8d;`!X`1~6{y#5!io0aj z{1|x(rbk|7d3eK4pu$tIS3r4+We9^K+&L7#ptPYxJPm04RZtM#1nC?6@aPA}HZMKu z9cvOA%YK@AoE*M)=C5ZyIQzW}&);L`cc@-)EW97}zbb#Ko{8?CDYs!ncczqs^Fen< z_QORW(!PZJey^(v@4L!AS+$C_D)`4)NbG69(BxH5ayc7?<-Mrou$ob|@uI~`49c;B z)jCf-I?u7>1!!U2^?|N{!x3a4S)%Xm#XA@MN_wf0IC`6YtqvyTTd uO&RRd!Glc|ENmf}Zbs45$Uv%zW14Xi?``# None: + _CACERT_CTX.__exit__(None, None, None) # type: ignore[union-attr] + + +if sys.version_info >= (3, 11): + + from importlib.resources import as_file, files + + _CACERT_CTX = None + _CACERT_PATH = None + + def where() -> str: + # This is slightly terrible, but we want to delay extracting the file + # in cases where we're inside of a zipimport situation until someone + # actually calls where(), but we don't want to re-extract the file + # on every call of where(), so we'll do it once then store it in a + # global variable. + global _CACERT_CTX + global _CACERT_PATH + if _CACERT_PATH is None: + # This is slightly janky, the importlib.resources API wants you to + # manage the cleanup of this file, so it doesn't actually return a + # path, it returns a context manager that will give you the path + # when you enter it and will do any cleanup when you leave it. In + # the common case of not needing a temporary file, it will just + # return the file system location and the __exit__() is a no-op. + # + # We also have to hold onto the actual context manager, because + # it will do the cleanup whenever it gets garbage collected, so + # we will also store that at the global level as well. + _CACERT_CTX = as_file(files("certifi").joinpath("cacert.pem")) + _CACERT_PATH = str(_CACERT_CTX.__enter__()) + atexit.register(exit_cacert_ctx) + + return _CACERT_PATH + + def contents() -> str: + return files("certifi").joinpath("cacert.pem").read_text(encoding="ascii") + +elif sys.version_info >= (3, 7): + + from importlib.resources import path as get_path, read_text + + _CACERT_CTX = None + _CACERT_PATH = None + + def where() -> str: + # This is slightly terrible, but we want to delay extracting the + # file in cases where we're inside of a zipimport situation until + # someone actually calls where(), but we don't want to re-extract + # the file on every call of where(), so we'll do it once then store + # it in a global variable. + global _CACERT_CTX + global _CACERT_PATH + if _CACERT_PATH is None: + # This is slightly janky, the importlib.resources API wants you + # to manage the cleanup of this file, so it doesn't actually + # return a path, it returns a context manager that will give + # you the path when you enter it and will do any cleanup when + # you leave it. In the common case of not needing a temporary + # file, it will just return the file system location and the + # __exit__() is a no-op. + # + # We also have to hold onto the actual context manager, because + # it will do the cleanup whenever it gets garbage collected, so + # we will also store that at the global level as well. + _CACERT_CTX = get_path("certifi", "cacert.pem") + _CACERT_PATH = str(_CACERT_CTX.__enter__()) + atexit.register(exit_cacert_ctx) + + return _CACERT_PATH + + def contents() -> str: + return read_text("certifi", "cacert.pem", encoding="ascii") + +else: + import os + import types + from typing import Union + + Package = Union[types.ModuleType, str] + Resource = Union[str, "os.PathLike"] + + # This fallback will work for Python versions prior to 3.7 that lack the + # importlib.resources module but relies on the existing `where` function + # so won't address issues with environments like PyOxidizer that don't set + # __file__ on modules. + def read_text( + package: Package, + resource: Resource, + encoding: str = 'utf-8', + errors: str = 'strict' + ) -> str: + with open(where(), encoding=encoding) as data: + return data.read() + + # If we don't have importlib.resources, then we will just do the old logic + # of assuming we're on the filesystem and munge the path directly. + def where() -> str: + f = os.path.dirname(__file__) + + return os.path.join(f, "cacert.pem") + + def contents() -> str: + return read_text("certifi", "cacert.pem", encoding="ascii") diff --git a/env/lib/python3.12/site-packages/certifi/py.typed b/env/lib/python3.12/site-packages/certifi/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/INSTALLER b/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/LICENSE b/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/LICENSE new file mode 100644 index 0000000..ad82355 --- /dev/null +++ b/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 TAHRI Ahmed R. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/METADATA b/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/METADATA new file mode 100644 index 0000000..b19096b --- /dev/null +++ b/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/METADATA @@ -0,0 +1,695 @@ +Metadata-Version: 2.1 +Name: charset-normalizer +Version: 3.4.0 +Summary: The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet. +Home-page: https://github.com/Ousret/charset_normalizer +Author: Ahmed TAHRI +Author-email: tahri.ahmed@proton.me +License: MIT +Project-URL: Bug Reports, https://github.com/Ousret/charset_normalizer/issues +Project-URL: Documentation, https://charset-normalizer.readthedocs.io/en/latest +Keywords: encoding,charset,charset-detector,detector,normalization,unicode,chardet,detect +Classifier: Development Status :: 5 - Production/Stable +Classifier: License :: OSI Approved :: MIT License +Classifier: Intended Audience :: Developers +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Text Processing :: Linguistic +Classifier: Topic :: Utilities +Classifier: Typing :: Typed +Requires-Python: >=3.7.0 +Description-Content-Type: text/markdown +License-File: LICENSE +Provides-Extra: unicode_backport + +

Charset Detection, for Everyone 👋

+ +

+ The Real First Universal Charset Detector
+ + + + + Download Count Total + + + + +

+

+ Featured Packages
+ + Static Badge + + + Static Badge + +

+

+ In other language (unofficial port - by the community)
+ + Static Badge + +

+ +> A library that helps you read text from an unknown charset encoding.
Motivated by `chardet`, +> I'm trying to resolve the issue by taking a new approach. +> All IANA character set names for which the Python core library provides codecs are supported. + +

+ >>>>> 👉 Try Me Online Now, Then Adopt Me 👈 <<<<< +

+ +This project offers you an alternative to **Universal Charset Encoding Detector**, also known as **Chardet**. + +| Feature | [Chardet](https://github.com/chardet/chardet) | Charset Normalizer | [cChardet](https://github.com/PyYoshi/cChardet) | +|--------------------------------------------------|:---------------------------------------------:|:--------------------------------------------------------------------------------------------------:|:-----------------------------------------------:| +| `Fast` | ❌ | ✅ | ✅ | +| `Universal**` | ❌ | ✅ | ❌ | +| `Reliable` **without** distinguishable standards | ❌ | ✅ | ✅ | +| `Reliable` **with** distinguishable standards | ✅ | ✅ | ✅ | +| `License` | LGPL-2.1
_restrictive_ | MIT | MPL-1.1
_restrictive_ | +| `Native Python` | ✅ | ✅ | ❌ | +| `Detect spoken language` | ❌ | ✅ | N/A | +| `UnicodeDecodeError Safety` | ❌ | ✅ | ❌ | +| `Whl Size (min)` | 193.6 kB | 42 kB | ~200 kB | +| `Supported Encoding` | 33 | 🎉 [99](https://charset-normalizer.readthedocs.io/en/latest/user/support.html#supported-encodings) | 40 | + +

+Reading Normalized TextCat Reading Text +

+ +*\*\* : They are clearly using specific code for a specific encoding even if covering most of used one*
+Did you got there because of the logs? See [https://charset-normalizer.readthedocs.io/en/latest/user/miscellaneous.html](https://charset-normalizer.readthedocs.io/en/latest/user/miscellaneous.html) + +## ⚡ Performance + +This package offer better performance than its counterpart Chardet. Here are some numbers. + +| Package | Accuracy | Mean per file (ms) | File per sec (est) | +|-----------------------------------------------|:--------:|:------------------:|:------------------:| +| [chardet](https://github.com/chardet/chardet) | 86 % | 200 ms | 5 file/sec | +| charset-normalizer | **98 %** | **10 ms** | 100 file/sec | + +| Package | 99th percentile | 95th percentile | 50th percentile | +|-----------------------------------------------|:---------------:|:---------------:|:---------------:| +| [chardet](https://github.com/chardet/chardet) | 1200 ms | 287 ms | 23 ms | +| charset-normalizer | 100 ms | 50 ms | 5 ms | + +Chardet's performance on larger file (1MB+) are very poor. Expect huge difference on large payload. + +> Stats are generated using 400+ files using default parameters. More details on used files, see GHA workflows. +> And yes, these results might change at any time. The dataset can be updated to include more files. +> The actual delays heavily depends on your CPU capabilities. The factors should remain the same. +> Keep in mind that the stats are generous and that Chardet accuracy vs our is measured using Chardet initial capability +> (eg. Supported Encoding) Challenge-them if you want. + +## ✨ Installation + +Using pip: + +```sh +pip install charset-normalizer -U +``` + +## 🚀 Basic Usage + +### CLI +This package comes with a CLI. + +``` +usage: normalizer [-h] [-v] [-a] [-n] [-m] [-r] [-f] [-t THRESHOLD] + file [file ...] + +The Real First Universal Charset Detector. Discover originating encoding used +on text file. Normalize text to unicode. + +positional arguments: + files File(s) to be analysed + +optional arguments: + -h, --help show this help message and exit + -v, --verbose Display complementary information about file if any. + Stdout will contain logs about the detection process. + -a, --with-alternative + Output complementary possibilities if any. Top-level + JSON WILL be a list. + -n, --normalize Permit to normalize input file. If not set, program + does not write anything. + -m, --minimal Only output the charset detected to STDOUT. Disabling + JSON output. + -r, --replace Replace file when trying to normalize it instead of + creating a new one. + -f, --force Replace file without asking if you are sure, use this + flag with caution. + -t THRESHOLD, --threshold THRESHOLD + Define a custom maximum amount of chaos allowed in + decoded content. 0. <= chaos <= 1. + --version Show version information and exit. +``` + +```bash +normalizer ./data/sample.1.fr.srt +``` + +or + +```bash +python -m charset_normalizer ./data/sample.1.fr.srt +``` + +🎉 Since version 1.4.0 the CLI produce easily usable stdout result in JSON format. + +```json +{ + "path": "/home/default/projects/charset_normalizer/data/sample.1.fr.srt", + "encoding": "cp1252", + "encoding_aliases": [ + "1252", + "windows_1252" + ], + "alternative_encodings": [ + "cp1254", + "cp1256", + "cp1258", + "iso8859_14", + "iso8859_15", + "iso8859_16", + "iso8859_3", + "iso8859_9", + "latin_1", + "mbcs" + ], + "language": "French", + "alphabets": [ + "Basic Latin", + "Latin-1 Supplement" + ], + "has_sig_or_bom": false, + "chaos": 0.149, + "coherence": 97.152, + "unicode_path": null, + "is_preferred": true +} +``` + +### Python +*Just print out normalized text* +```python +from charset_normalizer import from_path + +results = from_path('./my_subtitle.srt') + +print(str(results.best())) +``` + +*Upgrade your code without effort* +```python +from charset_normalizer import detect +``` + +The above code will behave the same as **chardet**. We ensure that we offer the best (reasonable) BC result possible. + +See the docs for advanced usage : [readthedocs.io](https://charset-normalizer.readthedocs.io/en/latest/) + +## 😇 Why + +When I started using Chardet, I noticed that it was not suited to my expectations, and I wanted to propose a +reliable alternative using a completely different method. Also! I never back down on a good challenge! + +I **don't care** about the **originating charset** encoding, because **two different tables** can +produce **two identical rendered string.** +What I want is to get readable text, the best I can. + +In a way, **I'm brute forcing text decoding.** How cool is that ? 😎 + +Don't confuse package **ftfy** with charset-normalizer or chardet. ftfy goal is to repair unicode string whereas charset-normalizer to convert raw file in unknown encoding to unicode. + +## 🍰 How + + - Discard all charset encoding table that could not fit the binary content. + - Measure noise, or the mess once opened (by chunks) with a corresponding charset encoding. + - Extract matches with the lowest mess detected. + - Additionally, we measure coherence / probe for a language. + +**Wait a minute**, what is noise/mess and coherence according to **YOU ?** + +*Noise :* I opened hundred of text files, **written by humans**, with the wrong encoding table. **I observed**, then +**I established** some ground rules about **what is obvious** when **it seems like** a mess. + I know that my interpretation of what is noise is probably incomplete, feel free to contribute in order to + improve or rewrite it. + +*Coherence :* For each language there is on earth, we have computed ranked letter appearance occurrences (the best we can). So I thought +that intel is worth something here. So I use those records against decoded text to check if I can detect intelligent design. + +## ⚡ Known limitations + + - Language detection is unreliable when text contains two or more languages sharing identical letters. (eg. HTML (english tags) + Turkish content (Sharing Latin characters)) + - Every charset detector heavily depends on sufficient content. In common cases, do not bother run detection on very tiny content. + +## ⚠️ About Python EOLs + +**If you are running:** + +- Python >=2.7,<3.5: Unsupported +- Python 3.5: charset-normalizer < 2.1 +- Python 3.6: charset-normalizer < 3.1 +- Python 3.7: charset-normalizer < 4.0 + +Upgrade your Python interpreter as soon as possible. + +## 👤 Contributing + +Contributions, issues and feature requests are very much welcome.
+Feel free to check [issues page](https://github.com/ousret/charset_normalizer/issues) if you want to contribute. + +## 📝 License + +Copyright © [Ahmed TAHRI @Ousret](https://github.com/Ousret).
+This project is [MIT](https://github.com/Ousret/charset_normalizer/blob/master/LICENSE) licensed. + +Characters frequencies used in this project © 2012 [Denny Vrandečić](http://simia.net/letters/) + +## 💼 For Enterprise + +Professional support for charset-normalizer is available as part of the [Tidelift +Subscription][1]. Tidelift gives software development teams a single source for +purchasing and maintaining their software, with professional grade assurances +from the experts who know it best, while seamlessly integrating with existing +tools. + +[1]: https://tidelift.com/subscription/pkg/pypi-charset-normalizer?utm_source=pypi-charset-normalizer&utm_medium=readme + +# Changelog +All notable changes to charset-normalizer will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). + +## [3.4.0](https://github.com/Ousret/charset_normalizer/compare/3.3.2...3.4.0) (2024-10-08) + +### Added +- Argument `--no-preemptive` in the CLI to prevent the detector to search for hints. +- Support for Python 3.13 (#512) + +### Fixed +- Relax the TypeError exception thrown when trying to compare a CharsetMatch with anything else than a CharsetMatch. +- Improved the general reliability of the detector based on user feedbacks. (#520) (#509) (#498) (#407) (#537) +- Declared charset in content (preemptive detection) not changed when converting to utf-8 bytes. (#381) + +## [3.3.2](https://github.com/Ousret/charset_normalizer/compare/3.3.1...3.3.2) (2023-10-31) + +### Fixed +- Unintentional memory usage regression when using large payload that match several encoding (#376) +- Regression on some detection case showcased in the documentation (#371) + +### Added +- Noise (md) probe that identify malformed arabic representation due to the presence of letters in isolated form (credit to my wife) + +## [3.3.1](https://github.com/Ousret/charset_normalizer/compare/3.3.0...3.3.1) (2023-10-22) + +### Changed +- Optional mypyc compilation upgraded to version 1.6.1 for Python >= 3.8 +- Improved the general detection reliability based on reports from the community + +## [3.3.0](https://github.com/Ousret/charset_normalizer/compare/3.2.0...3.3.0) (2023-09-30) + +### Added +- Allow to execute the CLI (e.g. normalizer) through `python -m charset_normalizer.cli` or `python -m charset_normalizer` +- Support for 9 forgotten encoding that are supported by Python but unlisted in `encoding.aliases` as they have no alias (#323) + +### Removed +- (internal) Redundant utils.is_ascii function and unused function is_private_use_only +- (internal) charset_normalizer.assets is moved inside charset_normalizer.constant + +### Changed +- (internal) Unicode code blocks in constants are updated using the latest v15.0.0 definition to improve detection +- Optional mypyc compilation upgraded to version 1.5.1 for Python >= 3.8 + +### Fixed +- Unable to properly sort CharsetMatch when both chaos/noise and coherence were close due to an unreachable condition in \_\_lt\_\_ (#350) + +## [3.2.0](https://github.com/Ousret/charset_normalizer/compare/3.1.0...3.2.0) (2023-06-07) + +### Changed +- Typehint for function `from_path` no longer enforce `PathLike` as its first argument +- Minor improvement over the global detection reliability + +### Added +- Introduce function `is_binary` that relies on main capabilities, and optimized to detect binaries +- Propagate `enable_fallback` argument throughout `from_bytes`, `from_path`, and `from_fp` that allow a deeper control over the detection (default True) +- Explicit support for Python 3.12 + +### Fixed +- Edge case detection failure where a file would contain 'very-long' camel cased word (Issue #289) + +## [3.1.0](https://github.com/Ousret/charset_normalizer/compare/3.0.1...3.1.0) (2023-03-06) + +### Added +- Argument `should_rename_legacy` for legacy function `detect` and disregard any new arguments without errors (PR #262) + +### Removed +- Support for Python 3.6 (PR #260) + +### Changed +- Optional speedup provided by mypy/c 1.0.1 + +## [3.0.1](https://github.com/Ousret/charset_normalizer/compare/3.0.0...3.0.1) (2022-11-18) + +### Fixed +- Multi-bytes cutter/chunk generator did not always cut correctly (PR #233) + +### Changed +- Speedup provided by mypy/c 0.990 on Python >= 3.7 + +## [3.0.0](https://github.com/Ousret/charset_normalizer/compare/2.1.1...3.0.0) (2022-10-20) + +### Added +- Extend the capability of explain=True when cp_isolation contains at most two entries (min one), will log in details of the Mess-detector results +- Support for alternative language frequency set in charset_normalizer.assets.FREQUENCIES +- Add parameter `language_threshold` in `from_bytes`, `from_path` and `from_fp` to adjust the minimum expected coherence ratio +- `normalizer --version` now specify if current version provide extra speedup (meaning mypyc compilation whl) + +### Changed +- Build with static metadata using 'build' frontend +- Make the language detection stricter +- Optional: Module `md.py` can be compiled using Mypyc to provide an extra speedup up to 4x faster than v2.1 + +### Fixed +- CLI with opt --normalize fail when using full path for files +- TooManyAccentuatedPlugin induce false positive on the mess detection when too few alpha character have been fed to it +- Sphinx warnings when generating the documentation + +### Removed +- Coherence detector no longer return 'Simple English' instead return 'English' +- Coherence detector no longer return 'Classical Chinese' instead return 'Chinese' +- Breaking: Method `first()` and `best()` from CharsetMatch +- UTF-7 will no longer appear as "detected" without a recognized SIG/mark (is unreliable/conflict with ASCII) +- Breaking: Class aliases CharsetDetector, CharsetDoctor, CharsetNormalizerMatch and CharsetNormalizerMatches +- Breaking: Top-level function `normalize` +- Breaking: Properties `chaos_secondary_pass`, `coherence_non_latin` and `w_counter` from CharsetMatch +- Support for the backport `unicodedata2` + +## [3.0.0rc1](https://github.com/Ousret/charset_normalizer/compare/3.0.0b2...3.0.0rc1) (2022-10-18) + +### Added +- Extend the capability of explain=True when cp_isolation contains at most two entries (min one), will log in details of the Mess-detector results +- Support for alternative language frequency set in charset_normalizer.assets.FREQUENCIES +- Add parameter `language_threshold` in `from_bytes`, `from_path` and `from_fp` to adjust the minimum expected coherence ratio + +### Changed +- Build with static metadata using 'build' frontend +- Make the language detection stricter + +### Fixed +- CLI with opt --normalize fail when using full path for files +- TooManyAccentuatedPlugin induce false positive on the mess detection when too few alpha character have been fed to it + +### Removed +- Coherence detector no longer return 'Simple English' instead return 'English' +- Coherence detector no longer return 'Classical Chinese' instead return 'Chinese' + +## [3.0.0b2](https://github.com/Ousret/charset_normalizer/compare/3.0.0b1...3.0.0b2) (2022-08-21) + +### Added +- `normalizer --version` now specify if current version provide extra speedup (meaning mypyc compilation whl) + +### Removed +- Breaking: Method `first()` and `best()` from CharsetMatch +- UTF-7 will no longer appear as "detected" without a recognized SIG/mark (is unreliable/conflict with ASCII) + +### Fixed +- Sphinx warnings when generating the documentation + +## [3.0.0b1](https://github.com/Ousret/charset_normalizer/compare/2.1.0...3.0.0b1) (2022-08-15) + +### Changed +- Optional: Module `md.py` can be compiled using Mypyc to provide an extra speedup up to 4x faster than v2.1 + +### Removed +- Breaking: Class aliases CharsetDetector, CharsetDoctor, CharsetNormalizerMatch and CharsetNormalizerMatches +- Breaking: Top-level function `normalize` +- Breaking: Properties `chaos_secondary_pass`, `coherence_non_latin` and `w_counter` from CharsetMatch +- Support for the backport `unicodedata2` + +## [2.1.1](https://github.com/Ousret/charset_normalizer/compare/2.1.0...2.1.1) (2022-08-19) + +### Deprecated +- Function `normalize` scheduled for removal in 3.0 + +### Changed +- Removed useless call to decode in fn is_unprintable (#206) + +### Fixed +- Third-party library (i18n xgettext) crashing not recognizing utf_8 (PEP 263) with underscore from [@aleksandernovikov](https://github.com/aleksandernovikov) (#204) + +## [2.1.0](https://github.com/Ousret/charset_normalizer/compare/2.0.12...2.1.0) (2022-06-19) + +### Added +- Output the Unicode table version when running the CLI with `--version` (PR #194) + +### Changed +- Re-use decoded buffer for single byte character sets from [@nijel](https://github.com/nijel) (PR #175) +- Fixing some performance bottlenecks from [@deedy5](https://github.com/deedy5) (PR #183) + +### Fixed +- Workaround potential bug in cpython with Zero Width No-Break Space located in Arabic Presentation Forms-B, Unicode 1.1 not acknowledged as space (PR #175) +- CLI default threshold aligned with the API threshold from [@oleksandr-kuzmenko](https://github.com/oleksandr-kuzmenko) (PR #181) + +### Removed +- Support for Python 3.5 (PR #192) + +### Deprecated +- Use of backport unicodedata from `unicodedata2` as Python is quickly catching up, scheduled for removal in 3.0 (PR #194) + +## [2.0.12](https://github.com/Ousret/charset_normalizer/compare/2.0.11...2.0.12) (2022-02-12) + +### Fixed +- ASCII miss-detection on rare cases (PR #170) + +## [2.0.11](https://github.com/Ousret/charset_normalizer/compare/2.0.10...2.0.11) (2022-01-30) + +### Added +- Explicit support for Python 3.11 (PR #164) + +### Changed +- The logging behavior have been completely reviewed, now using only TRACE and DEBUG levels (PR #163 #165) + +## [2.0.10](https://github.com/Ousret/charset_normalizer/compare/2.0.9...2.0.10) (2022-01-04) + +### Fixed +- Fallback match entries might lead to UnicodeDecodeError for large bytes sequence (PR #154) + +### Changed +- Skipping the language-detection (CD) on ASCII (PR #155) + +## [2.0.9](https://github.com/Ousret/charset_normalizer/compare/2.0.8...2.0.9) (2021-12-03) + +### Changed +- Moderating the logging impact (since 2.0.8) for specific environments (PR #147) + +### Fixed +- Wrong logging level applied when setting kwarg `explain` to True (PR #146) + +## [2.0.8](https://github.com/Ousret/charset_normalizer/compare/2.0.7...2.0.8) (2021-11-24) +### Changed +- Improvement over Vietnamese detection (PR #126) +- MD improvement on trailing data and long foreign (non-pure latin) data (PR #124) +- Efficiency improvements in cd/alphabet_languages from [@adbar](https://github.com/adbar) (PR #122) +- call sum() without an intermediary list following PEP 289 recommendations from [@adbar](https://github.com/adbar) (PR #129) +- Code style as refactored by Sourcery-AI (PR #131) +- Minor adjustment on the MD around european words (PR #133) +- Remove and replace SRTs from assets / tests (PR #139) +- Initialize the library logger with a `NullHandler` by default from [@nmaynes](https://github.com/nmaynes) (PR #135) +- Setting kwarg `explain` to True will add provisionally (bounded to function lifespan) a specific stream handler (PR #135) + +### Fixed +- Fix large (misleading) sequence giving UnicodeDecodeError (PR #137) +- Avoid using too insignificant chunk (PR #137) + +### Added +- Add and expose function `set_logging_handler` to configure a specific StreamHandler from [@nmaynes](https://github.com/nmaynes) (PR #135) +- Add `CHANGELOG.md` entries, format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) (PR #141) + +## [2.0.7](https://github.com/Ousret/charset_normalizer/compare/2.0.6...2.0.7) (2021-10-11) +### Added +- Add support for Kazakh (Cyrillic) language detection (PR #109) + +### Changed +- Further, improve inferring the language from a given single-byte code page (PR #112) +- Vainly trying to leverage PEP263 when PEP3120 is not supported (PR #116) +- Refactoring for potential performance improvements in loops from [@adbar](https://github.com/adbar) (PR #113) +- Various detection improvement (MD+CD) (PR #117) + +### Removed +- Remove redundant logging entry about detected language(s) (PR #115) + +### Fixed +- Fix a minor inconsistency between Python 3.5 and other versions regarding language detection (PR #117 #102) + +## [2.0.6](https://github.com/Ousret/charset_normalizer/compare/2.0.5...2.0.6) (2021-09-18) +### Fixed +- Unforeseen regression with the loss of the backward-compatibility with some older minor of Python 3.5.x (PR #100) +- Fix CLI crash when using --minimal output in certain cases (PR #103) + +### Changed +- Minor improvement to the detection efficiency (less than 1%) (PR #106 #101) + +## [2.0.5](https://github.com/Ousret/charset_normalizer/compare/2.0.4...2.0.5) (2021-09-14) +### Changed +- The project now comply with: flake8, mypy, isort and black to ensure a better overall quality (PR #81) +- The BC-support with v1.x was improved, the old staticmethods are restored (PR #82) +- The Unicode detection is slightly improved (PR #93) +- Add syntax sugar \_\_bool\_\_ for results CharsetMatches list-container (PR #91) + +### Removed +- The project no longer raise warning on tiny content given for detection, will be simply logged as warning instead (PR #92) + +### Fixed +- In some rare case, the chunks extractor could cut in the middle of a multi-byte character and could mislead the mess detection (PR #95) +- Some rare 'space' characters could trip up the UnprintablePlugin/Mess detection (PR #96) +- The MANIFEST.in was not exhaustive (PR #78) + +## [2.0.4](https://github.com/Ousret/charset_normalizer/compare/2.0.3...2.0.4) (2021-07-30) +### Fixed +- The CLI no longer raise an unexpected exception when no encoding has been found (PR #70) +- Fix accessing the 'alphabets' property when the payload contains surrogate characters (PR #68) +- The logger could mislead (explain=True) on detected languages and the impact of one MBCS match (PR #72) +- Submatch factoring could be wrong in rare edge cases (PR #72) +- Multiple files given to the CLI were ignored when publishing results to STDOUT. (After the first path) (PR #72) +- Fix line endings from CRLF to LF for certain project files (PR #67) + +### Changed +- Adjust the MD to lower the sensitivity, thus improving the global detection reliability (PR #69 #76) +- Allow fallback on specified encoding if any (PR #71) + +## [2.0.3](https://github.com/Ousret/charset_normalizer/compare/2.0.2...2.0.3) (2021-07-16) +### Changed +- Part of the detection mechanism has been improved to be less sensitive, resulting in more accurate detection results. Especially ASCII. (PR #63) +- According to the community wishes, the detection will fall back on ASCII or UTF-8 in a last-resort case. (PR #64) + +## [2.0.2](https://github.com/Ousret/charset_normalizer/compare/2.0.1...2.0.2) (2021-07-15) +### Fixed +- Empty/Too small JSON payload miss-detection fixed. Report from [@tseaver](https://github.com/tseaver) (PR #59) + +### Changed +- Don't inject unicodedata2 into sys.modules from [@akx](https://github.com/akx) (PR #57) + +## [2.0.1](https://github.com/Ousret/charset_normalizer/compare/2.0.0...2.0.1) (2021-07-13) +### Fixed +- Make it work where there isn't a filesystem available, dropping assets frequencies.json. Report from [@sethmlarson](https://github.com/sethmlarson). (PR #55) +- Using explain=False permanently disable the verbose output in the current runtime (PR #47) +- One log entry (language target preemptive) was not show in logs when using explain=True (PR #47) +- Fix undesired exception (ValueError) on getitem of instance CharsetMatches (PR #52) + +### Changed +- Public function normalize default args values were not aligned with from_bytes (PR #53) + +### Added +- You may now use charset aliases in cp_isolation and cp_exclusion arguments (PR #47) + +## [2.0.0](https://github.com/Ousret/charset_normalizer/compare/1.4.1...2.0.0) (2021-07-02) +### Changed +- 4x to 5 times faster than the previous 1.4.0 release. At least 2x faster than Chardet. +- Accent has been made on UTF-8 detection, should perform rather instantaneous. +- The backward compatibility with Chardet has been greatly improved. The legacy detect function returns an identical charset name whenever possible. +- The detection mechanism has been slightly improved, now Turkish content is detected correctly (most of the time) +- The program has been rewritten to ease the readability and maintainability. (+Using static typing)+ +- utf_7 detection has been reinstated. + +### Removed +- This package no longer require anything when used with Python 3.5 (Dropped cached_property) +- Removed support for these languages: Catalan, Esperanto, Kazakh, Baque, Volapük, Azeri, Galician, Nynorsk, Macedonian, and Serbocroatian. +- The exception hook on UnicodeDecodeError has been removed. + +### Deprecated +- Methods coherence_non_latin, w_counter, chaos_secondary_pass of the class CharsetMatch are now deprecated and scheduled for removal in v3.0 + +### Fixed +- The CLI output used the relative path of the file(s). Should be absolute. + +## [1.4.1](https://github.com/Ousret/charset_normalizer/compare/1.4.0...1.4.1) (2021-05-28) +### Fixed +- Logger configuration/usage no longer conflict with others (PR #44) + +## [1.4.0](https://github.com/Ousret/charset_normalizer/compare/1.3.9...1.4.0) (2021-05-21) +### Removed +- Using standard logging instead of using the package loguru. +- Dropping nose test framework in favor of the maintained pytest. +- Choose to not use dragonmapper package to help with gibberish Chinese/CJK text. +- Require cached_property only for Python 3.5 due to constraint. Dropping for every other interpreter version. +- Stop support for UTF-7 that does not contain a SIG. +- Dropping PrettyTable, replaced with pure JSON output in CLI. + +### Fixed +- BOM marker in a CharsetNormalizerMatch instance could be False in rare cases even if obviously present. Due to the sub-match factoring process. +- Not searching properly for the BOM when trying utf32/16 parent codec. + +### Changed +- Improving the package final size by compressing frequencies.json. +- Huge improvement over the larges payload. + +### Added +- CLI now produces JSON consumable output. +- Return ASCII if given sequences fit. Given reasonable confidence. + +## [1.3.9](https://github.com/Ousret/charset_normalizer/compare/1.3.8...1.3.9) (2021-05-13) + +### Fixed +- In some very rare cases, you may end up getting encode/decode errors due to a bad bytes payload (PR #40) + +## [1.3.8](https://github.com/Ousret/charset_normalizer/compare/1.3.7...1.3.8) (2021-05-12) + +### Fixed +- Empty given payload for detection may cause an exception if trying to access the `alphabets` property. (PR #39) + +## [1.3.7](https://github.com/Ousret/charset_normalizer/compare/1.3.6...1.3.7) (2021-05-12) + +### Fixed +- The legacy detect function should return UTF-8-SIG if sig is present in the payload. (PR #38) + +## [1.3.6](https://github.com/Ousret/charset_normalizer/compare/1.3.5...1.3.6) (2021-02-09) + +### Changed +- Amend the previous release to allow prettytable 2.0 (PR #35) + +## [1.3.5](https://github.com/Ousret/charset_normalizer/compare/1.3.4...1.3.5) (2021-02-08) + +### Fixed +- Fix error while using the package with a python pre-release interpreter (PR #33) + +### Changed +- Dependencies refactoring, constraints revised. + +### Added +- Add python 3.9 and 3.10 to the supported interpreters + +MIT License + +Copyright (c) 2019 TAHRI Ahmed R. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/RECORD b/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/RECORD new file mode 100644 index 0000000..d774068 --- /dev/null +++ b/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/RECORD @@ -0,0 +1,35 @@ +../../../bin/normalizer,sha256=pWxmMYA_SquLIU6d0ASgK3copKj6QWxw28YimXUHlzw,251 +charset_normalizer-3.4.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +charset_normalizer-3.4.0.dist-info/LICENSE,sha256=6zGgxaT7Cbik4yBV0lweX5w1iidS_vPNcgIT0cz-4kE,1070 +charset_normalizer-3.4.0.dist-info/METADATA,sha256=WGbEW9ehh2spNJxo1M6sEGGZWmsQ-oj2DsMjV29zoms,34159 +charset_normalizer-3.4.0.dist-info/RECORD,, +charset_normalizer-3.4.0.dist-info/WHEEL,sha256=Z868N0_Fq1ssfDKgnQWj75ig0pzypFewyov-H4g6Btc,153 +charset_normalizer-3.4.0.dist-info/entry_points.txt,sha256=ADSTKrkXZ3hhdOVFi6DcUEHQRS0xfxDIE_pEz4wLIXA,65 +charset_normalizer-3.4.0.dist-info/top_level.txt,sha256=7ASyzePr8_xuZWJsnqJjIBtyV8vhEo0wBCv1MPRRi3Q,19 +charset_normalizer/__init__.py,sha256=UzI3xC8PhmcLRMzSgPb6minTmRq0kWznnCBJ8ZCc2XI,1577 +charset_normalizer/__main__.py,sha256=JxY8bleaENOFlLRb9HfoeZCzAMnn2A1oGR5Xm2eyqg0,73 +charset_normalizer/__pycache__/__init__.cpython-312.pyc,, +charset_normalizer/__pycache__/__main__.cpython-312.pyc,, +charset_normalizer/__pycache__/api.cpython-312.pyc,, +charset_normalizer/__pycache__/cd.cpython-312.pyc,, +charset_normalizer/__pycache__/constant.cpython-312.pyc,, +charset_normalizer/__pycache__/legacy.cpython-312.pyc,, +charset_normalizer/__pycache__/md.cpython-312.pyc,, +charset_normalizer/__pycache__/models.cpython-312.pyc,, +charset_normalizer/__pycache__/utils.cpython-312.pyc,, +charset_normalizer/__pycache__/version.cpython-312.pyc,, +charset_normalizer/api.py,sha256=kMyNUqrfBZU22PP0pYKrSldtYUGA24wsGlXGLAKra7c,22559 +charset_normalizer/cd.py,sha256=xwZliZcTQFA3jU0c00PRiu9MNxXTFxQkFLWmMW24ZzI,12560 +charset_normalizer/cli/__init__.py,sha256=D5ERp8P62llm2FuoMzydZ7d9rs8cvvLXqE-1_6oViPc,100 +charset_normalizer/cli/__main__.py,sha256=zX9sV_ApU1d96Wb0cS04vulstdB4F0Eh7kLn-gevfw4,10411 +charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc,, +charset_normalizer/cli/__pycache__/__main__.cpython-312.pyc,, +charset_normalizer/constant.py,sha256=uwoW87NicWZDTLviX7le0wdoYBbhBQDA4n1JtJo77ts,40499 +charset_normalizer/legacy.py,sha256=XJjkT0hejMH8qfAKz1ts8OUiBT18t2FJP3tJgLwUWwc,2327 +charset_normalizer/md.cpython-312-aarch64-linux-gnu.so,sha256=medVy2qYxvmhqZLDgu6sOFWJ_3LJ2X3o-RJovGFelks,69800 +charset_normalizer/md.py,sha256=SIIZcENrslI7h3v4GigbFN61fRyE_wiCN1z9Ii3fBRo,20138 +charset_normalizer/md__mypyc.cpython-312-aarch64-linux-gnu.so,sha256=sxeTw_aoOZt6lM09TkDdRVjlOp1FyW8wJQWSCrj5ldc,322008 +charset_normalizer/models.py,sha256=oAMAcBSEY7CngbUXJp34Wc4Rl9NKJJjGmUwW3EPtk6g,12425 +charset_normalizer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +charset_normalizer/utils.py,sha256=teiosMqzKjXyAHXnGdjSBOgnBZwx-SkBbCLrx0UXy8M,11894 +charset_normalizer/version.py,sha256=AX66S4ytQFdd6F5jbVU2OPMqYwFS5M3BkMvyX-3BKF8,79 diff --git a/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/WHEEL b/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/WHEEL new file mode 100644 index 0000000..cde7bec --- /dev/null +++ b/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: setuptools (75.1.0) +Root-Is-Purelib: false +Tag: cp312-cp312-manylinux_2_17_aarch64 +Tag: cp312-cp312-manylinux2014_aarch64 + diff --git a/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/entry_points.txt b/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/entry_points.txt new file mode 100644 index 0000000..65619e7 --- /dev/null +++ b/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/entry_points.txt @@ -0,0 +1,2 @@ +[console_scripts] +normalizer = charset_normalizer.cli:cli_detect diff --git a/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/top_level.txt b/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/top_level.txt new file mode 100644 index 0000000..66958f0 --- /dev/null +++ b/env/lib/python3.12/site-packages/charset_normalizer-3.4.0.dist-info/top_level.txt @@ -0,0 +1 @@ +charset_normalizer diff --git a/env/lib/python3.12/site-packages/charset_normalizer/__init__.py b/env/lib/python3.12/site-packages/charset_normalizer/__init__.py new file mode 100644 index 0000000..55991fc --- /dev/null +++ b/env/lib/python3.12/site-packages/charset_normalizer/__init__.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +""" +Charset-Normalizer +~~~~~~~~~~~~~~ +The Real First Universal Charset Detector. +A library that helps you read text from an unknown charset encoding. +Motivated by chardet, This package is trying to resolve the issue by taking a new approach. +All IANA character set names for which the Python core library provides codecs are supported. + +Basic usage: + >>> from charset_normalizer import from_bytes + >>> results = from_bytes('Bсеки човек има право на образование. Oбразованието!'.encode('utf_8')) + >>> best_guess = results.best() + >>> str(best_guess) + 'Bсеки човек има право на образование. Oбразованието!' + +Others methods and usages are available - see the full documentation +at . +:copyright: (c) 2021 by Ahmed TAHRI +:license: MIT, see LICENSE for more details. +""" +import logging + +from .api import from_bytes, from_fp, from_path, is_binary +from .legacy import detect +from .models import CharsetMatch, CharsetMatches +from .utils import set_logging_handler +from .version import VERSION, __version__ + +__all__ = ( + "from_fp", + "from_path", + "from_bytes", + "is_binary", + "detect", + "CharsetMatch", + "CharsetMatches", + "__version__", + "VERSION", + "set_logging_handler", +) + +# Attach a NullHandler to the top level logger by default +# https://docs.python.org/3.3/howto/logging.html#configuring-logging-for-a-library + +logging.getLogger("charset_normalizer").addHandler(logging.NullHandler()) diff --git a/env/lib/python3.12/site-packages/charset_normalizer/__main__.py b/env/lib/python3.12/site-packages/charset_normalizer/__main__.py new file mode 100644 index 0000000..beae2ef --- /dev/null +++ b/env/lib/python3.12/site-packages/charset_normalizer/__main__.py @@ -0,0 +1,4 @@ +from .cli import cli_detect + +if __name__ == "__main__": + cli_detect() diff --git a/env/lib/python3.12/site-packages/charset_normalizer/__pycache__/__init__.cpython-312.pyc b/env/lib/python3.12/site-packages/charset_normalizer/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..66b0cd2f3d304ef6b53461ec9a5c8499c566bf15 GIT binary patch literal 1715 zcmcIk&1)M+6rYu3$y(WQ?9fX~VG1RZAl4@Kp+%$yC$+I4mW%E7u$N`DJKo)R_Jf&O zx$2>~x%3|>^lvD+xP?#?TKCdhFDpzjEQB0-D7m@hmQ&xXBr7Gkb`Njgdo%C7-}{=RXv4E)d@WV;)>EF>G zYa{7leX5;sxm9B#P5+O_?8H_>gF>^GJSrlj-}eX?R4#WT9uVe#MY;ap_~`;-fi$ENsGDyc0a-qP1G^Lw1|0hS(-*rO~Kcn~F+Q{rGrzm)iZM*$`w zPQt@5ItsBpijQe%M~)x5EqyzZexFF{;NBoVcBs6C_dQ?WnAnHJr5ISr2XGt92z-l( z^(ll@2O^=$PLe})OmIk#Fo|Ox5!(ZRjN#6DcRlw@Y)LtWD)2$X@sa1-Uhe9% zf%GE47jb%(6}aj94qOGS)E1b)nMmR|;sCd$>-UK8ZJY?e*w!(|YinzxgvVK0;Z>Ef zA1Jf@*y;@=6%zx*IQ}IYHB-LRxM@g#t8& z)>6vG)fFLmV|p!D|KD(ReFxgj1r8{5$$?IU&ZzFArjS1I8R;>Km!ZL<**Hj``A%df z0SzUQeiZ63qjxYuQm?>?DFyX}sCAwU*wtqjL_HX3?9(3++boVy$84J`%!B7K4(b8Y2U;*kaCia{SMMILC^D-^RT1?{@_9w( z6sZBpmfkE@^PQ|>Sx|7x$|~d7S&_v4$mukOa-WqMb%{O5!(`yaJ*E5yl`;)ur+QK4WupnjoRm^{S3YP9Nm6~ZazoN%TldYIIdh`q%9p+F3{o-Ev8F1&r$sX dtqjphy1IGt(Z%ZKaCP&1b?Z;m;qQUle*rr8N$~&x literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/charset_normalizer/__pycache__/__main__.cpython-312.pyc b/env/lib/python3.12/site-packages/charset_normalizer/__pycache__/__main__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3c8e191c4cb1a52c14ec52674245197f546e1180 GIT binary patch literal 285 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/charset_normalizer/__pycache__/cd.cpython-312.pyc b/env/lib/python3.12/site-packages/charset_normalizer/__pycache__/cd.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..099f485b6155a6e7701a8cb4e8bfceece73ea7e0 GIT binary patch literal 13478 zcmd6NX>c4@eqZ;TJ(vb&a1u8fgL6RQB6x}S1)d@(EuobNTgDEj8^DlrK-~k9zz(vo zR#k@9Of6+^EI7L#pf#%&jFbu#?+0$mWoy@8s%GS0;ml4D(;egLTn2c-V3{80LLO zWJEU3jFDeQoJ}~!94sk2$HglXRby4O?2A_?YQ}14xg@?TQ9D+fs2i(G z)Q{CC8pawDjbn{?=a-s9UMi8A>M+;|mst9aYphu;+ff@pZHt4EJRh3#`&zr;J1*

GZi8LQY*7%N87 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 M&-|s9K_AroKZP?%7XSbN literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/charset_normalizer/__pycache__/legacy.cpython-312.pyc b/env/lib/python3.12/site-packages/charset_normalizer/__pycache__/legacy.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..212d2ffdbfe79939f3dd3b919a573d0a29b6ff19 GIT binary patch literal 2829 zcmZ`*U2Gf25#Hk+$>X17NtP_fKiODmA|jHQ#*O0|L0wm-V#lbQ+ENSCFb*f)l04~t zsNFqDWGFx_TtH|asH0)4R}10@bNYM?EOyfKiT{M6Yy zo@u!59nw`q81McX>SvVTgX6$WFcEBNs^#r zR?L=5vaOU9J6?(hJlRUv$x;$%#fV#~ohqdQI$@>lOerHFBGUobo3yfau9TBd484a8 z^(Hb>BzIR1?Unjc$jGM9v!9VO(l_I!{zfL>_k|G4OMXUo9GC0dbRCwL{oLHO4~p9K zh2r$3i?i?f@;RsBtC#CyS+_u3S=FiYg%s{hSEy@i3k^;fER9TGICtfIaZa1QeC0~< z>Iau+&lhK>i?EWKYt)Hx-YoNS=v>%$J(cz*V15e`RFVu-ip>K;L^fjY0@sj%QUWRt zR6qH2a^*RV-KMH~e(j zbtgC2%y+L!JH|PYxhM@Z)Y7f4=tG?VG9R6{xeQ@l7Iz|sgQso#>QG+Bz8HA+08Q|VR zTm&p=t=QczP2c9-007LA5nJpgY9uK}o{VO#*rL$+T)W$yM>?bNV+h`t!7VRyfw zg2eIOzKCi<$q8&EKx(9=7^$Uk&^G|mIFjj&G!7E!CZrPhBpDe`NGkk9B(Z{MsyAyX z;-^7UX~kO!BYRuEit;)AeF#z-Llb#x5RSuS#WsQbHiDJ&gp)GIyhdN?f! z08tGPJtHE6=K%Q-W3udt$|igxYr1VZT^zgHLf|z@g31;~5>#9bSO8Er#!)m` zU^+1Me><=U|6)=IDHU-w2nE=eJrjI~A7^I+9nJA>`J3#OKWvzcLItFNGOY$MG5q=y zX`*@Tb$}*HxTk@EBm|hp^Ubdn*Xlq4PVPd0yhu8@bpk9H2J8eVI;A>9qw4ZA_`^5X zXZ_^7v*bYD_^2A5gw9z%?(vFt+E+AYR%h}u6;+BJ5S^$@`9WWXpP-^L`pTkfI=*6= zjQh$GX)r%+GSgvP2jKnGQK^-S?Kf+GR{rqazg++0^*`O%{pQu(cjoS&n!i6!?`PS*980D5 zRg@jss{QituZs8aTMsfPANC#U#H8HdKL$rXdhPbX?b^r3cL&G!;&OkwgJjr{M(W_! z`0a}ilCM1+8r>fK+1X9?U%)!Os~-Kk`pS;_%C0)LaqjW4%3sz2yeKNTJEITYzO<9S^l&JDXMAVq~eFPXxE@Y+jnlt5iHz=vPEH2^|E@buBt2=HdeN6O?d|I>E)AKOkNb6%QEj zlAz+c^%D?pC{R?1cF=@itKwY+d=@5_tk=yjDO6E9AfI@U0{%d_T_bCpI7~d+sJL6h z$ASnY9T8pdDiC3QqP`oxWWGVa4pVXWvw7$`vLs25(24(`!VW4tLWlp2jyysWUnY<; v@JM-MUy^u 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 IPfSex|GGiZ=l}o! literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/charset_normalizer/__pycache__/models.cpython-312.pyc b/env/lib/python3.12/site-packages/charset_normalizer/__pycache__/models.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..245cfaa6d719acf69c6eedccf45e6615cf0b346f GIT binary patch literal 17435 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/charset_normalizer/__pycache__/utils.cpython-312.pyc b/env/lib/python3.12/site-packages/charset_normalizer/__pycache__/utils.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1a58d554873fca44c9b305e1da70d7e291d52f60 GIT binary patch literal 14353 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 JWU9*S{{r94r}Y2; literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/charset_normalizer/__pycache__/version.cpython-312.pyc b/env/lib/python3.12/site-packages/charset_normalizer/__pycache__/version.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3607ae961a08986deb6361b2d5a4c0421744cfa2 GIT binary patch literal 312 zcmX@j%ge<81iPmAruzfw#~=<2Fhd!i^?;1&3@Hpz3@MCJjH!%StS}`AI)!O9BZL>l zT*<7-QYFCUT2YW+oT^ZkT2!2wpT||jYOH6XXYh+r&rg%(7JGbrN`7*D{4MVIc&G{> zhqbsMC$r=hdzfobu&2M@N`}uMGk*o?XXNLm>Zj!ArDx>p=cSeurzY#C=9TH^WG3ks zRF-7q=Nao68tE5jmZa(yBqnDkrl%I`CubxU6{nWO=j9jWCgx;Tr55Q!ZPF{K{Ka9D zo1apelWJE43IUMYixq*y2WCb_#*a))j4U5G82H5+xNmTYUgwg&$R$0)`7)P6BYP1C GP!#~bU{d=4 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/charset_normalizer/api.py b/env/lib/python3.12/site-packages/charset_normalizer/api.py new file mode 100644 index 0000000..e3f2283 --- /dev/null +++ b/env/lib/python3.12/site-packages/charset_normalizer/api.py @@ -0,0 +1,668 @@ +import logging +from os import PathLike +from typing import BinaryIO, List, Optional, Set, Union + +from .cd import ( + coherence_ratio, + encoding_languages, + mb_encoding_languages, + merge_coherence_ratios, +) +from .constant import IANA_SUPPORTED, TOO_BIG_SEQUENCE, TOO_SMALL_SEQUENCE, TRACE +from .md import mess_ratio +from .models import CharsetMatch, CharsetMatches +from .utils import ( + any_specified_encoding, + cut_sequence_chunks, + iana_name, + identify_sig_or_bom, + is_cp_similar, + is_multi_byte_encoding, + should_strip_sig_or_bom, +) + +# Will most likely be controversial +# logging.addLevelName(TRACE, "TRACE") +logger = logging.getLogger("charset_normalizer") +explain_handler = logging.StreamHandler() +explain_handler.setFormatter( + logging.Formatter("%(asctime)s | %(levelname)s | %(message)s") +) + + +def from_bytes( + sequences: Union[bytes, bytearray], + steps: int = 5, + chunk_size: int = 512, + threshold: float = 0.2, + cp_isolation: Optional[List[str]] = None, + cp_exclusion: Optional[List[str]] = None, + preemptive_behaviour: bool = True, + explain: bool = False, + language_threshold: float = 0.1, + enable_fallback: bool = True, +) -> CharsetMatches: + """ + Given a raw bytes sequence, return the best possibles charset usable to render str objects. + If there is no results, it is a strong indicator that the source is binary/not text. + By default, the process will extract 5 blocks of 512o each to assess the mess and coherence of a given sequence. + And will give up a particular code page after 20% of measured mess. Those criteria are customizable at will. + + The preemptive behavior DOES NOT replace the traditional detection workflow, it prioritize a particular code page + but never take it for granted. Can improve the performance. + + You may want to focus your attention to some code page or/and not others, use cp_isolation and cp_exclusion for that + purpose. + + This function will strip the SIG in the payload/sequence every time except on UTF-16, UTF-32. + By default the library does not setup any handler other than the NullHandler, if you choose to set the 'explain' + toggle to True it will alter the logger configuration to add a StreamHandler that is suitable for debugging. + Custom logging format and handler can be set manually. + """ + + if not isinstance(sequences, (bytearray, bytes)): + raise TypeError( + "Expected object of type bytes or bytearray, got: {0}".format( + type(sequences) + ) + ) + + if explain: + previous_logger_level: int = logger.level + logger.addHandler(explain_handler) + logger.setLevel(TRACE) + + length: int = len(sequences) + + if length == 0: + logger.debug("Encoding detection on empty bytes, assuming utf_8 intention.") + if explain: + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level or logging.WARNING) + return CharsetMatches([CharsetMatch(sequences, "utf_8", 0.0, False, [], "")]) + + if cp_isolation is not None: + logger.log( + TRACE, + "cp_isolation is set. use this flag for debugging purpose. " + "limited list of encoding allowed : %s.", + ", ".join(cp_isolation), + ) + cp_isolation = [iana_name(cp, False) for cp in cp_isolation] + else: + cp_isolation = [] + + if cp_exclusion is not None: + logger.log( + TRACE, + "cp_exclusion is set. use this flag for debugging purpose. " + "limited list of encoding excluded : %s.", + ", ".join(cp_exclusion), + ) + cp_exclusion = [iana_name(cp, False) for cp in cp_exclusion] + else: + cp_exclusion = [] + + if length <= (chunk_size * steps): + logger.log( + TRACE, + "override steps (%i) and chunk_size (%i) as content does not fit (%i byte(s) given) parameters.", + steps, + chunk_size, + length, + ) + steps = 1 + chunk_size = length + + if steps > 1 and length / steps < chunk_size: + chunk_size = int(length / steps) + + is_too_small_sequence: bool = len(sequences) < TOO_SMALL_SEQUENCE + is_too_large_sequence: bool = len(sequences) >= TOO_BIG_SEQUENCE + + if is_too_small_sequence: + logger.log( + TRACE, + "Trying to detect encoding from a tiny portion of ({}) byte(s).".format( + length + ), + ) + elif is_too_large_sequence: + logger.log( + TRACE, + "Using lazy str decoding because the payload is quite large, ({}) byte(s).".format( + length + ), + ) + + prioritized_encodings: List[str] = [] + + specified_encoding: Optional[str] = ( + any_specified_encoding(sequences) if preemptive_behaviour else None + ) + + if specified_encoding is not None: + prioritized_encodings.append(specified_encoding) + logger.log( + TRACE, + "Detected declarative mark in sequence. Priority +1 given for %s.", + specified_encoding, + ) + + tested: Set[str] = set() + tested_but_hard_failure: List[str] = [] + tested_but_soft_failure: List[str] = [] + + fallback_ascii: Optional[CharsetMatch] = None + fallback_u8: Optional[CharsetMatch] = None + fallback_specified: Optional[CharsetMatch] = None + + results: CharsetMatches = CharsetMatches() + + early_stop_results: CharsetMatches = CharsetMatches() + + sig_encoding, sig_payload = identify_sig_or_bom(sequences) + + if sig_encoding is not None: + prioritized_encodings.append(sig_encoding) + logger.log( + TRACE, + "Detected a SIG or BOM mark on first %i byte(s). Priority +1 given for %s.", + len(sig_payload), + sig_encoding, + ) + + prioritized_encodings.append("ascii") + + if "utf_8" not in prioritized_encodings: + prioritized_encodings.append("utf_8") + + for encoding_iana in prioritized_encodings + IANA_SUPPORTED: + if cp_isolation and encoding_iana not in cp_isolation: + continue + + if cp_exclusion and encoding_iana in cp_exclusion: + continue + + if encoding_iana in tested: + continue + + tested.add(encoding_iana) + + decoded_payload: Optional[str] = None + bom_or_sig_available: bool = sig_encoding == encoding_iana + strip_sig_or_bom: bool = bom_or_sig_available and should_strip_sig_or_bom( + encoding_iana + ) + + if encoding_iana in {"utf_16", "utf_32"} and not bom_or_sig_available: + logger.log( + TRACE, + "Encoding %s won't be tested as-is because it require a BOM. Will try some sub-encoder LE/BE.", + encoding_iana, + ) + continue + if encoding_iana in {"utf_7"} and not bom_or_sig_available: + logger.log( + TRACE, + "Encoding %s won't be tested as-is because detection is unreliable without BOM/SIG.", + encoding_iana, + ) + continue + + try: + is_multi_byte_decoder: bool = is_multi_byte_encoding(encoding_iana) + except (ModuleNotFoundError, ImportError): + logger.log( + TRACE, + "Encoding %s does not provide an IncrementalDecoder", + encoding_iana, + ) + continue + + try: + if is_too_large_sequence and is_multi_byte_decoder is False: + str( + ( + sequences[: int(50e4)] + if strip_sig_or_bom is False + else sequences[len(sig_payload) : int(50e4)] + ), + encoding=encoding_iana, + ) + else: + decoded_payload = str( + ( + sequences + if strip_sig_or_bom is False + else sequences[len(sig_payload) :] + ), + encoding=encoding_iana, + ) + except (UnicodeDecodeError, LookupError) as e: + if not isinstance(e, LookupError): + logger.log( + TRACE, + "Code page %s does not fit given bytes sequence at ALL. %s", + encoding_iana, + str(e), + ) + tested_but_hard_failure.append(encoding_iana) + continue + + similar_soft_failure_test: bool = False + + for encoding_soft_failed in tested_but_soft_failure: + if is_cp_similar(encoding_iana, encoding_soft_failed): + similar_soft_failure_test = True + break + + if similar_soft_failure_test: + logger.log( + TRACE, + "%s is deemed too similar to code page %s and was consider unsuited already. Continuing!", + encoding_iana, + encoding_soft_failed, + ) + continue + + r_ = range( + 0 if not bom_or_sig_available else len(sig_payload), + length, + int(length / steps), + ) + + multi_byte_bonus: bool = ( + is_multi_byte_decoder + and decoded_payload is not None + and len(decoded_payload) < length + ) + + if multi_byte_bonus: + logger.log( + TRACE, + "Code page %s is a multi byte encoding table and it appear that at least one character " + "was encoded using n-bytes.", + encoding_iana, + ) + + max_chunk_gave_up: int = int(len(r_) / 4) + + max_chunk_gave_up = max(max_chunk_gave_up, 2) + early_stop_count: int = 0 + lazy_str_hard_failure = False + + md_chunks: List[str] = [] + md_ratios = [] + + try: + for chunk in cut_sequence_chunks( + sequences, + encoding_iana, + r_, + chunk_size, + bom_or_sig_available, + strip_sig_or_bom, + sig_payload, + is_multi_byte_decoder, + decoded_payload, + ): + md_chunks.append(chunk) + + md_ratios.append( + mess_ratio( + chunk, + threshold, + explain is True and 1 <= len(cp_isolation) <= 2, + ) + ) + + if md_ratios[-1] >= threshold: + early_stop_count += 1 + + if (early_stop_count >= max_chunk_gave_up) or ( + bom_or_sig_available and strip_sig_or_bom is False + ): + break + except ( + UnicodeDecodeError + ) as e: # Lazy str loading may have missed something there + logger.log( + TRACE, + "LazyStr Loading: After MD chunk decode, code page %s does not fit given bytes sequence at ALL. %s", + encoding_iana, + str(e), + ) + early_stop_count = max_chunk_gave_up + lazy_str_hard_failure = True + + # We might want to check the sequence again with the whole content + # Only if initial MD tests passes + if ( + not lazy_str_hard_failure + and is_too_large_sequence + and not is_multi_byte_decoder + ): + try: + sequences[int(50e3) :].decode(encoding_iana, errors="strict") + except UnicodeDecodeError as e: + logger.log( + TRACE, + "LazyStr Loading: After final lookup, code page %s does not fit given bytes sequence at ALL. %s", + encoding_iana, + str(e), + ) + tested_but_hard_failure.append(encoding_iana) + continue + + mean_mess_ratio: float = sum(md_ratios) / len(md_ratios) if md_ratios else 0.0 + if mean_mess_ratio >= threshold or early_stop_count >= max_chunk_gave_up: + tested_but_soft_failure.append(encoding_iana) + logger.log( + TRACE, + "%s was excluded because of initial chaos probing. Gave up %i time(s). " + "Computed mean chaos is %f %%.", + encoding_iana, + early_stop_count, + round(mean_mess_ratio * 100, ndigits=3), + ) + # Preparing those fallbacks in case we got nothing. + if ( + enable_fallback + and encoding_iana in ["ascii", "utf_8", specified_encoding] + and not lazy_str_hard_failure + ): + fallback_entry = CharsetMatch( + sequences, + encoding_iana, + threshold, + False, + [], + decoded_payload, + preemptive_declaration=specified_encoding, + ) + if encoding_iana == specified_encoding: + fallback_specified = fallback_entry + elif encoding_iana == "ascii": + fallback_ascii = fallback_entry + else: + fallback_u8 = fallback_entry + continue + + logger.log( + TRACE, + "%s passed initial chaos probing. Mean measured chaos is %f %%", + encoding_iana, + round(mean_mess_ratio * 100, ndigits=3), + ) + + if not is_multi_byte_decoder: + target_languages: List[str] = encoding_languages(encoding_iana) + else: + target_languages = mb_encoding_languages(encoding_iana) + + if target_languages: + logger.log( + TRACE, + "{} should target any language(s) of {}".format( + encoding_iana, str(target_languages) + ), + ) + + cd_ratios = [] + + # We shall skip the CD when its about ASCII + # Most of the time its not relevant to run "language-detection" on it. + if encoding_iana != "ascii": + for chunk in md_chunks: + chunk_languages = coherence_ratio( + chunk, + language_threshold, + ",".join(target_languages) if target_languages else None, + ) + + cd_ratios.append(chunk_languages) + + cd_ratios_merged = merge_coherence_ratios(cd_ratios) + + if cd_ratios_merged: + logger.log( + TRACE, + "We detected language {} using {}".format( + cd_ratios_merged, encoding_iana + ), + ) + + current_match = CharsetMatch( + sequences, + encoding_iana, + mean_mess_ratio, + bom_or_sig_available, + cd_ratios_merged, + ( + decoded_payload + if ( + is_too_large_sequence is False + or encoding_iana in [specified_encoding, "ascii", "utf_8"] + ) + else None + ), + preemptive_declaration=specified_encoding, + ) + + results.append(current_match) + + if ( + encoding_iana in [specified_encoding, "ascii", "utf_8"] + and mean_mess_ratio < 0.1 + ): + # If md says nothing to worry about, then... stop immediately! + if mean_mess_ratio == 0.0: + logger.debug( + "Encoding detection: %s is most likely the one.", + current_match.encoding, + ) + if explain: + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + return CharsetMatches([current_match]) + + early_stop_results.append(current_match) + + if ( + len(early_stop_results) + and (specified_encoding is None or specified_encoding in tested) + and "ascii" in tested + and "utf_8" in tested + ): + probable_result: CharsetMatch = early_stop_results.best() # type: ignore[assignment] + logger.debug( + "Encoding detection: %s is most likely the one.", + probable_result.encoding, + ) + if explain: + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + + return CharsetMatches([probable_result]) + + if encoding_iana == sig_encoding: + logger.debug( + "Encoding detection: %s is most likely the one as we detected a BOM or SIG within " + "the beginning of the sequence.", + encoding_iana, + ) + if explain: + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + return CharsetMatches([results[encoding_iana]]) + + if len(results) == 0: + if fallback_u8 or fallback_ascii or fallback_specified: + logger.log( + TRACE, + "Nothing got out of the detection process. Using ASCII/UTF-8/Specified fallback.", + ) + + if fallback_specified: + logger.debug( + "Encoding detection: %s will be used as a fallback match", + fallback_specified.encoding, + ) + results.append(fallback_specified) + elif ( + (fallback_u8 and fallback_ascii is None) + or ( + fallback_u8 + and fallback_ascii + and fallback_u8.fingerprint != fallback_ascii.fingerprint + ) + or (fallback_u8 is not None) + ): + logger.debug("Encoding detection: utf_8 will be used as a fallback match") + results.append(fallback_u8) + elif fallback_ascii: + logger.debug("Encoding detection: ascii will be used as a fallback match") + results.append(fallback_ascii) + + if results: + logger.debug( + "Encoding detection: Found %s as plausible (best-candidate) for content. With %i alternatives.", + results.best().encoding, # type: ignore + len(results) - 1, + ) + else: + logger.debug("Encoding detection: Unable to determine any suitable charset.") + + if explain: + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + + return results + + +def from_fp( + fp: BinaryIO, + steps: int = 5, + chunk_size: int = 512, + threshold: float = 0.20, + cp_isolation: Optional[List[str]] = None, + cp_exclusion: Optional[List[str]] = None, + preemptive_behaviour: bool = True, + explain: bool = False, + language_threshold: float = 0.1, + enable_fallback: bool = True, +) -> CharsetMatches: + """ + Same thing than the function from_bytes but using a file pointer that is already ready. + Will not close the file pointer. + """ + return from_bytes( + fp.read(), + steps, + chunk_size, + threshold, + cp_isolation, + cp_exclusion, + preemptive_behaviour, + explain, + language_threshold, + enable_fallback, + ) + + +def from_path( + path: Union[str, bytes, PathLike], # type: ignore[type-arg] + steps: int = 5, + chunk_size: int = 512, + threshold: float = 0.20, + cp_isolation: Optional[List[str]] = None, + cp_exclusion: Optional[List[str]] = None, + preemptive_behaviour: bool = True, + explain: bool = False, + language_threshold: float = 0.1, + enable_fallback: bool = True, +) -> CharsetMatches: + """ + Same thing than the function from_bytes but with one extra step. Opening and reading given file path in binary mode. + Can raise IOError. + """ + with open(path, "rb") as fp: + return from_fp( + fp, + steps, + chunk_size, + threshold, + cp_isolation, + cp_exclusion, + preemptive_behaviour, + explain, + language_threshold, + enable_fallback, + ) + + +def is_binary( + fp_or_path_or_payload: Union[PathLike, str, BinaryIO, bytes], # type: ignore[type-arg] + steps: int = 5, + chunk_size: int = 512, + threshold: float = 0.20, + cp_isolation: Optional[List[str]] = None, + cp_exclusion: Optional[List[str]] = None, + preemptive_behaviour: bool = True, + explain: bool = False, + language_threshold: float = 0.1, + enable_fallback: bool = False, +) -> bool: + """ + Detect if the given input (file, bytes, or path) points to a binary file. aka. not a string. + Based on the same main heuristic algorithms and default kwargs at the sole exception that fallbacks match + are disabled to be stricter around ASCII-compatible but unlikely to be a string. + """ + if isinstance(fp_or_path_or_payload, (str, PathLike)): + guesses = from_path( + fp_or_path_or_payload, + steps=steps, + chunk_size=chunk_size, + threshold=threshold, + cp_isolation=cp_isolation, + cp_exclusion=cp_exclusion, + preemptive_behaviour=preemptive_behaviour, + explain=explain, + language_threshold=language_threshold, + enable_fallback=enable_fallback, + ) + elif isinstance( + fp_or_path_or_payload, + ( + bytes, + bytearray, + ), + ): + guesses = from_bytes( + fp_or_path_or_payload, + steps=steps, + chunk_size=chunk_size, + threshold=threshold, + cp_isolation=cp_isolation, + cp_exclusion=cp_exclusion, + preemptive_behaviour=preemptive_behaviour, + explain=explain, + language_threshold=language_threshold, + enable_fallback=enable_fallback, + ) + else: + guesses = from_fp( + fp_or_path_or_payload, + steps=steps, + chunk_size=chunk_size, + threshold=threshold, + cp_isolation=cp_isolation, + cp_exclusion=cp_exclusion, + preemptive_behaviour=preemptive_behaviour, + explain=explain, + language_threshold=language_threshold, + enable_fallback=enable_fallback, + ) + + return not guesses diff --git a/env/lib/python3.12/site-packages/charset_normalizer/cd.py b/env/lib/python3.12/site-packages/charset_normalizer/cd.py new file mode 100644 index 0000000..4ea6760 --- /dev/null +++ b/env/lib/python3.12/site-packages/charset_normalizer/cd.py @@ -0,0 +1,395 @@ +import importlib +from codecs import IncrementalDecoder +from collections import Counter +from functools import lru_cache +from typing import Counter as TypeCounter, Dict, List, Optional, Tuple + +from .constant import ( + FREQUENCIES, + KO_NAMES, + LANGUAGE_SUPPORTED_COUNT, + TOO_SMALL_SEQUENCE, + ZH_NAMES, +) +from .md import is_suspiciously_successive_range +from .models import CoherenceMatches +from .utils import ( + is_accentuated, + is_latin, + is_multi_byte_encoding, + is_unicode_range_secondary, + unicode_range, +) + + +def encoding_unicode_range(iana_name: str) -> List[str]: + """ + Return associated unicode ranges in a single byte code page. + """ + if is_multi_byte_encoding(iana_name): + raise IOError("Function not supported on multi-byte code page") + + decoder = importlib.import_module( + "encodings.{}".format(iana_name) + ).IncrementalDecoder + + p: IncrementalDecoder = decoder(errors="ignore") + seen_ranges: Dict[str, int] = {} + character_count: int = 0 + + for i in range(0x40, 0xFF): + chunk: str = p.decode(bytes([i])) + + if chunk: + character_range: Optional[str] = unicode_range(chunk) + + if character_range is None: + continue + + if is_unicode_range_secondary(character_range) is False: + if character_range not in seen_ranges: + seen_ranges[character_range] = 0 + seen_ranges[character_range] += 1 + character_count += 1 + + return sorted( + [ + character_range + for character_range in seen_ranges + if seen_ranges[character_range] / character_count >= 0.15 + ] + ) + + +def unicode_range_languages(primary_range: str) -> List[str]: + """ + Return inferred languages used with a unicode range. + """ + languages: List[str] = [] + + for language, characters in FREQUENCIES.items(): + for character in characters: + if unicode_range(character) == primary_range: + languages.append(language) + break + + return languages + + +@lru_cache() +def encoding_languages(iana_name: str) -> List[str]: + """ + Single-byte encoding language association. Some code page are heavily linked to particular language(s). + This function does the correspondence. + """ + unicode_ranges: List[str] = encoding_unicode_range(iana_name) + primary_range: Optional[str] = None + + for specified_range in unicode_ranges: + if "Latin" not in specified_range: + primary_range = specified_range + break + + if primary_range is None: + return ["Latin Based"] + + return unicode_range_languages(primary_range) + + +@lru_cache() +def mb_encoding_languages(iana_name: str) -> List[str]: + """ + Multi-byte encoding language association. Some code page are heavily linked to particular language(s). + This function does the correspondence. + """ + if ( + iana_name.startswith("shift_") + or iana_name.startswith("iso2022_jp") + or iana_name.startswith("euc_j") + or iana_name == "cp932" + ): + return ["Japanese"] + if iana_name.startswith("gb") or iana_name in ZH_NAMES: + return ["Chinese"] + if iana_name.startswith("iso2022_kr") or iana_name in KO_NAMES: + return ["Korean"] + + return [] + + +@lru_cache(maxsize=LANGUAGE_SUPPORTED_COUNT) +def get_target_features(language: str) -> Tuple[bool, bool]: + """ + Determine main aspects from a supported language if it contains accents and if is pure Latin. + """ + target_have_accents: bool = False + target_pure_latin: bool = True + + for character in FREQUENCIES[language]: + if not target_have_accents and is_accentuated(character): + target_have_accents = True + if target_pure_latin and is_latin(character) is False: + target_pure_latin = False + + return target_have_accents, target_pure_latin + + +def alphabet_languages( + characters: List[str], ignore_non_latin: bool = False +) -> List[str]: + """ + Return associated languages associated to given characters. + """ + languages: List[Tuple[str, float]] = [] + + source_have_accents = any(is_accentuated(character) for character in characters) + + for language, language_characters in FREQUENCIES.items(): + target_have_accents, target_pure_latin = get_target_features(language) + + if ignore_non_latin and target_pure_latin is False: + continue + + if target_have_accents is False and source_have_accents: + continue + + character_count: int = len(language_characters) + + character_match_count: int = len( + [c for c in language_characters if c in characters] + ) + + ratio: float = character_match_count / character_count + + if ratio >= 0.2: + languages.append((language, ratio)) + + languages = sorted(languages, key=lambda x: x[1], reverse=True) + + return [compatible_language[0] for compatible_language in languages] + + +def characters_popularity_compare( + language: str, ordered_characters: List[str] +) -> float: + """ + Determine if a ordered characters list (by occurrence from most appearance to rarest) match a particular language. + The result is a ratio between 0. (absolutely no correspondence) and 1. (near perfect fit). + Beware that is function is not strict on the match in order to ease the detection. (Meaning close match is 1.) + """ + if language not in FREQUENCIES: + raise ValueError("{} not available".format(language)) + + character_approved_count: int = 0 + FREQUENCIES_language_set = set(FREQUENCIES[language]) + + ordered_characters_count: int = len(ordered_characters) + target_language_characters_count: int = len(FREQUENCIES[language]) + + large_alphabet: bool = target_language_characters_count > 26 + + for character, character_rank in zip( + ordered_characters, range(0, ordered_characters_count) + ): + if character not in FREQUENCIES_language_set: + continue + + character_rank_in_language: int = FREQUENCIES[language].index(character) + expected_projection_ratio: float = ( + target_language_characters_count / ordered_characters_count + ) + character_rank_projection: int = int(character_rank * expected_projection_ratio) + + if ( + large_alphabet is False + and abs(character_rank_projection - character_rank_in_language) > 4 + ): + continue + + if ( + large_alphabet is True + and abs(character_rank_projection - character_rank_in_language) + < target_language_characters_count / 3 + ): + character_approved_count += 1 + continue + + characters_before_source: List[str] = FREQUENCIES[language][ + 0:character_rank_in_language + ] + characters_after_source: List[str] = FREQUENCIES[language][ + character_rank_in_language: + ] + characters_before: List[str] = ordered_characters[0:character_rank] + characters_after: List[str] = ordered_characters[character_rank:] + + before_match_count: int = len( + set(characters_before) & set(characters_before_source) + ) + + after_match_count: int = len( + set(characters_after) & set(characters_after_source) + ) + + if len(characters_before_source) == 0 and before_match_count <= 4: + character_approved_count += 1 + continue + + if len(characters_after_source) == 0 and after_match_count <= 4: + character_approved_count += 1 + continue + + if ( + before_match_count / len(characters_before_source) >= 0.4 + or after_match_count / len(characters_after_source) >= 0.4 + ): + character_approved_count += 1 + continue + + return character_approved_count / len(ordered_characters) + + +def alpha_unicode_split(decoded_sequence: str) -> List[str]: + """ + Given a decoded text sequence, return a list of str. Unicode range / alphabet separation. + Ex. a text containing English/Latin with a bit a Hebrew will return two items in the resulting list; + One containing the latin letters and the other hebrew. + """ + layers: Dict[str, str] = {} + + for character in decoded_sequence: + if character.isalpha() is False: + continue + + character_range: Optional[str] = unicode_range(character) + + if character_range is None: + continue + + layer_target_range: Optional[str] = None + + for discovered_range in layers: + if ( + is_suspiciously_successive_range(discovered_range, character_range) + is False + ): + layer_target_range = discovered_range + break + + if layer_target_range is None: + layer_target_range = character_range + + if layer_target_range not in layers: + layers[layer_target_range] = character.lower() + continue + + layers[layer_target_range] += character.lower() + + return list(layers.values()) + + +def merge_coherence_ratios(results: List[CoherenceMatches]) -> CoherenceMatches: + """ + This function merge results previously given by the function coherence_ratio. + The return type is the same as coherence_ratio. + """ + per_language_ratios: Dict[str, List[float]] = {} + for result in results: + for sub_result in result: + language, ratio = sub_result + if language not in per_language_ratios: + per_language_ratios[language] = [ratio] + continue + per_language_ratios[language].append(ratio) + + merge = [ + ( + language, + round( + sum(per_language_ratios[language]) / len(per_language_ratios[language]), + 4, + ), + ) + for language in per_language_ratios + ] + + return sorted(merge, key=lambda x: x[1], reverse=True) + + +def filter_alt_coherence_matches(results: CoherenceMatches) -> CoherenceMatches: + """ + We shall NOT return "English—" in CoherenceMatches because it is an alternative + of "English". This function only keeps the best match and remove the em-dash in it. + """ + index_results: Dict[str, List[float]] = dict() + + for result in results: + language, ratio = result + no_em_name: str = language.replace("—", "") + + if no_em_name not in index_results: + index_results[no_em_name] = [] + + index_results[no_em_name].append(ratio) + + if any(len(index_results[e]) > 1 for e in index_results): + filtered_results: CoherenceMatches = [] + + for language in index_results: + filtered_results.append((language, max(index_results[language]))) + + return filtered_results + + return results + + +@lru_cache(maxsize=2048) +def coherence_ratio( + decoded_sequence: str, threshold: float = 0.1, lg_inclusion: Optional[str] = None +) -> CoherenceMatches: + """ + Detect ANY language that can be identified in given sequence. The sequence will be analysed by layers. + A layer = Character extraction by alphabets/ranges. + """ + + results: List[Tuple[str, float]] = [] + ignore_non_latin: bool = False + + sufficient_match_count: int = 0 + + lg_inclusion_list = lg_inclusion.split(",") if lg_inclusion is not None else [] + if "Latin Based" in lg_inclusion_list: + ignore_non_latin = True + lg_inclusion_list.remove("Latin Based") + + for layer in alpha_unicode_split(decoded_sequence): + sequence_frequencies: TypeCounter[str] = Counter(layer) + most_common = sequence_frequencies.most_common() + + character_count: int = sum(o for c, o in most_common) + + if character_count <= TOO_SMALL_SEQUENCE: + continue + + popular_character_ordered: List[str] = [c for c, o in most_common] + + for language in lg_inclusion_list or alphabet_languages( + popular_character_ordered, ignore_non_latin + ): + ratio: float = characters_popularity_compare( + language, popular_character_ordered + ) + + if ratio < threshold: + continue + elif ratio >= 0.8: + sufficient_match_count += 1 + + results.append((language, round(ratio, 4))) + + if sufficient_match_count >= 3: + break + + return sorted( + filter_alt_coherence_matches(results), key=lambda x: x[1], reverse=True + ) diff --git a/env/lib/python3.12/site-packages/charset_normalizer/cli/__init__.py b/env/lib/python3.12/site-packages/charset_normalizer/cli/__init__.py new file mode 100644 index 0000000..d95fedf --- /dev/null +++ b/env/lib/python3.12/site-packages/charset_normalizer/cli/__init__.py @@ -0,0 +1,6 @@ +from .__main__ import cli_detect, query_yes_no + +__all__ = ( + "cli_detect", + "query_yes_no", +) diff --git a/env/lib/python3.12/site-packages/charset_normalizer/cli/__main__.py b/env/lib/python3.12/site-packages/charset_normalizer/cli/__main__.py new file mode 100644 index 0000000..e7edd0f --- /dev/null +++ b/env/lib/python3.12/site-packages/charset_normalizer/cli/__main__.py @@ -0,0 +1,320 @@ +import argparse +import sys +from json import dumps +from os.path import abspath, basename, dirname, join, realpath +from platform import python_version +from typing import List, Optional +from unicodedata import unidata_version + +import charset_normalizer.md as md_module +from charset_normalizer import from_fp +from charset_normalizer.models import CliDetectionResult +from charset_normalizer.version import __version__ + + +def query_yes_no(question: str, default: str = "yes") -> bool: + """Ask a yes/no question via input() and return their answer. + + "question" is a string that is presented to the user. + "default" is the presumed answer if the user just hits . + It must be "yes" (the default), "no" or None (meaning + an answer is required of the user). + + The "answer" return value is True for "yes" or False for "no". + + Credit goes to (c) https://stackoverflow.com/questions/3041986/apt-command-line-interface-like-yes-no-input + """ + valid = {"yes": True, "y": True, "ye": True, "no": False, "n": False} + if default is None: + prompt = " [y/n] " + elif default == "yes": + prompt = " [Y/n] " + elif default == "no": + prompt = " [y/N] " + else: + raise ValueError("invalid default answer: '%s'" % default) + + while True: + sys.stdout.write(question + prompt) + choice = input().lower() + if default is not None and choice == "": + return valid[default] + elif choice in valid: + return valid[choice] + else: + sys.stdout.write("Please respond with 'yes' or 'no' " "(or 'y' or 'n').\n") + + +def cli_detect(argv: Optional[List[str]] = None) -> int: + """ + CLI assistant using ARGV and ArgumentParser + :param argv: + :return: 0 if everything is fine, anything else equal trouble + """ + parser = argparse.ArgumentParser( + description="The Real First Universal Charset Detector. " + "Discover originating encoding used on text file. " + "Normalize text to unicode." + ) + + parser.add_argument( + "files", type=argparse.FileType("rb"), nargs="+", help="File(s) to be analysed" + ) + parser.add_argument( + "-v", + "--verbose", + action="store_true", + default=False, + dest="verbose", + help="Display complementary information about file if any. " + "Stdout will contain logs about the detection process.", + ) + parser.add_argument( + "-a", + "--with-alternative", + action="store_true", + default=False, + dest="alternatives", + help="Output complementary possibilities if any. Top-level JSON WILL be a list.", + ) + parser.add_argument( + "-n", + "--normalize", + action="store_true", + default=False, + dest="normalize", + help="Permit to normalize input file. If not set, program does not write anything.", + ) + parser.add_argument( + "-m", + "--minimal", + action="store_true", + default=False, + dest="minimal", + help="Only output the charset detected to STDOUT. Disabling JSON output.", + ) + parser.add_argument( + "-r", + "--replace", + action="store_true", + default=False, + dest="replace", + help="Replace file when trying to normalize it instead of creating a new one.", + ) + parser.add_argument( + "-f", + "--force", + action="store_true", + default=False, + dest="force", + help="Replace file without asking if you are sure, use this flag with caution.", + ) + parser.add_argument( + "-i", + "--no-preemptive", + action="store_true", + default=False, + dest="no_preemptive", + help="Disable looking at a charset declaration to hint the detector.", + ) + parser.add_argument( + "-t", + "--threshold", + action="store", + default=0.2, + type=float, + dest="threshold", + help="Define a custom maximum amount of chaos allowed in decoded content. 0. <= chaos <= 1.", + ) + parser.add_argument( + "--version", + action="version", + version="Charset-Normalizer {} - Python {} - Unicode {} - SpeedUp {}".format( + __version__, + python_version(), + unidata_version, + "OFF" if md_module.__file__.lower().endswith(".py") else "ON", + ), + help="Show version information and exit.", + ) + + args = parser.parse_args(argv) + + if args.replace is True and args.normalize is False: + if args.files: + for my_file in args.files: + my_file.close() + print("Use --replace in addition of --normalize only.", file=sys.stderr) + return 1 + + if args.force is True and args.replace is False: + if args.files: + for my_file in args.files: + my_file.close() + print("Use --force in addition of --replace only.", file=sys.stderr) + return 1 + + if args.threshold < 0.0 or args.threshold > 1.0: + if args.files: + for my_file in args.files: + my_file.close() + print("--threshold VALUE should be between 0. AND 1.", file=sys.stderr) + return 1 + + x_ = [] + + for my_file in args.files: + matches = from_fp( + my_file, + threshold=args.threshold, + explain=args.verbose, + preemptive_behaviour=args.no_preemptive is False, + ) + + best_guess = matches.best() + + if best_guess is None: + print( + 'Unable to identify originating encoding for "{}". {}'.format( + my_file.name, + ( + "Maybe try increasing maximum amount of chaos." + if args.threshold < 1.0 + else "" + ), + ), + file=sys.stderr, + ) + x_.append( + CliDetectionResult( + abspath(my_file.name), + None, + [], + [], + "Unknown", + [], + False, + 1.0, + 0.0, + None, + True, + ) + ) + else: + x_.append( + CliDetectionResult( + abspath(my_file.name), + best_guess.encoding, + best_guess.encoding_aliases, + [ + cp + for cp in best_guess.could_be_from_charset + if cp != best_guess.encoding + ], + best_guess.language, + best_guess.alphabets, + best_guess.bom, + best_guess.percent_chaos, + best_guess.percent_coherence, + None, + True, + ) + ) + + if len(matches) > 1 and args.alternatives: + for el in matches: + if el != best_guess: + x_.append( + CliDetectionResult( + abspath(my_file.name), + el.encoding, + el.encoding_aliases, + [ + cp + for cp in el.could_be_from_charset + if cp != el.encoding + ], + el.language, + el.alphabets, + el.bom, + el.percent_chaos, + el.percent_coherence, + None, + False, + ) + ) + + if args.normalize is True: + if best_guess.encoding.startswith("utf") is True: + print( + '"{}" file does not need to be normalized, as it already came from unicode.'.format( + my_file.name + ), + file=sys.stderr, + ) + if my_file.closed is False: + my_file.close() + continue + + dir_path = dirname(realpath(my_file.name)) + file_name = basename(realpath(my_file.name)) + + o_: List[str] = file_name.split(".") + + if args.replace is False: + o_.insert(-1, best_guess.encoding) + if my_file.closed is False: + my_file.close() + elif ( + args.force is False + and query_yes_no( + 'Are you sure to normalize "{}" by replacing it ?'.format( + my_file.name + ), + "no", + ) + is False + ): + if my_file.closed is False: + my_file.close() + continue + + try: + x_[0].unicode_path = join(dir_path, ".".join(o_)) + + with open(x_[0].unicode_path, "wb") as fp: + fp.write(best_guess.output()) + except IOError as e: + print(str(e), file=sys.stderr) + if my_file.closed is False: + my_file.close() + return 2 + + if my_file.closed is False: + my_file.close() + + if args.minimal is False: + print( + dumps( + [el.__dict__ for el in x_] if len(x_) > 1 else x_[0].__dict__, + ensure_ascii=True, + indent=4, + ) + ) + else: + for my_file in args.files: + print( + ", ".join( + [ + el.encoding or "undefined" + for el in x_ + if el.path == abspath(my_file.name) + ] + ) + ) + + return 0 + + +if __name__ == "__main__": + cli_detect() diff --git a/env/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc b/env/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ef5a8b41969ed5f9758a7ba150f03b829ba544ed GIT binary patch literal 273 zcmXv}J5Izf5Vf618!fD8xk3tJ0WIPN&?2Q7nRt{~_!Dd|Qs}q?5@+BFT!9;;p`fB$ zX}hhMNbrg`@6C)fZ$3AhH6why-t?O4_hSAb{>1*2#2eF0bITlWxf8A6d zkREfwPNIL3*4)c+%0uv%&H05)Cga(tx(C%`lHH(U!c2FfQ`S6VloUh)7;iE_Gfs!< g$_2f(cpaB#m$>PKXjgE~zgV*?izD%}iWT*K0cE61sQ>@~ literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__main__.cpython-312.pyc b/env/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__main__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3ca564a11869b6650880a8e0fbac4b2940beb300 GIT binary patch literal 11017 zcmcgSTWlLwcEk7ZDM}7-m{~b%wCP9w7~9#!W(&0E z-rY!nu_K9dALpKX-uLia{kzj?BjEYxpBx>((M}NmjXK(6DKsAZ7c}MxhG29Y zF`~Y8BRc5oIeo$~V$h*617}Q_MobCwh&f>yu_VY5GGQID;yEK{OV~&3xNYJb3FnA2 z;Tmz_zL~2?xJTT$t>Y>aRU;nUws78rZ^Vb&Bv+lN8L7c-E9XxHMgq{TWNd6LV~0Nn zTQ_EAoPTN>sb{Jf7wcl3Y;6FjMt?BdFlJ;bV78HMV%(F!r%37vw(&-RK^-xzo7M$A zU!wl8piVI{sYFr=niLB?DkW)oLLo8Q|~1UL97RjzK?q_%Xa~ zn$c%;7Y&SY#=tjbbc_j$#K4%LUk!arp-)2JCBu64VXPTl8t~pIjQmh%CFJ6saia!T zddD>rDh&}CB4bEHU&Ep!WUDrK&SA?L0z6;DAkR~abnr5XAUZ6DbQ|Dqd72}gBxjjhHJVU8UpyUZQ zCc=O;#fo8@je@5|Thl_tB)}xeVvHXLNLoe%Ns$HHl39k51+<(>NoXlvSx_-vh^7#1 zDgmJC22^aUxPpqOB$=9s$r9Cb7|@BmDh`BaK&BFCc9f-BfR7fc9U&_q4{oDcc%g+7 zMCzEpvs8P6rFkF_Q-D^}d~rJo*!*59CISUQY3pEt(P2Q^qEgnP$>SW&rC7w~un6xl z*hHlO8vQgU6^3B{0**s~J0?@(0xKbTv`2%~ge)he?v4&grlXSrc-I&wOogLDqC*p` z)X~+sbNjPcm53or_b!we4hgP$85%}>5p@U~-iH&x!{J9P;Hrk=audeX+9UT(v6H0=->2a|8=mafFtQ_G5F#-Ih zS+OI^#X2I91Rdiek#KTaaeyww=?L(KpfdywYenLL8R$2X4&3waL!&^<4%sG429ed-_?&~N2z9;ALFVxKS-f=YN zoSxa#

(6o_p?&gZjczadq(W;HslO>!`oe@X{xaGxA5 z`QnJW4a7Z9l;UE%7z5Et^pf_aA7b~ALNaE?7ymSLuY z=`43@$qo&ZjNAb~+DRrOx5bZKrM2QH+C28eQOtSl(Qw4kLHF3hY}f2Y)H6GH9n+;* z4zu&-F0GAuse5cGbTh@18L|X@y#7fDW_OAZ&%j(`nK?Vm4Zs}r`MnZ1YAecS!7OfqJlrPKZB_UY`3d+>8^D&y}^7K4RARdJD1(xkKYOV<^ub zjCN`;r8kW3DD|`!1A4vLt9ikUDPxN7(&kEU&FW^%8S}*-th2i3%Xv9i?(WiBtyP{@ zrUz*XJo5l}=0VLyH!ib`G5)N!L+LH=)7tWLTB|%&T5MqUj}zkra|r(IOb@e<+0X30 zVOQ5`Fgjw^!0-PICU{>R540-ED5lpP%`J392_Xn9%6$2G`|Ns}=1EcVQQ z1zS0x&6eKcKW0o29d81!WQNR`5nqz-iuDhs5wfgC$g&zCH>i=aILl~+EUOW+tVYPP z8X@E5G(yJ9YsCJfbzk|ZkpRh;JICN;nAM3Nm$$F@sgjPg7SmVMDLPe#*Tsy(8;=

iKrch@&F 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/charset_normalizer/constant.py b/env/lib/python3.12/site-packages/charset_normalizer/constant.py new file mode 100644 index 0000000..f8f2a81 --- /dev/null +++ b/env/lib/python3.12/site-packages/charset_normalizer/constant.py @@ -0,0 +1,1997 @@ +# -*- coding: utf-8 -*- +from codecs import BOM_UTF8, BOM_UTF16_BE, BOM_UTF16_LE, BOM_UTF32_BE, BOM_UTF32_LE +from encodings.aliases import aliases +from re import IGNORECASE, compile as re_compile +from typing import Dict, List, Set, Union + +# Contain for each eligible encoding a list of/item bytes SIG/BOM +ENCODING_MARKS: Dict[str, Union[bytes, List[bytes]]] = { + "utf_8": BOM_UTF8, + "utf_7": [ + b"\x2b\x2f\x76\x38", + b"\x2b\x2f\x76\x39", + b"\x2b\x2f\x76\x2b", + b"\x2b\x2f\x76\x2f", + b"\x2b\x2f\x76\x38\x2d", + ], + "gb18030": b"\x84\x31\x95\x33", + "utf_32": [BOM_UTF32_BE, BOM_UTF32_LE], + "utf_16": [BOM_UTF16_BE, BOM_UTF16_LE], +} + +TOO_SMALL_SEQUENCE: int = 32 +TOO_BIG_SEQUENCE: int = int(10e6) + +UTF8_MAXIMAL_ALLOCATION: int = 1_112_064 + +# Up-to-date Unicode ucd/15.0.0 +UNICODE_RANGES_COMBINED: Dict[str, range] = { + "Control character": range(32), + "Basic Latin": range(32, 128), + "Latin-1 Supplement": range(128, 256), + "Latin Extended-A": range(256, 384), + "Latin Extended-B": range(384, 592), + "IPA Extensions": range(592, 688), + "Spacing Modifier Letters": range(688, 768), + "Combining Diacritical Marks": range(768, 880), + "Greek and Coptic": range(880, 1024), + "Cyrillic": range(1024, 1280), + "Cyrillic Supplement": range(1280, 1328), + "Armenian": range(1328, 1424), + "Hebrew": range(1424, 1536), + "Arabic": range(1536, 1792), + "Syriac": range(1792, 1872), + "Arabic Supplement": range(1872, 1920), + "Thaana": range(1920, 1984), + "NKo": range(1984, 2048), + "Samaritan": range(2048, 2112), + "Mandaic": range(2112, 2144), + "Syriac Supplement": range(2144, 2160), + "Arabic Extended-B": range(2160, 2208), + "Arabic Extended-A": range(2208, 2304), + "Devanagari": range(2304, 2432), + "Bengali": range(2432, 2560), + "Gurmukhi": range(2560, 2688), + "Gujarati": range(2688, 2816), + "Oriya": range(2816, 2944), + "Tamil": range(2944, 3072), + "Telugu": range(3072, 3200), + "Kannada": range(3200, 3328), + "Malayalam": range(3328, 3456), + "Sinhala": range(3456, 3584), + "Thai": range(3584, 3712), + "Lao": range(3712, 3840), + "Tibetan": range(3840, 4096), + "Myanmar": range(4096, 4256), + "Georgian": range(4256, 4352), + "Hangul Jamo": range(4352, 4608), + "Ethiopic": range(4608, 4992), + "Ethiopic Supplement": range(4992, 5024), + "Cherokee": range(5024, 5120), + "Unified Canadian Aboriginal Syllabics": range(5120, 5760), + "Ogham": range(5760, 5792), + "Runic": range(5792, 5888), + "Tagalog": range(5888, 5920), + "Hanunoo": range(5920, 5952), + "Buhid": range(5952, 5984), + "Tagbanwa": range(5984, 6016), + "Khmer": range(6016, 6144), + "Mongolian": range(6144, 6320), + "Unified Canadian Aboriginal Syllabics Extended": range(6320, 6400), + "Limbu": range(6400, 6480), + "Tai Le": range(6480, 6528), + "New Tai Lue": range(6528, 6624), + "Khmer Symbols": range(6624, 6656), + "Buginese": range(6656, 6688), + "Tai Tham": range(6688, 6832), + "Combining Diacritical Marks Extended": range(6832, 6912), + "Balinese": range(6912, 7040), + "Sundanese": range(7040, 7104), + "Batak": range(7104, 7168), + "Lepcha": range(7168, 7248), + "Ol Chiki": range(7248, 7296), + "Cyrillic Extended-C": range(7296, 7312), + "Georgian Extended": range(7312, 7360), + "Sundanese Supplement": range(7360, 7376), + "Vedic Extensions": range(7376, 7424), + "Phonetic Extensions": range(7424, 7552), + "Phonetic Extensions Supplement": range(7552, 7616), + "Combining Diacritical Marks Supplement": range(7616, 7680), + "Latin Extended Additional": range(7680, 7936), + "Greek Extended": range(7936, 8192), + "General Punctuation": range(8192, 8304), + "Superscripts and Subscripts": range(8304, 8352), + "Currency Symbols": range(8352, 8400), + "Combining Diacritical Marks for Symbols": range(8400, 8448), + "Letterlike Symbols": range(8448, 8528), + "Number Forms": range(8528, 8592), + "Arrows": range(8592, 8704), + "Mathematical Operators": range(8704, 8960), + "Miscellaneous Technical": range(8960, 9216), + "Control Pictures": range(9216, 9280), + "Optical Character Recognition": range(9280, 9312), + "Enclosed Alphanumerics": range(9312, 9472), + "Box Drawing": range(9472, 9600), + "Block Elements": range(9600, 9632), + "Geometric Shapes": range(9632, 9728), + "Miscellaneous Symbols": range(9728, 9984), + "Dingbats": range(9984, 10176), + "Miscellaneous Mathematical Symbols-A": range(10176, 10224), + "Supplemental Arrows-A": range(10224, 10240), + "Braille Patterns": range(10240, 10496), + "Supplemental Arrows-B": range(10496, 10624), + "Miscellaneous Mathematical Symbols-B": range(10624, 10752), + "Supplemental Mathematical Operators": range(10752, 11008), + "Miscellaneous Symbols and Arrows": range(11008, 11264), + "Glagolitic": range(11264, 11360), + "Latin Extended-C": range(11360, 11392), + "Coptic": range(11392, 11520), + "Georgian Supplement": range(11520, 11568), + "Tifinagh": range(11568, 11648), + "Ethiopic Extended": range(11648, 11744), + "Cyrillic Extended-A": range(11744, 11776), + "Supplemental Punctuation": range(11776, 11904), + "CJK Radicals Supplement": range(11904, 12032), + "Kangxi Radicals": range(12032, 12256), + "Ideographic Description Characters": range(12272, 12288), + "CJK Symbols and Punctuation": range(12288, 12352), + "Hiragana": range(12352, 12448), + "Katakana": range(12448, 12544), + "Bopomofo": range(12544, 12592), + "Hangul Compatibility Jamo": range(12592, 12688), + "Kanbun": range(12688, 12704), + "Bopomofo Extended": range(12704, 12736), + "CJK Strokes": range(12736, 12784), + "Katakana Phonetic Extensions": range(12784, 12800), + "Enclosed CJK Letters and Months": range(12800, 13056), + "CJK Compatibility": range(13056, 13312), + "CJK Unified Ideographs Extension A": range(13312, 19904), + "Yijing Hexagram Symbols": range(19904, 19968), + "CJK Unified Ideographs": range(19968, 40960), + "Yi Syllables": range(40960, 42128), + "Yi Radicals": range(42128, 42192), + "Lisu": range(42192, 42240), + "Vai": range(42240, 42560), + "Cyrillic Extended-B": range(42560, 42656), + "Bamum": range(42656, 42752), + "Modifier Tone Letters": range(42752, 42784), + "Latin Extended-D": range(42784, 43008), + "Syloti Nagri": range(43008, 43056), + "Common Indic Number Forms": range(43056, 43072), + "Phags-pa": range(43072, 43136), + "Saurashtra": range(43136, 43232), + "Devanagari Extended": range(43232, 43264), + "Kayah Li": range(43264, 43312), + "Rejang": range(43312, 43360), + "Hangul Jamo Extended-A": range(43360, 43392), + "Javanese": range(43392, 43488), + "Myanmar Extended-B": range(43488, 43520), + "Cham": range(43520, 43616), + "Myanmar Extended-A": range(43616, 43648), + "Tai Viet": range(43648, 43744), + "Meetei Mayek Extensions": range(43744, 43776), + "Ethiopic Extended-A": range(43776, 43824), + "Latin Extended-E": range(43824, 43888), + "Cherokee Supplement": range(43888, 43968), + "Meetei Mayek": range(43968, 44032), + "Hangul Syllables": range(44032, 55216), + "Hangul Jamo Extended-B": range(55216, 55296), + "High Surrogates": range(55296, 56192), + "High Private Use Surrogates": range(56192, 56320), + "Low Surrogates": range(56320, 57344), + "Private Use Area": range(57344, 63744), + "CJK Compatibility Ideographs": range(63744, 64256), + "Alphabetic Presentation Forms": range(64256, 64336), + "Arabic Presentation Forms-A": range(64336, 65024), + "Variation Selectors": range(65024, 65040), + "Vertical Forms": range(65040, 65056), + "Combining Half Marks": range(65056, 65072), + "CJK Compatibility Forms": range(65072, 65104), + "Small Form Variants": range(65104, 65136), + "Arabic Presentation Forms-B": range(65136, 65280), + "Halfwidth and Fullwidth Forms": range(65280, 65520), + "Specials": range(65520, 65536), + "Linear B Syllabary": range(65536, 65664), + "Linear B Ideograms": range(65664, 65792), + "Aegean Numbers": range(65792, 65856), + "Ancient Greek Numbers": range(65856, 65936), + "Ancient Symbols": range(65936, 66000), + "Phaistos Disc": range(66000, 66048), + "Lycian": range(66176, 66208), + "Carian": range(66208, 66272), + "Coptic Epact Numbers": range(66272, 66304), + "Old Italic": range(66304, 66352), + "Gothic": range(66352, 66384), + "Old Permic": range(66384, 66432), + "Ugaritic": range(66432, 66464), + "Old Persian": range(66464, 66528), + "Deseret": range(66560, 66640), + "Shavian": range(66640, 66688), + "Osmanya": range(66688, 66736), + "Osage": range(66736, 66816), + "Elbasan": range(66816, 66864), + "Caucasian Albanian": range(66864, 66928), + "Vithkuqi": range(66928, 67008), + "Linear A": range(67072, 67456), + "Latin Extended-F": range(67456, 67520), + "Cypriot Syllabary": range(67584, 67648), + "Imperial Aramaic": range(67648, 67680), + "Palmyrene": range(67680, 67712), + "Nabataean": range(67712, 67760), + "Hatran": range(67808, 67840), + "Phoenician": range(67840, 67872), + "Lydian": range(67872, 67904), + "Meroitic Hieroglyphs": range(67968, 68000), + "Meroitic Cursive": range(68000, 68096), + "Kharoshthi": range(68096, 68192), + "Old South Arabian": range(68192, 68224), + "Old North Arabian": range(68224, 68256), + "Manichaean": range(68288, 68352), + "Avestan": range(68352, 68416), + "Inscriptional Parthian": range(68416, 68448), + "Inscriptional Pahlavi": range(68448, 68480), + "Psalter Pahlavi": range(68480, 68528), + "Old Turkic": range(68608, 68688), + "Old Hungarian": range(68736, 68864), + "Hanifi Rohingya": range(68864, 68928), + "Rumi Numeral Symbols": range(69216, 69248), + "Yezidi": range(69248, 69312), + "Arabic Extended-C": range(69312, 69376), + "Old Sogdian": range(69376, 69424), + "Sogdian": range(69424, 69488), + "Old Uyghur": range(69488, 69552), + "Chorasmian": range(69552, 69600), + "Elymaic": range(69600, 69632), + "Brahmi": range(69632, 69760), + "Kaithi": range(69760, 69840), + "Sora Sompeng": range(69840, 69888), + "Chakma": range(69888, 69968), + "Mahajani": range(69968, 70016), + "Sharada": range(70016, 70112), + "Sinhala Archaic Numbers": range(70112, 70144), + "Khojki": range(70144, 70224), + "Multani": range(70272, 70320), + "Khudawadi": range(70320, 70400), + "Grantha": range(70400, 70528), + "Newa": range(70656, 70784), + "Tirhuta": range(70784, 70880), + "Siddham": range(71040, 71168), + "Modi": range(71168, 71264), + "Mongolian Supplement": range(71264, 71296), + "Takri": range(71296, 71376), + "Ahom": range(71424, 71504), + "Dogra": range(71680, 71760), + "Warang Citi": range(71840, 71936), + "Dives Akuru": range(71936, 72032), + "Nandinagari": range(72096, 72192), + "Zanabazar Square": range(72192, 72272), + "Soyombo": range(72272, 72368), + "Unified Canadian Aboriginal Syllabics Extended-A": range(72368, 72384), + "Pau Cin Hau": range(72384, 72448), + "Devanagari Extended-A": range(72448, 72544), + "Bhaiksuki": range(72704, 72816), + "Marchen": range(72816, 72896), + "Masaram Gondi": range(72960, 73056), + "Gunjala Gondi": range(73056, 73136), + "Makasar": range(73440, 73472), + "Kawi": range(73472, 73568), + "Lisu Supplement": range(73648, 73664), + "Tamil Supplement": range(73664, 73728), + "Cuneiform": range(73728, 74752), + "Cuneiform Numbers and Punctuation": range(74752, 74880), + "Early Dynastic Cuneiform": range(74880, 75088), + "Cypro-Minoan": range(77712, 77824), + "Egyptian Hieroglyphs": range(77824, 78896), + "Egyptian Hieroglyph Format Controls": range(78896, 78944), + "Anatolian Hieroglyphs": range(82944, 83584), + "Bamum Supplement": range(92160, 92736), + "Mro": range(92736, 92784), + "Tangsa": range(92784, 92880), + "Bassa Vah": range(92880, 92928), + "Pahawh Hmong": range(92928, 93072), + "Medefaidrin": range(93760, 93856), + "Miao": range(93952, 94112), + "Ideographic Symbols and Punctuation": range(94176, 94208), + "Tangut": range(94208, 100352), + "Tangut Components": range(100352, 101120), + "Khitan Small Script": range(101120, 101632), + "Tangut Supplement": range(101632, 101760), + "Kana Extended-B": range(110576, 110592), + "Kana Supplement": range(110592, 110848), + "Kana Extended-A": range(110848, 110896), + "Small Kana Extension": range(110896, 110960), + "Nushu": range(110960, 111360), + "Duployan": range(113664, 113824), + "Shorthand Format Controls": range(113824, 113840), + "Znamenny Musical Notation": range(118528, 118736), + "Byzantine Musical Symbols": range(118784, 119040), + "Musical Symbols": range(119040, 119296), + "Ancient Greek Musical Notation": range(119296, 119376), + "Kaktovik Numerals": range(119488, 119520), + "Mayan Numerals": range(119520, 119552), + "Tai Xuan Jing Symbols": range(119552, 119648), + "Counting Rod Numerals": range(119648, 119680), + "Mathematical Alphanumeric Symbols": range(119808, 120832), + "Sutton SignWriting": range(120832, 121520), + "Latin Extended-G": range(122624, 122880), + "Glagolitic Supplement": range(122880, 122928), + "Cyrillic Extended-D": range(122928, 123024), + "Nyiakeng Puachue Hmong": range(123136, 123216), + "Toto": range(123536, 123584), + "Wancho": range(123584, 123648), + "Nag Mundari": range(124112, 124160), + "Ethiopic Extended-B": range(124896, 124928), + "Mende Kikakui": range(124928, 125152), + "Adlam": range(125184, 125280), + "Indic Siyaq Numbers": range(126064, 126144), + "Ottoman Siyaq Numbers": range(126208, 126288), + "Arabic Mathematical Alphabetic Symbols": range(126464, 126720), + "Mahjong Tiles": range(126976, 127024), + "Domino Tiles": range(127024, 127136), + "Playing Cards": range(127136, 127232), + "Enclosed Alphanumeric Supplement": range(127232, 127488), + "Enclosed Ideographic Supplement": range(127488, 127744), + "Miscellaneous Symbols and Pictographs": range(127744, 128512), + "Emoticons range(Emoji)": range(128512, 128592), + "Ornamental Dingbats": range(128592, 128640), + "Transport and Map Symbols": range(128640, 128768), + "Alchemical Symbols": range(128768, 128896), + "Geometric Shapes Extended": range(128896, 129024), + "Supplemental Arrows-C": range(129024, 129280), + "Supplemental Symbols and Pictographs": range(129280, 129536), + "Chess Symbols": range(129536, 129648), + "Symbols and Pictographs Extended-A": range(129648, 129792), + "Symbols for Legacy Computing": range(129792, 130048), + "CJK Unified Ideographs Extension B": range(131072, 173792), + "CJK Unified Ideographs Extension C": range(173824, 177984), + "CJK Unified Ideographs Extension D": range(177984, 178208), + "CJK Unified Ideographs Extension E": range(178208, 183984), + "CJK Unified Ideographs Extension F": range(183984, 191472), + "CJK Compatibility Ideographs Supplement": range(194560, 195104), + "CJK Unified Ideographs Extension G": range(196608, 201552), + "CJK Unified Ideographs Extension H": range(201552, 205744), + "Tags": range(917504, 917632), + "Variation Selectors Supplement": range(917760, 918000), + "Supplementary Private Use Area-A": range(983040, 1048576), + "Supplementary Private Use Area-B": range(1048576, 1114112), +} + + +UNICODE_SECONDARY_RANGE_KEYWORD: List[str] = [ + "Supplement", + "Extended", + "Extensions", + "Modifier", + "Marks", + "Punctuation", + "Symbols", + "Forms", + "Operators", + "Miscellaneous", + "Drawing", + "Block", + "Shapes", + "Supplemental", + "Tags", +] + +RE_POSSIBLE_ENCODING_INDICATION = re_compile( + r"(?:(?:encoding)|(?:charset)|(?:coding))(?:[\:= ]{1,10})(?:[\"\']?)([a-zA-Z0-9\-_]+)(?:[\"\']?)", + IGNORECASE, +) + +IANA_NO_ALIASES = [ + "cp720", + "cp737", + "cp856", + "cp874", + "cp875", + "cp1006", + "koi8_r", + "koi8_t", + "koi8_u", +] + +IANA_SUPPORTED: List[str] = sorted( + filter( + lambda x: x.endswith("_codec") is False + and x not in {"rot_13", "tactis", "mbcs"}, + list(set(aliases.values())) + IANA_NO_ALIASES, + ) +) + +IANA_SUPPORTED_COUNT: int = len(IANA_SUPPORTED) + +# pre-computed code page that are similar using the function cp_similarity. +IANA_SUPPORTED_SIMILAR: Dict[str, List[str]] = { + "cp037": ["cp1026", "cp1140", "cp273", "cp500"], + "cp1026": ["cp037", "cp1140", "cp273", "cp500"], + "cp1125": ["cp866"], + "cp1140": ["cp037", "cp1026", "cp273", "cp500"], + "cp1250": ["iso8859_2"], + "cp1251": ["kz1048", "ptcp154"], + "cp1252": ["iso8859_15", "iso8859_9", "latin_1"], + "cp1253": ["iso8859_7"], + "cp1254": ["iso8859_15", "iso8859_9", "latin_1"], + "cp1257": ["iso8859_13"], + "cp273": ["cp037", "cp1026", "cp1140", "cp500"], + "cp437": ["cp850", "cp858", "cp860", "cp861", "cp862", "cp863", "cp865"], + "cp500": ["cp037", "cp1026", "cp1140", "cp273"], + "cp850": ["cp437", "cp857", "cp858", "cp865"], + "cp857": ["cp850", "cp858", "cp865"], + "cp858": ["cp437", "cp850", "cp857", "cp865"], + "cp860": ["cp437", "cp861", "cp862", "cp863", "cp865"], + "cp861": ["cp437", "cp860", "cp862", "cp863", "cp865"], + "cp862": ["cp437", "cp860", "cp861", "cp863", "cp865"], + "cp863": ["cp437", "cp860", "cp861", "cp862", "cp865"], + "cp865": ["cp437", "cp850", "cp857", "cp858", "cp860", "cp861", "cp862", "cp863"], + "cp866": ["cp1125"], + "iso8859_10": ["iso8859_14", "iso8859_15", "iso8859_4", "iso8859_9", "latin_1"], + "iso8859_11": ["tis_620"], + "iso8859_13": ["cp1257"], + "iso8859_14": [ + "iso8859_10", + "iso8859_15", + "iso8859_16", + "iso8859_3", + "iso8859_9", + "latin_1", + ], + "iso8859_15": [ + "cp1252", + "cp1254", + "iso8859_10", + "iso8859_14", + "iso8859_16", + "iso8859_3", + "iso8859_9", + "latin_1", + ], + "iso8859_16": [ + "iso8859_14", + "iso8859_15", + "iso8859_2", + "iso8859_3", + "iso8859_9", + "latin_1", + ], + "iso8859_2": ["cp1250", "iso8859_16", "iso8859_4"], + "iso8859_3": ["iso8859_14", "iso8859_15", "iso8859_16", "iso8859_9", "latin_1"], + "iso8859_4": ["iso8859_10", "iso8859_2", "iso8859_9", "latin_1"], + "iso8859_7": ["cp1253"], + "iso8859_9": [ + "cp1252", + "cp1254", + "cp1258", + "iso8859_10", + "iso8859_14", + "iso8859_15", + "iso8859_16", + "iso8859_3", + "iso8859_4", + "latin_1", + ], + "kz1048": ["cp1251", "ptcp154"], + "latin_1": [ + "cp1252", + "cp1254", + "cp1258", + "iso8859_10", + "iso8859_14", + "iso8859_15", + "iso8859_16", + "iso8859_3", + "iso8859_4", + "iso8859_9", + ], + "mac_iceland": ["mac_roman", "mac_turkish"], + "mac_roman": ["mac_iceland", "mac_turkish"], + "mac_turkish": ["mac_iceland", "mac_roman"], + "ptcp154": ["cp1251", "kz1048"], + "tis_620": ["iso8859_11"], +} + + +CHARDET_CORRESPONDENCE: Dict[str, str] = { + "iso2022_kr": "ISO-2022-KR", + "iso2022_jp": "ISO-2022-JP", + "euc_kr": "EUC-KR", + "tis_620": "TIS-620", + "utf_32": "UTF-32", + "euc_jp": "EUC-JP", + "koi8_r": "KOI8-R", + "iso8859_1": "ISO-8859-1", + "iso8859_2": "ISO-8859-2", + "iso8859_5": "ISO-8859-5", + "iso8859_6": "ISO-8859-6", + "iso8859_7": "ISO-8859-7", + "iso8859_8": "ISO-8859-8", + "utf_16": "UTF-16", + "cp855": "IBM855", + "mac_cyrillic": "MacCyrillic", + "gb2312": "GB2312", + "gb18030": "GB18030", + "cp932": "CP932", + "cp866": "IBM866", + "utf_8": "utf-8", + "utf_8_sig": "UTF-8-SIG", + "shift_jis": "SHIFT_JIS", + "big5": "Big5", + "cp1250": "windows-1250", + "cp1251": "windows-1251", + "cp1252": "Windows-1252", + "cp1253": "windows-1253", + "cp1255": "windows-1255", + "cp1256": "windows-1256", + "cp1254": "Windows-1254", + "cp949": "CP949", +} + + +COMMON_SAFE_ASCII_CHARACTERS: Set[str] = { + "<", + ">", + "=", + ":", + "/", + "&", + ";", + "{", + "}", + "[", + "]", + ",", + "|", + '"', + "-", + "(", + ")", +} + + +KO_NAMES: Set[str] = {"johab", "cp949", "euc_kr"} +ZH_NAMES: Set[str] = {"big5", "cp950", "big5hkscs", "hz"} + +# Logging LEVEL below DEBUG +TRACE: int = 5 + + +# Language label that contain the em dash "—" +# character are to be considered alternative seq to origin +FREQUENCIES: Dict[str, List[str]] = { + "English": [ + "e", + "a", + "t", + "i", + "o", + "n", + "s", + "r", + "h", + "l", + "d", + "c", + "u", + "m", + "f", + "p", + "g", + "w", + "y", + "b", + "v", + "k", + "x", + "j", + "z", + "q", + ], + "English—": [ + "e", + "a", + "t", + "i", + "o", + "n", + "s", + "r", + "h", + "l", + "d", + "c", + "m", + "u", + "f", + "p", + "g", + "w", + "b", + "y", + "v", + "k", + "j", + "x", + "z", + "q", + ], + "German": [ + "e", + "n", + "i", + "r", + "s", + "t", + "a", + "d", + "h", + "u", + "l", + "g", + "o", + "c", + "m", + "b", + "f", + "k", + "w", + "z", + "p", + "v", + "ü", + "ä", + "ö", + "j", + ], + "French": [ + "e", + "a", + "s", + "n", + "i", + "t", + "r", + "l", + "u", + "o", + "d", + "c", + "p", + "m", + "é", + "v", + "g", + "f", + "b", + "h", + "q", + "à", + "x", + "è", + "y", + "j", + ], + "Dutch": [ + "e", + "n", + "a", + "i", + "r", + "t", + "o", + "d", + "s", + "l", + "g", + "h", + "v", + "m", + "u", + "k", + "c", + "p", + "b", + "w", + "j", + "z", + "f", + "y", + "x", + "ë", + ], + "Italian": [ + "e", + "i", + "a", + "o", + "n", + "l", + "t", + "r", + "s", + "c", + "d", + "u", + "p", + "m", + "g", + "v", + "f", + "b", + "z", + "h", + "q", + "è", + "à", + "k", + "y", + "ò", + ], + "Polish": [ + "a", + "i", + "o", + "e", + "n", + "r", + "z", + "w", + "s", + "c", + "t", + "k", + "y", + "d", + "p", + "m", + "u", + "l", + "j", + "ł", + "g", + "b", + "h", + "ą", + "ę", + "ó", + ], + "Spanish": [ + "e", + "a", + "o", + "n", + "s", + "r", + "i", + "l", + "d", + "t", + "c", + "u", + "m", + "p", + "b", + "g", + "v", + "f", + "y", + "ó", + "h", + "q", + "í", + "j", + "z", + "á", + ], + "Russian": [ + "о", + "а", + "е", + "и", + "н", + "с", + "т", + "р", + "в", + "л", + "к", + "м", + "д", + "п", + "у", + "г", + "я", + "ы", + "з", + "б", + "й", + "ь", + "ч", + "х", + "ж", + "ц", + ], + # Jap-Kanji + "Japanese": [ + "人", + "一", + "大", + "亅", + "丁", + "丨", + "竹", + "笑", + "口", + "日", + "今", + "二", + "彳", + "行", + "十", + "土", + "丶", + "寸", + "寺", + "時", + "乙", + "丿", + "乂", + "气", + "気", + "冂", + "巾", + "亠", + "市", + "目", + "儿", + "見", + "八", + "小", + "凵", + "県", + "月", + "彐", + "門", + "間", + "木", + "東", + "山", + "出", + "本", + "中", + "刀", + "分", + "耳", + "又", + "取", + "最", + "言", + "田", + "心", + "思", + "刂", + "前", + "京", + "尹", + "事", + "生", + "厶", + "云", + "会", + "未", + "来", + "白", + "冫", + "楽", + "灬", + "馬", + "尸", + "尺", + "駅", + "明", + "耂", + "者", + "了", + "阝", + "都", + "高", + "卜", + "占", + "厂", + "广", + "店", + "子", + "申", + "奄", + "亻", + "俺", + "上", + "方", + "冖", + "学", + "衣", + "艮", + "食", + "自", + ], + # Jap-Katakana + "Japanese—": [ + "ー", + "ン", + "ス", + "・", + "ル", + "ト", + "リ", + "イ", + "ア", + "ラ", + "ッ", + "ク", + "ド", + "シ", + "レ", + "ジ", + "タ", + "フ", + "ロ", + "カ", + "テ", + "マ", + "ィ", + "グ", + "バ", + "ム", + "プ", + "オ", + "コ", + "デ", + "ニ", + "ウ", + "メ", + "サ", + "ビ", + "ナ", + "ブ", + "ャ", + "エ", + "ュ", + "チ", + "キ", + "ズ", + "ダ", + "パ", + "ミ", + "ェ", + "ョ", + "ハ", + "セ", + "ベ", + "ガ", + "モ", + "ツ", + "ネ", + "ボ", + "ソ", + "ノ", + "ァ", + "ヴ", + "ワ", + "ポ", + "ペ", + "ピ", + "ケ", + "ゴ", + "ギ", + "ザ", + "ホ", + "ゲ", + "ォ", + "ヤ", + "ヒ", + "ユ", + "ヨ", + "ヘ", + "ゼ", + "ヌ", + "ゥ", + "ゾ", + "ヶ", + "ヂ", + "ヲ", + "ヅ", + "ヵ", + "ヱ", + "ヰ", + "ヮ", + "ヽ", + "゠", + "ヾ", + "ヷ", + "ヿ", + "ヸ", + "ヹ", + "ヺ", + ], + # Jap-Hiragana + "Japanese——": [ + "の", + "に", + "る", + "た", + "と", + "は", + "し", + "い", + "を", + "で", + "て", + "が", + "な", + "れ", + "か", + "ら", + "さ", + "っ", + "り", + "す", + "あ", + "も", + "こ", + "ま", + "う", + "く", + "よ", + "き", + "ん", + "め", + "お", + "け", + "そ", + "つ", + "だ", + "や", + "え", + "ど", + "わ", + "ち", + "み", + "せ", + "じ", + "ば", + "へ", + "び", + "ず", + "ろ", + "ほ", + "げ", + "む", + "べ", + "ひ", + "ょ", + "ゆ", + "ぶ", + "ご", + "ゃ", + "ね", + "ふ", + "ぐ", + "ぎ", + "ぼ", + "ゅ", + "づ", + "ざ", + "ぞ", + "ぬ", + "ぜ", + "ぱ", + "ぽ", + "ぷ", + "ぴ", + "ぃ", + "ぁ", + "ぇ", + "ぺ", + "ゞ", + "ぢ", + "ぉ", + "ぅ", + "ゐ", + "ゝ", + "ゑ", + "゛", + "゜", + "ゎ", + "ゔ", + "゚", + "ゟ", + "゙", + "ゕ", + "ゖ", + ], + "Portuguese": [ + "a", + "e", + "o", + "s", + "i", + "r", + "d", + "n", + "t", + "m", + "u", + "c", + "l", + "p", + "g", + "v", + "b", + "f", + "h", + "ã", + "q", + "é", + "ç", + "á", + "z", + "í", + ], + "Swedish": [ + "e", + "a", + "n", + "r", + "t", + "s", + "i", + "l", + "d", + "o", + "m", + "k", + "g", + "v", + "h", + "f", + "u", + "p", + "ä", + "c", + "b", + "ö", + "å", + "y", + "j", + "x", + ], + "Chinese": [ + "的", + "一", + "是", + "不", + "了", + "在", + "人", + "有", + "我", + "他", + "这", + "个", + "们", + "中", + "来", + "上", + "大", + "为", + "和", + "国", + "地", + "到", + "以", + "说", + "时", + "要", + "就", + "出", + "会", + "可", + "也", + "你", + "对", + "生", + "能", + "而", + "子", + "那", + "得", + "于", + "着", + "下", + "自", + "之", + "年", + "过", + "发", + "后", + "作", + "里", + "用", + "道", + "行", + "所", + "然", + "家", + "种", + "事", + "成", + "方", + "多", + "经", + "么", + "去", + "法", + "学", + "如", + "都", + "同", + "现", + "当", + "没", + "动", + "面", + "起", + "看", + "定", + "天", + "分", + "还", + "进", + "好", + "小", + "部", + "其", + "些", + "主", + "样", + "理", + "心", + "她", + "本", + "前", + "开", + "但", + "因", + "只", + "从", + "想", + "实", + ], + "Ukrainian": [ + "о", + "а", + "н", + "і", + "и", + "р", + "в", + "т", + "е", + "с", + "к", + "л", + "у", + "д", + "м", + "п", + "з", + "я", + "ь", + "б", + "г", + "й", + "ч", + "х", + "ц", + "ї", + ], + "Norwegian": [ + "e", + "r", + "n", + "t", + "a", + "s", + "i", + "o", + "l", + "d", + "g", + "k", + "m", + "v", + "f", + "p", + "u", + "b", + "h", + "å", + "y", + "j", + "ø", + "c", + "æ", + "w", + ], + "Finnish": [ + "a", + "i", + "n", + "t", + "e", + "s", + "l", + "o", + "u", + "k", + "ä", + "m", + "r", + "v", + "j", + "h", + "p", + "y", + "d", + "ö", + "g", + "c", + "b", + "f", + "w", + "z", + ], + "Vietnamese": [ + "n", + "h", + "t", + "i", + "c", + "g", + "a", + "o", + "u", + "m", + "l", + "r", + "à", + "đ", + "s", + "e", + "v", + "p", + "b", + "y", + "ư", + "d", + "á", + "k", + "ộ", + "ế", + ], + "Czech": [ + "o", + "e", + "a", + "n", + "t", + "s", + "i", + "l", + "v", + "r", + "k", + "d", + "u", + "m", + "p", + "í", + "c", + "h", + "z", + "á", + "y", + "j", + "b", + "ě", + "é", + "ř", + ], + "Hungarian": [ + "e", + "a", + "t", + "l", + "s", + "n", + "k", + "r", + "i", + "o", + "z", + "á", + "é", + "g", + "m", + "b", + "y", + "v", + "d", + "h", + "u", + "p", + "j", + "ö", + "f", + "c", + ], + "Korean": [ + "이", + "다", + "에", + "의", + "는", + "로", + "하", + "을", + "가", + "고", + "지", + "서", + "한", + "은", + "기", + "으", + "년", + "대", + "사", + "시", + "를", + "리", + "도", + "인", + "스", + "일", + ], + "Indonesian": [ + "a", + "n", + "e", + "i", + "r", + "t", + "u", + "s", + "d", + "k", + "m", + "l", + "g", + "p", + "b", + "o", + "h", + "y", + "j", + "c", + "w", + "f", + "v", + "z", + "x", + "q", + ], + "Turkish": [ + "a", + "e", + "i", + "n", + "r", + "l", + "ı", + "k", + "d", + "t", + "s", + "m", + "y", + "u", + "o", + "b", + "ü", + "ş", + "v", + "g", + "z", + "h", + "c", + "p", + "ç", + "ğ", + ], + "Romanian": [ + "e", + "i", + "a", + "r", + "n", + "t", + "u", + "l", + "o", + "c", + "s", + "d", + "p", + "m", + "ă", + "f", + "v", + "î", + "g", + "b", + "ș", + "ț", + "z", + "h", + "â", + "j", + ], + "Farsi": [ + "ا", + "ی", + "ر", + "د", + "ن", + "ه", + "و", + "م", + "ت", + "ب", + "س", + "ل", + "ک", + "ش", + "ز", + "ف", + "گ", + "ع", + "خ", + "ق", + "ج", + "آ", + "پ", + "ح", + "ط", + "ص", + ], + "Arabic": [ + "ا", + "ل", + "ي", + "م", + "و", + "ن", + "ر", + "ت", + "ب", + "ة", + "ع", + "د", + "س", + "ف", + "ه", + "ك", + "ق", + "أ", + "ح", + "ج", + "ش", + "ط", + "ص", + "ى", + "خ", + "إ", + ], + "Danish": [ + "e", + "r", + "n", + "t", + "a", + "i", + "s", + "d", + "l", + "o", + "g", + "m", + "k", + "f", + "v", + "u", + "b", + "h", + "p", + "å", + "y", + "ø", + "æ", + "c", + "j", + "w", + ], + "Serbian": [ + "а", + "и", + "о", + "е", + "н", + "р", + "с", + "у", + "т", + "к", + "ј", + "в", + "д", + "м", + "п", + "л", + "г", + "з", + "б", + "a", + "i", + "e", + "o", + "n", + "ц", + "ш", + ], + "Lithuanian": [ + "i", + "a", + "s", + "o", + "r", + "e", + "t", + "n", + "u", + "k", + "m", + "l", + "p", + "v", + "d", + "j", + "g", + "ė", + "b", + "y", + "ų", + "š", + "ž", + "c", + "ą", + "į", + ], + "Slovene": [ + "e", + "a", + "i", + "o", + "n", + "r", + "s", + "l", + "t", + "j", + "v", + "k", + "d", + "p", + "m", + "u", + "z", + "b", + "g", + "h", + "č", + "c", + "š", + "ž", + "f", + "y", + ], + "Slovak": [ + "o", + "a", + "e", + "n", + "i", + "r", + "v", + "t", + "s", + "l", + "k", + "d", + "m", + "p", + "u", + "c", + "h", + "j", + "b", + "z", + "á", + "y", + "ý", + "í", + "č", + "é", + ], + "Hebrew": [ + "י", + "ו", + "ה", + "ל", + "ר", + "ב", + "ת", + "מ", + "א", + "ש", + "נ", + "ע", + "ם", + "ד", + "ק", + "ח", + "פ", + "ס", + "כ", + "ג", + "ט", + "צ", + "ן", + "ז", + "ך", + ], + "Bulgarian": [ + "а", + "и", + "о", + "е", + "н", + "т", + "р", + "с", + "в", + "л", + "к", + "д", + "п", + "м", + "з", + "г", + "я", + "ъ", + "у", + "б", + "ч", + "ц", + "й", + "ж", + "щ", + "х", + ], + "Croatian": [ + "a", + "i", + "o", + "e", + "n", + "r", + "j", + "s", + "t", + "u", + "k", + "l", + "v", + "d", + "m", + "p", + "g", + "z", + "b", + "c", + "č", + "h", + "š", + "ž", + "ć", + "f", + ], + "Hindi": [ + "क", + "र", + "स", + "न", + "त", + "म", + "ह", + "प", + "य", + "ल", + "व", + "ज", + "द", + "ग", + "ब", + "श", + "ट", + "अ", + "ए", + "थ", + "भ", + "ड", + "च", + "ध", + "ष", + "इ", + ], + "Estonian": [ + "a", + "i", + "e", + "s", + "t", + "l", + "u", + "n", + "o", + "k", + "r", + "d", + "m", + "v", + "g", + "p", + "j", + "h", + "ä", + "b", + "õ", + "ü", + "f", + "c", + "ö", + "y", + ], + "Thai": [ + "า", + "น", + "ร", + "อ", + "ก", + "เ", + "ง", + "ม", + "ย", + "ล", + "ว", + "ด", + "ท", + "ส", + "ต", + "ะ", + "ป", + "บ", + "ค", + "ห", + "แ", + "จ", + "พ", + "ช", + "ข", + "ใ", + ], + "Greek": [ + "α", + "τ", + "ο", + "ι", + "ε", + "ν", + "ρ", + "σ", + "κ", + "η", + "π", + "ς", + "υ", + "μ", + "λ", + "ί", + "ό", + "ά", + "γ", + "έ", + "δ", + "ή", + "ω", + "χ", + "θ", + "ύ", + ], + "Tamil": [ + "க", + "த", + "ப", + "ட", + "ர", + "ம", + "ல", + "ன", + "வ", + "ற", + "ய", + "ள", + "ச", + "ந", + "இ", + "ண", + "அ", + "ஆ", + "ழ", + "ங", + "எ", + "உ", + "ஒ", + "ஸ", + ], + "Kazakh": [ + "а", + "ы", + "е", + "н", + "т", + "р", + "л", + "і", + "д", + "с", + "м", + "қ", + "к", + "о", + "б", + "и", + "у", + "ғ", + "ж", + "ң", + "з", + "ш", + "й", + "п", + "г", + "ө", + ], +} + +LANGUAGE_SUPPORTED_COUNT: int = len(FREQUENCIES) diff --git a/env/lib/python3.12/site-packages/charset_normalizer/legacy.py b/env/lib/python3.12/site-packages/charset_normalizer/legacy.py new file mode 100644 index 0000000..3f6d490 --- /dev/null +++ b/env/lib/python3.12/site-packages/charset_normalizer/legacy.py @@ -0,0 +1,65 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, Any, Optional +from warnings import warn + +from .api import from_bytes +from .constant import CHARDET_CORRESPONDENCE + +# TODO: remove this check when dropping Python 3.7 support +if TYPE_CHECKING: + from typing_extensions import TypedDict + + class ResultDict(TypedDict): + encoding: Optional[str] + language: str + confidence: Optional[float] + + +def detect( + byte_str: bytes, should_rename_legacy: bool = False, **kwargs: Any +) -> ResultDict: + """ + chardet legacy method + Detect the encoding of the given byte string. It should be mostly backward-compatible. + Encoding name will match Chardet own writing whenever possible. (Not on encoding name unsupported by it) + This function is deprecated and should be used to migrate your project easily, consult the documentation for + further information. Not planned for removal. + + :param byte_str: The byte sequence to examine. + :param should_rename_legacy: Should we rename legacy encodings + to their more modern equivalents? + """ + if len(kwargs): + warn( + f"charset-normalizer disregard arguments '{','.join(list(kwargs.keys()))}' in legacy function detect()" + ) + + if not isinstance(byte_str, (bytearray, bytes)): + raise TypeError( # pragma: nocover + "Expected object of type bytes or bytearray, got: " + "{0}".format(type(byte_str)) + ) + + if isinstance(byte_str, bytearray): + byte_str = bytes(byte_str) + + r = from_bytes(byte_str).best() + + encoding = r.encoding if r is not None else None + language = r.language if r is not None and r.language != "Unknown" else "" + confidence = 1.0 - r.chaos if r is not None else None + + # Note: CharsetNormalizer does not return 'UTF-8-SIG' as the sig get stripped in the detection/normalization process + # but chardet does return 'utf-8-sig' and it is a valid codec name. + if r is not None and encoding == "utf_8" and r.bom: + encoding += "_sig" + + if should_rename_legacy is False and encoding in CHARDET_CORRESPONDENCE: + encoding = CHARDET_CORRESPONDENCE[encoding] + + return { + "encoding": encoding, + "language": language, + "confidence": confidence, + } diff --git a/env/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-aarch64-linux-gnu.so b/env/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-aarch64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..ecbb5d3d2ba56090b98fa2487025e319d17955ea GIT binary patch literal 69800 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 bool: + """ + Determine if given character should be fed in. + """ + raise NotImplementedError # pragma: nocover + + def feed(self, character: str) -> None: + """ + The main routine to be executed upon character. + Insert the logic in witch the text would be considered chaotic. + """ + raise NotImplementedError # pragma: nocover + + def reset(self) -> None: # pragma: no cover + """ + Permit to reset the plugin to the initial state. + """ + raise NotImplementedError + + @property + def ratio(self) -> float: + """ + Compute the chaos ratio based on what your feed() has seen. + Must NOT be lower than 0.; No restriction gt 0. + """ + raise NotImplementedError # pragma: nocover + + +class TooManySymbolOrPunctuationPlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._punctuation_count: int = 0 + self._symbol_count: int = 0 + self._character_count: int = 0 + + self._last_printable_char: Optional[str] = None + self._frenzy_symbol_in_word: bool = False + + def eligible(self, character: str) -> bool: + return character.isprintable() + + def feed(self, character: str) -> None: + self._character_count += 1 + + if ( + character != self._last_printable_char + and character not in COMMON_SAFE_ASCII_CHARACTERS + ): + if is_punctuation(character): + self._punctuation_count += 1 + elif ( + character.isdigit() is False + and is_symbol(character) + and is_emoticon(character) is False + ): + self._symbol_count += 2 + + self._last_printable_char = character + + def reset(self) -> None: # pragma: no cover + self._punctuation_count = 0 + self._character_count = 0 + self._symbol_count = 0 + + @property + def ratio(self) -> float: + if self._character_count == 0: + return 0.0 + + ratio_of_punctuation: float = ( + self._punctuation_count + self._symbol_count + ) / self._character_count + + return ratio_of_punctuation if ratio_of_punctuation >= 0.3 else 0.0 + + +class TooManyAccentuatedPlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._character_count: int = 0 + self._accentuated_count: int = 0 + + def eligible(self, character: str) -> bool: + return character.isalpha() + + def feed(self, character: str) -> None: + self._character_count += 1 + + if is_accentuated(character): + self._accentuated_count += 1 + + def reset(self) -> None: # pragma: no cover + self._character_count = 0 + self._accentuated_count = 0 + + @property + def ratio(self) -> float: + if self._character_count < 8: + return 0.0 + + ratio_of_accentuation: float = self._accentuated_count / self._character_count + return ratio_of_accentuation if ratio_of_accentuation >= 0.35 else 0.0 + + +class UnprintablePlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._unprintable_count: int = 0 + self._character_count: int = 0 + + def eligible(self, character: str) -> bool: + return True + + def feed(self, character: str) -> None: + if is_unprintable(character): + self._unprintable_count += 1 + self._character_count += 1 + + def reset(self) -> None: # pragma: no cover + self._unprintable_count = 0 + + @property + def ratio(self) -> float: + if self._character_count == 0: + return 0.0 + + return (self._unprintable_count * 8) / self._character_count + + +class SuspiciousDuplicateAccentPlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._successive_count: int = 0 + self._character_count: int = 0 + + self._last_latin_character: Optional[str] = None + + def eligible(self, character: str) -> bool: + return character.isalpha() and is_latin(character) + + def feed(self, character: str) -> None: + self._character_count += 1 + if ( + self._last_latin_character is not None + and is_accentuated(character) + and is_accentuated(self._last_latin_character) + ): + if character.isupper() and self._last_latin_character.isupper(): + self._successive_count += 1 + # Worse if its the same char duplicated with different accent. + if remove_accent(character) == remove_accent(self._last_latin_character): + self._successive_count += 1 + self._last_latin_character = character + + def reset(self) -> None: # pragma: no cover + self._successive_count = 0 + self._character_count = 0 + self._last_latin_character = None + + @property + def ratio(self) -> float: + if self._character_count == 0: + return 0.0 + + return (self._successive_count * 2) / self._character_count + + +class SuspiciousRange(MessDetectorPlugin): + def __init__(self) -> None: + self._suspicious_successive_range_count: int = 0 + self._character_count: int = 0 + self._last_printable_seen: Optional[str] = None + + def eligible(self, character: str) -> bool: + return character.isprintable() + + def feed(self, character: str) -> None: + self._character_count += 1 + + if ( + character.isspace() + or is_punctuation(character) + or character in COMMON_SAFE_ASCII_CHARACTERS + ): + self._last_printable_seen = None + return + + if self._last_printable_seen is None: + self._last_printable_seen = character + return + + unicode_range_a: Optional[str] = unicode_range(self._last_printable_seen) + unicode_range_b: Optional[str] = unicode_range(character) + + if is_suspiciously_successive_range(unicode_range_a, unicode_range_b): + self._suspicious_successive_range_count += 1 + + self._last_printable_seen = character + + def reset(self) -> None: # pragma: no cover + self._character_count = 0 + self._suspicious_successive_range_count = 0 + self._last_printable_seen = None + + @property + def ratio(self) -> float: + if self._character_count <= 13: + return 0.0 + + ratio_of_suspicious_range_usage: float = ( + self._suspicious_successive_range_count * 2 + ) / self._character_count + + return ratio_of_suspicious_range_usage + + +class SuperWeirdWordPlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._word_count: int = 0 + self._bad_word_count: int = 0 + self._foreign_long_count: int = 0 + + self._is_current_word_bad: bool = False + self._foreign_long_watch: bool = False + + self._character_count: int = 0 + self._bad_character_count: int = 0 + + self._buffer: str = "" + self._buffer_accent_count: int = 0 + self._buffer_glyph_count: int = 0 + + def eligible(self, character: str) -> bool: + return True + + def feed(self, character: str) -> None: + if character.isalpha(): + self._buffer += character + if is_accentuated(character): + self._buffer_accent_count += 1 + if ( + self._foreign_long_watch is False + and (is_latin(character) is False or is_accentuated(character)) + and is_cjk(character) is False + and is_hangul(character) is False + and is_katakana(character) is False + and is_hiragana(character) is False + and is_thai(character) is False + ): + self._foreign_long_watch = True + if ( + is_cjk(character) + or is_hangul(character) + or is_katakana(character) + or is_hiragana(character) + or is_thai(character) + ): + self._buffer_glyph_count += 1 + return + if not self._buffer: + return + if ( + character.isspace() or is_punctuation(character) or is_separator(character) + ) and self._buffer: + self._word_count += 1 + buffer_length: int = len(self._buffer) + + self._character_count += buffer_length + + if buffer_length >= 4: + if self._buffer_accent_count / buffer_length >= 0.5: + self._is_current_word_bad = True + # Word/Buffer ending with an upper case accentuated letter are so rare, + # that we will consider them all as suspicious. Same weight as foreign_long suspicious. + elif ( + is_accentuated(self._buffer[-1]) + and self._buffer[-1].isupper() + and all(_.isupper() for _ in self._buffer) is False + ): + self._foreign_long_count += 1 + self._is_current_word_bad = True + elif self._buffer_glyph_count == 1: + self._is_current_word_bad = True + self._foreign_long_count += 1 + if buffer_length >= 24 and self._foreign_long_watch: + camel_case_dst = [ + i + for c, i in zip(self._buffer, range(0, buffer_length)) + if c.isupper() + ] + probable_camel_cased: bool = False + + if camel_case_dst and (len(camel_case_dst) / buffer_length <= 0.3): + probable_camel_cased = True + + if not probable_camel_cased: + self._foreign_long_count += 1 + self._is_current_word_bad = True + + if self._is_current_word_bad: + self._bad_word_count += 1 + self._bad_character_count += len(self._buffer) + self._is_current_word_bad = False + + self._foreign_long_watch = False + self._buffer = "" + self._buffer_accent_count = 0 + self._buffer_glyph_count = 0 + elif ( + character not in {"<", ">", "-", "=", "~", "|", "_"} + and character.isdigit() is False + and is_symbol(character) + ): + self._is_current_word_bad = True + self._buffer += character + + def reset(self) -> None: # pragma: no cover + self._buffer = "" + self._is_current_word_bad = False + self._foreign_long_watch = False + self._bad_word_count = 0 + self._word_count = 0 + self._character_count = 0 + self._bad_character_count = 0 + self._foreign_long_count = 0 + + @property + def ratio(self) -> float: + if self._word_count <= 10 and self._foreign_long_count == 0: + return 0.0 + + return self._bad_character_count / self._character_count + + +class CjkInvalidStopPlugin(MessDetectorPlugin): + """ + GB(Chinese) based encoding often render the stop incorrectly when the content does not fit and + can be easily detected. Searching for the overuse of '丅' and '丄'. + """ + + def __init__(self) -> None: + self._wrong_stop_count: int = 0 + self._cjk_character_count: int = 0 + + def eligible(self, character: str) -> bool: + return True + + def feed(self, character: str) -> None: + if character in {"丅", "丄"}: + self._wrong_stop_count += 1 + return + if is_cjk(character): + self._cjk_character_count += 1 + + def reset(self) -> None: # pragma: no cover + self._wrong_stop_count = 0 + self._cjk_character_count = 0 + + @property + def ratio(self) -> float: + if self._cjk_character_count < 16: + return 0.0 + return self._wrong_stop_count / self._cjk_character_count + + +class ArchaicUpperLowerPlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._buf: bool = False + + self._character_count_since_last_sep: int = 0 + + self._successive_upper_lower_count: int = 0 + self._successive_upper_lower_count_final: int = 0 + + self._character_count: int = 0 + + self._last_alpha_seen: Optional[str] = None + self._current_ascii_only: bool = True + + def eligible(self, character: str) -> bool: + return True + + def feed(self, character: str) -> None: + is_concerned = character.isalpha() and is_case_variable(character) + chunk_sep = is_concerned is False + + if chunk_sep and self._character_count_since_last_sep > 0: + if ( + self._character_count_since_last_sep <= 64 + and character.isdigit() is False + and self._current_ascii_only is False + ): + self._successive_upper_lower_count_final += ( + self._successive_upper_lower_count + ) + + self._successive_upper_lower_count = 0 + self._character_count_since_last_sep = 0 + self._last_alpha_seen = None + self._buf = False + self._character_count += 1 + self._current_ascii_only = True + + return + + if self._current_ascii_only is True and character.isascii() is False: + self._current_ascii_only = False + + if self._last_alpha_seen is not None: + if (character.isupper() and self._last_alpha_seen.islower()) or ( + character.islower() and self._last_alpha_seen.isupper() + ): + if self._buf is True: + self._successive_upper_lower_count += 2 + self._buf = False + else: + self._buf = True + else: + self._buf = False + + self._character_count += 1 + self._character_count_since_last_sep += 1 + self._last_alpha_seen = character + + def reset(self) -> None: # pragma: no cover + self._character_count = 0 + self._character_count_since_last_sep = 0 + self._successive_upper_lower_count = 0 + self._successive_upper_lower_count_final = 0 + self._last_alpha_seen = None + self._buf = False + self._current_ascii_only = True + + @property + def ratio(self) -> float: + if self._character_count == 0: + return 0.0 + + return self._successive_upper_lower_count_final / self._character_count + + +class ArabicIsolatedFormPlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._character_count: int = 0 + self._isolated_form_count: int = 0 + + def reset(self) -> None: # pragma: no cover + self._character_count = 0 + self._isolated_form_count = 0 + + def eligible(self, character: str) -> bool: + return is_arabic(character) + + def feed(self, character: str) -> None: + self._character_count += 1 + + if is_arabic_isolated_form(character): + self._isolated_form_count += 1 + + @property + def ratio(self) -> float: + if self._character_count < 8: + return 0.0 + + isolated_form_usage: float = self._isolated_form_count / self._character_count + + return isolated_form_usage + + +@lru_cache(maxsize=1024) +def is_suspiciously_successive_range( + unicode_range_a: Optional[str], unicode_range_b: Optional[str] +) -> bool: + """ + Determine if two Unicode range seen next to each other can be considered as suspicious. + """ + if unicode_range_a is None or unicode_range_b is None: + return True + + if unicode_range_a == unicode_range_b: + return False + + if "Latin" in unicode_range_a and "Latin" in unicode_range_b: + return False + + if "Emoticons" in unicode_range_a or "Emoticons" in unicode_range_b: + return False + + # Latin characters can be accompanied with a combining diacritical mark + # eg. Vietnamese. + if ("Latin" in unicode_range_a or "Latin" in unicode_range_b) and ( + "Combining" in unicode_range_a or "Combining" in unicode_range_b + ): + return False + + keywords_range_a, keywords_range_b = unicode_range_a.split( + " " + ), unicode_range_b.split(" ") + + for el in keywords_range_a: + if el in UNICODE_SECONDARY_RANGE_KEYWORD: + continue + if el in keywords_range_b: + return False + + # Japanese Exception + range_a_jp_chars, range_b_jp_chars = ( + unicode_range_a + in ( + "Hiragana", + "Katakana", + ), + unicode_range_b in ("Hiragana", "Katakana"), + ) + if (range_a_jp_chars or range_b_jp_chars) and ( + "CJK" in unicode_range_a or "CJK" in unicode_range_b + ): + return False + if range_a_jp_chars and range_b_jp_chars: + return False + + if "Hangul" in unicode_range_a or "Hangul" in unicode_range_b: + if "CJK" in unicode_range_a or "CJK" in unicode_range_b: + return False + if unicode_range_a == "Basic Latin" or unicode_range_b == "Basic Latin": + return False + + # Chinese/Japanese use dedicated range for punctuation and/or separators. + if ("CJK" in unicode_range_a or "CJK" in unicode_range_b) or ( + unicode_range_a in ["Katakana", "Hiragana"] + and unicode_range_b in ["Katakana", "Hiragana"] + ): + if "Punctuation" in unicode_range_a or "Punctuation" in unicode_range_b: + return False + if "Forms" in unicode_range_a or "Forms" in unicode_range_b: + return False + if unicode_range_a == "Basic Latin" or unicode_range_b == "Basic Latin": + return False + + return True + + +@lru_cache(maxsize=2048) +def mess_ratio( + decoded_sequence: str, maximum_threshold: float = 0.2, debug: bool = False +) -> float: + """ + Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier. + """ + + detectors: List[MessDetectorPlugin] = [ + md_class() for md_class in MessDetectorPlugin.__subclasses__() + ] + + length: int = len(decoded_sequence) + 1 + + mean_mess_ratio: float = 0.0 + + if length < 512: + intermediary_mean_mess_ratio_calc: int = 32 + elif length <= 1024: + intermediary_mean_mess_ratio_calc = 64 + else: + intermediary_mean_mess_ratio_calc = 128 + + for character, index in zip(decoded_sequence + "\n", range(length)): + for detector in detectors: + if detector.eligible(character): + detector.feed(character) + + if ( + index > 0 and index % intermediary_mean_mess_ratio_calc == 0 + ) or index == length - 1: + mean_mess_ratio = sum(dt.ratio for dt in detectors) + + if mean_mess_ratio >= maximum_threshold: + break + + if debug: + logger = getLogger("charset_normalizer") + + logger.log( + TRACE, + "Mess-detector extended-analysis start. " + f"intermediary_mean_mess_ratio_calc={intermediary_mean_mess_ratio_calc} mean_mess_ratio={mean_mess_ratio} " + f"maximum_threshold={maximum_threshold}", + ) + + if len(decoded_sequence) > 16: + logger.log(TRACE, f"Starting with: {decoded_sequence[:16]}") + logger.log(TRACE, f"Ending with: {decoded_sequence[-16::]}") + + for dt in detectors: # pragma: nocover + logger.log(TRACE, f"{dt.__class__}: {dt.ratio}") + + return round(mean_mess_ratio, 3) diff --git a/env/lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-aarch64-linux-gnu.so b/env/lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-aarch64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..7650d831d776bc2717bc29c2a3a15be3ea828a49 GIT binary patch literal 322008 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

+rk=>1Su+M)%W;cTeAwy$Fu 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 eukrh}?vLiL82$G bool: + if not isinstance(other, CharsetMatch): + if isinstance(other, str): + return iana_name(other) == self.encoding + return False + return self.encoding == other.encoding and self.fingerprint == other.fingerprint + + def __lt__(self, other: object) -> bool: + """ + Implemented to make sorted available upon CharsetMatches items. + """ + if not isinstance(other, CharsetMatch): + raise ValueError + + chaos_difference: float = abs(self.chaos - other.chaos) + coherence_difference: float = abs(self.coherence - other.coherence) + + # Below 1% difference --> Use Coherence + if chaos_difference < 0.01 and coherence_difference > 0.02: + return self.coherence > other.coherence + elif chaos_difference < 0.01 and coherence_difference <= 0.02: + # When having a difficult decision, use the result that decoded as many multi-byte as possible. + # preserve RAM usage! + if len(self._payload) >= TOO_BIG_SEQUENCE: + return self.chaos < other.chaos + return self.multi_byte_usage > other.multi_byte_usage + + return self.chaos < other.chaos + + @property + def multi_byte_usage(self) -> float: + return 1.0 - (len(str(self)) / len(self.raw)) + + def __str__(self) -> str: + # Lazy Str Loading + if self._string is None: + self._string = str(self._payload, self._encoding, "strict") + return self._string + + def __repr__(self) -> str: + return "".format(self.encoding, self.fingerprint) + + def add_submatch(self, other: "CharsetMatch") -> None: + if not isinstance(other, CharsetMatch) or other == self: + raise ValueError( + "Unable to add instance <{}> as a submatch of a CharsetMatch".format( + other.__class__ + ) + ) + + other._string = None # Unload RAM usage; dirty trick. + self._leaves.append(other) + + @property + def encoding(self) -> str: + return self._encoding + + @property + def encoding_aliases(self) -> List[str]: + """ + Encoding name are known by many name, using this could help when searching for IBM855 when it's listed as CP855. + """ + also_known_as: List[str] = [] + for u, p in aliases.items(): + if self.encoding == u: + also_known_as.append(p) + elif self.encoding == p: + also_known_as.append(u) + return also_known_as + + @property + def bom(self) -> bool: + return self._has_sig_or_bom + + @property + def byte_order_mark(self) -> bool: + return self._has_sig_or_bom + + @property + def languages(self) -> List[str]: + """ + Return the complete list of possible languages found in decoded sequence. + Usually not really useful. Returned list may be empty even if 'language' property return something != 'Unknown'. + """ + return [e[0] for e in self._languages] + + @property + def language(self) -> str: + """ + Most probable language found in decoded sequence. If none were detected or inferred, the property will return + "Unknown". + """ + if not self._languages: + # Trying to infer the language based on the given encoding + # Its either English or we should not pronounce ourselves in certain cases. + if "ascii" in self.could_be_from_charset: + return "English" + + # doing it there to avoid circular import + from charset_normalizer.cd import encoding_languages, mb_encoding_languages + + languages = ( + mb_encoding_languages(self.encoding) + if is_multi_byte_encoding(self.encoding) + else encoding_languages(self.encoding) + ) + + if len(languages) == 0 or "Latin Based" in languages: + return "Unknown" + + return languages[0] + + return self._languages[0][0] + + @property + def chaos(self) -> float: + return self._mean_mess_ratio + + @property + def coherence(self) -> float: + if not self._languages: + return 0.0 + return self._languages[0][1] + + @property + def percent_chaos(self) -> float: + return round(self.chaos * 100, ndigits=3) + + @property + def percent_coherence(self) -> float: + return round(self.coherence * 100, ndigits=3) + + @property + def raw(self) -> bytes: + """ + Original untouched bytes. + """ + return self._payload + + @property + def submatch(self) -> List["CharsetMatch"]: + return self._leaves + + @property + def has_submatch(self) -> bool: + return len(self._leaves) > 0 + + @property + def alphabets(self) -> List[str]: + if self._unicode_ranges is not None: + return self._unicode_ranges + # list detected ranges + detected_ranges: List[Optional[str]] = [ + unicode_range(char) for char in str(self) + ] + # filter and sort + self._unicode_ranges = sorted(list({r for r in detected_ranges if r})) + return self._unicode_ranges + + @property + def could_be_from_charset(self) -> List[str]: + """ + The complete list of encoding that output the exact SAME str result and therefore could be the originating + encoding. + This list does include the encoding available in property 'encoding'. + """ + return [self._encoding] + [m.encoding for m in self._leaves] + + def output(self, encoding: str = "utf_8") -> bytes: + """ + Method to get re-encoded bytes payload using given target encoding. Default to UTF-8. + Any errors will be simply ignored by the encoder NOT replaced. + """ + if self._output_encoding is None or self._output_encoding != encoding: + self._output_encoding = encoding + decoded_string = str(self) + if ( + self._preemptive_declaration is not None + and self._preemptive_declaration.lower() + not in ["utf-8", "utf8", "utf_8"] + ): + patched_header = sub( + RE_POSSIBLE_ENCODING_INDICATION, + lambda m: m.string[m.span()[0] : m.span()[1]].replace( + m.groups()[0], iana_name(self._output_encoding) # type: ignore[arg-type] + ), + decoded_string[:8192], + 1, + ) + + decoded_string = patched_header + decoded_string[8192:] + + self._output_payload = decoded_string.encode(encoding, "replace") + + return self._output_payload # type: ignore + + @property + def fingerprint(self) -> str: + """ + Retrieve the unique SHA256 computed using the transformed (re-encoded) payload. Not the original one. + """ + return sha256(self.output()).hexdigest() + + +class CharsetMatches: + """ + Container with every CharsetMatch items ordered by default from most probable to the less one. + Act like a list(iterable) but does not implements all related methods. + """ + + def __init__(self, results: Optional[List[CharsetMatch]] = None): + self._results: List[CharsetMatch] = sorted(results) if results else [] + + def __iter__(self) -> Iterator[CharsetMatch]: + yield from self._results + + def __getitem__(self, item: Union[int, str]) -> CharsetMatch: + """ + Retrieve a single item either by its position or encoding name (alias may be used here). + Raise KeyError upon invalid index or encoding not present in results. + """ + if isinstance(item, int): + return self._results[item] + if isinstance(item, str): + item = iana_name(item, False) + for result in self._results: + if item in result.could_be_from_charset: + return result + raise KeyError + + def __len__(self) -> int: + return len(self._results) + + def __bool__(self) -> bool: + return len(self._results) > 0 + + def append(self, item: CharsetMatch) -> None: + """ + Insert a single match. Will be inserted accordingly to preserve sort. + Can be inserted as a submatch. + """ + if not isinstance(item, CharsetMatch): + raise ValueError( + "Cannot append instance '{}' to CharsetMatches".format( + str(item.__class__) + ) + ) + # We should disable the submatch factoring when the input file is too heavy (conserve RAM usage) + if len(item.raw) < TOO_BIG_SEQUENCE: + for match in self._results: + if match.fingerprint == item.fingerprint and match.chaos == item.chaos: + match.add_submatch(item) + return + self._results.append(item) + self._results = sorted(self._results) + + def best(self) -> Optional["CharsetMatch"]: + """ + Simply return the first match. Strict equivalent to matches[0]. + """ + if not self._results: + return None + return self._results[0] + + def first(self) -> Optional["CharsetMatch"]: + """ + Redundant method, call the method best(). Kept for BC reasons. + """ + return self.best() + + +CoherenceMatch = Tuple[str, float] +CoherenceMatches = List[CoherenceMatch] + + +class CliDetectionResult: + def __init__( + self, + path: str, + encoding: Optional[str], + encoding_aliases: List[str], + alternative_encodings: List[str], + language: str, + alphabets: List[str], + has_sig_or_bom: bool, + chaos: float, + coherence: float, + unicode_path: Optional[str], + is_preferred: bool, + ): + self.path: str = path + self.unicode_path: Optional[str] = unicode_path + self.encoding: Optional[str] = encoding + self.encoding_aliases: List[str] = encoding_aliases + self.alternative_encodings: List[str] = alternative_encodings + self.language: str = language + self.alphabets: List[str] = alphabets + self.has_sig_or_bom: bool = has_sig_or_bom + self.chaos: float = chaos + self.coherence: float = coherence + self.is_preferred: bool = is_preferred + + @property + def __dict__(self) -> Dict[str, Any]: # type: ignore + return { + "path": self.path, + "encoding": self.encoding, + "encoding_aliases": self.encoding_aliases, + "alternative_encodings": self.alternative_encodings, + "language": self.language, + "alphabets": self.alphabets, + "has_sig_or_bom": self.has_sig_or_bom, + "chaos": self.chaos, + "coherence": self.coherence, + "unicode_path": self.unicode_path, + "is_preferred": self.is_preferred, + } + + def to_json(self) -> str: + return dumps(self.__dict__, ensure_ascii=True, indent=4) diff --git a/env/lib/python3.12/site-packages/charset_normalizer/py.typed b/env/lib/python3.12/site-packages/charset_normalizer/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/env/lib/python3.12/site-packages/charset_normalizer/utils.py b/env/lib/python3.12/site-packages/charset_normalizer/utils.py new file mode 100644 index 0000000..e5cbbf4 --- /dev/null +++ b/env/lib/python3.12/site-packages/charset_normalizer/utils.py @@ -0,0 +1,421 @@ +import importlib +import logging +import unicodedata +from codecs import IncrementalDecoder +from encodings.aliases import aliases +from functools import lru_cache +from re import findall +from typing import Generator, List, Optional, Set, Tuple, Union + +from _multibytecodec import MultibyteIncrementalDecoder + +from .constant import ( + ENCODING_MARKS, + IANA_SUPPORTED_SIMILAR, + RE_POSSIBLE_ENCODING_INDICATION, + UNICODE_RANGES_COMBINED, + UNICODE_SECONDARY_RANGE_KEYWORD, + UTF8_MAXIMAL_ALLOCATION, +) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_accentuated(character: str) -> bool: + try: + description: str = unicodedata.name(character) + except ValueError: + return False + return ( + "WITH GRAVE" in description + or "WITH ACUTE" in description + or "WITH CEDILLA" in description + or "WITH DIAERESIS" in description + or "WITH CIRCUMFLEX" in description + or "WITH TILDE" in description + or "WITH MACRON" in description + or "WITH RING ABOVE" in description + ) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def remove_accent(character: str) -> str: + decomposed: str = unicodedata.decomposition(character) + if not decomposed: + return character + + codes: List[str] = decomposed.split(" ") + + return chr(int(codes[0], 16)) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def unicode_range(character: str) -> Optional[str]: + """ + Retrieve the Unicode range official name from a single character. + """ + character_ord: int = ord(character) + + for range_name, ord_range in UNICODE_RANGES_COMBINED.items(): + if character_ord in ord_range: + return range_name + + return None + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_latin(character: str) -> bool: + try: + description: str = unicodedata.name(character) + except ValueError: + return False + return "LATIN" in description + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_punctuation(character: str) -> bool: + character_category: str = unicodedata.category(character) + + if "P" in character_category: + return True + + character_range: Optional[str] = unicode_range(character) + + if character_range is None: + return False + + return "Punctuation" in character_range + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_symbol(character: str) -> bool: + character_category: str = unicodedata.category(character) + + if "S" in character_category or "N" in character_category: + return True + + character_range: Optional[str] = unicode_range(character) + + if character_range is None: + return False + + return "Forms" in character_range and character_category != "Lo" + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_emoticon(character: str) -> bool: + character_range: Optional[str] = unicode_range(character) + + if character_range is None: + return False + + return "Emoticons" in character_range or "Pictographs" in character_range + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_separator(character: str) -> bool: + if character.isspace() or character in {"|", "+", "<", ">"}: + return True + + character_category: str = unicodedata.category(character) + + return "Z" in character_category or character_category in {"Po", "Pd", "Pc"} + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_case_variable(character: str) -> bool: + return character.islower() != character.isupper() + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_cjk(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "CJK" in character_name + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_hiragana(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "HIRAGANA" in character_name + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_katakana(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "KATAKANA" in character_name + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_hangul(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "HANGUL" in character_name + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_thai(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "THAI" in character_name + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_arabic(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "ARABIC" in character_name + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_arabic_isolated_form(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "ARABIC" in character_name and "ISOLATED FORM" in character_name + + +@lru_cache(maxsize=len(UNICODE_RANGES_COMBINED)) +def is_unicode_range_secondary(range_name: str) -> bool: + return any(keyword in range_name for keyword in UNICODE_SECONDARY_RANGE_KEYWORD) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_unprintable(character: str) -> bool: + return ( + character.isspace() is False # includes \n \t \r \v + and character.isprintable() is False + and character != "\x1A" # Why? Its the ASCII substitute character. + and character != "\ufeff" # bug discovered in Python, + # Zero Width No-Break Space located in Arabic Presentation Forms-B, Unicode 1.1 not acknowledged as space. + ) + + +def any_specified_encoding(sequence: bytes, search_zone: int = 8192) -> Optional[str]: + """ + Extract using ASCII-only decoder any specified encoding in the first n-bytes. + """ + if not isinstance(sequence, bytes): + raise TypeError + + seq_len: int = len(sequence) + + results: List[str] = findall( + RE_POSSIBLE_ENCODING_INDICATION, + sequence[: min(seq_len, search_zone)].decode("ascii", errors="ignore"), + ) + + if len(results) == 0: + return None + + for specified_encoding in results: + specified_encoding = specified_encoding.lower().replace("-", "_") + + encoding_alias: str + encoding_iana: str + + for encoding_alias, encoding_iana in aliases.items(): + if encoding_alias == specified_encoding: + return encoding_iana + if encoding_iana == specified_encoding: + return encoding_iana + + return None + + +@lru_cache(maxsize=128) +def is_multi_byte_encoding(name: str) -> bool: + """ + Verify is a specific encoding is a multi byte one based on it IANA name + """ + return name in { + "utf_8", + "utf_8_sig", + "utf_16", + "utf_16_be", + "utf_16_le", + "utf_32", + "utf_32_le", + "utf_32_be", + "utf_7", + } or issubclass( + importlib.import_module("encodings.{}".format(name)).IncrementalDecoder, + MultibyteIncrementalDecoder, + ) + + +def identify_sig_or_bom(sequence: bytes) -> Tuple[Optional[str], bytes]: + """ + Identify and extract SIG/BOM in given sequence. + """ + + for iana_encoding in ENCODING_MARKS: + marks: Union[bytes, List[bytes]] = ENCODING_MARKS[iana_encoding] + + if isinstance(marks, bytes): + marks = [marks] + + for mark in marks: + if sequence.startswith(mark): + return iana_encoding, mark + + return None, b"" + + +def should_strip_sig_or_bom(iana_encoding: str) -> bool: + return iana_encoding not in {"utf_16", "utf_32"} + + +def iana_name(cp_name: str, strict: bool = True) -> str: + cp_name = cp_name.lower().replace("-", "_") + + encoding_alias: str + encoding_iana: str + + for encoding_alias, encoding_iana in aliases.items(): + if cp_name in [encoding_alias, encoding_iana]: + return encoding_iana + + if strict: + raise ValueError("Unable to retrieve IANA for '{}'".format(cp_name)) + + return cp_name + + +def range_scan(decoded_sequence: str) -> List[str]: + ranges: Set[str] = set() + + for character in decoded_sequence: + character_range: Optional[str] = unicode_range(character) + + if character_range is None: + continue + + ranges.add(character_range) + + return list(ranges) + + +def cp_similarity(iana_name_a: str, iana_name_b: str) -> float: + if is_multi_byte_encoding(iana_name_a) or is_multi_byte_encoding(iana_name_b): + return 0.0 + + decoder_a = importlib.import_module( + "encodings.{}".format(iana_name_a) + ).IncrementalDecoder + decoder_b = importlib.import_module( + "encodings.{}".format(iana_name_b) + ).IncrementalDecoder + + id_a: IncrementalDecoder = decoder_a(errors="ignore") + id_b: IncrementalDecoder = decoder_b(errors="ignore") + + character_match_count: int = 0 + + for i in range(255): + to_be_decoded: bytes = bytes([i]) + if id_a.decode(to_be_decoded) == id_b.decode(to_be_decoded): + character_match_count += 1 + + return character_match_count / 254 + + +def is_cp_similar(iana_name_a: str, iana_name_b: str) -> bool: + """ + Determine if two code page are at least 80% similar. IANA_SUPPORTED_SIMILAR dict was generated using + the function cp_similarity. + """ + return ( + iana_name_a in IANA_SUPPORTED_SIMILAR + and iana_name_b in IANA_SUPPORTED_SIMILAR[iana_name_a] + ) + + +def set_logging_handler( + name: str = "charset_normalizer", + level: int = logging.INFO, + format_string: str = "%(asctime)s | %(levelname)s | %(message)s", +) -> None: + logger = logging.getLogger(name) + logger.setLevel(level) + + handler = logging.StreamHandler() + handler.setFormatter(logging.Formatter(format_string)) + logger.addHandler(handler) + + +def cut_sequence_chunks( + sequences: bytes, + encoding_iana: str, + offsets: range, + chunk_size: int, + bom_or_sig_available: bool, + strip_sig_or_bom: bool, + sig_payload: bytes, + is_multi_byte_decoder: bool, + decoded_payload: Optional[str] = None, +) -> Generator[str, None, None]: + if decoded_payload and is_multi_byte_decoder is False: + for i in offsets: + chunk = decoded_payload[i : i + chunk_size] + if not chunk: + break + yield chunk + else: + for i in offsets: + chunk_end = i + chunk_size + if chunk_end > len(sequences) + 8: + continue + + cut_sequence = sequences[i : i + chunk_size] + + if bom_or_sig_available and strip_sig_or_bom is False: + cut_sequence = sig_payload + cut_sequence + + chunk = cut_sequence.decode( + encoding_iana, + errors="ignore" if is_multi_byte_decoder else "strict", + ) + + # multi-byte bad cutting detector and adjustment + # not the cleanest way to perform that fix but clever enough for now. + if is_multi_byte_decoder and i > 0: + chunk_partial_size_chk: int = min(chunk_size, 16) + + if ( + decoded_payload + and chunk[:chunk_partial_size_chk] not in decoded_payload + ): + for j in range(i, i - 4, -1): + cut_sequence = sequences[j:chunk_end] + + if bom_or_sig_available and strip_sig_or_bom is False: + cut_sequence = sig_payload + cut_sequence + + chunk = cut_sequence.decode(encoding_iana, errors="ignore") + + if chunk[:chunk_partial_size_chk] in decoded_payload: + break + + yield chunk diff --git a/env/lib/python3.12/site-packages/charset_normalizer/version.py b/env/lib/python3.12/site-packages/charset_normalizer/version.py new file mode 100644 index 0000000..699990e --- /dev/null +++ b/env/lib/python3.12/site-packages/charset_normalizer/version.py @@ -0,0 +1,6 @@ +""" +Expose version +""" + +__version__ = "3.4.0" +VERSION = __version__.split(".") diff --git a/env/lib/python3.12/site-packages/gitlab/__init__.py b/env/lib/python3.12/site-packages/gitlab/__init__.py new file mode 100644 index 0000000..6c6810a --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/__init__.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013-2019 Gauvain Pocentek, 2019-2023 python-gitlab team +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . +"""Wrapper for the GitLab API.""" + +import warnings + +import gitlab.config # noqa: F401 +from gitlab._version import ( # noqa: F401 + __author__, + __copyright__, + __email__, + __license__, + __title__, + __version__, +) +from gitlab.client import Gitlab, GitlabList, GraphQL # noqa: F401 +from gitlab.exceptions import * # noqa: F401,F403 + +warnings.filterwarnings("default", category=DeprecationWarning, module="^gitlab") + + +__all__ = [ + "__author__", + "__copyright__", + "__email__", + "__license__", + "__title__", + "__version__", + "Gitlab", + "GitlabList", + "GraphQL", +] +__all__.extend(gitlab.exceptions.__all__) diff --git a/env/lib/python3.12/site-packages/gitlab/__main__.py b/env/lib/python3.12/site-packages/gitlab/__main__.py new file mode 100644 index 0000000..e1a914c --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/__main__.py @@ -0,0 +1,4 @@ +import gitlab.cli + +if __name__ == "__main__": + gitlab.cli.main() diff --git a/env/lib/python3.12/site-packages/gitlab/__pycache__/__init__.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9c11b3fea03c44b7daf14e8b066ce3ce89235c33 GIT binary patch literal 892 zcmaJ5v`?=eB+nZF zj8t-DG9TOCH|gGh7z7}Ou|{D4$6gC+(${D`Z3K-}5A@UsjMNOw)C#QB4s59E>$I6p z1QTg1Xr=9-J?0wJ`KUpl0SxuKXe?xiA)_ zir&(q2L-$$j2L&rRmwMvC&{?h(}Wp?949#&2tCc?Rf;`}sok);0(B>*D=-w83M>Wc zw5%z?J0}c;;yjXq%x59XNS2hMRrT*gdDbO~(5qB9hxC!||4%yZLJ7|JKZC{OVKclQ z;eyL8l%m}wlwp<(0?r7W-Pa7L?E?j80K7c}x4wg!A7FaZ+yT==F#Xp0dUgKu oU>hv`*6pUYY3!Z{(0ti`(SEhIk literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/__pycache__/__main__.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/__pycache__/__main__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4bba6c367acdafc403901399defa00e6df3bd2f3 GIT binary patch literal 323 zcmX@j%ge<81iPmArn>;?#~=<2FhLogeSnPV3@HpLj5!QZjHyg1OxYR?3`NqZj9F|j z#Rxi!6TybDRzn$#43&(PjGD|ZL43bk9P#nFiJ5uv@tUl+xY9FAauSpDl5;X|u|e1% z`Mkv3)cE*Y%phSFkm8jLpFx^`x$9@-=cekX09mK3KZ>!;?G>E~o7=@(R% zWaQ@=>lqs97iX5F>J}s>XD6no7VAR{)`!`vS5Wzj!zMRBr8Fniu80R{E+Y^ZD+7rS q%#4hTw;2Qa0R6bdR!GV=3u(=$tQ5|b24QWJBloSgFuDvL7H zGfEVU3=EBRfrO<3rcRJBP|nC0n;DYn5St317CEHnCT8a7CFkefV)bzk@G-99MX|Yx z)l|<=&%jTU?G{&jd}1lkQAP3bw|L{@lVOelayjGUQ$gkcncVU5IhjCD6sJPOOMo5# zF@fS`sYS(^`FZj2D;Yk60_T^zenx(7s(wm-UV28peqL%xacZ)DYF?RsPG*um#2LnV zhDQ3unI);Z1&PVoiRr1u`j8;ehZ(0=Q2C3)CO1E&G$+-rhzDpcDCCQkfy4)9Mn=XP iyv7Y&Hv~c&cyI8iH*ntI6K&wW!6OZ3HF6h$A`k%W50E1O literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/__pycache__/base.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/__pycache__/base.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6b85f0c3f05e5ef59f1209c02f861cb54f975159 GIT binary patch literal 19258 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

Ch^hMmH@|Fl80vkU#_?28L0tWV3oS{blW^b zI$&Mn8=ozqh6Cz)VVKz$Y27cytR7Eu6^*RPka{HLzRs=aZsg!d3c2c$6nL~p>mH1q zLu|ks(vGZAxDG^hdHYp}A*av#^S-Od+1gq=;HW*OQTg5aa^wGQ?McuvLLxwf;3aMl zUfZExS#*Q+9vQC)>cfj@|&Yq{}wNrxd2%Edw>x z$wtK)1I9IaG@y@~WD8g{;eiX7U&#WrCEKViRe{Jx#oZ!XtA=dZp_*=06qojZOnsIO zXLRbA34>z>@?iZ8Q%fjGAa#@Ke~_(sP!Ch`O4DoHOuU?YwM& zcEPHDmv%C&4HVvR;gVOb<8FFl3SUX4t|rl*2zEq;4d6PULsqc9T>!{dk&mW2fr-i=0lQ|rU%wAD0 zSGwuAgm+pz7uN}d#~yHrNGwVI9?k#xt-aGW~k9_~ghWGHh!;4>Cij;LmL-RvV zQZig%FcRFu%eml7CIkseksAPBJ{cCZc z6lf_1_7(zr;VEHF*5kj^cB^giY^iZuv2lN)aX(mSf9>|IjK6PP94d2ukMT1mU}#<9 z%KI63>Fii`tO$Q^-c}9)u-wh`9{qvquUs1k`ikzc?{jzAyS*R3{-et)p4-D~p7%!! zo?YwivBjZ+d#ucv48DgB@6F50my3?hf}`^uclWCwIqolfynn+nx}^K1&0VrPZ;mdH zu7{2{Yqd;WIMZ}d8Y@wZQgbin4D$Cr;6ZMzFLcu33{noBk>TtKefx`uYP z!-^Obb{#6geAu@a?AssM+bXxx8|PFpy6s(g{ry1E-1G}`(-&n6kon@t4#w{PjA0E9 z*=#TCA^qQ<`Iv^||NQs_%Xr4w-#&4x2tFWkqko0{=HN}+vh54R^*xnvcmL6W!)F7` zPXhkoF6M6njl)N{pSD|vj~jow--+>SeO>4E%-;pJ4|nMQ?oeOnFt7g^Z-9@Vbyj);oFHPCmg1n*n25%OS@q0jk=0db8O;R%D_Ws3f4i2k;S*zglydl9@H5hp~l zS9_e%4LU9pgO9({02-))k2@bf*4{tP2D&d^IL)ht`?uusj$lxyy5 zt~0PrWd zy?`?HCtGC`Ld>-g3qq`nuXVNm*733pzwGeqhOz^5PR8cN-*J_(4e-$zolDY^xH7gh zTQD>~_5kqHODxB_m*DpjkgR-dHCFI<(fs{0j}cUMTG&9z-&EFP+R;PPM+VE%-h#pZ z*Z{zClb-Ebvz8f1?n;j_`P4qGV;fe}Wd_r`*NQ!Zg`UC3^s78>FtS}MUn~0e7ySDl tGw@MvXkZ;H@LLT?R{I}gQr>H3o0n#a&W?h!<1qstPXc2sYovyW{|9w+iS+;g literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/__pycache__/client.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/__pycache__/client.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4523c509134a2c4c4c9fcf57ac8d8390f3a8fad3 GIT binary patch literal 55818 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/__pycache__/exceptions.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/__pycache__/exceptions.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aef7fc0d2fd6abea3ed19482923a8aedfa6af073 GIT binary patch literal 14269 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 ojSBMfZ2r`w9f)c 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 eutMDJsI3E|` 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/__pycache__/utils.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/__pycache__/utils.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..61317d6a4777e6feeb62fd6273d4c00da95ea4d6 GIT binary patch literal 12455 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/_backends/__init__.py b/env/lib/python3.12/site-packages/gitlab/_backends/__init__.py new file mode 100644 index 0000000..7e6e362 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/_backends/__init__.py @@ -0,0 +1,22 @@ +""" +Defines http backends for processing http requests +""" + +from .requests_backend import ( + JobTokenAuth, + OAuthTokenAuth, + PrivateTokenAuth, + RequestsBackend, + RequestsResponse, +) + +DefaultBackend = RequestsBackend +DefaultResponse = RequestsResponse + +__all__ = [ + "DefaultBackend", + "DefaultResponse", + "JobTokenAuth", + "OAuthTokenAuth", + "PrivateTokenAuth", +] diff --git a/env/lib/python3.12/site-packages/gitlab/_backends/__pycache__/__init__.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/_backends/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7e84e3afb253a94d67abcf000d0de9872356db98 GIT binary patch literal 522 zcmZ8dyH3L}6t(l}185_@ps=70VDT6c5{L*%IBzCafN@aqL4?tpP;}`e^ zegI`cytw$)dA24l<)EYw2sST#{CnSi~Nu+JerBi}y;HcXyYK(=V&sgDCE3)ZB{)wemw$)0g zm(Va!b_Z$7*dv-4ihfQ>EHWUW;883H2d$t_fR9L;^hiF|vEZ9)>l;KR8dh`jk{|*_ zqC}@bk5tBrFqZH{Gq#qGf9l(r2!|=`NZ&Y=zo%9VyxSP#56i;NciqF*7c%hfqs67` T*307Zb^Fut=B%5VY#Hq@u(_AH literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/_backends/__pycache__/graphql.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/_backends/__pycache__/graphql.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e6d3119864e36f5479189866479a6f2d41c33412 GIT binary patch literal 1491 zcma)6J!~9B6rS1J-CO@$eiY(ZD4>x*pq1iVl8A!HLIfm2gB1xE=$h4dXMDGKZgxF0 z>-elITv);>f+#>qNkM@{K~F_b160w96ety)(Gd})%A46cV}*v1_RV|qX5RPadvEsV zPG=s$`0=Zc`+s-{J+{Vd1XE>l1C;xSA%+DS;vU9U_k`E;U~Y-l(C_&edFU2m{sCeE z_rGs7XM4fOi^D&y5#zdbQ;ybPKJ(G~`t48G6_vUyl*yXCjSQ#8WF3^x0hXg4W(c5g zuf;s>vlb6NTReTF(V5Tv&F~OyVip`M_S!6B;ep?aU~a=acZhazZ~hY$&(&vd;0G~Iau#N;ccbCEXC5l&aXtnZ+9wl_JF* zIXmDI1B@+R8d8*8Hc6}x@>94(aHC13r*Qxp5He9{PHea-HYubtA^J%g4KN&FEH{uJ z6@*r1(13hcD7dPjxzJZ22zO-Y8%fg7&7j)oX2me+D_Rb=#Y#CcgF+@iNRn$^ah<$# zwTV*uRP}WoW{$%;+`41!3@YJP~V#Mk&fGBYo_>yObrAEB|AqjBq7`~@`S z7>`j3P27wTI>Kvls}6Kka#crZn#%QO~7mCaBhFsx7#! z>;ALb$)FhWgcY(sC=v;r@+{$UClUEZ(p>O*_v*Do=Z3G8G~1$mxF?VSJ(i>!u)rmQ zg@%%DIZ_>ny|?^A7j|bEo&&GG4C3iN`aSC0ZT}iAKY0C@DE{V+-=g^8(&a<{-oga@ z=!7k6*kPaD1ZaVGGeT+slp~-)odHE#?ufF%>vmR1$uqNe>BStTj+bE9#4@mt9!87m zJZS#|OI?6{%AP$97PyYvyZ9d{+lZI!i6tv6M(ow0;-*q^EncuClXS?_w4P7XVZkb4 z^~E&ZuBe!L+G)y)4615xUI*^^)?xE59nI>Z4Zdu>ooR71E<~EfSlQlknZD;}QTE^C zgl!1@7Ko<@=r1n}qT_R3@XCYi7{T=2+dr%xtvdCm>rd>;B*H=GpAdw*g$ogfb!bK< zyj_=?dKIG87vLRqPkt_4m#wnpYM>o`mIs&4vuL%s^tQ4rN?OT S5$gUOp2wXpm`F%?h#FyPbR3`?$=`88%f4 z7nHVyWYf8zAWD;(o{Gj73Y$Sdq=>@Zf=!c(`FHP}%h52p`{sYmuYbS)pZO`D&mg{j z_~uUQ0|}vLpbVEX5YE5j!U3|8EjY+XcEJ$1E;^zs8Img-va1-1s~W11_)|uT`z1$n z(?(iASlF5xrhT#7^7iKl5r|ZHrmT?_kf+94F408vKC;zaWT$ZU5w8!Hk&mq!x28v| zg;3BlXArQd%S^iEg-m|0)1XZIuuD6>XE{u{>v2IBSm{pBp`ETp=xwjz+nDI$8Du}x zIB>uA5%H& z=?W{pYc;m9XMci&uI~kyX=Es=1k)bzHXGttKB)Oz=5T;Q^ibG*h;)(30d|@s&#eK( zFD^d+xYqVvT(fBf3py09ba@$83kS7UhdNfh zX4aFsf?9V#O0^p@%``h+hnnX7*|EB-Lr)PZ0L~tu)AfyWE+AclgP!GL(_|UbbbY($ zfSfbUdp*k;cqFUdUyr(bG1B!+eVn8W{Rx-DYG zmavLbSi=fVH^n)A5@(VfWLy4^H#_20xHlcgsa(p%QYt=?$I3{Y#%=l7o5pE7gA2_m zJ3BH~#W1JmS!&Q8rVeKgmEQx)4OohHTsnv2j}f8vqPn@FRzjaf`&PvhcK2jugH} zDk@AwDUdW&tnBp;KRa4J3Xb0R_KWZD9?!4#D{KA2TTvPUGGhV9E9=Me>;1~je&L-c z3lTXqF?U$r&qsOC3TX1m;r0D%Q4zEf_@)o((Wi%De@^e0ZbTDcp9K5VejzG@HigPF z(KJXiC^PqWg-h{W_zQ|oZUcOmUW|$3oP_~XY1r*}t(dHYwihg3<-u%ucuP&nX{%$0 zR^8!STgAy^o6wu%Qx@>&n7<=UpFr!`M3UXaUs3FVFGzTgIewY<=i1xJ<8hO$@uLF& z2e&yyk{}4bq7482fmVJ-E6-5zH?;9oQct9EUn=kIJdx&qm#_UP-?&gk;g+!1zCf^F QWb(qo*X@50-{Oz|7gPGI6#xJL literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/_backends/__pycache__/requests_backend.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/_backends/__pycache__/requests_backend.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5ebb8bf0889441fbd6e528b6469348bb7e37a28a GIT binary patch literal 8679 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 None: + pass + + def close(self) -> None: + pass diff --git a/env/lib/python3.12/site-packages/gitlab/_backends/protocol.py b/env/lib/python3.12/site-packages/gitlab/_backends/protocol.py new file mode 100644 index 0000000..72cee22 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/_backends/protocol.py @@ -0,0 +1,32 @@ +import abc +import sys +from typing import Any, Dict, Optional, Union + +import requests +from requests_toolbelt.multipart.encoder import MultipartEncoder # type: ignore + +if sys.version_info >= (3, 8): + from typing import Protocol +else: + from typing_extensions import Protocol + + +class BackendResponse(Protocol): + @abc.abstractmethod + def __init__(self, response: requests.Response) -> None: ... + + +class Backend(Protocol): + @abc.abstractmethod + def http_request( + self, + method: str, + url: str, + json: Optional[Union[Dict[str, Any], bytes]], + data: Optional[Union[Dict[str, Any], MultipartEncoder]], + params: Optional[Any], + timeout: Optional[float], + verify: Optional[Union[bool, str]], + stream: Optional[bool], + **kwargs: Any, + ) -> BackendResponse: ... diff --git a/env/lib/python3.12/site-packages/gitlab/_backends/requests_backend.py b/env/lib/python3.12/site-packages/gitlab/_backends/requests_backend.py new file mode 100644 index 0000000..79e3cbf --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/_backends/requests_backend.py @@ -0,0 +1,168 @@ +from __future__ import annotations + +import dataclasses +from typing import Any, BinaryIO, Dict, Optional, TYPE_CHECKING, Union + +import requests +from requests import PreparedRequest +from requests.auth import AuthBase +from requests.structures import CaseInsensitiveDict +from requests_toolbelt.multipart.encoder import MultipartEncoder # type: ignore + +from . import protocol + + +class TokenAuth: + def __init__(self, token: str): + self.token = token + + +class OAuthTokenAuth(TokenAuth, AuthBase): + def __call__(self, r: PreparedRequest) -> PreparedRequest: + r.headers["Authorization"] = f"Bearer {self.token}" + r.headers.pop("PRIVATE-TOKEN", None) + r.headers.pop("JOB-TOKEN", None) + return r + + +class PrivateTokenAuth(TokenAuth, AuthBase): + def __call__(self, r: PreparedRequest) -> PreparedRequest: + r.headers["PRIVATE-TOKEN"] = self.token + r.headers.pop("JOB-TOKEN", None) + r.headers.pop("Authorization", None) + return r + + +class JobTokenAuth(TokenAuth, AuthBase): + def __call__(self, r: PreparedRequest) -> PreparedRequest: + r.headers["JOB-TOKEN"] = self.token + r.headers.pop("PRIVATE-TOKEN", None) + r.headers.pop("Authorization", None) + return r + + +@dataclasses.dataclass +class SendData: + content_type: str + data: Optional[Union[Dict[str, Any], MultipartEncoder]] = None + json: Optional[Union[Dict[str, Any], bytes]] = None + + def __post_init__(self) -> None: + if self.json is not None and self.data is not None: + raise ValueError( + f"`json` and `data` are mutually exclusive. Only one can be set. " + f"json={self.json!r} data={self.data!r}" + ) + + +class RequestsResponse(protocol.BackendResponse): + def __init__(self, response: requests.Response) -> None: + self._response: requests.Response = response + + @property + def response(self) -> requests.Response: + return self._response + + @property + def status_code(self) -> int: + return self._response.status_code + + @property + def headers(self) -> CaseInsensitiveDict[str]: + return self._response.headers + + @property + def content(self) -> bytes: + return self._response.content + + @property + def reason(self) -> str: + return self._response.reason + + def json(self) -> Any: + return self._response.json() + + +class RequestsBackend(protocol.Backend): + def __init__(self, session: Optional[requests.Session] = None) -> None: + self._client: requests.Session = session or requests.Session() + + @property + def client(self) -> requests.Session: + return self._client + + @staticmethod + def prepare_send_data( + files: Optional[Dict[str, Any]] = None, + post_data: Optional[Union[Dict[str, Any], bytes, BinaryIO]] = None, + raw: bool = False, + ) -> SendData: + if files: + if post_data is None: + post_data = {} + else: + # When creating a `MultipartEncoder` instance with data-types + # which don't have an `encode` method it will cause an error: + # object has no attribute 'encode' + # So convert common non-string types into strings. + if TYPE_CHECKING: + assert isinstance(post_data, dict) + for k, v in post_data.items(): + if isinstance(v, bool): + v = int(v) + if isinstance(v, (complex, float, int)): + post_data[k] = str(v) + post_data["file"] = files.get("file") + post_data["avatar"] = files.get("avatar") + + data = MultipartEncoder(fields=post_data) + return SendData(data=data, content_type=data.content_type) + + if raw and post_data: + return SendData(data=post_data, content_type="application/octet-stream") + + if TYPE_CHECKING: + assert not isinstance(post_data, BinaryIO) + + return SendData(json=post_data, content_type="application/json") + + def http_request( + self, + method: str, + url: str, + json: Optional[Union[Dict[str, Any], bytes]] = None, + data: Optional[Union[Dict[str, Any], MultipartEncoder]] = None, + params: Optional[Any] = None, + timeout: Optional[float] = None, + verify: Optional[Union[bool, str]] = True, + stream: Optional[bool] = False, + **kwargs: Any, + ) -> RequestsResponse: + """Make HTTP request + + Args: + method: The HTTP method to call ('get', 'post', 'put', 'delete', etc.) + url: The full URL + data: The data to send to the server in the body of the request + json: Data to send in the body in json by default + timeout: The timeout, in seconds, for the request + verify: Whether SSL certificates should be validated. If + the value is a string, it is the path to a CA file used for + certificate validation. + stream: Whether the data should be streamed + + Returns: + A requests Response object. + """ + response: requests.Response = self._client.request( + method=method, + url=url, + params=params, + data=data, + timeout=timeout, + stream=stream, + verify=verify, + json=json, + **kwargs, + ) + return RequestsResponse(response=response) diff --git a/env/lib/python3.12/site-packages/gitlab/_version.py b/env/lib/python3.12/site-packages/gitlab/_version.py new file mode 100644 index 0000000..5685813 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/_version.py @@ -0,0 +1,6 @@ +__author__ = "Gauvain Pocentek, python-gitlab team" +__copyright__ = "Copyright 2013-2019 Gauvain Pocentek, 2019-2023 python-gitlab team" +__email__ = "gauvainpocentek@gmail.com" +__license__ = "LGPL3" +__title__ = "python-gitlab" +__version__ = "5.1.0" diff --git a/env/lib/python3.12/site-packages/gitlab/base.py b/env/lib/python3.12/site-packages/gitlab/base.py new file mode 100644 index 0000000..f7ffaae --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/base.py @@ -0,0 +1,394 @@ +import copy +import importlib +import json +import pprint +import textwrap +from types import ModuleType +from typing import Any, Dict, Iterable, Optional, Type, TYPE_CHECKING, Union + +import gitlab +from gitlab import types as g_types +from gitlab.exceptions import GitlabParsingError + +from .client import Gitlab, GitlabList + +__all__ = [ + "RESTObject", + "RESTObjectList", + "RESTManager", +] + + +_URL_ATTRIBUTE_ERROR = ( + f"https://python-gitlab.readthedocs.io/en/v{gitlab.__version__}/" + f"faq.html#attribute-error-list" +) + + +class RESTObject: + """Represents an object built from server data. + + It holds the attributes know from the server, and the updated attributes in + another. This allows smart updates, if the object allows it. + + You can redefine ``_id_attr`` in child classes to specify which attribute + must be used as the unique ID. ``None`` means that the object can be updated + without ID in the url. + + Likewise, you can define a ``_repr_attr`` in subclasses to specify which + attribute should be added as a human-readable identifier when called in the + object's ``__repr__()`` method. + """ + + _id_attr: Optional[str] = "id" + _attrs: Dict[str, Any] + _created_from_list: bool # Indicates if object was created from a list() action + _module: ModuleType + _parent_attrs: Dict[str, Any] + _repr_attr: Optional[str] = None + _updated_attrs: Dict[str, Any] + _lazy: bool + manager: "RESTManager" + + def __init__( + self, + manager: "RESTManager", + attrs: Dict[str, Any], + *, + created_from_list: bool = False, + lazy: bool = False, + ) -> None: + if not isinstance(attrs, dict): + raise GitlabParsingError( + f"Attempted to initialize RESTObject with a non-dictionary value: " + f"{attrs!r}\nThis likely indicates an incorrect or malformed server " + f"response." + ) + self.__dict__.update( + { + "manager": manager, + "_attrs": attrs, + "_updated_attrs": {}, + "_module": importlib.import_module(self.__module__), + "_created_from_list": created_from_list, + "_lazy": lazy, + } + ) + self.__dict__["_parent_attrs"] = self.manager.parent_attrs + self._create_managers() + + def __getstate__(self) -> Dict[str, Any]: + state = self.__dict__.copy() + module = state.pop("_module") + state["_module_name"] = module.__name__ + return state + + def __setstate__(self, state: Dict[str, Any]) -> None: + module_name = state.pop("_module_name") + self.__dict__.update(state) + self.__dict__["_module"] = importlib.import_module(module_name) + + def __getattr__(self, name: str) -> Any: + if name in self.__dict__["_updated_attrs"]: + return self.__dict__["_updated_attrs"][name] + + if name in self.__dict__["_attrs"]: + value = self.__dict__["_attrs"][name] + # If the value is a list, we copy it in the _updated_attrs dict + # because we are not able to detect changes made on the object + # (append, insert, pop, ...). Without forcing the attr + # creation __setattr__ is never called, the list never ends up + # in the _updated_attrs dict, and the update() and save() + # method never push the new data to the server. + # See https://github.com/python-gitlab/python-gitlab/issues/306 + # + # note: _parent_attrs will only store simple values (int) so we + # don't make this check in the next block. + if isinstance(value, list): + self.__dict__["_updated_attrs"][name] = value[:] + return self.__dict__["_updated_attrs"][name] + + return value + + if name in self.__dict__["_parent_attrs"]: + return self.__dict__["_parent_attrs"][name] + + message = f"{type(self).__name__!r} object has no attribute {name!r}" + if self._created_from_list: + message = ( + f"{message}\n\n" + + textwrap.fill( + f"{self.__class__!r} was created via a list() call and " + f"only a subset of the data may be present. To ensure " + f"all data is present get the object using a " + f"get(object.id) call. For more details, see:" + ) + + f"\n\n{_URL_ATTRIBUTE_ERROR}" + ) + elif self._lazy: + message = f"{message}\n\n" + textwrap.fill( + f"If you tried to access object attributes returned from the server, " + f"note that {self.__class__!r} was created as a `lazy` object and was " + f"not initialized with any data." + ) + raise AttributeError(message) + + def __setattr__(self, name: str, value: Any) -> None: + self.__dict__["_updated_attrs"][name] = value + + def asdict(self, *, with_parent_attrs: bool = False) -> Dict[str, Any]: + data = {} + if with_parent_attrs: + data.update(copy.deepcopy(self._parent_attrs)) + data.update(copy.deepcopy(self._attrs)) + data.update(copy.deepcopy(self._updated_attrs)) + return data + + @property + def attributes(self) -> Dict[str, Any]: + return self.asdict(with_parent_attrs=True) + + def to_json(self, *, with_parent_attrs: bool = False, **kwargs: Any) -> str: + return json.dumps(self.asdict(with_parent_attrs=with_parent_attrs), **kwargs) + + def __str__(self) -> str: + return f"{type(self)} => {self.asdict()}" + + def pformat(self) -> str: + return f"{type(self)} => \n{pprint.pformat(self.asdict())}" + + def pprint(self) -> None: + print(self.pformat()) + + def __repr__(self) -> str: + name = self.__class__.__name__ + + if (self._id_attr and self._repr_value) and (self._id_attr != self._repr_attr): + return ( + f"<{name} {self._id_attr}:{self.get_id()} " + f"{self._repr_attr}:{self._repr_value}>" + ) + if self._id_attr: + return f"<{name} {self._id_attr}:{self.get_id()}>" + if self._repr_value: + return f"<{name} {self._repr_attr}:{self._repr_value}>" + + return f"<{name}>" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, RESTObject): + return NotImplemented + if self.get_id() and other.get_id(): + return self.get_id() == other.get_id() + return super() == other + + def __ne__(self, other: object) -> bool: + if not isinstance(other, RESTObject): + return NotImplemented + if self.get_id() and other.get_id(): + return self.get_id() != other.get_id() + return super() != other + + def __dir__(self) -> Iterable[str]: + return set(self.attributes).union(super().__dir__()) + + def __hash__(self) -> int: + if not self.get_id(): + return super().__hash__() + return hash(self.get_id()) + + def _create_managers(self) -> None: + # NOTE(jlvillal): We are creating our managers by looking at the class + # annotations. If an attribute is annotated as being a *Manager type + # then we create the manager and assign it to the attribute. + for attr, annotation in sorted(self.__class__.__annotations__.items()): + # We ignore creating a manager for the 'manager' attribute as that + # is done in the self.__init__() method + if attr in ("manager",): + continue + if not isinstance(annotation, (type, str)): # pragma: no cover + continue + if isinstance(annotation, type): + cls_name = annotation.__name__ + else: + cls_name = annotation + # All *Manager classes are used except for the base "RESTManager" class + if cls_name == "RESTManager" or not cls_name.endswith("Manager"): + continue + cls = getattr(self._module, cls_name) + manager = cls(self.manager.gitlab, parent=self) + # Since we have our own __setattr__ method, we can't use setattr() + self.__dict__[attr] = manager + + def _update_attrs(self, new_attrs: Dict[str, Any]) -> None: + self.__dict__["_updated_attrs"] = {} + self.__dict__["_attrs"] = new_attrs + + def get_id(self) -> Optional[Union[int, str]]: + """Returns the id of the resource.""" + if self._id_attr is None or not hasattr(self, self._id_attr): + return None + id_val = getattr(self, self._id_attr) + if TYPE_CHECKING: + assert id_val is None or isinstance(id_val, (int, str)) + return id_val + + @property + def _repr_value(self) -> Optional[str]: + """Safely returns the human-readable resource name if present.""" + if self._repr_attr is None or not hasattr(self, self._repr_attr): + return None + repr_val = getattr(self, self._repr_attr) + if TYPE_CHECKING: + assert isinstance(repr_val, str) + return repr_val + + @property + def encoded_id(self) -> Optional[Union[int, str]]: + """Ensure that the ID is url-encoded so that it can be safely used in a URL + path""" + obj_id = self.get_id() + if isinstance(obj_id, str): + obj_id = gitlab.utils.EncodedId(obj_id) + return obj_id + + +class RESTObjectList: + """Generator object representing a list of RESTObject's. + + This generator uses the Gitlab pagination system to fetch new data when + required. + + Note: you should not instantiate such objects, they are returned by calls + to RESTManager.list() + + Args: + manager: Manager to attach to the created objects + obj_cls: Type of objects to create from the json data + _list: A GitlabList object + """ + + def __init__( + self, manager: "RESTManager", obj_cls: Type[RESTObject], _list: GitlabList + ) -> None: + """Creates an objects list from a GitlabList. + + You should not create objects of this type, but use managers list() + methods instead. + + Args: + manager: the RESTManager to attach to the objects + obj_cls: the class of the created objects + _list: the GitlabList holding the data + """ + self.manager = manager + self._obj_cls = obj_cls + self._list = _list + + def __iter__(self) -> "RESTObjectList": + return self + + def __len__(self) -> int: + return len(self._list) + + def __next__(self) -> RESTObject: + return self.next() + + def next(self) -> RESTObject: + data = self._list.next() + return self._obj_cls(self.manager, data, created_from_list=True) + + @property + def current_page(self) -> int: + """The current page number.""" + return self._list.current_page + + @property + def prev_page(self) -> Optional[int]: + """The previous page number. + + If None, the current page is the first. + """ + return self._list.prev_page + + @property + def next_page(self) -> Optional[int]: + """The next page number. + + If None, the current page is the last. + """ + return self._list.next_page + + @property + def per_page(self) -> Optional[int]: + """The number of items per page.""" + return self._list.per_page + + @property + def total_pages(self) -> Optional[int]: + """The total number of pages.""" + return self._list.total_pages + + @property + def total(self) -> Optional[int]: + """The total number of items.""" + return self._list.total + + +class RESTManager: + """Base class for CRUD operations on objects. + + Derived class must define ``_path`` and ``_obj_cls``. + + ``_path``: Base URL path on which requests will be sent (e.g. '/projects') + ``_obj_cls``: The class of objects that will be created + """ + + _create_attrs: g_types.RequiredOptional = g_types.RequiredOptional() + _update_attrs: g_types.RequiredOptional = g_types.RequiredOptional() + _path: Optional[str] = None + _obj_cls: Optional[Type[RESTObject]] = None + _from_parent_attrs: Dict[str, Any] = {} + _types: Dict[str, Type[g_types.GitlabAttribute]] = {} + + _computed_path: Optional[str] + _parent: Optional[RESTObject] + _parent_attrs: Dict[str, Any] + gitlab: Gitlab + + def __init__(self, gl: Gitlab, parent: Optional[RESTObject] = None) -> None: + """REST manager constructor. + + Args: + gl: :class:`~gitlab.Gitlab` connection to use to make requests. + parent: REST object to which the manager is attached. + """ + self.gitlab = gl + self._parent = parent # for nested managers + self._computed_path = self._compute_path() + + @property + def parent_attrs(self) -> Optional[Dict[str, Any]]: + return self._parent_attrs + + def _compute_path(self, path: Optional[str] = None) -> Optional[str]: + self._parent_attrs = {} + if path is None: + path = self._path + if path is None: + return None + if self._parent is None or not self._from_parent_attrs: + return path + + data: Dict[str, Optional[gitlab.utils.EncodedId]] = {} + for self_attr, parent_attr in self._from_parent_attrs.items(): + if not hasattr(self._parent, parent_attr): + data[self_attr] = None + continue + data[self_attr] = gitlab.utils.EncodedId(getattr(self._parent, parent_attr)) + self._parent_attrs = data + return path.format(**data) + + @property + def path(self) -> Optional[str]: + return self._computed_path diff --git a/env/lib/python3.12/site-packages/gitlab/cli.py b/env/lib/python3.12/site-packages/gitlab/cli.py new file mode 100644 index 0000000..fa139a7 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/cli.py @@ -0,0 +1,420 @@ +import argparse +import dataclasses +import functools +import os +import pathlib +import re +import sys +from types import ModuleType +from typing import ( + Any, + Callable, + cast, + Dict, + NoReturn, + Optional, + Tuple, + Type, + TYPE_CHECKING, + TypeVar, + Union, +) + +from requests.structures import CaseInsensitiveDict + +import gitlab.config +from gitlab.base import RESTObject + +# This regex is based on: +# https://github.com/jpvanhal/inflection/blob/master/inflection/__init__.py +camel_upperlower_regex = re.compile(r"([A-Z]+)([A-Z][a-z])") +camel_lowerupper_regex = re.compile(r"([a-z\d])([A-Z])") + + +@dataclasses.dataclass +class CustomAction: + required: Tuple[str, ...] + optional: Tuple[str, ...] + in_object: bool + requires_id: bool # if the `_id_attr` value should be a required argument + help: Optional[str] # help text for the custom action + + +# custom_actions = { +# cls: { +# action: CustomAction, +# }, +# } +custom_actions: Dict[str, Dict[str, CustomAction]] = {} + + +# For an explanation of how these type-hints work see: +# https://mypy.readthedocs.io/en/stable/generics.html#declaring-decorators +# +# The goal here is that functions which get decorated will retain their types. +__F = TypeVar("__F", bound=Callable[..., Any]) + + +def register_custom_action( + *, + cls_names: Union[str, Tuple[str, ...]], + required: Tuple[str, ...] = (), + optional: Tuple[str, ...] = (), + custom_action: Optional[str] = None, + requires_id: bool = True, # if the `_id_attr` value should be a required argument + help: Optional[str] = None, # help text for the action +) -> Callable[[__F], __F]: + def wrap(f: __F) -> __F: + @functools.wraps(f) + def wrapped_f(*args: Any, **kwargs: Any) -> Any: + return f(*args, **kwargs) + + # in_obj defines whether the method belongs to the obj or the manager + in_obj = True + if isinstance(cls_names, tuple): + classes = cls_names + else: + classes = (cls_names,) + + for cls_name in classes: + final_name = cls_name + if cls_name.endswith("Manager"): + final_name = cls_name.replace("Manager", "") + in_obj = False + if final_name not in custom_actions: + custom_actions[final_name] = {} + + action = custom_action or f.__name__.replace("_", "-") + custom_actions[final_name][action] = CustomAction( + required=required, + optional=optional, + in_object=in_obj, + requires_id=requires_id, + help=help, + ) + + return cast(__F, wrapped_f) + + return wrap + + +def die(msg: str, e: Optional[Exception] = None) -> NoReturn: + if e: + msg = f"{msg} ({e})" + sys.stderr.write(f"{msg}\n") + sys.exit(1) + + +def gitlab_resource_to_cls( + gitlab_resource: str, namespace: ModuleType +) -> Type[RESTObject]: + classes = CaseInsensitiveDict(namespace.__dict__) + lowercase_class = gitlab_resource.replace("-", "") + class_type = classes[lowercase_class] + if TYPE_CHECKING: + assert isinstance(class_type, type) + assert issubclass(class_type, RESTObject) + return class_type + + +def cls_to_gitlab_resource(cls: RESTObject) -> str: + dasherized_uppercase = camel_upperlower_regex.sub(r"\1-\2", cls.__name__) + dasherized_lowercase = camel_lowerupper_regex.sub(r"\1-\2", dasherized_uppercase) + return dasherized_lowercase.lower() + + +def _get_base_parser(add_help: bool = True) -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + add_help=add_help, + description="GitLab API Command Line Interface", + allow_abbrev=False, + ) + parser.add_argument("--version", help="Display the version.", action="store_true") + parser.add_argument( + "-v", + "--verbose", + "--fancy", + help="Verbose mode (legacy format only) [env var: GITLAB_VERBOSE]", + action="store_true", + default=os.getenv("GITLAB_VERBOSE"), + ) + parser.add_argument( + "-d", + "--debug", + help="Debug mode (display HTTP requests) [env var: GITLAB_DEBUG]", + action="store_true", + default=os.getenv("GITLAB_DEBUG"), + ) + parser.add_argument( + "-c", + "--config-file", + action="append", + help=( + "Configuration file to use. Can be used multiple times. " + "[env var: PYTHON_GITLAB_CFG]" + ), + ) + parser.add_argument( + "-g", + "--gitlab", + help=( + "Which configuration section should " + "be used. If not defined, the default selection " + "will be used." + ), + required=False, + ) + parser.add_argument( + "-o", + "--output", + help="Output format (v4 only): json|legacy|yaml", + required=False, + choices=["json", "legacy", "yaml"], + default="legacy", + ) + parser.add_argument( + "-f", + "--fields", + help=( + "Fields to display in the output (comma " + "separated). Not used with legacy output" + ), + required=False, + ) + parser.add_argument( + "--server-url", + help=("GitLab server URL [env var: GITLAB_URL]"), + required=False, + default=os.getenv("GITLAB_URL"), + ) + + ssl_verify_group = parser.add_mutually_exclusive_group() + ssl_verify_group.add_argument( + "--ssl-verify", + help=( + "Path to a CA_BUNDLE file or directory with certificates of trusted CAs. " + "[env var: GITLAB_SSL_VERIFY]" + ), + required=False, + default=os.getenv("GITLAB_SSL_VERIFY"), + ) + ssl_verify_group.add_argument( + "--no-ssl-verify", + help="Disable SSL verification", + required=False, + dest="ssl_verify", + action="store_false", + ) + + parser.add_argument( + "--timeout", + help=( + "Timeout to use for requests to the GitLab server. " + "[env var: GITLAB_TIMEOUT]" + ), + required=False, + type=int, + default=os.getenv("GITLAB_TIMEOUT"), + ) + parser.add_argument( + "--api-version", + help=("GitLab API version [env var: GITLAB_API_VERSION]"), + required=False, + default=os.getenv("GITLAB_API_VERSION"), + ) + parser.add_argument( + "--per-page", + help=( + "Number of entries to return per page in the response. " + "[env var: GITLAB_PER_PAGE]" + ), + required=False, + type=int, + default=os.getenv("GITLAB_PER_PAGE"), + ) + parser.add_argument( + "--pagination", + help=( + "Whether to use keyset or offset pagination [env var: GITLAB_PAGINATION]" + ), + required=False, + default=os.getenv("GITLAB_PAGINATION"), + ) + parser.add_argument( + "--order-by", + help=("Set order_by globally [env var: GITLAB_ORDER_BY]"), + required=False, + default=os.getenv("GITLAB_ORDER_BY"), + ) + parser.add_argument( + "--user-agent", + help=( + "The user agent to send to GitLab with the HTTP request. " + "[env var: GITLAB_USER_AGENT]" + ), + required=False, + default=os.getenv("GITLAB_USER_AGENT"), + ) + + tokens = parser.add_mutually_exclusive_group() + tokens.add_argument( + "--private-token", + help=("GitLab private access token [env var: GITLAB_PRIVATE_TOKEN]"), + required=False, + default=os.getenv("GITLAB_PRIVATE_TOKEN"), + ) + tokens.add_argument( + "--oauth-token", + help=("GitLab OAuth token [env var: GITLAB_OAUTH_TOKEN]"), + required=False, + default=os.getenv("GITLAB_OAUTH_TOKEN"), + ) + tokens.add_argument( + "--job-token", + help=("GitLab CI job token [env var: CI_JOB_TOKEN]"), + required=False, + ) + parser.add_argument( + "--skip-login", + help=( + "Skip initial authenticated API call to the current user endpoint. " + "This may be useful when invoking the CLI in scripts. " + "[env var: GITLAB_SKIP_LOGIN]" + ), + action="store_true", + default=os.getenv("GITLAB_SKIP_LOGIN"), + ) + parser.add_argument( + "--no-mask-credentials", + help="Don't mask credentials in debug mode", + dest="mask_credentials", + action="store_false", + ) + return parser + + +def _get_parser() -> argparse.ArgumentParser: + # NOTE: We must delay import of gitlab.v4.cli until now or + # otherwise it will cause circular import errors + from gitlab.v4 import cli as v4_cli + + parser = _get_base_parser() + return v4_cli.extend_parser(parser) + + +def _parse_value(v: Any) -> Any: + if isinstance(v, str) and v.startswith("@@"): + return v[1:] + if isinstance(v, str) and v.startswith("@"): + # If the user-provided value starts with @, we try to read the file + # path provided after @ as the real value. + filepath = pathlib.Path(v[1:]).expanduser().resolve() + try: + with open(filepath, encoding="utf-8") as f: + return f.read() + except UnicodeDecodeError: + with open(filepath, "rb") as f: + return f.read() + except OSError as exc: + exc_name = type(exc).__name__ + sys.stderr.write(f"{exc_name}: {exc}\n") + sys.exit(1) + + return v + + +def docs() -> argparse.ArgumentParser: # pragma: no cover + """ + Provide a statically generated parser for sphinx only, so we don't need + to provide dummy gitlab config for readthedocs. + """ + if "sphinx" not in sys.modules: + sys.exit("Docs parser is only intended for build_sphinx") + + return _get_parser() + + +def main() -> None: + if "--version" in sys.argv: + print(gitlab.__version__) + sys.exit(0) + + parser = _get_base_parser(add_help=False) + + # This first parsing step is used to find the gitlab config to use, and + # load the propermodule (v3 or v4) accordingly. At that point we don't have + # any subparser setup + (options, _) = parser.parse_known_args(sys.argv) + try: + config = gitlab.config.GitlabConfigParser(options.gitlab, options.config_file) + except gitlab.config.ConfigError as e: + if "--help" in sys.argv or "-h" in sys.argv: + parser.print_help() + sys.exit(0) + sys.exit(str(e)) + # We only support v4 API at this time + if config.api_version not in ("4",): # dead code # pragma: no cover + raise ModuleNotFoundError(f"gitlab.v{config.api_version}.cli") + + # Now we build the entire set of subcommands and do the complete parsing + parser = _get_parser() + try: + import argcomplete # type: ignore + + argcomplete.autocomplete(parser) # pragma: no cover + except Exception: + pass + args = parser.parse_args() + + config_files = args.config_file + gitlab_id = args.gitlab + verbose = args.verbose + output = args.output + fields = [] + if args.fields: + fields = [x.strip() for x in args.fields.split(",")] + debug = args.debug + gitlab_resource = args.gitlab_resource + resource_action = args.resource_action + skip_login = args.skip_login + mask_credentials = args.mask_credentials + + args_dict = vars(args) + # Remove CLI behavior-related args + for item in ( + "api_version", + "config_file", + "debug", + "fields", + "gitlab", + "gitlab_resource", + "job_token", + "mask_credentials", + "oauth_token", + "output", + "pagination", + "private_token", + "resource_action", + "server_url", + "skip_login", + "ssl_verify", + "timeout", + "user_agent", + "verbose", + "version", + ): + args_dict.pop(item) + args_dict = {k: _parse_value(v) for k, v in args_dict.items() if v is not None} + + try: + gl = gitlab.Gitlab.merge_config(vars(options), gitlab_id, config_files) + if debug: + gl.enable_debug(mask_credentials=mask_credentials) + if not skip_login and (gl.private_token or gl.oauth_token): + gl.auth() + except Exception as e: + die(str(e)) + + gitlab.v4.cli.run( + gl, gitlab_resource, resource_action, args_dict, verbose, output, fields + ) diff --git a/env/lib/python3.12/site-packages/gitlab/client.py b/env/lib/python3.12/site-packages/gitlab/client.py new file mode 100644 index 0000000..ed5803b --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/client.py @@ -0,0 +1,1369 @@ +"""Wrapper for the GitLab API.""" + +from __future__ import annotations + +import os +import re +from typing import ( + Any, + BinaryIO, + cast, + Dict, + List, + Optional, + Tuple, + Type, + TYPE_CHECKING, + Union, +) +from urllib import parse + +import requests + +import gitlab +import gitlab.config +import gitlab.const +import gitlab.exceptions +from gitlab import _backends, utils + +try: + import gql + import gql.transport.exceptions + import graphql + import httpx + + from ._backends.graphql import GitlabTransport + + _GQL_INSTALLED = True +except ImportError: # pragma: no cover + _GQL_INSTALLED = False + + +REDIRECT_MSG = ( + "python-gitlab detected a {status_code} ({reason!r}) redirection. You must update " + "your GitLab URL to the correct URL to avoid issues. The redirection was from: " + "{source!r} to {target!r}" +) + + +# https://docs.gitlab.com/ee/api/#offset-based-pagination +_PAGINATION_URL = ( + f"https://python-gitlab.readthedocs.io/en/v{gitlab.__version__}/" + f"api-usage.html#pagination" +) + + +class Gitlab: + """Represents a GitLab server connection. + + Args: + url: The URL of the GitLab server (defaults to https://gitlab.com). + private_token: The user private token + oauth_token: An oauth token + job_token: A CI job token + ssl_verify: Whether SSL certificates should be validated. If + the value is a string, it is the path to a CA file used for + certificate validation. + timeout: Timeout to use for requests to the GitLab server. + http_username: Username for HTTP authentication + http_password: Password for HTTP authentication + api_version: Gitlab API version to use (support for 4 only) + pagination: Can be set to 'keyset' to use keyset pagination + order_by: Set order_by globally + user_agent: A custom user agent to use for making HTTP requests. + retry_transient_errors: Whether to retry after 500, 502, 503, 504 + or 52x responses. Defaults to False. + keep_base_url: keep user-provided base URL for pagination if it + differs from response headers + + Keyword Args: + requests.Session session: HTTP Requests Session + RequestsBackend backend: Backend that will be used to make http requests + """ + + def __init__( + self, + url: Optional[str] = None, + private_token: Optional[str] = None, + oauth_token: Optional[str] = None, + job_token: Optional[str] = None, + ssl_verify: Union[bool, str] = True, + http_username: Optional[str] = None, + http_password: Optional[str] = None, + timeout: Optional[float] = None, + api_version: str = "4", + per_page: Optional[int] = None, + pagination: Optional[str] = None, + order_by: Optional[str] = None, + user_agent: str = gitlab.const.USER_AGENT, + retry_transient_errors: bool = False, + keep_base_url: bool = False, + **kwargs: Any, + ) -> None: + self._api_version = str(api_version) + self._server_version: Optional[str] = None + self._server_revision: Optional[str] = None + self._base_url = utils.get_base_url(url) + self._url = f"{self._base_url}/api/v{api_version}" + #: Timeout to use for requests to gitlab server + self.timeout = timeout + self.retry_transient_errors = retry_transient_errors + self.keep_base_url = keep_base_url + #: Headers that will be used in request to GitLab + self.headers = {"User-Agent": user_agent} + + #: Whether SSL certificates should be validated + self.ssl_verify = ssl_verify + + self.private_token = private_token + self.http_username = http_username + self.http_password = http_password + self.oauth_token = oauth_token + self.job_token = job_token + self._set_auth_info() + + #: Create a session object for requests + _backend: Type[_backends.DefaultBackend] = kwargs.pop( + "backend", _backends.DefaultBackend + ) + self._backend = _backend(**kwargs) + self.session = self._backend.client + + self.per_page = per_page + self.pagination = pagination + self.order_by = order_by + + # We only support v4 API at this time + if self._api_version not in ("4",): + raise ModuleNotFoundError(f"gitlab.v{self._api_version}.objects") + # NOTE: We must delay import of gitlab.v4.objects until now or + # otherwise it will cause circular import errors + from gitlab.v4 import objects + + self._objects = objects + self.user: Optional[objects.CurrentUser] = None + + self.broadcastmessages = objects.BroadcastMessageManager(self) + """See :class:`~gitlab.v4.objects.BroadcastMessageManager`""" + self.bulk_imports = objects.BulkImportManager(self) + """See :class:`~gitlab.v4.objects.BulkImportManager`""" + self.bulk_import_entities = objects.BulkImportAllEntityManager(self) + """See :class:`~gitlab.v4.objects.BulkImportAllEntityManager`""" + self.ci_lint = objects.CiLintManager(self) + """See :class:`~gitlab.v4.objects.CiLintManager`""" + self.deploykeys = objects.DeployKeyManager(self) + """See :class:`~gitlab.v4.objects.DeployKeyManager`""" + self.deploytokens = objects.DeployTokenManager(self) + """See :class:`~gitlab.v4.objects.DeployTokenManager`""" + self.geonodes = objects.GeoNodeManager(self) + """See :class:`~gitlab.v4.objects.GeoNodeManager`""" + self.gitlabciymls = objects.GitlabciymlManager(self) + """See :class:`~gitlab.v4.objects.GitlabciymlManager`""" + self.gitignores = objects.GitignoreManager(self) + """See :class:`~gitlab.v4.objects.GitignoreManager`""" + self.groups = objects.GroupManager(self) + """See :class:`~gitlab.v4.objects.GroupManager`""" + self.hooks = objects.HookManager(self) + """See :class:`~gitlab.v4.objects.HookManager`""" + self.issues = objects.IssueManager(self) + """See :class:`~gitlab.v4.objects.IssueManager`""" + self.issues_statistics = objects.IssuesStatisticsManager(self) + """See :class:`~gitlab.v4.objects.IssuesStatisticsManager`""" + self.keys = objects.KeyManager(self) + """See :class:`~gitlab.v4.objects.KeyManager`""" + self.ldapgroups = objects.LDAPGroupManager(self) + """See :class:`~gitlab.v4.objects.LDAPGroupManager`""" + self.licenses = objects.LicenseManager(self) + """See :class:`~gitlab.v4.objects.LicenseManager`""" + self.namespaces = objects.NamespaceManager(self) + """See :class:`~gitlab.v4.objects.NamespaceManager`""" + self.mergerequests = objects.MergeRequestManager(self) + """See :class:`~gitlab.v4.objects.MergeRequestManager`""" + self.notificationsettings = objects.NotificationSettingsManager(self) + """See :class:`~gitlab.v4.objects.NotificationSettingsManager`""" + self.projects = objects.ProjectManager(self) + """See :class:`~gitlab.v4.objects.ProjectManager`""" + self.registry_repositories = objects.RegistryRepositoryManager(self) + """See :class:`~gitlab.v4.objects.RegistryRepositoryManager`""" + self.runners = objects.RunnerManager(self) + """See :class:`~gitlab.v4.objects.RunnerManager`""" + self.runners_all = objects.RunnerAllManager(self) + """See :class:`~gitlab.v4.objects.RunnerManager`""" + self.settings = objects.ApplicationSettingsManager(self) + """See :class:`~gitlab.v4.objects.ApplicationSettingsManager`""" + self.appearance = objects.ApplicationAppearanceManager(self) + """See :class:`~gitlab.v4.objects.ApplicationAppearanceManager`""" + self.sidekiq = objects.SidekiqManager(self) + """See :class:`~gitlab.v4.objects.SidekiqManager`""" + self.snippets = objects.SnippetManager(self) + """See :class:`~gitlab.v4.objects.SnippetManager`""" + self.users = objects.UserManager(self) + """See :class:`~gitlab.v4.objects.UserManager`""" + self.todos = objects.TodoManager(self) + """See :class:`~gitlab.v4.objects.TodoManager`""" + self.dockerfiles = objects.DockerfileManager(self) + """See :class:`~gitlab.v4.objects.DockerfileManager`""" + self.events = objects.EventManager(self) + """See :class:`~gitlab.v4.objects.EventManager`""" + self.audit_events = objects.AuditEventManager(self) + """See :class:`~gitlab.v4.objects.AuditEventManager`""" + self.features = objects.FeatureManager(self) + """See :class:`~gitlab.v4.objects.FeatureManager`""" + self.pagesdomains = objects.PagesDomainManager(self) + """See :class:`~gitlab.v4.objects.PagesDomainManager`""" + self.user_activities = objects.UserActivitiesManager(self) + """See :class:`~gitlab.v4.objects.UserActivitiesManager`""" + self.applications = objects.ApplicationManager(self) + """See :class:`~gitlab.v4.objects.ApplicationManager`""" + self.variables = objects.VariableManager(self) + """See :class:`~gitlab.v4.objects.VariableManager`""" + self.personal_access_tokens = objects.PersonalAccessTokenManager(self) + """See :class:`~gitlab.v4.objects.PersonalAccessTokenManager`""" + self.topics = objects.TopicManager(self) + """See :class:`~gitlab.v4.objects.TopicManager`""" + self.statistics = objects.ApplicationStatisticsManager(self) + """See :class:`~gitlab.v4.objects.ApplicationStatisticsManager`""" + + def __enter__(self) -> "Gitlab": + return self + + def __exit__(self, *args: Any) -> None: + self.session.close() + + def __getstate__(self) -> Dict[str, Any]: + state = self.__dict__.copy() + state.pop("_objects") + return state + + def __setstate__(self, state: Dict[str, Any]) -> None: + self.__dict__.update(state) + # We only support v4 API at this time + if self._api_version not in ("4",): + raise ModuleNotFoundError( + f"gitlab.v{self._api_version}.objects" + ) # pragma: no cover, dead code currently + # NOTE: We must delay import of gitlab.v4.objects until now or + # otherwise it will cause circular import errors + from gitlab.v4 import objects + + self._objects = objects + + @property + def url(self) -> str: + """The user-provided server URL.""" + return self._base_url + + @property + def api_url(self) -> str: + """The computed API base URL.""" + return self._url + + @property + def api_version(self) -> str: + """The API version used (4 only).""" + return self._api_version + + @classmethod + def from_config( + cls, + gitlab_id: Optional[str] = None, + config_files: Optional[List[str]] = None, + **kwargs: Any, + ) -> "Gitlab": + """Create a Gitlab connection from configuration files. + + Args: + gitlab_id: ID of the configuration section. + config_files list[str]: List of paths to configuration files. + + kwargs: + session requests.Session: Custom requests Session + + Returns: + A Gitlab connection. + + Raises: + gitlab.config.GitlabDataError: If the configuration is not correct. + """ + config = gitlab.config.GitlabConfigParser( + gitlab_id=gitlab_id, config_files=config_files + ) + return cls( + config.url, + private_token=config.private_token, + oauth_token=config.oauth_token, + job_token=config.job_token, + ssl_verify=config.ssl_verify, + timeout=config.timeout, + http_username=config.http_username, + http_password=config.http_password, + api_version=config.api_version, + per_page=config.per_page, + pagination=config.pagination, + order_by=config.order_by, + user_agent=config.user_agent, + retry_transient_errors=config.retry_transient_errors, + **kwargs, + ) + + @classmethod + def merge_config( + cls, + options: Dict[str, Any], + gitlab_id: Optional[str] = None, + config_files: Optional[List[str]] = None, + ) -> "Gitlab": + """Create a Gitlab connection by merging configuration with + the following precedence: + + 1. Explicitly provided CLI arguments, + 2. Environment variables, + 3. Configuration files: + a. explicitly defined config files: + i. via the `--config-file` CLI argument, + ii. via the `PYTHON_GITLAB_CFG` environment variable, + b. user-specific config file, + c. system-level config file, + 4. Environment variables always present in CI (CI_SERVER_URL, CI_JOB_TOKEN). + + Args: + options: A dictionary of explicitly provided key-value options. + gitlab_id: ID of the configuration section. + config_files: List of paths to configuration files. + Returns: + (gitlab.Gitlab): A Gitlab connection. + + Raises: + gitlab.config.GitlabDataError: If the configuration is not correct. + """ + config = gitlab.config.GitlabConfigParser( + gitlab_id=gitlab_id, config_files=config_files + ) + url = ( + options.get("server_url") + or config.url + or os.getenv("CI_SERVER_URL") + or gitlab.const.DEFAULT_URL + ) + private_token, oauth_token, job_token = cls._merge_auth(options, config) + + return cls( + url=url, + private_token=private_token, + oauth_token=oauth_token, + job_token=job_token, + ssl_verify=options.get("ssl_verify") or config.ssl_verify, + timeout=options.get("timeout") or config.timeout, + api_version=options.get("api_version") or config.api_version, + per_page=options.get("per_page") or config.per_page, + pagination=options.get("pagination") or config.pagination, + order_by=options.get("order_by") or config.order_by, + user_agent=options.get("user_agent") or config.user_agent, + ) + + @staticmethod + def _merge_auth( + options: Dict[str, Any], config: gitlab.config.GitlabConfigParser + ) -> Tuple[Optional[str], Optional[str], Optional[str]]: + """ + Return a tuple where at most one of 3 token types ever has a value. + Since multiple types of tokens may be present in the environment, + options, or config files, this precedence ensures we don't + inadvertently cause errors when initializing the client. + + This is especially relevant when executed in CI where user and + CI-provided values are both available. + """ + private_token = options.get("private_token") or config.private_token + oauth_token = options.get("oauth_token") or config.oauth_token + job_token = ( + options.get("job_token") or config.job_token or os.getenv("CI_JOB_TOKEN") + ) + + if private_token: + return (private_token, None, None) + if oauth_token: + return (None, oauth_token, None) + if job_token: + return (None, None, job_token) + + return (None, None, None) + + def auth(self) -> None: + """Performs an authentication using private token. Warns the user if a + potentially misconfigured URL is detected on the client or server side. + + The `user` attribute will hold a `gitlab.objects.CurrentUser` object on + success. + """ + self.user = self._objects.CurrentUserManager(self).get() + + if hasattr(self.user, "web_url") and hasattr(self.user, "username"): + self._check_url(self.user.web_url, path=self.user.username) + + def version(self) -> Tuple[str, str]: + """Returns the version and revision of the gitlab server. + + Note that self.version and self.revision will be set on the gitlab + object. + + Returns: + The server version and server revision. + ('unknown', 'unknown') if the server doesn't perform as expected. + """ + if self._server_version is None: + try: + data = self.http_get("/version") + if isinstance(data, dict): + self._server_version = data["version"] + self._server_revision = data["revision"] + else: + self._server_version = "unknown" + self._server_revision = "unknown" + except Exception: + self._server_version = "unknown" + self._server_revision = "unknown" + + return cast(str, self._server_version), cast(str, self._server_revision) + + @gitlab.exceptions.on_http_error(gitlab.exceptions.GitlabMarkdownError) + def markdown( + self, text: str, gfm: bool = False, project: Optional[str] = None, **kwargs: Any + ) -> str: + """Render an arbitrary Markdown document. + + Args: + text: The markdown text to render + gfm: Render text using GitLab Flavored Markdown. Default is False + project: Full path of a project used a context when `gfm` is True + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabMarkdownError: If the server cannot perform the request + + Returns: + The HTML rendering of the markdown text. + """ + post_data = {"text": text, "gfm": gfm} + if project is not None: + post_data["project"] = project + data = self.http_post("/markdown", post_data=post_data, **kwargs) + if TYPE_CHECKING: + assert not isinstance(data, requests.Response) + assert isinstance(data["html"], str) + return data["html"] + + @gitlab.exceptions.on_http_error(gitlab.exceptions.GitlabLicenseError) + def get_license(self, **kwargs: Any) -> Dict[str, Union[str, Dict[str, str]]]: + """Retrieve information about the current license. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server cannot perform the request + + Returns: + The current license information + """ + result = self.http_get("/license", **kwargs) + if isinstance(result, dict): + return result + return {} + + @gitlab.exceptions.on_http_error(gitlab.exceptions.GitlabLicenseError) + def set_license(self, license: str, **kwargs: Any) -> Dict[str, Any]: + """Add a new license. + + Args: + license: The license string + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabPostError: If the server cannot perform the request + + Returns: + The new license information + """ + data = {"license": license} + result = self.http_post("/license", post_data=data, **kwargs) + if TYPE_CHECKING: + assert not isinstance(result, requests.Response) + return result + + def _set_auth_info(self) -> None: + tokens = [ + token + for token in [self.private_token, self.oauth_token, self.job_token] + if token + ] + if len(tokens) > 1: + raise ValueError( + "Only one of private_token, oauth_token or job_token should " + "be defined" + ) + if (self.http_username and not self.http_password) or ( + not self.http_username and self.http_password + ): + raise ValueError("Both http_username and http_password should be defined") + if tokens and self.http_username: + raise ValueError( + "Only one of token authentications or http " + "authentication should be defined" + ) + + self._auth: Optional[requests.auth.AuthBase] = None + if self.private_token: + self._auth = _backends.PrivateTokenAuth(self.private_token) + + if self.oauth_token: + self._auth = _backends.OAuthTokenAuth(self.oauth_token) + + if self.job_token: + self._auth = _backends.JobTokenAuth(self.job_token) + + if self.http_username and self.http_password: + self._auth = requests.auth.HTTPBasicAuth( + self.http_username, self.http_password + ) + + def enable_debug(self, mask_credentials: bool = True) -> None: + import logging + from http import client + + client.HTTPConnection.debuglevel = 1 + logging.basicConfig() + logger = logging.getLogger() + logger.setLevel(logging.DEBUG) + + httpclient_log = logging.getLogger("http.client") + httpclient_log.propagate = True + httpclient_log.setLevel(logging.DEBUG) + + requests_log = logging.getLogger("requests.packages.urllib3") + requests_log.setLevel(logging.DEBUG) + requests_log.propagate = True + + # shadow http.client prints to log() + # https://stackoverflow.com/a/16337639 + def print_as_log(*args: Any) -> None: + httpclient_log.log(logging.DEBUG, " ".join(args)) + + setattr(client, "print", print_as_log) + + if not mask_credentials: + return + + token = self.private_token or self.oauth_token or self.job_token + handler = logging.StreamHandler() + handler.setFormatter(utils.MaskingFormatter(masked=token)) + logger.handlers.clear() + logger.addHandler(handler) + + def _get_session_opts(self) -> Dict[str, Any]: + return { + "headers": self.headers.copy(), + "auth": self._auth, + "timeout": self.timeout, + "verify": self.ssl_verify, + } + + def _build_url(self, path: str) -> str: + """Returns the full url from path. + + If path is already a url, return it unchanged. If it's a path, append + it to the stored url. + + Returns: + The full URL + """ + if path.startswith("http://") or path.startswith("https://"): + return path + return f"{self._url}{path}" + + def _check_url(self, url: Optional[str], *, path: str = "api") -> Optional[str]: + """ + Checks if ``url`` starts with a different base URL from the user-provided base + URL and warns the user before returning it. If ``keep_base_url`` is set to + ``True``, instead returns the URL massaged to match the user-provided base URL. + """ + if not url or url.startswith(self.url): + return url + + match = re.match(rf"(^.*?)/{path}", url) + if not match: + return url + + base_url = match.group(1) + if self.keep_base_url: + return url.replace(base_url, f"{self._base_url}") + + utils.warn( + message=( + f"The base URL in the server response differs from the user-provided " + f"base URL ({self.url} -> {base_url}).\nThis is usually caused by a " + f"misconfigured base URL on your side or a misconfigured external_url " + f"on the server side, and can lead to broken pagination and unexpected " + f"behavior. If this is intentional, use `keep_base_url=True` when " + f"initializing the Gitlab instance to keep the user-provided base URL." + ), + category=UserWarning, + ) + return url + + @staticmethod + def _check_redirects(result: requests.Response) -> None: + # Check the requests history to detect 301/302 redirections. + # If the initial verb is POST or PUT, the redirected request will use a + # GET request, leading to unwanted behaviour. + # If we detect a redirection with a POST or a PUT request, we + # raise an exception with a useful error message. + if not result.history: + return + + for item in result.history: + if item.status_code not in (301, 302): + continue + # GET and HEAD methods can be redirected without issue + if item.request.method in ("GET", "HEAD"): + continue + target = item.headers.get("location") + raise gitlab.exceptions.RedirectError( + REDIRECT_MSG.format( + status_code=item.status_code, + reason=item.reason, + source=item.url, + target=target, + ) + ) + + def http_request( + self, + verb: str, + path: str, + query_data: Optional[Dict[str, Any]] = None, + post_data: Optional[Union[Dict[str, Any], bytes, BinaryIO]] = None, + raw: bool = False, + streamed: bool = False, + files: Optional[Dict[str, Any]] = None, + timeout: Optional[float] = None, + obey_rate_limit: bool = True, + retry_transient_errors: Optional[bool] = None, + max_retries: int = 10, + **kwargs: Any, + ) -> requests.Response: + """Make an HTTP request to the Gitlab server. + + Args: + verb: The HTTP method to call ('get', 'post', 'put', 'delete') + path: Path or full URL to query ('/projects' or + 'http://whatever/v4/api/projecs') + query_data: Data to send as query parameters + post_data: Data to send in the body (will be converted to + json by default) + raw: If True, do not convert post_data to json + streamed: Whether the data should be streamed + files: The files to send to the server + timeout: The timeout, in seconds, for the request + obey_rate_limit: Whether to obey 429 Too Many Request + responses. Defaults to True. + retry_transient_errors: Whether to retry after 500, 502, 503, 504 + or 52x responses. Defaults to False. + max_retries: Max retries after 429 or transient errors, + set to -1 to retry forever. Defaults to 10. + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + A requests result object. + + Raises: + GitlabHttpError: When the return code is not 2xx + """ + query_data = query_data or {} + raw_url = self._build_url(path) + + # parse user-provided URL params to ensure we don't add our own duplicates + parsed = parse.urlparse(raw_url) + params = parse.parse_qs(parsed.query) + utils.copy_dict(src=query_data, dest=params) + + url = parse.urlunparse(parsed._replace(query="")) + + # Deal with kwargs: by default a user uses kwargs to send data to the + # gitlab server, but this generates problems (python keyword conflicts + # and python-gitlab/gitlab conflicts). + # So we provide a `query_parameters` key: if it's there we use its dict + # value as arguments for the gitlab server, and ignore the other + # arguments, except pagination ones (per_page and page) + if "query_parameters" in kwargs: + utils.copy_dict(src=kwargs["query_parameters"], dest=params) + for arg in ("per_page", "page"): + if arg in kwargs: + params[arg] = kwargs[arg] + else: + utils.copy_dict(src=kwargs, dest=params) + + opts = self._get_session_opts() + + verify = opts.pop("verify") + opts_timeout = opts.pop("timeout") + # If timeout was passed into kwargs, allow it to override the default + if timeout is None: + timeout = opts_timeout + if retry_transient_errors is None: + retry_transient_errors = self.retry_transient_errors + + # We need to deal with json vs. data when uploading files + send_data = self._backend.prepare_send_data(files, post_data, raw) + opts["headers"]["Content-type"] = send_data.content_type + + retry = utils.Retry( + max_retries=max_retries, + obey_rate_limit=obey_rate_limit, + retry_transient_errors=retry_transient_errors, + ) + + while True: + try: + result = self._backend.http_request( + method=verb, + url=url, + json=send_data.json, + data=send_data.data, + params=params, + timeout=timeout, + verify=verify, + stream=streamed, + **opts, + ) + except (requests.ConnectionError, requests.exceptions.ChunkedEncodingError): + if retry.handle_retry(): + continue + raise + + self._check_redirects(result.response) + + if 200 <= result.status_code < 300: + return result.response + + if retry.handle_retry_on_status( + result.status_code, result.headers, result.reason + ): + continue + + error_message = result.content + try: + error_json = result.json() + for k in ("message", "error"): + if k in error_json: + error_message = error_json[k] + except (KeyError, ValueError, TypeError): + pass + + if result.status_code == 401: + raise gitlab.exceptions.GitlabAuthenticationError( + response_code=result.status_code, + error_message=error_message, + response_body=result.content, + ) + + raise gitlab.exceptions.GitlabHttpError( + response_code=result.status_code, + error_message=error_message, + response_body=result.content, + ) + + def http_get( + self, + path: str, + query_data: Optional[Dict[str, Any]] = None, + streamed: bool = False, + raw: bool = False, + **kwargs: Any, + ) -> Union[Dict[str, Any], requests.Response]: + """Make a GET request to the Gitlab server. + + Args: + path: Path or full URL to query ('/projects' or + 'http://whatever/v4/api/projecs') + query_data: Data to send as query parameters + streamed: Whether the data should be streamed + raw: If True do not try to parse the output as json + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + A requests result object is streamed is True or the content type is + not json. + The parsed json data otherwise. + + Raises: + GitlabHttpError: When the return code is not 2xx + GitlabParsingError: If the json data could not be parsed + """ + query_data = query_data or {} + result = self.http_request( + "get", path, query_data=query_data, streamed=streamed, **kwargs + ) + content_type = utils.get_content_type(result.headers.get("Content-Type")) + + if content_type == "application/json" and not streamed and not raw: + try: + json_result = result.json() + if TYPE_CHECKING: + assert isinstance(json_result, dict) + return json_result + except Exception as e: + raise gitlab.exceptions.GitlabParsingError( + error_message="Failed to parse the server message" + ) from e + else: + return result + + def http_head( + self, path: str, query_data: Optional[Dict[str, Any]] = None, **kwargs: Any + ) -> "requests.structures.CaseInsensitiveDict[Any]": + """Make a HEAD request to the Gitlab server. + + Args: + path: Path or full URL to query ('/projects' or + 'http://whatever/v4/api/projecs') + query_data: Data to send as query parameters + **kwargs: Extra options to send to the server (e.g. sudo, page, + per_page) + Returns: + A requests.header object + Raises: + GitlabHttpError: When the return code is not 2xx + """ + + query_data = query_data or {} + result = self.http_request("head", path, query_data=query_data, **kwargs) + return result.headers + + def http_list( + self, + path: str, + query_data: Optional[Dict[str, Any]] = None, + *, + iterator: Optional[bool] = None, + message_details: Optional[utils.WarnMessageData] = None, + **kwargs: Any, + ) -> Union["GitlabList", List[Dict[str, Any]]]: + """Make a GET request to the Gitlab server for list-oriented queries. + + Args: + path: Path or full URL to query ('/projects' or + 'http://whatever/v4/api/projects') + query_data: Data to send as query parameters + iterator: Indicate if should return a generator (True) + **kwargs: Extra options to send to the server (e.g. sudo, page, + per_page) + + Returns: + A list of the objects returned by the server. If `iterator` is + True and no pagination-related arguments (`page`, `per_page`, + `get_all`) are defined then a GitlabList object (generator) is returned + instead. This object will make API calls when needed to fetch the + next items from the server. + + Raises: + GitlabHttpError: When the return code is not 2xx + GitlabParsingError: If the json data could not be parsed + """ + query_data = query_data or {} + + # Provide a `get_all`` param to avoid clashes with `all` API attributes. + get_all = kwargs.pop("get_all", None) + + if get_all is None: + # For now, keep `all` without deprecation. + get_all = kwargs.pop("all", None) + + url = self._build_url(path) + + page = kwargs.get("page") + + if iterator and page is not None: + arg_used_message = f"iterator={iterator}" + utils.warn( + message=( + f"`{arg_used_message}` and `page={page}` were both specified. " + f"`{arg_used_message}` will be ignored and a `list` will be " + f"returned." + ), + category=UserWarning, + ) + + if iterator and page is None: + # Generator requested + return GitlabList(self, url, query_data, **kwargs) + + if get_all is True: + return list(GitlabList(self, url, query_data, **kwargs)) + + # pagination requested, we return a list + gl_list = GitlabList(self, url, query_data, get_next=False, **kwargs) + items = list(gl_list) + + def should_emit_warning() -> bool: + # No warning is emitted if any of the following conditions apply: + # * `get_all=False` was set in the `list()` call. + # * `page` was set in the `list()` call. + # * GitLab did not return the `x-per-page` header. + # * Number of items received is less than per-page value. + # * Number of items received is >= total available. + if get_all is False: + return False + if page is not None: + return False + if gl_list.per_page is None: + return False + if len(items) < gl_list.per_page: + return False + if gl_list.total is not None and len(items) >= gl_list.total: + return False + return True + + if not should_emit_warning(): + return items + + # Warn the user that they are only going to retrieve `per_page` + # maximum items. This is a common cause of issues filed. + total_items = "many" if gl_list.total is None else gl_list.total + if message_details is not None: + message = message_details.message.format_map( + { + "len_items": len(items), + "per_page": gl_list.per_page, + "total_items": total_items, + } + ) + show_caller = message_details.show_caller + else: + message = ( + f"Calling a `list()` method without specifying `get_all=True` or " + f"`iterator=True` will return a maximum of {gl_list.per_page} items. " + f"Your query returned {len(items)} of {total_items} items. See " + f"{_PAGINATION_URL} for more details. If this was done intentionally, " + f"then this warning can be supressed by adding the argument " + f"`get_all=False` to the `list()` call." + ) + show_caller = True + utils.warn( + message=message, + category=UserWarning, + show_caller=show_caller, + ) + return items + + def http_post( + self, + path: str, + query_data: Optional[Dict[str, Any]] = None, + post_data: Optional[Dict[str, Any]] = None, + raw: bool = False, + files: Optional[Dict[str, Any]] = None, + **kwargs: Any, + ) -> Union[Dict[str, Any], requests.Response]: + """Make a POST request to the Gitlab server. + + Args: + path: Path or full URL to query ('/projects' or + 'http://whatever/v4/api/projecs') + query_data: Data to send as query parameters + post_data: Data to send in the body (will be converted to + json by default) + raw: If True, do not convert post_data to json + files: The files to send to the server + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + The parsed json returned by the server if json is return, else the + raw content + + Raises: + GitlabHttpError: When the return code is not 2xx + GitlabParsingError: If the json data could not be parsed + """ + query_data = query_data or {} + post_data = post_data or {} + + result = self.http_request( + "post", + path, + query_data=query_data, + post_data=post_data, + files=files, + raw=raw, + **kwargs, + ) + content_type = utils.get_content_type(result.headers.get("Content-Type")) + + try: + if content_type == "application/json": + json_result = result.json() + if TYPE_CHECKING: + assert isinstance(json_result, dict) + return json_result + except Exception as e: + raise gitlab.exceptions.GitlabParsingError( + error_message="Failed to parse the server message" + ) from e + return result + + def http_put( + self, + path: str, + query_data: Optional[Dict[str, Any]] = None, + post_data: Optional[Union[Dict[str, Any], bytes, BinaryIO]] = None, + raw: bool = False, + files: Optional[Dict[str, Any]] = None, + **kwargs: Any, + ) -> Union[Dict[str, Any], requests.Response]: + """Make a PUT request to the Gitlab server. + + Args: + path: Path or full URL to query ('/projects' or + 'http://whatever/v4/api/projecs') + query_data: Data to send as query parameters + post_data: Data to send in the body (will be converted to + json by default) + raw: If True, do not convert post_data to json + files: The files to send to the server + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + The parsed json returned by the server. + + Raises: + GitlabHttpError: When the return code is not 2xx + GitlabParsingError: If the json data could not be parsed + """ + query_data = query_data or {} + post_data = post_data or {} + + result = self.http_request( + "put", + path, + query_data=query_data, + post_data=post_data, + files=files, + raw=raw, + **kwargs, + ) + if result.status_code in gitlab.const.NO_JSON_RESPONSE_CODES: + return result + try: + json_result = result.json() + if TYPE_CHECKING: + assert isinstance(json_result, dict) + return json_result + except Exception as e: + raise gitlab.exceptions.GitlabParsingError( + error_message="Failed to parse the server message" + ) from e + + def http_patch( + self, + path: str, + *, + query_data: Optional[Dict[str, Any]] = None, + post_data: Optional[Union[Dict[str, Any], bytes]] = None, + raw: bool = False, + **kwargs: Any, + ) -> Union[Dict[str, Any], requests.Response]: + """Make a PATCH request to the Gitlab server. + + Args: + path: Path or full URL to query ('/projects' or + 'http://whatever/v4/api/projecs') + query_data: Data to send as query parameters + post_data: Data to send in the body (will be converted to + json by default) + raw: If True, do not convert post_data to json + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + The parsed json returned by the server. + + Raises: + GitlabHttpError: When the return code is not 2xx + GitlabParsingError: If the json data could not be parsed + """ + query_data = query_data or {} + post_data = post_data or {} + + result = self.http_request( + "patch", + path, + query_data=query_data, + post_data=post_data, + raw=raw, + **kwargs, + ) + if result.status_code in gitlab.const.NO_JSON_RESPONSE_CODES: + return result + try: + json_result = result.json() + if TYPE_CHECKING: + assert isinstance(json_result, dict) + return json_result + except Exception as e: + raise gitlab.exceptions.GitlabParsingError( + error_message="Failed to parse the server message" + ) from e + + def http_delete(self, path: str, **kwargs: Any) -> requests.Response: + """Make a DELETE request to the Gitlab server. + + Args: + path: Path or full URL to query ('/projects' or + 'http://whatever/v4/api/projecs') + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + The requests object. + + Raises: + GitlabHttpError: When the return code is not 2xx + """ + return self.http_request("delete", path, **kwargs) + + @gitlab.exceptions.on_http_error(gitlab.exceptions.GitlabSearchError) + def search( + self, scope: str, search: str, **kwargs: Any + ) -> Union["GitlabList", List[Dict[str, Any]]]: + """Search GitLab resources matching the provided string.' + + Args: + scope: Scope of the search + search: Search string + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabSearchError: If the server failed to perform the request + + Returns: + A list of dicts describing the resources found. + """ + data = {"scope": scope, "search": search} + return self.http_list("/search", query_data=data, **kwargs) + + +class GitlabList: + """Generator representing a list of remote objects. + + The object handles the links returned by a query to the API, and will call + the API again when needed. + """ + + def __init__( + self, + gl: Gitlab, + url: str, + query_data: Dict[str, Any], + get_next: bool = True, + **kwargs: Any, + ) -> None: + self._gl = gl + + # Preserve kwargs for subsequent queries + self._kwargs = kwargs.copy() + + self._query(url, query_data, **self._kwargs) + self._get_next = get_next + + # Remove query_parameters from kwargs, which are saved via the `next` URL + self._kwargs.pop("query_parameters", None) + + def _query( + self, url: str, query_data: Optional[Dict[str, Any]] = None, **kwargs: Any + ) -> None: + query_data = query_data or {} + result = self._gl.http_request("get", url, query_data=query_data, **kwargs) + try: + next_url = result.links["next"]["url"] + except KeyError: + next_url = None + + self._next_url = self._gl._check_url(next_url) + self._current_page: Optional[str] = result.headers.get("X-Page") + self._prev_page: Optional[str] = result.headers.get("X-Prev-Page") + self._next_page: Optional[str] = result.headers.get("X-Next-Page") + self._per_page: Optional[str] = result.headers.get("X-Per-Page") + self._total_pages: Optional[str] = result.headers.get("X-Total-Pages") + self._total: Optional[str] = result.headers.get("X-Total") + + try: + self._data: List[Dict[str, Any]] = result.json() + except Exception as e: + raise gitlab.exceptions.GitlabParsingError( + error_message="Failed to parse the server message" + ) from e + + self._current = 0 + + @property + def current_page(self) -> int: + """The current page number.""" + if TYPE_CHECKING: + assert self._current_page is not None + return int(self._current_page) + + @property + def prev_page(self) -> Optional[int]: + """The previous page number. + + If None, the current page is the first. + """ + return int(self._prev_page) if self._prev_page else None + + @property + def next_page(self) -> Optional[int]: + """The next page number. + + If None, the current page is the last. + """ + return int(self._next_page) if self._next_page else None + + @property + def per_page(self) -> Optional[int]: + """The number of items per page.""" + return int(self._per_page) if self._per_page is not None else None + + # NOTE(jlvillal): When a query returns more than 10,000 items, GitLab doesn't return + # the headers 'x-total-pages' and 'x-total'. In those cases we return None. + # https://docs.gitlab.com/ee/user/gitlab_com/index.html#pagination-response-headers + @property + def total_pages(self) -> Optional[int]: + """The total number of pages.""" + if self._total_pages is not None: + return int(self._total_pages) + return None + + @property + def total(self) -> Optional[int]: + """The total number of items.""" + if self._total is not None: + return int(self._total) + return None + + def __iter__(self) -> "GitlabList": + return self + + def __len__(self) -> int: + if self._total is None: + return 0 + return int(self._total) + + def __next__(self) -> Dict[str, Any]: + return self.next() + + def next(self) -> Dict[str, Any]: + try: + item = self._data[self._current] + self._current += 1 + return item + except IndexError: + pass + + if self._next_url and self._get_next is True: + self._query(self._next_url, **self._kwargs) + return self.next() + + raise StopIteration + + +class GraphQL: + def __init__( + self, + url: Optional[str] = None, + *, + token: Optional[str] = None, + ssl_verify: Union[bool, str] = True, + client: Optional[httpx.Client] = None, + timeout: Optional[float] = None, + user_agent: str = gitlab.const.USER_AGENT, + fetch_schema_from_transport: bool = False, + max_retries: int = 10, + obey_rate_limit: bool = True, + retry_transient_errors: bool = False, + ) -> None: + if not _GQL_INSTALLED: + raise ImportError( + "The GraphQL client could not be initialized because " + "the gql dependencies are not installed. " + "Install them with 'pip install python-gitlab[graphql]'" + ) + self._base_url = utils.get_base_url(url) + self._timeout = timeout + self._token = token + self._url = f"{self._base_url}/api/graphql" + self._user_agent = user_agent + self._ssl_verify = ssl_verify + self._max_retries = max_retries + self._obey_rate_limit = obey_rate_limit + self._retry_transient_errors = retry_transient_errors + + opts = self._get_client_opts() + self._http_client = client or httpx.Client(**opts) + self._transport = GitlabTransport(self._url, client=self._http_client) + self._client = gql.Client( + transport=self._transport, + fetch_schema_from_transport=fetch_schema_from_transport, + ) + self._gql = gql.gql + + def __enter__(self) -> "GraphQL": + return self + + def __exit__(self, *args: Any) -> None: + self._http_client.close() + + def _get_client_opts(self) -> Dict[str, Any]: + headers = {"User-Agent": self._user_agent} + + if self._token: + headers["Authorization"] = f"Bearer {self._token}" + + return { + "headers": headers, + "timeout": self._timeout, + "verify": self._ssl_verify, + } + + def execute( + self, request: Union[str, graphql.Source], *args: Any, **kwargs: Any + ) -> Any: + parsed_document = self._gql(request) + retry = utils.Retry( + max_retries=self._max_retries, + obey_rate_limit=self._obey_rate_limit, + retry_transient_errors=self._retry_transient_errors, + ) + + while True: + try: + result = self._client.execute(parsed_document, *args, **kwargs) + except gql.transport.exceptions.TransportServerError as e: + if retry.handle_retry_on_status( + status_code=e.code, headers=self._transport.response_headers + ): + continue + + if e.code == 401: + raise gitlab.exceptions.GitlabAuthenticationError( + response_code=e.code, + error_message=str(e), + ) + + raise gitlab.exceptions.GitlabHttpError( + response_code=e.code, + error_message=str(e), + ) + + return result diff --git a/env/lib/python3.12/site-packages/gitlab/config.py b/env/lib/python3.12/site-packages/gitlab/config.py new file mode 100644 index 0000000..0f4b2cd --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/config.py @@ -0,0 +1,287 @@ +import configparser +import os +import shlex +import subprocess +from os.path import expanduser, expandvars +from pathlib import Path +from typing import List, Optional, Union + +from gitlab.const import USER_AGENT + +_DEFAULT_FILES: List[str] = [ + "/etc/python-gitlab.cfg", + str(Path.home() / ".python-gitlab.cfg"), +] + +HELPER_PREFIX = "helper:" + +HELPER_ATTRIBUTES = ["job_token", "http_password", "private_token", "oauth_token"] + +_CONFIG_PARSER_ERRORS = (configparser.NoOptionError, configparser.NoSectionError) + + +def _resolve_file(filepath: Union[Path, str]) -> str: + resolved = Path(filepath).resolve(strict=True) + return str(resolved) + + +def _get_config_files( + config_files: Optional[List[str]] = None, +) -> Union[str, List[str]]: + """ + Return resolved path(s) to config files if they exist, with precedence: + 1. Files passed in config_files + 2. File defined in PYTHON_GITLAB_CFG + 3. User- and system-wide config files + """ + resolved_files = [] + + if config_files: + for config_file in config_files: + try: + resolved = _resolve_file(config_file) + except OSError as e: + raise GitlabConfigMissingError( + f"Cannot read config from file: {e}" + ) from e + resolved_files.append(resolved) + + return resolved_files + + try: + env_config = os.environ["PYTHON_GITLAB_CFG"] + return _resolve_file(env_config) + except KeyError: + pass + except OSError as e: + raise GitlabConfigMissingError( + f"Cannot read config from PYTHON_GITLAB_CFG: {e}" + ) from e + + for config_file in _DEFAULT_FILES: + try: + resolved = _resolve_file(config_file) + except OSError: + continue + resolved_files.append(resolved) + + return resolved_files + + +class ConfigError(Exception): + pass + + +class GitlabIDError(ConfigError): + pass + + +class GitlabDataError(ConfigError): + pass + + +class GitlabConfigMissingError(ConfigError): + pass + + +class GitlabConfigHelperError(ConfigError): + pass + + +class GitlabConfigParser: + def __init__( + self, gitlab_id: Optional[str] = None, config_files: Optional[List[str]] = None + ) -> None: + self.gitlab_id = gitlab_id + self.http_username: Optional[str] = None + self.http_password: Optional[str] = None + self.job_token: Optional[str] = None + self.oauth_token: Optional[str] = None + self.private_token: Optional[str] = None + + self.api_version: str = "4" + self.order_by: Optional[str] = None + self.pagination: Optional[str] = None + self.per_page: Optional[int] = None + self.retry_transient_errors: bool = False + self.ssl_verify: Union[bool, str] = True + self.timeout: int = 60 + self.url: Optional[str] = None + self.user_agent: str = USER_AGENT + self.keep_base_url: bool = False + + self._files = _get_config_files(config_files) + if self._files: + self._parse_config() + + if self.gitlab_id and not self._files: + raise GitlabConfigMissingError( + f"A gitlab id was provided ({self.gitlab_id}) but no config file found" + ) + + def _parse_config(self) -> None: + _config = configparser.ConfigParser() + _config.read(self._files, encoding="utf-8") + + if self.gitlab_id and not _config.has_section(self.gitlab_id): + raise GitlabDataError( + f"A gitlab id was provided ({self.gitlab_id}) " + "but no config section found" + ) + + if self.gitlab_id is None: + try: + self.gitlab_id = _config.get("global", "default") + except Exception as e: + raise GitlabIDError( + "Impossible to get the gitlab id (not specified in config file)" + ) from e + + try: + self.url = _config.get(self.gitlab_id, "url") + except Exception as e: + raise GitlabDataError( + "Impossible to get gitlab details from " + f"configuration ({self.gitlab_id})" + ) from e + + try: + self.ssl_verify = _config.getboolean("global", "ssl_verify") + except ValueError: + # Value Error means the option exists but isn't a boolean. + # Get as a string instead as it should then be a local path to a + # CA bundle. + self.ssl_verify = _config.get("global", "ssl_verify") + except _CONFIG_PARSER_ERRORS: + pass + try: + self.ssl_verify = _config.getboolean(self.gitlab_id, "ssl_verify") + except ValueError: + # Value Error means the option exists but isn't a boolean. + # Get as a string instead as it should then be a local path to a + # CA bundle. + self.ssl_verify = _config.get(self.gitlab_id, "ssl_verify") + except _CONFIG_PARSER_ERRORS: + pass + + try: + self.timeout = _config.getint("global", "timeout") + except _CONFIG_PARSER_ERRORS: + pass + try: + self.timeout = _config.getint(self.gitlab_id, "timeout") + except _CONFIG_PARSER_ERRORS: + pass + + try: + self.private_token = _config.get(self.gitlab_id, "private_token") + except _CONFIG_PARSER_ERRORS: + pass + + try: + self.oauth_token = _config.get(self.gitlab_id, "oauth_token") + except _CONFIG_PARSER_ERRORS: + pass + + try: + self.job_token = _config.get(self.gitlab_id, "job_token") + except _CONFIG_PARSER_ERRORS: + pass + + try: + self.http_username = _config.get(self.gitlab_id, "http_username") + self.http_password = _config.get( + self.gitlab_id, "http_password" + ) # pragma: no cover + except _CONFIG_PARSER_ERRORS: + pass + + self._get_values_from_helper() + + try: + self.api_version = _config.get("global", "api_version") + except _CONFIG_PARSER_ERRORS: + pass + try: + self.api_version = _config.get(self.gitlab_id, "api_version") + except _CONFIG_PARSER_ERRORS: + pass + if self.api_version not in ("4",): + raise GitlabDataError(f"Unsupported API version: {self.api_version}") + + for section in ["global", self.gitlab_id]: + try: + self.per_page = _config.getint(section, "per_page") + except _CONFIG_PARSER_ERRORS: + pass + if self.per_page is not None and not 0 <= self.per_page <= 100: + raise GitlabDataError(f"Unsupported per_page number: {self.per_page}") + + try: + self.pagination = _config.get(self.gitlab_id, "pagination") + except _CONFIG_PARSER_ERRORS: + pass + + try: + self.order_by = _config.get(self.gitlab_id, "order_by") + except _CONFIG_PARSER_ERRORS: + pass + + try: + self.user_agent = _config.get("global", "user_agent") + except _CONFIG_PARSER_ERRORS: + pass + try: + self.user_agent = _config.get(self.gitlab_id, "user_agent") + except _CONFIG_PARSER_ERRORS: + pass + + try: + self.keep_base_url = _config.getboolean("global", "keep_base_url") + except _CONFIG_PARSER_ERRORS: + pass + try: + self.keep_base_url = _config.getboolean(self.gitlab_id, "keep_base_url") + except _CONFIG_PARSER_ERRORS: + pass + + try: + self.retry_transient_errors = _config.getboolean( + "global", "retry_transient_errors" + ) + except _CONFIG_PARSER_ERRORS: + pass + try: + self.retry_transient_errors = _config.getboolean( + self.gitlab_id, "retry_transient_errors" + ) + except _CONFIG_PARSER_ERRORS: + pass + + def _get_values_from_helper(self) -> None: + """Update attributes that may get values from an external helper program""" + for attr in HELPER_ATTRIBUTES: + value = getattr(self, attr) + if not isinstance(value, str): + continue + + if not value.lower().strip().startswith(HELPER_PREFIX): + continue + + helper = value[len(HELPER_PREFIX) :].strip() + commmand = [expanduser(expandvars(token)) for token in shlex.split(helper)] + + try: + value = ( + subprocess.check_output(commmand, stderr=subprocess.PIPE) + .decode("utf-8") + .strip() + ) + except subprocess.CalledProcessError as e: + stderr = e.stderr.decode().strip() + raise GitlabConfigHelperError( + f"Failed to read {attr} value from helper " + f"for {self.gitlab_id}:\n{stderr}" + ) from e + + setattr(self, attr, value) diff --git a/env/lib/python3.12/site-packages/gitlab/const.py b/env/lib/python3.12/site-packages/gitlab/const.py new file mode 100644 index 0000000..b01ebd3 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/const.py @@ -0,0 +1,169 @@ +from enum import Enum, IntEnum + +from gitlab._version import __title__, __version__ + + +class GitlabEnum(str, Enum): + """An enum mixed in with str to make it JSON-serializable.""" + + +# https://gitlab.com/gitlab-org/gitlab/-/blob/e97357824bedf007e75f8782259fe07435b64fbb/lib/gitlab/access.rb#L12-18 +class AccessLevel(IntEnum): + NO_ACCESS: int = 0 + MINIMAL_ACCESS: int = 5 + GUEST: int = 10 + PLANNER: int = 15 + REPORTER: int = 20 + DEVELOPER: int = 30 + MAINTAINER: int = 40 + OWNER: int = 50 + ADMIN: int = 60 + + +# https://gitlab.com/gitlab-org/gitlab/-/blob/e97357824bedf007e75f8782259fe07435b64fbb/lib/gitlab/visibility_level.rb#L23-25 +class Visibility(GitlabEnum): + PRIVATE: str = "private" + INTERNAL: str = "internal" + PUBLIC: str = "public" + + +class NotificationLevel(GitlabEnum): + DISABLED: str = "disabled" + PARTICIPATING: str = "participating" + WATCH: str = "watch" + GLOBAL: str = "global" + MENTION: str = "mention" + CUSTOM: str = "custom" + + +# https://gitlab.com/gitlab-org/gitlab/-/blob/e97357824bedf007e75f8782259fe07435b64fbb/app/views/search/_category.html.haml#L10-37 +class SearchScope(GitlabEnum): + # all scopes (global, group and project) + PROJECTS: str = "projects" + ISSUES: str = "issues" + MERGE_REQUESTS: str = "merge_requests" + MILESTONES: str = "milestones" + WIKI_BLOBS: str = "wiki_blobs" + COMMITS: str = "commits" + BLOBS: str = "blobs" + USERS: str = "users" + + # specific global scope + GLOBAL_SNIPPET_TITLES: str = "snippet_titles" + + # specific project scope + PROJECT_NOTES: str = "notes" + + +# https://docs.gitlab.com/ee/api/merge_requests.html#merge-status +class DetailedMergeStatus(GitlabEnum): + # possible values for the detailed_merge_status field of Merge Requests + BLOCKED_STATUS: str = "blocked_status" + BROKEN_STATUS: str = "broken_status" + CHECKING: str = "checking" + UNCHECKED: str = "unchecked" + CI_MUST_PASS: str = "ci_must_pass" + CI_STILL_RUNNING: str = "ci_still_running" + DISCUSSIONS_NOT_RESOLVED: str = "discussions_not_resolved" + DRAFT_STATUS: str = "draft_status" + EXTERNAL_STATUS_CHECKS: str = "external_status_checks" + MERGEABLE: str = "mergeable" + NOT_APPROVED: str = "not_approved" + NOT_OPEN: str = "not_open" + POLICIES_DENIED: str = "policies_denied" + + +# https://docs.gitlab.com/ee/api/pipelines.html +class PipelineStatus(GitlabEnum): + CREATED: str = "created" + WAITING_FOR_RESOURCE: str = "waiting_for_resource" + PREPARING: str = "preparing" + PENDING: str = "pending" + RUNNING: str = "running" + SUCCESS: str = "success" + FAILED: str = "failed" + CANCELED: str = "canceled" + SKIPPED: str = "skipped" + MANUAL: str = "manual" + SCHEDULED: str = "scheduled" + + +DEFAULT_URL: str = "https://gitlab.com" + +NO_ACCESS = AccessLevel.NO_ACCESS.value +MINIMAL_ACCESS = AccessLevel.MINIMAL_ACCESS.value +GUEST_ACCESS = AccessLevel.GUEST.value +REPORTER_ACCESS = AccessLevel.REPORTER.value +DEVELOPER_ACCESS = AccessLevel.DEVELOPER.value +MAINTAINER_ACCESS = AccessLevel.MAINTAINER.value +OWNER_ACCESS = AccessLevel.OWNER.value +ADMIN_ACCESS = AccessLevel.ADMIN.value + +VISIBILITY_PRIVATE = Visibility.PRIVATE.value +VISIBILITY_INTERNAL = Visibility.INTERNAL.value +VISIBILITY_PUBLIC = Visibility.PUBLIC.value + +NOTIFICATION_LEVEL_DISABLED = NotificationLevel.DISABLED.value +NOTIFICATION_LEVEL_PARTICIPATING = NotificationLevel.PARTICIPATING.value +NOTIFICATION_LEVEL_WATCH = NotificationLevel.WATCH.value +NOTIFICATION_LEVEL_GLOBAL = NotificationLevel.GLOBAL.value +NOTIFICATION_LEVEL_MENTION = NotificationLevel.MENTION.value +NOTIFICATION_LEVEL_CUSTOM = NotificationLevel.CUSTOM.value + +# Search scopes +# all scopes (global, group and project) +SEARCH_SCOPE_PROJECTS = SearchScope.PROJECTS.value +SEARCH_SCOPE_ISSUES = SearchScope.ISSUES.value +SEARCH_SCOPE_MERGE_REQUESTS = SearchScope.MERGE_REQUESTS.value +SEARCH_SCOPE_MILESTONES = SearchScope.MILESTONES.value +SEARCH_SCOPE_WIKI_BLOBS = SearchScope.WIKI_BLOBS.value +SEARCH_SCOPE_COMMITS = SearchScope.COMMITS.value +SEARCH_SCOPE_BLOBS = SearchScope.BLOBS.value +SEARCH_SCOPE_USERS = SearchScope.USERS.value + +# specific global scope +SEARCH_SCOPE_GLOBAL_SNIPPET_TITLES = SearchScope.GLOBAL_SNIPPET_TITLES.value + +# specific project scope +SEARCH_SCOPE_PROJECT_NOTES = SearchScope.PROJECT_NOTES.value + +USER_AGENT: str = f"{__title__}/{__version__}" + +NO_JSON_RESPONSE_CODES = [204] +RETRYABLE_TRANSIENT_ERROR_CODES = [500, 502, 503, 504] + list(range(520, 531)) + +__all__ = [ + "AccessLevel", + "Visibility", + "NotificationLevel", + "SearchScope", + "ADMIN_ACCESS", + "DEFAULT_URL", + "DEVELOPER_ACCESS", + "GUEST_ACCESS", + "MAINTAINER_ACCESS", + "MINIMAL_ACCESS", + "NO_ACCESS", + "NOTIFICATION_LEVEL_CUSTOM", + "NOTIFICATION_LEVEL_DISABLED", + "NOTIFICATION_LEVEL_GLOBAL", + "NOTIFICATION_LEVEL_MENTION", + "NOTIFICATION_LEVEL_PARTICIPATING", + "NOTIFICATION_LEVEL_WATCH", + "OWNER_ACCESS", + "REPORTER_ACCESS", + "SEARCH_SCOPE_BLOBS", + "SEARCH_SCOPE_COMMITS", + "SEARCH_SCOPE_GLOBAL_SNIPPET_TITLES", + "SEARCH_SCOPE_ISSUES", + "SEARCH_SCOPE_MERGE_REQUESTS", + "SEARCH_SCOPE_MILESTONES", + "SEARCH_SCOPE_PROJECT_NOTES", + "SEARCH_SCOPE_PROJECTS", + "SEARCH_SCOPE_USERS", + "SEARCH_SCOPE_WIKI_BLOBS", + "USER_AGENT", + "VISIBILITY_INTERNAL", + "VISIBILITY_PRIVATE", + "VISIBILITY_PUBLIC", +] diff --git a/env/lib/python3.12/site-packages/gitlab/exceptions.py b/env/lib/python3.12/site-packages/gitlab/exceptions.py new file mode 100644 index 0000000..35f7dc1 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/exceptions.py @@ -0,0 +1,428 @@ +import functools +from typing import Any, Callable, cast, Optional, Type, TYPE_CHECKING, TypeVar, Union + + +class GitlabError(Exception): + def __init__( + self, + error_message: Union[str, bytes] = "", + response_code: Optional[int] = None, + response_body: Optional[bytes] = None, + ) -> None: + Exception.__init__(self, error_message) + # Http status code + self.response_code = response_code + # Full http response + self.response_body = response_body + # Parsed error message from gitlab + try: + # if we receive str/bytes we try to convert to unicode/str to have + # consistent message types (see #616) + if TYPE_CHECKING: + assert isinstance(error_message, bytes) + self.error_message = error_message.decode() + except Exception: + if TYPE_CHECKING: + assert isinstance(error_message, str) + self.error_message = error_message + + def __str__(self) -> str: + if self.response_code is not None: + return f"{self.response_code}: {self.error_message}" + return f"{self.error_message}" + + +class GitlabAuthenticationError(GitlabError): + pass + + +class RedirectError(GitlabError): + pass + + +class GitlabParsingError(GitlabError): + pass + + +class GitlabCiLintError(GitlabError): + pass + + +class GitlabConnectionError(GitlabError): + pass + + +class GitlabOperationError(GitlabError): + pass + + +class GitlabHttpError(GitlabError): + pass + + +class GitlabListError(GitlabOperationError): + pass + + +class GitlabGetError(GitlabOperationError): + pass + + +class GitlabHeadError(GitlabOperationError): + pass + + +class GitlabCreateError(GitlabOperationError): + pass + + +class GitlabUpdateError(GitlabOperationError): + pass + + +class GitlabDeleteError(GitlabOperationError): + pass + + +class GitlabSetError(GitlabOperationError): + pass + + +class GitlabProtectError(GitlabOperationError): + pass + + +class GitlabTransferProjectError(GitlabOperationError): + pass + + +class GitlabGroupTransferError(GitlabOperationError): + pass + + +class GitlabProjectDeployKeyError(GitlabOperationError): + pass + + +class GitlabPromoteError(GitlabOperationError): + pass + + +class GitlabCancelError(GitlabOperationError): + pass + + +class GitlabPipelineCancelError(GitlabCancelError): + pass + + +class GitlabRetryError(GitlabOperationError): + pass + + +class GitlabBuildCancelError(GitlabCancelError): + pass + + +class GitlabBuildRetryError(GitlabRetryError): + pass + + +class GitlabBuildPlayError(GitlabRetryError): + pass + + +class GitlabBuildEraseError(GitlabRetryError): + pass + + +class GitlabJobCancelError(GitlabCancelError): + pass + + +class GitlabJobRetryError(GitlabRetryError): + pass + + +class GitlabJobPlayError(GitlabRetryError): + pass + + +class GitlabJobEraseError(GitlabRetryError): + pass + + +class GitlabPipelinePlayError(GitlabRetryError): + pass + + +class GitlabPipelineRetryError(GitlabRetryError): + pass + + +class GitlabBlockError(GitlabOperationError): + pass + + +class GitlabUnblockError(GitlabOperationError): + pass + + +class GitlabDeactivateError(GitlabOperationError): + pass + + +class GitlabActivateError(GitlabOperationError): + pass + + +class GitlabBanError(GitlabOperationError): + pass + + +class GitlabUnbanError(GitlabOperationError): + pass + + +class GitlabSubscribeError(GitlabOperationError): + pass + + +class GitlabUnsubscribeError(GitlabOperationError): + pass + + +class GitlabMRForbiddenError(GitlabOperationError): + pass + + +class GitlabMRApprovalError(GitlabOperationError): + pass + + +class GitlabMRRebaseError(GitlabOperationError): + pass + + +class GitlabMRResetApprovalError(GitlabOperationError): + pass + + +class GitlabMRClosedError(GitlabOperationError): + pass + + +class GitlabMROnBuildSuccessError(GitlabOperationError): + pass + + +class GitlabTodoError(GitlabOperationError): + pass + + +class GitlabTopicMergeError(GitlabOperationError): + pass + + +class GitlabTimeTrackingError(GitlabOperationError): + pass + + +class GitlabUploadError(GitlabOperationError): + pass + + +class GitlabAttachFileError(GitlabOperationError): + pass + + +class GitlabImportError(GitlabOperationError): + pass + + +class GitlabInvitationError(GitlabOperationError): + pass + + +class GitlabCherryPickError(GitlabOperationError): + pass + + +class GitlabHousekeepingError(GitlabOperationError): + pass + + +class GitlabOwnershipError(GitlabOperationError): + pass + + +class GitlabSearchError(GitlabOperationError): + pass + + +class GitlabStopError(GitlabOperationError): + pass + + +class GitlabMarkdownError(GitlabOperationError): + pass + + +class GitlabVerifyError(GitlabOperationError): + pass + + +class GitlabRenderError(GitlabOperationError): + pass + + +class GitlabRepairError(GitlabOperationError): + pass + + +class GitlabRestoreError(GitlabOperationError): + pass + + +class GitlabRevertError(GitlabOperationError): + pass + + +class GitlabRotateError(GitlabOperationError): + pass + + +class GitlabLicenseError(GitlabOperationError): + pass + + +class GitlabFollowError(GitlabOperationError): + pass + + +class GitlabUnfollowError(GitlabOperationError): + pass + + +class GitlabUserApproveError(GitlabOperationError): + pass + + +class GitlabUserRejectError(GitlabOperationError): + pass + + +class GitlabDeploymentApprovalError(GitlabOperationError): + pass + + +class GitlabHookTestError(GitlabOperationError): + pass + + +# For an explanation of how these type-hints work see: +# https://mypy.readthedocs.io/en/stable/generics.html#declaring-decorators +# +# The goal here is that functions which get decorated will retain their types. +__F = TypeVar("__F", bound=Callable[..., Any]) + + +def on_http_error(error: Type[Exception]) -> Callable[[__F], __F]: + """Manage GitlabHttpError exceptions. + + This decorator function can be used to catch GitlabHttpError exceptions + raise specialized exceptions instead. + + Args: + The exception type to raise -- must inherit from GitlabError + """ + + def wrap(f: __F) -> __F: + @functools.wraps(f) + def wrapped_f(*args: Any, **kwargs: Any) -> Any: + try: + return f(*args, **kwargs) + except GitlabHttpError as e: + raise error(e.error_message, e.response_code, e.response_body) from e + + return cast(__F, wrapped_f) + + return wrap + + +# Export manually to keep mypy happy +__all__ = [ + "GitlabActivateError", + "GitlabAttachFileError", + "GitlabAuthenticationError", + "GitlabBanError", + "GitlabBlockError", + "GitlabBuildCancelError", + "GitlabBuildEraseError", + "GitlabBuildPlayError", + "GitlabBuildRetryError", + "GitlabCancelError", + "GitlabCherryPickError", + "GitlabCiLintError", + "GitlabConnectionError", + "GitlabCreateError", + "GitlabDeactivateError", + "GitlabDeleteError", + "GitlabDeploymentApprovalError", + "GitlabError", + "GitlabFollowError", + "GitlabGetError", + "GitlabGroupTransferError", + "GitlabHeadError", + "GitlabHookTestError", + "GitlabHousekeepingError", + "GitlabHttpError", + "GitlabImportError", + "GitlabInvitationError", + "GitlabJobCancelError", + "GitlabJobEraseError", + "GitlabJobPlayError", + "GitlabJobRetryError", + "GitlabLicenseError", + "GitlabListError", + "GitlabMRApprovalError", + "GitlabMRClosedError", + "GitlabMRForbiddenError", + "GitlabMROnBuildSuccessError", + "GitlabMRRebaseError", + "GitlabMRResetApprovalError", + "GitlabMarkdownError", + "GitlabOperationError", + "GitlabOwnershipError", + "GitlabParsingError", + "GitlabPipelineCancelError", + "GitlabPipelinePlayError", + "GitlabPipelineRetryError", + "GitlabProjectDeployKeyError", + "GitlabPromoteError", + "GitlabProtectError", + "GitlabRenderError", + "GitlabRepairError", + "GitlabRestoreError", + "GitlabRetryError", + "GitlabRevertError", + "GitlabRotateError", + "GitlabSearchError", + "GitlabSetError", + "GitlabStopError", + "GitlabSubscribeError", + "GitlabTimeTrackingError", + "GitlabTodoError", + "GitlabTopicMergeError", + "GitlabTransferProjectError", + "GitlabUnbanError", + "GitlabUnblockError", + "GitlabUnfollowError", + "GitlabUnsubscribeError", + "GitlabUpdateError", + "GitlabUploadError", + "GitlabUserApproveError", + "GitlabUserRejectError", + "GitlabVerifyError", + "RedirectError", +] diff --git a/env/lib/python3.12/site-packages/gitlab/mixins.py b/env/lib/python3.12/site-packages/gitlab/mixins.py new file mode 100644 index 0000000..2a05278 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/mixins.py @@ -0,0 +1,1099 @@ +import enum +from types import ModuleType +from typing import ( + Any, + Callable, + Dict, + Iterator, + List, + Optional, + Tuple, + Type, + TYPE_CHECKING, + Union, +) + +import requests + +import gitlab +from gitlab import base, cli +from gitlab import exceptions as exc +from gitlab import utils + +__all__ = [ + "GetMixin", + "GetWithoutIdMixin", + "RefreshMixin", + "ListMixin", + "RetrieveMixin", + "CreateMixin", + "UpdateMixin", + "SetMixin", + "DeleteMixin", + "CRUDMixin", + "NoUpdateMixin", + "SaveMixin", + "ObjectDeleteMixin", + "UserAgentDetailMixin", + "AccessRequestMixin", + "DownloadMixin", + "SubscribableMixin", + "TodoMixin", + "TimeTrackingMixin", + "ParticipantsMixin", + "BadgeRenderMixin", +] + +if TYPE_CHECKING: + # When running mypy we use these as the base classes + _RestManagerBase = base.RESTManager + _RestObjectBase = base.RESTObject +else: + _RestManagerBase = object + _RestObjectBase = object + + +class HeadMixin(_RestManagerBase): + @exc.on_http_error(exc.GitlabHeadError) + def head( + self, id: Optional[Union[str, int]] = None, **kwargs: Any + ) -> "requests.structures.CaseInsensitiveDict[Any]": + """Retrieve headers from an endpoint. + + Args: + id: ID of the object to retrieve + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + A requests header object. + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabHeadError: If the server cannot perform the request + """ + if TYPE_CHECKING: + assert self.path is not None + + path = self.path + if id is not None: + path = f"{path}/{utils.EncodedId(id)}" + + return self.gitlab.http_head(path, **kwargs) + + +class GetMixin(HeadMixin, _RestManagerBase): + _computed_path: Optional[str] + _from_parent_attrs: Dict[str, Any] + _obj_cls: Optional[Type[base.RESTObject]] + _optional_get_attrs: Tuple[str, ...] = () + _parent: Optional[base.RESTObject] + _parent_attrs: Dict[str, Any] + _path: Optional[str] + gitlab: gitlab.Gitlab + + @exc.on_http_error(exc.GitlabGetError) + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> base.RESTObject: + """Retrieve a single object. + + Args: + id: ID of the object to retrieve + lazy: If True, don't request the server, but create a + shallow object giving access to the managers. This is + useful if you want to avoid useless calls to the API. + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + The generated RESTObject. + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server cannot perform the request + """ + if isinstance(id, str): + id = utils.EncodedId(id) + path = f"{self.path}/{id}" + if TYPE_CHECKING: + assert self._obj_cls is not None + if lazy is True: + if TYPE_CHECKING: + assert self._obj_cls._id_attr is not None + return self._obj_cls(self, {self._obj_cls._id_attr: id}, lazy=lazy) + server_data = self.gitlab.http_get(path, **kwargs) + if TYPE_CHECKING: + assert not isinstance(server_data, requests.Response) + return self._obj_cls(self, server_data, lazy=lazy) + + +class GetWithoutIdMixin(HeadMixin, _RestManagerBase): + _computed_path: Optional[str] + _from_parent_attrs: Dict[str, Any] + _obj_cls: Optional[Type[base.RESTObject]] + _optional_get_attrs: Tuple[str, ...] = () + _parent: Optional[base.RESTObject] + _parent_attrs: Dict[str, Any] + _path: Optional[str] + gitlab: gitlab.Gitlab + + @exc.on_http_error(exc.GitlabGetError) + def get(self, **kwargs: Any) -> base.RESTObject: + """Retrieve a single object. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + The generated RESTObject + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server cannot perform the request + """ + if TYPE_CHECKING: + assert self.path is not None + server_data = self.gitlab.http_get(self.path, **kwargs) + if TYPE_CHECKING: + assert not isinstance(server_data, requests.Response) + assert self._obj_cls is not None + return self._obj_cls(self, server_data) + + +class RefreshMixin(_RestObjectBase): + _id_attr: Optional[str] + _attrs: Dict[str, Any] + _module: ModuleType + _parent_attrs: Dict[str, Any] + _updated_attrs: Dict[str, Any] + manager: base.RESTManager + + @exc.on_http_error(exc.GitlabGetError) + def refresh(self, **kwargs: Any) -> None: + """Refresh a single object from server. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns None (updates the object) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server cannot perform the request + """ + if self._id_attr: + path = f"{self.manager.path}/{self.encoded_id}" + else: + if TYPE_CHECKING: + assert self.manager.path is not None + path = self.manager.path + server_data = self.manager.gitlab.http_get(path, **kwargs) + if TYPE_CHECKING: + assert not isinstance(server_data, requests.Response) + self._update_attrs(server_data) + + +class ListMixin(HeadMixin, _RestManagerBase): + _computed_path: Optional[str] + _from_parent_attrs: Dict[str, Any] + _list_filters: Tuple[str, ...] = () + _obj_cls: Optional[Type[base.RESTObject]] + _parent: Optional[base.RESTObject] + _parent_attrs: Dict[str, Any] + _path: Optional[str] + gitlab: gitlab.Gitlab + + @exc.on_http_error(exc.GitlabListError) + def list(self, **kwargs: Any) -> Union[base.RESTObjectList, List[base.RESTObject]]: + """Retrieve a list of objects. + + Args: + all: If True, return all the items, without pagination + per_page: Number of items to retrieve per request + page: ID of the page to return (starts with page 1) + iterator: If set to True and no pagination option is + defined, return a generator instead of a list + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + The list of objects, or a generator if `iterator` is True + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabListError: If the server cannot perform the request + """ + + data, _ = utils._transform_types( + data=kwargs, + custom_types=self._types, + transform_data=True, + transform_files=False, + ) + + if self.gitlab.per_page: + data.setdefault("per_page", self.gitlab.per_page) + + # global keyset pagination + if self.gitlab.pagination: + data.setdefault("pagination", self.gitlab.pagination) + + if self.gitlab.order_by: + data.setdefault("order_by", self.gitlab.order_by) + + # Allow to overwrite the path, handy for custom listings + path = data.pop("path", self.path) + + if TYPE_CHECKING: + assert self._obj_cls is not None + obj = self.gitlab.http_list(path, **data) + if isinstance(obj, list): + return [self._obj_cls(self, item, created_from_list=True) for item in obj] + return base.RESTObjectList(self, self._obj_cls, obj) + + +class RetrieveMixin(ListMixin, GetMixin): + _computed_path: Optional[str] + _from_parent_attrs: Dict[str, Any] + _obj_cls: Optional[Type[base.RESTObject]] + _parent: Optional[base.RESTObject] + _parent_attrs: Dict[str, Any] + _path: Optional[str] + gitlab: gitlab.Gitlab + + +class CreateMixin(_RestManagerBase): + _computed_path: Optional[str] + _from_parent_attrs: Dict[str, Any] + _obj_cls: Optional[Type[base.RESTObject]] + _parent: Optional[base.RESTObject] + _parent_attrs: Dict[str, Any] + _path: Optional[str] + gitlab: gitlab.Gitlab + + @exc.on_http_error(exc.GitlabCreateError) + def create( + self, data: Optional[Dict[str, Any]] = None, **kwargs: Any + ) -> base.RESTObject: + """Create a new object. + + Args: + data: parameters to send to the server to create the + resource + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + A new instance of the managed object class built with + the data sent by the server + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the server cannot perform the request + """ + if data is None: + data = {} + + self._create_attrs.validate_attrs(data=data) + data, files = utils._transform_types( + data=data, custom_types=self._types, transform_data=False + ) + + # Handle specific URL for creation + path = kwargs.pop("path", self.path) + server_data = self.gitlab.http_post(path, post_data=data, files=files, **kwargs) + if TYPE_CHECKING: + assert not isinstance(server_data, requests.Response) + assert self._obj_cls is not None + return self._obj_cls(self, server_data) + + +@enum.unique +class UpdateMethod(enum.IntEnum): + PUT = 1 + POST = 2 + PATCH = 3 + + +class UpdateMixin(_RestManagerBase): + _computed_path: Optional[str] + _from_parent_attrs: Dict[str, Any] + _obj_cls: Optional[Type[base.RESTObject]] + _parent: Optional[base.RESTObject] + _parent_attrs: Dict[str, Any] + _path: Optional[str] + _update_method: UpdateMethod = UpdateMethod.PUT + gitlab: gitlab.Gitlab + + def _get_update_method( + self, + ) -> Callable[..., Union[Dict[str, Any], requests.Response]]: + """Return the HTTP method to use. + + Returns: + http_put (default) or http_post + """ + if self._update_method is UpdateMethod.POST: + http_method = self.gitlab.http_post + elif self._update_method is UpdateMethod.PATCH: + # only patch uses required kwargs, so our types are a bit misaligned + http_method = self.gitlab.http_patch # type: ignore[assignment] + else: + http_method = self.gitlab.http_put + return http_method + + @exc.on_http_error(exc.GitlabUpdateError) + def update( + self, + id: Optional[Union[str, int]] = None, + new_data: Optional[Dict[str, Any]] = None, + **kwargs: Any, + ) -> Dict[str, Any]: + """Update an object on the server. + + Args: + id: ID of the object to update (can be None if not required) + new_data: the update data for the object + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + The new object data (*not* a RESTObject) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabUpdateError: If the server cannot perform the request + """ + new_data = new_data or {} + + if id is None: + path = self.path + else: + path = f"{self.path}/{utils.EncodedId(id)}" + + excludes = [] + if self._obj_cls is not None and self._obj_cls._id_attr is not None: + excludes = [self._obj_cls._id_attr] + self._update_attrs.validate_attrs(data=new_data, excludes=excludes) + new_data, files = utils._transform_types( + data=new_data, custom_types=self._types, transform_data=False + ) + + http_method = self._get_update_method() + result = http_method(path, post_data=new_data, files=files, **kwargs) + if TYPE_CHECKING: + assert not isinstance(result, requests.Response) + return result + + +class SetMixin(_RestManagerBase): + _computed_path: Optional[str] + _from_parent_attrs: Dict[str, Any] + _obj_cls: Optional[Type[base.RESTObject]] + _parent: Optional[base.RESTObject] + _parent_attrs: Dict[str, Any] + _path: Optional[str] + gitlab: gitlab.Gitlab + + @exc.on_http_error(exc.GitlabSetError) + def set(self, key: str, value: str, **kwargs: Any) -> base.RESTObject: + """Create or update the object. + + Args: + key: The key of the object to create/update + value: The value to set for the object + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabSetError: If an error occurred + + Returns: + The created/updated attribute + """ + path = f"{self.path}/{utils.EncodedId(key)}" + data = {"value": value} + server_data = self.gitlab.http_put(path, post_data=data, **kwargs) + if TYPE_CHECKING: + assert not isinstance(server_data, requests.Response) + assert self._obj_cls is not None + return self._obj_cls(self, server_data) + + +class DeleteMixin(_RestManagerBase): + _computed_path: Optional[str] + _from_parent_attrs: Dict[str, Any] + _obj_cls: Optional[Type[base.RESTObject]] + _parent: Optional[base.RESTObject] + _parent_attrs: Dict[str, Any] + _path: Optional[str] + gitlab: gitlab.Gitlab + + @exc.on_http_error(exc.GitlabDeleteError) + def delete(self, id: Optional[Union[str, int]] = None, **kwargs: Any) -> None: + """Delete an object on the server. + + Args: + id: ID of the object to delete + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabDeleteError: If the server cannot perform the request + """ + if id is None: + path = self.path + else: + path = f"{self.path}/{utils.EncodedId(id)}" + + if TYPE_CHECKING: + assert path is not None + self.gitlab.http_delete(path, **kwargs) + + +class CRUDMixin(GetMixin, ListMixin, CreateMixin, UpdateMixin, DeleteMixin): + _computed_path: Optional[str] + _from_parent_attrs: Dict[str, Any] + _obj_cls: Optional[Type[base.RESTObject]] + _parent: Optional[base.RESTObject] + _parent_attrs: Dict[str, Any] + _path: Optional[str] + gitlab: gitlab.Gitlab + + +class NoUpdateMixin(GetMixin, ListMixin, CreateMixin, DeleteMixin): + _computed_path: Optional[str] + _from_parent_attrs: Dict[str, Any] + _obj_cls: Optional[Type[base.RESTObject]] + _parent: Optional[base.RESTObject] + _parent_attrs: Dict[str, Any] + _path: Optional[str] + gitlab: gitlab.Gitlab + + +class SaveMixin(_RestObjectBase): + """Mixin for RESTObject's that can be updated.""" + + _id_attr: Optional[str] + _attrs: Dict[str, Any] + _module: ModuleType + _parent_attrs: Dict[str, Any] + _updated_attrs: Dict[str, Any] + manager: base.RESTManager + + def _get_updated_data(self) -> Dict[str, Any]: + updated_data = {} + for attr in self.manager._update_attrs.required: + # Get everything required, no matter if it's been updated + updated_data[attr] = getattr(self, attr) + # Add the updated attributes + updated_data.update(self._updated_attrs) + + return updated_data + + def save(self, **kwargs: Any) -> Optional[Dict[str, Any]]: + """Save the changes made to the object to the server. + + The object is updated to match what the server returns. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + The new object data (*not* a RESTObject) + + Raise: + GitlabAuthenticationError: If authentication is not correct + GitlabUpdateError: If the server cannot perform the request + """ + updated_data = self._get_updated_data() + # Nothing to update. Server fails if sent an empty dict. + if not updated_data: + return None + + # call the manager + obj_id = self.encoded_id + if TYPE_CHECKING: + assert isinstance(self.manager, UpdateMixin) + server_data = self.manager.update(obj_id, updated_data, **kwargs) + self._update_attrs(server_data) + return server_data + + +class ObjectDeleteMixin(_RestObjectBase): + """Mixin for RESTObject's that can be deleted.""" + + _id_attr: Optional[str] + _attrs: Dict[str, Any] + _module: ModuleType + _parent_attrs: Dict[str, Any] + _updated_attrs: Dict[str, Any] + manager: base.RESTManager + + def delete(self, **kwargs: Any) -> None: + """Delete the object from the server. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabDeleteError: If the server cannot perform the request + """ + if TYPE_CHECKING: + assert isinstance(self.manager, DeleteMixin) + assert self.encoded_id is not None + self.manager.delete(self.encoded_id, **kwargs) + + +class UserAgentDetailMixin(_RestObjectBase): + _id_attr: Optional[str] + _attrs: Dict[str, Any] + _module: ModuleType + _parent_attrs: Dict[str, Any] + _updated_attrs: Dict[str, Any] + manager: base.RESTManager + + @cli.register_custom_action(cls_names=("Snippet", "ProjectSnippet", "ProjectIssue")) + @exc.on_http_error(exc.GitlabGetError) + def user_agent_detail(self, **kwargs: Any) -> Dict[str, Any]: + """Get the user agent detail. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server cannot perform the request + """ + path = f"{self.manager.path}/{self.encoded_id}/user_agent_detail" + result = self.manager.gitlab.http_get(path, **kwargs) + if TYPE_CHECKING: + assert not isinstance(result, requests.Response) + return result + + +class AccessRequestMixin(_RestObjectBase): + _id_attr: Optional[str] + _attrs: Dict[str, Any] + _module: ModuleType + _parent_attrs: Dict[str, Any] + _updated_attrs: Dict[str, Any] + manager: base.RESTManager + + @cli.register_custom_action( + cls_names=("ProjectAccessRequest", "GroupAccessRequest"), + optional=("access_level",), + ) + @exc.on_http_error(exc.GitlabUpdateError) + def approve( + self, access_level: int = gitlab.const.DEVELOPER_ACCESS, **kwargs: Any + ) -> None: + """Approve an access request. + + Args: + access_level: The access level for the user + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabUpdateError: If the server fails to perform the request + """ + + path = f"{self.manager.path}/{self.encoded_id}/approve" + data = {"access_level": access_level} + server_data = self.manager.gitlab.http_put(path, post_data=data, **kwargs) + if TYPE_CHECKING: + assert not isinstance(server_data, requests.Response) + self._update_attrs(server_data) + + +class DownloadMixin(_RestObjectBase): + _id_attr: Optional[str] + _attrs: Dict[str, Any] + _module: ModuleType + _parent_attrs: Dict[str, Any] + _updated_attrs: Dict[str, Any] + manager: base.RESTManager + + @cli.register_custom_action(cls_names=("GroupExport", "ProjectExport")) + @exc.on_http_error(exc.GitlabGetError) + def download( + self, + streamed: bool = False, + action: Optional[Callable[[bytes], None]] = None, + chunk_size: int = 1024, + *, + iterator: bool = False, + **kwargs: Any, + ) -> Optional[Union[bytes, Iterator[Any]]]: + """Download the archive of a resource export. + + Args: + streamed: If True the data will be processed by chunks of + `chunk_size` and each chunk is passed to `action` for + treatment + iterator: If True directly return the underlying response + iterator + action: Callable responsible of dealing with chunk of + data + chunk_size: Size of each chunk + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server failed to perform the request + + Returns: + The blob content if streamed is False, None otherwise + """ + path = f"{self.manager.path}/download" + result = self.manager.gitlab.http_get( + path, streamed=streamed, raw=True, **kwargs + ) + if TYPE_CHECKING: + assert isinstance(result, requests.Response) + return utils.response_content( + result, streamed, action, chunk_size, iterator=iterator + ) + + +class RotateMixin(_RestManagerBase): + _computed_path: Optional[str] + _from_parent_attrs: Dict[str, Any] + _obj_cls: Optional[Type[base.RESTObject]] + _parent: Optional[base.RESTObject] + _parent_attrs: Dict[str, Any] + _path: Optional[str] + gitlab: gitlab.Gitlab + + @cli.register_custom_action( + cls_names=( + "PersonalAccessTokenManager", + "GroupAccessTokenManager", + "ProjectAccessTokenManager", + ), + optional=("expires_at",), + ) + @exc.on_http_error(exc.GitlabRotateError) + def rotate( + self, id: Union[str, int], expires_at: Optional[str] = None, **kwargs: Any + ) -> Dict[str, Any]: + """Rotate an access token. + + Args: + id: ID of the token to rotate + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabRotateError: If the server cannot perform the request + """ + path = f"{self.path}/{utils.EncodedId(id)}/rotate" + data: Dict[str, Any] = {} + if expires_at is not None: + data = {"expires_at": expires_at} + + server_data = self.gitlab.http_post(path, post_data=data, **kwargs) + if TYPE_CHECKING: + assert not isinstance(server_data, requests.Response) + return server_data + + +class ObjectRotateMixin(_RestObjectBase): + _id_attr: Optional[str] + _attrs: Dict[str, Any] + _module: ModuleType + _parent_attrs: Dict[str, Any] + _updated_attrs: Dict[str, Any] + manager: base.RESTManager + + @cli.register_custom_action( + cls_names=("PersonalAccessToken", "GroupAccessToken", "ProjectAccessToken"), + optional=("expires_at",), + ) + @exc.on_http_error(exc.GitlabRotateError) + def rotate(self, **kwargs: Any) -> Dict[str, Any]: + """Rotate the current access token object. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabRotateError: If the server cannot perform the request + """ + if TYPE_CHECKING: + assert isinstance(self.manager, RotateMixin) + assert self.encoded_id is not None + server_data = self.manager.rotate(self.encoded_id, **kwargs) + self._update_attrs(server_data) + return server_data + + +class SubscribableMixin(_RestObjectBase): + _id_attr: Optional[str] + _attrs: Dict[str, Any] + _module: ModuleType + _parent_attrs: Dict[str, Any] + _updated_attrs: Dict[str, Any] + manager: base.RESTManager + + @cli.register_custom_action( + cls_names=("ProjectIssue", "ProjectMergeRequest", "ProjectLabel", "GroupLabel") + ) + @exc.on_http_error(exc.GitlabSubscribeError) + def subscribe(self, **kwargs: Any) -> None: + """Subscribe to the object notifications. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + raises: + GitlabAuthenticationError: If authentication is not correct + GitlabSubscribeError: If the subscription cannot be done + """ + path = f"{self.manager.path}/{self.encoded_id}/subscribe" + server_data = self.manager.gitlab.http_post(path, **kwargs) + if TYPE_CHECKING: + assert not isinstance(server_data, requests.Response) + self._update_attrs(server_data) + + @cli.register_custom_action( + cls_names=("ProjectIssue", "ProjectMergeRequest", "ProjectLabel", "GroupLabel") + ) + @exc.on_http_error(exc.GitlabUnsubscribeError) + def unsubscribe(self, **kwargs: Any) -> None: + """Unsubscribe from the object notifications. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + raises: + GitlabAuthenticationError: If authentication is not correct + GitlabUnsubscribeError: If the unsubscription cannot be done + """ + path = f"{self.manager.path}/{self.encoded_id}/unsubscribe" + server_data = self.manager.gitlab.http_post(path, **kwargs) + if TYPE_CHECKING: + assert not isinstance(server_data, requests.Response) + self._update_attrs(server_data) + + +class TodoMixin(_RestObjectBase): + _id_attr: Optional[str] + _attrs: Dict[str, Any] + _module: ModuleType + _parent_attrs: Dict[str, Any] + _updated_attrs: Dict[str, Any] + manager: base.RESTManager + + @cli.register_custom_action(cls_names=("ProjectIssue", "ProjectMergeRequest")) + @exc.on_http_error(exc.GitlabTodoError) + def todo(self, **kwargs: Any) -> None: + """Create a todo associated to the object. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabTodoError: If the todo cannot be set + """ + path = f"{self.manager.path}/{self.encoded_id}/todo" + self.manager.gitlab.http_post(path, **kwargs) + + +class TimeTrackingMixin(_RestObjectBase): + _id_attr: Optional[str] + _attrs: Dict[str, Any] + _module: ModuleType + _parent_attrs: Dict[str, Any] + _updated_attrs: Dict[str, Any] + manager: base.RESTManager + + @cli.register_custom_action(cls_names=("ProjectIssue", "ProjectMergeRequest")) + @exc.on_http_error(exc.GitlabTimeTrackingError) + def time_stats(self, **kwargs: Any) -> Dict[str, Any]: + """Get time stats for the object. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabTimeTrackingError: If the time tracking update cannot be done + """ + # Use the existing time_stats attribute if it exist, otherwise make an + # API call + if "time_stats" in self.attributes: + time_stats = self.attributes["time_stats"] + if TYPE_CHECKING: + assert isinstance(time_stats, dict) + return time_stats + + path = f"{self.manager.path}/{self.encoded_id}/time_stats" + result = self.manager.gitlab.http_get(path, **kwargs) + if TYPE_CHECKING: + assert not isinstance(result, requests.Response) + return result + + @cli.register_custom_action( + cls_names=("ProjectIssue", "ProjectMergeRequest"), required=("duration",) + ) + @exc.on_http_error(exc.GitlabTimeTrackingError) + def time_estimate(self, duration: str, **kwargs: Any) -> Dict[str, Any]: + """Set an estimated time of work for the object. + + Args: + duration: Duration in human format (e.g. 3h30) + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabTimeTrackingError: If the time tracking update cannot be done + """ + path = f"{self.manager.path}/{self.encoded_id}/time_estimate" + data = {"duration": duration} + result = self.manager.gitlab.http_post(path, post_data=data, **kwargs) + if TYPE_CHECKING: + assert not isinstance(result, requests.Response) + return result + + @cli.register_custom_action(cls_names=("ProjectIssue", "ProjectMergeRequest")) + @exc.on_http_error(exc.GitlabTimeTrackingError) + def reset_time_estimate(self, **kwargs: Any) -> Dict[str, Any]: + """Resets estimated time for the object to 0 seconds. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabTimeTrackingError: If the time tracking update cannot be done + """ + path = f"{self.manager.path}/{self.encoded_id}/reset_time_estimate" + result = self.manager.gitlab.http_post(path, **kwargs) + if TYPE_CHECKING: + assert not isinstance(result, requests.Response) + return result + + @cli.register_custom_action( + cls_names=("ProjectIssue", "ProjectMergeRequest"), required=("duration",) + ) + @exc.on_http_error(exc.GitlabTimeTrackingError) + def add_spent_time(self, duration: str, **kwargs: Any) -> Dict[str, Any]: + """Add time spent working on the object. + + Args: + duration: Duration in human format (e.g. 3h30) + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabTimeTrackingError: If the time tracking update cannot be done + """ + path = f"{self.manager.path}/{self.encoded_id}/add_spent_time" + data = {"duration": duration} + result = self.manager.gitlab.http_post(path, post_data=data, **kwargs) + if TYPE_CHECKING: + assert not isinstance(result, requests.Response) + return result + + @cli.register_custom_action(cls_names=("ProjectIssue", "ProjectMergeRequest")) + @exc.on_http_error(exc.GitlabTimeTrackingError) + def reset_spent_time(self, **kwargs: Any) -> Dict[str, Any]: + """Resets the time spent working on the object. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabTimeTrackingError: If the time tracking update cannot be done + """ + path = f"{self.manager.path}/{self.encoded_id}/reset_spent_time" + result = self.manager.gitlab.http_post(path, **kwargs) + if TYPE_CHECKING: + assert not isinstance(result, requests.Response) + return result + + +class ParticipantsMixin(_RestObjectBase): + _id_attr: Optional[str] + _attrs: Dict[str, Any] + _module: ModuleType + _parent_attrs: Dict[str, Any] + _updated_attrs: Dict[str, Any] + manager: base.RESTManager + + @cli.register_custom_action(cls_names=("ProjectMergeRequest", "ProjectIssue")) + @exc.on_http_error(exc.GitlabListError) + def participants( + self, **kwargs: Any + ) -> Union[gitlab.client.GitlabList, List[Dict[str, Any]]]: + """List the participants. + + Args: + all: If True, return all the items, without pagination + per_page: Number of items to retrieve per request + page: ID of the page to return (starts with page 1) + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabListError: If the list could not be retrieved + + Returns: + The list of participants + """ + + path = f"{self.manager.path}/{self.encoded_id}/participants" + result = self.manager.gitlab.http_list(path, **kwargs) + if TYPE_CHECKING: + assert not isinstance(result, requests.Response) + return result + + +class BadgeRenderMixin(_RestManagerBase): + @cli.register_custom_action( + cls_names=("GroupBadgeManager", "ProjectBadgeManager"), + required=("link_url", "image_url"), + ) + @exc.on_http_error(exc.GitlabRenderError) + def render(self, link_url: str, image_url: str, **kwargs: Any) -> Dict[str, Any]: + """Preview link_url and image_url after interpolation. + + Args: + link_url: URL of the badge link + image_url: URL of the badge image + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabRenderError: If the rendering failed + + Returns: + The rendering properties + """ + path = f"{self.path}/render" + data = {"link_url": link_url, "image_url": image_url} + result = self.gitlab.http_get(path, data, **kwargs) + if TYPE_CHECKING: + assert not isinstance(result, requests.Response) + return result + + +class PromoteMixin(_RestObjectBase): + _id_attr: Optional[str] + _attrs: Dict[str, Any] + _module: ModuleType + _parent_attrs: Dict[str, Any] + _updated_attrs: Dict[str, Any] + _update_method: UpdateMethod = UpdateMethod.PUT + manager: base.RESTManager + + def _get_update_method( + self, + ) -> Callable[..., Union[Dict[str, Any], requests.Response]]: + """Return the HTTP method to use. + + Returns: + http_put (default) or http_post + """ + if self._update_method is UpdateMethod.POST: + http_method = self.manager.gitlab.http_post + else: + http_method = self.manager.gitlab.http_put + return http_method + + @exc.on_http_error(exc.GitlabPromoteError) + def promote(self, **kwargs: Any) -> Dict[str, Any]: + """Promote the item. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabPromoteError: If the item could not be promoted + GitlabParsingError: If the json data could not be parsed + + Returns: + The updated object data (*not* a RESTObject) + """ + + path = f"{self.manager.path}/{self.encoded_id}/promote" + http_method = self._get_update_method() + result = http_method(path, **kwargs) + if TYPE_CHECKING: + assert not isinstance(result, requests.Response) + return result + + +class UploadMixin(_RestObjectBase): + _id_attr: Optional[str] + _attrs: Dict[str, Any] + _module: ModuleType + _parent_attrs: Dict[str, Any] + _updated_attrs: Dict[str, Any] + _upload_path: str + manager: base.RESTManager + + def _get_upload_path(self) -> str: + """Formats _upload_path with object attributes. + + Returns: + The upload path + """ + if TYPE_CHECKING: + assert isinstance(self._upload_path, str) + data = self.attributes + return self._upload_path.format(**data) + + @cli.register_custom_action( + cls_names=("Project", "ProjectWiki"), required=("filename", "filepath") + ) + @exc.on_http_error(exc.GitlabUploadError) + def upload( + self, + filename: str, + filedata: Optional[bytes] = None, + filepath: Optional[str] = None, + **kwargs: Any, + ) -> Dict[str, Any]: + """Upload the specified file. + + .. note:: + + Either ``filedata`` or ``filepath`` *MUST* be specified. + + Args: + filename: The name of the file being uploaded + filedata: The raw data of the file being uploaded + filepath: The path to a local file to upload (optional) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabUploadError: If the file upload fails + GitlabUploadError: If ``filedata`` and ``filepath`` are not + specified + GitlabUploadError: If both ``filedata`` and ``filepath`` are + specified + + Returns: + A ``dict`` with info on the uploaded file + """ + if filepath is None and filedata is None: + raise exc.GitlabUploadError("No file contents or path specified") + + if filedata is not None and filepath is not None: + raise exc.GitlabUploadError("File contents and file path specified") + + if filepath is not None: + with open(filepath, "rb") as f: + filedata = f.read() + + file_info = {"file": (filename, filedata)} + path = self._get_upload_path() + server_data = self.manager.gitlab.http_post(path, files=file_info, **kwargs) + + if TYPE_CHECKING: + assert isinstance(server_data, dict) + return server_data diff --git a/env/lib/python3.12/site-packages/gitlab/py.typed b/env/lib/python3.12/site-packages/gitlab/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/env/lib/python3.12/site-packages/gitlab/types.py b/env/lib/python3.12/site-packages/gitlab/types.py new file mode 100644 index 0000000..14883c6 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/types.py @@ -0,0 +1,105 @@ +import dataclasses +from typing import Any, Dict, List, Optional, Tuple, TYPE_CHECKING + + +@dataclasses.dataclass(frozen=True) +class RequiredOptional: + required: Tuple[str, ...] = () + optional: Tuple[str, ...] = () + exclusive: Tuple[str, ...] = () + + def validate_attrs( + self, + *, + data: Dict[str, Any], + excludes: Optional[List[str]] = None, + ) -> None: + if excludes is None: + excludes = [] + + if self.required: + required = [k for k in self.required if k not in excludes] + missing = [attr for attr in required if attr not in data] + if missing: + raise AttributeError(f"Missing attributes: {', '.join(missing)}") + + if self.exclusive: + exclusives = [attr for attr in data if attr in self.exclusive] + if len(exclusives) > 1: + raise AttributeError( + f"Provide only one of these attributes: {', '.join(exclusives)}" + ) + if not exclusives: + raise AttributeError( + f"Must provide one of these attributes: " + f"{', '.join(self.exclusive)}" + ) + + +class GitlabAttribute: + def __init__(self, value: Any = None) -> None: + self._value = value + + def get(self) -> Any: + return self._value + + def set_from_cli(self, cli_value: Any) -> None: + self._value = cli_value + + def get_for_api(self, *, key: str) -> Tuple[str, Any]: + return (key, self._value) + + +class _ListArrayAttribute(GitlabAttribute): + """Helper class to support `list` / `array` types.""" + + def set_from_cli(self, cli_value: str) -> None: + if not cli_value.strip(): + self._value = [] + else: + self._value = [item.strip() for item in cli_value.split(",")] + + def get_for_api(self, *, key: str) -> Tuple[str, str]: + # Do not comma-split single value passed as string + if isinstance(self._value, str): + return (key, self._value) + + if TYPE_CHECKING: + assert isinstance(self._value, list) + return (key, ",".join([str(x) for x in self._value])) + + +class ArrayAttribute(_ListArrayAttribute): + """To support `array` types as documented in + https://docs.gitlab.com/ee/api/#array""" + + def get_for_api(self, *, key: str) -> Tuple[str, Any]: + if isinstance(self._value, str): + return (f"{key}[]", self._value) + + if TYPE_CHECKING: + assert isinstance(self._value, list) + return (f"{key}[]", self._value) + + +class CommaSeparatedListAttribute(_ListArrayAttribute): + """For values which are sent to the server as a Comma Separated Values + (CSV) string. We allow them to be specified as a list and we convert it + into a CSV""" + + +class LowercaseStringAttribute(GitlabAttribute): + def get_for_api(self, *, key: str) -> Tuple[str, str]: + return (key, str(self._value).lower()) + + +class FileAttribute(GitlabAttribute): + @staticmethod + def get_file_name(attr_name: Optional[str] = None) -> Optional[str]: + return attr_name + + +class ImageAttribute(FileAttribute): + @staticmethod + def get_file_name(attr_name: Optional[str] = None) -> str: + return f"{attr_name}.png" if attr_name else "image.png" diff --git a/env/lib/python3.12/site-packages/gitlab/utils.py b/env/lib/python3.12/site-packages/gitlab/utils.py new file mode 100644 index 0000000..b5ca73b --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/utils.py @@ -0,0 +1,303 @@ +import dataclasses +import email.message +import logging +import pathlib +import time +import traceback +import urllib.parse +import warnings +from typing import ( + Any, + Callable, + Dict, + Iterator, + Literal, + MutableMapping, + Optional, + Tuple, + Type, + Union, +) + +import requests + +from gitlab import const, types + + +class _StdoutStream: + def __call__(self, chunk: Any) -> None: + print(chunk) + + +def get_base_url(url: Optional[str] = None) -> str: + """Return the base URL with the trailing slash stripped. + If the URL is a Falsy value, return the default URL. + Returns: + The base URL + """ + if not url: + return const.DEFAULT_URL + + return url.rstrip("/") + + +def get_content_type(content_type: Optional[str]) -> str: + message = email.message.Message() + if content_type is not None: + message["content-type"] = content_type + + return message.get_content_type() + + +class MaskingFormatter(logging.Formatter): + """A logging formatter that can mask credentials""" + + def __init__( + self, + fmt: Optional[str] = logging.BASIC_FORMAT, + datefmt: Optional[str] = None, + style: Literal["%", "{", "$"] = "%", + validate: bool = True, + masked: Optional[str] = None, + ) -> None: + super().__init__(fmt, datefmt, style, validate) + self.masked = masked + + def _filter(self, entry: str) -> str: + if not self.masked: + return entry + + return entry.replace(self.masked, "[MASKED]") + + def format(self, record: logging.LogRecord) -> str: + original = logging.Formatter.format(self, record) + return self._filter(original) + + +def response_content( + response: requests.Response, + streamed: bool, + action: Optional[Callable[[bytes], None]], + chunk_size: int, + *, + iterator: bool, +) -> Optional[Union[bytes, Iterator[Any]]]: + if iterator: + return response.iter_content(chunk_size=chunk_size) + + if streamed is False: + return response.content + + if action is None: + action = _StdoutStream() + + for chunk in response.iter_content(chunk_size=chunk_size): + if chunk: + action(chunk) + return None + + +class Retry: + def __init__( + self, + max_retries: int, + obey_rate_limit: Optional[bool] = True, + retry_transient_errors: Optional[bool] = False, + ) -> None: + self.cur_retries = 0 + self.max_retries = max_retries + self.obey_rate_limit = obey_rate_limit + self.retry_transient_errors = retry_transient_errors + + def _retryable_status_code( + self, status_code: Optional[int], reason: str = "" + ) -> bool: + if status_code == 429 and self.obey_rate_limit: + return True + + if not self.retry_transient_errors: + return False + if status_code in const.RETRYABLE_TRANSIENT_ERROR_CODES: + return True + if status_code == 409 and "Resource lock" in reason: + return True + + return False + + def handle_retry_on_status( + self, + status_code: Optional[int], + headers: Optional[MutableMapping[str, str]] = None, + reason: str = "", + ) -> bool: + if not self._retryable_status_code(status_code, reason): + return False + + if headers is None: + headers = {} + + # Response headers documentation: + # https://docs.gitlab.com/ee/user/admin_area/settings/user_and_ip_rate_limits.html#response-headers + if self.max_retries == -1 or self.cur_retries < self.max_retries: + wait_time = 2**self.cur_retries * 0.1 + if "Retry-After" in headers: + wait_time = int(headers["Retry-After"]) + elif "RateLimit-Reset" in headers: + wait_time = int(headers["RateLimit-Reset"]) - time.time() + self.cur_retries += 1 + time.sleep(wait_time) + return True + + return False + + def handle_retry(self) -> bool: + if self.retry_transient_errors and ( + self.max_retries == -1 or self.cur_retries < self.max_retries + ): + wait_time = 2**self.cur_retries * 0.1 + self.cur_retries += 1 + time.sleep(wait_time) + return True + + return False + + +def _transform_types( + data: Dict[str, Any], + custom_types: Dict[str, Any], + *, + transform_data: bool, + transform_files: Optional[bool] = True, +) -> Tuple[Dict[str, Any], Dict[str, Any]]: + """Copy the data dict with attributes that have custom types and transform them + before being sent to the server. + + ``transform_files``: If ``True`` (default), also populates the ``files`` dict for + FileAttribute types with tuples to prepare fields for requests' MultipartEncoder: + https://toolbelt.readthedocs.io/en/latest/user.html#multipart-form-data-encoder + + ``transform_data``: If ``True`` transforms the ``data`` dict with fields + suitable for encoding as query parameters for GitLab's API: + https://docs.gitlab.com/ee/api/#encoding-api-parameters-of-array-and-hash-types + + Returns: + A tuple of the transformed data dict and files dict""" + + # Duplicate data to avoid messing with what the user sent us + data = data.copy() + if not transform_files and not transform_data: + return data, {} + + files = {} + + for attr_name, attr_class in custom_types.items(): + if attr_name not in data: + continue + + gitlab_attribute = attr_class(data[attr_name]) + + # if the type is FileAttribute we need to pass the data as file + if isinstance(gitlab_attribute, types.FileAttribute) and transform_files: + key = gitlab_attribute.get_file_name(attr_name) + files[attr_name] = (key, data.pop(attr_name)) + continue + + if not transform_data: + continue + + if isinstance(gitlab_attribute, types.GitlabAttribute): + key, value = gitlab_attribute.get_for_api(key=attr_name) + if key != attr_name: + del data[attr_name] + data[key] = value + + return data, files + + +def copy_dict( + *, + src: Dict[str, Any], + dest: Dict[str, Any], +) -> None: + for k, v in src.items(): + if isinstance(v, dict): + # NOTE(jlvillal): This provides some support for the `hash` type + # https://docs.gitlab.com/ee/api/#hash + # Transform dict values to new attributes. For example: + # custom_attributes: {'foo', 'bar'} => + # "custom_attributes['foo']": "bar" + for dict_k, dict_v in v.items(): + dest[f"{k}[{dict_k}]"] = dict_v + else: + dest[k] = v + + +class EncodedId(str): + """A custom `str` class that will return the URL-encoded value of the string. + + * Using it recursively will only url-encode the value once. + * Can accept either `str` or `int` as input value. + * Can be used in an f-string and output the URL-encoded string. + + Reference to documentation on why this is necessary. + + See:: + + https://docs.gitlab.com/ee/api/index.html#namespaced-path-encoding + https://docs.gitlab.com/ee/api/index.html#path-parameters + """ + + def __new__(cls, value: Union[str, int, "EncodedId"]) -> "EncodedId": + if isinstance(value, EncodedId): + return value + + if not isinstance(value, (int, str)): + raise TypeError(f"Unsupported type received: {type(value)}") + if isinstance(value, str): + value = urllib.parse.quote(value, safe="") + return super().__new__(cls, value) + + +def remove_none_from_dict(data: Dict[str, Any]) -> Dict[str, Any]: + return {k: v for k, v in data.items() if v is not None} + + +def warn( + message: str, + *, + category: Optional[Type[Warning]] = None, + source: Optional[Any] = None, + show_caller: bool = True, +) -> None: + """This `warnings.warn` wrapper function attempts to show the location causing the + warning in the user code that called the library. + + It does this by walking up the stack trace to find the first frame located outside + the `gitlab/` directory. This is helpful to users as it shows them their code that + is causing the warning. + """ + # Get `stacklevel` for user code so we indicate where issue is in + # their code. + pg_dir = pathlib.Path(__file__).parent.resolve() + stack = traceback.extract_stack() + stacklevel = 1 + warning_from = "" + for stacklevel, frame in enumerate(reversed(stack), start=1): + warning_from = f" (python-gitlab: {frame.filename}:{frame.lineno})" + frame_dir = str(pathlib.Path(frame.filename).parent.resolve()) + if not frame_dir.startswith(str(pg_dir)): + break + if show_caller: + message += warning_from + warnings.warn( + message=message, + category=category, + stacklevel=stacklevel, + source=source, + ) + + +@dataclasses.dataclass +class WarnMessageData: + message: str + show_caller: bool diff --git a/env/lib/python3.12/site-packages/gitlab/v4/__init__.py b/env/lib/python3.12/site-packages/gitlab/v4/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/__pycache__/__init__.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..417e5da8c24f3ec18e44b6efc3c9bdcaedc0aad5 GIT binary patch literal 171 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 N31jz>3t|KV{txd>7&-s| literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/cli.py b/env/lib/python3.12/site-packages/gitlab/v4/cli.py new file mode 100644 index 0000000..8192f95 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/cli.py @@ -0,0 +1,605 @@ +import argparse +import json +import operator +import sys +from typing import Any, Dict, List, Optional, Type, TYPE_CHECKING, Union + +import gitlab +import gitlab.base +import gitlab.v4.objects +from gitlab import cli +from gitlab.exceptions import GitlabCiLintError + + +class GitlabCLI: + def __init__( + self, + gl: gitlab.Gitlab, + gitlab_resource: str, + resource_action: str, + args: Dict[str, str], + ) -> None: + self.cls: Type[gitlab.base.RESTObject] = cli.gitlab_resource_to_cls( + gitlab_resource, namespace=gitlab.v4.objects + ) + self.cls_name = self.cls.__name__ + self.gitlab_resource = gitlab_resource.replace("-", "_") + self.resource_action = resource_action.lower() + self.gl = gl + self.args = args + self.parent_args: Dict[str, Any] = {} + self.mgr_cls: Union[ + Type[gitlab.mixins.CreateMixin], + Type[gitlab.mixins.DeleteMixin], + Type[gitlab.mixins.GetMixin], + Type[gitlab.mixins.GetWithoutIdMixin], + Type[gitlab.mixins.ListMixin], + Type[gitlab.mixins.UpdateMixin], + ] = getattr(gitlab.v4.objects, f"{self.cls.__name__}Manager") + # We could do something smart, like splitting the manager name to find + # parents, build the chain of managers to get to the final object. + # Instead we do something ugly and efficient: interpolate variables in + # the class _path attribute, and replace the value with the result. + if TYPE_CHECKING: + assert self.mgr_cls._path is not None + + self._process_from_parent_attrs() + + self.mgr_cls._path = self.mgr_cls._path.format(**self.parent_args) + self.mgr = self.mgr_cls(gl) + self.mgr._from_parent_attrs = self.parent_args + if self.mgr_cls._types: + for attr_name, type_cls in self.mgr_cls._types.items(): + if attr_name in self.args.keys(): + obj = type_cls() + obj.set_from_cli(self.args[attr_name]) + self.args[attr_name] = obj.get() + + def _process_from_parent_attrs(self) -> None: + """Items in the path need to be url-encoded. There is a 1:1 mapping from + mgr_cls._from_parent_attrs <--> mgr_cls._path. Those values must be url-encoded + as they may contain a slash '/'.""" + for key in self.mgr_cls._from_parent_attrs: + if key not in self.args: + continue + + self.parent_args[key] = gitlab.utils.EncodedId(self.args[key]) + # If we don't delete it then it will be added to the URL as a query-string + del self.args[key] + + def run(self) -> Any: + # Check for a method that matches gitlab_resource + action + method = f"do_{self.gitlab_resource}_{self.resource_action}" + if hasattr(self, method): + return getattr(self, method)() + + # Fallback to standard actions (get, list, create, ...) + method = f"do_{self.resource_action}" + if hasattr(self, method): + return getattr(self, method)() + + # Finally try to find custom methods + return self.do_custom() + + def do_custom(self) -> Any: + class_instance: Union[gitlab.base.RESTManager, gitlab.base.RESTObject] + in_obj = cli.custom_actions[self.cls_name][self.resource_action].in_object + + # Get the object (lazy), then act + if in_obj: + data = {} + if self.mgr._from_parent_attrs: + for k in self.mgr._from_parent_attrs: + data[k] = self.parent_args[k] + if not issubclass(self.cls, gitlab.mixins.GetWithoutIdMixin): + if TYPE_CHECKING: + assert isinstance(self.cls._id_attr, str) + data[self.cls._id_attr] = self.args.pop(self.cls._id_attr) + class_instance = self.cls(self.mgr, data) + else: + class_instance = self.mgr + + method_name = self.resource_action.replace("-", "_") + return getattr(class_instance, method_name)(**self.args) + + def do_project_export_download(self) -> None: + try: + project = self.gl.projects.get(self.parent_args["project_id"], lazy=True) + export_status = project.exports.get() + if TYPE_CHECKING: + assert export_status is not None + data = export_status.download() + if TYPE_CHECKING: + assert data is not None + assert isinstance(data, bytes) + sys.stdout.buffer.write(data) + + except Exception as e: # pragma: no cover, cli.die is unit-tested + cli.die("Impossible to download the export", e) + + def do_validate(self) -> None: + if TYPE_CHECKING: + assert isinstance(self.mgr, gitlab.v4.objects.CiLintManager) + try: + self.mgr.validate(self.args) + except GitlabCiLintError as e: # pragma: no cover, cli.die is unit-tested + cli.die("CI YAML Lint failed", e) + except Exception as e: # pragma: no cover, cli.die is unit-tested + cli.die("Cannot validate CI YAML", e) + + def do_create(self) -> gitlab.base.RESTObject: + if TYPE_CHECKING: + assert isinstance(self.mgr, gitlab.mixins.CreateMixin) + try: + result = self.mgr.create(self.args) + except Exception as e: # pragma: no cover, cli.die is unit-tested + cli.die("Impossible to create object", e) + return result + + def do_list( + self, + ) -> Union[gitlab.base.RESTObjectList, List[gitlab.base.RESTObject]]: + if TYPE_CHECKING: + assert isinstance(self.mgr, gitlab.mixins.ListMixin) + message_details = gitlab.utils.WarnMessageData( + message=( + "Your query returned {len_items} of {total_items} items. To return all " + "items use `--get-all`. To silence this warning use `--no-get-all`." + ), + show_caller=False, + ) + + try: + result = self.mgr.list(**self.args, message_details=message_details) + except Exception as e: # pragma: no cover, cli.die is unit-tested + cli.die("Impossible to list objects", e) + return result + + def do_get(self) -> Optional[gitlab.base.RESTObject]: + if isinstance(self.mgr, gitlab.mixins.GetWithoutIdMixin): + try: + result = self.mgr.get(id=None, **self.args) + except Exception as e: # pragma: no cover, cli.die is unit-tested + cli.die("Impossible to get object", e) + return result + + if TYPE_CHECKING: + assert isinstance(self.mgr, gitlab.mixins.GetMixin) + assert isinstance(self.cls._id_attr, str) + + id = self.args.pop(self.cls._id_attr) + try: + result = self.mgr.get(id, lazy=False, **self.args) + except Exception as e: # pragma: no cover, cli.die is unit-tested + cli.die("Impossible to get object", e) + return result + + def do_delete(self) -> None: + if TYPE_CHECKING: + assert isinstance(self.mgr, gitlab.mixins.DeleteMixin) + assert isinstance(self.cls._id_attr, str) + id = self.args.pop(self.cls._id_attr) + try: + self.mgr.delete(id, **self.args) + except Exception as e: # pragma: no cover, cli.die is unit-tested + cli.die("Impossible to destroy object", e) + + def do_update(self) -> Dict[str, Any]: + if TYPE_CHECKING: + assert isinstance(self.mgr, gitlab.mixins.UpdateMixin) + if issubclass(self.mgr_cls, gitlab.mixins.GetWithoutIdMixin): + id = None + else: + if TYPE_CHECKING: + assert isinstance(self.cls._id_attr, str) + id = self.args.pop(self.cls._id_attr) + + try: + result = self.mgr.update(id, self.args) + except Exception as e: # pragma: no cover, cli.die is unit-tested + cli.die("Impossible to update object", e) + return result + + +# https://github.com/python/typeshed/issues/7539#issuecomment-1076581049 +if TYPE_CHECKING: + _SubparserType = argparse._SubParsersAction[argparse.ArgumentParser] +else: + _SubparserType = Any + + +def _populate_sub_parser_by_class( + cls: Type[gitlab.base.RESTObject], + sub_parser: _SubparserType, +) -> None: + mgr_cls_name = f"{cls.__name__}Manager" + mgr_cls = getattr(gitlab.v4.objects, mgr_cls_name) + + action_parsers: Dict[str, argparse.ArgumentParser] = {} + for action_name, help_text in [ + ("list", "List the GitLab resources"), + ("get", "Get a GitLab resource"), + ("create", "Create a GitLab resource"), + ("update", "Update a GitLab resource"), + ("delete", "Delete a GitLab resource"), + ]: + if not hasattr(mgr_cls, action_name): + continue + + sub_parser_action = sub_parser.add_parser( + action_name, + conflict_handler="resolve", + help=help_text, + ) + action_parsers[action_name] = sub_parser_action + sub_parser_action.add_argument("--sudo", required=False) + if mgr_cls._from_parent_attrs: + for x in mgr_cls._from_parent_attrs: + sub_parser_action.add_argument( + f"--{x.replace('_', '-')}", required=True + ) + + if action_name == "list": + for x in mgr_cls._list_filters: + sub_parser_action.add_argument( + f"--{x.replace('_', '-')}", required=False + ) + + sub_parser_action.add_argument("--page", required=False, type=int) + sub_parser_action.add_argument("--per-page", required=False, type=int) + get_all_group = sub_parser_action.add_mutually_exclusive_group() + get_all_group.add_argument( + "--get-all", + required=False, + action="store_const", + const=True, + default=None, + dest="get_all", + help="Return all items from the server, without pagination.", + ) + get_all_group.add_argument( + "--no-get-all", + required=False, + action="store_const", + const=False, + default=None, + dest="get_all", + help="Don't return all items from the server.", + ) + + if action_name == "delete": + if cls._id_attr is not None: + id_attr = cls._id_attr.replace("_", "-") + sub_parser_action.add_argument(f"--{id_attr}", required=True) + + if action_name == "get": + if not issubclass(cls, gitlab.mixins.GetWithoutIdMixin): + if cls._id_attr is not None: + id_attr = cls._id_attr.replace("_", "-") + sub_parser_action.add_argument(f"--{id_attr}", required=True) + + for x in mgr_cls._optional_get_attrs: + sub_parser_action.add_argument( + f"--{x.replace('_', '-')}", required=False + ) + + if action_name == "create": + for x in mgr_cls._create_attrs.required: + sub_parser_action.add_argument( + f"--{x.replace('_', '-')}", required=True + ) + for x in mgr_cls._create_attrs.optional: + sub_parser_action.add_argument( + f"--{x.replace('_', '-')}", required=False + ) + if mgr_cls._create_attrs.exclusive: + group = sub_parser_action.add_mutually_exclusive_group() + for x in mgr_cls._create_attrs.exclusive: + group.add_argument(f"--{x.replace('_', '-')}") + + if action_name == "update": + if cls._id_attr is not None: + id_attr = cls._id_attr.replace("_", "-") + sub_parser_action.add_argument(f"--{id_attr}", required=True) + + for x in mgr_cls._update_attrs.required: + if x != cls._id_attr: + sub_parser_action.add_argument( + f"--{x.replace('_', '-')}", required=True + ) + + for x in mgr_cls._update_attrs.optional: + if x != cls._id_attr: + sub_parser_action.add_argument( + f"--{x.replace('_', '-')}", required=False + ) + + if mgr_cls._update_attrs.exclusive: + group = sub_parser_action.add_mutually_exclusive_group() + for x in mgr_cls._update_attrs.exclusive: + group.add_argument(f"--{x.replace('_', '-')}") + + if cls.__name__ in cli.custom_actions: + name = cls.__name__ + for action_name in cli.custom_actions[name]: + custom_action = cli.custom_actions[name][action_name] + # NOTE(jlvillal): If we put a function for the `default` value of + # the `get` it will always get called, which will break things. + action_parser = action_parsers.get(action_name) + if action_parser is None: + sub_parser_action = sub_parser.add_parser( + action_name, help=custom_action.help + ) + else: + sub_parser_action = action_parser + # Get the attributes for URL/path construction + if mgr_cls._from_parent_attrs: + for x in mgr_cls._from_parent_attrs: + sub_parser_action.add_argument( + f"--{x.replace('_', '-')}", required=True + ) + sub_parser_action.add_argument("--sudo", required=False) + + # We need to get the object somehow + if not issubclass(cls, gitlab.mixins.GetWithoutIdMixin): + if cls._id_attr is not None and custom_action.requires_id: + id_attr = cls._id_attr.replace("_", "-") + sub_parser_action.add_argument(f"--{id_attr}", required=True) + + for x in custom_action.required: + if x != cls._id_attr: + sub_parser_action.add_argument( + f"--{x.replace('_', '-')}", required=True + ) + for x in custom_action.optional: + if x != cls._id_attr: + sub_parser_action.add_argument( + f"--{x.replace('_', '-')}", required=False + ) + + if mgr_cls.__name__ in cli.custom_actions: + name = mgr_cls.__name__ + for action_name in cli.custom_actions[name]: + # NOTE(jlvillal): If we put a function for the `default` value of + # the `get` it will always get called, which will break things. + action_parser = action_parsers.get(action_name) + if action_parser is None: + sub_parser_action = sub_parser.add_parser(action_name) + else: + sub_parser_action = action_parser + if mgr_cls._from_parent_attrs: + for x in mgr_cls._from_parent_attrs: + sub_parser_action.add_argument( + f"--{x.replace('_', '-')}", required=True + ) + sub_parser_action.add_argument("--sudo", required=False) + + custom_action = cli.custom_actions[name][action_name] + for x in custom_action.required: + if x != cls._id_attr: + sub_parser_action.add_argument( + f"--{x.replace('_', '-')}", required=True + ) + for x in custom_action.optional: + if x != cls._id_attr: + sub_parser_action.add_argument( + f"--{x.replace('_', '-')}", required=False + ) + + +def extend_parser(parser: argparse.ArgumentParser) -> argparse.ArgumentParser: + subparsers = parser.add_subparsers( + title="resource", + dest="gitlab_resource", + help="The GitLab resource to manipulate.", + ) + subparsers.required = True + + # populate argparse for all Gitlab Object + classes = set() + for cls in gitlab.v4.objects.__dict__.values(): + if not isinstance(cls, type): + continue + if issubclass(cls, gitlab.base.RESTManager): + if cls._obj_cls is not None: + classes.add(cls._obj_cls) + + for cls in sorted(classes, key=operator.attrgetter("__name__")): + arg_name = cli.cls_to_gitlab_resource(cls) + mgr_cls_name = f"{cls.__name__}Manager" + mgr_cls = getattr(gitlab.v4.objects, mgr_cls_name) + object_group = subparsers.add_parser( + arg_name, + help=f"API endpoint: {mgr_cls._path}", + ) + + object_subparsers = object_group.add_subparsers( + title="action", + dest="resource_action", + help="Action to execute on the GitLab resource.", + ) + _populate_sub_parser_by_class(cls, object_subparsers) + object_subparsers.required = True + + return parser + + +def get_dict( + obj: Union[str, Dict[str, Any], gitlab.base.RESTObject], fields: List[str] +) -> Union[str, Dict[str, Any]]: + if not isinstance(obj, gitlab.base.RESTObject): + return obj + + if fields: + return {k: v for k, v in obj.attributes.items() if k in fields} + return obj.attributes + + +class JSONPrinter: + @staticmethod + def display(d: Union[str, Dict[str, Any]], **_kwargs: Any) -> None: + print(json.dumps(d)) + + @staticmethod + def display_list( + data: List[Union[str, Dict[str, Any], gitlab.base.RESTObject]], + fields: List[str], + **_kwargs: Any, + ) -> None: + print(json.dumps([get_dict(obj, fields) for obj in data])) + + +class YAMLPrinter: + @staticmethod + def display(d: Union[str, Dict[str, Any]], **_kwargs: Any) -> None: + try: + import yaml # noqa + + print(yaml.safe_dump(d, default_flow_style=False)) + except ImportError: + sys.exit( + "PyYaml is not installed.\n" + "Install it with `pip install PyYaml` " + "to use the yaml output feature" + ) + + @staticmethod + def display_list( + data: List[Union[str, Dict[str, Any], gitlab.base.RESTObject]], + fields: List[str], + **_kwargs: Any, + ) -> None: + try: + import yaml # noqa + + print( + yaml.safe_dump( + [get_dict(obj, fields) for obj in data], default_flow_style=False + ) + ) + except ImportError: + sys.exit( + "PyYaml is not installed.\n" + "Install it with `pip install PyYaml` " + "to use the yaml output feature" + ) + + +class LegacyPrinter: + def display(self, _d: Union[str, Dict[str, Any]], **kwargs: Any) -> None: + verbose = kwargs.get("verbose", False) + padding = kwargs.get("padding", 0) + obj: Optional[Union[Dict[str, Any], gitlab.base.RESTObject]] = kwargs.get("obj") + if TYPE_CHECKING: + assert obj is not None + + def display_dict(d: Dict[str, Any], padding: int) -> None: + for k in sorted(d.keys()): + v = d[k] + if isinstance(v, dict): + print(f"{' ' * padding}{k.replace('_', '-')}:") + new_padding = padding + 2 + self.display(v, verbose=True, padding=new_padding, obj=v) + continue + print(f"{' ' * padding}{k.replace('_', '-')}: {v}") + + if verbose: + if isinstance(obj, dict): + display_dict(obj, padding) + return + + # not a dict, we assume it's a RESTObject + if obj._id_attr: + id = getattr(obj, obj._id_attr, None) + print(f"{obj._id_attr}: {id}") + attrs = obj.attributes + if obj._id_attr: + attrs.pop(obj._id_attr) + display_dict(attrs, padding) + return + + lines = [] + + if TYPE_CHECKING: + assert isinstance(obj, gitlab.base.RESTObject) + + if obj._id_attr: + id = getattr(obj, obj._id_attr) + lines.append(f"{obj._id_attr.replace('_', '-')}: {id}") + if obj._repr_attr: + value = getattr(obj, obj._repr_attr, "None") or "None" + value = value.replace("\r", "").replace("\n", " ") + # If the attribute is a note (ProjectCommitComment) then we do + # some modifications to fit everything on one line + line = f"{obj._repr_attr}: {value}" + # ellipsize long lines (comments) + if len(line) > 79: + line = f"{line[:76]}..." + lines.append(line) + + if lines: + print("\n".join(lines)) + return + + print( + f"No default fields to show for {obj!r}. " + f"Please use '--verbose' or the JSON/YAML formatters." + ) + + def display_list( + self, + data: List[Union[str, gitlab.base.RESTObject]], + fields: List[str], + **kwargs: Any, + ) -> None: + verbose = kwargs.get("verbose", False) + for obj in data: + if isinstance(obj, gitlab.base.RESTObject): + self.display(get_dict(obj, fields), verbose=verbose, obj=obj) + else: + print(obj) + print("") + + +PRINTERS: Dict[ + str, Union[Type[JSONPrinter], Type[LegacyPrinter], Type[YAMLPrinter]] +] = { + "json": JSONPrinter, + "legacy": LegacyPrinter, + "yaml": YAMLPrinter, +} + + +def run( + gl: gitlab.Gitlab, + gitlab_resource: str, + resource_action: str, + args: Dict[str, Any], + verbose: bool, + output: str, + fields: List[str], +) -> None: + g_cli = GitlabCLI( + gl=gl, + gitlab_resource=gitlab_resource, + resource_action=resource_action, + args=args, + ) + data = g_cli.run() + + printer: Union[JSONPrinter, LegacyPrinter, YAMLPrinter] = PRINTERS[output]() + + if isinstance(data, dict): + printer.display(data, verbose=True, obj=data) + elif isinstance(data, list): + printer.display_list(data, fields, verbose=verbose) + elif isinstance(data, gitlab.base.RESTObjectList): + printer.display_list(list(data), fields, verbose=verbose) + elif isinstance(data, gitlab.base.RESTObject): + printer.display(get_dict(data, fields), verbose=verbose, obj=data) + elif isinstance(data, str): + print(data) + elif isinstance(data, bytes): + sys.stdout.buffer.write(data) + elif hasattr(data, "decode"): + print(data.decode()) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__init__.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/__init__.py new file mode 100644 index 0000000..7e11af5 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/__init__.py @@ -0,0 +1,79 @@ +from .access_requests import * +from .appearance import * +from .applications import * +from .artifacts import * +from .audit_events import * +from .award_emojis import * +from .badges import * +from .boards import * +from .branches import * +from .broadcast_messages import * +from .bulk_imports import * +from .ci_lint import * +from .cluster_agents import * +from .clusters import * +from .commits import * +from .container_registry import * +from .custom_attributes import * +from .deploy_keys import * +from .deploy_tokens import * +from .deployments import * +from .discussions import * +from .draft_notes import * +from .environments import * +from .epics import * +from .events import * +from .export_import import * +from .features import * +from .files import * +from .geo_nodes import * +from .group_access_tokens import * +from .groups import * +from .hooks import * +from .integrations import * +from .invitations import * +from .issues import * +from .iterations import * +from .job_token_scope import * +from .jobs import * +from .keys import * +from .labels import * +from .ldap import * +from .members import * +from .merge_request_approvals import * +from .merge_requests import * +from .merge_trains import * +from .milestones import * +from .namespaces import * +from .notes import * +from .notification_settings import * +from .package_protection_rules import * +from .packages import * +from .pages import * +from .personal_access_tokens import * +from .pipelines import * +from .project_access_tokens import * +from .projects import * +from .push_rules import * +from .registry_protection_rules import * +from .releases import * +from .repositories import * +from .resource_groups import * +from .reviewers import * +from .runners import * +from .secure_files import * +from .service_accounts import * +from .settings import * +from .sidekiq import * +from .snippets import * +from .statistics import * +from .tags import * +from .templates import * +from .todos import * +from .topics import * +from .triggers import * +from .users import * +from .variables import * +from .wikis import * + +__all__ = [name for name in dir() if not name.startswith("_")] diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/__init__.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4078e2afacec9cc724304a04b1c7501aa961f4b9 GIT binary patch literal 2314 zcmZvb%WoV-5Qls1UGI9mjuXF~IB{a~vLW6)9G;1JIpG;VT#%5U)jQLkZSTzVq`PO0 zrR2aBMFJ!w4v0G_LR=AlKrY;n;4sNEvRmiLNrQLC8`mP5!HzrMB_wFq6wlF z(In9!qA8-oL`R6GiDrmqiROsri57?!iI#|t5*;I2COS@Zf@p>4B+)6NRiej;P7|FW zI!knp=seLH(K^xNL{AW1Ale{m6I~>_M0AXYdWq;|qHUrZL^p|EA$pbQHKNyv-XMB2rx7M^-7hc2Hv5!$BLV&&%rkbE z-C?_5A6%S&zy8Sm%1|`6~sHQy~JE3A285t<+%zk#ngO`rDaL%Ys>X2ZxkK%)46mkPD}mfhkKqp^({?!kDraJ<6I2g(-DY zySl@RNZfilky#ZAn^lX`j)kHlLr9@7lB^!ds3VQd79wc^dC+l=9vj^kusigh1?*)g zJA*1CZIqwK={Vm)EYQJ3V05zDut;C||Vmt7e*vajS`UbebPV+dgH zsoPn@#tPR8Q`@w8JFUw{sOkhNH11@Sgd!ibn$y06W^>EonePxQ6xIKHyb+bC>A`Cgl9j_Km$}jxIhwrw#I+AT)$3a)OW9&qFZH#q0 zRGoIR@47m^vT^Bh8s|3U`qpbY`_+aH(;)K76$B8p_w1B;{yf}0L{q(J33&?#T$SJF0+LT zlrRG$)M}vtV-+@ti7d!9Q#=p>2zajZiEf&J+LJ9iN0Oc4qigvILl0$_|dNC9{7 zN}&V~Z4eeq!~M`^W`A2=`Rc~6&8^S2znT4h<=d4XW`0?_{>kRg&8?5?f8%XisLF$h N`J3z22dh=Q{{edB+Oz-w literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/access_requests.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/access_requests.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..540e8b97e3be4819f5b8fcb35e1aecbe82e0194b GIT binary patch literal 1426 zcmb7Ey>HV%6u;%?3@0}}QiC0*XQv{qkUH=u zAa!7=5JRi}1Bj_ROW7(f3`}f@1R*i;-Z?3xMMzl6FYn#^xZnNW*&j-!Jb~x^tC_}Y zm5|Tq3?8Fzbl-xpN?hVnp9IvVfnqBZeZ^M;&DH|l)`N_l39@!JFl>X8265Fl)Xpj7 z7IC$g#MQaR4X$kJX-_*ZBN>Qfd6w%u!|7(GA1lb10kPbks-leKAyU{^Rq7PY(id!D zDoNq~%?A%>oTk&@BFUq3ckU^#$EKc?uhr{3ith7;Hjm;N@444Z3fBd9V%~RdaGwvH z+#PR_G@7>fBWh|%`IZRVt)Z4lW&hfM%Gf;-B9GyM@xQJ1OX{g8Dbl{vErPL1II*cq zY^6g@Mc^D~H`K&ntmy=tu_Vt}5V~z2?IL3fZO2a|8>EYkem=71!+=|E*lf&)R+GmO zuUoviX!+ip)#}9aVe?Y$!bL0cVqR@I^=BYwWHr3lcjm0cDJztkMwTNLWg?X{sVA}z*%J{45E8r@GbfHk zBo1MXWPTVeWFX-P7|~GxI9u`j%FUgFCs%Io96P<{ZdWEhYDdx8%7g`_^9t&HoOH3KZ_wR2)NElIb{FlIkAy za7%%30)D&dO`&=dsNR`%ZM#z4RSz>~%>zjxy>_)ZC*nedMWF#CrT%h&?{OsXq6z$t zh%5qr!9)%q$uj2nK4a;{loOORC7WS}KaDHtYcnk-pcJPSIRIZ(O6ezJ{ZKMg`Az`7 zjpzksCEFXJGzSyku1;^|djy=Gq0)0}x%JEM3R{nR1e{(GbH=ON*43@EyE(NrbN%tV N$*tw@kW-WM`~|&8T4ewL literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/appearance.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/appearance.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..778a729ca1d10ac39751a870c732c89f99f1304d GIT binary patch literal 2753 zcmaJ@O>7*u73Tcy&i>2NT1rqi8PsyBQLWv`a?{o+j3|!bIDi$vvQc0zgV79kHTL{$ z$XQu3a?R6^3m36fa3>Ci(B<&a~MQ|{@(f?Gr-Qn-N8LvL$HMT4CB$eEQ^MiB!0 z=DkPq@x6~9$^EKQDI#cJd~~J#ULK(*+~_y3McexXKKGG_JSjk-WJ#fH$)RE?p=zn2 zW@!@dlY?BCw{)Q^K_M(!#js?RgsleUuwqrhs#OhZR!#V{U?@Ch9Roe*<=e6~ETc=v z)9-?ftGKkSri)u6!e0P?9#?P;7q_*nr@m4&OaJDEsWD|XT4Ac|(1fXP_-?}Vw>ya+ zM^3=B>k%lX#EN*?#llNXnU$_yoWFL(iJUejtjLYG7j9rTF%@>~5>9^QCyQ}6x$Ir> zm;Hzp=A9*+s-^24&q-1Pq7Gff?{s~Fy@Lgh&vrV2?>c;aP_aXt$i?i$|8-{>xM@+T zlrm#)2$cH>BTMp-C3}*ktVpIzYT%wTRi@i^F^S<$w`*y{#dFWdGzT_?zTbldlA zCrQWyw8z7KcdfY?hq&p*QF}3NMmV9^ZQ^LD8Tbp$&I(i=%`~RZG^wB9sgC2`1b}F> z?I(e=&|Es(j0H-x=^Rwn=&Xp8gs8$AlvC#}+O3WJ_DwPd`jP6&;NWfVFCc#ROnq3j zG#TNXCx51FXE<1S@aQ*&#jGO&y!9gvVf5z}Pyu;GPsJr%2JTc_^7GKof1U=u8u*3= zd^tP>92@Yq^mWvdfRmN&Y!T}iu#=BcTdL?Q+$~$f>u6cBM&^-OB7DPck8y1J1Q@`{ zEHNzs95E|-n7YIlTx4nxw_{dX#EyrFEsT82S@PXDVxtkhWp_x-iD|dHzJ~)p!jx6B z(IKW3_J>tlah$;HzWrRL*bA_MZ4!4Q&vxS=CTzIh(~6@c^Sy{e#}Di*rUPTMa5!=n z0_*|H^|*hWWZz>tPYVu#!*VxoIiyWlj^LzAB3H?f;varcOYqyf3gTnwK3bKRB`QnE zM|b2^`9`1S(A#f)pzo;3L8J|B75!dEXjNKOTe6Q*EQ(`Y!6kuuYW zBO_VF2E}9vlSZ*Sg563wXD4WjlFQ4(#gWIqhjkbexY2GH zwCly@VM$j7=+9Jj4T^_^`f!LeCMF^INy9M)?zw?5j!*G3Q7(xCKih>Aq9nV_E)o(G zfUIRWNBo9Q1vqX@2oUv1m1&%GlMd$(6b2x3U^|!qR-q`FgN*569JrEIH}0%3jdo!i z%cTgLIi^w^w8%?9AM#@^CO|M%FtcFWZs1UA+cXDWL4q~%93M3W;`Yh!yN(;_3a4No zZG!lA4fQ5b{ltgoH_5ubTN``-&c>a0f3vQBQ>$;>+W7V6!q)gsZTe3yfq1A-rh3BR1l2p9Z9W}4k`l0}gkyi#zoU@s`)Zv(5?DYoKKqD+BD znN{M*UQCjXjXA^M{T1XJAPwPLNcgkD6q*pG_)$VQT7*|8Hk9zvAbPs%E)D|QHl-8- zj`eHl-t!w;T+=*b`Z#@^2W2YZ!Q@tEAr*@~NpXNukGyg2t?_J-V*-|!t{(-$yKGoB}2_r^+uz7Y% z*_z+dKRv%QJlW%8dpa5!?G?CIM8)d5dv9iaapQ&k5_t9$lxy^4-uJSky)JED=pp`n zIR1W_MwQj*v5`(;V0Z(iQIy^lcI*QX=^ S;^f)SZ+`jee-JmsTK@yByW;Wy literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/applications.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/applications.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..67ed94cd8c5f0f8eb578f6203ce7d3272c109d63 GIT binary patch literal 1045 zcmY*Yzi-n(6h8lUVuvYspA z#;&LgjEH}Mr4max33Xs%tCX;G;?8zObHnHNy=T9B?|aYR8;v^P=i7%?w=DzkTac?` zR>nBz#xd}LFNGkIpcKhamIRkWB~qapX;6!Fs7D4g3cnJXQ4Q9(t@>J5hIJV{1-^d7 zIWdTQs+O6dRrn3=*N9G3q7ms-uVVJVbZUPDab#xgZoPWl!ZGd=%Ibo&JMV~>J1VoD zP=a&P3f>1Xvo=Xcu1M`=kmaSnS-yTP>PT#Mm+bcgO8j=32T6=WW^JTt7%DSD2_^nxR(tV|4*ASHO3Lyb~I)pBus=@9ib@k z`=PLHg!cP5tRgDv(~!q0Nh!j4PCtRMxcBmn+e;$i`bpgFC2maejCd}I58N>5xalD8 zCGpzogNJSwWqL^t8djQRof+U^X8FABLCn zjsvD=UXqfGPs#R@_-){mI1g~hSHYy!)R>u6bK7=IIwSJU3TTRK8cK2AD;nWC^JbA3 zX0#?k4dfLYQ^=W7F}?a|><$Oszr8%%8qF*XpZ%O)88z3=*4qTA literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/artifacts.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/artifacts.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a912e62310a3396cb6ba5d49070475a51d4a16c2 GIT binary patch literal 6418 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 DvEX)T literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/audit_events.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/audit_events.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..078633a701bea67df679b4dd4c4524856eee73c5 GIT binary patch literal 3506 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/boards.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/boards.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..29685746055e7521dafe443866e28bb6560f5160 GIT binary patch literal 4441 zcmc&&O>7(25q^)mq;~lu>en*u#F1rLF5^mTJ8tSEPFlrsWLcJ!T5*AHfo@maCz|zg z$-G^;mh1vLxM+H4;Q%hILk?1)g9Q7aqtTO&1$v=i9n?jO1n8mY&8}D^$f+}LNs45Z zGzn060nW~wnfEtuzL~fDb0QHX@ci-qMD`YNf5%4kX{j)~2Pq*Bh(#=FlRVXFKBR~8 zk}gq{g={$=*2DRT9uaNHZpkaUl2>&#AJwBmCfl)mT#r+dC06)jswYBZlvt6w#A;zt zrn1Pxa4?tNDl`gcRHm@-L%AYP3V9Udv8EnvLK6o~qM=8-khg+7+0>&$Xxc#2-q52{ z$U8vZ+0>&;Xu3et-O!_Z{y@6tpSZ-dc^oYUUR#bG5G@6Y8pv!;q3jBDCy z#cv(ug}LI}1(RD>axi6gW4kuzp4e~S4fojG5+q79a-UrfD`hD?WiEdXV(Mro4O5IRF{~nhpmt$ zS@K6AJrW|U#R@-)Jgm4tSA?YHky4YWDnzR#L6pToA6mcs^${*DE;KTBp9sZe{E_H+PdkLn#)($qF?>oitRL6mnLCPFF{v+5(#=SEpyBm;{5!uJ68nQNm=Hthke;) z_H3Q`cfrnA4I^X2)(ykOnS0?`# zS1+!Nu8f!Z$2ZPA9@*+2-+TwiljN0>azzByI(;YI&JREz-h<>I5I<}bP49ZJUd4bY zh4r|8hcU|wc~EiYc!ueD+~w#yKVf7zGd&i_pgC8xYE6z?@FmxSJ?9+HmuCtEo8uXX z-GFtl*$lI7!&s;MET~*Og&zic#sCvhhU;@3AfE#!;^!7G?j&DaytFfL>an$zx=@l2 z{H3dZr{m4C6zYyFPCSc{?&E9u?XL5S6Hg=L^sCP#DLg@UI(n9*rRgQ*L+xoGNDo$+ z;gNv(RPFgJjJD4R(g1t7iU#aeqi7dBwwFq-5eCS!=y{ONhtd*n1;!7H(4S0)n>;P{ zSTbEwcK{sIRJ@F!(;Rw zTe`5^xpe8n!c&6nwfBPe=5+A>lm3~IKNB?A6wcNVbJe`LUukUv<4N8Pv^lg6@%Le6uSy1id#^_|GV5p_lyJxpgN4|nlW9*BOu}UKY*X8i1YZx>T(ih74;EV7rJ`FQq&2v8n@>HUfenO6I zkz@ZL+9zaqiwysbr2i$WvCv{m`5>k0y`PkNPj9?lCcu}KIGvzNW6QV81iA7NN{`-4 zm0lQJTR?-OWu=9V(Is{HjWR*5+=U~|m-=4W&}$=1(WTtlVH{yfjBxDUYo#OF#vwE~ UR#sFxPM6ZlKm9jBPQ=iE0GPx# literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/branches.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/branches.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..98aae7a928c209731b7b5ca3c1210f9e84a1ab1c GIT binary patch literal 2788 zcmcImOKcoP5bgP`XMbMXSuYU6FHQ(!Vh;%+{2?I@2}x{F93PlVGu~;h7v{6{%sSWv z$w-la14u}q_`o3`4zZF0$0#R`NL)5bBurn3!~t;&*a*als-9V6TOdxfv^CY$)m`1y z?^W-&<#K^QyY|U=qt-*nkJ#xp=*zZx4L%o$M?A$Rf#N8E>ZpO{XbRd?Uk?n&2y#wN z_BFpJFdZ|1XL)9<+xw-x0QMp)${9vBV?d6SV5H2<4KudQ_ga;o(aF+;b~v0Ddfkl^VN8Y1 zD6~{jJbiTX%(xr64aP+QJ1aVjg~T3mdr+;rHH=M?9FzQGw29;;5eDX!EM2@m??sJ#+&$v8)S|QdB7w1xka+ zYx}5|D1Ec-`q_v{n;vzOgfEj-T>Q_|_G}a|+l#`+Y-EQliCNud;hgO^r|s4}Bq4ls zbl-kEZYFG`<<{STRL6FsnfUIsJ$Jy4WWHm2TBd@e!YTssJXxs>zI&W+ z2VIVAI%XcM*j8Ty@!pn$GTkve)zg}alT!)n@$@Ukm@s&t&?H`97IZy!`pH)B8So3m`j5tRk;~+rqHjN-r_C-_A71%{w+{tq2Yq@%i;L ziNfCwLT!2gyj*%-p>Z|?ATfCc5~2Ij)C}8 zxj>TcHIqc`Iwcu32>C!iM?NgUxzuyYIk@`I)N|UG%16rO%y*J3YZI2r?}Mp)2nA-r z(mB#GMTil%Tfh&k!IEV|=rQwWHn{HsKar=j?z?eJX^fHYhqlP?#uY3O3wLIiO(C2? zbrjaasPS$Pe=L%<9OPuSEj_V#bfvOm@%YO2 z2QTTJyGA;C?fdGk&gkAweSaY+Qzl^CO-$$_;ok_4b%1XJF~O^-;(pVmO6nG(g#&0FLg2 z%?mTi9+H%;NI#DE_5T(Lz6U~dtAfPILl_v@&4)q!Bkdo^Xb+!_PuK?jKZ8>r1kvUH z&Fb)#qszyZPj>cBUfuuo*!8`W-@FLoM&(S$JdQ1uK_3vr&5l1(Kcb zLje^Ks>CaY&m1`}dTCoe=QNOyG)MaL{U{zqaR9|S`}t$oJqThW;}LcedzgSY0U;Ux zI5K|sR>rUNZ@;bP2MTLOX)p)G-%e^fzZ=|heQ?j>#CjE&+FAv`kX8Xu(kd{e+{)jF zRbWb1fvKzt;9e%Is>mhtt!CIrw=S!4j`>L z{w3u2z@#}VWqztr}<3!PvSX#0+z)36nh|UYl@=$ zK!&c9p`VETyP8wf-w29cq74748%1@oXRS|BYMtutiwkQ6v^6uYoKlvaz4Y)JL2d0$ dFfP5?dFaWjPh}1@WlFjD(xtb5BdAHR`~|B=xlI57 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/broadcast_messages.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/broadcast_messages.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e62bd628e1db5e5f407d0cf594b721c2c740aa9b GIT binary patch literal 1703 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/ci_lint.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/ci_lint.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3ebede7672c56c6781f687823cdf3d524136ed79 GIT binary patch literal 3338 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 qjo4vnNSeR*{*43H4&((E@{7umDWIMEva?2 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 cY{z_XT>xO+-zEm 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 W`c6npSnOF=Rt8pY{RJW3di?{dALi%) literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/deploy_keys.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/deploy_keys.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7992cd8b999b007b0bd42807eef232d3ebdd172e GIT binary patch literal 3270 zcmaJDU2hx5aqo-br$|b&K5RESB#P^EA<}jow^fU@f~8n)EG3Zarnr~uiMNy}A9>8~ z(G_K-PywTrAKEHF0trY9C`BF=$Uh*+Qyv5KMS=rZJtS~|pbvdhA{7n%)S11bzUp=# zW@l$+XJ%(-X7_KIOp?I(_?_{Y_u2^g3Ky*bYcckAU|J;(aU_>iB~z-(rd(A_rK*~$ zgml@}ObuqmjaA#sHbGMXkDCdBYi_cdGE>#GnHKAqo2j;&?bWQAt>(;JHE-qxz0K{Y zcAA|MnITU6uaem%lk3Du+$TXMo;L^E3xLw20Fq zI9cH2X#0^Jy-nH3{}Y7_HBg3Y%|I>L+z-@|O34qj+qH^Un=qt6DY+Gxl61aA>pl>< zAqT0+(WzVGcFmrlEJ)(wwdpxp@eGljW#0`^ zP@kKmZ#F87IE6B|~O8AWeLz1aZr%*;Q&;LDI6Sp3`s zUk`#_0D)%JZGTo6fFOWxR>|e85Bb9K8N^VN0Jx817{Ryn>7~(~Z0~Q!LP3;ywu{dQ zdj|+luu}j}nnDgka262(gda#cralD(9DC2f{r>(LF>qu@sYqr_CbZ2_9qnOkQx3P7 zaY1W)7~hO?!%P4rIft=1F&wBtC+VafrdzcJlIc10>BImkx_e@@EI1jOh1$$HS*Xtr z+DUU|8KX?Q<}RGr0?UwBjybve>Sn}l&1SdL=_sJ3lV(FXCr^7K-D)|$Ov;keaX(}B zE|Yo5?3*G+7sI4lc)nNcFn3c z_$+YZEGpU{?zPHRW&>b~odaMu8vd46PmgN^$Pfo5fjUdwIx~i~5!#qtsCyk@#HHWsmM&RLW9?EXp59f0Q7?iv2rCrT=w0yLGlg zGO0&n7#truSRpYC(vW@&VsT?c_sSwF7$M)&sR-OL`3o1q;}7Yh^FFin@D4aib6Rt7 z#;|hA?oy_or-hk<&Kr(r96B*+S2#W4#&yxDh8wWA=2uEK_WV)CJT|1?DC_nyx?bUW z&GYq=#~3u@WA24|UJo=#z<URAPg0x$F`Ej+c$s!LaoO zu~5%KZ*-7XX)}6b3Lys*lwSp~M0N|LvuD+K+gLfXHoR6|`{nu@TiL;7btgNp?EmTB zgL{v&1KZhw^;_H7D;vK6uob@|nrEQ8_Cm9yfR@%s03yKwL zGc2w-x`u(pQPH(@Vt0eF-h+lq%Ti6OmWoIdePvFAX6aFg`|7Iau;=2hY8VvwVj?fZF$5TrK;b?M`y%B&58{)Q*Wt@V*-OY(r#;UV!2-|1SeB^kS{Ag*ArRnr z$3F{0iXB_DZ5_AQO=oIbaqZuJdrsoj6?8rUkl{ONZ->w05pTr94A z)-|#;{-xHxH1$~P-`4tfI$qq#pWW%|+sRzsPiV2&Zkoh;klVejb+7QpJy*ATu0GO! zuq)@amv*}Qb`_joJTK-i6Yb0X%C)u5m9YoES(|^{e{sA2;#T(JcH+`E8p!P_B=*C- z461F1<=5vV?S`~M*RHL1u8qCz?GjvX+zRJUro#DC^WTF0wSeIt0?%yp1u?%_uheG3 z*op+j*oINYa$uJc;AOHnf}a8iQelA?rfrBeRu9A9eUORBRs4~1h9$-DL&7o$+EFAO ziGWoarBRz@*?2GEuS|S@#K%Nj%JI+9)A&!q|KiJR9JJvL@@W9OiX=%-i1CORUy0OckuxBvhE literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/deploy_tokens.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/deploy_tokens.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6faad0a1a45ef3b6e8860a38ff164a93980ebea1 GIT binary patch literal 3173 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 A{Qv*} literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/discussions.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/discussions.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..06431748a8d53a7576d8c299038fd1e912666a3b GIT binary patch literal 5021 zcmc(jO>7&-6@X`dNG<`IMP7f=BgO%EwrpoMkFL1=q0VI6!ldeYHAFA}VSx=0WMJrudw6$=MB<-OS@O)_L^ zrzo-j-_Fi^v-9TXoA;J~kHx|SuD|_pGW)9-A^*gO>ZSOFy_W<+ZV;20LY`QHCRm~- zT9PISSSRLXE1(6epcdrMQoh4dG{p*OAuFtft%w%k^>RLH#k3fd17sj?hS~@XQH2I>1$<2}*F-@RtF!Op zwVhBKZ?f;_ngnRNXc$_^{(A;^eK*wa<1Hf4N6^;|a$OJTdh7bw&ujajw!f*51Iq)+ z!7s6KQgWrUg=JUH7`EdE(uG{HkQCj>)cNU|Nuyw7DRaa4aB2PnnsJh{8#%|Q;n2z4 zN4bIPrTEt8b0XJ=jj;H_doE$&>!3CVK<$ ze1lM;2`16RG@%leP2mjGE{jQtbwj}o6kw(7i^+hi=z77hsII$VUAKznVjjy;UH@>= z$a@;riB00VZWN%Ifm^}W^)lImYVvhjy;8KOY8DIGD@C|7}p zPNrTyq1rizj+TtfRoI@kn$0Sn+cG?)P`V2Y+>%Abl_P$aYi4~&hDTOw~mG$lmLs3`$* zVH#Nw2cgH(>g7Pt05X{K+nAZ6*`AE>>(B=LXB#Zje!Dkrgu4{ec6e_G$~6L!Rcf029`oG1R^OjJO=#@XD^oE zRFbmPDF1PKz={^A7%ez3{SLDk%nEU1y0<2N9eVFdwgbb>6&zf+VxHmj^MQc1 zH_i;r=K&*uy$UKD7vL>#xVWqM)iOOH@zr;BUl`jQ+a7#pOYZwe z&(WK?O?9VdYIX8Kki7iLLrDtE3cKC?Ytq{En(_zrfme|n^$Tamy~6#_(4zp_J|rkT zrm*7%rmB19znv*P=V|5O(I_6<@YI|^^9aiaPtf0cf3JM-pY2kk8AYzr~Sfzceu;Ye} z{G?d*p~r2oN}#S4R=g1koVFTPCwJtN-fW|)!J8UZOQ3oBz{!KDvJtw4Qw^6Ef>0U< ztRRrms2@rr09llFLN;9urJVp;oQKi`gwh1-ho&p9w*k$<1X0IO2N@y&XR+3_F^p$b z+Jc@HM-A%mlyMavk|BZN*g=X5@zXBmm#CQ(*a%qsz$Eg;djb-_J9DlBastL=Bvky*Ik4;_CLfcrxN!W%n!(SXR40*k44J7Bv|*9utP2*uCfR|7V+ zBd0uXP}Sf~4OkO2PY>+(%5*UyUU{tzp0@W@24MQ7<^-3ALXK7y&hTT)=2*xR$R8pM z@`ZQ;_}YGq)^T?k*RnAc9oeAeZ29U|Dt%{a)7(y_?=FD27oXiyX6u-1PDZ^z$bD8l5yi@ci-u685}D*!Xt@!nx)^2o+u+gn}0c=O7Rs!az931L2$>2(izL z$!FZ4vs}s*vR=UE-v~Tqj(8u1sd>Yu4F4rz9U$D8Uv1%^7dFFBL52u0{F8~{XN(*5 zP2j!M%gH%~{KM5tKzX=C1lW{AXZJkK_Oc9~9`K`$A3}V>`AiLAH-}JQ+WNI} z#`{WsgU!Js20i;PARb79AbdfNY?CAZBI+09y?f-n&q?x;91z4k0^;ADp@_KJQ5g_~ z)Y=CX0=J415@v<<_iw+ud7whDjM~vP4Yi}FO$+Ojw@+_IP@Cr3vGs|YE2tl-Oc%;r~E$e-XX`b(5$( literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/draft_notes.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/draft_notes.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8e5ee087173fa6ccee5cc5feed885bb7e09e4003 GIT binary patch literal 2550 zcma)8U2GIp6u$GfJNwt4wIEQ?#;; zo;Y#t!pLapa>=2cp>YIT*vFwMF>XwUs>0EZbNEuFM6h|L>_c3`qI=&aE{ijYNf9$I z_WTiI6#OyQ$F%oZ-so-e;T1v|-3M*#h4li$NaIYT@g|1_lQ)HeXo_>9CRPPSB5Bw{ zV;A2yNYSG)g8d3{#`0WCIF_{({5HM@v4CdLREu*tXT3bV}i<)zF*eM6@NvbqKB;lX@{do7YI)P(bLoO@Paz&+E_JRr#R`V z4)#5qSFtm#TBQlKT=gei=hfViS5&X$derP@0ThI2cb@nX{FPY!D-?(f2$8JrowZAbh zHsro}@zeCR^t#+#m%G>HzPjAEbiOVREx&U|9@>B~2=XKAx?|W_*J)DMZP%<=Oi%0j zrHWyN9>S79xx*f`DT1I0+=QTHu+{^H3F%YNFcM*OhSvNaJswZVgt5ptDCn`GQ+O{&wH{+x_fEtclPyaTa|HRX6!rZWh?&D}GjBowrpQ zNTV|{X$RHCvAQX`>1_+5p@+xJZPN9f>;2u_~mffuDXhPTXmf?B2?y-ZR_j+m} z-VVcZX8*JLB;vvxL}!`z20%Qhq0JcT==v>v;Aa2I{*{Ak180B8-tMapoc-x#5E}yD zkp#RZk^xYkLVfQ+q^D6Iqq!S=L}uG*g9oDVUj+CBaq(j_8Fiv!T?8HqsY?h5i0p(Y zG!ZhC>-l6CthZPx$O}!kJ~ngs|0JmO355k@a0y98xvqTHy*RqoKENnsA5ci@T54V1 zSC{uKnss?_sc=Ug3{s_Vr=V^2!IR_#CSC+VC7sc1SZrAb)`Mz#G^-bgYlDkm$JY(t zCmvzIqZvI++Gp}04l(xp`RR|iW9DDg=ECAK!(ByAzt#>vUDAge*~-^ z!||ITY*=3h&HWs6TmkW54mHxJYbP7+2WzJr2ZnA-_1&k|#GSu(^))*8GuNJtD}&)YJQB=*B>L}5u&>$1 zOSz?SMuxfN^Z&3Z#F)}SV}7+juk5NYX(Hdf5JL_I@ZI56S*@!agW0U*1U&O@ZUMyQsI0 zdjCS|T{K)r!@na1E-&>qM5QSSDZUopObgu6wcepyrQ3Tp5$K!gU0iNix%KXS1WIts EzXQdEKmY&$ literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/environments.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/environments.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b81d4e9109ce62d6f6927d7b43b7e9c688c77852 GIT binary patch literal 4113 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/epics.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/epics.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4a76695df1ce79b6a3d7bd28f6fffaf8452c3f73 GIT binary patch literal 5202 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/events.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/events.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..63ea53bff6d2d62d1b0f24b33753b673b0f61909 GIT binary patch literal 9812 zcmd5?U2GKB6`tAI|6OB)jeq$ue}=WO7aK!qDM=t;e(e}+pxrhat#`*}VgGVxOyY&8 zL_!KkZAGO-SV}6agFDH^UAMWoTXH`X zG`o=ip&mfJl2>v)be8ZS;Xc6qChZzR1Aqo4pGkWi;WdD-lLBSiwS?9JS|KJ|+ewz0%$~?5VizPiGs$Aox#*ab)Ks@usniVwhgk+2*Pf_1-{~q_O5kZ( zo|J5w*;Tz>H?!SNZ7`9PWF?c9wDv*(fedo`j&m1?F=D-w$;Fbx(bcG$IgSxQV? z(cGdpX*&X|NpT zs=D!NJvPRtR_n2$rW^HLlqIHdqpn;mRmQY5t4Y3eQ)qy~eNN&ce4L9o;(SDiJ0i|0 zJ|r+)A%@hT5(SqkqLNUOQplxxMKK*sNusFwMKP6$PbRS(6vcNYqsdZ@S4_mksG>l; zicHEfD(ATZHu}wQ_(~=vh2xp@#Fb1qEh(}T3rp$i;bdYgoSjmxWYYV4di%n1LXo<& z(bzQzd^tP;%}2+=*Zad6ihemPVSLLy*(vHMiS1xt4uZJNJ*}<3b?WK*tsk6Wod8g^ zy$711+Ufzx8F7IZ+*3lx$pTQF^ORZ(xm9;Gh7q9#biYhxCDlD9jc1sox}xI{GOAO~ zFvwtXER&UnLLRmgd$0>d2MEJqpU#v{g(vRWf1A)ATgi6oeiSqRms>s?sF zZjjgw1$jLP7-MkbtrJgc8(^Rf=RX+Kv{BK1py(K5pfJS_hR{%6sOVs2+o(mV-B2jF zKtS70uht$`TH5mgfWN{ph!0IIBDplz#)Y`^Q*f}4i~Hh&75MgkSc0?;0AA>xl~TM2 z#F3Js#uwGAKcG4iad5%+z?|wSJ)}C5(cF~kzVqQYKkCCV-Cq!{MQi3&%lx z%-`n}J(f5H_DkANK_}7guJb1MGw@N|ag)CZ@%5?Wrtlm7=lsKx?g*C`hM*gVL7N>x zffEnB!(9nb_4AM8;7SwEE24dOVkJbpQ>q?|`g~ zBCKI3aK_jn6cpYFSApX1_ikZ1p2xQeccAWZta+H&bM?gI2*N5p}J*M)tpub z%Jxpf8isK<1J?$pC#)A7-rnu>x(!#fm=OrK3&BG zCL`PA!-l~MkUbI4JG8Q|{76Mev)6Hi0to&0KTkaDD45nW4LKU8mST@#aFf!X9dm?&7YN#~;z`IGsx^Ls~T`{s@>>>YVB0HPwBu#?y=`+P#ZG$@J*gq=ol z2E|zv=rU~#=dd&g!kja39%(YMwouL)gUI7<;PIaRxdRI=r(ZH>?5@li*o=jr)#$$g zlt^iSz;ET#3AXwOD)IHM?xb&t~G|C#mV-(|4A zyR^Nxu-Tv@%V1xp-HQL>At&a(kHJk9ugzVLF6J-ie>C4cI(uwxbfJ6n$t4gkvD#BNS4C2s zJci;PcCWnJ58-Oxv*Oi$PvvTlEm%ldjq|ObY|nYDVJLoy1%vYlSXYNdft<+U$?13Qf32#RmxwU3;7;J?G zSH2!B@(TD0gaA2s86i+@6|j91{0mN462(#*aq7aVIE|CTQ2ZGSsdA$TSy)nygzcbg zPeQC=DE@{8gMUUwBH$$Aa?szad-_lt=s7KAA&<@qDOl1@43GMupK0eXsnSl1;wP!2} zJ;nbFVjd7`O$konKVQhqixn7(sz(%~__>C@Zqf%!?IRF4mmWMxi z2;?(?=lL(V9Shu!e{$h3xW0coTLO+-p5h?~-+t#zk%LRoFYp)md*7YDR^+f$4D!71 zL1&SJOVR7+{WF_q14RxB#a4js9VpcZe9!b=e56NvB4T=CaQ3kA#7wJE^SEaAhEeli zCC^+ntj)YVd)BZv1LL7S2YCPEBXeCv4hqFh06q4bYTloNf$BAjKXcDjdPd;8?%n(k JjI)dU{a^LiaWwz{ literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/export_import.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/export_import.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d2a61fe513ca88199c1bc260dc2784eaae23adf1 GIT binary patch literal 3454 zcmcgv&2JM&6rWkI?e!PVhZ9HwYG^6QK(f#e5(0u&fPhkm3W|{Svf6kj&K9rN%&vh@ zDy0%q>7iAnQqf~laY&RNIHLXwy%^C0UA5xSL)9CtT@`Wad$a2#4hd9h%SwJb^WMyx zx9|PtH{SN3*^X*a z(T|j4c3g|wil*2JEnz3Mq|nRdl%3Ynl$3}W{f258i5w?p>^d>yOkvSQIao;BAoL38 z6D+~vOkRwJmaMQO!IFaUkx<(qv}w?0V7$EKr&H)RfIbWUlQ5&@r%PBmz|y&Dg>GT# z0!z1;(TXW2^f}P?w5`!I-J9R|8wQe>{K(stXTu8RTG44m5DYkJuNV+?S_3lgaR=iIedOA@s|SUC zT7%j=6@#(_5-=m4MhCoZ5k@p>5=}Cx7MZ4biKjt5z99RGu2&43>AIiPb=xs(Wo)N) z{bJ21hZaS*Ox^H2zCar2^vQX3%CVVhI+fCtqgI&bvZBf=m(;Q~p;o6MiIvxf_r9jO zmdA#wM)3mF!c|L_S2iZpOK+%-D2S^vkv82D$r-Lri>QR?hGiPK1Fn+?+3t@|@BwHG zOWRk5C?SneFn_Y@JDIFSP05T{REwE1iBG>3``Z-+;N1Y`L(m3yj@p+l!cZ#p~qi(GVxQ>*Vw-E7V zmz5{^RPW1jIqedWnEvOJP#%p6ZBRPEY?931J`Nn0r40BklrzK>_N7F=EQ^kZL?;*Z&zLJ zeI(Q9=+{Rc5qQm>`U_vbqX>Y4e%gT2D#Ci(VFOGU=RF`r$^$PVe`w(-2C=aPg}@@J z+LrjQu$TqMYhp3jCj2D~VGsq@oxcp?|3V<&2F_dX6Nz{gmqbYM9U#_4S{pAR(y-8c zCkjm7Q)uG5&?HvajjbUROSs{~*i}KS#0ut#qrf0JVkIaHs@e+kyxJo}u3dYya1W( zZVFo~*(tfK6TpC@DrGXa$SrYBL056Y6YB+IMkMgLnAx<}k%y=mfsbFwPlelW&W+3+ zxcAEFon8?4v-|7H{s2+wRs0knO02((C?sYep`y42tY)XRQHJ>!Mc4}s_W%gNNV|}c zHX|c#pO@=>L%>Ks=C;*`5B-okJX1h&8Vks2Y_@>pG=}6f7624owxQ>F0PTVaYXcN5 z90dlpf}Bv*w!{)Z|K&l6=kmI63<+u<#xjWF#S)ZA#yHW@KNVc6h9?Y{alBRV7^*X& z+Qyr%%kd(`@n*skDDXdrpALtBOXhO1Gvc~#;K3{ob#V*_lq{H5Y$dT9L=MEK;q4^A zG#-^tl!L(q@({;dBC6dlK|G33N*|KVzY_H!Id`9&`U41me5^ literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/features.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/features.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..53b17184029cd6ddc9e990c4363d4ada87d677e7 GIT binary patch literal 2820 zcmb7GO>ErO5q|vJA9DXB*(+74ZMI3!tkf=*#%KXGC?Lp+?K+kNTWw+XKv2u46{RJ) zeSE80#tKmjAM8sb7eyr?Dd0mF6L$6^JYHgm6qyhrsfsQLM&%mMXzL*ys}yLDrN$})n(4x;k02m zK_jd;UEZ=6>y5xOC^hW1Yb;TlcNh)p%iL?J|3pVMIg)1l^(c3%&E3GaTTyZ0?gw+$ z?6tYs8`tNrM#_(U(AR`WrS}>%HVQ#fI^1oAH8Ij|&)r$LY5R7QvPebY*5V3n@R}59 zS7?iJdegn<`ceLUH{=OBlvtd8n|&|YT2xAz)MFzFHlac)99DqYCX|>0oQmiOrnD~B zBvt}-B>T2U=OL_|Wg%->k!o39;B;EZ7cA@N9lMpj$yu&r*_^XKkwbL;^0u)Ycog#I zHwG!z->JX-T_bck{Z89%tU}nKk!0FfyKDq;?BT0Sx7Xus z#bg9l2oY8fNUwbUm)F=R@BgPB;3nHYg-NpvZW7f4rgz#7a(o%27?yQa)zdKp$(}xu zP>DBUT3-O;_}FwF=pp6$5;%J0VPHmV_y0{9fWovsqo)czhC{rEfh7 zf$b%J?ofVevaeJ0qz8>g2WB{@b`oE%Gh4wUZ^WQ+j07@{jwR7u?C@8aekm9=g^dFO z*=tC?j^qN8i$J1$I|#W2c(ZFN!)p=c=ln+CQ0KZ6$!(i2N9P&!f;DRSflsX^7I>E9 z;>}NrXOzd@WuY5}9WGMc(Dg%Z`wbe&v1QHz7+VeKI$9)$w6zqMng6*bb_sX)Ci;?b zW095|QoPF$3rczy@WIB=P6EW=A0F&Lb&%Dv(0 zcI|O(>$RPk9cSk!d#HPUe!O>KqIYhr2h8Zj7h0yGK9rA2F!Nb?V!u4`^zuP@3g%WP zx18Xk=6 z+IY0Fv+(2x2W4X~XT&|ECeOpDRT%aUhLwVy0}?3~WGnvqFhs^o|lID3OxH6$kf)t&O2Lo z_sf_1Sybi7nEph1ywT62q>}RJR`|&4YbX^+Wo$=!w9zl3R3gLUJFh>!&_|d33K^;P zhmad4>d?PNfIE~(X7YsyTpYrD?Oc?#Ecj%C&w~tKZ@Ydo2{jHH!5F85eG55kOzdqW zG0L?Bz4b*Kz?DZe*8ixOsy+Pl2^oToVaaDjd<(1Dt(Ija2ZQDROhRAg-c3GOe#qX1 zx7hH)TR{4fAP6r+Ns#}e65;y?vgNWc-K#ca*COQ(JeRXitCkZvt!_{(k`mAj$9m literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/files.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/files.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aa5dbaf1a2133d4a01f0cf312cf43247d07c2ae3 GIT binary patch literal 14073 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 A5dZ)H literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/geo_nodes.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/geo_nodes.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cdcbdbe5f70198cc85db18223eb3be431a943c10 GIT binary patch literal 5583 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/group_access_tokens.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/group_access_tokens.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..527ab3c31a3a21f47bcc599f98239cd0f352fd23 GIT binary patch literal 1753 zcmZ`)J8T?97@pbJ?LF3acAS_HMMOACSfY3pKnMXsSU3pQdg@Q7oqEB-X6lNNbC=i_^8zo8u|Lm@#1i?u6YyQX1%=i7@ z%-wOE8iMh|7qgweb%cIb&cUdblf7-2Y$1XOj!}YroM^t5=)R6sOpA@g^v%Tbt=!k+ zN@DwVQuV7z&95bOzn(PwM&kHRo;Tu=r0F-4mfr&3BvwcBM>TX2k;*3cv_|XHx@8u7 z`(t^=hKxmRTBQx@Q1e!$%pU4j-P)hZadoLrr+sO(LoTFwC5^Jw)nt9){H4pYVH$QQ zlQrecFJ7f>;aal(7Nen{v(Z|V%K8kA>47s^)ci+iArp^2aTcgx5nVl4;jtWSJTlE# z*q;_qve*+;wif8MUc@Mw?+Q3t7|Yg0mi4;R?Kb87a<)QKIq~mEdGL0Dwy?N#_8KtR zLKOL!AYbcaS7R**%>fg35Ts#3gFx1TAjwECR`W&>T zmNPGw-9t1o$3PA5bZm>|s2 z1VX{#Q{8@kqTGzbW?VIO6YUr_n}FF9upVjcDr7!-3>d+_P7U8A8qp){TNy`$kFnpU-Xccm`Dk2S{gML6IOWIM$5u1*XDs7S)HJ0q_XbF@0rsKD+qc!Z0UP7+J zMxku|L;-+%9~3|$@}c(x7-=6Qq!tlqu%URA7H?-=%E51xLg86p*u7 z*?ehdW&7E2*j5^GxZao6%KIVfaA`3rdMs_jJ$y72FLn6s&4Bq5Zy|9Y03=HM2#NBx zAoQ`Zfj$9c5N!i*Xas+yZRj`gr}%&?K&;P!QjWoD>{(@wfN>3GsJYUQG?yUvX)x=@{zu1Cu%!B)p91q>fc7oa8vl9x z*FkS`c#O;zp$?fklzu@M!s0?~)&F~y$Lxd6~nDx|TPWieAt$l<`J z1===^;~;P`b0Ni58{RBHD+T2;QWS6w=D{Y~wUFZt&hIpz8N9vo^vSQu@aUPLapafr zlRKl6!>M=nb?vY)V&M?a#g4BH*4aC(|>< z+?vF+rWcW+kXIhq0!3# literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/groups.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/groups.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ff379a874a13fe11efe6ca8353dc1b1ed8bf32df GIT binary patch literal 18421 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 G6Z&Tr)PxKG literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/integrations.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/integrations.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3c0dcc35ed25ef7d4e448ef8639b6f9c1db5df23 GIT binary patch literal 5711 zcmb_gO>7&-72f6YXLm`8ltfFGf91rn%`_BkCr%S5b?wA|K`hygk``crE|xn(a;5!Y zW|y+bxPS||ZPGSDe-gxL)1oO-AcAx7vFIts0KLd?fe3SHfTD+@7ba5RAg8`JyQCy1 z1q!qa=;_UynKy5~_cJs6OFpkl@csGq*=ByfB>f#5gHMZ@wGV-LQzBALA~H!hvYV(S zT&1SC$y(A))lxFb6({XxY8k;N9o5xpnyc4z(M~y8H&@HK`C8r`sg1aWTEQ*WitcD_ zRF;|&N&i8vjU}XW63JYbh)RpJK=qrcX#Lu_=+U4@r+GR`b997iH#2c>N%Ur+H%G^B zDzS8%kmf-;LQ6yGM7K~b_D<;M?C^qFpFVZznd5pZ4BNr+YL)m_Fw?X{$E?p-zFVcV zYPRjF?S-_-%+U6|V5Swij{Z+vqMYQ)DX+_umKlURdBFyndclKHWtl6MW0w;=``nrN z=VwjNY*NN`Y+S4_P%A8_dG<7QXh>)6E4Ihgb2N-N4fRCqXf$^7IBnisil<~>XcIG@ z52lP=Vm@kqX2V!M^<~+>mXWw?p0Xv|qI}!dc0A0App2*-H`a>4yeUzsCPO?Vh+I>; ziL$~_%#(rBY0iN?s$qDhOAUkThT;08;~<|ij2Anm6ZfcwO$;*(*|M~T%D?z_wdK1M z{NOcPe$}I4K&>kEma2|jueQ5k%l96hIdZfb*deX7O=}Tw4XTmHs!NYleF1K;)no0h zFinu1uu6bob6r|3Z2Q4^h62&EWving#cyo~Z2HIdY?dU5V#~E8P1Vx2M3N-+E19H8 z2B=CjpgPF{&5=CN5mEqJB%?sbgnXQofZs+YfKHO_K&QwKpgYMfpu5Q)pnJ(Q(0$}S zp!bvgKp!9n$U$<5l*xnSYvdtPAv0u}RLNm-gd8Ogzg_sFT+3(@d4ecZr5e>6i7D6s zd4y)kF`6Tf(o{ozS!&4S>(?O#6A~R+*dzA1g^K$aPcw7Z<( zV~hqNv#rnweWT7y&uZ~(yA!kwxcn?V+hb6} zB%ZFDZr%4meUj@DZ*-W$wR*>P2rkCePCyw(B3Ij>^s>*$vK-A;>z!uLc5soh!t)-z zY}i52p+bc&*g){v!KOerjLZ@mSj=u?sQ}xclF&$DwCo~;Eoe-zgJ2>%3Ir^lq@G!a z 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/issues.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/issues.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a10e650969ab2c7f71deda3f69fdc9727c7ff270 GIT binary patch literal 12339 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/iterations.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/iterations.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9f209facedba90d384b9a2978616842f8f5d75a9 GIT binary patch literal 1394 zcmcIkPj3`A6t`z)XD7Sar3r+xt*BIis!Ss?1$u-^98#ca(yHY&7t1?#c8AWt+Fry4 zRSFUxfCCaeqMnHO2K@@Xq$eUvhy$nIqGo&H)Mw9bU~}oImgeX8etz@j{qy|M>9i26 z-=Ay_dOkvLj51rG+jX=9+f&34!x_qPjIoiO%*ox@&Ar&Ox|=m}KlU*iAm;ssn9sczZtW@#EZYP&;68U>cvF7C@(aMX=J?jQ9WMT5j6$p%YFu#{I=cPC#*cS4 zX+Z~E=$28w>)+*x0-J?zQ>ix7`)Lun`or%b6QWy$mVaIt}~YF)!4>nVG+I|n*fi{!P2>h--soU?a5rO4zOk&T?3fU zm3wi6Im}IQ>@zQJvIYR`rdCuMt0 zy_6P7He#I6BH>b%Lh92qigB6ng3&@rur9POITguJH>9G9>&~cRurorpp#-`+Q~P|o z6kPNmnytOIFoh5u16=^!AQe@^x`zRQB9bJNdYNpCGKV9<3uW6Rb%$gyU}QVZz`Yb^ zu66f@5OjP4+L-o75Q9(bpb9f7b%jlVY$YrhUVZ@pU07V(-8eXPe)rbFM;D*5{odNX zclNLqtoXZ|hs)^H>Bk!{&#eA=W_7<4KK#0NW-9u>waX00&ZkjTUmR%IR65zR);nIT zz&qls0b5@2i4jjEZ~O`a7vVWhJ~~eRv*+G^@6vxKZ(MAJZSB`HUpJs#E9-qKxiG&J z(E!k$DV>|&ffVL{rkjM&EF+}86Q-0lsuSV94X)L9_A9XlCg$$T>i~x?#`qOF_Zmg7 s(1pJ}ukGwMCtZwtkK+k~Z4xZu&wsuB?7;+qFj+NP`uyX6jApy{FZ&>9E&u=k literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/job_token_scope.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/job_token_scope.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..beaacff77edcdfb2408bcd8a9237236fde1f6e75 GIT binary patch literal 3842 zcmd57&-6`olx|4C7@C@GTcdZj3`XxC&K+i}nuj$K)ioz{wBIVie4tXJF-wKjK` znO)kJq5uluqVAzRC9nzQcL`oSGB5a<$v)QG0-o z8nKF`9+1d1G2(Y&%rY#?qK~4%`f9I`BtQ~lNtR=BN0JwkBuG*$4Hj}}(I@89FrQ&5 z7H0{tiG{L$Ak{>y5FZyy>cRd)SuTITgyR6%K zg>gTHgLmd`u(DT3`sqo|bdOy&@0hlqzQC%iJ?NQc-cL+#!Kr(fj6k0JvFUmN+Y@-$ zZjiak<~eg0Lfu*YR_HeKZq2|o7&tThbU4Bl3)Jtv%HFG+oEh)bJkzoDs-M5Y9o*g9 z&fGQUCbMVDPL27)`^|=DDhE*uXe1nLjRSL^Frrd}sM5QT7;40jm~2GOfW(l2iz2s3 z3o+gU%#1&9zFKu|SK*Z5YVDvU^|rw8>*!2#r(SDobXRcXY8}Nw)K6%dty@gf{FJ6y zj!~~7pV74U>UuSlBs9~|bkE~{PSbSTc03*9;A+}B*@8`xZ+==@a4c3b9J{jMlx*g? ztXyLDty0yTE7cYusP>8C_g*WxrpJ!g^zu!(X17!^y{bM}x^=STh`V-6H=H@m!+>fo zMzmO46sHzs02Xq4f&82_bG<7U|CXEBkSCh`$Dhi_`FCJ`M~K4=CRF{v73@f+Qsvg=cm5d0J%NS>GPk$Gyw?q<~VJ#vStnORbZ^8;Y8G+wF&dEl1b z4><_c2fL5qr=AOa$u#`f&D%P!xPFW?ug>ir zkY7s65@Y`jGybJ_@y9o6-zF1SSQUV>m<<{is{70mLE|<`p8o?6T@Se;K5H zQq#&+-Gy6qF+UY$g&#(%BS4l8hsm}h;lsQtf~zr5a&fJ%SI8H+-lzGAPhMF+vVQE- zqi_Bp24o|5u8}w=uBnjaFQMN-Btt;_s8-Xxg`9$`nkMI zs9!mMZStburPT#yHA{e&${|x zIk_^`%)PvFu{kupCN~C;H{||i-^gcuM?UR4vNE$N)987+I=M;kw=wp{Gr@c*=-vdx z?cldH0c3XqBF5(>kysH(tf)w=7~GibcXzNGhTQM*AX%8FJx?Nz;ogxoSd?+atvf(o zm^E!s1X+_MJKa+lh!|INTe)r;*A)j? z<@%m@TvxC%q@ytxQxTXuxO3hhG|z6#}@N2syU|ZDP^dP%qXr$ z1z!9J%yBHyehlMp8hjK6g$TzhP z?0v`{R36wH4|3VSR*qAK>BEMHUGPT-wbTzMjD9`k!9=gUHIX{ z;EoVLg=yiyM(oM-^N^lk{!Qr41WEz8~ zpb~tZA8QmZJk3vicsVdf%l!lNZz8^{gLv^;`?)Z`#cPdO_kWA_Km8BU-j2q98S5PH zy$$I%fqxOCclA^upwYrb7XhG$5C7JEIQ3xq!OX_k$&H~?_j1kjP$NCw>>X`nM)$`v ze*;(DjaPjAITCFDp5s+{Azo2;|8)G1@Y)aVmQH_5yzcHR+prb!{62Vk5njb9cjA@f zfkoT04W+mnj^q;jbx=BmC_S_nr9XU{pKPNPjb;jie#~2}LCFug1bhembkKel=X7`% zu%F`ii2B)Z+QR1F<#80?tH+Z_@Si-MMglz-;qZhK(UkBUaDFDVg|(O)RG&C>%-Dql zeXM9aL@5?^M;u?AZD&>bCUGWc#n19-@Qanyy$@tFLMi<#IrtA!dM2f)^o#)cN|1g+ zk8Z|Dbhs&xY(^t#X(isu$h5e6W^M5C+bsfYt1C{SaTz`F_-9X!wFnMc`4k;(3{0#Y zZGo53){so!qO0cG@Z+0Let<@A(N-6#^o_5jIw}|F>ZRYm|M*8whQ9)p3shXxzW~_T BupR&a literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/jobs.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/jobs.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f8ee4b2b3b66f43a50077894dd7420b4c9c0cb29 GIT binary patch literal 12674 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/labels.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/labels.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..12be0c3da9c5e3eb860aca59004a6488dbb4152c GIT binary patch literal 5172 zcmd5=T}&L;6~6Pg%HIy*b$ z&R`pgTU0p-erSa&SEf=QaO(#n_rVWUW%Z%*TPyWt5sFMkkrJuuLtm zV2PS&Nt$HInrtbWBA`wzhO9bG<-Al3TM;c{MYSj&%f)&trp2rVt-*?GajQ{lv=Umv zN@_`~No%s2wPrp~DYjTCEhUg~VupSzXssd{AZFclVyd)>CTW~T?}z+dX*;+s47vzS z&=_r|4K#AUF3`4dZ4|Wiv~hE7Rol+BG0--A&f1;R@l4}C(NIS5q~6lBC+7{v_2m9S z-u2Y8lWxH-8AVUISOO*^coBLvPr1~|h+g#kiIEFujFK@XwGqWW{pw(RPJ*m>%*0=*n84v!dBHZd|a>f~8r)EF&RO<$Ze ztIvV`HJ+z$O%)h5t6R^=USxpTQ&5$tA<0tOeOREAV{i%_{~Qcf1gz?i4Ex=L2heIqo+KzxAI1xlLxtrCKeY zLP+&V*F+I#h=I7~c1f-o1gt5{ieqAd%nEmfUkKMESQ(^U?c7LBS z+SPfZ;LzvH4iwy?G1@x?YfEk+Z(uo{V9aJm(nDiuW1Bn;?^3eeblzqR(lNVjf4(6< z*S8GRY$Yw+>oX_?>eLt-UY5OtK2BXd@R<&!W3YCJmKX9xUM$e*hU+p1 z7RU}Qj^YxVwY3*JxZx?SCAEz=asm#632lXqdfkz=A^U*c6{;}G= zqP8y{eNWxH4kpNQ#8Y)0D@)hCh^||yuORvgl zc%M+~+{j}kwW6dJoX4&ES6cV4Dm@jkQR!M7sSvm=UHBMp>knQKALcxqMRi3M|6WN6$|@^;Z?%Ya!XMF`>b?WvQjV6%cd z4GIu$DKw+blahCEAt4v=Arv(Q*g;Wy%}gpIWtfDy7R4QE95b+E?zkQ@e* zkr@`Bj}D461s%YXpvIRK)`{}1*}R6sx}Gl@4&rl{A)CdSEp^SXKx9#N$5aPQwrfnH`^vmEWLGfOZ{o1Hx6=L7I2{^4KDqSKp7u*IwQ|Ke+JvO8u@6;>|a%-1td3 z-nZ2JKwXLVJv<4dtoHHvEej`?h2cyy+YeS)50WepPthk0cf!v#Rfk>;$>exReGJZT zpkjb>K5(!moF3Ej{1h0-I?xWD5Io6oAxjG-IBAaBcG2&Pn1BqkgJEWJmw*L7UGub9 z)ODyw?hP!X<9^oSNr-oZgTOd{2J*>u0v$8fHFshy-UdCiy>rPdx9uy-srQ>Z*AgA& zp1}=CYzfVsc@iQmd)5-|-%!gax|Tx74&ac+;*B9N)X(-ycD*#qnRYr~F|L8@ z6hCngg=Z4Ar+t2|_z_OeAmRAD4>>F)f5_pQdj!e%;pbp)e;YHdF@=ELu_|}K;EMt_ zn%x%oO~C#mX#N*~4M6~>AQRG?7g$E z+%fbZ`LJ`PW9ZQ_h4Vz+TkPPDM$tFOs*KvsT#eRT9Lc)E%9Us^msL+5o zHJHE~6(^|p3y=U4_9G_jL`-<)o?LG0`L8gc5+Mg(eIiN9cZIcN>!P$cvZ&t7ReV9F zCt!N}edeQZ%TopCR#Gnt9PrJCGrPQyJ3Uz_jr-2wXFv>_kDztHc_II^im50*fRd;$ z$&MQE@rK7!7C~_=5L@_fjl;0#F#PX=#gO3t6)cXV5lI3G{DB7FgTXS`2X%bJuY(UG zL~4FS;JEBZn@3}NAN^E)&Hv6i#>T-K#?N^NNJSC^;X`uhJ#y$Dr1L|PdnSej@fiWK zj^t@G5xPH?m8dvZx6zmqy2^=;rJ-`}_@nL(0>h1i9YVjbCMOn-E=BMC@Zr7<2?ZOc kgdIZHn%r1U?p}JM{I%XkM>ZsoY`ogJefm=g1w51g4dAiCC;$Ke literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/ldap.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/ldap.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4d58f9057c7267d7c10e7d20234630c5a89daa63 GIT binary patch literal 2633 zcma(TOK2Nc@a<23OK$zkKik?3mg88YNl9=L8&jEl8apLUCkg*y09(^KiO*Iuk7t;G_Eq4dz38>ffn)Ol~ESQ0Jt9cJgvo0&Ji zH?u!CH3bl?A3q;Sf8;^vH@c}VsewW;8X`v0ITQNa<0 zjDjOx)h*kRZW_92L^&sb?cae2T6qs%?{pXqT#eIU1WVvpA-iMtZ`G8Q8XPGKP)mSVkX@ceb5<;)sky#fff>U<2((*X0QXTj((>^o z@;cyke$hj^cBcW<`-R1Xr11$4kFa-=y4|pVO4T*2^-82P0S6$lK^(&3e&E4PDV}~) zko^1NdPOP`E_k9|5`^tch}j=Y(`;B#-tkyiCCLfLmm}u1u0bX}Q+HI7wj2+^cAgl? zYEq~&>IhY{y9(50ROBXWPbmki>b0|c5l!+gtrkv-wL2Fl$BO)9HB2?f8u$NotXJ-W z+UJY>G$H{_DDoN$$QMxmUkS5<5dwX_nhPrEtiYrHxQV^edWoWt;&fExzu`XPW<|TH zdRi3ia22mwL*$|uM~hODPopINVJkwj65RA!m2dA`L`A78^??7hT?GDFX$;vdRUY6# z|5hYLvHFI`K!#&-cTiMPHy|X}u}yS5jb&BNz-yMxlw2w0zCb{(tRcvF|EnD(s+ml` zd^siGAbH#?yR|@xvOR%icp_P=SH7detI6APPEG5EO8Y{ciX0{i9N~U>G@l*EgkH@g zW!t10U9*4-Hn;QGvg@UpXn7bGz6d<_oe$}E3cW+y`(_qz|)4j+yJ45Jod^a0TXI0OUbvY z?%x8pnBO&eRo%i3YA>=rHSNltv0QIBPPvU!ST4gnH&HvCjc3SWU2WK z%qyrmd&2Qg*mh2#v2p^sMYE+EN$iM>;#1%eD9MaP{2(6nIHH9!Dbhi8iJEGwj>wb< zz~+doYGFttS`)HN=!+z80GMfO9B6%1eH$EE-vgLKJI7FS`{KQYd!NkCi{)Ts@!Z0> zt>Do|!K39+^WwFIYb#gQ#P5O+gInF_OWo(6gf46c+g4gj!NcXYgDdgX1EoW~n+H#< zeX!Z`&O&^=ZG}5a;m*}~DSUE`f_dR-ux%;%<>@Cux!ix@ z*Oq~euBG_$$b*s9t~K$O))S9f1~x+jPa}s{wAJ{xBVUhfoO&ENv*|nY_j3WY4qDXB zpZ4v4HzB(x>6+3ALt&KWkd=v1_>1AzG&Ixsg}j_jMeRBr8=8`+lH=f<|A z_L9`TWNmfylsbAIOUHNkBhuNGu^j}T)thUlH~bF=e;D07ex>x*d(SCxS3sWLKPeZx zZZsNpJa!?c8)?@#W*4*Y5Ve5@ghT;2LAT=i##MN>bXpNQN|+0dS5crlDvBE&W_-Ov zFMa3TUzGt811UN U3k07RzAo@~ literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/members.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/members.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d64330f8ebf3cd1c162f8359e51d3f057d74b128 GIT binary patch literal 5779 zcmdT|OKcR$8Lpo0ndy0XY%{hQKX};2VOa3k!1CDLkTq{?kDZ0((vi{`PnYe1p2t?V z2{uGA5>YmXM2SR%4|~872RrP+M=K}pxs1h1IIT#F6y=Z`#IpkJDgR&H^XQQm5ZWk8 zOa0B?|6h;4>VH+uUn7wqf#)yxQZuKbg!}_PDv#eGwmugKxlc5r2|CFMijeato}8$N z0`fe%l=CWHPK&xP=U4nWS&{j-qz7_AC725-pHvUe|-vRtsUF$gKwgI=DHr2K62&Ge&G}ux@2(rahjV*?yUR8HuKC@GJ^wdvjS%>Up<@3-puB$&{?WeliDAF@vLFm zWQ*OnUK+VfO_rrMDvhtC9TH}3zDz%x%QC7>7ERD2ttZ0Pjti_XS3I57_4JfZQ#3aP ziga$ntSH&Dos4%gX0t`B|Fz=EAR*q$nXRerV?@`j*1GRXhqgK%w5hNoKV}8oE@z}> z*C&n@b8#x&I$Ye^cp2NvY=mIq&sH=1+$WSMf<_dNCMe>(Cn2&Juq}Dcpe&!x(TP>b zl2sK+Rkebunk#5?I?`cP{cJ9+S0#)VnVL3Dwo0~ef^R=b&K7bssTJ}wvxQ`yng-1z zY5qo1&rT(a^X6iI5(eXmr{Whi+PkHbcT_(IQlumOm%c zg4T35qO^WaZVJkdDwyU@KbjeaT@@{vIYDH}1t*NG0KJ*f z=Zx$Px+<_k&;j}#h97nW0HU0G33NBuAdV*K>4kaAcm3ySHe*;mM$I{v&p0U#8W4i^ z2*JB`7T}Mx5;nAuwS0r!fo)-FFd!!hr;iKiZ!l~RdFKW zVF?(Goj~XVNJtFRu`ojAc&uvCK7cXvh_CL@{@%Ktn``=>yn=QSY zEk`z66J@{D=37j?2$Hsaz+6$wq6ZnzWzyF9G`4>uwtusG@6+y~jqafrUa`ryc>Z~q z3?F+Tir!ISv$bPMT)MI({~`I@W+V8jcovAg^kUl=1kug}sA~q^>VxaVXR8~a zmi4Z}p+XTg50y0WBaqBX2`|IM$m4_U0LltE2?)x7F#%$?0a-7$iK=QkpD&ncEI{B% z+!1Y6xF_);5k7#|hyeTw6W8MCvzFsuNyqJ$D0eAc35l&eAgL*hD%U43O;Y^x-h_{} zK(mFuZIZ^6QwLRNDQrKq@#SZWo98b3e22H$c+m;gKhZ&FlyO30B{x^smP85_8hvKNniT#K({hVQCVtU zHg_%jO}pQQ<6{k(V7N7n({nMxCny|1=tn@7Yo2O_o&d?~Dl}A48LFtC$~53qQHcgM zFAZtFY8CZE6%F$$8i6VrV7TsuUE3JMiGyTX*K50Omk_K848t^2F+R}Wf8}DBZYrgU zZ`Tij!Ba8&5m4LKqIg{`svYmJ94XkvRgNYeo?E`KJXY!-TRXgdcB6mn@p*tJ(eaWz zZX4q?YS6T;b8&@g&V{9ejUu2sv2g_49b4TLQfR;WYJpqN_x~yi5O}pXh#uJEN&?S) zPP$Jurh8!6=^h9>-KT_SfeuXfDW2|APP)g*TyFIy_uYxweYg8^F~ZNVUCn)w<(jAJ zzW;Xz%uZMeghtW6XuuKEp?nhxN897ISW3?saca0~!WV#ndfYH2)f8vnb< z;+A}i$lB?;I@O)?=3qtcz)C%QfBE?Gho!#Jwchok8-1gXj{!W1j+NxGy1;5Y>DgJE z>r)FXJkzoB2w0H#`Hfvf>Jq{`gdLidA!zW{4rx5>x-skqR-{t=&^sK`dU~Js3~%%d zHy+Z)8>1E&cGLo4N9{O7Z97KoIFH(KCu&hmS2VpTYVq#$nyBSsgj?9I7PZK7%~Orq z|4Py6g6S4|Umsb#@cb0jOdy;I75guKx@Nk!&yP%=8uryJWPc1!rQzO)7;+P!8kR(2ox*3n^hKwen$^AXRQh*`?C%p|u0mdB=sNlMkSCOc;lGvB5&M R^Q5qpTlvX1(Alx)e*n0K4^{vG literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/merge_request_approvals.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/merge_request_approvals.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a99c67ee209931c92d63293b984b56575f313776 GIT binary patch literal 7859 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 Wr1)!+SAg>!di&vq=LDPlZ2t)jlYkWf literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/merge_requests.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/merge_requests.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9f20a3483de79976c5df1fadae7e9e30f61c162d GIT binary patch literal 21258 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 F{s;PC=DGj? literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/notification_settings.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/notification_settings.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7bd43cad6b389ed49cd5ec67404dad6e85ac3913 GIT binary patch literal 3185 zcmchZO>Epm6o6-J@2>YR+x#@86hst4n{C>d{!m&d{r`h@H>d$2nS@DSBGiRj|id zjK!HU9|=8O!jk|`lBMV6(3%m}6j;-&YuUO^Si8WQSv9v?Sl5BId)3^YnVxL#uNW>X z`SRiNjIR_-*MmXw?D6q8a%R~qGVUjEFg9_H6}+tMcb{b5Tede&~(ZHJdYQtm@g7vgu@_eqX-g*^_p`M9VnyJiA48u8U*U1uweQ0P?l@imeO1U^y(aOwo zSwUmvY0a@GwCW7hyu534$4MH$2WoyswgbncjC#@eQC0PutsuXp*HP;C^q-`!Yq3NQ6Z#>6Sbn)1%YP!J7<_p`4NXrGso{~djnQ7ZO2#3?4kj7=EqU9 zUAM;k6lawxD~F?G!Kt_`9CUGJx~^SpIlJ+$65~Z?aDbAzp5GVV-EQp-qO=?Pm!q}Y zdxK${5x7??A@6?l{6&)k-%-xI8ZQ@G06`rH>^B5~SvmmXV|tx<%U(|cleoNa7a-() z=?eJ(3TRQAT%n)R59xe33rZ{Hc|Xk0DjXM0ETtcDYgOo9xyZb_>?(7khLBi`#?MZu2VyE$M0pHojdhY-_W9z?nyM|%=+kDZgG%C z4$~V)7YY71hW7p`l;4C58UX{gH9~7$me8}(_M+v}V9M9!HE$|bBZwwSi?cWiOnwR1 z6jD^wUSES z&x7Xo7?ZqG0;V}DduzevJ8|+Z5UXLuCE+O0>%IU&z`6%v9iBUN@5!N?R%7ExL+M{s zXe1YcngdW@K~QrPLCw(s9E{TjPHUw)ftrEId5%w93nzLwikDH@gF+k#Xle`pUvY`2 z=j=AE8l22PW~e=a&BV%-00i90{x>{1Rwf%_Da!TFu-yFk?+XO;7({OaQ~P55?G3j# zE$qmBBQO5c9E9Hri7z3ETam=gpDB%v z+d~q^LK4S-#DhrUm>_X1BoX7}v%P-Qo2kMFUGQwg#ZLwwD5Ddm%Q$X)Jc{OYXfEL= zq|5PRgya6ei*#C>i|Ci zLu?P%1F_Ok)o@F1DD|_q@@P&o?3y}2$*Z=?k literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/package_protection_rules.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/package_protection_rules.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f72e3e35d79502f7c433311477f1a55982e3e46e GIT binary patch literal 1385 zcmaJ>&2QX96d!+ky&p|NHi!Zj0;Dc#%twz1gi4_Tl7_TMXf7k~`gPZ>$9Biwh^0bG zr5yMJkjkG>6b?Oe;?5R+(+tlU`b+}7i-l8q;QLox# zByHZI9kk8J8tJsFlaEPcA0P(@T+k1#IuGqt5eFj{*kFPM9%zS76FoO|{nlTK__}QG zUcGU1D@?-?2Q{6X27u|9-uamJfk2u5+4go9x3a*$Q!FM`Fj^3x(PfmbLt^J#VQ3ZBD^h3e}8nJsVJ|3s{z zeWnHmI@CJ;65(tOz@%2BM@FnsTPNT|=8x84Q#0x|9{beO0`Imu{y&R$rjGB59=gAN zGr-%b1{T4+#$s{w%|Z)`Iu#RCVx;%aHmS!EHbwPHb{6W(X%6yb9;Y#%a25`SP!ueI zJxJKCOt5@XjB%1&(M*!Evu2vM{jONX!^DaLRVity{*LRuy9_JMhDjk;*e#K93<*ff zs+Wc6sO?=gtX@FvLprIZx!IzgyR>#bxOwH8>@7mPnsm`uDOIt=^9odPDp0KW2;qRt zZPI;z|LW}A8~fL0=U;zl9=&ks$Xxq<_0_poe1zTSi;ocTPH*cHwCK@}v0Y^CtxD6L(d+Ff+T~-uwR3hc7<5^Ta@2$^9EW!G9D0 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/packages.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/packages.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e3aa6ff189b950a7f670635432515ac3b7acd6fd GIT binary patch literal 8966 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 KzUFOwulygYgRu<& literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/pages.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/pages.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8dc0653baf5475f238fe972b8c17b3c0b2ef8039 GIT binary patch literal 3122 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/pipelines.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/pipelines.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..696b615f65ddf7ce7c106316eab1474ccd0c7dcd GIT binary patch literal 14357 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 ZdjtbjM)UK@t>ni0cb@-CSAl%nzX9P`)ZPF9 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/projects.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/projects.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9a65429ec79291547ad8c72c950c195daa1403dc GIT binary patch literal 45433 zcmeHw33wdGb!HFdz+f=I;66!UNPq-E5&-W5A}N9d4~Qg40iceS<RiR4m7kqa;wIP3UAdVX|Km<=Rz}-DDrxJN3Dv@2`GH4OJg)+!xh z2gA!E>y%Ehli}r&^~wfu1H*lhjY^l;#qf$qx6&i_D4WDh?7cFwS=l0PVR%(!tFlep z#_;OMc4ddSgW)xioysn87sG2KyOmzCm*I7h2b4YH9){OP_A2|teGG4iJgDp!_cOdP z(x)5{4=}tba!~0P`;|lDA@<%JIjkHJk1%{ikn@i@a~={%BVQ1gv1bgUl)-SS(F*x85vW?#c_tO zk4z|GG0gA{ku%C!@hrnPMk0zLDh%(6M3tBrV|aIDQh8c@T2V!nz4t^kB`(I5DRGLu zZ;G5#&Wq=j3*rT3TAXHXn&_TpJG14@EJjj2H7t+A)jI+-mA>_G<+XH`Rc4%{xoxc z6z-47%~|F88Rq^t+{LVN{Va2R0mCosBf-(`P)zBO<(}YVxMxz0osmOvt$QM_L_GgM#T@J`(d~WFY2AG=7(wue ztUE$MEv`HI!=bqD9*E0oFdkEN$MG;+-6tpG;aD^n(aT02KXoW@@aUm~#|8$E=+4to zxOW!m_E03Oy8z^9ywj$8n(my6ha>b}I&^4wJ>NH;Q?%M#U$Ych$;A{UoK+XU z5n)IkN3W>UL-J%y3xk}dGjYwb9z>2Yr7s>=!=qE^V5=D`jYN*gS+N=o$9@@IH9ZnL zD@QXi%;x2uN>&|;bTi_i=((^Oi)MN1tBo}A!&_}}7&M*PKRMl&>4-xYCS$7E1Xeo_ zC|RyZq{_(Za5$1xQ`7ZmEOyqcO{T;H(YQR0!H98Ycb2Cm_;aELYbupEzvqvKj8RGZPdr-Grg;C6T;5<@Fzm%B)> zJt9YCH5@X68S$-t&UFR@HL3X&($xB6N~S6noiZ=8Aa>nn79>0=N5WCr;!>v!2Q$x> zynw@@30cZ%WHWQl{_@74*^Z~CvQ));)qQ<5s&01#|)X-EE?VE8oDPdR+O{sG3XtV}bG(0&en?o9nZt{sf3EUf9 z7>o?l7}Mh6kXcLJY&|x}v_<|%#UxRq_Odh*95>tE98no3RM9NYh#DTpe3_|)NtdU! zY*%yOJQ7sHG_NlX|7iGZ*mU*kUe;tr*XY&RZ)UNIP2X|@F+EC+_ro#uY=*bt#SCCF z%^_K#!4p?hXW^K}8M(bWb3l#E9sDdjo-|r-Bjg^O|rQfral3 z^-RPR8SAa+_(ZHHD#tZB)FVgF^+dv>J(JT|nMAjCZ{E^_Nl)&YgsuBlCPN=%^4l;$+)TKk#MI|CEC|Z zwX@;L01u=-M=tfej{}RkxZ3bw6pHa0i$Sy50+C{xg*z*KFOTY)9 zm-ne^aN1gj>aGCWwB$GL=P3e#FXKbh+SLarN|# zm79|*Hz&%reBv``D+T6em={J=VQs)xGprq08^hKBYiHP6U~3rG0cg|L1#Bb3x`A~utOr;(!!`lyVc2G1n;5nQ*k*=p1-6A@+kkCl*mhvs z7`6l0c82W)wu522fbC@1ZeY6@)(dPm!yW+EOPEC19_F?O*j|S11-6f2`+z;jum^$d zXV`vVeS|?)|}=J<6}jQ2r7@9`MJe0xZjvV8Y)o2NA9tN%k@mA zZH5cv{OCRAe0RMvQXuEY?lI@PtMlmsIX`}nIp1BKA1RQtxOC3aqtat@pl9*k~K~=u%=vfkDrdPs&Y`7qmd4%~zl(WdZt1*B1pZH&ktU?@%QoqZEJ1|XY*H_Sf(D6cSTo!vUEM9r$J9D z{upheTxZVw+2YW0B%j`lS->r61zKKNy2N)yZOe>fJo@OEJj~nQY7Likp+HHVo*wLcMjb_JdNu7j18kE@;sp(Y z0(qt`YtKac^C@;Fft{zZwT+X^Thq(=tGOlCYl4y8bQA>A2-@uHUKH3ApKE$)*bz?BMqFL$&eKkD@?GB91J9YV>P{u$t|ot@^UdooFvbh z?omupGpZPccudo4@M8&+HA9%JyRAw#7+3%sXG4x0;63Y{BuTLDWj_)V2&0cD4cRWl zEf#8sb2YurNJN$(Y{_c>O3U5q`7+BX9vr81A>8HpHmb%E&*CDvRd6WCZ_#!*dSlXA zb5B1`U0JR&p&<73Bo##2Nj}3)iNZu|Dihhl8KO1FXi4M(XE$V>bmT!8m(OZym{Nnl ziAxL}tcY$LCy}(24jmB%Wj<%fL*a5B0#FT-)p8;xRG*1?AoD8HOCa}QLO`TX-A1Q> zs!r*<&YlmdsJly*<5OyM5EEJEAz@u9{%)TGfS!qMRydRKwXiP>QqipK%feS27wts? z!epmmggRrKiCd9?oN;BpaeUT3W(y0mMX%aEZ?g&0_D)9-8Ug}8J@p6uylQ@`T2DOY zM_;fL3je4aKQGHszkGoN*U@o5x|Safdpv&Q=|e?(tv7PaZKz)V$b{@4==aCQ{BdAL z62OCT|M{Snoq0|&>(}#E?DZeIfKlL&@e^V{3aH6ZiGC?P>SI~;uampSyZzdf6zj~C zZ73K9N#&LfN8uQTeN%`Vg)p8~^biqMuYX|7AIx$0hc!P&nLiYRcrp~vDIQOUH(@3| zmB?zoP;4q9u>?kCe~2AbOI8}+@nm@SjH`zlt!MBx2M)udp_l|h3qvrf7{}f&E)CX8 z=P%!MX>5S=&~6nqf`*8`d4^W|C+$x z0O+NRG$pX{xcr)3{X6m?vQ)nfpxFU3M9D)fMU;hn?dUaa2ND5MHslcHp@eS>(PKw0 zJ$5AB9rKQ)d*?ORf_o>U$HIh2GW~y9LL3%4?ZKU>5EN7VkzjOuil$>frXI;3j^;2) zTJHJLDIxGG1oGo-drI!kFu29c_r9P-RQ#R^(bHo!UFRZVbTeWcm*eXHSVVm#R=gSW z2({aCsvZEV=4c~^OZ^L|l()Yl%!vG2Q1Iv)w z@BWLE+C_WZP;|pUtcugJgFUnMxYxwZZM0VOknl-bjL->3-ZN`|9SuW|v3#h+D-Ntx z@K9qyzyGPS&|LmKaY#DO9DL24$060fMf0hoWvqK}L>fh?Xb4*aiFD}70#i)4jGr8W zyXNvwoN}>cP5}C6!MrKnLD|iiM}6J&wu-3uapbfVx2)TGMS3yvLgYqWXR@yIM%~tA z-PUXU$-0Br4+C5-y;<7u&FYm`&%Uwk?dnYl@1{icrj#3VeN)oiboGHhb$9&#LFG`* z7EV(~{hOlm4{0S(+%v_RW>9^X2>Txa@+i~A1I(10%T4~ibxGNhEzn+t1#5f)ATXPO|ebQD4kVCG}V0zL_s58Q$|XKk}Zvv$e;vi+j# zp5+40F`AC?eAiT)YVj`dQVNUFGt|2}_V9S>i4u7WTf@lih~B zey$knXG&-!3u9Rqh;?6V>^`I=w5x|{YJsGP>N4a5VKPKtY!N)D{w2IRi}^x1H&{mQ zfYmiEnCY^O(fnL2=49#5l$i??_KHhdf_4Hyv1;CwBV#z6@NK>9c&EXiTCom_dAEuk z6`sqEv_~jen=5rNrC^7yNeTC%>kx%upG)Pmv6}n<%7IU#(wv)tKeJ|#%pIK{=Qn5l zB!Ylc;zOkW`+|}`Bo1H9DY<7*{qIBu#=ee`YeqOmOp(Zw(`GSN$)u#3S(O+LxQr)g zy_`OC1+z!49lh3@@a?-hIT(&E?5aG5i&k_xsJfA?S^`j*IsZK}d{LOSU$ALKHX$rr zv@dsJ0io^pl~G?TUP7Qzyp%vAZizD>+NeNf@}AjZQvd?FoHJ;{F^i!*51KzX;2)g| zN2DyaKP=0B^9mi8%Cp;Z6LMs-Clu~6kCJ+Z4)yh)IMl63ZH7}+5uOUa6%>)}Mj&|5ozU3MB0BKg&kx2xADyz3Ly>%Zx1xf=iKvoAe6Kegc7o-j^< z3QOJp)sBA#&?dtW=)~DN3ztGQ`K&BY(%~i+3TLwh`h6-}KblpgyBD(OFbGa=1z_PL zp)%ZW$uuKhm=%z_d$U8$n3qetvt56c2zCc2*xVWJM8elgv)c!sI{tvsTPLc7`)1HL zAO>#8%Kb`^bP3pUU!oH;ToAkeDbJ|p-4h*7%Gqsbi}*~*4R(~&U`vuxu@NA%L^2$H zKZ}5Jj|mOI&0P=>wzUpY`oNx-j;~c4(mec{O?PuOAE*M*;RjSo;yBS)aO=p0Yuo5R z-4mLaik=N<;Tc&a$#IA_xby%QXbZx$KGHxwaI;%{&l}w0F>IG5`z*G(FWYBbw8_2b z&RRRI$T|#iXVy+<%2B+$$6O!r1EP4P>0RiG&#ap^>9dYm=NnGb0s_`mu3(3q#sO)= zU>Io8;G{MI#R@|w#8T#&UUn2vuP`l*5p{~xELdu!aX}t zA)-Yhw6Macq`UbTkfYOn)`=QQmXivl^i-yQpYjKxfg%S(6FfXAiey$$PjP~HipKY% zRETQgq}bM-<7E<8rkD~0E1`H~I=iA%QQW7COw()yil2-{H9030DyErIjt4Ih)|Q3= z2QzvY_vWYMWk=F7UzN`J?1DG!LpNN z{n)hy&okzu(lK?XCx6-bzcDh|0V7*>a-}qIQmCg58N{N}21u_kX(wP*4=Y%Lt-B*btczE+ ztR*mnNmMeQ|tWNq;E3~$;>`+-Z+`{ZOqkv*_iZg zoF7U0PF$A~z7ubb0ZX{~P30f3bvPY5XZC%QQ<(X=E-`hFu>i2d?|3IQ*JT$Y_XVYY zIFgX>czbwT^-#MlxhgN^fdUk0#x&;8o#og>gl25-a#!ca6TaQ|vb}p1)cb*p>JL?$ z^n1{(vNOfMFM<$B@z2@}c3|n4AxChHIMgwQYo2gL1z$R!sTyI82R1nH-$mgTi_1a;ux{ zI`gwx6}vTP)*5SY>pm4r-pmvY5u9%a5erdWqG1gNv6cToHG23ilQGN`*)+vz^ErFSv-qbIt4^OqcyMG6wj_ zSdlX_j17dlJ@+WKJ?U=81_GOf5>IO7y7`TX6+5w;z{>-Dx9OK}18gYt;lqPr!GVFV z=2-!OZ68P#RHl>(+dlku9XJ1S5=GH{fj}^d3nJ_ii53W`t#DNzBhW`+KLJ01RRmTO zXd}>0U@d`l1Ud+G64*eXn?M(V9s-*QY$33X0Ik%RQ4w`JVOt5%q^j;BK)TB+seY<- zQmF1BK$khxjRf`*c#yz80tW~jB+yUb5P`!4sG-#(1db7Shyb08tAhkK5m-Y&BtZO1 zeVD)yfe`}h37jVI2!Wjh9wqPufsYY*lEB9a1PG8mvR=n;h{0x%X#|Li*6gqlsh7o~ z0jAe2Gs{qwi*DfPcHG}n?UdTzQ))(ttfO4@f0BDSk7-UmDseoOSf6gkmPTzP5^W-o zCXat2@ErpGhrs_OK)YYnNkNJUu(KU6Fuk59y+{bJmXmK4_Z{NmO*RVE3i5D_#$pi_ zB#29kqtm$Er;@x-T}ggMEwVN(Y8eG2qn^0QM5ZiNH-)C{tGWhJ)DDW*#QjH%A(cJ! z)r}PDX$nsVF>L$JZkaOh8l1G-D8Q$Mv`eV!xb#q}dc&pT?^JJGaBNJ~^ei}fQcZgn z9D7pLT?>w`lyA*~V~qi;)-O2Lr@XBTj#dMfuU>GhPL-`%aI8v|w=Fo@QZ?NRj&8%H zZtH?$YpSwy!O@wj+OXi*U_hP%k5#&I!Lc$`%F?W3VYn}M=V5qUo(}h|-@f43o~r0r zaCD?R%?pm^RPCk($0h^MPQP;9f@7Ug7hZlIi>J?P%1hqTx8UeYm9{K6T8wh?y7RnN z>|1c`OVw{%aBMSMX6=GwZL0O)g5#i3cV31XR+6eM3yv*DJMesYE*zG%FF4wb(sCDG z9-bq^-*L8H8ouFdO*&iWI}`gJe%m>ea@LVkUD8>1MY~bIFAzF#aJituak|P3dBWx`o=6 zSBGCXk!C@VN_Abjl=*lCPx-rLgz`2nrChwsYglVOC;(MdbZvwX?E^-r>r9F#4jpTQJpR(%q`U5p5t8g zTxhQ0rNLzNhBO5<>O~l;)%b21FslToPy+Jl%_+g+0kb7pzh%L>l?}l;5FrNHJc!U3 zd)p{Ikn`OPy{=?^*MhT~2Fwm>9sCgK;D-|FF;c>7-oUsXe%pC8uTjjw=Mw6gQ;jXD zZM#xUE$Pw@rw2C3np)rW0eh#sD(xf}mrz}wE+)(^R5o61nA<+rF~4oDE7`ayS+O}? zLOvd$w!w^#&=fyiL1a-$Se4+Zy0Ye~^Xi3p`%4!S4I7hHUCEN}cdOw^U>GRLE&&B5tUaOuz`pUD()jJ?| zPL}L^*GciH2o@J4hxGcKA}sDziy=^79OQk`Z}kOBi!rJEzF3@+*%L+8&boP|gr95u z*Q>9Gt~Y#r@LhVf8VD)kHLq-meJ9^`p33Xq?MX~YAcP{H(=&H^e(N>+{H|95X#uZq zf^zWl7AOZll=e;n58G}z@Xpr*qgVli@Mk?M4ea(GVRiKxh+6W^|G{F0ODcN9x+W&# z1QRZfEEl)r6iZ~!nK~;~3xR8c^O6>_CvN5d^wNhNZ% zsk73a;3B?C;fIS{WS(t%Fe>BRT;@6ID`Al#7Jvq1NR9+1VfO*@ zdMj^DZ)V<-d@eSrL5N0n-jOe?vB=}odUdv^Wh0gxLy?$9CSoC6g1H4Uw!o~qK$YVh zj<{95hABYecoe23aPJx+$K?xp6?Ywn{TnNfGVT@+D>6PXpjWfkytm^cHv5857zN60rcFx?7xV>$9vZp_kibBEyQY z4BJZ;rsW^2WvZBgpWN(WgNIqFVWyRGz1k*mP)ufCjKOZS4w-Q}Yo%E>IW-D84H%WL zh3O1tw?4H!0qII#zUW1wb(gVbjfgL0!*WqFtefgpflDrsg&v+q|Ky%E45hZYPth7=wf zqw!<*ncmK950UL?=mufDgYv_~w#=lsndv%y#{!m^$jE$#A{(I(bsijykJ%vX2f@;k z5<3&t^jgz+QEo~Vma|#NG7ZMZwTS?~e5Jdg9nLIJ>#lfg5*$}AGsh!41JJ9jS983A zaI2xpX-eNre{~u&gkDK%R=H*HGAASd*KABzu5(C*iU;J11o{ckbxQRxfg=Qt5+FTX z6`yi~gpmL~3qhWqceS|{N)jaia0{EH~WS#)J&){TM!{Xyos3>V5gSUcD!gRP{YEAt(dDU`W z#4V*+>{Ja@{AD}Con-_TNnc~QbDux52s{u z2~)^31kO_MR*W_9*ibyca>SUxR4E0lYYS{$qT@=2$e1vs`wz6z($n%DZ-uu=xk6g&=7NnCC@^t`6{x8rc5BRAX9R zfsPyF2CrBxL>CuyM`f0`)h4;zbrlI$Z2|-Z3lu z2u>NutQyzj;<{C)dMlmI4?^je@>O4@Vvv9w=T?*gx54PtrZB7Pc2GOa&;K2{XF}h^ zt6mbo*8s3&3IsHY=Erl1i`Rb^DbAQ*;V^98cO#)@?5MRig#D*W!Z&@@Up(^i>6adT z>50V3{`mvfMv^Q0uRj8?;5&p1g=}}OJIJ~n9|V0=%=G|zi8YROAE7FAzlhTX6)i+( z3Fbq`9IVm)2neZ6P;*H3F?;~xB6N2%O*rc`cf-&iF1lDU>rz+Ey3U}q`OoWyL%;B3 zxgfxZuW-?Gv2?a{wnTEydSJ)S^%eUbg!x>B1NX>2;e>v03AZ^vi^hena0$0N&y?oq z3?%OKd86|(_%$UsDL0{L>yrkw^R&{~`^!ocr zMHsiN=*`c+!2vZ;wr~gGnmTr*C*+}SHXmBy_xcCviWcbzvvX!l7A$;JK5rf)=ft6v zBfqspn0YL1Oi*+v%~#IdWTB4i(ZPr5_HE2bg-T#7AT;x!Jo}j2NH3#!MiHz$>0Bij=Mz;EM zi1M9^yuNzkJGLkJ+JU$kf|6>1N}Q$BHdA4VCVF@|UUR7U+9=LSv20N^W`B-ZSL*a~ zrc9;EV~{Lc^>y+fM$M8|9h8XetZqA}(eX1;micg%=5n4N*()WApE18fXY%h{?-p<$ z?Q2K~ij@1I<=k+!YrZDYGmvO}C{c0jvNP4N;*G8I)35JK(q*P^ls2UrI&L&{B^$aH z8hYLpY-L+sa9pun*__(6`HCY^-!X5S)8=gp!M%Sr7Pi(QFB31Sm=8%?NJ(jS^!_0tpeA#INjn_+oEM~%Hio#O_zi?u4 za%&J0xqUQa81vglGsgGRRP6vWa{aG8V_=wFwAa?xk3H&^PJ_5x5`L$}>Onrv& zbNkO-oZ+g!fI#?W6I+3^L|B@c_%z34F?-_k>emVUB7jEgUyM8R;jF&QurSSYuuSBd zoIc0*7%}=QNQE={#+96{zuA`b9sd3^_BEWHZ{E%s{O$+y**fm%jFXhNbaX0o78`R~ z;R(dcs z6kqhtdazmW+~sDW>|*(B`K%XHLs{O`P>jt&F?`tPt7hHUEV%LZy-p2YObw;RR>2)S zi=74^65#meQoGPrA!};rdvw@8ymi@0fj2$O`mmswN~kBe#fI|}IBj4HXf{#c${?R~ zawdbUF0&HhZr?>BW>;G&unf_&Y%d{UaTgu~4kc*v$Smh*L>SUlP8?PO+|^G>4D{zl zSVTTnB<^FRNO5x`el+iWH1GMp|0ddhK<2$-^;c*Dx=w)X9H_rW;6D+_Oo+?Og-uJ$ zg@5Pmw;ba^ePA51%G+ca*-)8sO7pK-)UgdWvt33eJ=W zaGoYhV^;)Wdi}~&^V$?lX{}tJTD2ur)9}s46;~hsa?35Bn~ZARsuH}--`9Q7IzD}F z+r_6(cAqr+W+)DS!*PQR^E)E!#IkX*D}341S_`2dZkW*FDLEKfu;F5cROnKwyW()t>$9G{~aqv%GAct%)k7Y zn9HrO1R~=En53}(7jK!Hje-H=clxuM`gK6~o7soZcauO)WS_(uq!x^isoHVGB7)$CQC7kp4 zD07bYqB0t6Dmxd0$NP`Txz;rn#U)0T9dXFA%E4sfIT@Sm4&rhM#wjNIqR%v6>8?A; zKKK%hbmm0L=Zsv|&aZ)4@|Enwpwke`B^GLr;i*aX%_n>^#`vT(Zf}FWdn}gQWBT}) zD9L>xC#LHm|5|%~tKSY?2-5eydo!2xz;fs-H(jHVSmySZG#>Hq_2b|l zN=MzCsq>F7fn7kAYF#c_Fx{1Pt4H{koQTVEHn=)B7)0C9iK28P-3FO!-3G(Wr{#54 z`KdJY4F z>|L!)Gxa(e*@29L3>)$V63OJk3u{WZc{+SCcQ?^!z_K`m6o_CB@4c(Xp}NP@Wy_la zVe?0IP8`}OuFmO<+)g#p&g)g2t**nQ{zOMu>Uc6g0+_Ojnsn!mhp)@7EE53olm5!a4`xBLINpJf*-rB2= zB)x4ZUo}5hS&c8gBz)_0-seXC#Mg=IA*z0CXl+01e%W&^b^`_H;a(!PqaZue*OYv+iP+-D)CD^fS!ju7pFrWO1ap~nQ zjDzIqTbL7YW_`Wv$~uqpz*rnU+zQnhqgIDt2~EYsqrv{M!JHN^tNUY2K?QmiY*yt_ z$v|@VQmg1Z_6Fgx^=(=*Wv4Jz7S7_AOyi@K_y_1~SR{3Sti(AbuIoE^@X+vZVC3Yn zLxYPK)8+_S;&=0wt=qQm_^zX2E#1W~GV}m3cYt|I!KK%0|Hjvw7|z74_-M>tC|mRe zgJf)p`TMjeq=hA4V*UYPe@K9>7XJ%jq~QbQo^o@2$vYjZ)e6k|IxZG4y?&Ab@ogX3 z^~qmxdbrGc`7D{f4?6;8i%k!b&(Mr<_-m{oc^MWR{^t1lu;kHx7>QtAiRIPW2U7Jd zDgP!CX}5Oc|E;oOT3X(z5GrbK_|_+V>*u#E_%`8t5iX&u?%r3F$;zQOwqqm92Y9Gt4Esp9(jD0038D8 zAd_sS zb&G+Fa)MqIj_KtGrpD-UmNbNWK@h6aDKsuz@8je!w}t2JDI75?ctA?2;VbSUMkyL9xHOQ>CwE;?eX^4zfx z*lJyuPTYE|h`9|jx6{lm9Vu!gzw{2Fy5UCE+GN$*RAt?b$}P#tEvc${?t*WHl)Ek+ zzU8&yO8gc1>cP3{t4Cjmr3HGQAK|}m;$AqtzxC*Q>=%@>)V2K9wp3e3s;Lz>wr}~? z(+$Ib+w|$r6R}NmSzH;>WXRltk(Yh(wx+&q?lq}i&ZZ$&C z(CM;86ddn1;-gtotD^Or^=2y)LTfV>uVHB9c z;+{s~0#^yy1+L#s?Od65;ui(3tVtIW<`(K2(;V7F^okOOuqPiI$Z`|ex5K`K(~>NM`zvm(L3L@`6%LUT*HgrR6ro_Q&I z^-|-sy|gl2#$GKV=%1T@r6<|ACCw5wsDK4ojtt(frXc*Pdk9>C{;Y@C1UA5WeWRjO`qFr`~P6;-6w1BkaP*EV*4IKvziAub?385{NoS*d=oNB!N!> z;1fseT=~=R8f2QaS=TneX03Em%g)N8hg5i*=Jr*tG4Iz1I1NErr#|$Xwf;Hn;Ajk0)z3rn&2b2RQOh zNzEN6h2yoNOmmnj3dWv7JbMg2g?Tpls03a>*|T^yIprh|Z}!|ifS;v#Htby#OAf}d z4NfJxnVa*C;@6ELiY3!-SX&=QLNjZY;LV1H4Zkm$&7^HiVHTh7DmHKY*0Yn6{b6yb^Wne9Xq|U`^7|~~1mgqau=%kCD*36nU z37Yjoe8G)BHVN(nau;_OVQ-$@U9^QUZIN>Xzx4 z&ruxem)wpv5JwFJltm0C}rfdE-?Qkw`g6Cjeu$8LGLC_Apg z6Km9chJv4|>ckDczD!a41inIG6#+VUjY?0;MQJ$kuYMl z>Ms%4P2fKg=q2zg1Rfyp%LMii_*DXX3H%xX;*88zZJuR=fMqF2-A_UK0AQnlEEk}C zxC$D#Z2RlveUQL!5a=iHn*|DRkWww%imt@c&!Fz)hj^rm*9tuz?}_Zwh;E3hQqQ+inV*-$zzO@3{rr zx^D@GZVGGg|69UC@L-X9Zc7cx8-gT6f7F{a7sq zV{={YoO|Mq0OU@0woj>TEB66%XT^le=1Dm!u5>0=c3<i$;QO?ZpYq` zO^XzyNR$JphoW$7P!B}mkR#$RK;p7hIRpy{Ar6RJN>a7ziT7-8^Fb#cWxV?YI^X z<}oW_C$*%lXo{WEQg&KP+ZiomXSHmgm#v)Lq%~1eB1Zgcs^ujzNQ}fBF_JvP(>%Tu z56{$^1C0Wj6i@La&vJ#!OUX#v5@^$)&1_rO8fdbh$?dSNt=3e?|B0IvBtQ11Q}gAb z?s_oEj0}uk8PXlS#D$;6$)&LmdC@B*{LFd5b&n63)28ER-r^Q-Oj-uH_nzrZl&ju5 zMyPKImu*u}Ic%+s9YbiL%XAqwJI>%BsUXmlsv;OsSSRrdDbY zC+B4E@e`_Rdi+>LFHSGa4CtyicIK>75F+&Rcpy!aaa{yn`dE!0MdJ>3& z$BQ}wA)iUt$>&)DUC1QY=^gq7U5czm$)YqYo&o!UEHM88EBv@ytw1%$O59tF`LfHc zaq%K({S;$GOLtwy+!)Nex@N^5Ty-2^X75w#s28?*9Sq$40FP$LFZs5g+Pm-Yh0?<0 z-JbsCw*l_u&(xJO0Wk|X(T;m|ARu-9IIHO1MCh8rfb8Ie>$kFTQMN%PFt%7uuE?Qz zjzO5AS%fl}R)gLVnV{c+zn};&Q{d2-w1DoBn_B~cXUSq9?g-}1j(th z11tH1vlmwO^n4@NJCD`nT|c*XuS(h0^m?qRBQZO4{{ZPYyjif?MdN3`I=@QbRqsCa z5a0I^!eYduwiII{p-<~KO|W2Cv;hX`3wH@}ff|8u9tV37f_g{MmLvYpde6h*GyBvM zwrHsK;JvNZm4;9p0OLYNbffFfBfNm{9Ks=lE`);!hY@-Zo<%4i96>;~iemu(Row^` zHg6P75b~GsNGt?#0$_*w=-lyxgwE#}Pd-=Y)(zkPQ zh?nuiz=2nA^eO_Dfp`t!G(rp^@T?C<{Q#S3j=2#CgQyq*h-iKkX}%w6-hJDscOLzh zH17{--hX=-S>BHR4Hj-ZsoPz6`Uwzp9?kCijw=lYx& z00q{c>j13AD5bxWeSZ-3p_HW3Ljv%inb0GD$?=Rdn_O?EwEbqSe(2<~woYKYuJq8e qD{{xpYqu{h@BMCaJqGjj5!j~v=KJ-oOK%)S5bmDW&dxp(CtjljA|zx;CSXqzI3iFKA`-w(i=?Wxcq`n}*6x>Otgb*kDq`8un)<+}^7sba zA14Ch8)cmod6>#GH$|a>Z@>_vi3zGTs_5Jpry!UA*R3BJ&8wIr)yn>H6rKK)w~E$!1Vaup9aNs~0Z?m=#vaF!~DHTLr_U zPQ%S$>w}U{$ z1&_4Ellbeya+F&SHfYL`-apr*k;Fa~eGG*BJCh}Ol8rMSMiEpMPhksEezy?399JXx z=6||lNTCLd;0jGM=@y!3IC&LboKkRFC8FXD{8{&V;+V22x`+h?X*ZOZ6UF5?7apaR zJi+gZB14yeyly663ANI)$D?K`<~CHv%>w8vYPY3*^YZO0*JS^dD{GcRoKz{*;KV?I z>SF`yJ=JxD9WrxB@8j*O(_`;#Uz?tOXV-dmYUP==^xNX{bYW#?m?yjg+Zj09Yk&30 z;O&`Vp}}knvp!jR>({~Ap9g0juQyrN{l4tX3Aef#Rv=83Q1L|ev^i6IS_xY@)PI9e z6cefj(MFJ6eXpLBpv!M@9;PYhb8a>@9Ifl6`{8_xJ`(3JhT>Fp8DVBpN}rS9Il1!- zx$`^mu~vI|YMr0iX2;lW9ds#u_xtO+4-W_m2ks(0H??}-Jo@hQ-Pd23s5M3X4J^TX A1^@s6 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/releases.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/releases.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8c80cce6a92fe2716ddaf6ccb7923c998cdf1981 GIT binary patch literal 2942 zcmcImO>7)R7OwuC?)mZ9#(^~<5R~9e19or1KZ^kG+DTAiJGRMzmQbrbT^={-?is3k z0^Q~fk zGN&ry2Eky0i*t0GlhA)&{FxpDb~P|7hn)Cp?uHIa(@lOJHsb~_zWNY zc`R>U%l4mHB`<6}0M121i6i;Mkx#>+If^e+)mL7Cnzm|btO5=^BD-AoQX+mo@jnCR)uw*ye=}IGhV&d=-I|))c-t=l`;1CkK9;BhSWS@P~ zZitgeY?fs#nP|4fx`nC23<>VyZ)CGN+Btr+H1@SR#_orRsNazp6QcNSb-=uPS8gyf zRCP38_LV?#beYhCulm|m{fdko2yqO*;FuzATs5yqd9>&kX$g9iP2yL5g;wYQtuD)> zPz~T5^viSzpr|ez?~!H6AGlC)hTkJ^OU^xu#2RD+&}{V~yO|*(vCrimr1YKb?egNC zD3=4@lGrfx11PC@1ia+aq{ae)Fs?AV%ylnGAj|7AH&_lpZZ!H3RKRCGW$qHNAZf6a z{~?HLVauoPN*aakUBg)_dkCgt`@!&H6ofQM8!=6IDL)H5`E`jsf{iR}q=w#Vo9k!Z z@>o6LI-_Ze#kD>np#{M+D8X-Q3d}#HizLl+Nl2RK8oZp)guJhwCm)m{oAP<-yzEOK z%jcC(r4Ob4xh#@(W!93}gD@I<91Z3k7LFp4!COmOO<=WBr|G%|Tc+XiUCqa#9XDOK z7DCosH^G_r!`ESZafBmaR(BCEC*1@LI0n@TZvTf4>FH!} zF|~2<#Py?KzN((=8YcxT*QKM@2phq{_n^5K4A%HC#YEtS8~a?lNmcP{nAR z3X&xZazS{-tugAQG>bto43gAc4#JeO1d6Suzg^2P+gx|kc9SLyx5t$P=&A&9%GISt zBV>3!VyDnGOGJ%^Auw2CPeE0JC-icb4}`41Ev`Lz7t9YA$Yy!GGrd{e*Ezm<|JY@< zJ38J~@BL=v;O5YSU2DFl$b0n8%q?BTzuQH!=aJ2!>Fp?~?p>ShRvzmdy`_`GPv2G) zZARK0zHd!gTU;~#Vc*IE)_CqrPG!zb^ST@TVl>a&96y}uYN4&BBS~G)j}W4j`1^r zF@>-c;g&1W^0u&4Kv)KL2}@N7%b*Yz)bZ74enVL7bA8=^$IcW36d9DC?StN##>hK- z)B>)wSO~YG0brwuSw7^$4OatrqUZ=1a}&oAfMW-s58N|CMy7GxqiBwyIgaKrG_zlmLh~}3 zZ5FdhEdB+|-ONQyhzlO~o}^#|bElEH4+C=#J$e1njnSDtbN6o!z0}hbL0LmkcD7I1 zVouZf-86+jMpJMyn$Al%&Amv|c|p_poTj*zS?eCIgD3@YJzKg^Y@tu3?DC&jf(H`Q zaozX;<&``f;bSae238>77(QHiIj_xh4n;51$^tw~P|Sq53hBynEAoMt#T~ByXuOcU za$aO}P=VT!ybk7;B1zH>a$tiT_#d%vkjV`)d4oLnt*VvePN6rbNPqnMYnO^W0#2_y sBF#u^uUtCUBk1)eB+2ZKK6?3;YpXp1e$S{%^U@{r@}IvW=!xln0wp5XaR2}S literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/repositories.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/repositories.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1a3f7a86a30a435e709af86f36db1cb833d37d1c GIT binary patch literal 14249 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/resource_groups.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/resource_groups.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..006f884cc90ba1e5c503f7de81659422e998df83 GIT binary patch literal 2279 zcma)8O>9*~6rTJ0?)&R2rGS7a5vW|Sy+MhI0TmJuB(_LvW4N2ieeX_RFTFpHnfs7e zO7a#MaiNJ(Ll-QFaRDg{7cPh^mn3f5z@nMNK;pu{pSfV4_1uwM1k*Xglqe+VO6N5(RPd zR8r>y|6!0jYGmojXr3#y{37hHA%a}RN3J>!6?HXVCAzO222Dq|4O#_;Yg42{dj(f* z=Xc|CNu7<@2DdPdy@+7UOBhFq-wp*|!T5aJ3v-Qy10Q>7N_h=qFOHMc6G>qh-$Kja z7CkxZOePU={3LEpCQeLJMj8%@FF0XPcUqlvGKt?9I`F!~f|Lxlyv7uii8;+64ZXT^ z;h>YqS}}*_sl`o^TQ=0{$Ot5 zLg?CvtZt&1caHmc_*wc z-7Y-XK&GGDM|p1yf!m#6#0G#o?xGbF_4eQI-+Oz{tygdDpWk=pPT$YF7xtaGI{@Tf zZFJrmm7uYe_v{U{9}dw?f@}uD4czk5$?Vw{23W$g81KUqG>Je(Nu0_~V7!V$7%O-p z2vb5Cg$zM^;kKM2nF$qqC_Ca?!{=IF7Ed05=>w;^mFAwjdY5)W9{R;x%^7U4b} zJskxAAo_E})}G0zL__9HmQz?sQ&BBhYY0iVG7F(xci$>*mj$|>-nX`ief_%XnjOP7 z<%pYp|Nk|hb7}po!7w8)JL|?H-67uE2Lz%MJn#GWnGw72Y{ajLV=~S`!3_x_dSXo$ z#4wi6-3JWY0z?${V^P>4DD2*YcaJY@9bM2jXJ>@@h`o`UX{QArjtoPxza+%U*&rRN zdyG(1xE3FKUd_dk`1CPq3595WD*j2JVg&F?ZUTNuj^P4~c!5XR0}_2%Eb__g!+2sH z&b}D$(6_;x00(n{ENP0OJV3h^(5~N+^8lT?hfe*9>_2s*tab}4y_#}(_N^P|RuC{N nl^$hGxiR>|_B&H6NboDKC`wUi;b+CtKyvf!o$_B`oWt@Tr|M2W literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/reviewers.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/reviewers.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9ac630169deac2ec5e405e63d8fb0d6fd5b5003d GIT binary patch literal 895 zcmah{yKWOf6rI_(Uw|k;X^;?&R|pS}2vHy^l2BlS97M6rXzd;Bg?%_PYr}$&T;vmw z((nO6`2j>lPnFIZ2~kkdS+Z$Tac6fSO2rm;&$)LV_nbT5TCF;Q@5_ho$kY(}smR~Y zs=(?wfCChu07ods9*#9n!-{K>9vhwkSPzVm=D`s=C@}YdGwnz(_j^{6wIFLSgW)5i z%GWgHQDHI?LO=Ji9cdo))jd&c*%yDi)HO`D6($&CQRhjr#w~JF5@HCXM0m7 zvOb%I>^0*LS>}h4Z2xyjb<419ql~yBt0sU0#E^#r>HP5hWqD(jTS zX)uixZc@58^`o-#39ZyYC%a^v#*74MG8(5OVVPhzAMY?Gvgc0qWhO>`!C(MJ)~$b<=DA1w@rw*Z|HQyGs|SDZQt2=f@*;h~(-=yeB^mXzj0>)YQOM)x6jGfQ zK{0U|0vOQTo^LJA-<&^Mv^T$+#~a(n#-(CU&vj&@w6rtu1>?#Vt{$IkRq0qgD#4YN z(x%jpB1%h}i>uCFf8yLPhyH+Xzy|eV#9atW9b^0hk?-i*(n4l?VRV+J-q7aux`}b^ Xu)ap{TRS@5!H4%WmgMT>s`$BF6+ literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/runners.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/runners.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..56ddfb9167f44898edf3d8826ca9dabb64c2b997 GIT binary patch literal 6602 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 Fe*=ifRd4_R literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/templates.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/templates.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ac3359777b5433ce8042d10aa24e4a1c20cdfe25 GIT binary patch literal 3672 zcmc&%O>7fa5Pole?6n=oA#uW=D50UHrX?1%s(L_Gf#5j&RU%N-t*X_=`(l=?fBJR< zI8Z5-kV+4&K%yc@974q*5f_fAhl(RoFOIlGt5&VlL)9BJu0WhR^L8EVKue2S@g&c_ zotgLEyqRxj#@{ECaRTGpO9zYJMF{x?Uz!8n#aL><<1(>`MIBP2IxR`MRFZX>B2RLZ zlB%nvh#nE|vJ)+7x<*NnSjsn4k4a>hSn4@qMOfs99Biq_1vd&@jcH81p@jT|;KzU; zZ_(}$+yrnt+O(5`p9Fqqi*~2rrhwbkrkxV}Rlx6V(e4u59^j_iv{%)7Gkw3ISsB@v zca>|tQZQZ5SC5wMN;xC>iNkwGj~q11W|46}jxXyWC!ijb~&T@ z@u5m#g7Ir1xfD~>r;^CJ_dOkQ;T2xs0TFBd|r!(u|vtOWdoSzpu3 z#A^nGcoHh$@YLW*$QR04@?{4YC!M8dAxKxHv+{NN6}=Jaj*@x#P)6b#U;%##$r>OT zh2wV=#8P!9s{l;7$h>*gS6t?dx2SIfJwIj`1;=z}y_Tr=56|&i%0mC}?Ff*&seD}vVl+>4nIuo+w!KLDfcUCW zHNE43rJ4be2TNRzR`{~(f!TK1^Odnm#o_2iVUV8;?JY3JF^qZ2w}8k+N4^)Bje!!; z!ZX}mKpp~GIyO)5T}-W=&fiz4Izlh7nLV>TGx>{^dj#L-js(x!qrvlz{y^~W3mU)- zH*SMjGkSmZIbp0hLiP~v!6}9(*h=_Uh>?ictzQ-*tL>cs1I~ae2yP3U;S&t9kGldP zydUks05r#cj${5ZY~2K|aLWKNM7;ScFncO8(~t!Ni^EihzlyXh@#%-uQ(0=lotL>a+80J9ow5%E<&yiO8-AXTP%HQq-ayK;o|D-7YolySc96P3|o)(xoLBHifrx&eOs*{e%p&yJ^ zc?J7FUmKrvM3eM_v#IdmKLBudd)tV)bT@h(mxj4?`0CLs$F6)--!L?{`{t2_4MVp+ z0CG3Ax32ANfo^I=nGbTQumhnB1>CV+&ww`AW8C$7j7rsmX4-TNI8*eJK@adR^DPEQ zL}@3QjR+9%-h}Y(o6aw$`=<{suG?N$R$~W{TakKmVd~9=sW(UO9K+O`6R9^B0vyjc zl(Uae}Ei$Mtx-Ii!t5=D^&2FFa7as1=N5wm_WWS8)NfXg-HMGeEm{zWuDqFV{7 z4JLOkK6CN83a^Qqwf7E>w4Fgi{x07GEATsW&jYz9Q%Zj#0}Eu}SCajaZ24V@C8X(S zV-2N!7uGchJQ|uxN9as)_DqA|tkH$C__7SD(xuqRJ3NHP4cK;tB3*Gf6gx>~2 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/todos.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/todos.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ac46998f045c7f8bd865cfd9af9662e7c987b8c7 GIT binary patch literal 3055 zcmeH}-A^1<6u|F%?e{|Ya8au5XlvVn%2sKNwx)(qY_)<0cJR1K6U)b0LGO?+N@xeD*>Pw$IXJ!``O8)~VaPB$he$JV5 zetUn*=Q9MJU%wr#yqP5AFEpAD*wM3f6PjgW5le80E9inN>Y^*@l7K$ZkzGYsB3%MK zp(i6o&Fgu$O>YBV!b(;|yqDZJT)9h;*Z;_vc6(M%O7-c5c(%DeK+xE1# zIm;4h%93cBW@xG`z5oNuvL#=aR~l2At)87zv;@n8`>qhCOAa?Y)1^F2T)Aqp3bc#{ zHRhEXr-`Ox;Ir_*^$5f=Ss*i!d$*VociU)v2Pp%i8=thbA9}>^<xN$_vk<-qc)x)2;Z4)3!Qy^aZt~wBi90Es(ze=uz<>` zXJL!$amr>XQ%}%=%7DsimapwBI&RvW?pgMN9XRIHPz~mKfn72&vqu>7*%|fyvTE+~ zt2S3XKTu0PW02&#ju)?kDZDegj%sOE->%l46INAmbGC3wD zeyArO6{mfd7U3k7X}{>vfYVZudb35xo+?)7f@$9y9C-bWBDVwjTGcFF0ebLae5&H? z>7pMYgcmV2_&{|o%(cGUdPlgWulMxT zd-{G?`ZvW+<>2j!O#;oG$<-sPeD%cLPamPVC6UBQ6mL9~!Hl-s1?MJOw!VQ4ci?OZ zx z!hBc!`FB%NWcbt0dO>I+JA^u-jpG+n)u^b#12JbDr^(j&7ZE>=Yf6JcJH7ol{~(Bn zMCn5}g?~Sb5RXxZR`jPV@FZE3L;btBz08402E-L0rv?&umiv_ z%C-a4;1NaGF`RQ8#R(J|iUsDRlYl>pA-mq7p(a@~s~8|__-7dN^;SRDPc z1ro2_Q{H+OB=X9;ce*wSG^^c@u-S&g+Yey`vX%Z{FLBjj-^3_`G(uY+aqUq6JdC1VtAJelZF9>0#J>R7ro)`w|^Sk398 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/topics.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/topics.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e7cb2a2fd2307964909b9012066494f83bd35442 GIT binary patch literal 3110 zcmZuzO-vlg6|VlBe+C#Bu!)z>?j~U{JA>Cwym6u^81PRlum$*#R-{(bT?`F9)3a4Q zELd0?MV7)I5@Bg0u;NHQTFWaXIYi0<2Uc3`DX*$$_}i2; zuV1}a^XmP4^{W1w$s`esk3X0wKZzss4?by)Sd-cRGcX&-MXuzdieyR^*_11asZ>-` zt!Snuah>ezm6#b5yaIgOObA{DK4~TeulcD;+Dun6W=70)zpaurvz2zUz0zTJ2wBYU ztmMob@NqX$md!31T}N*60nBj+ZpWD|E%M9k7Mc`j5;%*~TWV9DUr84-|K^i|#*~rj z3R4}MhD;svoRDQ^etBoy8oe<-dh6!ob*9~|dO@`yF~#vc_$2YNgKHtkD9p5QrG{xi zW~r(1>6r<;YL_u#Nj|wfyMUdrps>W~)ZMWOZ`rG|jz~C$eH`LQl$f@cA{NZGPvLj# z9>MNyv4ib1Z6>IB4oizq)4mhM5mBi**-rzrfiN;97n$;kRFFvrh$g{Rfyc%}H+hLB{L=tDOtqKmPBC2N-9bwY7GKRb2~%-(CgM zp>IoD9=ZTU+=eqv586-6B42vI!}dr&7k4`zs9Q~Qt*_a;hL$Ds%rq+GNGB-o#hMuh z5UISPP<7p2vO}A&l#8iDJb@?xER+fZVB@3-H5Lz=U@Iu(J79~P{c$3J{@`O#0d z`>sBH{V$hx`mTQTBOsq;N4Mjn0>>Z9EK7qraj+$TZ$YlIkbAIoD1e+N9G{AlNJ&3f zC+9igP&tu8o*a?F$G~i$RkQ%#)8h}&Z2u_VS4G<7$MStR9kB8+#YgKGnr-h$g3zi8 zNLN-hPm0ogUk~+`o^*!1h+?ejp=ken(kcm+e}R52t?E!3)&3_`cLGD4M)+P}M2CLJ zfK+?ss#h%=w(lD?67Wt)L2ZQduu|kDT3k#fc{TVL0Z3groN>vij9xKrjv2vRQ`|Be z**WpQQ;Bc=ueop2o&WQ{!NCaFSB&xHkl03aE`;9{SKXHX6q6-Pi~(FM7Y$l>gThe| zQ?^I(sW7gK<~UM^*sG!E*!=DoCnO-?*qmXXkQ*K~szGQt0U?mH6JbSmBCPV1AKBnp zt%xej*`ANxWB!N}ddi`h)^Z*av}wbIK4Ay@o1vIqy zzY022Yj!x#^yms;iTN@;3&@0t|6tnI`-nV&eJNw3(`elD{ zx4-yGQ`(bj>RuA{46VBxiw_r{=g;rt&p#d8$=~{DY&(DJlWV}OrCy|ZzsQ~2Tzq!v z^W5-udU!iGyqi6{9X~6MdqKKZI7|2)L%KQ117VuQ6A|^KxCQqh^c+g~rN=UsL$DoU z%ML?AVOp<2q|GVeCyce-tiVk=0(x(@9%80j;$=a2{7ivtGR3RH6J<6Ce4>C*v@QZq zGQ{!(mpvL{VmWmh1{KS8IL4R)PZgF4s+On;=8$8#2t^Z9qkcfKD=y3$5Y1I9_?c(jvyY4h5cH8os+VkF_o!+7C%v+6XuT)7Jlh*O(=#$*$jfcS=;`667 z(f5<-==d>qcYxxz@j<_3w5XyB(JgG)33<;z;k|^8AjLU#HJ|iaR~U&$QB> zd`|28^2}?S^vUSv@}vGe4d!6vZ2zGo#wBr-%kL#Pmqf|7HD~?e+Wh;k{Wk@YeFf>m z`w7_OAPG}Z{mDWP)1f-h-=a#0yGZ1aLtd1OT;Lq94&lv|T;)U*Iu#w1;;aoY=WU+A z^#_S>iYxq`NJ)k(+BnH_ZMvzAFd;A%vn*(?mKD9PL|ORNC_EIU`X>I<=&AQJatjo^ zhIA6ho+3%oOZ3j)&^!M^`4{NT7pV6oD!oJ_J80wuDnNp?^sd^urzt795j#jrQey4q bcF(}m!2<;RLHvT$xBlbJ#jg-BV!!_Z02UW1 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/triggers.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/triggers.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a2cce88b50090f2b8d484f2ef3a3c87b6f9d805b GIT binary patch literal 1571 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/variables.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/variables.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dad8ed4831bea622768e91243443f55f29174e87 GIT binary patch literal 3717 zcmd5Er86`movT<)J%vLye-aBa&@yG|_Dj^i{=(MI*3;z(=5veTA55Y%$CVnuQ{ zLrTf2E}#Mi>KS zYb?jIEd4MQ&u0{cB?Fc$%P{q!lIVMdJ_q{zwjO=LQUFU&SC3snUj%*cwjTY$(g&7Z zT|EXG{iT8VPqUYtaLk%KG;;N=v)Sn|tOsXx-L6%F;i?n5*5q)d=IM;-R^8DZKL{uw!U-EKjW^I{%D(ylK8W zYq^OOtFD%yG2%u13ww%`#~0#t}rv8#b?6> z`02JlnPQ|Q!c<$bqm1#p}1*Dc#~e7)jq1=5swKiHzwoaN54CL|E#a|pS_?5NNQ*9;qV z7O9>U%rLttMH){sC(>$3?nIJfM~Z9BHzIZBJ&RX^NaZY?<$gtuV-bjZkb~dGd4ONi zyCm!!J_(bU2?>)o2_ZjIZjztF@!Qf(dJ_`jW9g>+fc}DZ_Gf}L<#I{lUxm^5*AQ?& zN(#q!PMkNXV73k{k*h3hrXnR^?$k5xCGd+frde^VATZ4UXFdea0)GKV7zUW{?<8}Q zyTdTli(m+b0KQltzbp3N8U2`jRQ+hCb@0N{wPkzd;Dtw108fe+TiQjD4o!No)XN8P z(A@}o0HTyxx5DXootg|o2@WO@F;+}=k-wqsI?K|9h z`FdNH2Gxb}b(IVr>(*#Ab%}n!7SG-5UmX3gwnnhMbUprmJQ4qY_PwVYPxWt(s#)J_h;;*9L83ZH@e+}Uq2)L9jzVNfyd;{QFj^Ig&)zU zxs%;eZ?Ok5_%H@}1Yrmu>Vw+v@S5*o!UUBXREYmAxx{Jw3*_2=wflbcOi8*5fpydC z%7YvCzkB}&tz%=$-+6R><=EKccL1Ig$6MO?bLk~kg!JNXB4APa&-jEV$Pv!LZ;MaE z$ftwIrx%x$*1i*)d|K@*w^OnxKU!RVwlr(`giqz|d;&$xClF#jmFef1y~wAs;8Qu_ z6RxCO8jRAW2_FVfqRQryFNR4gU|hu*@TM0P619g{?SN}&K&Ei` z3L{ZIvEsccDd;edh1FP8dr^DiH<)*CalggKU|ghpa2sGvrj)Kr zDXKi}A@t}98Tu2^|3F4o$jI+W>90yUCoQDg1C$QlZnXBlv}Cji$Zai0p=dkzUT71P z+6O@S!CS4be0}+N;?P6K=;G`5X4(X$_7QY&T8B?9Urro)X_+p5e<}Ajf|AIhzXO5w BYoP!D literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/wikis.cpython-312.pyc b/env/lib/python3.12/site-packages/gitlab/v4/objects/__pycache__/wikis.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b39621b4f3ca50e470199156ccb69e81de965cdb GIT binary patch literal 2787 zcmcImTWl0%6#nP7oxOE?1qv8IF0x!Y0*X=rArvT=7DFM%d6`Ui{%%KRc9wr;TUu(e zCM4p61``Y=;h`8Fx+xERB*q6GO?+8`4|Sr!#0TS()Yd?F@|=Hmk#bREbdvq%{O6qi zcFy_E&Nu0Fg240T<=*_SF+zUALH$u{!u(etTp<>*1c$hSF1VsDx{@vls1qI8RdmIT z=`lW*oCa6bRX483-GrWSlX{ZtWhdpP^|V0p#8SQx^hS{!CRXeMu^MQC#%Yqqrr`wm z=oxNP!4{_~Ri@>dzKQD-pie$Cr2i8iy!#rH}UHgn3wmdPYZyi6(yi$>yn;wfbV=f9n zghFjFzYK&cgc4n_h%Q=!F2PT>L|qw`vNB79Ih1{;lpouu6{FpK?R-r#Z0iGU1P7IYnsQi;YVlfEROPfamc{(elx%YGMi~H_sljgEgzk2-SgpbwgR-=XHn$h zpv7nY9Kc6U#g59lVu_Yy3wlf>w84@sIA zR00SI4I6S^A%Ij>gfKSfG1m;hrm|YWg{oI8xr)Trz&7kO>LKt-DtnQ^!keG znw}Z)R@fgsE%(m0tuOc9kCAOV=OjrvD$KSloscH_C)Cfh`;j8M zwI=NEj)WiMZ4VUmog;`53Gp;DpPK`=j^Q?>*r9IgZh-asR$-YZwbgi*_L&otbx3-cORzA8O}-=~IT^ zS*!sdOxM&de&qNJKlvC|KEuyKhD|?A)m&g*T5D$whGAm!;r)-dnkce75Q`c3NZlQM zLhNP7U^OJaZvotw1VOk**4`m&eJ(s!5i{Xnw6$x2czH!L(s!rn{S>Pww7$y@pY xfzd)LEgTglIwp@T5R?{HOG4MBcy+~=sWZ2_(4}i3l@uU&qm!F|Cn)j2`~hZEuUG&8 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/access_requests.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/access_requests.py new file mode 100644 index 0000000..e70eb27 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/access_requests.py @@ -0,0 +1,35 @@ +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + AccessRequestMixin, + CreateMixin, + DeleteMixin, + ListMixin, + ObjectDeleteMixin, +) + +__all__ = [ + "GroupAccessRequest", + "GroupAccessRequestManager", + "ProjectAccessRequest", + "ProjectAccessRequestManager", +] + + +class GroupAccessRequest(AccessRequestMixin, ObjectDeleteMixin, RESTObject): + pass + + +class GroupAccessRequestManager(ListMixin, CreateMixin, DeleteMixin, RESTManager): + _path = "/groups/{group_id}/access_requests" + _obj_cls = GroupAccessRequest + _from_parent_attrs = {"group_id": "id"} + + +class ProjectAccessRequest(AccessRequestMixin, ObjectDeleteMixin, RESTObject): + pass + + +class ProjectAccessRequestManager(ListMixin, CreateMixin, DeleteMixin, RESTManager): + _path = "/projects/{project_id}/access_requests" + _obj_cls = ProjectAccessRequest + _from_parent_attrs = {"project_id": "id"} diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/appearance.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/appearance.py new file mode 100644 index 0000000..f86bf79 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/appearance.py @@ -0,0 +1,63 @@ +from typing import Any, cast, Dict, Optional, Union + +from gitlab import exceptions as exc +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import GetWithoutIdMixin, SaveMixin, UpdateMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "ApplicationAppearance", + "ApplicationAppearanceManager", +] + + +class ApplicationAppearance(SaveMixin, RESTObject): + _id_attr = None + + +class ApplicationAppearanceManager(GetWithoutIdMixin, UpdateMixin, RESTManager): + _path = "/application/appearance" + _obj_cls = ApplicationAppearance + _update_attrs = RequiredOptional( + optional=( + "title", + "description", + "logo", + "header_logo", + "favicon", + "new_project_guidelines", + "header_message", + "footer_message", + "message_background_color", + "message_font_color", + "email_header_and_footer_enabled", + ), + ) + + @exc.on_http_error(exc.GitlabUpdateError) + def update( + self, + id: Optional[Union[str, int]] = None, + new_data: Optional[Dict[str, Any]] = None, + **kwargs: Any, + ) -> Dict[str, Any]: + """Update an object on the server. + + Args: + id: ID of the object to update (can be None if not required) + new_data: the update data for the object + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + The new object data (*not* a RESTObject) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabUpdateError: If the server cannot perform the request + """ + new_data = new_data or {} + data = new_data.copy() + return super().update(id, data, **kwargs) + + def get(self, **kwargs: Any) -> ApplicationAppearance: + return cast(ApplicationAppearance, super().get(**kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/applications.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/applications.py new file mode 100644 index 0000000..921bd0e --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/applications.py @@ -0,0 +1,21 @@ +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CreateMixin, DeleteMixin, ListMixin, ObjectDeleteMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "Application", + "ApplicationManager", +] + + +class Application(ObjectDeleteMixin, RESTObject): + _url = "/applications" + _repr_attr = "name" + + +class ApplicationManager(ListMixin, CreateMixin, DeleteMixin, RESTManager): + _path = "/applications" + _obj_cls = Application + _create_attrs = RequiredOptional( + required=("name", "redirect_uri", "scopes"), optional=("confidential",) + ) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/artifacts.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/artifacts.py new file mode 100644 index 0000000..4643ad3 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/artifacts.py @@ -0,0 +1,147 @@ +""" +GitLab API: +https://docs.gitlab.com/ee/api/job_artifacts.html +""" + +from typing import Any, Callable, Iterator, Optional, TYPE_CHECKING, Union + +import requests + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab import utils +from gitlab.base import RESTManager, RESTObject + +__all__ = ["ProjectArtifact", "ProjectArtifactManager"] + + +class ProjectArtifact(RESTObject): + """Dummy object to manage custom actions on artifacts""" + + _id_attr = "ref_name" + + +class ProjectArtifactManager(RESTManager): + _obj_cls = ProjectArtifact + _path = "/projects/{project_id}/jobs/artifacts" + _from_parent_attrs = {"project_id": "id"} + + @exc.on_http_error(exc.GitlabDeleteError) + def delete(self, **kwargs: Any) -> None: + """Delete the project's artifacts on the server. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabDeleteError: If the server cannot perform the request + """ + path = self._compute_path("/projects/{project_id}/artifacts") + + if TYPE_CHECKING: + assert path is not None + self.gitlab.http_delete(path, **kwargs) + + @cli.register_custom_action( + cls_names="ProjectArtifactManager", + required=("ref_name", "job"), + optional=("job_token",), + ) + @exc.on_http_error(exc.GitlabGetError) + def download( + self, + ref_name: str, + job: str, + streamed: bool = False, + action: Optional[Callable[[bytes], None]] = None, + chunk_size: int = 1024, + *, + iterator: bool = False, + **kwargs: Any, + ) -> Optional[Union[bytes, Iterator[Any]]]: + """Get the job artifacts archive from a specific tag or branch. + + Args: + ref_name: Branch or tag name in repository. HEAD or SHA references + are not supported. + job: The name of the job. + job_token: Job token for multi-project pipeline triggers. + streamed: If True the data will be processed by chunks of + `chunk_size` and each chunk is passed to `action` for + treatment + iterator: If True directly return the underlying response + iterator + action: Callable responsible of dealing with chunk of + data + chunk_size: Size of each chunk + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the artifacts could not be retrieved + + Returns: + The artifacts if `streamed` is False, None otherwise. + """ + path = f"{self.path}/{ref_name}/download" + result = self.gitlab.http_get( + path, job=job, streamed=streamed, raw=True, **kwargs + ) + if TYPE_CHECKING: + assert isinstance(result, requests.Response) + return utils.response_content( + result, streamed, action, chunk_size, iterator=iterator + ) + + @cli.register_custom_action( + cls_names="ProjectArtifactManager", + required=("ref_name", "artifact_path", "job"), + ) + @exc.on_http_error(exc.GitlabGetError) + def raw( + self, + ref_name: str, + artifact_path: str, + job: str, + streamed: bool = False, + action: Optional[Callable[[bytes], None]] = None, + chunk_size: int = 1024, + *, + iterator: bool = False, + **kwargs: Any, + ) -> Optional[Union[bytes, Iterator[Any]]]: + """Download a single artifact file from a specific tag or branch from + within the job's artifacts archive. + + Args: + ref_name: Branch or tag name in repository. HEAD or SHA references + are not supported. + artifact_path: Path to a file inside the artifacts archive. + job: The name of the job. + streamed: If True the data will be processed by chunks of + `chunk_size` and each chunk is passed to `action` for + treatment + iterator: If True directly return the underlying response + iterator + action: Callable responsible of dealing with chunk of + data + chunk_size: Size of each chunk + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the artifacts could not be retrieved + + Returns: + The artifact if `streamed` is False, None otherwise. + """ + path = f"{self.path}/{ref_name}/raw/{artifact_path}" + result = self.gitlab.http_get( + path, streamed=streamed, raw=True, job=job, **kwargs + ) + if TYPE_CHECKING: + assert isinstance(result, requests.Response) + return utils.response_content( + result, streamed, action, chunk_size, iterator=iterator + ) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/audit_events.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/audit_events.py new file mode 100644 index 0000000..fb7c3ff --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/audit_events.py @@ -0,0 +1,73 @@ +""" +GitLab API: +https://docs.gitlab.com/ee/api/audit_events.html +""" + +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import RetrieveMixin + +__all__ = [ + "AuditEvent", + "AuditEventManager", + "GroupAuditEvent", + "GroupAuditEventManager", + "ProjectAuditEvent", + "ProjectAuditEventManager", + "ProjectAudit", + "ProjectAuditManager", +] + + +class AuditEvent(RESTObject): + _id_attr = "id" + + +class AuditEventManager(RetrieveMixin, RESTManager): + _path = "/audit_events" + _obj_cls = AuditEvent + _list_filters = ("created_after", "created_before", "entity_type", "entity_id") + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> AuditEvent: + return cast(AuditEvent, super().get(id=id, lazy=lazy, **kwargs)) + + +class GroupAuditEvent(RESTObject): + _id_attr = "id" + + +class GroupAuditEventManager(RetrieveMixin, RESTManager): + _path = "/groups/{group_id}/audit_events" + _obj_cls = GroupAuditEvent + _from_parent_attrs = {"group_id": "id"} + _list_filters = ("created_after", "created_before") + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> GroupAuditEvent: + return cast(GroupAuditEvent, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectAuditEvent(RESTObject): + _id_attr = "id" + + +class ProjectAuditEventManager(RetrieveMixin, RESTManager): + _path = "/projects/{project_id}/audit_events" + _obj_cls = ProjectAuditEvent + _from_parent_attrs = {"project_id": "id"} + _list_filters = ("created_after", "created_before") + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectAuditEvent: + return cast(ProjectAuditEvent, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectAudit(ProjectAuditEvent): + pass + + +class ProjectAuditManager(ProjectAuditEventManager): + pass diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/award_emojis.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/award_emojis.py new file mode 100644 index 0000000..cddf97f --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/award_emojis.py @@ -0,0 +1,174 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import NoUpdateMixin, ObjectDeleteMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "GroupEpicAwardEmoji", + "GroupEpicAwardEmojiManager", + "GroupEpicNoteAwardEmoji", + "GroupEpicNoteAwardEmojiManager", + "ProjectIssueAwardEmoji", + "ProjectIssueAwardEmojiManager", + "ProjectIssueNoteAwardEmoji", + "ProjectIssueNoteAwardEmojiManager", + "ProjectMergeRequestAwardEmoji", + "ProjectMergeRequestAwardEmojiManager", + "ProjectMergeRequestNoteAwardEmoji", + "ProjectMergeRequestNoteAwardEmojiManager", + "ProjectSnippetAwardEmoji", + "ProjectSnippetAwardEmojiManager", + "ProjectSnippetNoteAwardEmoji", + "ProjectSnippetNoteAwardEmojiManager", +] + + +class GroupEpicAwardEmoji(ObjectDeleteMixin, RESTObject): + pass + + +class GroupEpicAwardEmojiManager(NoUpdateMixin, RESTManager): + _path = "/groups/{group_id}/epics/{epic_iid}/award_emoji" + _obj_cls = GroupEpicAwardEmoji + _from_parent_attrs = {"group_id": "group_id", "epic_iid": "iid"} + _create_attrs = RequiredOptional(required=("name",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> GroupEpicAwardEmoji: + return cast(GroupEpicAwardEmoji, super().get(id=id, lazy=lazy, **kwargs)) + + +class GroupEpicNoteAwardEmoji(ObjectDeleteMixin, RESTObject): + pass + + +class GroupEpicNoteAwardEmojiManager(NoUpdateMixin, RESTManager): + _path = "/groups/{group_id}/epics/{epic_iid}/notes/{note_id}/award_emoji" + _obj_cls = GroupEpicNoteAwardEmoji + _from_parent_attrs = { + "group_id": "group_id", + "epic_iid": "epic_iid", + "note_id": "id", + } + _create_attrs = RequiredOptional(required=("name",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> GroupEpicNoteAwardEmoji: + return cast(GroupEpicNoteAwardEmoji, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectIssueAwardEmoji(ObjectDeleteMixin, RESTObject): + pass + + +class ProjectIssueAwardEmojiManager(NoUpdateMixin, RESTManager): + _path = "/projects/{project_id}/issues/{issue_iid}/award_emoji" + _obj_cls = ProjectIssueAwardEmoji + _from_parent_attrs = {"project_id": "project_id", "issue_iid": "iid"} + _create_attrs = RequiredOptional(required=("name",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectIssueAwardEmoji: + return cast(ProjectIssueAwardEmoji, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectIssueNoteAwardEmoji(ObjectDeleteMixin, RESTObject): + pass + + +class ProjectIssueNoteAwardEmojiManager(NoUpdateMixin, RESTManager): + _path = "/projects/{project_id}/issues/{issue_iid}/notes/{note_id}/award_emoji" + _obj_cls = ProjectIssueNoteAwardEmoji + _from_parent_attrs = { + "project_id": "project_id", + "issue_iid": "issue_iid", + "note_id": "id", + } + _create_attrs = RequiredOptional(required=("name",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectIssueNoteAwardEmoji: + return cast(ProjectIssueNoteAwardEmoji, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectMergeRequestAwardEmoji(ObjectDeleteMixin, RESTObject): + pass + + +class ProjectMergeRequestAwardEmojiManager(NoUpdateMixin, RESTManager): + _path = "/projects/{project_id}/merge_requests/{mr_iid}/award_emoji" + _obj_cls = ProjectMergeRequestAwardEmoji + _from_parent_attrs = {"project_id": "project_id", "mr_iid": "iid"} + _create_attrs = RequiredOptional(required=("name",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectMergeRequestAwardEmoji: + return cast( + ProjectMergeRequestAwardEmoji, super().get(id=id, lazy=lazy, **kwargs) + ) + + +class ProjectMergeRequestNoteAwardEmoji(ObjectDeleteMixin, RESTObject): + pass + + +class ProjectMergeRequestNoteAwardEmojiManager(NoUpdateMixin, RESTManager): + _path = "/projects/{project_id}/merge_requests/{mr_iid}/notes/{note_id}/award_emoji" + _obj_cls = ProjectMergeRequestNoteAwardEmoji + _from_parent_attrs = { + "project_id": "project_id", + "mr_iid": "mr_iid", + "note_id": "id", + } + _create_attrs = RequiredOptional(required=("name",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectMergeRequestNoteAwardEmoji: + return cast( + ProjectMergeRequestNoteAwardEmoji, super().get(id=id, lazy=lazy, **kwargs) + ) + + +class ProjectSnippetAwardEmoji(ObjectDeleteMixin, RESTObject): + pass + + +class ProjectSnippetAwardEmojiManager(NoUpdateMixin, RESTManager): + _path = "/projects/{project_id}/snippets/{snippet_id}/award_emoji" + _obj_cls = ProjectSnippetAwardEmoji + _from_parent_attrs = {"project_id": "project_id", "snippet_id": "id"} + _create_attrs = RequiredOptional(required=("name",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectSnippetAwardEmoji: + return cast(ProjectSnippetAwardEmoji, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectSnippetNoteAwardEmoji(ObjectDeleteMixin, RESTObject): + pass + + +class ProjectSnippetNoteAwardEmojiManager(NoUpdateMixin, RESTManager): + _path = "/projects/{project_id}/snippets/{snippet_id}/notes/{note_id}/award_emoji" + _obj_cls = ProjectSnippetNoteAwardEmoji + _from_parent_attrs = { + "project_id": "project_id", + "snippet_id": "snippet_id", + "note_id": "id", + } + _create_attrs = RequiredOptional(required=("name",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectSnippetNoteAwardEmoji: + return cast( + ProjectSnippetNoteAwardEmoji, super().get(id=id, lazy=lazy, **kwargs) + ) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/badges.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/badges.py new file mode 100644 index 0000000..3df5d0b --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/badges.py @@ -0,0 +1,44 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import BadgeRenderMixin, CRUDMixin, ObjectDeleteMixin, SaveMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "GroupBadge", + "GroupBadgeManager", + "ProjectBadge", + "ProjectBadgeManager", +] + + +class GroupBadge(SaveMixin, ObjectDeleteMixin, RESTObject): + pass + + +class GroupBadgeManager(BadgeRenderMixin, CRUDMixin, RESTManager): + _path = "/groups/{group_id}/badges" + _obj_cls = GroupBadge + _from_parent_attrs = {"group_id": "id"} + _create_attrs = RequiredOptional(required=("link_url", "image_url")) + _update_attrs = RequiredOptional(optional=("link_url", "image_url")) + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> GroupBadge: + return cast(GroupBadge, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectBadge(SaveMixin, ObjectDeleteMixin, RESTObject): + pass + + +class ProjectBadgeManager(BadgeRenderMixin, CRUDMixin, RESTManager): + _path = "/projects/{project_id}/badges" + _obj_cls = ProjectBadge + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional(required=("link_url", "image_url")) + _update_attrs = RequiredOptional(optional=("link_url", "image_url")) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectBadge: + return cast(ProjectBadge, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/boards.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/boards.py new file mode 100644 index 0000000..c5243db --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/boards.py @@ -0,0 +1,84 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CRUDMixin, ObjectDeleteMixin, SaveMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "GroupBoardList", + "GroupBoardListManager", + "GroupBoard", + "GroupBoardManager", + "ProjectBoardList", + "ProjectBoardListManager", + "ProjectBoard", + "ProjectBoardManager", +] + + +class GroupBoardList(SaveMixin, ObjectDeleteMixin, RESTObject): + pass + + +class GroupBoardListManager(CRUDMixin, RESTManager): + _path = "/groups/{group_id}/boards/{board_id}/lists" + _obj_cls = GroupBoardList + _from_parent_attrs = {"group_id": "group_id", "board_id": "id"} + _create_attrs = RequiredOptional( + exclusive=("label_id", "assignee_id", "milestone_id") + ) + _update_attrs = RequiredOptional(required=("position",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> GroupBoardList: + return cast(GroupBoardList, super().get(id=id, lazy=lazy, **kwargs)) + + +class GroupBoard(SaveMixin, ObjectDeleteMixin, RESTObject): + lists: GroupBoardListManager + + +class GroupBoardManager(CRUDMixin, RESTManager): + _path = "/groups/{group_id}/boards" + _obj_cls = GroupBoard + _from_parent_attrs = {"group_id": "id"} + _create_attrs = RequiredOptional(required=("name",)) + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> GroupBoard: + return cast(GroupBoard, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectBoardList(SaveMixin, ObjectDeleteMixin, RESTObject): + pass + + +class ProjectBoardListManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/boards/{board_id}/lists" + _obj_cls = ProjectBoardList + _from_parent_attrs = {"project_id": "project_id", "board_id": "id"} + _create_attrs = RequiredOptional( + exclusive=("label_id", "assignee_id", "milestone_id") + ) + _update_attrs = RequiredOptional(required=("position",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectBoardList: + return cast(ProjectBoardList, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectBoard(SaveMixin, ObjectDeleteMixin, RESTObject): + lists: ProjectBoardListManager + + +class ProjectBoardManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/boards" + _obj_cls = ProjectBoard + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional(required=("name",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectBoard: + return cast(ProjectBoard, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/branches.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/branches.py new file mode 100644 index 0000000..de7a046 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/branches.py @@ -0,0 +1,63 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CRUDMixin, + NoUpdateMixin, + ObjectDeleteMixin, + SaveMixin, + UpdateMethod, +) +from gitlab.types import RequiredOptional + +__all__ = [ + "ProjectBranch", + "ProjectBranchManager", + "ProjectProtectedBranch", + "ProjectProtectedBranchManager", +] + + +class ProjectBranch(ObjectDeleteMixin, RESTObject): + _id_attr = "name" + + +class ProjectBranchManager(NoUpdateMixin, RESTManager): + _path = "/projects/{project_id}/repository/branches" + _obj_cls = ProjectBranch + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional(required=("branch", "ref")) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectBranch: + return cast(ProjectBranch, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectProtectedBranch(SaveMixin, ObjectDeleteMixin, RESTObject): + _id_attr = "name" + + +class ProjectProtectedBranchManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/protected_branches" + _obj_cls = ProjectProtectedBranch + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("name",), + optional=( + "push_access_level", + "merge_access_level", + "unprotect_access_level", + "allow_force_push", + "allowed_to_push", + "allowed_to_merge", + "allowed_to_unprotect", + "code_owner_approval_required", + ), + ) + _update_method = UpdateMethod.PATCH + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectProtectedBranch: + return cast(ProjectProtectedBranch, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/broadcast_messages.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/broadcast_messages.py new file mode 100644 index 0000000..e3bda68 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/broadcast_messages.py @@ -0,0 +1,40 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CRUDMixin, ObjectDeleteMixin, SaveMixin +from gitlab.types import ArrayAttribute, RequiredOptional + +__all__ = [ + "BroadcastMessage", + "BroadcastMessageManager", +] + + +class BroadcastMessage(SaveMixin, ObjectDeleteMixin, RESTObject): + pass + + +class BroadcastMessageManager(CRUDMixin, RESTManager): + _path = "/broadcast_messages" + _obj_cls = BroadcastMessage + + _create_attrs = RequiredOptional( + required=("message",), + optional=("starts_at", "ends_at", "color", "font", "target_access_levels"), + ) + _update_attrs = RequiredOptional( + optional=( + "message", + "starts_at", + "ends_at", + "color", + "font", + "target_access_levels", + ) + ) + _types = {"target_access_levels": ArrayAttribute} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> BroadcastMessage: + return cast(BroadcastMessage, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/bulk_imports.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/bulk_imports.py new file mode 100644 index 0000000..e8ef74f --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/bulk_imports.py @@ -0,0 +1,54 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CreateMixin, ListMixin, RefreshMixin, RetrieveMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "BulkImport", + "BulkImportManager", + "BulkImportAllEntity", + "BulkImportAllEntityManager", + "BulkImportEntity", + "BulkImportEntityManager", +] + + +class BulkImport(RefreshMixin, RESTObject): + entities: "BulkImportEntityManager" + + +class BulkImportManager(CreateMixin, RetrieveMixin, RESTManager): + _path = "/bulk_imports" + _obj_cls = BulkImport + _create_attrs = RequiredOptional(required=("configuration", "entities")) + _list_filters = ("sort", "status") + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> BulkImport: + return cast(BulkImport, super().get(id=id, lazy=lazy, **kwargs)) + + +class BulkImportEntity(RefreshMixin, RESTObject): + pass + + +class BulkImportEntityManager(RetrieveMixin, RESTManager): + _path = "/bulk_imports/{bulk_import_id}/entities" + _obj_cls = BulkImportEntity + _from_parent_attrs = {"bulk_import_id": "id"} + _list_filters = ("sort", "status") + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> BulkImportEntity: + return cast(BulkImportEntity, super().get(id=id, lazy=lazy, **kwargs)) + + +class BulkImportAllEntity(RESTObject): + pass + + +class BulkImportAllEntityManager(ListMixin, RESTManager): + _path = "/bulk_imports/entities" + _obj_cls = BulkImportAllEntity + _list_filters = ("sort", "status") diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/ci_lint.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/ci_lint.py new file mode 100644 index 0000000..e00da15 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/ci_lint.py @@ -0,0 +1,78 @@ +""" +GitLab API: +https://docs.gitlab.com/ee/api/lint.html +""" + +from typing import Any, cast + +from gitlab.base import RESTManager, RESTObject +from gitlab.cli import register_custom_action +from gitlab.exceptions import GitlabCiLintError +from gitlab.mixins import CreateMixin, GetWithoutIdMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "CiLint", + "CiLintManager", + "ProjectCiLint", + "ProjectCiLintManager", +] + + +class CiLint(RESTObject): + _id_attr = None + + +class CiLintManager(CreateMixin, RESTManager): + _path = "/ci/lint" + _obj_cls = CiLint + _create_attrs = RequiredOptional( + required=("content",), optional=("include_merged_yaml", "include_jobs") + ) + + @register_custom_action( + cls_names="CiLintManager", + required=("content",), + optional=("include_merged_yaml", "include_jobs"), + ) + def validate(self, *args: Any, **kwargs: Any) -> None: + """Raise an error if the CI Lint results are not valid. + + This is a custom python-gitlab method to wrap lint endpoints.""" + result = self.create(*args, **kwargs) + + if result.status != "valid": + message = ",\n".join(result.errors) + raise GitlabCiLintError(message) + + +class ProjectCiLint(RESTObject): + _id_attr = None + + +class ProjectCiLintManager(GetWithoutIdMixin, CreateMixin, RESTManager): + _path = "/projects/{project_id}/ci/lint" + _obj_cls = ProjectCiLint + _from_parent_attrs = {"project_id": "id"} + _optional_get_attrs = ("dry_run", "include_jobs", "ref") + _create_attrs = RequiredOptional( + required=("content",), optional=("dry_run", "include_jobs", "ref") + ) + + def get(self, **kwargs: Any) -> ProjectCiLint: + return cast(ProjectCiLint, super().get(**kwargs)) + + @register_custom_action( + cls_names="ProjectCiLintManager", + required=("content",), + optional=("dry_run", "include_jobs", "ref"), + ) + def validate(self, *args: Any, **kwargs: Any) -> None: + """Raise an error if the Project CI Lint results are not valid. + + This is a custom python-gitlab method to wrap lint endpoints.""" + result = self.create(*args, **kwargs) + + if not result.valid: + message = ",\n".join(result.errors) + raise GitlabCiLintError(message) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/cluster_agents.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/cluster_agents.py new file mode 100644 index 0000000..bac3eb2 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/cluster_agents.py @@ -0,0 +1,26 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import NoUpdateMixin, ObjectDeleteMixin, SaveMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "ProjectClusterAgent", + "ProjectClusterAgentManager", +] + + +class ProjectClusterAgent(SaveMixin, ObjectDeleteMixin, RESTObject): + _repr_attr = "name" + + +class ProjectClusterAgentManager(NoUpdateMixin, RESTManager): + _path = "/projects/{project_id}/cluster_agents" + _obj_cls = ProjectClusterAgent + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional(required=("name",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectClusterAgent: + return cast(ProjectClusterAgent, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/clusters.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/clusters.py new file mode 100644 index 0000000..d51a97a --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/clusters.py @@ -0,0 +1,115 @@ +from typing import Any, cast, Dict, Optional, Union + +from gitlab import exceptions as exc +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CreateMixin, CRUDMixin, ObjectDeleteMixin, SaveMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "GroupCluster", + "GroupClusterManager", + "ProjectCluster", + "ProjectClusterManager", +] + + +class GroupCluster(SaveMixin, ObjectDeleteMixin, RESTObject): + pass + + +class GroupClusterManager(CRUDMixin, RESTManager): + _path = "/groups/{group_id}/clusters" + _obj_cls = GroupCluster + _from_parent_attrs = {"group_id": "id"} + _create_attrs = RequiredOptional( + required=("name", "platform_kubernetes_attributes"), + optional=("domain", "enabled", "managed", "environment_scope"), + ) + _update_attrs = RequiredOptional( + optional=( + "name", + "domain", + "management_project_id", + "platform_kubernetes_attributes", + "environment_scope", + ), + ) + + @exc.on_http_error(exc.GitlabStopError) + def create( + self, data: Optional[Dict[str, Any]] = None, **kwargs: Any + ) -> GroupCluster: + """Create a new object. + + Args: + data: Parameters to send to the server to create the + resource + **kwargs: Extra options to send to the server (e.g. sudo or + 'ref_name', 'stage', 'name', 'all') + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the server cannot perform the request + + Returns: + A new instance of the manage object class build with + the data sent by the server + """ + path = f"{self.path}/user" + return cast(GroupCluster, CreateMixin.create(self, data, path=path, **kwargs)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> GroupCluster: + return cast(GroupCluster, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectCluster(SaveMixin, ObjectDeleteMixin, RESTObject): + pass + + +class ProjectClusterManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/clusters" + _obj_cls = ProjectCluster + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("name", "platform_kubernetes_attributes"), + optional=("domain", "enabled", "managed", "environment_scope"), + ) + _update_attrs = RequiredOptional( + optional=( + "name", + "domain", + "management_project_id", + "platform_kubernetes_attributes", + "environment_scope", + ), + ) + + @exc.on_http_error(exc.GitlabStopError) + def create( + self, data: Optional[Dict[str, Any]] = None, **kwargs: Any + ) -> ProjectCluster: + """Create a new object. + + Args: + data: Parameters to send to the server to create the + resource + **kwargs: Extra options to send to the server (e.g. sudo or + 'ref_name', 'stage', 'name', 'all') + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the server cannot perform the request + + Returns: + A new instance of the manage object class build with + the data sent by the server + """ + path = f"{self.path}/user" + return cast(ProjectCluster, CreateMixin.create(self, data, path=path, **kwargs)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectCluster: + return cast(ProjectCluster, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/commits.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/commits.py new file mode 100644 index 0000000..0cb0a12 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/commits.py @@ -0,0 +1,253 @@ +from typing import Any, cast, Dict, List, Optional, TYPE_CHECKING, Union + +import requests + +import gitlab +from gitlab import cli +from gitlab import exceptions as exc +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CreateMixin, ListMixin, RefreshMixin, RetrieveMixin +from gitlab.types import RequiredOptional + +from .discussions import ProjectCommitDiscussionManager # noqa: F401 + +__all__ = [ + "ProjectCommit", + "ProjectCommitManager", + "ProjectCommitComment", + "ProjectCommitCommentManager", + "ProjectCommitStatus", + "ProjectCommitStatusManager", +] + + +class ProjectCommit(RESTObject): + _repr_attr = "title" + + comments: "ProjectCommitCommentManager" + discussions: ProjectCommitDiscussionManager + statuses: "ProjectCommitStatusManager" + + @cli.register_custom_action(cls_names="ProjectCommit") + @exc.on_http_error(exc.GitlabGetError) + def diff(self, **kwargs: Any) -> Union[gitlab.GitlabList, List[Dict[str, Any]]]: + """Generate the commit diff. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the diff could not be retrieved + + Returns: + The changes done in this commit + """ + path = f"{self.manager.path}/{self.encoded_id}/diff" + return self.manager.gitlab.http_list(path, **kwargs) + + @cli.register_custom_action(cls_names="ProjectCommit", required=("branch",)) + @exc.on_http_error(exc.GitlabCherryPickError) + def cherry_pick(self, branch: str, **kwargs: Any) -> None: + """Cherry-pick a commit into a branch. + + Args: + branch: Name of target branch + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCherryPickError: If the cherry-pick could not be performed + """ + path = f"{self.manager.path}/{self.encoded_id}/cherry_pick" + post_data = {"branch": branch} + self.manager.gitlab.http_post(path, post_data=post_data, **kwargs) + + @cli.register_custom_action(cls_names="ProjectCommit", optional=("type",)) + @exc.on_http_error(exc.GitlabGetError) + def refs( + self, type: str = "all", **kwargs: Any + ) -> Union[gitlab.GitlabList, List[Dict[str, Any]]]: + """List the references the commit is pushed to. + + Args: + type: The scope of references ('branch', 'tag' or 'all') + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the references could not be retrieved + + Returns: + The references the commit is pushed to. + """ + path = f"{self.manager.path}/{self.encoded_id}/refs" + query_data = {"type": type} + return self.manager.gitlab.http_list(path, query_data=query_data, **kwargs) + + @cli.register_custom_action(cls_names="ProjectCommit") + @exc.on_http_error(exc.GitlabGetError) + def merge_requests( + self, **kwargs: Any + ) -> Union[gitlab.GitlabList, List[Dict[str, Any]]]: + """List the merge requests related to the commit. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the references could not be retrieved + + Returns: + The merge requests related to the commit. + """ + path = f"{self.manager.path}/{self.encoded_id}/merge_requests" + return self.manager.gitlab.http_list(path, **kwargs) + + @cli.register_custom_action(cls_names="ProjectCommit", required=("branch",)) + @exc.on_http_error(exc.GitlabRevertError) + def revert( + self, branch: str, **kwargs: Any + ) -> Union[Dict[str, Any], requests.Response]: + """Revert a commit on a given branch. + + Args: + branch: Name of target branch + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabRevertError: If the revert could not be performed + + Returns: + The new commit data (*not* a RESTObject) + """ + path = f"{self.manager.path}/{self.encoded_id}/revert" + post_data = {"branch": branch} + return self.manager.gitlab.http_post(path, post_data=post_data, **kwargs) + + @cli.register_custom_action(cls_names="ProjectCommit") + @exc.on_http_error(exc.GitlabGetError) + def sequence(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """Get the sequence number of the commit. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the sequence number could not be retrieved + + Returns: + The commit's sequence number + """ + path = f"{self.manager.path}/{self.encoded_id}/sequence" + return self.manager.gitlab.http_get(path, **kwargs) + + @cli.register_custom_action(cls_names="ProjectCommit") + @exc.on_http_error(exc.GitlabGetError) + def signature(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """Get the signature of the commit. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the signature could not be retrieved + + Returns: + The commit's signature data + """ + path = f"{self.manager.path}/{self.encoded_id}/signature" + return self.manager.gitlab.http_get(path, **kwargs) + + +class ProjectCommitManager(RetrieveMixin, CreateMixin, RESTManager): + _path = "/projects/{project_id}/repository/commits" + _obj_cls = ProjectCommit + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("branch", "commit_message", "actions"), + optional=("author_email", "author_name"), + ) + _list_filters = ( + "all", + "ref_name", + "since", + "until", + "path", + "with_stats", + "first_parent", + "order", + "trailers", + ) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectCommit: + return cast(ProjectCommit, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectCommitComment(RESTObject): + _id_attr = None + _repr_attr = "note" + + +class ProjectCommitCommentManager(ListMixin, CreateMixin, RESTManager): + _path = "/projects/{project_id}/repository/commits/{commit_id}/comments" + _obj_cls = ProjectCommitComment + _from_parent_attrs = {"project_id": "project_id", "commit_id": "id"} + _create_attrs = RequiredOptional( + required=("note",), optional=("path", "line", "line_type") + ) + + +class ProjectCommitStatus(RefreshMixin, RESTObject): + pass + + +class ProjectCommitStatusManager(ListMixin, CreateMixin, RESTManager): + _path = "/projects/{project_id}/repository/commits/{commit_id}/statuses" + _obj_cls = ProjectCommitStatus + _from_parent_attrs = {"project_id": "project_id", "commit_id": "id"} + _create_attrs = RequiredOptional( + required=("state",), + optional=("description", "name", "context", "ref", "target_url", "coverage"), + ) + + @exc.on_http_error(exc.GitlabCreateError) + def create( + self, data: Optional[Dict[str, Any]] = None, **kwargs: Any + ) -> ProjectCommitStatus: + """Create a new object. + + Args: + data: Parameters to send to the server to create the + resource + **kwargs: Extra options to send to the server (e.g. sudo or + 'ref_name', 'stage', 'name', 'all') + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the server cannot perform the request + + Returns: + A new instance of the manage object class build with + the data sent by the server + """ + # project_id and commit_id are in the data dict when using the CLI, but + # they are missing when using only the API + # See #511 + base_path = "/projects/{project_id}/statuses/{commit_id}" + path: Optional[str] + if data is not None and "project_id" in data and "commit_id" in data: + path = base_path.format(**data) + else: + path = self._compute_path(base_path) + if TYPE_CHECKING: + assert path is not None + return cast( + ProjectCommitStatus, CreateMixin.create(self, data, path=path, **kwargs) + ) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/container_registry.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/container_registry.py new file mode 100644 index 0000000..7615405 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/container_registry.py @@ -0,0 +1,96 @@ +from typing import Any, cast, TYPE_CHECKING, Union + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + DeleteMixin, + GetMixin, + ListMixin, + ObjectDeleteMixin, + RetrieveMixin, +) + +__all__ = [ + "GroupRegistryRepositoryManager", + "ProjectRegistryRepository", + "ProjectRegistryRepositoryManager", + "ProjectRegistryTag", + "ProjectRegistryTagManager", + "RegistryRepository", + "RegistryRepositoryManager", +] + + +class ProjectRegistryRepository(ObjectDeleteMixin, RESTObject): + tags: "ProjectRegistryTagManager" + + +class ProjectRegistryRepositoryManager(DeleteMixin, ListMixin, RESTManager): + _path = "/projects/{project_id}/registry/repositories" + _obj_cls = ProjectRegistryRepository + _from_parent_attrs = {"project_id": "id"} + + +class ProjectRegistryTag(ObjectDeleteMixin, RESTObject): + _id_attr = "name" + + +class ProjectRegistryTagManager(DeleteMixin, RetrieveMixin, RESTManager): + _obj_cls = ProjectRegistryTag + _from_parent_attrs = {"project_id": "project_id", "repository_id": "id"} + _path = "/projects/{project_id}/registry/repositories/{repository_id}/tags" + + @cli.register_custom_action( + cls_names="ProjectRegistryTagManager", + required=("name_regex_delete",), + optional=("keep_n", "name_regex_keep", "older_than"), + ) + @exc.on_http_error(exc.GitlabDeleteError) + def delete_in_bulk(self, name_regex_delete: str, **kwargs: Any) -> None: + """Delete Tag in bulk + + Args: + name_regex_delete: The regex of the name to delete. To delete all + tags specify .*. + keep_n: The amount of latest tags of given name to keep. + name_regex_keep: The regex of the name to keep. This value + overrides any matches from name_regex. + older_than: Tags to delete that are older than the given time, + written in human readable form 1h, 1d, 1month. + **kwargs: Extra options to send to the server (e.g. sudo) + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabDeleteError: If the server cannot perform the request + """ + valid_attrs = ["keep_n", "name_regex_keep", "older_than"] + data = {"name_regex_delete": name_regex_delete} + data.update({k: v for k, v in kwargs.items() if k in valid_attrs}) + if TYPE_CHECKING: + assert self.path is not None + self.gitlab.http_delete(self.path, query_data=data, **kwargs) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectRegistryTag: + return cast(ProjectRegistryTag, super().get(id=id, lazy=lazy, **kwargs)) + + +class GroupRegistryRepositoryManager(ListMixin, RESTManager): + _path = "/groups/{group_id}/registry/repositories" + _obj_cls = ProjectRegistryRepository + _from_parent_attrs = {"group_id": "id"} + + +class RegistryRepository(RESTObject): + _repr_attr = "path" + + +class RegistryRepositoryManager(GetMixin, RESTManager): + _path = "/registry/repositories" + _obj_cls = RegistryRepository + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> RegistryRepository: + return cast(RegistryRepository, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/custom_attributes.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/custom_attributes.py new file mode 100644 index 0000000..d061614 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/custom_attributes.py @@ -0,0 +1,58 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import DeleteMixin, ObjectDeleteMixin, RetrieveMixin, SetMixin + +__all__ = [ + "GroupCustomAttribute", + "GroupCustomAttributeManager", + "ProjectCustomAttribute", + "ProjectCustomAttributeManager", + "UserCustomAttribute", + "UserCustomAttributeManager", +] + + +class GroupCustomAttribute(ObjectDeleteMixin, RESTObject): + _id_attr = "key" + + +class GroupCustomAttributeManager(RetrieveMixin, SetMixin, DeleteMixin, RESTManager): + _path = "/groups/{group_id}/custom_attributes" + _obj_cls = GroupCustomAttribute + _from_parent_attrs = {"group_id": "id"} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> GroupCustomAttribute: + return cast(GroupCustomAttribute, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectCustomAttribute(ObjectDeleteMixin, RESTObject): + _id_attr = "key" + + +class ProjectCustomAttributeManager(RetrieveMixin, SetMixin, DeleteMixin, RESTManager): + _path = "/projects/{project_id}/custom_attributes" + _obj_cls = ProjectCustomAttribute + _from_parent_attrs = {"project_id": "id"} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectCustomAttribute: + return cast(ProjectCustomAttribute, super().get(id=id, lazy=lazy, **kwargs)) + + +class UserCustomAttribute(ObjectDeleteMixin, RESTObject): + _id_attr = "key" + + +class UserCustomAttributeManager(RetrieveMixin, SetMixin, DeleteMixin, RESTManager): + _path = "/users/{user_id}/custom_attributes" + _obj_cls = UserCustomAttribute + _from_parent_attrs = {"user_id": "id"} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> UserCustomAttribute: + return cast(UserCustomAttribute, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/deploy_keys.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/deploy_keys.py new file mode 100644 index 0000000..40468ef --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/deploy_keys.py @@ -0,0 +1,66 @@ +from typing import Any, cast, Dict, Union + +import requests + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CRUDMixin, ListMixin, ObjectDeleteMixin, SaveMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "DeployKey", + "DeployKeyManager", + "ProjectKey", + "ProjectKeyManager", +] + + +class DeployKey(RESTObject): + pass + + +class DeployKeyManager(ListMixin, RESTManager): + _path = "/deploy_keys" + _obj_cls = DeployKey + + +class ProjectKey(SaveMixin, ObjectDeleteMixin, RESTObject): + pass + + +class ProjectKeyManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/deploy_keys" + _obj_cls = ProjectKey + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional(required=("title", "key"), optional=("can_push",)) + _update_attrs = RequiredOptional(optional=("title", "can_push")) + + @cli.register_custom_action( + cls_names="ProjectKeyManager", + required=("key_id",), + requires_id=False, + help="Enable a deploy key for the project", + ) + @exc.on_http_error(exc.GitlabProjectDeployKeyError) + def enable( + self, key_id: int, **kwargs: Any + ) -> Union[Dict[str, Any], requests.Response]: + """Enable a deploy key for a project. + + Args: + key_id: The ID of the key to enable + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabProjectDeployKeyError: If the key could not be enabled + + Returns: + A dict of the result. + """ + path = f"{self.path}/{key_id}/enable" + return self.gitlab.http_post(path, **kwargs) + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> ProjectKey: + return cast(ProjectKey, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/deploy_tokens.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/deploy_tokens.py new file mode 100644 index 0000000..e35bf22 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/deploy_tokens.py @@ -0,0 +1,84 @@ +from typing import Any, cast, Union + +from gitlab import types +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CreateMixin, + DeleteMixin, + ListMixin, + ObjectDeleteMixin, + RetrieveMixin, +) +from gitlab.types import RequiredOptional + +__all__ = [ + "DeployToken", + "DeployTokenManager", + "GroupDeployToken", + "GroupDeployTokenManager", + "ProjectDeployToken", + "ProjectDeployTokenManager", +] + + +class DeployToken(ObjectDeleteMixin, RESTObject): + pass + + +class DeployTokenManager(ListMixin, RESTManager): + _path = "/deploy_tokens" + _obj_cls = DeployToken + + +class GroupDeployToken(ObjectDeleteMixin, RESTObject): + pass + + +class GroupDeployTokenManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager): + _path = "/groups/{group_id}/deploy_tokens" + _from_parent_attrs = {"group_id": "id"} + _obj_cls = GroupDeployToken + _create_attrs = RequiredOptional( + required=( + "name", + "scopes", + ), + optional=( + "expires_at", + "username", + ), + ) + _list_filters = ("scopes",) + _types = {"scopes": types.ArrayAttribute} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> GroupDeployToken: + return cast(GroupDeployToken, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectDeployToken(ObjectDeleteMixin, RESTObject): + pass + + +class ProjectDeployTokenManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager): + _path = "/projects/{project_id}/deploy_tokens" + _from_parent_attrs = {"project_id": "id"} + _obj_cls = ProjectDeployToken + _create_attrs = RequiredOptional( + required=( + "name", + "scopes", + ), + optional=( + "expires_at", + "username", + ), + ) + _list_filters = ("scopes",) + _types = {"scopes": types.ArrayAttribute} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectDeployToken: + return cast(ProjectDeployToken, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/deployments.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/deployments.py new file mode 100644 index 0000000..c906fa2 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/deployments.py @@ -0,0 +1,89 @@ +""" +GitLab API: +https://docs.gitlab.com/ee/api/deployments.html +""" + +from typing import Any, cast, Dict, Optional, TYPE_CHECKING, Union + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CreateMixin, RetrieveMixin, SaveMixin, UpdateMixin +from gitlab.types import RequiredOptional + +from .merge_requests import ProjectDeploymentMergeRequestManager # noqa: F401 + +__all__ = [ + "ProjectDeployment", + "ProjectDeploymentManager", +] + + +class ProjectDeployment(SaveMixin, RESTObject): + mergerequests: ProjectDeploymentMergeRequestManager + + @cli.register_custom_action( + cls_names="ProjectDeployment", + required=("status",), + optional=("comment", "represented_as"), + ) + @exc.on_http_error(exc.GitlabDeploymentApprovalError) + def approval( + self, + status: str, + comment: Optional[str] = None, + represented_as: Optional[str] = None, + **kwargs: Any, + ) -> Dict[str, Any]: + """Approve or reject a blocked deployment. + + Args: + status: Either "approved" or "rejected" + comment: A comment to go with the approval + represented_as: The name of the User/Group/Role to use for the + approval, when the user belongs to multiple + approval rules. + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabMRApprovalError: If the approval failed + + Returns: + A dict containing the result. + + https://docs.gitlab.com/ee/api/deployments.html#approve-or-reject-a-blocked-deployment + """ + path = f"{self.manager.path}/{self.encoded_id}/approval" + data = {"status": status} + if comment is not None: + data["comment"] = comment + if represented_as is not None: + data["represented_as"] = represented_as + + server_data = self.manager.gitlab.http_post(path, post_data=data, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + return server_data + + +class ProjectDeploymentManager(RetrieveMixin, CreateMixin, UpdateMixin, RESTManager): + _path = "/projects/{project_id}/deployments" + _obj_cls = ProjectDeployment + _from_parent_attrs = {"project_id": "id"} + _list_filters = ( + "order_by", + "sort", + "updated_after", + "updated_before", + "environment", + "status", + ) + _create_attrs = RequiredOptional( + required=("sha", "ref", "tag", "status", "environment") + ) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectDeployment: + return cast(ProjectDeployment, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/discussions.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/discussions.py new file mode 100644 index 0000000..9cfce72 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/discussions.py @@ -0,0 +1,94 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CreateMixin, RetrieveMixin, SaveMixin, UpdateMixin +from gitlab.types import RequiredOptional + +from .notes import ( # noqa: F401 + ProjectCommitDiscussionNoteManager, + ProjectIssueDiscussionNoteManager, + ProjectMergeRequestDiscussionNoteManager, + ProjectSnippetDiscussionNoteManager, +) + +__all__ = [ + "ProjectCommitDiscussion", + "ProjectCommitDiscussionManager", + "ProjectIssueDiscussion", + "ProjectIssueDiscussionManager", + "ProjectMergeRequestDiscussion", + "ProjectMergeRequestDiscussionManager", + "ProjectSnippetDiscussion", + "ProjectSnippetDiscussionManager", +] + + +class ProjectCommitDiscussion(RESTObject): + notes: ProjectCommitDiscussionNoteManager + + +class ProjectCommitDiscussionManager(RetrieveMixin, CreateMixin, RESTManager): + _path = "/projects/{project_id}/repository/commits/{commit_id}/discussions" + _obj_cls = ProjectCommitDiscussion + _from_parent_attrs = {"project_id": "project_id", "commit_id": "id"} + _create_attrs = RequiredOptional(required=("body",), optional=("created_at",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectCommitDiscussion: + return cast(ProjectCommitDiscussion, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectIssueDiscussion(RESTObject): + notes: ProjectIssueDiscussionNoteManager + + +class ProjectIssueDiscussionManager(RetrieveMixin, CreateMixin, RESTManager): + _path = "/projects/{project_id}/issues/{issue_iid}/discussions" + _obj_cls = ProjectIssueDiscussion + _from_parent_attrs = {"project_id": "project_id", "issue_iid": "iid"} + _create_attrs = RequiredOptional(required=("body",), optional=("created_at",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectIssueDiscussion: + return cast(ProjectIssueDiscussion, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectMergeRequestDiscussion(SaveMixin, RESTObject): + notes: ProjectMergeRequestDiscussionNoteManager + + +class ProjectMergeRequestDiscussionManager( + RetrieveMixin, CreateMixin, UpdateMixin, RESTManager +): + _path = "/projects/{project_id}/merge_requests/{mr_iid}/discussions" + _obj_cls = ProjectMergeRequestDiscussion + _from_parent_attrs = {"project_id": "project_id", "mr_iid": "iid"} + _create_attrs = RequiredOptional( + required=("body",), optional=("created_at", "position") + ) + _update_attrs = RequiredOptional(required=("resolved",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectMergeRequestDiscussion: + return cast( + ProjectMergeRequestDiscussion, super().get(id=id, lazy=lazy, **kwargs) + ) + + +class ProjectSnippetDiscussion(RESTObject): + notes: ProjectSnippetDiscussionNoteManager + + +class ProjectSnippetDiscussionManager(RetrieveMixin, CreateMixin, RESTManager): + _path = "/projects/{project_id}/snippets/{snippet_id}/discussions" + _obj_cls = ProjectSnippetDiscussion + _from_parent_attrs = {"project_id": "project_id", "snippet_id": "id"} + _create_attrs = RequiredOptional(required=("body",), optional=("created_at",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectSnippetDiscussion: + return cast(ProjectSnippetDiscussion, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/draft_notes.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/draft_notes.py new file mode 100644 index 0000000..8d7f689 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/draft_notes.py @@ -0,0 +1,43 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CRUDMixin, ObjectDeleteMixin, SaveMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "ProjectMergeRequestDraftNote", + "ProjectMergeRequestDraftNoteManager", +] + + +class ProjectMergeRequestDraftNote(ObjectDeleteMixin, SaveMixin, RESTObject): + def publish(self, **kwargs: Any) -> None: + path = f"{self.manager.path}/{self.encoded_id}/publish" + self.manager.gitlab.http_put(path, **kwargs) + + +class ProjectMergeRequestDraftNoteManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/merge_requests/{mr_iid}/draft_notes" + _obj_cls = ProjectMergeRequestDraftNote + _from_parent_attrs = {"project_id": "project_id", "mr_iid": "iid"} + _create_attrs = RequiredOptional( + required=("note",), + optional=( + "commit_id", + "in_reply_to_discussion_id", + "position", + "resolve_discussion", + ), + ) + _update_attrs = RequiredOptional(optional=("position",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectMergeRequestDraftNote: + return cast( + ProjectMergeRequestDraftNote, super().get(id=id, lazy=lazy, **kwargs) + ) + + def bulk_publish(self, **kwargs: Any) -> None: + path = f"{self.path}/bulk_publish" + self.gitlab.http_post(path, **kwargs) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/environments.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/environments.py new file mode 100644 index 0000000..d9322fe --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/environments.py @@ -0,0 +1,87 @@ +from typing import Any, cast, Dict, Union + +import requests + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CreateMixin, + DeleteMixin, + ObjectDeleteMixin, + RetrieveMixin, + SaveMixin, + UpdateMixin, +) +from gitlab.types import ArrayAttribute, RequiredOptional + +__all__ = [ + "ProjectEnvironment", + "ProjectEnvironmentManager", + "ProjectProtectedEnvironment", + "ProjectProtectedEnvironmentManager", +] + + +class ProjectEnvironment(SaveMixin, ObjectDeleteMixin, RESTObject): + @cli.register_custom_action(cls_names="ProjectEnvironment") + @exc.on_http_error(exc.GitlabStopError) + def stop(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """Stop the environment. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabStopError: If the operation failed + + Returns: + A dict of the result. + """ + path = f"{self.manager.path}/{self.encoded_id}/stop" + return self.manager.gitlab.http_post(path, **kwargs) + + +class ProjectEnvironmentManager( + RetrieveMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager +): + _path = "/projects/{project_id}/environments" + _obj_cls = ProjectEnvironment + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional(required=("name",), optional=("external_url",)) + _update_attrs = RequiredOptional(optional=("name", "external_url")) + _list_filters = ("name", "search", "states") + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectEnvironment: + return cast(ProjectEnvironment, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectProtectedEnvironment(ObjectDeleteMixin, RESTObject): + _id_attr = "name" + _repr_attr = "name" + + +class ProjectProtectedEnvironmentManager( + RetrieveMixin, CreateMixin, DeleteMixin, RESTManager +): + _path = "/projects/{project_id}/protected_environments" + _obj_cls = ProjectProtectedEnvironment + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=( + "name", + "deploy_access_levels", + ), + optional=("required_approval_count", "approval_rules"), + ) + _types = {"deploy_access_levels": ArrayAttribute, "approval_rules": ArrayAttribute} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectProtectedEnvironment: + return cast( + ProjectProtectedEnvironment, super().get(id=id, lazy=lazy, **kwargs) + ) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/epics.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/epics.py new file mode 100644 index 0000000..f10ea19 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/epics.py @@ -0,0 +1,121 @@ +from typing import Any, cast, Dict, Optional, TYPE_CHECKING, Union + +from gitlab import exceptions as exc +from gitlab import types +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CreateMixin, + CRUDMixin, + DeleteMixin, + ListMixin, + ObjectDeleteMixin, + SaveMixin, + UpdateMixin, +) +from gitlab.types import RequiredOptional + +from .events import GroupEpicResourceLabelEventManager # noqa: F401 +from .notes import GroupEpicNoteManager # noqa: F401 + +__all__ = [ + "GroupEpic", + "GroupEpicManager", + "GroupEpicIssue", + "GroupEpicIssueManager", +] + + +class GroupEpic(ObjectDeleteMixin, SaveMixin, RESTObject): + _id_attr = "iid" + + issues: "GroupEpicIssueManager" + resourcelabelevents: GroupEpicResourceLabelEventManager + notes: GroupEpicNoteManager + + +class GroupEpicManager(CRUDMixin, RESTManager): + _path = "/groups/{group_id}/epics" + _obj_cls = GroupEpic + _from_parent_attrs = {"group_id": "id"} + _list_filters = ("author_id", "labels", "order_by", "sort", "search") + _create_attrs = RequiredOptional( + required=("title",), + optional=("labels", "description", "start_date", "end_date"), + ) + _update_attrs = RequiredOptional( + optional=("title", "labels", "description", "start_date", "end_date"), + ) + _types = {"labels": types.CommaSeparatedListAttribute} + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> GroupEpic: + return cast(GroupEpic, super().get(id=id, lazy=lazy, **kwargs)) + + +class GroupEpicIssue(ObjectDeleteMixin, SaveMixin, RESTObject): + _id_attr = "epic_issue_id" + # Define type for 'manager' here So mypy won't complain about + # 'self.manager.update()' call in the 'save' method. + manager: "GroupEpicIssueManager" + + def save(self, **kwargs: Any) -> None: + """Save the changes made to the object to the server. + + The object is updated to match what the server returns. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raise: + GitlabAuthenticationError: If authentication is not correct + GitlabUpdateError: If the server cannot perform the request + """ + updated_data = self._get_updated_data() + # Nothing to update. Server fails if sent an empty dict. + if not updated_data: + return + + # call the manager + obj_id = self.encoded_id + self.manager.update(obj_id, updated_data, **kwargs) + + +class GroupEpicIssueManager( + ListMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager +): + _path = "/groups/{group_id}/epics/{epic_iid}/issues" + _obj_cls = GroupEpicIssue + _from_parent_attrs = {"group_id": "group_id", "epic_iid": "iid"} + _create_attrs = RequiredOptional(required=("issue_id",)) + _update_attrs = RequiredOptional(optional=("move_before_id", "move_after_id")) + + @exc.on_http_error(exc.GitlabCreateError) + def create( + self, data: Optional[Dict[str, Any]] = None, **kwargs: Any + ) -> GroupEpicIssue: + """Create a new object. + + Args: + data: Parameters to send to the server to create the + resource + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the server cannot perform the request + + Returns: + A new instance of the manage object class build with + the data sent by the server + """ + if TYPE_CHECKING: + assert data is not None + self._create_attrs.validate_attrs(data=data) + path = f"{self.path}/{data.pop('issue_id')}" + server_data = self.gitlab.http_post(path, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + # The epic_issue_id attribute doesn't exist when creating the resource, + # but is used everywhere elese. Let's create it to be consistent client + # side + server_data["epic_issue_id"] = server_data["id"] + return self._obj_cls(self, server_data) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/events.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/events.py new file mode 100644 index 0000000..9e6b62f --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/events.py @@ -0,0 +1,218 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ListMixin, RetrieveMixin + +__all__ = [ + "Event", + "EventManager", + "GroupEpicResourceLabelEvent", + "GroupEpicResourceLabelEventManager", + "ProjectEvent", + "ProjectEventManager", + "ProjectIssueResourceLabelEvent", + "ProjectIssueResourceLabelEventManager", + "ProjectIssueResourceMilestoneEvent", + "ProjectIssueResourceMilestoneEventManager", + "ProjectIssueResourceStateEvent", + "ProjectIssueResourceIterationEventManager", + "ProjectIssueResourceWeightEventManager", + "ProjectIssueResourceIterationEvent", + "ProjectIssueResourceWeightEvent", + "ProjectIssueResourceStateEventManager", + "ProjectMergeRequestResourceLabelEvent", + "ProjectMergeRequestResourceLabelEventManager", + "ProjectMergeRequestResourceMilestoneEvent", + "ProjectMergeRequestResourceMilestoneEventManager", + "ProjectMergeRequestResourceStateEvent", + "ProjectMergeRequestResourceStateEventManager", + "UserEvent", + "UserEventManager", +] + + +class Event(RESTObject): + _id_attr = None + _repr_attr = "target_title" + + +class EventManager(ListMixin, RESTManager): + _path = "/events" + _obj_cls = Event + _list_filters = ("action", "target_type", "before", "after", "sort", "scope") + + +class GroupEpicResourceLabelEvent(RESTObject): + pass + + +class GroupEpicResourceLabelEventManager(RetrieveMixin, RESTManager): + _path = "/groups/{group_id}/epics/{epic_id}/resource_label_events" + _obj_cls = GroupEpicResourceLabelEvent + _from_parent_attrs = {"group_id": "group_id", "epic_id": "id"} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> GroupEpicResourceLabelEvent: + return cast( + GroupEpicResourceLabelEvent, super().get(id=id, lazy=lazy, **kwargs) + ) + + +class ProjectEvent(Event): + pass + + +class ProjectEventManager(EventManager): + _path = "/projects/{project_id}/events" + _obj_cls = ProjectEvent + _from_parent_attrs = {"project_id": "id"} + + +class ProjectIssueResourceLabelEvent(RESTObject): + pass + + +class ProjectIssueResourceLabelEventManager(RetrieveMixin, RESTManager): + _path = "/projects/{project_id}/issues/{issue_iid}/resource_label_events" + _obj_cls = ProjectIssueResourceLabelEvent + _from_parent_attrs = {"project_id": "project_id", "issue_iid": "iid"} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectIssueResourceLabelEvent: + return cast( + ProjectIssueResourceLabelEvent, super().get(id=id, lazy=lazy, **kwargs) + ) + + +class ProjectIssueResourceMilestoneEvent(RESTObject): + pass + + +class ProjectIssueResourceMilestoneEventManager(RetrieveMixin, RESTManager): + _path = "/projects/{project_id}/issues/{issue_iid}/resource_milestone_events" + _obj_cls = ProjectIssueResourceMilestoneEvent + _from_parent_attrs = {"project_id": "project_id", "issue_iid": "iid"} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectIssueResourceMilestoneEvent: + return cast( + ProjectIssueResourceMilestoneEvent, super().get(id=id, lazy=lazy, **kwargs) + ) + + +class ProjectIssueResourceStateEvent(RESTObject): + pass + + +class ProjectIssueResourceStateEventManager(RetrieveMixin, RESTManager): + _path = "/projects/{project_id}/issues/{issue_iid}/resource_state_events" + _obj_cls = ProjectIssueResourceStateEvent + _from_parent_attrs = {"project_id": "project_id", "issue_iid": "iid"} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectIssueResourceStateEvent: + return cast( + ProjectIssueResourceStateEvent, super().get(id=id, lazy=lazy, **kwargs) + ) + + +class ProjectIssueResourceIterationEvent(RESTObject): + pass + + +class ProjectIssueResourceIterationEventManager(RetrieveMixin, RESTManager): + _path = "/projects/{project_id}/issues/{issue_iid}/resource_iteration_events" + _obj_cls = ProjectIssueResourceIterationEvent + _from_parent_attrs = {"project_id": "project_id", "issue_iid": "iid"} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectIssueResourceIterationEvent: + return cast( + ProjectIssueResourceIterationEvent, super().get(id=id, lazy=lazy, **kwargs) + ) + + +class ProjectIssueResourceWeightEvent(RESTObject): + pass + + +class ProjectIssueResourceWeightEventManager(RetrieveMixin, RESTManager): + _path = "/projects/{project_id}/issues/{issue_iid}/resource_weight_events" + _obj_cls = ProjectIssueResourceWeightEvent + _from_parent_attrs = {"project_id": "project_id", "issue_iid": "iid"} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectIssueResourceWeightEvent: + return cast( + ProjectIssueResourceWeightEvent, super().get(id=id, lazy=lazy, **kwargs) + ) + + +class ProjectMergeRequestResourceLabelEvent(RESTObject): + pass + + +class ProjectMergeRequestResourceLabelEventManager(RetrieveMixin, RESTManager): + _path = "/projects/{project_id}/merge_requests/{mr_iid}/resource_label_events" + _obj_cls = ProjectMergeRequestResourceLabelEvent + _from_parent_attrs = {"project_id": "project_id", "mr_iid": "iid"} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectMergeRequestResourceLabelEvent: + return cast( + ProjectMergeRequestResourceLabelEvent, + super().get(id=id, lazy=lazy, **kwargs), + ) + + +class ProjectMergeRequestResourceMilestoneEvent(RESTObject): + pass + + +class ProjectMergeRequestResourceMilestoneEventManager(RetrieveMixin, RESTManager): + _path = "/projects/{project_id}/merge_requests/{mr_iid}/resource_milestone_events" + _obj_cls = ProjectMergeRequestResourceMilestoneEvent + _from_parent_attrs = {"project_id": "project_id", "mr_iid": "iid"} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectMergeRequestResourceMilestoneEvent: + return cast( + ProjectMergeRequestResourceMilestoneEvent, + super().get(id=id, lazy=lazy, **kwargs), + ) + + +class ProjectMergeRequestResourceStateEvent(RESTObject): + pass + + +class ProjectMergeRequestResourceStateEventManager(RetrieveMixin, RESTManager): + _path = "/projects/{project_id}/merge_requests/{mr_iid}/resource_state_events" + _obj_cls = ProjectMergeRequestResourceStateEvent + _from_parent_attrs = {"project_id": "project_id", "mr_iid": "iid"} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectMergeRequestResourceStateEvent: + return cast( + ProjectMergeRequestResourceStateEvent, + super().get(id=id, lazy=lazy, **kwargs), + ) + + +class UserEvent(Event): + pass + + +class UserEventManager(EventManager): + _path = "/users/{user_id}/events" + _obj_cls = UserEvent + _from_parent_attrs = {"user_id": "id"} diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/export_import.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/export_import.py new file mode 100644 index 0000000..5e07661 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/export_import.py @@ -0,0 +1,69 @@ +from typing import Any, cast + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CreateMixin, DownloadMixin, GetWithoutIdMixin, RefreshMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "GroupExport", + "GroupExportManager", + "GroupImport", + "GroupImportManager", + "ProjectExport", + "ProjectExportManager", + "ProjectImport", + "ProjectImportManager", +] + + +class GroupExport(DownloadMixin, RESTObject): + _id_attr = None + + +class GroupExportManager(GetWithoutIdMixin, CreateMixin, RESTManager): + _path = "/groups/{group_id}/export" + _obj_cls = GroupExport + _from_parent_attrs = {"group_id": "id"} + + def get(self, **kwargs: Any) -> GroupExport: + return cast(GroupExport, super().get(**kwargs)) + + +class GroupImport(RESTObject): + _id_attr = None + + +class GroupImportManager(GetWithoutIdMixin, RESTManager): + _path = "/groups/{group_id}/import" + _obj_cls = GroupImport + _from_parent_attrs = {"group_id": "id"} + + def get(self, **kwargs: Any) -> GroupImport: + return cast(GroupImport, super().get(**kwargs)) + + +class ProjectExport(DownloadMixin, RefreshMixin, RESTObject): + _id_attr = None + + +class ProjectExportManager(GetWithoutIdMixin, CreateMixin, RESTManager): + _path = "/projects/{project_id}/export" + _obj_cls = ProjectExport + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional(optional=("description",)) + + def get(self, **kwargs: Any) -> ProjectExport: + return cast(ProjectExport, super().get(**kwargs)) + + +class ProjectImport(RefreshMixin, RESTObject): + _id_attr = None + + +class ProjectImportManager(GetWithoutIdMixin, RESTManager): + _path = "/projects/{project_id}/import" + _obj_cls = ProjectImport + _from_parent_attrs = {"project_id": "id"} + + def get(self, **kwargs: Any) -> ProjectImport: + return cast(ProjectImport, super().get(**kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/features.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/features.py new file mode 100644 index 0000000..f68c10e --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/features.py @@ -0,0 +1,69 @@ +""" +GitLab API: +https://docs.gitlab.com/ee/api/features.html +""" + +from typing import Any, Optional, TYPE_CHECKING, Union + +from gitlab import exceptions as exc +from gitlab import utils +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import DeleteMixin, ListMixin, ObjectDeleteMixin + +__all__ = [ + "Feature", + "FeatureManager", +] + + +class Feature(ObjectDeleteMixin, RESTObject): + _id_attr = "name" + + +class FeatureManager(ListMixin, DeleteMixin, RESTManager): + _path = "/features/" + _obj_cls = Feature + + @exc.on_http_error(exc.GitlabSetError) + def set( + self, + name: str, + value: Union[bool, int], + feature_group: Optional[str] = None, + user: Optional[str] = None, + group: Optional[str] = None, + project: Optional[str] = None, + **kwargs: Any, + ) -> Feature: + """Create or update the object. + + Args: + name: The value to set for the object + value: The value to set for the object + feature_group: A feature group name + user: A GitLab username + group: A GitLab group + project: A GitLab project in form group/project + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabSetError: If an error occurred + + Returns: + The created/updated attribute + """ + name = utils.EncodedId(name) + path = f"{self.path}/{name}" + data = { + "value": value, + "feature_group": feature_group, + "user": user, + "group": group, + "project": project, + } + data = utils.remove_none_from_dict(data) + server_data = self.gitlab.http_post(path, post_data=data, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + return self._obj_cls(self, server_data) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/files.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/files.py new file mode 100644 index 0000000..b880bc9 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/files.py @@ -0,0 +1,355 @@ +import base64 +from typing import ( + Any, + Callable, + Dict, + Iterator, + List, + Optional, + Tuple, + TYPE_CHECKING, + Union, +) + +import requests + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab import utils +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CreateMixin, + DeleteMixin, + ObjectDeleteMixin, + SaveMixin, + UpdateMixin, +) +from gitlab.types import RequiredOptional + +__all__ = [ + "ProjectFile", + "ProjectFileManager", +] + + +class ProjectFile(SaveMixin, ObjectDeleteMixin, RESTObject): + _id_attr = "file_path" + _repr_attr = "file_path" + branch: str + commit_message: str + file_path: str + manager: "ProjectFileManager" + content: str # since the `decode()` method uses `self.content` + + def decode(self) -> bytes: + """Returns the decoded content of the file. + + Returns: + The decoded content. + """ + return base64.b64decode(self.content) + + # NOTE(jlvillal): Signature doesn't match SaveMixin.save() so ignore + # type error + def save( # type: ignore + self, branch: str, commit_message: str, **kwargs: Any + ) -> None: + """Save the changes made to the file to the server. + + The object is updated to match what the server returns. + + Args: + branch: Branch in which the file will be updated + commit_message: Message to send with the commit + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabUpdateError: If the server cannot perform the request + """ + self.branch = branch + self.commit_message = commit_message + self.file_path = utils.EncodedId(self.file_path) + super().save(**kwargs) + + @exc.on_http_error(exc.GitlabDeleteError) + # NOTE(jlvillal): Signature doesn't match DeleteMixin.delete() so ignore + # type error + def delete( # type: ignore + self, branch: str, commit_message: str, **kwargs: Any + ) -> None: + """Delete the file from the server. + + Args: + branch: Branch from which the file will be removed + commit_message: Commit message for the deletion + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabDeleteError: If the server cannot perform the request + """ + file_path = self.encoded_id + if TYPE_CHECKING: + assert isinstance(file_path, str) + self.manager.delete(file_path, branch, commit_message, **kwargs) + + +class ProjectFileManager(CreateMixin, UpdateMixin, DeleteMixin, RESTManager): + _path = "/projects/{project_id}/repository/files" + _obj_cls = ProjectFile + _from_parent_attrs = {"project_id": "id"} + _optional_get_attrs: Tuple[str, ...] = () + _create_attrs = RequiredOptional( + required=("file_path", "branch", "content", "commit_message"), + optional=( + "encoding", + "author_email", + "author_name", + "execute_filemode", + "start_branch", + ), + ) + _update_attrs = RequiredOptional( + required=("file_path", "branch", "content", "commit_message"), + optional=( + "encoding", + "author_email", + "author_name", + "execute_filemode", + "start_branch", + "last_commit_id", + ), + ) + + @cli.register_custom_action( + cls_names="ProjectFileManager", required=("file_path", "ref") + ) + @exc.on_http_error(exc.GitlabGetError) + def get(self, file_path: str, ref: str, **kwargs: Any) -> ProjectFile: + """Retrieve a single file. + + Args: + file_path: Path of the file to retrieve + ref: Name of the branch, tag or commit + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the file could not be retrieved + + Returns: + The generated RESTObject + """ + if TYPE_CHECKING: + assert file_path is not None + file_path = utils.EncodedId(file_path) + path = f"{self.path}/{file_path}" + server_data = self.gitlab.http_get(path, ref=ref, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + return self._obj_cls(self, server_data) + + @exc.on_http_error(exc.GitlabHeadError) + def head( + self, file_path: str, ref: str, **kwargs: Any + ) -> "requests.structures.CaseInsensitiveDict[Any]": + """Retrieve just metadata for a single file. + + Args: + file_path: Path of the file to retrieve + ref: Name of the branch, tag or commit + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the file could not be retrieved + + Returns: + The response headers as a dictionary + """ + if TYPE_CHECKING: + assert file_path is not None + file_path = utils.EncodedId(file_path) + path = f"{self.path}/{file_path}" + return self.gitlab.http_head(path, ref=ref, **kwargs) + + @cli.register_custom_action( + cls_names="ProjectFileManager", + required=("file_path", "branch", "content", "commit_message"), + optional=( + "encoding", + "author_email", + "author_name", + "execute_filemode", + "start_branch", + ), + ) + @exc.on_http_error(exc.GitlabCreateError) + def create( + self, data: Optional[Dict[str, Any]] = None, **kwargs: Any + ) -> ProjectFile: + """Create a new object. + + Args: + data: parameters to send to the server to create the + resource + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + a new instance of the managed object class built with + the data sent by the server + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the server cannot perform the request + """ + + if TYPE_CHECKING: + assert data is not None + self._create_attrs.validate_attrs(data=data) + new_data = data.copy() + file_path = utils.EncodedId(new_data.pop("file_path")) + path = f"{self.path}/{file_path}" + server_data = self.gitlab.http_post(path, post_data=new_data, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + return self._obj_cls(self, server_data) + + @exc.on_http_error(exc.GitlabUpdateError) + # NOTE(jlvillal): Signature doesn't match UpdateMixin.update() so ignore + # type error + def update( # type: ignore + self, file_path: str, new_data: Optional[Dict[str, Any]] = None, **kwargs: Any + ) -> Dict[str, Any]: + """Update an object on the server. + + Args: + id: ID of the object to update (can be None if not required) + new_data: the update data for the object + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + The new object data (*not* a RESTObject) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabUpdateError: If the server cannot perform the request + """ + new_data = new_data or {} + data = new_data.copy() + file_path = utils.EncodedId(file_path) + data["file_path"] = file_path + path = f"{self.path}/{file_path}" + self._update_attrs.validate_attrs(data=data) + result = self.gitlab.http_put(path, post_data=data, **kwargs) + if TYPE_CHECKING: + assert isinstance(result, dict) + return result + + @cli.register_custom_action( + cls_names="ProjectFileManager", + required=("file_path", "branch", "commit_message"), + ) + @exc.on_http_error(exc.GitlabDeleteError) + # NOTE(jlvillal): Signature doesn't match DeleteMixin.delete() so ignore + # type error + def delete( # type: ignore + self, file_path: str, branch: str, commit_message: str, **kwargs: Any + ) -> None: + """Delete a file on the server. + + Args: + file_path: Path of the file to remove + branch: Branch from which the file will be removed + commit_message: Commit message for the deletion + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabDeleteError: If the server cannot perform the request + """ + file_path = utils.EncodedId(file_path) + path = f"{self.path}/{file_path}" + data = {"branch": branch, "commit_message": commit_message} + self.gitlab.http_delete(path, query_data=data, **kwargs) + + @cli.register_custom_action( + cls_names="ProjectFileManager", + required=("file_path",), + ) + @exc.on_http_error(exc.GitlabGetError) + def raw( + self, + file_path: str, + ref: Optional[str] = None, + streamed: bool = False, + action: Optional[Callable[..., Any]] = None, + chunk_size: int = 1024, + *, + iterator: bool = False, + **kwargs: Any, + ) -> Optional[Union[bytes, Iterator[Any]]]: + """Return the content of a file for a commit. + + Args: + file_path: Path of the file to return + ref: ID of the commit + streamed: If True the data will be processed by chunks of + `chunk_size` and each chunk is passed to `action` for + treatment + action: Callable responsible for dealing with each chunk of + data + chunk_size: Size of each chunk + iterator: If True directly return the underlying response + iterator + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the file could not be retrieved + + Returns: + The file content + """ + file_path = utils.EncodedId(file_path) + path = f"{self.path}/{file_path}/raw" + if ref is not None: + query_data = {"ref": ref} + else: + query_data = None + result = self.gitlab.http_get( + path, query_data=query_data, streamed=streamed, raw=True, **kwargs + ) + if TYPE_CHECKING: + assert isinstance(result, requests.Response) + return utils.response_content( + result, streamed, action, chunk_size, iterator=iterator + ) + + @cli.register_custom_action( + cls_names="ProjectFileManager", required=("file_path", "ref") + ) + @exc.on_http_error(exc.GitlabListError) + def blame(self, file_path: str, ref: str, **kwargs: Any) -> List[Dict[str, Any]]: + """Return the content of a file for a commit. + + Args: + file_path: Path of the file to retrieve + ref: Name of the branch, tag or commit + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabListError: If the server failed to perform the request + + Returns: + A list of commits/lines matching the file + """ + file_path = utils.EncodedId(file_path) + path = f"{self.path}/{file_path}/blame" + query_data = {"ref": ref} + result = self.gitlab.http_list(path, query_data, **kwargs) + if TYPE_CHECKING: + assert isinstance(result, list) + return result diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/geo_nodes.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/geo_nodes.py new file mode 100644 index 0000000..771027e --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/geo_nodes.py @@ -0,0 +1,110 @@ +from typing import Any, cast, Dict, List, TYPE_CHECKING, Union + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + DeleteMixin, + ObjectDeleteMixin, + RetrieveMixin, + SaveMixin, + UpdateMixin, +) +from gitlab.types import RequiredOptional + +__all__ = [ + "GeoNode", + "GeoNodeManager", +] + + +class GeoNode(SaveMixin, ObjectDeleteMixin, RESTObject): + @cli.register_custom_action(cls_names="GeoNode") + @exc.on_http_error(exc.GitlabRepairError) + def repair(self, **kwargs: Any) -> None: + """Repair the OAuth authentication of the geo node. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabRepairError: If the server failed to perform the request + """ + path = f"/geo_nodes/{self.encoded_id}/repair" + server_data = self.manager.gitlab.http_post(path, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + self._update_attrs(server_data) + + @cli.register_custom_action(cls_names="GeoNode") + @exc.on_http_error(exc.GitlabGetError) + def status(self, **kwargs: Any) -> Dict[str, Any]: + """Get the status of the geo node. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server failed to perform the request + + Returns: + The status of the geo node + """ + path = f"/geo_nodes/{self.encoded_id}/status" + result = self.manager.gitlab.http_get(path, **kwargs) + if TYPE_CHECKING: + assert isinstance(result, dict) + return result + + +class GeoNodeManager(RetrieveMixin, UpdateMixin, DeleteMixin, RESTManager): + _path = "/geo_nodes" + _obj_cls = GeoNode + _update_attrs = RequiredOptional( + optional=("enabled", "url", "files_max_capacity", "repos_max_capacity"), + ) + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> GeoNode: + return cast(GeoNode, super().get(id=id, lazy=lazy, **kwargs)) + + @cli.register_custom_action(cls_names="GeoNodeManager") + @exc.on_http_error(exc.GitlabGetError) + def status(self, **kwargs: Any) -> List[Dict[str, Any]]: + """Get the status of all the geo nodes. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server failed to perform the request + + Returns: + The status of all the geo nodes + """ + result = self.gitlab.http_list("/geo_nodes/status", **kwargs) + if TYPE_CHECKING: + assert isinstance(result, list) + return result + + @cli.register_custom_action(cls_names="GeoNodeManager") + @exc.on_http_error(exc.GitlabGetError) + def current_failures(self, **kwargs: Any) -> List[Dict[str, Any]]: + """Get the list of failures on the current geo node. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server failed to perform the request + + Returns: + The list of failures + """ + result = self.gitlab.http_list("/geo_nodes/current/failures", **kwargs) + if TYPE_CHECKING: + assert isinstance(result, list) + return result diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/group_access_tokens.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/group_access_tokens.py new file mode 100644 index 0000000..fd9bfba --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/group_access_tokens.py @@ -0,0 +1,38 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CreateMixin, + DeleteMixin, + ObjectDeleteMixin, + ObjectRotateMixin, + RetrieveMixin, + RotateMixin, +) +from gitlab.types import ArrayAttribute, RequiredOptional + +__all__ = [ + "GroupAccessToken", + "GroupAccessTokenManager", +] + + +class GroupAccessToken(ObjectDeleteMixin, ObjectRotateMixin, RESTObject): + pass + + +class GroupAccessTokenManager( + CreateMixin, DeleteMixin, RetrieveMixin, RotateMixin, RESTManager +): + _path = "/groups/{group_id}/access_tokens" + _obj_cls = GroupAccessToken + _from_parent_attrs = {"group_id": "id"} + _create_attrs = RequiredOptional( + required=("name", "scopes"), optional=("access_level", "expires_at") + ) + _types = {"scopes": ArrayAttribute} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> GroupAccessToken: + return cast(GroupAccessToken, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/groups.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/groups.py new file mode 100644 index 0000000..154c17f --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/groups.py @@ -0,0 +1,450 @@ +from typing import Any, BinaryIO, cast, Dict, List, Optional, Type, TYPE_CHECKING, Union + +import requests + +import gitlab +from gitlab import cli +from gitlab import exceptions as exc +from gitlab import types +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CreateMixin, + CRUDMixin, + DeleteMixin, + ListMixin, + NoUpdateMixin, + ObjectDeleteMixin, + SaveMixin, +) +from gitlab.types import RequiredOptional + +from .access_requests import GroupAccessRequestManager # noqa: F401 +from .audit_events import GroupAuditEventManager # noqa: F401 +from .badges import GroupBadgeManager # noqa: F401 +from .boards import GroupBoardManager # noqa: F401 +from .clusters import GroupClusterManager # noqa: F401 +from .container_registry import GroupRegistryRepositoryManager # noqa: F401 +from .custom_attributes import GroupCustomAttributeManager # noqa: F401 +from .deploy_tokens import GroupDeployTokenManager # noqa: F401 +from .epics import GroupEpicManager # noqa: F401 +from .export_import import GroupExportManager, GroupImportManager # noqa: F401 +from .group_access_tokens import GroupAccessTokenManager # noqa: F401 +from .hooks import GroupHookManager # noqa: F401 +from .invitations import GroupInvitationManager # noqa: F401 +from .issues import GroupIssueManager # noqa: F401 +from .iterations import GroupIterationManager # noqa: F401 +from .labels import GroupLabelManager # noqa: F401 +from .members import ( # noqa: F401 + GroupBillableMemberManager, + GroupMemberAllManager, + GroupMemberManager, +) +from .merge_requests import GroupMergeRequestManager # noqa: F401 +from .milestones import GroupMilestoneManager # noqa: F401 +from .notification_settings import GroupNotificationSettingsManager # noqa: F401 +from .packages import GroupPackageManager # noqa: F401 +from .projects import GroupProjectManager, SharedProjectManager # noqa: F401 +from .push_rules import GroupPushRulesManager +from .runners import GroupRunnerManager # noqa: F401 +from .service_accounts import GroupServiceAccountManager # noqa: F401 +from .statistics import GroupIssuesStatisticsManager # noqa: F401 +from .variables import GroupVariableManager # noqa: F401 +from .wikis import GroupWikiManager # noqa: F401 + +__all__ = [ + "Group", + "GroupManager", + "GroupDescendantGroup", + "GroupDescendantGroupManager", + "GroupLDAPGroupLink", + "GroupLDAPGroupLinkManager", + "GroupSubgroup", + "GroupSubgroupManager", + "GroupSAMLGroupLink", + "GroupSAMLGroupLinkManager", +] + + +class Group(SaveMixin, ObjectDeleteMixin, RESTObject): + _repr_attr = "name" + + access_tokens: GroupAccessTokenManager + accessrequests: GroupAccessRequestManager + audit_events: GroupAuditEventManager + badges: GroupBadgeManager + billable_members: GroupBillableMemberManager + boards: GroupBoardManager + clusters: GroupClusterManager + customattributes: GroupCustomAttributeManager + deploytokens: GroupDeployTokenManager + descendant_groups: "GroupDescendantGroupManager" + epics: GroupEpicManager + exports: GroupExportManager + hooks: GroupHookManager + imports: GroupImportManager + invitations: GroupInvitationManager + issues: GroupIssueManager + issues_statistics: GroupIssuesStatisticsManager + iterations: GroupIterationManager + labels: GroupLabelManager + ldap_group_links: "GroupLDAPGroupLinkManager" + members: GroupMemberManager + members_all: GroupMemberAllManager + mergerequests: GroupMergeRequestManager + milestones: GroupMilestoneManager + notificationsettings: GroupNotificationSettingsManager + packages: GroupPackageManager + projects: GroupProjectManager + shared_projects: SharedProjectManager + pushrules: GroupPushRulesManager + registry_repositories: GroupRegistryRepositoryManager + runners: GroupRunnerManager + subgroups: "GroupSubgroupManager" + variables: GroupVariableManager + wikis: GroupWikiManager + saml_group_links: "GroupSAMLGroupLinkManager" + service_accounts: "GroupServiceAccountManager" + + @cli.register_custom_action(cls_names="Group", required=("project_id",)) + @exc.on_http_error(exc.GitlabTransferProjectError) + def transfer_project(self, project_id: int, **kwargs: Any) -> None: + """Transfer a project to this group. + + Args: + to_project_id: ID of the project to transfer + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabTransferProjectError: If the project could not be transferred + """ + path = f"/groups/{self.encoded_id}/projects/{project_id}" + self.manager.gitlab.http_post(path, **kwargs) + + @cli.register_custom_action(cls_names="Group", required=(), optional=("group_id",)) + @exc.on_http_error(exc.GitlabGroupTransferError) + def transfer(self, group_id: Optional[int] = None, **kwargs: Any) -> None: + """Transfer the group to a new parent group or make it a top-level group. + + Requires GitLab ≥14.6. + + Args: + group_id: ID of the new parent group. When not specified, + the group to transfer is instead turned into a top-level group. + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGroupTransferError: If the group could not be transferred + """ + path = f"/groups/{self.encoded_id}/transfer" + post_data = {} + if group_id is not None: + post_data["group_id"] = group_id + self.manager.gitlab.http_post(path, post_data=post_data, **kwargs) + + @cli.register_custom_action(cls_names="Group", required=("scope", "search")) + @exc.on_http_error(exc.GitlabSearchError) + def search( + self, scope: str, search: str, **kwargs: Any + ) -> Union[gitlab.GitlabList, List[Dict[str, Any]]]: + """Search the group resources matching the provided string. + + Args: + scope: Scope of the search + search: Search string + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabSearchError: If the server failed to perform the request + + Returns: + A list of dicts describing the resources found. + """ + data = {"scope": scope, "search": search} + path = f"/groups/{self.encoded_id}/search" + return self.manager.gitlab.http_list(path, query_data=data, **kwargs) + + @cli.register_custom_action(cls_names="Group") + @exc.on_http_error(exc.GitlabCreateError) + def ldap_sync(self, **kwargs: Any) -> None: + """Sync LDAP groups. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the server cannot perform the request + """ + path = f"/groups/{self.encoded_id}/ldap_sync" + self.manager.gitlab.http_post(path, **kwargs) + + @cli.register_custom_action( + cls_names="Group", + required=("group_id", "group_access"), + optional=("expires_at",), + ) + @exc.on_http_error(exc.GitlabCreateError) + def share( + self, + group_id: int, + group_access: int, + expires_at: Optional[str] = None, + **kwargs: Any, + ) -> None: + """Share the group with a group. + + Args: + group_id: ID of the group. + group_access: Access level for the group. + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the server failed to perform the request + + Returns: + Group + """ + path = f"/groups/{self.encoded_id}/share" + data = { + "group_id": group_id, + "group_access": group_access, + "expires_at": expires_at, + } + server_data = self.manager.gitlab.http_post(path, post_data=data, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + self._update_attrs(server_data) + + @cli.register_custom_action(cls_names="Group", required=("group_id",)) + @exc.on_http_error(exc.GitlabDeleteError) + def unshare(self, group_id: int, **kwargs: Any) -> None: + """Delete a shared group link within a group. + + Args: + group_id: ID of the group. + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabDeleteError: If the server failed to perform the request + """ + path = f"/groups/{self.encoded_id}/share/{group_id}" + self.manager.gitlab.http_delete(path, **kwargs) + + @cli.register_custom_action(cls_names="Group") + @exc.on_http_error(exc.GitlabRestoreError) + def restore(self, **kwargs: Any) -> None: + """Restore a group marked for deletion.. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabRestoreError: If the server failed to perform the request + """ + path = f"/groups/{self.encoded_id}/restore" + self.manager.gitlab.http_post(path, **kwargs) + + +class GroupManager(CRUDMixin, RESTManager): + _path = "/groups" + _obj_cls = Group + _list_filters = ( + "skip_groups", + "all_available", + "search", + "order_by", + "sort", + "statistics", + "owned", + "with_custom_attributes", + "min_access_level", + "top_level_only", + ) + _create_attrs = RequiredOptional( + required=("name", "path"), + optional=( + "description", + "membership_lock", + "visibility", + "share_with_group_lock", + "require_two_factor_authentication", + "two_factor_grace_period", + "project_creation_level", + "auto_devops_enabled", + "subgroup_creation_level", + "emails_disabled", + "avatar", + "mentions_disabled", + "lfs_enabled", + "request_access_enabled", + "parent_id", + "default_branch_protection", + "shared_runners_minutes_limit", + "extra_shared_runners_minutes_limit", + ), + ) + _update_attrs = RequiredOptional( + optional=( + "name", + "path", + "description", + "membership_lock", + "share_with_group_lock", + "visibility", + "require_two_factor_authentication", + "two_factor_grace_period", + "project_creation_level", + "auto_devops_enabled", + "subgroup_creation_level", + "emails_disabled", + "avatar", + "mentions_disabled", + "lfs_enabled", + "request_access_enabled", + "default_branch_protection", + "file_template_project_id", + "shared_runners_minutes_limit", + "extra_shared_runners_minutes_limit", + "prevent_forking_outside_group", + "shared_runners_setting", + ), + ) + _types = {"avatar": types.ImageAttribute, "skip_groups": types.ArrayAttribute} + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> Group: + return cast(Group, super().get(id=id, lazy=lazy, **kwargs)) + + @exc.on_http_error(exc.GitlabImportError) + def import_group( + self, + file: BinaryIO, + path: str, + name: str, + parent_id: Optional[Union[int, str]] = None, + **kwargs: Any, + ) -> Union[Dict[str, Any], requests.Response]: + """Import a group from an archive file. + + Args: + file: Data or file object containing the group + path: The path for the new group to be imported. + name: The name for the new group. + parent_id: ID of a parent group that the group will + be imported into. + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabImportError: If the server failed to perform the request + + Returns: + A representation of the import status. + """ + files = {"file": ("file.tar.gz", file, "application/octet-stream")} + data: Dict[str, Any] = {"path": path, "name": name} + if parent_id is not None: + data["parent_id"] = parent_id + + return self.gitlab.http_post( + "/groups/import", post_data=data, files=files, **kwargs + ) + + +class GroupSubgroup(RESTObject): + pass + + +class GroupSubgroupManager(ListMixin, RESTManager): + _path = "/groups/{group_id}/subgroups" + _obj_cls: Union[Type["GroupDescendantGroup"], Type[GroupSubgroup]] = GroupSubgroup + _from_parent_attrs = {"group_id": "id"} + _list_filters = ( + "skip_groups", + "all_available", + "search", + "order_by", + "sort", + "statistics", + "owned", + "with_custom_attributes", + "min_access_level", + ) + _types = {"skip_groups": types.ArrayAttribute} + + +class GroupDescendantGroup(RESTObject): + pass + + +class GroupDescendantGroupManager(GroupSubgroupManager): + """ + This manager inherits from GroupSubgroupManager as descendant groups + share all attributes with subgroups, except the path and object class. + """ + + _path = "/groups/{group_id}/descendant_groups" + _obj_cls: Type[GroupDescendantGroup] = GroupDescendantGroup + + +class GroupLDAPGroupLink(RESTObject): + _repr_attr = "provider" + + def _get_link_attrs(self) -> Dict[str, str]: + # https://docs.gitlab.com/ee/api/groups.html#add-ldap-group-link-with-cn-or-filter + # https://docs.gitlab.com/ee/api/groups.html#delete-ldap-group-link-with-cn-or-filter + # We can tell what attribute to use based on the data returned + data = {"provider": self.provider} + if self.cn: + data["cn"] = self.cn + else: + data["filter"] = self.filter + + return data + + def delete(self, **kwargs: Any) -> None: + """Delete the LDAP group link from the server. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabDeleteError: If the server cannot perform the request + """ + if TYPE_CHECKING: + assert isinstance(self.manager, DeleteMixin) + self.manager.delete( + self.encoded_id, query_data=self._get_link_attrs(), **kwargs + ) + + +class GroupLDAPGroupLinkManager(ListMixin, CreateMixin, DeleteMixin, RESTManager): + _path = "/groups/{group_id}/ldap_group_links" + _obj_cls: Type[GroupLDAPGroupLink] = GroupLDAPGroupLink + _from_parent_attrs = {"group_id": "id"} + _create_attrs = RequiredOptional( + required=("provider", "group_access"), exclusive=("cn", "filter") + ) + + +class GroupSAMLGroupLink(ObjectDeleteMixin, RESTObject): + _id_attr = "name" + _repr_attr = "name" + + +class GroupSAMLGroupLinkManager(NoUpdateMixin, RESTManager): + _path = "/groups/{group_id}/saml_group_links" + _obj_cls: Type[GroupSAMLGroupLink] = GroupSAMLGroupLink + _from_parent_attrs = {"group_id": "id"} + _create_attrs = RequiredOptional(required=("saml_group_name", "access_level")) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> GroupSAMLGroupLink: + return cast(GroupSAMLGroupLink, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/hooks.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/hooks.py new file mode 100644 index 0000000..798f92e --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/hooks.py @@ -0,0 +1,157 @@ +from typing import Any, cast, Union + +from gitlab import exceptions as exc +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CRUDMixin, NoUpdateMixin, ObjectDeleteMixin, SaveMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "Hook", + "HookManager", + "ProjectHook", + "ProjectHookManager", + "GroupHook", + "GroupHookManager", +] + + +class Hook(ObjectDeleteMixin, RESTObject): + _url = "/hooks" + _repr_attr = "url" + + +class HookManager(NoUpdateMixin, RESTManager): + _path = "/hooks" + _obj_cls = Hook + _create_attrs = RequiredOptional(required=("url",)) + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> Hook: + return cast(Hook, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectHook(SaveMixin, ObjectDeleteMixin, RESTObject): + _repr_attr = "url" + + @exc.on_http_error(exc.GitlabHookTestError) + def test(self, trigger: str) -> None: + """ + Test a Project Hook + + Args: + trigger: Type of trigger event to test + + Raises: + GitlabHookTestError: If the hook test attempt failed + """ + path = f"{self.manager.path}/{self.encoded_id}/test/{trigger}" + self.manager.gitlab.http_post(path) + + +class ProjectHookManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/hooks" + _obj_cls = ProjectHook + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("url",), + optional=( + "push_events", + "issues_events", + "confidential_issues_events", + "merge_requests_events", + "tag_push_events", + "note_events", + "job_events", + "pipeline_events", + "wiki_page_events", + "enable_ssl_verification", + "token", + ), + ) + _update_attrs = RequiredOptional( + required=("url",), + optional=( + "push_events", + "issues_events", + "confidential_issues_events", + "merge_requests_events", + "tag_push_events", + "note_events", + "job_events", + "pipeline_events", + "wiki_events", + "enable_ssl_verification", + "token", + ), + ) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectHook: + return cast(ProjectHook, super().get(id=id, lazy=lazy, **kwargs)) + + +class GroupHook(SaveMixin, ObjectDeleteMixin, RESTObject): + _repr_attr = "url" + + @exc.on_http_error(exc.GitlabHookTestError) + def test(self, trigger: str) -> None: + """ + Test a Group Hook + + Args: + trigger: Type of trigger event to test + + Raises: + GitlabHookTestError: If the hook test attempt failed + """ + path = f"{self.manager.path}/{self.encoded_id}/test/{trigger}" + self.manager.gitlab.http_post(path) + + +class GroupHookManager(CRUDMixin, RESTManager): + _path = "/groups/{group_id}/hooks" + _obj_cls = GroupHook + _from_parent_attrs = {"group_id": "id"} + _create_attrs = RequiredOptional( + required=("url",), + optional=( + "push_events", + "issues_events", + "confidential_issues_events", + "merge_requests_events", + "tag_push_events", + "note_events", + "confidential_note_events", + "job_events", + "pipeline_events", + "wiki_page_events", + "deployment_events", + "releases_events", + "subgroup_events", + "enable_ssl_verification", + "token", + ), + ) + _update_attrs = RequiredOptional( + required=("url",), + optional=( + "push_events", + "issues_events", + "confidential_issues_events", + "merge_requests_events", + "tag_push_events", + "note_events", + "confidential_note_events", + "job_events", + "pipeline_events", + "wiki_page_events", + "deployment_events", + "releases_events", + "subgroup_events", + "enable_ssl_verification", + "token", + ), + ) + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> GroupHook: + return cast(GroupHook, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/integrations.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/integrations.py new file mode 100644 index 0000000..4764fee --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/integrations.py @@ -0,0 +1,295 @@ +""" +GitLab API: +https://docs.gitlab.com/ee/api/integrations.html +""" + +from typing import Any, cast, List, Union + +from gitlab import cli +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + DeleteMixin, + GetMixin, + ListMixin, + ObjectDeleteMixin, + SaveMixin, + UpdateMixin, +) + +__all__ = [ + "ProjectIntegration", + "ProjectIntegrationManager", + "ProjectService", + "ProjectServiceManager", +] + + +class ProjectIntegration(SaveMixin, ObjectDeleteMixin, RESTObject): + _id_attr = "slug" + + +class ProjectIntegrationManager( + GetMixin, UpdateMixin, DeleteMixin, ListMixin, RESTManager +): + _path = "/projects/{project_id}/integrations" + _from_parent_attrs = {"project_id": "id"} + _obj_cls = ProjectIntegration + + _service_attrs = { + "asana": (("api_key",), ("restrict_to_branch", "push_events")), + "assembla": (("token",), ("subdomain", "push_events")), + "bamboo": ( + ("bamboo_url", "build_key", "username", "password"), + ("push_events",), + ), + "bugzilla": ( + ("new_issue_url", "issues_url", "project_url"), + ("description", "title", "push_events"), + ), + "buildkite": ( + ("token", "project_url"), + ("enable_ssl_verification", "push_events"), + ), + "campfire": (("token",), ("subdomain", "room", "push_events")), + "circuit": ( + ("webhook",), + ( + "notify_only_broken_pipelines", + "branches_to_be_notified", + "push_events", + "issues_events", + "confidential_issues_events", + "merge_requests_events", + "tag_push_events", + "note_events", + "confidential_note_events", + "pipeline_events", + "wiki_page_events", + ), + ), + "custom-issue-tracker": ( + ("new_issue_url", "issues_url", "project_url"), + ("description", "title", "push_events"), + ), + "drone-ci": ( + ("token", "drone_url"), + ( + "enable_ssl_verification", + "push_events", + "merge_requests_events", + "tag_push_events", + ), + ), + "emails-on-push": ( + ("recipients",), + ( + "disable_diffs", + "send_from_committer_email", + "push_events", + "tag_push_events", + "branches_to_be_notified", + ), + ), + "pipelines-email": ( + ("recipients",), + ( + "add_pusher", + "notify_only_broken_builds", + "branches_to_be_notified", + "notify_only_default_branch", + "pipeline_events", + ), + ), + "external-wiki": (("external_wiki_url",), ()), + "flowdock": (("token",), ("push_events",)), + "github": (("token", "repository_url"), ("static_context",)), + "hangouts-chat": ( + ("webhook",), + ( + "notify_only_broken_pipelines", + "notify_only_default_branch", + "branches_to_be_notified", + "push_events", + "issues_events", + "confidential_issues_events", + "merge_requests_events", + "tag_push_events", + "note_events", + "confidential_note_events", + "pipeline_events", + "wiki_page_events", + ), + ), + "hipchat": ( + ("token",), + ( + "color", + "notify", + "room", + "api_version", + "server", + "push_events", + "issues_events", + "confidential_issues_events", + "merge_requests_events", + "tag_push_events", + "note_events", + "confidential_note_events", + "pipeline_events", + ), + ), + "irker": ( + ("recipients",), + ( + "default_irc_uri", + "server_port", + "server_host", + "colorize_messages", + "push_events", + ), + ), + "jira": ( + ( + "url", + "username", + "password", + ), + ( + "api_url", + "active", + "jira_issue_transition_id", + "commit_events", + "merge_requests_events", + "comment_on_event_enabled", + ), + ), + "slack-slash-commands": (("token",), ()), + "mattermost-slash-commands": (("token",), ("username",)), + "packagist": ( + ("username", "token"), + ("server", "push_events", "merge_requests_events", "tag_push_events"), + ), + "mattermost": ( + ("webhook",), + ( + "username", + "channel", + "notify_only_broken_pipelines", + "notify_only_default_branch", + "branches_to_be_notified", + "push_events", + "issues_events", + "confidential_issues_events", + "merge_requests_events", + "tag_push_events", + "note_events", + "confidential_note_events", + "pipeline_events", + "wiki_page_events", + "push_channel", + "issue_channel", + "confidential_issue_channel", + "merge_request_channel", + "note_channel", + "confidential_note_channel", + "tag_push_channel", + "pipeline_channel", + "wiki_page_channel", + ), + ), + "pivotaltracker": (("token",), ("restrict_to_branch", "push_events")), + "prometheus": (("api_url",), ()), + "pushover": ( + ("api_key", "user_key", "priority"), + ("device", "sound", "push_events"), + ), + "redmine": ( + ("new_issue_url", "project_url", "issues_url"), + ("description", "push_events"), + ), + "slack": ( + ("webhook",), + ( + "username", + "channel", + "notify_only_broken_pipelines", + "notify_only_default_branch", + "branches_to_be_notified", + "commit_events", + "confidential_issue_channel", + "confidential_issues_events", + "confidential_note_channel", + "confidential_note_events", + "deployment_channel", + "deployment_events", + "issue_channel", + "issues_events", + "job_events", + "merge_request_channel", + "merge_requests_events", + "note_channel", + "note_events", + "pipeline_channel", + "pipeline_events", + "push_channel", + "push_events", + "tag_push_channel", + "tag_push_events", + "wiki_page_channel", + "wiki_page_events", + ), + ), + "microsoft-teams": ( + ("webhook",), + ( + "notify_only_broken_pipelines", + "notify_only_default_branch", + "branches_to_be_notified", + "push_events", + "issues_events", + "confidential_issues_events", + "merge_requests_events", + "tag_push_events", + "note_events", + "confidential_note_events", + "pipeline_events", + "wiki_page_events", + ), + ), + "teamcity": ( + ("teamcity_url", "build_type", "username", "password"), + ("push_events",), + ), + "jenkins": (("jenkins_url", "project_name"), ("username", "password")), + "mock-ci": (("mock_service_url",), ()), + "youtrack": (("issues_url", "project_url"), ("description", "push_events")), + } + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectIntegration: + return cast(ProjectIntegration, super().get(id=id, lazy=lazy, **kwargs)) + + @cli.register_custom_action( + cls_names=("ProjectIntegrationManager", "ProjectServiceManager") + ) + def available(self) -> List[str]: + """List the services known by python-gitlab. + + Returns: + The list of service code names. + """ + return list(self._service_attrs.keys()) + + +class ProjectService(ProjectIntegration): + pass + + +class ProjectServiceManager(ProjectIntegrationManager): + _obj_cls = ProjectService + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectService: + return cast(ProjectService, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/invitations.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/invitations.py new file mode 100644 index 0000000..43fbb2d --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/invitations.py @@ -0,0 +1,91 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.exceptions import GitlabInvitationError +from gitlab.mixins import CRUDMixin, ObjectDeleteMixin, SaveMixin +from gitlab.types import ArrayAttribute, CommaSeparatedListAttribute, RequiredOptional + +__all__ = [ + "ProjectInvitation", + "ProjectInvitationManager", + "GroupInvitation", + "GroupInvitationManager", +] + + +class InvitationMixin(CRUDMixin): + def create(self, *args: Any, **kwargs: Any) -> RESTObject: + invitation = super().create(*args, **kwargs) + + if invitation.status == "error": + raise GitlabInvitationError(invitation.message) + + return invitation + + +class ProjectInvitation(SaveMixin, ObjectDeleteMixin, RESTObject): + _id_attr = "email" + + +class ProjectInvitationManager(InvitationMixin, RESTManager): + _path = "/projects/{project_id}/invitations" + _obj_cls = ProjectInvitation + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("access_level",), + optional=( + "expires_at", + "invite_source", + "tasks_to_be_done", + "tasks_project_id", + ), + exclusive=("email", "user_id"), + ) + _update_attrs = RequiredOptional( + optional=("access_level", "expires_at"), + ) + _list_filters = ("query",) + _types = { + "email": CommaSeparatedListAttribute, + "user_id": CommaSeparatedListAttribute, + "tasks_to_be_done": ArrayAttribute, + } + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectInvitation: + return cast(ProjectInvitation, super().get(id=id, lazy=lazy, **kwargs)) + + +class GroupInvitation(SaveMixin, ObjectDeleteMixin, RESTObject): + _id_attr = "email" + + +class GroupInvitationManager(InvitationMixin, RESTManager): + _path = "/groups/{group_id}/invitations" + _obj_cls = GroupInvitation + _from_parent_attrs = {"group_id": "id"} + _create_attrs = RequiredOptional( + required=("access_level",), + optional=( + "expires_at", + "invite_source", + "tasks_to_be_done", + "tasks_project_id", + ), + exclusive=("email", "user_id"), + ) + _update_attrs = RequiredOptional( + optional=("access_level", "expires_at"), + ) + _list_filters = ("query",) + _types = { + "email": CommaSeparatedListAttribute, + "user_id": CommaSeparatedListAttribute, + "tasks_to_be_done": ArrayAttribute, + } + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> GroupInvitation: + return cast(GroupInvitation, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/issues.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/issues.py new file mode 100644 index 0000000..867deec --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/issues.py @@ -0,0 +1,331 @@ +from typing import Any, cast, Dict, List, Optional, Tuple, TYPE_CHECKING, Union + +import requests + +from gitlab import cli, client +from gitlab import exceptions as exc +from gitlab import types +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CreateMixin, + CRUDMixin, + DeleteMixin, + ListMixin, + ObjectDeleteMixin, + ParticipantsMixin, + RetrieveMixin, + SaveMixin, + SubscribableMixin, + TimeTrackingMixin, + TodoMixin, + UserAgentDetailMixin, +) +from gitlab.types import RequiredOptional + +from .award_emojis import ProjectIssueAwardEmojiManager # noqa: F401 +from .discussions import ProjectIssueDiscussionManager # noqa: F401 +from .events import ( # noqa: F401 + ProjectIssueResourceIterationEventManager, + ProjectIssueResourceLabelEventManager, + ProjectIssueResourceMilestoneEventManager, + ProjectIssueResourceStateEventManager, + ProjectIssueResourceWeightEventManager, +) +from .notes import ProjectIssueNoteManager # noqa: F401 + +__all__ = [ + "Issue", + "IssueManager", + "GroupIssue", + "GroupIssueManager", + "ProjectIssue", + "ProjectIssueManager", + "ProjectIssueLink", + "ProjectIssueLinkManager", +] + + +class Issue(RESTObject): + _url = "/issues" + _repr_attr = "title" + + +class IssueManager(RetrieveMixin, RESTManager): + _path = "/issues" + _obj_cls = Issue + _list_filters = ( + "state", + "labels", + "milestone", + "scope", + "author_id", + "iteration_id", + "assignee_id", + "my_reaction_emoji", + "iids", + "order_by", + "sort", + "search", + "created_after", + "created_before", + "updated_after", + "updated_before", + ) + _types = {"iids": types.ArrayAttribute, "labels": types.CommaSeparatedListAttribute} + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> Issue: + return cast(Issue, super().get(id=id, lazy=lazy, **kwargs)) + + +class GroupIssue(RESTObject): + pass + + +class GroupIssueManager(ListMixin, RESTManager): + _path = "/groups/{group_id}/issues" + _obj_cls = GroupIssue + _from_parent_attrs = {"group_id": "id"} + _list_filters = ( + "state", + "labels", + "milestone", + "order_by", + "sort", + "iids", + "author_id", + "iteration_id", + "assignee_id", + "my_reaction_emoji", + "search", + "created_after", + "created_before", + "updated_after", + "updated_before", + ) + _types = {"iids": types.ArrayAttribute, "labels": types.CommaSeparatedListAttribute} + + +class ProjectIssue( + UserAgentDetailMixin, + SubscribableMixin, + TodoMixin, + TimeTrackingMixin, + ParticipantsMixin, + SaveMixin, + ObjectDeleteMixin, + RESTObject, +): + _repr_attr = "title" + _id_attr = "iid" + + awardemojis: ProjectIssueAwardEmojiManager + discussions: ProjectIssueDiscussionManager + links: "ProjectIssueLinkManager" + notes: ProjectIssueNoteManager + resourcelabelevents: ProjectIssueResourceLabelEventManager + resourcemilestoneevents: ProjectIssueResourceMilestoneEventManager + resourcestateevents: ProjectIssueResourceStateEventManager + resource_iteration_events: ProjectIssueResourceIterationEventManager + resource_weight_events: ProjectIssueResourceWeightEventManager + + @cli.register_custom_action(cls_names="ProjectIssue", required=("to_project_id",)) + @exc.on_http_error(exc.GitlabUpdateError) + def move(self, to_project_id: int, **kwargs: Any) -> None: + """Move the issue to another project. + + Args: + to_project_id: ID of the target project + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabUpdateError: If the issue could not be moved + """ + path = f"{self.manager.path}/{self.encoded_id}/move" + data = {"to_project_id": to_project_id} + server_data = self.manager.gitlab.http_post(path, post_data=data, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + self._update_attrs(server_data) + + @cli.register_custom_action( + cls_names="ProjectIssue", required=("move_after_id", "move_before_id") + ) + @exc.on_http_error(exc.GitlabUpdateError) + def reorder( + self, + move_after_id: Optional[int] = None, + move_before_id: Optional[int] = None, + **kwargs: Any, + ) -> None: + """Reorder an issue on a board. + + Args: + move_after_id: ID of an issue that should be placed after this issue + move_before_id: ID of an issue that should be placed before this issue + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabUpdateError: If the issue could not be reordered + """ + path = f"{self.manager.path}/{self.encoded_id}/reorder" + data: Dict[str, Any] = {} + + if move_after_id is not None: + data["move_after_id"] = move_after_id + if move_before_id is not None: + data["move_before_id"] = move_before_id + + server_data = self.manager.gitlab.http_put(path, post_data=data, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + self._update_attrs(server_data) + + @cli.register_custom_action(cls_names="ProjectIssue") + @exc.on_http_error(exc.GitlabGetError) + def related_merge_requests( + self, **kwargs: Any + ) -> Union[client.GitlabList, List[Dict[str, Any]]]: + """List merge requests related to the issue. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetErrot: If the merge requests could not be retrieved + + Returns: + The list of merge requests. + """ + path = f"{self.manager.path}/{self.encoded_id}/related_merge_requests" + result = self.manager.gitlab.http_list(path, **kwargs) + if TYPE_CHECKING: + assert not isinstance(result, requests.Response) + return result + + @cli.register_custom_action(cls_names="ProjectIssue") + @exc.on_http_error(exc.GitlabGetError) + def closed_by( + self, **kwargs: Any + ) -> Union[client.GitlabList, List[Dict[str, Any]]]: + """List merge requests that will close the issue when merged. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetErrot: If the merge requests could not be retrieved + + Returns: + The list of merge requests. + """ + path = f"{self.manager.path}/{self.encoded_id}/closed_by" + result = self.manager.gitlab.http_list(path, **kwargs) + if TYPE_CHECKING: + assert not isinstance(result, requests.Response) + return result + + +class ProjectIssueManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/issues" + _obj_cls = ProjectIssue + _from_parent_attrs = {"project_id": "id"} + _list_filters = ( + "iids", + "state", + "labels", + "milestone", + "scope", + "author_id", + "iteration_id", + "assignee_id", + "my_reaction_emoji", + "order_by", + "sort", + "search", + "created_after", + "created_before", + "updated_after", + "updated_before", + ) + _create_attrs = RequiredOptional( + required=("title",), + optional=( + "description", + "confidential", + "assignee_ids", + "assignee_id", + "milestone_id", + "labels", + "created_at", + "due_date", + "merge_request_to_resolve_discussions_of", + "discussion_to_resolve", + ), + ) + _update_attrs = RequiredOptional( + optional=( + "title", + "description", + "confidential", + "assignee_ids", + "assignee_id", + "milestone_id", + "labels", + "state_event", + "updated_at", + "due_date", + "discussion_locked", + ), + ) + _types = {"iids": types.ArrayAttribute, "labels": types.CommaSeparatedListAttribute} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectIssue: + return cast(ProjectIssue, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectIssueLink(ObjectDeleteMixin, RESTObject): + _id_attr = "issue_link_id" + + +class ProjectIssueLinkManager(ListMixin, CreateMixin, DeleteMixin, RESTManager): + _path = "/projects/{project_id}/issues/{issue_iid}/links" + _obj_cls = ProjectIssueLink + _from_parent_attrs = {"project_id": "project_id", "issue_iid": "iid"} + _create_attrs = RequiredOptional(required=("target_project_id", "target_issue_iid")) + + @exc.on_http_error(exc.GitlabCreateError) + # NOTE(jlvillal): Signature doesn't match CreateMixin.create() so ignore + # type error + def create( # type: ignore + self, data: Dict[str, Any], **kwargs: Any + ) -> Tuple[RESTObject, RESTObject]: + """Create a new object. + + Args: + data: parameters to send to the server to create the + resource + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + The source and target issues + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the server cannot perform the request + """ + self._create_attrs.validate_attrs(data=data) + if TYPE_CHECKING: + assert self.path is not None + server_data = self.gitlab.http_post(self.path, post_data=data, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + assert self._parent is not None + source_issue = ProjectIssue(self._parent.manager, server_data["source_issue"]) + target_issue = ProjectIssue(self._parent.manager, server_data["target_issue"]) + return source_issue, target_issue diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/iterations.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/iterations.py new file mode 100644 index 0000000..eac3f1f --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/iterations.py @@ -0,0 +1,53 @@ +from gitlab import types +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ListMixin + +__all__ = [ + "ProjectIterationManager", + "GroupIteration", + "GroupIterationManager", +] + + +class GroupIteration(RESTObject): + _repr_attr = "title" + + +class GroupIterationManager(ListMixin, RESTManager): + _path = "/groups/{group_id}/iterations" + _obj_cls = GroupIteration + _from_parent_attrs = {"group_id": "id"} + # When using the API, the "in" keyword collides with python's "in" keyword + # raising a SyntaxError. + # For this reason, we have to use the query_parameters argument: + # group.iterations.list(query_parameters={"in": "title"}) + _list_filters = ( + "include_ancestors", + "include_descendants", + "in", + "search", + "state", + "updated_after", + "updated_before", + ) + _types = {"in": types.ArrayAttribute} + + +class ProjectIterationManager(ListMixin, RESTManager): + _path = "/projects/{project_id}/iterations" + _obj_cls = GroupIteration + _from_parent_attrs = {"project_id": "id"} + # When using the API, the "in" keyword collides with python's "in" keyword + # raising a SyntaxError. + # For this reason, we have to use the query_parameters argument: + # project.iterations.list(query_parameters={"in": "title"}) + _list_filters = ( + "include_ancestors", + "include_descendants", + "in", + "search", + "state", + "updated_after", + "updated_before", + ) + _types = {"in": types.ArrayAttribute} diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/job_token_scope.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/job_token_scope.py new file mode 100644 index 0000000..ed04a31 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/job_token_scope.py @@ -0,0 +1,77 @@ +from typing import Any, cast + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CreateMixin, + DeleteMixin, + GetWithoutIdMixin, + ListMixin, + ObjectDeleteMixin, + RefreshMixin, + SaveMixin, + UpdateMethod, + UpdateMixin, +) +from gitlab.types import RequiredOptional + +__all__ = [ + "ProjectJobTokenScope", + "ProjectJobTokenScopeManager", +] + + +class ProjectJobTokenScope(RefreshMixin, SaveMixin, RESTObject): + _id_attr = None + + allowlist: "AllowlistProjectManager" + groups_allowlist: "AllowlistGroupManager" + + +class ProjectJobTokenScopeManager(GetWithoutIdMixin, UpdateMixin, RESTManager): + _path = "/projects/{project_id}/job_token_scope" + _obj_cls = ProjectJobTokenScope + _from_parent_attrs = {"project_id": "id"} + _update_method = UpdateMethod.PATCH + + def get(self, **kwargs: Any) -> ProjectJobTokenScope: + return cast(ProjectJobTokenScope, super().get(**kwargs)) + + +class AllowlistProject(ObjectDeleteMixin, RESTObject): + _id_attr = "target_project_id" # note: only true for create endpoint + + def get_id(self) -> int: + """Returns the id of the resource. This override deals with + the fact that either an `id` or a `target_project_id` attribute + is returned by the server depending on the endpoint called.""" + target_project_id = cast(int, super().get_id()) + if target_project_id is not None: + return target_project_id + return cast(int, self.id) + + +class AllowlistProjectManager(ListMixin, CreateMixin, DeleteMixin, RESTManager): + _path = "/projects/{project_id}/job_token_scope/allowlist" + _obj_cls = AllowlistProject + _from_parent_attrs = {"project_id": "project_id"} + _create_attrs = RequiredOptional(required=("target_project_id",)) + + +class AllowlistGroup(ObjectDeleteMixin, RESTObject): + _id_attr = "target_group_id" # note: only true for create endpoint + + def get_id(self) -> int: + """Returns the id of the resource. This override deals with + the fact that either an `id` or a `target_group_id` attribute + is returned by the server depending on the endpoint called.""" + target_group_id = cast(int, super().get_id()) + if target_group_id is not None: + return target_group_id + return cast(int, self.id) + + +class AllowlistGroupManager(ListMixin, CreateMixin, DeleteMixin, RESTManager): + _path = "/projects/{project_id}/job_token_scope/groups_allowlist" + _obj_cls = AllowlistGroup + _from_parent_attrs = {"project_id": "project_id"} + _create_attrs = RequiredOptional(required=("target_group_id",)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/jobs.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/jobs.py new file mode 100644 index 0000000..28a46d7 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/jobs.py @@ -0,0 +1,252 @@ +from typing import Any, Callable, cast, Dict, Iterator, Optional, TYPE_CHECKING, Union + +import requests + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab import utils +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import RefreshMixin, RetrieveMixin +from gitlab.types import ArrayAttribute + +__all__ = [ + "ProjectJob", + "ProjectJobManager", +] + + +class ProjectJob(RefreshMixin, RESTObject): + @cli.register_custom_action(cls_names="ProjectJob") + @exc.on_http_error(exc.GitlabJobCancelError) + def cancel(self, **kwargs: Any) -> Dict[str, Any]: + """Cancel the job. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabJobCancelError: If the job could not be canceled + """ + path = f"{self.manager.path}/{self.encoded_id}/cancel" + result = self.manager.gitlab.http_post(path, **kwargs) + if TYPE_CHECKING: + assert isinstance(result, dict) + return result + + @cli.register_custom_action(cls_names="ProjectJob") + @exc.on_http_error(exc.GitlabJobRetryError) + def retry(self, **kwargs: Any) -> Dict[str, Any]: + """Retry the job. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabJobRetryError: If the job could not be retried + """ + path = f"{self.manager.path}/{self.encoded_id}/retry" + result = self.manager.gitlab.http_post(path, **kwargs) + if TYPE_CHECKING: + assert isinstance(result, dict) + return result + + @cli.register_custom_action(cls_names="ProjectJob") + @exc.on_http_error(exc.GitlabJobPlayError) + def play(self, **kwargs: Any) -> None: + """Trigger a job explicitly. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabJobPlayError: If the job could not be triggered + """ + path = f"{self.manager.path}/{self.encoded_id}/play" + result = self.manager.gitlab.http_post(path, **kwargs) + if TYPE_CHECKING: + assert isinstance(result, dict) + self._update_attrs(result) + + @cli.register_custom_action(cls_names="ProjectJob") + @exc.on_http_error(exc.GitlabJobEraseError) + def erase(self, **kwargs: Any) -> None: + """Erase the job (remove job artifacts and trace). + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabJobEraseError: If the job could not be erased + """ + path = f"{self.manager.path}/{self.encoded_id}/erase" + self.manager.gitlab.http_post(path, **kwargs) + + @cli.register_custom_action(cls_names="ProjectJob") + @exc.on_http_error(exc.GitlabCreateError) + def keep_artifacts(self, **kwargs: Any) -> None: + """Prevent artifacts from being deleted when expiration is set. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the request could not be performed + """ + path = f"{self.manager.path}/{self.encoded_id}/artifacts/keep" + self.manager.gitlab.http_post(path, **kwargs) + + @cli.register_custom_action(cls_names="ProjectJob") + @exc.on_http_error(exc.GitlabCreateError) + def delete_artifacts(self, **kwargs: Any) -> None: + """Delete artifacts of a job. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabDeleteError: If the request could not be performed + """ + path = f"{self.manager.path}/{self.encoded_id}/artifacts" + self.manager.gitlab.http_delete(path, **kwargs) + + @cli.register_custom_action(cls_names="ProjectJob") + @exc.on_http_error(exc.GitlabGetError) + def artifacts( + self, + streamed: bool = False, + action: Optional[Callable[..., Any]] = None, + chunk_size: int = 1024, + *, + iterator: bool = False, + **kwargs: Any, + ) -> Optional[Union[bytes, Iterator[Any]]]: + """Get the job artifacts. + + Args: + streamed: If True the data will be processed by chunks of + `chunk_size` and each chunk is passed to `action` for + treatment + iterator: If True directly return the underlying response + iterator + action: Callable responsible of dealing with chunk of + data + chunk_size: Size of each chunk + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the artifacts could not be retrieved + + Returns: + The artifacts if `streamed` is False, None otherwise. + """ + path = f"{self.manager.path}/{self.encoded_id}/artifacts" + result = self.manager.gitlab.http_get( + path, streamed=streamed, raw=True, **kwargs + ) + if TYPE_CHECKING: + assert isinstance(result, requests.Response) + return utils.response_content( + result, streamed, action, chunk_size, iterator=iterator + ) + + @cli.register_custom_action(cls_names="ProjectJob") + @exc.on_http_error(exc.GitlabGetError) + def artifact( + self, + path: str, + streamed: bool = False, + action: Optional[Callable[..., Any]] = None, + chunk_size: int = 1024, + *, + iterator: bool = False, + **kwargs: Any, + ) -> Optional[Union[bytes, Iterator[Any]]]: + """Get a single artifact file from within the job's artifacts archive. + + Args: + path: Path of the artifact + streamed: If True the data will be processed by chunks of + `chunk_size` and each chunk is passed to `action` for + treatment + iterator: If True directly return the underlying response + iterator + action: Callable responsible of dealing with chunk of + data + chunk_size: Size of each chunk + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the artifacts could not be retrieved + + Returns: + The artifacts if `streamed` is False, None otherwise. + """ + path = f"{self.manager.path}/{self.encoded_id}/artifacts/{path}" + result = self.manager.gitlab.http_get( + path, streamed=streamed, raw=True, **kwargs + ) + if TYPE_CHECKING: + assert isinstance(result, requests.Response) + return utils.response_content( + result, streamed, action, chunk_size, iterator=iterator + ) + + @cli.register_custom_action(cls_names="ProjectJob") + @exc.on_http_error(exc.GitlabGetError) + def trace( + self, + streamed: bool = False, + action: Optional[Callable[..., Any]] = None, + chunk_size: int = 1024, + *, + iterator: bool = False, + **kwargs: Any, + ) -> Optional[Union[bytes, Iterator[Any]]]: + """Get the job trace. + + Args: + streamed: If True the data will be processed by chunks of + `chunk_size` and each chunk is passed to `action` for + treatment + iterator: If True directly return the underlying response + iterator + action: Callable responsible of dealing with chunk of + data + chunk_size: Size of each chunk + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the artifacts could not be retrieved + + Returns: + The trace + """ + path = f"{self.manager.path}/{self.encoded_id}/trace" + result = self.manager.gitlab.http_get( + path, streamed=streamed, raw=True, **kwargs + ) + if TYPE_CHECKING: + assert isinstance(result, requests.Response) + return utils.response_content( + result, streamed, action, chunk_size, iterator=iterator + ) + + +class ProjectJobManager(RetrieveMixin, RESTManager): + _path = "/projects/{project_id}/jobs" + _obj_cls = ProjectJob + _from_parent_attrs = {"project_id": "id"} + _list_filters = ("scope",) + _types = {"scope": ArrayAttribute} + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> ProjectJob: + return cast(ProjectJob, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/keys.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/keys.py new file mode 100644 index 0000000..caf8f60 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/keys.py @@ -0,0 +1,34 @@ +from typing import Any, cast, Optional, TYPE_CHECKING, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import GetMixin + +__all__ = [ + "Key", + "KeyManager", +] + + +class Key(RESTObject): + pass + + +class KeyManager(GetMixin, RESTManager): + _path = "/keys" + _obj_cls = Key + + def get( + self, id: Optional[Union[int, str]] = None, lazy: bool = False, **kwargs: Any + ) -> Key: + if id is not None: + return cast(Key, super().get(id, lazy=lazy, **kwargs)) + + if "fingerprint" not in kwargs: + raise AttributeError("Missing attribute: id or fingerprint") + + if TYPE_CHECKING: + assert self.path is not None + server_data = self.gitlab.http_get(self.path, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + return self._obj_cls(self, server_data) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/labels.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/labels.py new file mode 100644 index 0000000..32d4f6b --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/labels.py @@ -0,0 +1,150 @@ +from typing import Any, cast, Dict, Optional, Union + +from gitlab import exceptions as exc +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CreateMixin, + DeleteMixin, + ObjectDeleteMixin, + PromoteMixin, + RetrieveMixin, + SaveMixin, + SubscribableMixin, + UpdateMixin, +) +from gitlab.types import RequiredOptional + +__all__ = [ + "GroupLabel", + "GroupLabelManager", + "ProjectLabel", + "ProjectLabelManager", +] + + +class GroupLabel(SubscribableMixin, SaveMixin, ObjectDeleteMixin, RESTObject): + _id_attr = "name" + manager: "GroupLabelManager" + + # Update without ID, but we need an ID to get from list. + @exc.on_http_error(exc.GitlabUpdateError) + def save(self, **kwargs: Any) -> None: + """Saves the changes made to the object to the server. + + The object is updated to match what the server returns. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct. + GitlabUpdateError: If the server cannot perform the request. + """ + updated_data = self._get_updated_data() + + # call the manager + server_data = self.manager.update(None, updated_data, **kwargs) + self._update_attrs(server_data) + + +class GroupLabelManager( + RetrieveMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager +): + _path = "/groups/{group_id}/labels" + _obj_cls = GroupLabel + _from_parent_attrs = {"group_id": "id"} + _create_attrs = RequiredOptional( + required=("name", "color"), optional=("description", "priority") + ) + _update_attrs = RequiredOptional( + required=("name",), optional=("new_name", "color", "description", "priority") + ) + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> GroupLabel: + return cast(GroupLabel, super().get(id=id, lazy=lazy, **kwargs)) + + # Update without ID. + # NOTE(jlvillal): Signature doesn't match UpdateMixin.update() so ignore + # type error + def update( # type: ignore + self, + name: Optional[str], + new_data: Optional[Dict[str, Any]] = None, + **kwargs: Any, + ) -> Dict[str, Any]: + """Update a Label on the server. + + Args: + name: The name of the label + **kwargs: Extra options to send to the server (e.g. sudo) + """ + new_data = new_data or {} + if name: + new_data["name"] = name + return super().update(id=None, new_data=new_data, **kwargs) + + +class ProjectLabel( + PromoteMixin, SubscribableMixin, SaveMixin, ObjectDeleteMixin, RESTObject +): + _id_attr = "name" + manager: "ProjectLabelManager" + + # Update without ID, but we need an ID to get from list. + @exc.on_http_error(exc.GitlabUpdateError) + def save(self, **kwargs: Any) -> None: + """Saves the changes made to the object to the server. + + The object is updated to match what the server returns. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct. + GitlabUpdateError: If the server cannot perform the request. + """ + updated_data = self._get_updated_data() + + # call the manager + server_data = self.manager.update(None, updated_data, **kwargs) + self._update_attrs(server_data) + + +class ProjectLabelManager( + RetrieveMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager +): + _path = "/projects/{project_id}/labels" + _obj_cls = ProjectLabel + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("name", "color"), optional=("description", "priority") + ) + _update_attrs = RequiredOptional( + required=("name",), optional=("new_name", "color", "description", "priority") + ) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectLabel: + return cast(ProjectLabel, super().get(id=id, lazy=lazy, **kwargs)) + + # Update without ID. + # NOTE(jlvillal): Signature doesn't match UpdateMixin.update() so ignore + # type error + def update( # type: ignore + self, + name: Optional[str], + new_data: Optional[Dict[str, Any]] = None, + **kwargs: Any, + ) -> Dict[str, Any]: + """Update a Label on the server. + + Args: + name: The name of the label + **kwargs: Extra options to send to the server (e.g. sudo) + """ + new_data = new_data or {} + if name: + new_data["name"] = name + return super().update(id=None, new_data=new_data, **kwargs) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/ldap.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/ldap.py new file mode 100644 index 0000000..053cd14 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/ldap.py @@ -0,0 +1,52 @@ +from typing import Any, List, Union + +from gitlab import exceptions as exc +from gitlab.base import RESTManager, RESTObject, RESTObjectList + +__all__ = [ + "LDAPGroup", + "LDAPGroupManager", +] + + +class LDAPGroup(RESTObject): + _id_attr = None + + +class LDAPGroupManager(RESTManager): + _path = "/ldap/groups" + _obj_cls = LDAPGroup + _list_filters = ("search", "provider") + + @exc.on_http_error(exc.GitlabListError) + def list(self, **kwargs: Any) -> Union[List[LDAPGroup], RESTObjectList]: + """Retrieve a list of objects. + + Args: + all: If True, return all the items, without pagination + per_page: Number of items to retrieve per request + page: ID of the page to return (starts with page 1) + iterator: If set to True and no pagination option is + defined, return a generator instead of a list + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + The list of objects, or a generator if `iterator` is True + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabListError: If the server cannot perform the request + """ + data = kwargs.copy() + if self.gitlab.per_page: + data.setdefault("per_page", self.gitlab.per_page) + + if "provider" in data: + path = f"/ldap/{data['provider']}/groups" + else: + path = self._path + + obj = self.gitlab.http_list(path, **data) + if isinstance(obj, list): + return [self._obj_cls(self, item) for item in obj] + return RESTObjectList(self, self._obj_cls, obj) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/members.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/members.py new file mode 100644 index 0000000..0252375 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/members.py @@ -0,0 +1,135 @@ +from typing import Any, cast, Union + +from gitlab import types +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CRUDMixin, + DeleteMixin, + ListMixin, + ObjectDeleteMixin, + RetrieveMixin, + SaveMixin, +) +from gitlab.types import RequiredOptional + +__all__ = [ + "GroupBillableMember", + "GroupBillableMemberManager", + "GroupBillableMemberMembership", + "GroupBillableMemberMembershipManager", + "GroupMember", + "GroupMemberAll", + "GroupMemberManager", + "GroupMemberAllManager", + "ProjectMember", + "ProjectMemberAll", + "ProjectMemberManager", + "ProjectMemberAllManager", +] + + +class GroupMember(SaveMixin, ObjectDeleteMixin, RESTObject): + _repr_attr = "username" + + +class GroupMemberManager(CRUDMixin, RESTManager): + _path = "/groups/{group_id}/members" + _obj_cls = GroupMember + _from_parent_attrs = {"group_id": "id"} + _create_attrs = RequiredOptional( + required=("access_level",), + optional=("expires_at", "tasks_to_be_done"), + exclusive=("username", "user_id"), + ) + _update_attrs = RequiredOptional( + required=("access_level",), optional=("expires_at",) + ) + _types = { + "user_ids": types.ArrayAttribute, + "tasks_to_be_done": types.ArrayAttribute, + } + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> GroupMember: + return cast(GroupMember, super().get(id=id, lazy=lazy, **kwargs)) + + +class GroupBillableMember(ObjectDeleteMixin, RESTObject): + _repr_attr = "username" + + memberships: "GroupBillableMemberMembershipManager" + + +class GroupBillableMemberManager(ListMixin, DeleteMixin, RESTManager): + _path = "/groups/{group_id}/billable_members" + _obj_cls = GroupBillableMember + _from_parent_attrs = {"group_id": "id"} + _list_filters = ("search", "sort") + + +class GroupBillableMemberMembership(RESTObject): + _id_attr = "user_id" + + +class GroupBillableMemberMembershipManager(ListMixin, RESTManager): + _path = "/groups/{group_id}/billable_members/{user_id}/memberships" + _obj_cls = GroupBillableMemberMembership + _from_parent_attrs = {"group_id": "group_id", "user_id": "id"} + + +class GroupMemberAll(RESTObject): + _repr_attr = "username" + + +class GroupMemberAllManager(RetrieveMixin, RESTManager): + _path = "/groups/{group_id}/members/all" + _obj_cls = GroupMemberAll + _from_parent_attrs = {"group_id": "id"} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> GroupMemberAll: + return cast(GroupMemberAll, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectMember(SaveMixin, ObjectDeleteMixin, RESTObject): + _repr_attr = "username" + + +class ProjectMemberManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/members" + _obj_cls = ProjectMember + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("access_level",), + optional=("expires_at", "tasks_to_be_done"), + exclusive=("username", "user_id"), + ) + _update_attrs = RequiredOptional( + required=("access_level",), optional=("expires_at",) + ) + _types = { + "user_ids": types.ArrayAttribute, + "tasks_to_be_dones": types.ArrayAttribute, + } + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectMember: + return cast(ProjectMember, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectMemberAll(RESTObject): + _repr_attr = "username" + + +class ProjectMemberAllManager(RetrieveMixin, RESTManager): + _path = "/projects/{project_id}/members/all" + _obj_cls = ProjectMemberAll + _from_parent_attrs = {"project_id": "id"} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectMemberAll: + return cast(ProjectMemberAll, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/merge_request_approvals.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/merge_request_approvals.py new file mode 100644 index 0000000..a8edca6 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/merge_request_approvals.py @@ -0,0 +1,187 @@ +from typing import Any, cast, List, Optional, TYPE_CHECKING, Union + +from gitlab import exceptions as exc +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CreateMixin, + CRUDMixin, + DeleteMixin, + GetWithoutIdMixin, + ObjectDeleteMixin, + RetrieveMixin, + SaveMixin, + UpdateMethod, + UpdateMixin, +) +from gitlab.types import RequiredOptional + +__all__ = [ + "ProjectApproval", + "ProjectApprovalManager", + "ProjectApprovalRule", + "ProjectApprovalRuleManager", + "ProjectMergeRequestApproval", + "ProjectMergeRequestApprovalManager", + "ProjectMergeRequestApprovalRule", + "ProjectMergeRequestApprovalRuleManager", + "ProjectMergeRequestApprovalState", + "ProjectMergeRequestApprovalStateManager", +] + + +class ProjectApproval(SaveMixin, RESTObject): + _id_attr = None + + +class ProjectApprovalManager(GetWithoutIdMixin, UpdateMixin, RESTManager): + _path = "/projects/{project_id}/approvals" + _obj_cls = ProjectApproval + _from_parent_attrs = {"project_id": "id"} + _update_attrs = RequiredOptional( + optional=( + "approvals_before_merge", + "reset_approvals_on_push", + "disable_overriding_approvers_per_merge_request", + "merge_requests_author_approval", + "merge_requests_disable_committers_approval", + ), + ) + _update_method = UpdateMethod.POST + + def get(self, **kwargs: Any) -> ProjectApproval: + return cast(ProjectApproval, super().get(**kwargs)) + + +class ProjectApprovalRule(SaveMixin, ObjectDeleteMixin, RESTObject): + _id_attr = "id" + _repr_attr = "name" + + +class ProjectApprovalRuleManager( + RetrieveMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager +): + _path = "/projects/{project_id}/approval_rules" + _obj_cls = ProjectApprovalRule + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("name", "approvals_required"), + optional=("user_ids", "group_ids", "protected_branch_ids", "usernames"), + ) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectApprovalRule: + return cast(ProjectApprovalRule, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectMergeRequestApproval(SaveMixin, RESTObject): + _id_attr = None + + +class ProjectMergeRequestApprovalManager(GetWithoutIdMixin, UpdateMixin, RESTManager): + _path = "/projects/{project_id}/merge_requests/{mr_iid}/approvals" + _obj_cls = ProjectMergeRequestApproval + _from_parent_attrs = {"project_id": "project_id", "mr_iid": "iid"} + _update_attrs = RequiredOptional(required=("approvals_required",)) + _update_method = UpdateMethod.POST + + def get(self, **kwargs: Any) -> ProjectMergeRequestApproval: + return cast(ProjectMergeRequestApproval, super().get(**kwargs)) + + @exc.on_http_error(exc.GitlabUpdateError) + def set_approvers( + self, + approvals_required: int, + approver_ids: Optional[List[int]] = None, + approver_group_ids: Optional[List[int]] = None, + approval_rule_name: str = "name", + *, + approver_usernames: Optional[List[str]] = None, + **kwargs: Any, + ) -> RESTObject: + """Change MR-level allowed approvers and approver groups. + + Args: + approvals_required: The number of required approvals for this rule + approver_ids: User IDs that can approve MRs + approver_group_ids: Group IDs whose members can approve MRs + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabUpdateError: If the server failed to perform the request + """ + approver_ids = approver_ids or [] + approver_group_ids = approver_group_ids or [] + approver_usernames = approver_usernames or [] + + data = { + "name": approval_rule_name, + "approvals_required": approvals_required, + "rule_type": "regular", + "user_ids": approver_ids, + "group_ids": approver_group_ids, + "usernames": approver_usernames, + } + if TYPE_CHECKING: + assert self._parent is not None + approval_rules: ProjectMergeRequestApprovalRuleManager = ( + self._parent.approval_rules + ) + # update any existing approval rule matching the name + existing_approval_rules = approval_rules.list(iterator=True) + for ar in existing_approval_rules: + if ar.name == approval_rule_name: + ar.user_ids = data["user_ids"] + ar.approvals_required = data["approvals_required"] + ar.group_ids = data["group_ids"] + ar.usernames = data["usernames"] + ar.save() + return ar + # if there was no rule matching the rule name, create a new one + return approval_rules.create(data=data, **kwargs) + + +class ProjectMergeRequestApprovalRule(SaveMixin, ObjectDeleteMixin, RESTObject): + _repr_attr = "name" + + +class ProjectMergeRequestApprovalRuleManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/merge_requests/{merge_request_iid}/approval_rules" + _obj_cls = ProjectMergeRequestApprovalRule + _from_parent_attrs = {"project_id": "project_id", "merge_request_iid": "iid"} + _update_attrs = RequiredOptional( + required=( + "id", + "merge_request_iid", + "name", + "approvals_required", + ), + optional=("user_ids", "group_ids", "usernames"), + ) + # Important: When approval_project_rule_id is set, the name, users and + # groups of project-level rule will be copied. The approvals_required + # specified will be used. + _create_attrs = RequiredOptional( + required=("name", "approvals_required"), + optional=("approval_project_rule_id", "user_ids", "group_ids", "usernames"), + ) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectMergeRequestApprovalRule: + return cast( + ProjectMergeRequestApprovalRule, super().get(id=id, lazy=lazy, **kwargs) + ) + + +class ProjectMergeRequestApprovalState(RESTObject): + pass + + +class ProjectMergeRequestApprovalStateManager(GetWithoutIdMixin, RESTManager): + _path = "/projects/{project_id}/merge_requests/{mr_iid}/approval_state" + _obj_cls = ProjectMergeRequestApprovalState + _from_parent_attrs = {"project_id": "project_id", "mr_iid": "iid"} + + def get(self, **kwargs: Any) -> ProjectMergeRequestApprovalState: + return cast(ProjectMergeRequestApprovalState, super().get(**kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/merge_requests.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/merge_requests.py new file mode 100644 index 0000000..e29ab2b --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/merge_requests.py @@ -0,0 +1,546 @@ +""" +GitLab API: +https://docs.gitlab.com/ee/api/merge_requests.html +https://docs.gitlab.com/ee/api/merge_request_approvals.html +""" + +from typing import Any, cast, Dict, Optional, TYPE_CHECKING, Union + +import requests + +import gitlab +from gitlab import cli +from gitlab import exceptions as exc +from gitlab import types +from gitlab.base import RESTManager, RESTObject, RESTObjectList +from gitlab.mixins import ( + CRUDMixin, + ListMixin, + ObjectDeleteMixin, + ParticipantsMixin, + RetrieveMixin, + SaveMixin, + SubscribableMixin, + TimeTrackingMixin, + TodoMixin, +) +from gitlab.types import RequiredOptional + +from .award_emojis import ProjectMergeRequestAwardEmojiManager # noqa: F401 +from .commits import ProjectCommit, ProjectCommitManager +from .discussions import ProjectMergeRequestDiscussionManager # noqa: F401 +from .draft_notes import ProjectMergeRequestDraftNoteManager +from .events import ( # noqa: F401 + ProjectMergeRequestResourceLabelEventManager, + ProjectMergeRequestResourceMilestoneEventManager, + ProjectMergeRequestResourceStateEventManager, +) +from .issues import ProjectIssue, ProjectIssueManager +from .merge_request_approvals import ( # noqa: F401 + ProjectMergeRequestApprovalManager, + ProjectMergeRequestApprovalRuleManager, + ProjectMergeRequestApprovalStateManager, +) +from .notes import ProjectMergeRequestNoteManager # noqa: F401 +from .pipelines import ProjectMergeRequestPipelineManager # noqa: F401 +from .reviewers import ProjectMergeRequestReviewerDetailManager + +__all__ = [ + "MergeRequest", + "MergeRequestManager", + "GroupMergeRequest", + "GroupMergeRequestManager", + "ProjectMergeRequest", + "ProjectMergeRequestManager", + "ProjectDeploymentMergeRequest", + "ProjectDeploymentMergeRequestManager", + "ProjectMergeRequestDiff", + "ProjectMergeRequestDiffManager", +] + + +class MergeRequest(RESTObject): + pass + + +class MergeRequestManager(ListMixin, RESTManager): + _path = "/merge_requests" + _obj_cls = MergeRequest + _list_filters = ( + "state", + "order_by", + "sort", + "milestone", + "view", + "labels", + "with_labels_details", + "with_merge_status_recheck", + "created_after", + "created_before", + "updated_after", + "updated_before", + "scope", + "author_id", + "author_username", + "assignee_id", + "approver_ids", + "approved_by_ids", + "reviewer_id", + "reviewer_username", + "my_reaction_emoji", + "source_branch", + "target_branch", + "search", + "in", + "wip", + "not", + "environment", + "deployed_before", + "deployed_after", + ) + _types = { + "approver_ids": types.ArrayAttribute, + "approved_by_ids": types.ArrayAttribute, + "in": types.CommaSeparatedListAttribute, + "labels": types.CommaSeparatedListAttribute, + } + + +class GroupMergeRequest(RESTObject): + pass + + +class GroupMergeRequestManager(ListMixin, RESTManager): + _path = "/groups/{group_id}/merge_requests" + _obj_cls = GroupMergeRequest + _from_parent_attrs = {"group_id": "id"} + _list_filters = ( + "state", + "order_by", + "sort", + "milestone", + "view", + "labels", + "created_after", + "created_before", + "updated_after", + "updated_before", + "scope", + "author_id", + "assignee_id", + "approver_ids", + "approved_by_ids", + "my_reaction_emoji", + "source_branch", + "target_branch", + "search", + "wip", + ) + _types = { + "approver_ids": types.ArrayAttribute, + "approved_by_ids": types.ArrayAttribute, + "labels": types.CommaSeparatedListAttribute, + } + + +class ProjectMergeRequest( + SubscribableMixin, + TodoMixin, + TimeTrackingMixin, + ParticipantsMixin, + SaveMixin, + ObjectDeleteMixin, + RESTObject, +): + _id_attr = "iid" + + approval_rules: ProjectMergeRequestApprovalRuleManager + approval_state: ProjectMergeRequestApprovalStateManager + approvals: ProjectMergeRequestApprovalManager + awardemojis: ProjectMergeRequestAwardEmojiManager + diffs: "ProjectMergeRequestDiffManager" + discussions: ProjectMergeRequestDiscussionManager + draft_notes: ProjectMergeRequestDraftNoteManager + notes: ProjectMergeRequestNoteManager + pipelines: ProjectMergeRequestPipelineManager + resourcelabelevents: ProjectMergeRequestResourceLabelEventManager + resourcemilestoneevents: ProjectMergeRequestResourceMilestoneEventManager + resourcestateevents: ProjectMergeRequestResourceStateEventManager + reviewer_details: ProjectMergeRequestReviewerDetailManager + + @cli.register_custom_action(cls_names="ProjectMergeRequest") + @exc.on_http_error(exc.GitlabMROnBuildSuccessError) + def cancel_merge_when_pipeline_succeeds(self, **kwargs: Any) -> Dict[str, str]: + """Cancel merge when the pipeline succeeds. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabMROnBuildSuccessError: If the server could not handle the + request + + Returns: + dict of the parsed json returned by the server + """ + + path = ( + f"{self.manager.path}/{self.encoded_id}/cancel_merge_when_pipeline_succeeds" + ) + server_data = self.manager.gitlab.http_post(path, **kwargs) + # 2022-10-30: The docs at + # https://docs.gitlab.com/ee/api/merge_requests.html#cancel-merge-when-pipeline-succeeds + # are incorrect in that the return value is actually just: + # {'status': 'success'} for a successful cancel. + if TYPE_CHECKING: + assert isinstance(server_data, dict) + return server_data + + @cli.register_custom_action(cls_names="ProjectMergeRequest") + @exc.on_http_error(exc.GitlabListError) + def related_issues(self, **kwargs: Any) -> RESTObjectList: + """List issues related to this merge request." + + Args: + all: If True, return all the items, without pagination + per_page: Number of items to retrieve per request + page: ID of the page to return (starts with page 1) + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabListError: If the list could not be retrieved + + Returns: + List of issues + """ + + path = f"{self.manager.path}/{self.encoded_id}/related_issues" + data_list = self.manager.gitlab.http_list(path, iterator=True, **kwargs) + + if TYPE_CHECKING: + assert isinstance(data_list, gitlab.GitlabList) + + manager = ProjectIssueManager(self.manager.gitlab, parent=self.manager._parent) + + return RESTObjectList(manager, ProjectIssue, data_list) + + @cli.register_custom_action(cls_names="ProjectMergeRequest") + @exc.on_http_error(exc.GitlabListError) + def closes_issues(self, **kwargs: Any) -> RESTObjectList: + """List issues that will close on merge." + + Args: + all: If True, return all the items, without pagination + per_page: Number of items to retrieve per request + page: ID of the page to return (starts with page 1) + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabListError: If the list could not be retrieved + + Returns: + List of issues + """ + path = f"{self.manager.path}/{self.encoded_id}/closes_issues" + data_list = self.manager.gitlab.http_list(path, iterator=True, **kwargs) + if TYPE_CHECKING: + assert isinstance(data_list, gitlab.GitlabList) + manager = ProjectIssueManager(self.manager.gitlab, parent=self.manager._parent) + return RESTObjectList(manager, ProjectIssue, data_list) + + @cli.register_custom_action(cls_names="ProjectMergeRequest") + @exc.on_http_error(exc.GitlabListError) + def commits(self, **kwargs: Any) -> RESTObjectList: + """List the merge request commits. + + Args: + all: If True, return all the items, without pagination + per_page: Number of items to retrieve per request + page: ID of the page to return (starts with page 1) + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabListError: If the list could not be retrieved + + Returns: + The list of commits + """ + + path = f"{self.manager.path}/{self.encoded_id}/commits" + data_list = self.manager.gitlab.http_list(path, iterator=True, **kwargs) + if TYPE_CHECKING: + assert isinstance(data_list, gitlab.GitlabList) + manager = ProjectCommitManager(self.manager.gitlab, parent=self.manager._parent) + return RESTObjectList(manager, ProjectCommit, data_list) + + @cli.register_custom_action( + cls_names="ProjectMergeRequest", optional=("access_raw_diffs",) + ) + @exc.on_http_error(exc.GitlabListError) + def changes(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """List the merge request changes. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabListError: If the list could not be retrieved + + Returns: + List of changes + """ + path = f"{self.manager.path}/{self.encoded_id}/changes" + return self.manager.gitlab.http_get(path, **kwargs) + + @cli.register_custom_action(cls_names="ProjectMergeRequest", optional=("sha",)) + @exc.on_http_error(exc.GitlabMRApprovalError) + def approve(self, sha: Optional[str] = None, **kwargs: Any) -> Dict[str, Any]: + """Approve the merge request. + + Args: + sha: Head SHA of MR + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabMRApprovalError: If the approval failed + + Returns: + A dict containing the result. + + https://docs.gitlab.com/ee/api/merge_request_approvals.html#approve-merge-request + """ + path = f"{self.manager.path}/{self.encoded_id}/approve" + data = {} + if sha: + data["sha"] = sha + + server_data = self.manager.gitlab.http_post(path, post_data=data, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + self._update_attrs(server_data) + return server_data + + @cli.register_custom_action(cls_names="ProjectMergeRequest") + @exc.on_http_error(exc.GitlabMRApprovalError) + def unapprove(self, **kwargs: Any) -> None: + """Unapprove the merge request. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabMRApprovalError: If the unapproval failed + + https://docs.gitlab.com/ee/api/merge_request_approvals.html#unapprove-merge-request + """ + path = f"{self.manager.path}/{self.encoded_id}/unapprove" + data: Dict[str, Any] = {} + + server_data = self.manager.gitlab.http_post(path, post_data=data, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + self._update_attrs(server_data) + + @cli.register_custom_action(cls_names="ProjectMergeRequest") + @exc.on_http_error(exc.GitlabMRRebaseError) + def rebase(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """Attempt to rebase the source branch onto the target branch + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabMRRebaseError: If rebasing failed + """ + path = f"{self.manager.path}/{self.encoded_id}/rebase" + data: Dict[str, Any] = {} + return self.manager.gitlab.http_put(path, post_data=data, **kwargs) + + @cli.register_custom_action(cls_names="ProjectMergeRequest") + @exc.on_http_error(exc.GitlabMRResetApprovalError) + def reset_approvals( + self, **kwargs: Any + ) -> Union[Dict[str, Any], requests.Response]: + """Clear all approvals of the merge request. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabMRResetApprovalError: If reset approval failed + """ + path = f"{self.manager.path}/{self.encoded_id}/reset_approvals" + data: Dict[str, Any] = {} + return self.manager.gitlab.http_put(path, post_data=data, **kwargs) + + @cli.register_custom_action(cls_names="ProjectMergeRequest") + @exc.on_http_error(exc.GitlabGetError) + def merge_ref(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """Attempt to merge changes between source and target branches into + `refs/merge-requests/:iid/merge`. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabGetError: If cannot be merged + """ + path = f"{self.manager.path}/{self.encoded_id}/merge_ref" + return self.manager.gitlab.http_get(path, **kwargs) + + @cli.register_custom_action( + cls_names="ProjectMergeRequest", + optional=( + "merge_commit_message", + "should_remove_source_branch", + "merge_when_pipeline_succeeds", + ), + ) + @exc.on_http_error(exc.GitlabMRClosedError) + def merge( + self, + merge_commit_message: Optional[str] = None, + should_remove_source_branch: Optional[bool] = None, + merge_when_pipeline_succeeds: Optional[bool] = None, + **kwargs: Any, + ) -> Dict[str, Any]: + """Accept the merge request. + + Args: + merge_commit_message: Commit message + should_remove_source_branch: If True, removes the source + branch + merge_when_pipeline_succeeds: Wait for the build to succeed, + then merge + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabMRClosedError: If the merge failed + """ + path = f"{self.manager.path}/{self.encoded_id}/merge" + data: Dict[str, Any] = {} + if merge_commit_message: + data["merge_commit_message"] = merge_commit_message + if should_remove_source_branch is not None: + data["should_remove_source_branch"] = should_remove_source_branch + if merge_when_pipeline_succeeds is not None: + data["merge_when_pipeline_succeeds"] = merge_when_pipeline_succeeds + + server_data = self.manager.gitlab.http_put(path, post_data=data, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + self._update_attrs(server_data) + return server_data + + +class ProjectMergeRequestManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/merge_requests" + _obj_cls = ProjectMergeRequest + _from_parent_attrs = {"project_id": "id"} + _optional_get_attrs = ( + "render_html", + "include_diverged_commits_count", + "include_rebase_in_progress", + ) + _create_attrs = RequiredOptional( + required=("source_branch", "target_branch", "title"), + optional=( + "allow_collaboration", + "allow_maintainer_to_push", + "approvals_before_merge", + "assignee_id", + "assignee_ids", + "description", + "labels", + "milestone_id", + "remove_source_branch", + "reviewer_ids", + "squash", + "target_project_id", + ), + ) + _update_attrs = RequiredOptional( + optional=( + "target_branch", + "assignee_id", + "title", + "description", + "state_event", + "labels", + "milestone_id", + "remove_source_branch", + "discussion_locked", + "allow_maintainer_to_push", + "squash", + "reviewer_ids", + ), + ) + _list_filters = ( + "state", + "order_by", + "sort", + "milestone", + "view", + "labels", + "created_after", + "created_before", + "updated_after", + "updated_before", + "scope", + "iids", + "author_id", + "assignee_id", + "approver_ids", + "approved_by_ids", + "my_reaction_emoji", + "source_branch", + "target_branch", + "search", + "wip", + ) + _types = { + "approver_ids": types.ArrayAttribute, + "approved_by_ids": types.ArrayAttribute, + "iids": types.ArrayAttribute, + "labels": types.CommaSeparatedListAttribute, + } + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectMergeRequest: + return cast(ProjectMergeRequest, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectDeploymentMergeRequest(MergeRequest): + pass + + +class ProjectDeploymentMergeRequestManager(MergeRequestManager): + _path = "/projects/{project_id}/deployments/{deployment_id}/merge_requests" + _obj_cls = ProjectDeploymentMergeRequest + _from_parent_attrs = {"deployment_id": "id", "project_id": "project_id"} + + +class ProjectMergeRequestDiff(RESTObject): + pass + + +class ProjectMergeRequestDiffManager(RetrieveMixin, RESTManager): + _path = "/projects/{project_id}/merge_requests/{mr_iid}/versions" + _obj_cls = ProjectMergeRequestDiff + _from_parent_attrs = {"project_id": "project_id", "mr_iid": "iid"} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectMergeRequestDiff: + return cast(ProjectMergeRequestDiff, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/merge_trains.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/merge_trains.py new file mode 100644 index 0000000..9f8e1df --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/merge_trains.py @@ -0,0 +1,18 @@ +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ListMixin + +__all__ = [ + "ProjectMergeTrain", + "ProjectMergeTrainManager", +] + + +class ProjectMergeTrain(RESTObject): + pass + + +class ProjectMergeTrainManager(ListMixin, RESTManager): + _path = "/projects/{project_id}/merge_trains" + _obj_cls = ProjectMergeTrain + _from_parent_attrs = {"project_id": "id"} + _list_filters = ("scope",) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/milestones.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/milestones.py new file mode 100644 index 0000000..aa0c3a8 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/milestones.py @@ -0,0 +1,184 @@ +from typing import Any, cast, TYPE_CHECKING, Union + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab import types +from gitlab.base import RESTManager, RESTObject, RESTObjectList +from gitlab.mixins import ( + CRUDMixin, + ObjectDeleteMixin, + PromoteMixin, + SaveMixin, + UpdateMethod, +) +from gitlab.types import RequiredOptional + +from .issues import GroupIssue, GroupIssueManager, ProjectIssue, ProjectIssueManager +from .merge_requests import ( + GroupMergeRequest, + ProjectMergeRequest, + ProjectMergeRequestManager, +) + +__all__ = [ + "GroupMilestone", + "GroupMilestoneManager", + "ProjectMilestone", + "ProjectMilestoneManager", +] + + +class GroupMilestone(SaveMixin, ObjectDeleteMixin, RESTObject): + _repr_attr = "title" + + @cli.register_custom_action(cls_names="GroupMilestone") + @exc.on_http_error(exc.GitlabListError) + def issues(self, **kwargs: Any) -> RESTObjectList: + """List issues related to this milestone. + + Args: + all: If True, return all the items, without pagination + per_page: Number of items to retrieve per request + page: ID of the page to return (starts with page 1) + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabListError: If the list could not be retrieved + + Returns: + The list of issues + """ + + path = f"{self.manager.path}/{self.encoded_id}/issues" + data_list = self.manager.gitlab.http_list(path, iterator=True, **kwargs) + if TYPE_CHECKING: + assert isinstance(data_list, RESTObjectList) + manager = GroupIssueManager(self.manager.gitlab, parent=self.manager._parent) + # FIXME(gpocentek): the computed manager path is not correct + return RESTObjectList(manager, GroupIssue, data_list) + + @cli.register_custom_action(cls_names="GroupMilestone") + @exc.on_http_error(exc.GitlabListError) + def merge_requests(self, **kwargs: Any) -> RESTObjectList: + """List the merge requests related to this milestone. + + Args: + all: If True, return all the items, without pagination + per_page: Number of items to retrieve per request + page: ID of the page to return (starts with page 1) + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabListError: If the list could not be retrieved + + Returns: + The list of merge requests + """ + path = f"{self.manager.path}/{self.encoded_id}/merge_requests" + data_list = self.manager.gitlab.http_list(path, iterator=True, **kwargs) + if TYPE_CHECKING: + assert isinstance(data_list, RESTObjectList) + manager = GroupIssueManager(self.manager.gitlab, parent=self.manager._parent) + # FIXME(gpocentek): the computed manager path is not correct + return RESTObjectList(manager, GroupMergeRequest, data_list) + + +class GroupMilestoneManager(CRUDMixin, RESTManager): + _path = "/groups/{group_id}/milestones" + _obj_cls = GroupMilestone + _from_parent_attrs = {"group_id": "id"} + _create_attrs = RequiredOptional( + required=("title",), optional=("description", "due_date", "start_date") + ) + _update_attrs = RequiredOptional( + optional=("title", "description", "due_date", "start_date", "state_event"), + ) + _list_filters = ("iids", "state", "search") + _types = {"iids": types.ArrayAttribute} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> GroupMilestone: + return cast(GroupMilestone, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectMilestone(PromoteMixin, SaveMixin, ObjectDeleteMixin, RESTObject): + _repr_attr = "title" + _update_method = UpdateMethod.POST + + @cli.register_custom_action(cls_names="ProjectMilestone") + @exc.on_http_error(exc.GitlabListError) + def issues(self, **kwargs: Any) -> RESTObjectList: + """List issues related to this milestone. + + Args: + all: If True, return all the items, without pagination + per_page: Number of items to retrieve per request + page: ID of the page to return (starts with page 1) + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabListError: If the list could not be retrieved + + Returns: + The list of issues + """ + + path = f"{self.manager.path}/{self.encoded_id}/issues" + data_list = self.manager.gitlab.http_list(path, iterator=True, **kwargs) + if TYPE_CHECKING: + assert isinstance(data_list, RESTObjectList) + manager = ProjectIssueManager(self.manager.gitlab, parent=self.manager._parent) + # FIXME(gpocentek): the computed manager path is not correct + return RESTObjectList(manager, ProjectIssue, data_list) + + @cli.register_custom_action(cls_names="ProjectMilestone") + @exc.on_http_error(exc.GitlabListError) + def merge_requests(self, **kwargs: Any) -> RESTObjectList: + """List the merge requests related to this milestone. + + Args: + all: If True, return all the items, without pagination + per_page: Number of items to retrieve per request + page: ID of the page to return (starts with page 1) + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabListError: If the list could not be retrieved + + Returns: + The list of merge requests + """ + path = f"{self.manager.path}/{self.encoded_id}/merge_requests" + data_list = self.manager.gitlab.http_list(path, iterator=True, **kwargs) + if TYPE_CHECKING: + assert isinstance(data_list, RESTObjectList) + manager = ProjectMergeRequestManager( + self.manager.gitlab, parent=self.manager._parent + ) + # FIXME(gpocentek): the computed manager path is not correct + return RESTObjectList(manager, ProjectMergeRequest, data_list) + + +class ProjectMilestoneManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/milestones" + _obj_cls = ProjectMilestone + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("title",), + optional=("description", "due_date", "start_date", "state_event"), + ) + _update_attrs = RequiredOptional( + optional=("title", "description", "due_date", "start_date", "state_event"), + ) + _list_filters = ("iids", "state", "search") + _types = {"iids": types.ArrayAttribute} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectMilestone: + return cast(ProjectMilestone, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/namespaces.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/namespaces.py new file mode 100644 index 0000000..ccaf0ef --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/namespaces.py @@ -0,0 +1,49 @@ +from typing import Any, cast, TYPE_CHECKING, Union + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import RetrieveMixin +from gitlab.utils import EncodedId + +__all__ = [ + "Namespace", + "NamespaceManager", +] + + +class Namespace(RESTObject): + pass + + +class NamespaceManager(RetrieveMixin, RESTManager): + _path = "/namespaces" + _obj_cls = Namespace + _list_filters = ("search",) + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> Namespace: + return cast(Namespace, super().get(id=id, lazy=lazy, **kwargs)) + + @cli.register_custom_action( + cls_names="NamespaceManager", required=("namespace", "parent_id") + ) + @exc.on_http_error(exc.GitlabGetError) + def exists(self, namespace: str, **kwargs: Any) -> Namespace: + """Get existence of a namespace by path. + + Args: + namespace: The path to the namespace. + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server failed to perform the request + + Returns: + Data on namespace existence returned from the server. + """ + path = f"{self.path}/{EncodedId(namespace)}/exists" + server_data = self.gitlab.http_get(path, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + return self._obj_cls(self, server_data) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/notes.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/notes.py new file mode 100644 index 0000000..a083e55 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/notes.py @@ -0,0 +1,262 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CreateMixin, + CRUDMixin, + DeleteMixin, + GetMixin, + ObjectDeleteMixin, + RetrieveMixin, + SaveMixin, + UpdateMixin, +) +from gitlab.types import RequiredOptional + +from .award_emojis import ( # noqa: F401 + GroupEpicNoteAwardEmojiManager, + ProjectIssueNoteAwardEmojiManager, + ProjectMergeRequestNoteAwardEmojiManager, + ProjectSnippetNoteAwardEmojiManager, +) + +__all__ = [ + "GroupEpicNote", + "GroupEpicNoteManager", + "GroupEpicDiscussionNote", + "GroupEpicDiscussionNoteManager", + "ProjectNote", + "ProjectNoteManager", + "ProjectCommitDiscussionNote", + "ProjectCommitDiscussionNoteManager", + "ProjectIssueNote", + "ProjectIssueNoteManager", + "ProjectIssueDiscussionNote", + "ProjectIssueDiscussionNoteManager", + "ProjectMergeRequestNote", + "ProjectMergeRequestNoteManager", + "ProjectMergeRequestDiscussionNote", + "ProjectMergeRequestDiscussionNoteManager", + "ProjectSnippetNote", + "ProjectSnippetNoteManager", + "ProjectSnippetDiscussionNote", + "ProjectSnippetDiscussionNoteManager", +] + + +class GroupEpicNote(SaveMixin, ObjectDeleteMixin, RESTObject): + awardemojis: GroupEpicNoteAwardEmojiManager + + +class GroupEpicNoteManager(CRUDMixin, RESTManager): + _path = "/groups/{group_id}/epics/{epic_id}/notes" + _obj_cls = GroupEpicNote + _from_parent_attrs = {"group_id": "group_id", "epic_id": "id"} + _create_attrs = RequiredOptional(required=("body",), optional=("created_at",)) + _update_attrs = RequiredOptional(required=("body",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> GroupEpicNote: + return cast(GroupEpicNote, super().get(id=id, lazy=lazy, **kwargs)) + + +class GroupEpicDiscussionNote(SaveMixin, ObjectDeleteMixin, RESTObject): + pass + + +class GroupEpicDiscussionNoteManager( + GetMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager +): + _path = "/groups/{group_id}/epics/{epic_id}/discussions/{discussion_id}/notes" + _obj_cls = GroupEpicDiscussionNote + _from_parent_attrs = { + "group_id": "group_id", + "epic_id": "epic_id", + "discussion_id": "id", + } + _create_attrs = RequiredOptional(required=("body",), optional=("created_at",)) + _update_attrs = RequiredOptional(required=("body",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> GroupEpicDiscussionNote: + return cast(GroupEpicDiscussionNote, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectNote(RESTObject): + pass + + +class ProjectNoteManager(RetrieveMixin, RESTManager): + _path = "/projects/{project_id}/notes" + _obj_cls = ProjectNote + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional(required=("body",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectNote: + return cast(ProjectNote, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectCommitDiscussionNote(SaveMixin, ObjectDeleteMixin, RESTObject): + pass + + +class ProjectCommitDiscussionNoteManager( + GetMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager +): + _path = ( + "/projects/{project_id}/repository/commits/{commit_id}/" + "discussions/{discussion_id}/notes" + ) + _obj_cls = ProjectCommitDiscussionNote + _from_parent_attrs = { + "project_id": "project_id", + "commit_id": "commit_id", + "discussion_id": "id", + } + _create_attrs = RequiredOptional( + required=("body",), optional=("created_at", "position") + ) + _update_attrs = RequiredOptional(required=("body",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectCommitDiscussionNote: + return cast( + ProjectCommitDiscussionNote, super().get(id=id, lazy=lazy, **kwargs) + ) + + +class ProjectIssueNote(SaveMixin, ObjectDeleteMixin, RESTObject): + awardemojis: ProjectIssueNoteAwardEmojiManager + + +class ProjectIssueNoteManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/issues/{issue_iid}/notes" + _obj_cls = ProjectIssueNote + _from_parent_attrs = {"project_id": "project_id", "issue_iid": "iid"} + _create_attrs = RequiredOptional(required=("body",), optional=("created_at",)) + _update_attrs = RequiredOptional(required=("body",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectIssueNote: + return cast(ProjectIssueNote, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectIssueDiscussionNote(SaveMixin, ObjectDeleteMixin, RESTObject): + pass + + +class ProjectIssueDiscussionNoteManager( + GetMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager +): + _path = ( + "/projects/{project_id}/issues/{issue_iid}/discussions/{discussion_id}/notes" + ) + _obj_cls = ProjectIssueDiscussionNote + _from_parent_attrs = { + "project_id": "project_id", + "issue_iid": "issue_iid", + "discussion_id": "id", + } + _create_attrs = RequiredOptional(required=("body",), optional=("created_at",)) + _update_attrs = RequiredOptional(required=("body",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectIssueDiscussionNote: + return cast(ProjectIssueDiscussionNote, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectMergeRequestNote(SaveMixin, ObjectDeleteMixin, RESTObject): + awardemojis: ProjectMergeRequestNoteAwardEmojiManager + + +class ProjectMergeRequestNoteManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/merge_requests/{mr_iid}/notes" + _obj_cls = ProjectMergeRequestNote + _from_parent_attrs = {"project_id": "project_id", "mr_iid": "iid"} + _create_attrs = RequiredOptional(required=("body",)) + _update_attrs = RequiredOptional(required=("body",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectMergeRequestNote: + return cast(ProjectMergeRequestNote, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectMergeRequestDiscussionNote(SaveMixin, ObjectDeleteMixin, RESTObject): + pass + + +class ProjectMergeRequestDiscussionNoteManager( + GetMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager +): + _path = ( + "/projects/{project_id}/merge_requests/{mr_iid}/" + "discussions/{discussion_id}/notes" + ) + _obj_cls = ProjectMergeRequestDiscussionNote + _from_parent_attrs = { + "project_id": "project_id", + "mr_iid": "mr_iid", + "discussion_id": "id", + } + _create_attrs = RequiredOptional(required=("body",), optional=("created_at",)) + _update_attrs = RequiredOptional(required=("body",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectMergeRequestDiscussionNote: + return cast( + ProjectMergeRequestDiscussionNote, super().get(id=id, lazy=lazy, **kwargs) + ) + + +class ProjectSnippetNote(SaveMixin, ObjectDeleteMixin, RESTObject): + awardemojis: ProjectSnippetNoteAwardEmojiManager + + +class ProjectSnippetNoteManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/snippets/{snippet_id}/notes" + _obj_cls = ProjectSnippetNote + _from_parent_attrs = {"project_id": "project_id", "snippet_id": "id"} + _create_attrs = RequiredOptional(required=("body",)) + _update_attrs = RequiredOptional(required=("body",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectSnippetNote: + return cast(ProjectSnippetNote, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectSnippetDiscussionNote(SaveMixin, ObjectDeleteMixin, RESTObject): + pass + + +class ProjectSnippetDiscussionNoteManager( + GetMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager +): + _path = ( + "/projects/{project_id}/snippets/{snippet_id}/" + "discussions/{discussion_id}/notes" + ) + _obj_cls = ProjectSnippetDiscussionNote + _from_parent_attrs = { + "project_id": "project_id", + "snippet_id": "snippet_id", + "discussion_id": "id", + } + _create_attrs = RequiredOptional(required=("body",), optional=("created_at",)) + _update_attrs = RequiredOptional(required=("body",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectSnippetDiscussionNote: + return cast( + ProjectSnippetDiscussionNote, super().get(id=id, lazy=lazy, **kwargs) + ) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/notification_settings.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/notification_settings.py new file mode 100644 index 0000000..4b38549 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/notification_settings.py @@ -0,0 +1,69 @@ +from typing import Any, cast + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import GetWithoutIdMixin, SaveMixin, UpdateMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "NotificationSettings", + "NotificationSettingsManager", + "GroupNotificationSettings", + "GroupNotificationSettingsManager", + "ProjectNotificationSettings", + "ProjectNotificationSettingsManager", +] + + +class NotificationSettings(SaveMixin, RESTObject): + _id_attr = None + + +class NotificationSettingsManager(GetWithoutIdMixin, UpdateMixin, RESTManager): + _path = "/notification_settings" + _obj_cls = NotificationSettings + + _update_attrs = RequiredOptional( + optional=( + "level", + "notification_email", + "new_note", + "new_issue", + "reopen_issue", + "close_issue", + "reassign_issue", + "new_merge_request", + "reopen_merge_request", + "close_merge_request", + "reassign_merge_request", + "merge_merge_request", + ), + ) + + def get(self, **kwargs: Any) -> NotificationSettings: + return cast(NotificationSettings, super().get(**kwargs)) + + +class GroupNotificationSettings(NotificationSettings): + pass + + +class GroupNotificationSettingsManager(NotificationSettingsManager): + _path = "/groups/{group_id}/notification_settings" + _obj_cls = GroupNotificationSettings + _from_parent_attrs = {"group_id": "id"} + + def get(self, **kwargs: Any) -> GroupNotificationSettings: + return cast(GroupNotificationSettings, super().get(id=id, **kwargs)) + + +class ProjectNotificationSettings(NotificationSettings): + pass + + +class ProjectNotificationSettingsManager(NotificationSettingsManager): + _path = "/projects/{project_id}/notification_settings" + _obj_cls = ProjectNotificationSettings + _from_parent_attrs = {"project_id": "id"} + + def get(self, **kwargs: Any) -> ProjectNotificationSettings: + return cast(ProjectNotificationSettings, super().get(id=id, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/package_protection_rules.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/package_protection_rules.py new file mode 100644 index 0000000..b863438 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/package_protection_rules.py @@ -0,0 +1,43 @@ +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CreateMixin, + DeleteMixin, + ListMixin, + ObjectDeleteMixin, + SaveMixin, + UpdateMethod, + UpdateMixin, +) +from gitlab.types import RequiredOptional + +__all__ = [ + "ProjectPackageProtectionRule", + "ProjectPackageProtectionRuleManager", +] + + +class ProjectPackageProtectionRule(ObjectDeleteMixin, SaveMixin, RESTObject): + _repr_attr = "package_name_pattern" + + +class ProjectPackageProtectionRuleManager( + ListMixin, CreateMixin, DeleteMixin, UpdateMixin, RESTManager +): + _path = "/projects/{project_id}/packages/protection/rules" + _obj_cls = ProjectPackageProtectionRule + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=( + "package_name_pattern", + "package_type", + "minimum_access_level_for_push", + ), + ) + _update_attrs = RequiredOptional( + optional=( + "package_name_pattern", + "package_type", + "minimum_access_level_for_push", + ), + ) + _update_method = UpdateMethod.PATCH diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/packages.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/packages.py new file mode 100644 index 0000000..8dcc3bd --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/packages.py @@ -0,0 +1,230 @@ +""" +GitLab API: +https://docs.gitlab.com/ee/api/packages.html +https://docs.gitlab.com/ee/user/packages/generic_packages/ +""" + +from pathlib import Path +from typing import ( + Any, + BinaryIO, + Callable, + cast, + Iterator, + Optional, + TYPE_CHECKING, + Union, +) + +import requests + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab import utils +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import DeleteMixin, GetMixin, ListMixin, ObjectDeleteMixin + +__all__ = [ + "GenericPackage", + "GenericPackageManager", + "GroupPackage", + "GroupPackageManager", + "ProjectPackage", + "ProjectPackageManager", + "ProjectPackageFile", + "ProjectPackageFileManager", + "ProjectPackagePipeline", + "ProjectPackagePipelineManager", +] + + +class GenericPackage(RESTObject): + _id_attr = "package_name" + + +class GenericPackageManager(RESTManager): + _path = "/projects/{project_id}/packages/generic" + _obj_cls = GenericPackage + _from_parent_attrs = {"project_id": "id"} + + @cli.register_custom_action( + cls_names="GenericPackageManager", + required=("package_name", "package_version", "file_name", "path"), + ) + @exc.on_http_error(exc.GitlabUploadError) + def upload( + self, + package_name: str, + package_version: str, + file_name: str, + path: Optional[Union[str, Path]] = None, + select: Optional[str] = None, + data: Optional[Union[bytes, BinaryIO]] = None, + **kwargs: Any, + ) -> GenericPackage: + """Upload a file as a generic package. + + Args: + package_name: The package name. Must follow generic package + name regex rules + package_version: The package version. Must follow semantic + version regex rules + file_name: The name of the file as uploaded in the registry + path: The path to a local file to upload + select: GitLab API accepts a value of 'package_file' + + Raises: + GitlabConnectionError: If the server cannot be reached + GitlabUploadError: If the file upload fails + GitlabUploadError: If ``path`` cannot be read + GitlabUploadError: If both ``path`` and ``data`` are passed + + Returns: + An object storing the metadata of the uploaded package. + + https://docs.gitlab.com/ee/user/packages/generic_packages/ + """ + + if path is None and data is None: + raise exc.GitlabUploadError("No file contents or path specified") + + if path is not None and data is not None: + raise exc.GitlabUploadError("File contents and file path specified") + + file_data: Optional[Union[bytes, BinaryIO]] = data + + if not file_data: + if TYPE_CHECKING: + assert path is not None + + try: + with open(path, "rb") as f: + file_data = f.read() + except OSError as e: + raise exc.GitlabUploadError( + f"Failed to read package file {path}" + ) from e + + url = f"{self._computed_path}/{package_name}/{package_version}/{file_name}" + query_data = {} if select is None else {"select": select} + server_data = self.gitlab.http_put( + url, query_data=query_data, post_data=file_data, raw=True, **kwargs + ) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + + attrs = { + "package_name": package_name, + "package_version": package_version, + "file_name": file_name, + "path": path, + } + attrs.update(server_data) + return self._obj_cls(self, attrs=attrs) + + @cli.register_custom_action( + cls_names="GenericPackageManager", + required=("package_name", "package_version", "file_name"), + ) + @exc.on_http_error(exc.GitlabGetError) + def download( + self, + package_name: str, + package_version: str, + file_name: str, + streamed: bool = False, + action: Optional[Callable[[bytes], None]] = None, + chunk_size: int = 1024, + *, + iterator: bool = False, + **kwargs: Any, + ) -> Optional[Union[bytes, Iterator[Any]]]: + """Download a generic package. + + Args: + package_name: The package name. + package_version: The package version. + file_name: The name of the file in the registry + streamed: If True the data will be processed by chunks of + `chunk_size` and each chunk is passed to `action` for + treatment + iterator: If True directly return the underlying response + iterator + action: Callable responsible of dealing with chunk of + data + chunk_size: Size of each chunk + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server failed to perform the request + + Returns: + The package content if streamed is False, None otherwise + """ + path = f"{self._computed_path}/{package_name}/{package_version}/{file_name}" + result = self.gitlab.http_get(path, streamed=streamed, raw=True, **kwargs) + if TYPE_CHECKING: + assert isinstance(result, requests.Response) + return utils.response_content( + result, streamed, action, chunk_size, iterator=iterator + ) + + +class GroupPackage(RESTObject): + pass + + +class GroupPackageManager(ListMixin, RESTManager): + _path = "/groups/{group_id}/packages" + _obj_cls = GroupPackage + _from_parent_attrs = {"group_id": "id"} + _list_filters = ( + "exclude_subgroups", + "order_by", + "sort", + "package_type", + "package_name", + ) + + +class ProjectPackage(ObjectDeleteMixin, RESTObject): + package_files: "ProjectPackageFileManager" + pipelines: "ProjectPackagePipelineManager" + + +class ProjectPackageManager(ListMixin, GetMixin, DeleteMixin, RESTManager): + _path = "/projects/{project_id}/packages" + _obj_cls = ProjectPackage + _from_parent_attrs = {"project_id": "id"} + _list_filters = ( + "order_by", + "sort", + "package_type", + "package_name", + ) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectPackage: + return cast(ProjectPackage, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectPackageFile(ObjectDeleteMixin, RESTObject): + pass + + +class ProjectPackageFileManager(DeleteMixin, ListMixin, RESTManager): + _path = "/projects/{project_id}/packages/{package_id}/package_files" + _obj_cls = ProjectPackageFile + _from_parent_attrs = {"project_id": "project_id", "package_id": "id"} + + +class ProjectPackagePipeline(RESTObject): + pass + + +class ProjectPackagePipelineManager(ListMixin, RESTManager): + _path = "/projects/{project_id}/packages/{package_id}/pipelines" + _obj_cls = ProjectPackagePipeline + _from_parent_attrs = {"project_id": "project_id", "package_id": "id"} diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/pages.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/pages.py new file mode 100644 index 0000000..ed1e2e1 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/pages.py @@ -0,0 +1,69 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CRUDMixin, + DeleteMixin, + GetWithoutIdMixin, + ListMixin, + ObjectDeleteMixin, + RefreshMixin, + SaveMixin, + UpdateMethod, + UpdateMixin, +) +from gitlab.types import RequiredOptional + +__all__ = [ + "PagesDomain", + "PagesDomainManager", + "ProjectPagesDomain", + "ProjectPagesDomainManager", + "ProjectPages", + "ProjectPagesManager", +] + + +class PagesDomain(RESTObject): + _id_attr = "domain" + + +class PagesDomainManager(ListMixin, RESTManager): + _path = "/pages/domains" + _obj_cls = PagesDomain + + +class ProjectPagesDomain(SaveMixin, ObjectDeleteMixin, RESTObject): + _id_attr = "domain" + + +class ProjectPagesDomainManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/pages/domains" + _obj_cls = ProjectPagesDomain + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("domain",), optional=("certificate", "key") + ) + _update_attrs = RequiredOptional(optional=("certificate", "key")) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectPagesDomain: + return cast(ProjectPagesDomain, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectPages(ObjectDeleteMixin, RefreshMixin, RESTObject): + _id_attr = None + + +class ProjectPagesManager(DeleteMixin, UpdateMixin, GetWithoutIdMixin, RESTManager): + _path = "/projects/{project_id}/pages" + _obj_cls = ProjectPages + _from_parent_attrs = {"project_id": "id"} + _update_attrs = RequiredOptional( + optional=("pages_unique_domain_enabled", "pages_https_only") + ) + _update_method: UpdateMethod = UpdateMethod.PATCH + + def get(self, **kwargs: Any) -> ProjectPages: + return cast(ProjectPages, super().get(**kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/personal_access_tokens.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/personal_access_tokens.py new file mode 100644 index 0000000..37a2302 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/personal_access_tokens.py @@ -0,0 +1,48 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CreateMixin, + DeleteMixin, + ObjectDeleteMixin, + ObjectRotateMixin, + RetrieveMixin, + RotateMixin, +) +from gitlab.types import ArrayAttribute, RequiredOptional + +__all__ = [ + "PersonalAccessToken", + "PersonalAccessTokenManager", + "UserPersonalAccessToken", + "UserPersonalAccessTokenManager", +] + + +class PersonalAccessToken(ObjectDeleteMixin, ObjectRotateMixin, RESTObject): + pass + + +class PersonalAccessTokenManager(DeleteMixin, RetrieveMixin, RotateMixin, RESTManager): + _path = "/personal_access_tokens" + _obj_cls = PersonalAccessToken + _list_filters = ("user_id",) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> PersonalAccessToken: + return cast(PersonalAccessToken, super().get(id=id, lazy=lazy, **kwargs)) + + +class UserPersonalAccessToken(RESTObject): + pass + + +class UserPersonalAccessTokenManager(CreateMixin, RESTManager): + _path = "/users/{user_id}/personal_access_tokens" + _obj_cls = UserPersonalAccessToken + _from_parent_attrs = {"user_id": "id"} + _create_attrs = RequiredOptional( + required=("name", "scopes"), optional=("expires_at",) + ) + _types = {"scopes": ArrayAttribute} diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/pipelines.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/pipelines.py new file mode 100644 index 0000000..3236e26 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/pipelines.py @@ -0,0 +1,304 @@ +from typing import Any, cast, Dict, Optional, TYPE_CHECKING, Union + +import requests + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CreateMixin, + CRUDMixin, + DeleteMixin, + GetWithoutIdMixin, + ListMixin, + ObjectDeleteMixin, + RefreshMixin, + RetrieveMixin, + SaveMixin, + UpdateMixin, +) +from gitlab.types import ArrayAttribute, RequiredOptional + +__all__ = [ + "ProjectMergeRequestPipeline", + "ProjectMergeRequestPipelineManager", + "ProjectPipeline", + "ProjectPipelineManager", + "ProjectPipelineJob", + "ProjectPipelineJobManager", + "ProjectPipelineBridge", + "ProjectPipelineBridgeManager", + "ProjectPipelineVariable", + "ProjectPipelineVariableManager", + "ProjectPipelineScheduleVariable", + "ProjectPipelineScheduleVariableManager", + "ProjectPipelineSchedulePipeline", + "ProjectPipelineSchedulePipelineManager", + "ProjectPipelineSchedule", + "ProjectPipelineScheduleManager", + "ProjectPipelineTestReport", + "ProjectPipelineTestReportManager", + "ProjectPipelineTestReportSummary", + "ProjectPipelineTestReportSummaryManager", +] + + +class ProjectMergeRequestPipeline(RESTObject): + pass + + +class ProjectMergeRequestPipelineManager(CreateMixin, ListMixin, RESTManager): + _path = "/projects/{project_id}/merge_requests/{mr_iid}/pipelines" + _obj_cls = ProjectMergeRequestPipeline + _from_parent_attrs = {"project_id": "project_id", "mr_iid": "iid"} + + +class ProjectPipeline(RefreshMixin, ObjectDeleteMixin, RESTObject): + bridges: "ProjectPipelineBridgeManager" + jobs: "ProjectPipelineJobManager" + test_report: "ProjectPipelineTestReportManager" + test_report_summary: "ProjectPipelineTestReportSummaryManager" + variables: "ProjectPipelineVariableManager" + + @cli.register_custom_action(cls_names="ProjectPipeline") + @exc.on_http_error(exc.GitlabPipelineCancelError) + def cancel(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """Cancel the job. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabPipelineCancelError: If the request failed + """ + path = f"{self.manager.path}/{self.encoded_id}/cancel" + return self.manager.gitlab.http_post(path, **kwargs) + + @cli.register_custom_action(cls_names="ProjectPipeline") + @exc.on_http_error(exc.GitlabPipelineRetryError) + def retry(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """Retry the job. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabPipelineRetryError: If the request failed + """ + path = f"{self.manager.path}/{self.encoded_id}/retry" + return self.manager.gitlab.http_post(path, **kwargs) + + +class ProjectPipelineManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager): + _path = "/projects/{project_id}/pipelines" + _obj_cls = ProjectPipeline + _from_parent_attrs = {"project_id": "id"} + _list_filters = ( + "scope", + "status", + "source", + "ref", + "sha", + "yaml_errors", + "name", + "username", + "order_by", + "sort", + ) + _create_attrs = RequiredOptional(required=("ref",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectPipeline: + return cast(ProjectPipeline, super().get(id=id, lazy=lazy, **kwargs)) + + def create( + self, data: Optional[Dict[str, Any]] = None, **kwargs: Any + ) -> ProjectPipeline: + """Creates a new object. + + Args: + data: Parameters to send to the server to create the + resource + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the server cannot perform the request + + Returns: + A new instance of the managed object class build with + the data sent by the server + """ + if TYPE_CHECKING: + assert self.path is not None + path = self.path[:-1] # drop the 's' + return cast( + ProjectPipeline, CreateMixin.create(self, data, path=path, **kwargs) + ) + + def latest(self, ref: Optional[str] = None, lazy: bool = False) -> ProjectPipeline: + """Get the latest pipeline for the most recent commit + on a specific ref in a project + + Args: + ref: The branch or tag to check for the latest pipeline. + Defaults to the default branch when not specified. + Returns: + A Pipeline instance + """ + data = {} + if ref: + data = {"ref": ref} + if TYPE_CHECKING: + assert self._obj_cls is not None + assert self.path is not None + server_data = self.gitlab.http_get(self.path + "/latest", query_data=data) + if TYPE_CHECKING: + assert not isinstance(server_data, requests.Response) + return self._obj_cls(self, server_data, lazy=lazy) + + +class ProjectPipelineJob(RESTObject): + pass + + +class ProjectPipelineJobManager(ListMixin, RESTManager): + _path = "/projects/{project_id}/pipelines/{pipeline_id}/jobs" + _obj_cls = ProjectPipelineJob + _from_parent_attrs = {"project_id": "project_id", "pipeline_id": "id"} + _list_filters = ("scope", "include_retried") + _types = {"scope": ArrayAttribute} + + +class ProjectPipelineBridge(RESTObject): + pass + + +class ProjectPipelineBridgeManager(ListMixin, RESTManager): + _path = "/projects/{project_id}/pipelines/{pipeline_id}/bridges" + _obj_cls = ProjectPipelineBridge + _from_parent_attrs = {"project_id": "project_id", "pipeline_id": "id"} + _list_filters = ("scope",) + + +class ProjectPipelineVariable(RESTObject): + _id_attr = "key" + + +class ProjectPipelineVariableManager(ListMixin, RESTManager): + _path = "/projects/{project_id}/pipelines/{pipeline_id}/variables" + _obj_cls = ProjectPipelineVariable + _from_parent_attrs = {"project_id": "project_id", "pipeline_id": "id"} + + +class ProjectPipelineScheduleVariable(SaveMixin, ObjectDeleteMixin, RESTObject): + _id_attr = "key" + + +class ProjectPipelineScheduleVariableManager( + CreateMixin, UpdateMixin, DeleteMixin, RESTManager +): + _path = "/projects/{project_id}/pipeline_schedules/{pipeline_schedule_id}/variables" + _obj_cls = ProjectPipelineScheduleVariable + _from_parent_attrs = {"project_id": "project_id", "pipeline_schedule_id": "id"} + _create_attrs = RequiredOptional(required=("key", "value")) + _update_attrs = RequiredOptional(required=("key", "value")) + + +class ProjectPipelineSchedulePipeline(RESTObject): + pass + + +class ProjectPipelineSchedulePipelineManager(ListMixin, RESTManager): + _path = "/projects/{project_id}/pipeline_schedules/{pipeline_schedule_id}/pipelines" + _obj_cls = ProjectPipelineSchedulePipeline + _from_parent_attrs = {"project_id": "project_id", "pipeline_schedule_id": "id"} + + +class ProjectPipelineSchedule(SaveMixin, ObjectDeleteMixin, RESTObject): + variables: ProjectPipelineScheduleVariableManager + pipelines: ProjectPipelineSchedulePipelineManager + + @cli.register_custom_action(cls_names="ProjectPipelineSchedule") + @exc.on_http_error(exc.GitlabOwnershipError) + def take_ownership(self, **kwargs: Any) -> None: + """Update the owner of a pipeline schedule. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabOwnershipError: If the request failed + """ + path = f"{self.manager.path}/{self.encoded_id}/take_ownership" + server_data = self.manager.gitlab.http_post(path, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + self._update_attrs(server_data) + + @cli.register_custom_action(cls_names="ProjectPipelineSchedule") + @exc.on_http_error(exc.GitlabPipelinePlayError) + def play(self, **kwargs: Any) -> Dict[str, Any]: + """Trigger a new scheduled pipeline, which runs immediately. + The next scheduled run of this pipeline is not affected. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabPipelinePlayError: If the request failed + """ + path = f"{self.manager.path}/{self.encoded_id}/play" + server_data = self.manager.gitlab.http_post(path, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + self._update_attrs(server_data) + return server_data + + +class ProjectPipelineScheduleManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/pipeline_schedules" + _obj_cls = ProjectPipelineSchedule + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("description", "ref", "cron"), optional=("cron_timezone", "active") + ) + _update_attrs = RequiredOptional( + optional=("description", "ref", "cron", "cron_timezone", "active"), + ) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectPipelineSchedule: + return cast(ProjectPipelineSchedule, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectPipelineTestReport(RESTObject): + _id_attr = None + + +class ProjectPipelineTestReportManager(GetWithoutIdMixin, RESTManager): + _path = "/projects/{project_id}/pipelines/{pipeline_id}/test_report" + _obj_cls = ProjectPipelineTestReport + _from_parent_attrs = {"project_id": "project_id", "pipeline_id": "id"} + + def get(self, **kwargs: Any) -> ProjectPipelineTestReport: + return cast(ProjectPipelineTestReport, super().get(**kwargs)) + + +class ProjectPipelineTestReportSummary(RESTObject): + _id_attr = None + + +class ProjectPipelineTestReportSummaryManager(GetWithoutIdMixin, RESTManager): + _path = "/projects/{project_id}/pipelines/{pipeline_id}/test_report_summary" + _obj_cls = ProjectPipelineTestReportSummary + _from_parent_attrs = {"project_id": "project_id", "pipeline_id": "id"} + + def get(self, **kwargs: Any) -> ProjectPipelineTestReportSummary: + return cast(ProjectPipelineTestReportSummary, super().get(**kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/project_access_tokens.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/project_access_tokens.py new file mode 100644 index 0000000..3dee4a7 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/project_access_tokens.py @@ -0,0 +1,38 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CreateMixin, + DeleteMixin, + ObjectDeleteMixin, + ObjectRotateMixin, + RetrieveMixin, + RotateMixin, +) +from gitlab.types import ArrayAttribute, RequiredOptional + +__all__ = [ + "ProjectAccessToken", + "ProjectAccessTokenManager", +] + + +class ProjectAccessToken(ObjectDeleteMixin, ObjectRotateMixin, RESTObject): + pass + + +class ProjectAccessTokenManager( + CreateMixin, DeleteMixin, RetrieveMixin, RotateMixin, RESTManager +): + _path = "/projects/{project_id}/access_tokens" + _obj_cls = ProjectAccessToken + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("name", "scopes"), optional=("access_level", "expires_at") + ) + _types = {"scopes": ArrayAttribute} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectAccessToken: + return cast(ProjectAccessToken, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/projects.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/projects.py new file mode 100644 index 0000000..a3e5efb --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/projects.py @@ -0,0 +1,1218 @@ +""" +GitLab API: +https://docs.gitlab.com/ee/api/projects.html +""" + +import io +from typing import ( + Any, + Callable, + cast, + Dict, + Iterator, + List, + Optional, + TYPE_CHECKING, + Union, +) + +import requests + +from gitlab import cli, client +from gitlab import exceptions as exc +from gitlab import types, utils +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CreateMixin, + CRUDMixin, + DeleteMixin, + GetWithoutIdMixin, + ListMixin, + ObjectDeleteMixin, + RefreshMixin, + SaveMixin, + UpdateMixin, + UploadMixin, +) +from gitlab.types import RequiredOptional + +from .access_requests import ProjectAccessRequestManager # noqa: F401 +from .artifacts import ProjectArtifactManager # noqa: F401 +from .audit_events import ProjectAuditEventManager # noqa: F401 +from .badges import ProjectBadgeManager # noqa: F401 +from .boards import ProjectBoardManager # noqa: F401 +from .branches import ProjectBranchManager, ProjectProtectedBranchManager # noqa: F401 +from .ci_lint import ProjectCiLintManager # noqa: F401 +from .cluster_agents import ProjectClusterAgentManager # noqa: F401 +from .clusters import ProjectClusterManager # noqa: F401 +from .commits import ProjectCommitManager # noqa: F401 +from .container_registry import ProjectRegistryRepositoryManager # noqa: F401 +from .custom_attributes import ProjectCustomAttributeManager # noqa: F401 +from .deploy_keys import ProjectKeyManager # noqa: F401 +from .deploy_tokens import ProjectDeployTokenManager # noqa: F401 +from .deployments import ProjectDeploymentManager # noqa: F401 +from .environments import ( # noqa: F401 + ProjectEnvironmentManager, + ProjectProtectedEnvironmentManager, +) +from .events import ProjectEventManager # noqa: F401 +from .export_import import ProjectExportManager, ProjectImportManager # noqa: F401 +from .files import ProjectFileManager # noqa: F401 +from .hooks import ProjectHookManager # noqa: F401 +from .integrations import ProjectIntegrationManager, ProjectServiceManager # noqa: F401 +from .invitations import ProjectInvitationManager # noqa: F401 +from .issues import ProjectIssueManager # noqa: F401 +from .iterations import ProjectIterationManager # noqa: F401 +from .job_token_scope import ProjectJobTokenScopeManager # noqa: F401 +from .jobs import ProjectJobManager # noqa: F401 +from .labels import ProjectLabelManager # noqa: F401 +from .members import ProjectMemberAllManager, ProjectMemberManager # noqa: F401 +from .merge_request_approvals import ( # noqa: F401 + ProjectApprovalManager, + ProjectApprovalRuleManager, +) +from .merge_requests import ProjectMergeRequestManager # noqa: F401 +from .merge_trains import ProjectMergeTrainManager # noqa: F401 +from .milestones import ProjectMilestoneManager # noqa: F401 +from .notes import ProjectNoteManager # noqa: F401 +from .notification_settings import ProjectNotificationSettingsManager # noqa: F401 +from .package_protection_rules import ProjectPackageProtectionRuleManager +from .packages import GenericPackageManager, ProjectPackageManager # noqa: F401 +from .pages import ProjectPagesDomainManager, ProjectPagesManager # noqa: F401 +from .pipelines import ( # noqa: F401 + ProjectPipeline, + ProjectPipelineManager, + ProjectPipelineScheduleManager, +) +from .project_access_tokens import ProjectAccessTokenManager # noqa: F401 +from .push_rules import ProjectPushRulesManager # noqa: F401 +from .registry_protection_rules import ( # noqa: F401 + ProjectRegistryProtectionRuleManager, +) +from .releases import ProjectReleaseManager # noqa: F401 +from .repositories import RepositoryMixin +from .resource_groups import ProjectResourceGroupManager +from .runners import ProjectRunnerManager # noqa: F401 +from .secure_files import ProjectSecureFileManager # noqa: F401 +from .snippets import ProjectSnippetManager # noqa: F401 +from .statistics import ( # noqa: F401 + ProjectAdditionalStatisticsManager, + ProjectIssuesStatisticsManager, +) +from .tags import ProjectProtectedTagManager, ProjectTagManager # noqa: F401 +from .triggers import ProjectTriggerManager # noqa: F401 +from .users import ProjectUserManager # noqa: F401 +from .variables import ProjectVariableManager # noqa: F401 +from .wikis import ProjectWikiManager # noqa: F401 + +__all__ = [ + "GroupProject", + "GroupProjectManager", + "Project", + "ProjectManager", + "ProjectFork", + "ProjectForkManager", + "ProjectRemoteMirror", + "ProjectRemoteMirrorManager", + "ProjectStorage", + "ProjectStorageManager", + "SharedProject", + "SharedProjectManager", +] + + +class GroupProject(RESTObject): + pass + + +class GroupProjectManager(ListMixin, RESTManager): + _path = "/groups/{group_id}/projects" + _obj_cls = GroupProject + _from_parent_attrs = {"group_id": "id"} + _list_filters = ( + "archived", + "visibility", + "order_by", + "sort", + "search", + "simple", + "owned", + "starred", + "with_custom_attributes", + "include_subgroups", + "with_issues_enabled", + "with_merge_requests_enabled", + "with_shared", + "min_access_level", + "with_security_reports", + ) + + +class ProjectGroup(RESTObject): + pass + + +class ProjectGroupManager(ListMixin, RESTManager): + _path = "/projects/{project_id}/groups" + _obj_cls = ProjectGroup + _from_parent_attrs = {"project_id": "id"} + _list_filters = ( + "search", + "skip_groups", + "with_shared", + "shared_min_access_level", + "shared_visible_only", + ) + _types = {"skip_groups": types.ArrayAttribute} + + +class Project( + RefreshMixin, SaveMixin, ObjectDeleteMixin, RepositoryMixin, UploadMixin, RESTObject +): + _repr_attr = "path_with_namespace" + _upload_path = "/projects/{id}/uploads" + + access_tokens: ProjectAccessTokenManager + accessrequests: ProjectAccessRequestManager + additionalstatistics: ProjectAdditionalStatisticsManager + approvalrules: ProjectApprovalRuleManager + approvals: ProjectApprovalManager + artifacts: ProjectArtifactManager + audit_events: ProjectAuditEventManager + badges: ProjectBadgeManager + boards: ProjectBoardManager + branches: ProjectBranchManager + ci_lint: ProjectCiLintManager + clusters: ProjectClusterManager + cluster_agents: ProjectClusterAgentManager + commits: ProjectCommitManager + customattributes: ProjectCustomAttributeManager + deployments: ProjectDeploymentManager + deploytokens: ProjectDeployTokenManager + environments: ProjectEnvironmentManager + events: ProjectEventManager + exports: ProjectExportManager + files: ProjectFileManager + forks: "ProjectForkManager" + generic_packages: GenericPackageManager + groups: ProjectGroupManager + hooks: ProjectHookManager + imports: ProjectImportManager + integrations: ProjectIntegrationManager + invitations: ProjectInvitationManager + issues: ProjectIssueManager + issues_statistics: ProjectIssuesStatisticsManager + iterations: ProjectIterationManager + jobs: ProjectJobManager + job_token_scope: ProjectJobTokenScopeManager + keys: ProjectKeyManager + labels: ProjectLabelManager + members: ProjectMemberManager + members_all: ProjectMemberAllManager + mergerequests: ProjectMergeRequestManager + merge_trains: ProjectMergeTrainManager + milestones: ProjectMilestoneManager + notes: ProjectNoteManager + notificationsettings: ProjectNotificationSettingsManager + packages: ProjectPackageManager + package_protection_rules: ProjectPackageProtectionRuleManager + pages: ProjectPagesManager + pagesdomains: ProjectPagesDomainManager + pipelines: ProjectPipelineManager + pipelineschedules: ProjectPipelineScheduleManager + protected_environments: ProjectProtectedEnvironmentManager + protectedbranches: ProjectProtectedBranchManager + protectedtags: ProjectProtectedTagManager + pushrules: ProjectPushRulesManager + registry_protection_rules: ProjectRegistryProtectionRuleManager + releases: ProjectReleaseManager + resource_groups: ProjectResourceGroupManager + remote_mirrors: "ProjectRemoteMirrorManager" + repositories: ProjectRegistryRepositoryManager + runners: ProjectRunnerManager + secure_files: ProjectSecureFileManager + services: ProjectServiceManager + snippets: ProjectSnippetManager + storage: "ProjectStorageManager" + tags: ProjectTagManager + triggers: ProjectTriggerManager + users: ProjectUserManager + variables: ProjectVariableManager + wikis: ProjectWikiManager + + @cli.register_custom_action(cls_names="Project", required=("forked_from_id",)) + @exc.on_http_error(exc.GitlabCreateError) + def create_fork_relation(self, forked_from_id: int, **kwargs: Any) -> None: + """Create a forked from/to relation between existing projects. + + Args: + forked_from_id: The ID of the project that was forked from + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the relation could not be created + """ + path = f"/projects/{self.encoded_id}/fork/{forked_from_id}" + self.manager.gitlab.http_post(path, **kwargs) + + @cli.register_custom_action(cls_names="Project") + @exc.on_http_error(exc.GitlabDeleteError) + def delete_fork_relation(self, **kwargs: Any) -> None: + """Delete a forked relation between existing projects. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabDeleteError: If the server failed to perform the request + """ + path = f"/projects/{self.encoded_id}/fork" + self.manager.gitlab.http_delete(path, **kwargs) + + @cli.register_custom_action(cls_names="Project") + @exc.on_http_error(exc.GitlabGetError) + def languages(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """Get languages used in the project with percentage value. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server failed to perform the request + """ + path = f"/projects/{self.encoded_id}/languages" + return self.manager.gitlab.http_get(path, **kwargs) + + @cli.register_custom_action(cls_names="Project") + @exc.on_http_error(exc.GitlabCreateError) + def star(self, **kwargs: Any) -> None: + """Star a project. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the server failed to perform the request + """ + path = f"/projects/{self.encoded_id}/star" + server_data = self.manager.gitlab.http_post(path, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + self._update_attrs(server_data) + + @cli.register_custom_action(cls_names="Project") + @exc.on_http_error(exc.GitlabDeleteError) + def unstar(self, **kwargs: Any) -> None: + """Unstar a project. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabDeleteError: If the server failed to perform the request + """ + path = f"/projects/{self.encoded_id}/unstar" + server_data = self.manager.gitlab.http_post(path, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + self._update_attrs(server_data) + + @cli.register_custom_action(cls_names="Project") + @exc.on_http_error(exc.GitlabCreateError) + def archive(self, **kwargs: Any) -> None: + """Archive a project. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the server failed to perform the request + """ + path = f"/projects/{self.encoded_id}/archive" + server_data = self.manager.gitlab.http_post(path, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + self._update_attrs(server_data) + + @cli.register_custom_action(cls_names="Project") + @exc.on_http_error(exc.GitlabDeleteError) + def unarchive(self, **kwargs: Any) -> None: + """Unarchive a project. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabDeleteError: If the server failed to perform the request + """ + path = f"/projects/{self.encoded_id}/unarchive" + server_data = self.manager.gitlab.http_post(path, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + self._update_attrs(server_data) + + @cli.register_custom_action( + cls_names="Project", + required=("group_id", "group_access"), + optional=("expires_at",), + ) + @exc.on_http_error(exc.GitlabCreateError) + def share( + self, + group_id: int, + group_access: int, + expires_at: Optional[str] = None, + **kwargs: Any, + ) -> None: + """Share the project with a group. + + Args: + group_id: ID of the group. + group_access: Access level for the group. + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the server failed to perform the request + """ + path = f"/projects/{self.encoded_id}/share" + data = { + "group_id": group_id, + "group_access": group_access, + "expires_at": expires_at, + } + self.manager.gitlab.http_post(path, post_data=data, **kwargs) + + @cli.register_custom_action(cls_names="Project", required=("group_id",)) + @exc.on_http_error(exc.GitlabDeleteError) + def unshare(self, group_id: int, **kwargs: Any) -> None: + """Delete a shared project link within a group. + + Args: + group_id: ID of the group. + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabDeleteError: If the server failed to perform the request + """ + path = f"/projects/{self.encoded_id}/share/{group_id}" + self.manager.gitlab.http_delete(path, **kwargs) + + # variables not supported in CLI + @cli.register_custom_action(cls_names="Project", required=("ref", "token")) + @exc.on_http_error(exc.GitlabCreateError) + def trigger_pipeline( + self, + ref: str, + token: str, + variables: Optional[Dict[str, Any]] = None, + **kwargs: Any, + ) -> ProjectPipeline: + """Trigger a CI build. + + See https://gitlab.com/help/ci/triggers/README.md#trigger-a-build + + Args: + ref: Commit to build; can be a branch name or a tag + token: The trigger token + variables: Variables passed to the build script + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the server failed to perform the request + """ + variables = variables or {} + path = f"/projects/{self.encoded_id}/trigger/pipeline" + post_data = {"ref": ref, "token": token, "variables": variables} + attrs = self.manager.gitlab.http_post(path, post_data=post_data, **kwargs) + if TYPE_CHECKING: + assert isinstance(attrs, dict) + return ProjectPipeline(self.pipelines, attrs) + + @cli.register_custom_action(cls_names="Project") + @exc.on_http_error(exc.GitlabHousekeepingError) + def housekeeping(self, **kwargs: Any) -> None: + """Start the housekeeping task. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabHousekeepingError: If the server failed to perform the + request + """ + path = f"/projects/{self.encoded_id}/housekeeping" + self.manager.gitlab.http_post(path, **kwargs) + + @cli.register_custom_action(cls_names="Project") + @exc.on_http_error(exc.GitlabRestoreError) + def restore(self, **kwargs: Any) -> None: + """Restore a project marked for deletion. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabRestoreError: If the server failed to perform the request + """ + path = f"/projects/{self.encoded_id}/restore" + self.manager.gitlab.http_post(path, **kwargs) + + @cli.register_custom_action(cls_names="Project", optional=("wiki",)) + @exc.on_http_error(exc.GitlabGetError) + def snapshot( + self, + wiki: bool = False, + streamed: bool = False, + action: Optional[Callable[[bytes], None]] = None, + chunk_size: int = 1024, + *, + iterator: bool = False, + **kwargs: Any, + ) -> Optional[Union[bytes, Iterator[Any]]]: + """Return a snapshot of the repository. + + Args: + wiki: If True return the wiki repository + streamed: If True the data will be processed by chunks of + `chunk_size` and each chunk is passed to `action` for + treatment. + iterator: If True directly return the underlying response + iterator + action: Callable responsible of dealing with chunk of + data + chunk_size: Size of each chunk + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the content could not be retrieved + + Returns: + The uncompressed tar archive of the repository + """ + path = f"/projects/{self.encoded_id}/snapshot" + result = self.manager.gitlab.http_get( + path, streamed=streamed, raw=True, wiki=wiki, **kwargs + ) + if TYPE_CHECKING: + assert isinstance(result, requests.Response) + return utils.response_content( + result, streamed, action, chunk_size, iterator=iterator + ) + + @cli.register_custom_action(cls_names="Project", required=("scope", "search")) + @exc.on_http_error(exc.GitlabSearchError) + def search( + self, scope: str, search: str, **kwargs: Any + ) -> Union[client.GitlabList, List[Dict[str, Any]]]: + """Search the project resources matching the provided string.' + + Args: + scope: Scope of the search + search: Search string + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabSearchError: If the server failed to perform the request + + Returns: + A list of dicts describing the resources found. + """ + data = {"scope": scope, "search": search} + path = f"/projects/{self.encoded_id}/search" + return self.manager.gitlab.http_list(path, query_data=data, **kwargs) + + @cli.register_custom_action(cls_names="Project") + @exc.on_http_error(exc.GitlabCreateError) + def mirror_pull(self, **kwargs: Any) -> None: + """Start the pull mirroring process for the project. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the server failed to perform the request + """ + path = f"/projects/{self.encoded_id}/mirror/pull" + self.manager.gitlab.http_post(path, **kwargs) + + @cli.register_custom_action(cls_names="Project") + @exc.on_http_error(exc.GitlabGetError) + def mirror_pull_details(self, **kwargs: Any) -> Dict[str, Any]: + """Get a project's pull mirror details. + + Introduced in GitLab 15.5. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server failed to perform the request + + Returns: + dict of the parsed json returned by the server + """ + path = f"/projects/{self.encoded_id}/mirror/pull" + result = self.manager.gitlab.http_get(path, **kwargs) + if TYPE_CHECKING: + assert isinstance(result, dict) + return result + + @cli.register_custom_action(cls_names="Project", required=("to_namespace",)) + @exc.on_http_error(exc.GitlabTransferProjectError) + def transfer(self, to_namespace: Union[int, str], **kwargs: Any) -> None: + """Transfer a project to the given namespace ID + + Args: + to_namespace: ID or path of the namespace to transfer the + project to + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabTransferProjectError: If the project could not be transferred + """ + path = f"/projects/{self.encoded_id}/transfer" + self.manager.gitlab.http_put( + path, post_data={"namespace": to_namespace}, **kwargs + ) + + +class ProjectManager(CRUDMixin, RESTManager): + _path = "/projects" + _obj_cls = Project + # Please keep these _create_attrs in same order as they are at: + # https://docs.gitlab.com/ee/api/projects.html#create-project + _create_attrs = RequiredOptional( + optional=( + "name", + "path", + "allow_merge_on_skipped_pipeline", + "only_allow_merge_if_all_status_checks_passed", + "analytics_access_level", + "approvals_before_merge", + "auto_cancel_pending_pipelines", + "auto_devops_deploy_strategy", + "auto_devops_enabled", + "autoclose_referenced_issues", + "avatar", + "build_coverage_regex", + "build_git_strategy", + "build_timeout", + "builds_access_level", + "ci_config_path", + "container_expiration_policy_attributes", + "container_registry_access_level", + "container_registry_enabled", + "default_branch", + "description", + "emails_disabled", + "external_authorization_classification_label", + "forking_access_level", + "group_with_project_templates_id", + "import_url", + "initialize_with_readme", + "issues_access_level", + "issues_enabled", + "jobs_enabled", + "lfs_enabled", + "merge_method", + "merge_pipelines_enabled", + "merge_requests_access_level", + "merge_requests_enabled", + "mirror_trigger_builds", + "mirror", + "namespace_id", + "operations_access_level", + "only_allow_merge_if_all_discussions_are_resolved", + "only_allow_merge_if_pipeline_succeeds", + "packages_enabled", + "pages_access_level", + "requirements_access_level", + "printing_merge_request_link_enabled", + "public_builds", + "releases_access_level", + "environments_access_level", + "feature_flags_access_level", + "infrastructure_access_level", + "monitor_access_level", + "remove_source_branch_after_merge", + "repository_access_level", + "repository_storage", + "request_access_enabled", + "resolve_outdated_diff_discussions", + "security_and_compliance_access_level", + "shared_runners_enabled", + "show_default_award_emojis", + "snippets_access_level", + "snippets_enabled", + "squash_option", + "tag_list", + "topics", + "template_name", + "template_project_id", + "use_custom_template", + "visibility", + "wiki_access_level", + "wiki_enabled", + ), + ) + # Please keep these _update_attrs in same order as they are at: + # https://docs.gitlab.com/ee/api/projects.html#edit-project + _update_attrs = RequiredOptional( + optional=( + "allow_merge_on_skipped_pipeline", + "only_allow_merge_if_all_status_checks_passed", + "analytics_access_level", + "approvals_before_merge", + "auto_cancel_pending_pipelines", + "auto_devops_deploy_strategy", + "auto_devops_enabled", + "autoclose_referenced_issues", + "avatar", + "build_coverage_regex", + "build_git_strategy", + "build_timeout", + "builds_access_level", + "ci_config_path", + "ci_default_git_depth", + "ci_forward_deployment_enabled", + "ci_allow_fork_pipelines_to_run_in_parent_project", + "ci_separated_caches", + "container_expiration_policy_attributes", + "container_registry_access_level", + "container_registry_enabled", + "default_branch", + "description", + "emails_disabled", + "enforce_auth_checks_on_uploads", + "external_authorization_classification_label", + "forking_access_level", + "import_url", + "issues_access_level", + "issues_enabled", + "issues_template", + "jobs_enabled", + "keep_latest_artifact", + "lfs_enabled", + "merge_commit_template", + "merge_method", + "merge_pipelines_enabled", + "merge_requests_access_level", + "merge_requests_enabled", + "merge_requests_template", + "merge_trains_enabled", + "mirror_overwrites_diverged_branches", + "mirror_trigger_builds", + "mirror_user_id", + "mirror", + "mr_default_target_self", + "name", + "operations_access_level", + "only_allow_merge_if_all_discussions_are_resolved", + "only_allow_merge_if_pipeline_succeeds", + "only_mirror_protected_branches", + "packages_enabled", + "pages_access_level", + "requirements_access_level", + "restrict_user_defined_variables", + "path", + "public_builds", + "releases_access_level", + "environments_access_level", + "feature_flags_access_level", + "infrastructure_access_level", + "monitor_access_level", + "remove_source_branch_after_merge", + "repository_access_level", + "repository_storage", + "request_access_enabled", + "resolve_outdated_diff_discussions", + "security_and_compliance_access_level", + "service_desk_enabled", + "shared_runners_enabled", + "show_default_award_emojis", + "snippets_access_level", + "snippets_enabled", + "issue_branch_template", + "squash_commit_template", + "squash_option", + "suggestion_commit_message", + "tag_list", + "topics", + "visibility", + "wiki_access_level", + "wiki_enabled", + ), + ) + _list_filters = ( + "archived", + "id_after", + "id_before", + "last_activity_after", + "last_activity_before", + "membership", + "min_access_level", + "order_by", + "owned", + "repository_checksum_failed", + "repository_storage", + "search_namespaces", + "search", + "simple", + "sort", + "starred", + "statistics", + "topic", + "visibility", + "wiki_checksum_failed", + "with_custom_attributes", + "with_issues_enabled", + "with_merge_requests_enabled", + "with_programming_language", + ) + _types = { + "avatar": types.ImageAttribute, + "topic": types.CommaSeparatedListAttribute, + "topics": types.ArrayAttribute, + } + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> Project: + return cast(Project, super().get(id=id, lazy=lazy, **kwargs)) + + @exc.on_http_error(exc.GitlabImportError) + def import_project( + self, + file: io.BufferedReader, + path: str, + name: Optional[str] = None, + namespace: Optional[str] = None, + overwrite: bool = False, + override_params: Optional[Dict[str, Any]] = None, + **kwargs: Any, + ) -> Union[Dict[str, Any], requests.Response]: + """Import a project from an archive file. + + Args: + file: Data or file object containing the project + path: Name and path for the new project + name: The name of the project to import. If not provided, + defaults to the path of the project. + namespace: The ID or path of the namespace that the project + will be imported to + overwrite: If True overwrite an existing project with the + same path + override_params: Set the specific settings for the project + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabImportError: If the server failed to perform the request + + Returns: + A representation of the import status. + """ + files = {"file": ("file.tar.gz", file, "application/octet-stream")} + data = {"path": path, "overwrite": str(overwrite)} + if override_params: + for k, v in override_params.items(): + data[f"override_params[{k}]"] = v + if name is not None: + data["name"] = name + if namespace: + data["namespace"] = namespace + return self.gitlab.http_post( + "/projects/import", post_data=data, files=files, **kwargs + ) + + @exc.on_http_error(exc.GitlabImportError) + def remote_import( + self, + url: str, + path: str, + name: Optional[str] = None, + namespace: Optional[str] = None, + overwrite: bool = False, + override_params: Optional[Dict[str, Any]] = None, + **kwargs: Any, + ) -> Union[Dict[str, Any], requests.Response]: + """Import a project from an archive file stored on a remote URL. + + Args: + url: URL for the file containing the project data to import + path: Name and path for the new project + name: The name of the project to import. If not provided, + defaults to the path of the project. + namespace: The ID or path of the namespace that the project + will be imported to + overwrite: If True overwrite an existing project with the + same path + override_params: Set the specific settings for the project + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabImportError: If the server failed to perform the request + + Returns: + A representation of the import status. + """ + data = {"path": path, "overwrite": str(overwrite), "url": url} + if override_params: + for k, v in override_params.items(): + data[f"override_params[{k}]"] = v + if name is not None: + data["name"] = name + if namespace: + data["namespace"] = namespace + return self.gitlab.http_post( + "/projects/remote-import", post_data=data, **kwargs + ) + + @exc.on_http_error(exc.GitlabImportError) + def remote_import_s3( + self, + path: str, + region: str, + bucket_name: str, + file_key: str, + access_key_id: str, + secret_access_key: str, + name: Optional[str] = None, + namespace: Optional[str] = None, + overwrite: bool = False, + override_params: Optional[Dict[str, Any]] = None, + **kwargs: Any, + ) -> Union[Dict[str, Any], requests.Response]: + """Import a project from an archive file stored on AWS S3. + + Args: + region: AWS S3 region name where the file is stored + bucket_name: AWS S3 bucket name where the file is stored + file_key: AWS S3 file key to identify the file. + access_key_id: AWS S3 access key ID. + secret_access_key: AWS S3 secret access key. + path: Name and path for the new project + name: The name of the project to import. If not provided, + defaults to the path of the project. + namespace: The ID or path of the namespace that the project + will be imported to + overwrite: If True overwrite an existing project with the + same path + override_params: Set the specific settings for the project + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabImportError: If the server failed to perform the request + + Returns: + A representation of the import status. + """ + data = { + "region": region, + "bucket_name": bucket_name, + "file_key": file_key, + "access_key_id": access_key_id, + "secret_access_key": secret_access_key, + "path": path, + "overwrite": str(overwrite), + } + if override_params: + for k, v in override_params.items(): + data[f"override_params[{k}]"] = v + if name is not None: + data["name"] = name + if namespace: + data["namespace"] = namespace + return self.gitlab.http_post( + "/projects/remote-import-s3", post_data=data, **kwargs + ) + + def import_bitbucket_server( + self, + bitbucket_server_url: str, + bitbucket_server_username: str, + personal_access_token: str, + bitbucket_server_project: str, + bitbucket_server_repo: str, + new_name: Optional[str] = None, + target_namespace: Optional[str] = None, + **kwargs: Any, + ) -> Union[Dict[str, Any], requests.Response]: + """Import a project from BitBucket Server to Gitlab (schedule the import) + + This method will return when an import operation has been safely queued, + or an error has occurred. After triggering an import, check the + ``import_status`` of the newly created project to detect when the import + operation has completed. + + .. note:: + This request may take longer than most other API requests. + So this method will specify a 60 second default timeout if none is + specified. + A timeout can be specified via kwargs to override this functionality. + + Args: + bitbucket_server_url: Bitbucket Server URL + bitbucket_server_username: Bitbucket Server Username + personal_access_token: Bitbucket Server personal access + token/password + bitbucket_server_project: Bitbucket Project Key + bitbucket_server_repo: Bitbucket Repository Name + new_name: New repository name (Optional) + target_namespace: Namespace to import repository into. + Supports subgroups like /namespace/subgroup (Optional) + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabListError: If the server failed to perform the request + + Returns: + A representation of the import status. + + Example: + + .. code-block:: python + + gl = gitlab.Gitlab_from_config() + print("Triggering import") + result = gl.projects.import_bitbucket_server( + bitbucket_server_url="https://some.server.url", + bitbucket_server_username="some_bitbucket_user", + personal_access_token="my_password_or_access_token", + bitbucket_server_project="my_project", + bitbucket_server_repo="my_repo", + new_name="gl_project_name", + target_namespace="gl_project_path" + ) + project = gl.projects.get(ret['id']) + print("Waiting for import to complete") + while project.import_status == u'started': + time.sleep(1.0) + project = gl.projects.get(project.id) + print("BitBucket import complete") + + """ + data = { + "bitbucket_server_url": bitbucket_server_url, + "bitbucket_server_username": bitbucket_server_username, + "personal_access_token": personal_access_token, + "bitbucket_server_project": bitbucket_server_project, + "bitbucket_server_repo": bitbucket_server_repo, + } + if new_name: + data["new_name"] = new_name + if target_namespace: + data["target_namespace"] = target_namespace + if ( + "timeout" not in kwargs + or self.gitlab.timeout is None + or self.gitlab.timeout < 60.0 + ): + # Ensure that this HTTP request has a longer-than-usual default timeout + # The base gitlab object tends to have a default that is <10 seconds, + # and this is too short for this API command, typically. + # On the order of 24 seconds has been measured on a typical gitlab instance. + kwargs["timeout"] = 60.0 + result = self.gitlab.http_post( + "/import/bitbucket_server", post_data=data, **kwargs + ) + return result + + def import_github( + self, + personal_access_token: str, + repo_id: int, + target_namespace: str, + new_name: Optional[str] = None, + github_hostname: Optional[str] = None, + optional_stages: Optional[Dict[str, bool]] = None, + **kwargs: Any, + ) -> Union[Dict[str, Any], requests.Response]: + """Import a project from Github to Gitlab (schedule the import) + + This method will return when an import operation has been safely queued, + or an error has occurred. After triggering an import, check the + ``import_status`` of the newly created project to detect when the import + operation has completed. + + .. note:: + This request may take longer than most other API requests. + So this method will specify a 60 second default timeout if none is + specified. + A timeout can be specified via kwargs to override this functionality. + + Args: + personal_access_token: GitHub personal access token + repo_id: Github repository ID + target_namespace: Namespace to import repo into + new_name: New repo name (Optional) + github_hostname: Custom GitHub Enterprise hostname. + Do not set for GitHub.com. (Optional) + optional_stages: Additional items to import. (Optional) + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabListError: If the server failed to perform the request + + Returns: + A representation of the import status. + + Example: + + .. code-block:: python + + gl = gitlab.Gitlab_from_config() + print("Triggering import") + result = gl.projects.import_github(ACCESS_TOKEN, + 123456, + "my-group/my-subgroup") + project = gl.projects.get(ret['id']) + print("Waiting for import to complete") + while project.import_status == u'started': + time.sleep(1.0) + project = gl.projects.get(project.id) + print("Github import complete") + + """ + data = { + "personal_access_token": personal_access_token, + "repo_id": repo_id, + "target_namespace": target_namespace, + "new_name": new_name, + "github_hostname": github_hostname, + "optional_stages": optional_stages, + } + data = utils.remove_none_from_dict(data) + + if ( + "timeout" not in kwargs + or self.gitlab.timeout is None + or self.gitlab.timeout < 60.0 + ): + # Ensure that this HTTP request has a longer-than-usual default timeout + # The base gitlab object tends to have a default that is <10 seconds, + # and this is too short for this API command, typically. + # On the order of 24 seconds has been measured on a typical gitlab instance. + kwargs["timeout"] = 60.0 + result = self.gitlab.http_post("/import/github", post_data=data, **kwargs) + return result + + +class ProjectFork(RESTObject): + pass + + +class ProjectForkManager(CreateMixin, ListMixin, RESTManager): + _path = "/projects/{project_id}/forks" + _obj_cls = ProjectFork + _from_parent_attrs = {"project_id": "id"} + _list_filters = ( + "archived", + "visibility", + "order_by", + "sort", + "search", + "simple", + "owned", + "membership", + "starred", + "statistics", + "with_custom_attributes", + "with_issues_enabled", + "with_merge_requests_enabled", + ) + _create_attrs = RequiredOptional(optional=("namespace",)) + + def create( + self, data: Optional[Dict[str, Any]] = None, **kwargs: Any + ) -> ProjectFork: + """Creates a new object. + + Args: + data: Parameters to send to the server to create the + resource + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the server cannot perform the request + + Returns: + A new instance of the managed object class build with + the data sent by the server + """ + if TYPE_CHECKING: + assert self.path is not None + path = self.path[:-1] # drop the 's' + return cast(ProjectFork, CreateMixin.create(self, data, path=path, **kwargs)) + + +class ProjectRemoteMirror(ObjectDeleteMixin, SaveMixin, RESTObject): + pass + + +class ProjectRemoteMirrorManager( + ListMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager +): + _path = "/projects/{project_id}/remote_mirrors" + _obj_cls = ProjectRemoteMirror + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("url",), optional=("enabled", "only_protected_branches") + ) + _update_attrs = RequiredOptional(optional=("enabled", "only_protected_branches")) + + +class ProjectStorage(RefreshMixin, RESTObject): + pass + + +class ProjectStorageManager(GetWithoutIdMixin, RESTManager): + _path = "/projects/{project_id}/storage" + _obj_cls = ProjectStorage + _from_parent_attrs = {"project_id": "id"} + + def get(self, **kwargs: Any) -> ProjectStorage: + return cast(ProjectStorage, super().get(**kwargs)) + + +class SharedProject(RESTObject): + pass + + +class SharedProjectManager(ListMixin, RESTManager): + _path = "/groups/{group_id}/projects/shared" + _obj_cls = SharedProject + _from_parent_attrs = {"group_id": "id"} + _list_filters = ( + "archived", + "visibility", + "order_by", + "sort", + "search", + "simple", + "starred", + "with_issues_enabled", + "with_merge_requests_enabled", + "min_access_level", + "with_custom_attributes", + ) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/push_rules.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/push_rules.py new file mode 100644 index 0000000..9b4980b --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/push_rules.py @@ -0,0 +1,109 @@ +from typing import Any, cast + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CreateMixin, + DeleteMixin, + GetWithoutIdMixin, + ObjectDeleteMixin, + SaveMixin, + UpdateMixin, +) +from gitlab.types import RequiredOptional + +__all__ = [ + "GroupPushRules", + "GroupPushRulesManager", + "ProjectPushRules", + "ProjectPushRulesManager", +] + + +class ProjectPushRules(SaveMixin, ObjectDeleteMixin, RESTObject): + _id_attr = None + + +class ProjectPushRulesManager( + GetWithoutIdMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager +): + _path = "/projects/{project_id}/push_rule" + _obj_cls = ProjectPushRules + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + optional=( + "author_email_regex", + "branch_name_regex", + "commit_committer_check", + "commit_message_negative_regex", + "commit_message_regex", + "deny_delete_tag", + "file_name_regex", + "max_file_size", + "member_check", + "prevent_secrets", + "reject_unsigned_commits", + ), + ) + _update_attrs = RequiredOptional( + optional=( + "author_email_regex", + "branch_name_regex", + "commit_committer_check", + "commit_message_negative_regex", + "commit_message_regex", + "deny_delete_tag", + "file_name_regex", + "max_file_size", + "member_check", + "prevent_secrets", + "reject_unsigned_commits", + ), + ) + + def get(self, **kwargs: Any) -> ProjectPushRules: + return cast(ProjectPushRules, super().get(**kwargs)) + + +class GroupPushRules(SaveMixin, ObjectDeleteMixin, RESTObject): + _id_attr = None + + +class GroupPushRulesManager( + GetWithoutIdMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager +): + _path = "/groups/{group_id}/push_rule" + _obj_cls = GroupPushRules + _from_parent_attrs = {"group_id": "id"} + _create_attrs = RequiredOptional( + optional=( + "deny_delete_tag", + "member_check", + "prevent_secrets", + "commit_message_regex", + "commit_message_negative_regex", + "branch_name_regex", + "author_email_regex", + "file_name_regex", + "max_file_size", + "commit_committer_check", + "reject_unsigned_commits", + ), + ) + _update_attrs = RequiredOptional( + optional=( + "deny_delete_tag", + "member_check", + "prevent_secrets", + "commit_message_regex", + "commit_message_negative_regex", + "branch_name_regex", + "author_email_regex", + "file_name_regex", + "max_file_size", + "commit_committer_check", + "reject_unsigned_commits", + ), + ) + + def get(self, **kwargs: Any) -> GroupPushRules: + return cast(GroupPushRules, super().get(**kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/registry_protection_rules.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/registry_protection_rules.py new file mode 100644 index 0000000..0c1d021 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/registry_protection_rules.py @@ -0,0 +1,35 @@ +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CreateMixin, ListMixin, SaveMixin, UpdateMethod, UpdateMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "ProjectRegistryProtectionRule", + "ProjectRegistryProtectionRuleManager", +] + + +class ProjectRegistryProtectionRule(SaveMixin, RESTObject): + _repr_attr = "repository_path_pattern" + + +class ProjectRegistryProtectionRuleManager( + ListMixin, CreateMixin, UpdateMixin, RESTManager +): + _path = "/projects/{project_id}/registry/protection/rules" + _obj_cls = ProjectRegistryProtectionRule + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("repository_path_pattern",), + optional=( + "minimum_access_level_for_push", + "minimum_access_level_for_delete", + ), + ) + _update_attrs = RequiredOptional( + optional=( + "repository_path_pattern", + "minimum_access_level_for_push", + "minimum_access_level_for_delete", + ), + ) + _update_method = UpdateMethod.PATCH diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/releases.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/releases.py new file mode 100644 index 0000000..97b336d --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/releases.py @@ -0,0 +1,63 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CRUDMixin, ObjectDeleteMixin, SaveMixin +from gitlab.types import ArrayAttribute, RequiredOptional + +__all__ = [ + "ProjectRelease", + "ProjectReleaseManager", + "ProjectReleaseLink", + "ProjectReleaseLinkManager", +] + + +class ProjectRelease(SaveMixin, RESTObject): + _id_attr = "tag_name" + + links: "ProjectReleaseLinkManager" + + +class ProjectReleaseManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/releases" + _obj_cls = ProjectRelease + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("tag_name",), optional=("name", "description", "ref", "assets") + ) + _list_filters = ( + "order_by", + "sort", + "include_html_description", + ) + _update_attrs = RequiredOptional( + optional=("name", "description", "milestones", "released_at") + ) + _types = {"milestones": ArrayAttribute} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectRelease: + return cast(ProjectRelease, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectReleaseLink(ObjectDeleteMixin, SaveMixin, RESTObject): + pass + + +class ProjectReleaseLinkManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/releases/{tag_name}/assets/links" + _obj_cls = ProjectReleaseLink + _from_parent_attrs = {"project_id": "project_id", "tag_name": "tag_name"} + _create_attrs = RequiredOptional( + required=("name", "url"), + optional=("filepath", "direct_asset_path", "link_type"), + ) + _update_attrs = RequiredOptional( + optional=("name", "url", "filepath", "direct_asset_path", "link_type") + ) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectReleaseLink: + return cast(ProjectReleaseLink, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/repositories.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/repositories.py new file mode 100644 index 0000000..7d5b79d --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/repositories.py @@ -0,0 +1,293 @@ +""" +GitLab API: https://docs.gitlab.com/ee/api/repositories.html + +Currently this module only contains repository-related methods for projects. +""" + +from typing import Any, Callable, Dict, Iterator, List, Optional, TYPE_CHECKING, Union + +import requests + +import gitlab +from gitlab import cli +from gitlab import exceptions as exc +from gitlab import types, utils + +if TYPE_CHECKING: + # When running mypy we use these as the base classes + _RestObjectBase = gitlab.base.RESTObject +else: + _RestObjectBase = object + + +class RepositoryMixin(_RestObjectBase): + @cli.register_custom_action( + cls_names="Project", required=("submodule", "branch", "commit_sha") + ) + @exc.on_http_error(exc.GitlabUpdateError) + def update_submodule( + self, submodule: str, branch: str, commit_sha: str, **kwargs: Any + ) -> Union[Dict[str, Any], requests.Response]: + """Update a project submodule + + Args: + submodule: Full path to the submodule + branch: Name of the branch to commit into + commit_sha: Full commit SHA to update the submodule to + commit_message: Commit message. If no message is provided, a + default one will be set (optional) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabPutError: If the submodule could not be updated + """ + + submodule = utils.EncodedId(submodule) + path = f"/projects/{self.encoded_id}/repository/submodules/{submodule}" + data = {"branch": branch, "commit_sha": commit_sha} + if "commit_message" in kwargs: + data["commit_message"] = kwargs["commit_message"] + return self.manager.gitlab.http_put(path, post_data=data) + + @cli.register_custom_action( + cls_names="Project", optional=("path", "ref", "recursive") + ) + @exc.on_http_error(exc.GitlabGetError) + def repository_tree( + self, path: str = "", ref: str = "", recursive: bool = False, **kwargs: Any + ) -> Union[gitlab.client.GitlabList, List[Dict[str, Any]]]: + """Return a list of files in the repository. + + Args: + path: Path of the top folder (/ by default) + ref: Reference to a commit or branch + recursive: Whether to get the tree recursively + all: If True, return all the items, without pagination + per_page: Number of items to retrieve per request + page: ID of the page to return (starts with page 1) + iterator: If set to True and no pagination option is + defined, return a generator instead of a list + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server failed to perform the request + + Returns: + The representation of the tree + """ + gl_path = f"/projects/{self.encoded_id}/repository/tree" + query_data: Dict[str, Any] = {"recursive": recursive} + if path: + query_data["path"] = path + if ref: + query_data["ref"] = ref + return self.manager.gitlab.http_list(gl_path, query_data=query_data, **kwargs) + + @cli.register_custom_action(cls_names="Project", required=("sha",)) + @exc.on_http_error(exc.GitlabGetError) + def repository_blob( + self, sha: str, **kwargs: Any + ) -> Union[Dict[str, Any], requests.Response]: + """Return a file by blob SHA. + + Args: + sha: ID of the blob + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server failed to perform the request + + Returns: + The blob content and metadata + """ + + path = f"/projects/{self.encoded_id}/repository/blobs/{sha}" + return self.manager.gitlab.http_get(path, **kwargs) + + @cli.register_custom_action(cls_names="Project", required=("sha",)) + @exc.on_http_error(exc.GitlabGetError) + def repository_raw_blob( + self, + sha: str, + streamed: bool = False, + action: Optional[Callable[..., Any]] = None, + chunk_size: int = 1024, + *, + iterator: bool = False, + **kwargs: Any, + ) -> Optional[Union[bytes, Iterator[Any]]]: + """Return the raw file contents for a blob. + + Args: + sha: ID of the blob + streamed: If True the data will be processed by chunks of + `chunk_size` and each chunk is passed to `action` for + treatment + iterator: If True directly return the underlying response + iterator + action: Callable responsible of dealing with chunk of + data + chunk_size: Size of each chunk + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server failed to perform the request + + Returns: + The blob content if streamed is False, None otherwise + """ + path = f"/projects/{self.encoded_id}/repository/blobs/{sha}/raw" + result = self.manager.gitlab.http_get( + path, streamed=streamed, raw=True, **kwargs + ) + if TYPE_CHECKING: + assert isinstance(result, requests.Response) + return utils.response_content( + result, streamed, action, chunk_size, iterator=iterator + ) + + @cli.register_custom_action(cls_names="Project", required=("from_", "to")) + @exc.on_http_error(exc.GitlabGetError) + def repository_compare( + self, from_: str, to: str, **kwargs: Any + ) -> Union[Dict[str, Any], requests.Response]: + """Return a diff between two branches/commits. + + Args: + from_: Source branch/SHA + to: Destination branch/SHA + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server failed to perform the request + + Returns: + The diff + """ + path = f"/projects/{self.encoded_id}/repository/compare" + query_data = {"from": from_, "to": to} + return self.manager.gitlab.http_get(path, query_data=query_data, **kwargs) + + @cli.register_custom_action(cls_names="Project") + @exc.on_http_error(exc.GitlabGetError) + def repository_contributors( + self, **kwargs: Any + ) -> Union[gitlab.client.GitlabList, List[Dict[str, Any]]]: + """Return a list of contributors for the project. + + Args: + all: If True, return all the items, without pagination + per_page: Number of items to retrieve per request + page: ID of the page to return (starts with page 1) + iterator: If set to True and no pagination option is + defined, return a generator instead of a list + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server failed to perform the request + + Returns: + The contributors + """ + path = f"/projects/{self.encoded_id}/repository/contributors" + return self.manager.gitlab.http_list(path, **kwargs) + + @cli.register_custom_action(cls_names="Project", optional=("sha", "format")) + @exc.on_http_error(exc.GitlabListError) + def repository_archive( + self, + sha: Optional[str] = None, + streamed: bool = False, + action: Optional[Callable[..., Any]] = None, + chunk_size: int = 1024, + format: Optional[str] = None, + path: Optional[str] = None, + *, + iterator: bool = False, + **kwargs: Any, + ) -> Optional[Union[bytes, Iterator[Any]]]: + """Return an archive of the repository. + + Args: + sha: ID of the commit (default branch by default) + streamed: If True the data will be processed by chunks of + `chunk_size` and each chunk is passed to `action` for + treatment + iterator: If True directly return the underlying response + iterator + action: Callable responsible of dealing with chunk of + data + chunk_size: Size of each chunk + format: file format (tar.gz by default) + path: The subpath of the repository to download (all files by default) + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabListError: If the server failed to perform the request + + Returns: + The binary data of the archive + """ + url_path = f"/projects/{self.encoded_id}/repository/archive" + if format: + url_path += "." + format + query_data = {} + if sha: + query_data["sha"] = sha + if path is not None: + query_data["path"] = path + result = self.manager.gitlab.http_get( + url_path, query_data=query_data, raw=True, streamed=streamed, **kwargs + ) + if TYPE_CHECKING: + assert isinstance(result, requests.Response) + return utils.response_content( + result, streamed, action, chunk_size, iterator=iterator + ) + + @cli.register_custom_action(cls_names="Project", required=("refs",)) + @exc.on_http_error(exc.GitlabGetError) + def repository_merge_base( + self, refs: List[str], **kwargs: Any + ) -> Union[Dict[str, Any], requests.Response]: + """Return a diff between two branches/commits. + + Args: + refs: The refs to find the common ancestor of. Multiple refs can be passed. + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the server failed to perform the request + + Returns: + The common ancestor commit (*not* a RESTObject) + """ + path = f"/projects/{self.encoded_id}/repository/merge_base" + query_data, _ = utils._transform_types( + data={"refs": refs}, + custom_types={"refs": types.ArrayAttribute}, + transform_data=True, + ) + return self.manager.gitlab.http_get(path, query_data=query_data, **kwargs) + + @cli.register_custom_action(cls_names="Project") + @exc.on_http_error(exc.GitlabDeleteError) + def delete_merged_branches(self, **kwargs: Any) -> None: + """Delete merged branches. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabDeleteError: If the server failed to perform the request + """ + path = f"/projects/{self.encoded_id}/repository/merged_branches" + self.manager.gitlab.http_delete(path, **kwargs) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/resource_groups.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/resource_groups.py new file mode 100644 index 0000000..1ca34f6 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/resource_groups.py @@ -0,0 +1,45 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ListMixin, RetrieveMixin, SaveMixin, UpdateMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "ProjectResourceGroup", + "ProjectResourceGroupManager", + "ProjectResourceGroupUpcomingJob", + "ProjectResourceGroupUpcomingJobManager", +] + + +class ProjectResourceGroup(SaveMixin, RESTObject): + _id_attr = "key" + + upcoming_jobs: "ProjectResourceGroupUpcomingJobManager" + + +class ProjectResourceGroupManager(RetrieveMixin, UpdateMixin, RESTManager): + _path = "/projects/{project_id}/resource_groups" + _obj_cls = ProjectResourceGroup + _from_parent_attrs = {"project_id": "id"} + _list_filters = ( + "order_by", + "sort", + "include_html_description", + ) + _update_attrs = RequiredOptional(optional=("process_mode",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectResourceGroup: + return cast(ProjectResourceGroup, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectResourceGroupUpcomingJob(RESTObject): + pass + + +class ProjectResourceGroupUpcomingJobManager(ListMixin, RESTManager): + _path = "/projects/{project_id}/resource_groups/{resource_group_key}/upcoming_jobs" + _obj_cls = ProjectResourceGroupUpcomingJob + _from_parent_attrs = {"project_id": "project_id", "resource_group_key": "key"} diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/reviewers.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/reviewers.py new file mode 100644 index 0000000..9e21736 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/reviewers.py @@ -0,0 +1,17 @@ +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ListMixin + +__all__ = [ + "ProjectMergeRequestReviewerDetail", + "ProjectMergeRequestReviewerDetailManager", +] + + +class ProjectMergeRequestReviewerDetail(RESTObject): + pass + + +class ProjectMergeRequestReviewerDetailManager(ListMixin, RESTManager): + _path = "/projects/{project_id}/merge_requests/{mr_iid}/reviewers" + _obj_cls = ProjectMergeRequestReviewerDetail + _from_parent_attrs = {"project_id": "project_id", "mr_iid": "iid"} diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/runners.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/runners.py new file mode 100644 index 0000000..3368a1e --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/runners.py @@ -0,0 +1,161 @@ +from typing import Any, cast, List, Optional, Union + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab import types +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import ( + CreateMixin, + CRUDMixin, + DeleteMixin, + ListMixin, + ObjectDeleteMixin, + SaveMixin, +) +from gitlab.types import RequiredOptional + +__all__ = [ + "RunnerJob", + "RunnerJobManager", + "Runner", + "RunnerManager", + "RunnerAll", + "RunnerAllManager", + "GroupRunner", + "GroupRunnerManager", + "ProjectRunner", + "ProjectRunnerManager", +] + + +class RunnerJob(RESTObject): + pass + + +class RunnerJobManager(ListMixin, RESTManager): + _path = "/runners/{runner_id}/jobs" + _obj_cls = RunnerJob + _from_parent_attrs = {"runner_id": "id"} + _list_filters = ("status",) + + +class Runner(SaveMixin, ObjectDeleteMixin, RESTObject): + jobs: RunnerJobManager + _repr_attr = "description" + + +class RunnerManager(CRUDMixin, RESTManager): + _path = "/runners" + _obj_cls = Runner + _create_attrs = RequiredOptional( + required=("token",), + optional=( + "description", + "info", + "active", + "locked", + "run_untagged", + "tag_list", + "access_level", + "maximum_timeout", + ), + ) + _update_attrs = RequiredOptional( + optional=( + "description", + "active", + "tag_list", + "run_untagged", + "locked", + "access_level", + "maximum_timeout", + ), + ) + _list_filters = ("scope", "type", "status", "paused", "tag_list") + _types = {"tag_list": types.CommaSeparatedListAttribute} + + @cli.register_custom_action(cls_names="RunnerManager", optional=("scope",)) + @exc.on_http_error(exc.GitlabListError) + def all(self, scope: Optional[str] = None, **kwargs: Any) -> List[Runner]: + """List all the runners. + + Args: + scope: The scope of runners to show, one of: specific, + shared, active, paused, online + all: If True, return all the items, without pagination + per_page: Number of items to retrieve per request + page: ID of the page to return (starts with page 1) + iterator: If set to True and no pagination option is + defined, return a generator instead of a list + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabListError: If the server failed to perform the request + + Returns: + A list of runners matching the scope. + """ + path = "/runners/all" + query_data = {} + if scope is not None: + query_data["scope"] = scope + obj = self.gitlab.http_list(path, query_data, **kwargs) + return [self._obj_cls(self, item) for item in obj] + + @cli.register_custom_action(cls_names="RunnerManager", required=("token",)) + @exc.on_http_error(exc.GitlabVerifyError) + def verify(self, token: str, **kwargs: Any) -> None: + """Validates authentication credentials for a registered Runner. + + Args: + token: The runner's authentication token + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabVerifyError: If the server failed to verify the token + """ + path = "/runners/verify" + post_data = {"token": token} + self.gitlab.http_post(path, post_data=post_data, **kwargs) + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> Runner: + return cast(Runner, super().get(id=id, lazy=lazy, **kwargs)) + + +class RunnerAll(RESTObject): + _repr_attr = "description" + + +class RunnerAllManager(ListMixin, RESTManager): + _path = "/runners/all" + _obj_cls = RunnerAll + _list_filters = ("scope", "type", "status", "paused", "tag_list") + _types = {"tag_list": types.CommaSeparatedListAttribute} + + +class GroupRunner(RESTObject): + pass + + +class GroupRunnerManager(ListMixin, RESTManager): + _path = "/groups/{group_id}/runners" + _obj_cls = GroupRunner + _from_parent_attrs = {"group_id": "id"} + _create_attrs = RequiredOptional(required=("runner_id",)) + _list_filters = ("scope", "tag_list") + _types = {"tag_list": types.CommaSeparatedListAttribute} + + +class ProjectRunner(ObjectDeleteMixin, RESTObject): + pass + + +class ProjectRunnerManager(CreateMixin, DeleteMixin, ListMixin, RESTManager): + _path = "/projects/{project_id}/runners" + _obj_cls = ProjectRunner + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional(required=("runner_id",)) + _list_filters = ("scope", "tag_list") + _types = {"tag_list": types.CommaSeparatedListAttribute} diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/secure_files.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/secure_files.py new file mode 100644 index 0000000..d96c129 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/secure_files.py @@ -0,0 +1,72 @@ +""" +GitLab API: +https://docs.gitlab.com/ee/api/secure_files.html +""" + +from typing import Any, Callable, cast, Iterator, Optional, TYPE_CHECKING, Union + +import requests + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab import utils +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import NoUpdateMixin, ObjectDeleteMixin +from gitlab.types import FileAttribute, RequiredOptional + +__all__ = ["ProjectSecureFile", "ProjectSecureFileManager"] + + +class ProjectSecureFile(ObjectDeleteMixin, RESTObject): + @cli.register_custom_action(cls_names="ProjectSecureFile") + @exc.on_http_error(exc.GitlabGetError) + def download( + self, + streamed: bool = False, + action: Optional[Callable[[bytes], None]] = None, + chunk_size: int = 1024, + *, + iterator: bool = False, + **kwargs: Any, + ) -> Optional[Union[bytes, Iterator[Any]]]: + """Download the secure file. + + Args: + streamed: If True the data will be processed by chunks of + `chunk_size` and each chunk is passed to `action` for + treatment + iterator: If True directly return the underlying response + iterator + action: Callable responsible of dealing with chunk of + data + chunk_size: Size of each chunk + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the artifacts could not be retrieved + + Returns: + The artifacts if `streamed` is False, None otherwise.""" + path = f"{self.manager.path}/{self.id}/download" + result = self.manager.gitlab.http_get( + path, streamed=streamed, raw=True, **kwargs + ) + if TYPE_CHECKING: + assert isinstance(result, requests.Response) + return utils.response_content( + result, streamed, action, chunk_size, iterator=iterator + ) + + +class ProjectSecureFileManager(NoUpdateMixin, RESTManager): + _path = "/projects/{project_id}/secure_files" + _obj_cls = ProjectSecureFile + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional(required=("name", "file")) + _types = {"file": FileAttribute} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectSecureFile: + return cast(ProjectSecureFile, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/service_accounts.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/service_accounts.py new file mode 100644 index 0000000..e73dd7b --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/service_accounts.py @@ -0,0 +1,18 @@ +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CreateMixin, DeleteMixin, ListMixin, ObjectDeleteMixin +from gitlab.types import RequiredOptional + +__all__ = ["GroupServiceAccount", "GroupServiceAccountManager"] + + +class GroupServiceAccount(ObjectDeleteMixin, RESTObject): + pass + + +class GroupServiceAccountManager(CreateMixin, DeleteMixin, ListMixin, RESTManager): + _path = "/groups/{group_id}/service_accounts" + _obj_cls = GroupServiceAccount + _from_parent_attrs = {"group_id": "id"} + _create_attrs = RequiredOptional( + optional=("name", "username"), + ) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/settings.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/settings.py new file mode 100644 index 0000000..cfddf95 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/settings.py @@ -0,0 +1,120 @@ +from typing import Any, cast, Dict, Optional, Union + +from gitlab import exceptions as exc +from gitlab import types +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import GetWithoutIdMixin, SaveMixin, UpdateMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "ApplicationSettings", + "ApplicationSettingsManager", +] + + +class ApplicationSettings(SaveMixin, RESTObject): + _id_attr = None + + +class ApplicationSettingsManager(GetWithoutIdMixin, UpdateMixin, RESTManager): + _path = "/application/settings" + _obj_cls = ApplicationSettings + _update_attrs = RequiredOptional( + optional=( + "id", + "default_projects_limit", + "signup_enabled", + "password_authentication_enabled_for_web", + "gravatar_enabled", + "sign_in_text", + "created_at", + "updated_at", + "home_page_url", + "default_branch_protection", + "restricted_visibility_levels", + "max_attachment_size", + "session_expire_delay", + "default_project_visibility", + "default_snippet_visibility", + "default_group_visibility", + "outbound_local_requests_whitelist", + "disabled_oauth_sign_in_sources", + "domain_whitelist", + "domain_blacklist_enabled", + "domain_blacklist", + "domain_allowlist", + "domain_denylist_enabled", + "domain_denylist", + "external_authorization_service_enabled", + "external_authorization_service_url", + "external_authorization_service_default_label", + "external_authorization_service_timeout", + "import_sources", + "user_oauth_applications", + "after_sign_out_path", + "container_registry_token_expire_delay", + "repository_storages", + "plantuml_enabled", + "plantuml_url", + "terminal_max_session_time", + "polling_interval_multiplier", + "rsa_key_restriction", + "dsa_key_restriction", + "ecdsa_key_restriction", + "ed25519_key_restriction", + "first_day_of_week", + "enforce_terms", + "terms", + "performance_bar_allowed_group_id", + "instance_statistics_visibility_private", + "user_show_add_ssh_key_message", + "file_template_project_id", + "local_markdown_version", + "asset_proxy_enabled", + "asset_proxy_url", + "asset_proxy_whitelist", + "asset_proxy_allowlist", + "geo_node_allowed_ips", + "allow_local_requests_from_hooks_and_services", + "allow_local_requests_from_web_hooks_and_services", + "allow_local_requests_from_system_hooks", + ), + ) + _types = { + "asset_proxy_allowlist": types.ArrayAttribute, + "disabled_oauth_sign_in_sources": types.ArrayAttribute, + "domain_allowlist": types.ArrayAttribute, + "domain_denylist": types.ArrayAttribute, + "import_sources": types.ArrayAttribute, + "restricted_visibility_levels": types.ArrayAttribute, + } + + @exc.on_http_error(exc.GitlabUpdateError) + def update( + self, + id: Optional[Union[str, int]] = None, + new_data: Optional[Dict[str, Any]] = None, + **kwargs: Any, + ) -> Dict[str, Any]: + """Update an object on the server. + + Args: + id: ID of the object to update (can be None if not required) + new_data: the update data for the object + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + The new object data (*not* a RESTObject) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabUpdateError: If the server cannot perform the request + """ + new_data = new_data or {} + data = new_data.copy() + if "domain_whitelist" in data and data["domain_whitelist"] is None: + data.pop("domain_whitelist") + return super().update(id, data, **kwargs) + + def get(self, **kwargs: Any) -> ApplicationSettings: + return cast(ApplicationSettings, super().get(**kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/sidekiq.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/sidekiq.py new file mode 100644 index 0000000..5a11d63 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/sidekiq.py @@ -0,0 +1,91 @@ +from typing import Any, Dict, Union + +import requests + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab.base import RESTManager + +__all__ = [ + "SidekiqManager", +] + + +class SidekiqManager(RESTManager): + """Manager for the Sidekiq methods. + + This manager doesn't actually manage objects but provides helper function + for the sidekiq metrics API. + """ + + @cli.register_custom_action(cls_names="SidekiqManager") + @exc.on_http_error(exc.GitlabGetError) + def queue_metrics(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """Return the registered queues information. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the information couldn't be retrieved + + Returns: + Information about the Sidekiq queues + """ + return self.gitlab.http_get("/sidekiq/queue_metrics", **kwargs) + + @cli.register_custom_action(cls_names="SidekiqManager") + @exc.on_http_error(exc.GitlabGetError) + def process_metrics( + self, **kwargs: Any + ) -> Union[Dict[str, Any], requests.Response]: + """Return the registered sidekiq workers. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the information couldn't be retrieved + + Returns: + Information about the register Sidekiq worker + """ + return self.gitlab.http_get("/sidekiq/process_metrics", **kwargs) + + @cli.register_custom_action(cls_names="SidekiqManager") + @exc.on_http_error(exc.GitlabGetError) + def job_stats(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """Return statistics about the jobs performed. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the information couldn't be retrieved + + Returns: + Statistics about the Sidekiq jobs performed + """ + return self.gitlab.http_get("/sidekiq/job_stats", **kwargs) + + @cli.register_custom_action(cls_names="SidekiqManager") + @exc.on_http_error(exc.GitlabGetError) + def compound_metrics( + self, **kwargs: Any + ) -> Union[Dict[str, Any], requests.Response]: + """Return all available metrics and statistics. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the information couldn't be retrieved + + Returns: + All available Sidekiq metrics and statistics + """ + return self.gitlab.http_get("/sidekiq/compound_metrics", **kwargs) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/snippets.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/snippets.py new file mode 100644 index 0000000..8d0fc06 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/snippets.py @@ -0,0 +1,238 @@ +from typing import Any, Callable, cast, Iterator, List, Optional, TYPE_CHECKING, Union + +import requests + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab import utils +from gitlab.base import RESTManager, RESTObject, RESTObjectList +from gitlab.mixins import CRUDMixin, ObjectDeleteMixin, SaveMixin, UserAgentDetailMixin +from gitlab.types import RequiredOptional + +from .award_emojis import ProjectSnippetAwardEmojiManager # noqa: F401 +from .discussions import ProjectSnippetDiscussionManager # noqa: F401 +from .notes import ProjectSnippetNoteManager # noqa: F401 + +__all__ = [ + "Snippet", + "SnippetManager", + "ProjectSnippet", + "ProjectSnippetManager", +] + + +class Snippet(UserAgentDetailMixin, SaveMixin, ObjectDeleteMixin, RESTObject): + _repr_attr = "title" + + @cli.register_custom_action(cls_names="Snippet") + @exc.on_http_error(exc.GitlabGetError) + def content( + self, + streamed: bool = False, + action: Optional[Callable[..., Any]] = None, + chunk_size: int = 1024, + *, + iterator: bool = False, + **kwargs: Any, + ) -> Optional[Union[bytes, Iterator[Any]]]: + """Return the content of a snippet. + + Args: + streamed: If True the data will be processed by chunks of + `chunk_size` and each chunk is passed to `action` for + treatment. + iterator: If True directly return the underlying response + iterator + action: Callable responsible of dealing with chunk of + data + chunk_size: Size of each chunk + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the content could not be retrieved + + Returns: + The snippet content + """ + path = f"/snippets/{self.encoded_id}/raw" + result = self.manager.gitlab.http_get( + path, streamed=streamed, raw=True, **kwargs + ) + if TYPE_CHECKING: + assert isinstance(result, requests.Response) + return utils.response_content( + result, streamed, action, chunk_size, iterator=iterator + ) + + +class SnippetManager(CRUDMixin, RESTManager): + _path = "/snippets" + _obj_cls = Snippet + _create_attrs = RequiredOptional( + required=("title",), + exclusive=("files", "file_name"), + optional=( + "description", + "content", + "visibility", + ), + ) + _update_attrs = RequiredOptional( + optional=( + "title", + "files", + "file_name", + "content", + "visibility", + "description", + ), + ) + + @cli.register_custom_action(cls_names="SnippetManager") + def list_public(self, **kwargs: Any) -> Union[RESTObjectList, List[RESTObject]]: + """List all public snippets. + + Args: + get_all: If True, return all the items, without pagination + per_page: Number of items to retrieve per request + page: ID of the page to return (starts with page 1) + iterator: If set to True and no pagination option is + defined, return a generator instead of a list + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabListError: If the list could not be retrieved + + Returns: + The list of snippets, or a generator if `iterator` is True + """ + return self.list(path="/snippets/public", **kwargs) + + @cli.register_custom_action(cls_names="SnippetManager") + def list_all(self, **kwargs: Any) -> Union[RESTObjectList, List[RESTObject]]: + """List all snippets. + + Args: + get_all: If True, return all the items, without pagination + per_page: Number of items to retrieve per request + page: ID of the page to return (starts with page 1) + iterator: If set to True and no pagination option is + defined, return a generator instead of a list + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabListError: If the list could not be retrieved + + Returns: + A generator for the snippets list + """ + return self.list(path="/snippets/all", **kwargs) + + def public(self, **kwargs: Any) -> Union[RESTObjectList, List[RESTObject]]: + """List all public snippets. + + Args: + get_all: If True, return all the items, without pagination + per_page: Number of items to retrieve per request + page: ID of the page to return (starts with page 1) + iterator: If set to True and no pagination option is + defined, return a generator instead of a list + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabListError: If the list could not be retrieved + + Returns: + The list of snippets, or a generator if `iterator` is True + """ + utils.warn( + message=( + "Gitlab.snippets.public() is deprecated and will be removed in a" + "future major version. Use Gitlab.snippets.list_public() instead." + ), + category=DeprecationWarning, + ) + return self.list(path="/snippets/public", **kwargs) + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> Snippet: + return cast(Snippet, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectSnippet(UserAgentDetailMixin, SaveMixin, ObjectDeleteMixin, RESTObject): + _url = "/projects/{project_id}/snippets" + _repr_attr = "title" + + awardemojis: ProjectSnippetAwardEmojiManager + discussions: ProjectSnippetDiscussionManager + notes: ProjectSnippetNoteManager + + @cli.register_custom_action(cls_names="ProjectSnippet") + @exc.on_http_error(exc.GitlabGetError) + def content( + self, + streamed: bool = False, + action: Optional[Callable[..., Any]] = None, + chunk_size: int = 1024, + *, + iterator: bool = False, + **kwargs: Any, + ) -> Optional[Union[bytes, Iterator[Any]]]: + """Return the content of a snippet. + + Args: + streamed: If True the data will be processed by chunks of + `chunk_size` and each chunk is passed to `action` for + treatment. + iterator: If True directly return the underlying response + iterator + action: Callable responsible of dealing with chunk of + data + chunk_size: Size of each chunk + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabGetError: If the content could not be retrieved + + Returns: + The snippet content + """ + path = f"{self.manager.path}/{self.encoded_id}/raw" + result = self.manager.gitlab.http_get( + path, streamed=streamed, raw=True, **kwargs + ) + if TYPE_CHECKING: + assert isinstance(result, requests.Response) + return utils.response_content( + result, streamed, action, chunk_size, iterator=iterator + ) + + +class ProjectSnippetManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/snippets" + _obj_cls = ProjectSnippet + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("title", "visibility"), + exclusive=("files", "file_name"), + optional=( + "description", + "content", + ), + ) + _update_attrs = RequiredOptional( + optional=( + "title", + "files", + "file_name", + "content", + "visibility", + "description", + ), + ) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectSnippet: + return cast(ProjectSnippet, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/statistics.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/statistics.py new file mode 100644 index 0000000..ce4dc3a --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/statistics.py @@ -0,0 +1,87 @@ +from typing import Any, cast + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import GetWithoutIdMixin, RefreshMixin +from gitlab.types import ArrayAttribute + +__all__ = [ + "GroupIssuesStatistics", + "GroupIssuesStatisticsManager", + "ProjectAdditionalStatistics", + "ProjectAdditionalStatisticsManager", + "IssuesStatistics", + "IssuesStatisticsManager", + "ProjectIssuesStatistics", + "ProjectIssuesStatisticsManager", + "ApplicationStatistics", + "ApplicationStatisticsManager", +] + + +class ProjectAdditionalStatistics(RefreshMixin, RESTObject): + _id_attr = None + + +class ProjectAdditionalStatisticsManager(GetWithoutIdMixin, RESTManager): + _path = "/projects/{project_id}/statistics" + _obj_cls = ProjectAdditionalStatistics + _from_parent_attrs = {"project_id": "id"} + + def get(self, **kwargs: Any) -> ProjectAdditionalStatistics: + return cast(ProjectAdditionalStatistics, super().get(**kwargs)) + + +class IssuesStatistics(RefreshMixin, RESTObject): + _id_attr = None + + +class IssuesStatisticsManager(GetWithoutIdMixin, RESTManager): + _path = "/issues_statistics" + _obj_cls = IssuesStatistics + _list_filters = ("iids",) + _types = {"iids": ArrayAttribute} + + def get(self, **kwargs: Any) -> IssuesStatistics: + return cast(IssuesStatistics, super().get(**kwargs)) + + +class GroupIssuesStatistics(RefreshMixin, RESTObject): + _id_attr = None + + +class GroupIssuesStatisticsManager(GetWithoutIdMixin, RESTManager): + _path = "/groups/{group_id}/issues_statistics" + _obj_cls = GroupIssuesStatistics + _from_parent_attrs = {"group_id": "id"} + _list_filters = ("iids",) + _types = {"iids": ArrayAttribute} + + def get(self, **kwargs: Any) -> GroupIssuesStatistics: + return cast(GroupIssuesStatistics, super().get(**kwargs)) + + +class ProjectIssuesStatistics(RefreshMixin, RESTObject): + _id_attr = None + + +class ProjectIssuesStatisticsManager(GetWithoutIdMixin, RESTManager): + _path = "/projects/{project_id}/issues_statistics" + _obj_cls = ProjectIssuesStatistics + _from_parent_attrs = {"project_id": "id"} + _list_filters = ("iids",) + _types = {"iids": ArrayAttribute} + + def get(self, **kwargs: Any) -> ProjectIssuesStatistics: + return cast(ProjectIssuesStatistics, super().get(**kwargs)) + + +class ApplicationStatistics(RESTObject): + _id_attr = None + + +class ApplicationStatisticsManager(GetWithoutIdMixin, RESTManager): + _path = "/application/statistics" + _obj_cls = ApplicationStatistics + + def get(self, **kwargs: Any) -> ApplicationStatistics: + return cast(ApplicationStatistics, super().get(**kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/tags.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/tags.py new file mode 100644 index 0000000..4334264 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/tags.py @@ -0,0 +1,48 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import NoUpdateMixin, ObjectDeleteMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "ProjectTag", + "ProjectTagManager", + "ProjectProtectedTag", + "ProjectProtectedTagManager", +] + + +class ProjectTag(ObjectDeleteMixin, RESTObject): + _id_attr = "name" + _repr_attr = "name" + + +class ProjectTagManager(NoUpdateMixin, RESTManager): + _path = "/projects/{project_id}/repository/tags" + _obj_cls = ProjectTag + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("tag_name", "ref"), optional=("message",) + ) + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> ProjectTag: + return cast(ProjectTag, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectProtectedTag(ObjectDeleteMixin, RESTObject): + _id_attr = "name" + _repr_attr = "name" + + +class ProjectProtectedTagManager(NoUpdateMixin, RESTManager): + _path = "/projects/{project_id}/protected_tags" + _obj_cls = ProjectProtectedTag + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("name",), optional=("create_access_level",) + ) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectProtectedTag: + return cast(ProjectProtectedTag, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/templates.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/templates.py new file mode 100644 index 0000000..bbe2ae6 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/templates.py @@ -0,0 +1,67 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import RetrieveMixin + +__all__ = [ + "Dockerfile", + "DockerfileManager", + "Gitignore", + "GitignoreManager", + "Gitlabciyml", + "GitlabciymlManager", + "License", + "LicenseManager", +] + + +class Dockerfile(RESTObject): + _id_attr = "name" + + +class DockerfileManager(RetrieveMixin, RESTManager): + _path = "/templates/dockerfiles" + _obj_cls = Dockerfile + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> Dockerfile: + return cast(Dockerfile, super().get(id=id, lazy=lazy, **kwargs)) + + +class Gitignore(RESTObject): + _id_attr = "name" + + +class GitignoreManager(RetrieveMixin, RESTManager): + _path = "/templates/gitignores" + _obj_cls = Gitignore + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> Gitignore: + return cast(Gitignore, super().get(id=id, lazy=lazy, **kwargs)) + + +class Gitlabciyml(RESTObject): + _id_attr = "name" + + +class GitlabciymlManager(RetrieveMixin, RESTManager): + _path = "/templates/gitlab_ci_ymls" + _obj_cls = Gitlabciyml + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> Gitlabciyml: + return cast(Gitlabciyml, super().get(id=id, lazy=lazy, **kwargs)) + + +class License(RESTObject): + _id_attr = "key" + + +class LicenseManager(RetrieveMixin, RESTManager): + _path = "/templates/licenses" + _obj_cls = License + _list_filters = ("popular",) + _optional_get_attrs = ("project", "fullname") + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> License: + return cast(License, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/todos.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/todos.py new file mode 100644 index 0000000..3040db4 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/todos.py @@ -0,0 +1,58 @@ +from typing import Any, Dict, TYPE_CHECKING + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import DeleteMixin, ListMixin, ObjectDeleteMixin + +__all__ = [ + "Todo", + "TodoManager", +] + + +class Todo(ObjectDeleteMixin, RESTObject): + @cli.register_custom_action(cls_names="Todo") + @exc.on_http_error(exc.GitlabTodoError) + def mark_as_done(self, **kwargs: Any) -> Dict[str, Any]: + """Mark the todo as done. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabTodoError: If the server failed to perform the request + + Returns: + A dict with the result + """ + path = f"{self.manager.path}/{self.encoded_id}/mark_as_done" + server_data = self.manager.gitlab.http_post(path, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + self._update_attrs(server_data) + return server_data + + +class TodoManager(ListMixin, DeleteMixin, RESTManager): + _path = "/todos" + _obj_cls = Todo + _list_filters = ("action", "author_id", "project_id", "state", "type") + + @cli.register_custom_action(cls_names="TodoManager") + @exc.on_http_error(exc.GitlabTodoError) + def mark_all_as_done(self, **kwargs: Any) -> None: + """Mark all the todos as done. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabTodoError: If the server failed to perform the request + + Returns: + The number of todos marked done + """ + self.gitlab.http_post("/todos/mark_as_done", **kwargs) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/topics.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/topics.py new file mode 100644 index 0000000..0dd4285 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/topics.py @@ -0,0 +1,69 @@ +from typing import Any, cast, Dict, TYPE_CHECKING, Union + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab import types +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CRUDMixin, ObjectDeleteMixin, SaveMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "Topic", + "TopicManager", +] + + +class Topic(SaveMixin, ObjectDeleteMixin, RESTObject): + pass + + +class TopicManager(CRUDMixin, RESTManager): + _path = "/topics" + _obj_cls = Topic + _create_attrs = RequiredOptional( + # NOTE: The `title` field was added and is required in GitLab 15.0 or + # newer. But not present before that. + required=("name",), + optional=("avatar", "description", "title"), + ) + _update_attrs = RequiredOptional(optional=("avatar", "description", "name")) + _types = {"avatar": types.ImageAttribute} + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> Topic: + return cast(Topic, super().get(id=id, lazy=lazy, **kwargs)) + + @cli.register_custom_action( + cls_names="TopicManager", + required=("source_topic_id", "target_topic_id"), + ) + @exc.on_http_error(exc.GitlabMRClosedError) + def merge( + self, + source_topic_id: Union[int, str], + target_topic_id: Union[int, str], + **kwargs: Any, + ) -> Dict[str, Any]: + """Merge two topics, assigning all projects to the target topic. + + Args: + source_topic_id: ID of source project topic + target_topic_id: ID of target project topic + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabTopicMergeError: If the merge failed + + Returns: + The merged topic data (*not* a RESTObject) + """ + path = f"{self.path}/merge" + data = { + "source_topic_id": source_topic_id, + "target_topic_id": target_topic_id, + } + + server_data = self.gitlab.http_post(path, post_data=data, **kwargs) + if TYPE_CHECKING: + assert isinstance(server_data, dict) + return server_data diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/triggers.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/triggers.py new file mode 100644 index 0000000..8c0d885 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/triggers.py @@ -0,0 +1,27 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CRUDMixin, ObjectDeleteMixin, SaveMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "ProjectTrigger", + "ProjectTriggerManager", +] + + +class ProjectTrigger(SaveMixin, ObjectDeleteMixin, RESTObject): + pass + + +class ProjectTriggerManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/triggers" + _obj_cls = ProjectTrigger + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional(required=("description",)) + _update_attrs = RequiredOptional(required=("description",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectTrigger: + return cast(ProjectTrigger, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/users.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/users.py new file mode 100644 index 0000000..b7a3159 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/users.py @@ -0,0 +1,709 @@ +""" +GitLab API: +https://docs.gitlab.com/ee/api/users.html +https://docs.gitlab.com/ee/api/projects.html#list-projects-starred-by-a-user +""" + +from typing import Any, cast, Dict, List, Optional, Union + +import requests + +from gitlab import cli +from gitlab import exceptions as exc +from gitlab import types +from gitlab.base import RESTManager, RESTObject, RESTObjectList +from gitlab.mixins import ( + CreateMixin, + CRUDMixin, + DeleteMixin, + GetWithoutIdMixin, + ListMixin, + NoUpdateMixin, + ObjectDeleteMixin, + RetrieveMixin, + SaveMixin, + UpdateMixin, +) +from gitlab.types import ArrayAttribute, RequiredOptional + +from .custom_attributes import UserCustomAttributeManager # noqa: F401 +from .events import UserEventManager # noqa: F401 +from .personal_access_tokens import UserPersonalAccessTokenManager # noqa: F401 + +__all__ = [ + "CurrentUserEmail", + "CurrentUserEmailManager", + "CurrentUserGPGKey", + "CurrentUserGPGKeyManager", + "CurrentUserKey", + "CurrentUserKeyManager", + "CurrentUserRunner", + "CurrentUserRunnerManager", + "CurrentUserStatus", + "CurrentUserStatusManager", + "CurrentUser", + "CurrentUserManager", + "User", + "UserManager", + "ProjectUser", + "ProjectUserManager", + "StarredProject", + "StarredProjectManager", + "UserEmail", + "UserEmailManager", + "UserActivities", + "UserStatus", + "UserStatusManager", + "UserActivitiesManager", + "UserGPGKey", + "UserGPGKeyManager", + "UserKey", + "UserKeyManager", + "UserIdentityProviderManager", + "UserImpersonationToken", + "UserImpersonationTokenManager", + "UserMembership", + "UserMembershipManager", + "UserProject", + "UserProjectManager", +] + + +class CurrentUserEmail(ObjectDeleteMixin, RESTObject): + _repr_attr = "email" + + +class CurrentUserEmailManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager): + _path = "/user/emails" + _obj_cls = CurrentUserEmail + _create_attrs = RequiredOptional(required=("email",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> CurrentUserEmail: + return cast(CurrentUserEmail, super().get(id=id, lazy=lazy, **kwargs)) + + +class CurrentUserGPGKey(ObjectDeleteMixin, RESTObject): + pass + + +class CurrentUserGPGKeyManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager): + _path = "/user/gpg_keys" + _obj_cls = CurrentUserGPGKey + _create_attrs = RequiredOptional(required=("key",)) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> CurrentUserGPGKey: + return cast(CurrentUserGPGKey, super().get(id=id, lazy=lazy, **kwargs)) + + +class CurrentUserKey(ObjectDeleteMixin, RESTObject): + _repr_attr = "title" + + +class CurrentUserKeyManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager): + _path = "/user/keys" + _obj_cls = CurrentUserKey + _create_attrs = RequiredOptional(required=("title", "key")) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> CurrentUserKey: + return cast(CurrentUserKey, super().get(id=id, lazy=lazy, **kwargs)) + + +class CurrentUserRunner(RESTObject): + pass + + +class CurrentUserRunnerManager(CreateMixin, RESTManager): + _path = "/user/runners" + _obj_cls = CurrentUserRunner + _types = {"tag_list": types.CommaSeparatedListAttribute} + _create_attrs = RequiredOptional( + required=("runner_type",), + optional=( + "group_id", + "project_id", + "description", + "paused", + "locked", + "run_untagged", + "tag_list", + "access_level", + "maximum_timeout", + "maintenance_note", + ), + ) + + +class CurrentUserStatus(SaveMixin, RESTObject): + _id_attr = None + _repr_attr = "message" + + +class CurrentUserStatusManager(GetWithoutIdMixin, UpdateMixin, RESTManager): + _path = "/user/status" + _obj_cls = CurrentUserStatus + _update_attrs = RequiredOptional(optional=("emoji", "message")) + + def get(self, **kwargs: Any) -> CurrentUserStatus: + return cast(CurrentUserStatus, super().get(**kwargs)) + + +class CurrentUser(RESTObject): + _id_attr = None + _repr_attr = "username" + + emails: CurrentUserEmailManager + gpgkeys: CurrentUserGPGKeyManager + keys: CurrentUserKeyManager + runners: CurrentUserRunnerManager + status: CurrentUserStatusManager + + +class CurrentUserManager(GetWithoutIdMixin, RESTManager): + _path = "/user" + _obj_cls = CurrentUser + + def get(self, **kwargs: Any) -> CurrentUser: + return cast(CurrentUser, super().get(**kwargs)) + + +class User(SaveMixin, ObjectDeleteMixin, RESTObject): + _repr_attr = "username" + + customattributes: UserCustomAttributeManager + emails: "UserEmailManager" + events: UserEventManager + followers_users: "UserFollowersManager" + following_users: "UserFollowingManager" + gpgkeys: "UserGPGKeyManager" + identityproviders: "UserIdentityProviderManager" + impersonationtokens: "UserImpersonationTokenManager" + keys: "UserKeyManager" + memberships: "UserMembershipManager" + personal_access_tokens: UserPersonalAccessTokenManager + projects: "UserProjectManager" + starred_projects: "StarredProjectManager" + status: "UserStatusManager" + + @cli.register_custom_action(cls_names="User") + @exc.on_http_error(exc.GitlabBlockError) + def block(self, **kwargs: Any) -> Optional[bool]: + """Block the user. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabBlockError: If the user could not be blocked + + Returns: + Whether the user status has been changed + """ + path = f"/users/{self.encoded_id}/block" + # NOTE: Undocumented behavior of the GitLab API is that it returns a + # boolean or None + server_data = cast( + Optional[bool], self.manager.gitlab.http_post(path, **kwargs) + ) + if server_data is True: + self._attrs["state"] = "blocked" + return server_data + + @cli.register_custom_action(cls_names="User") + @exc.on_http_error(exc.GitlabFollowError) + def follow(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """Follow the user. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabFollowError: If the user could not be followed + + Returns: + The new object data (*not* a RESTObject) + """ + path = f"/users/{self.encoded_id}/follow" + return self.manager.gitlab.http_post(path, **kwargs) + + @cli.register_custom_action(cls_names="User") + @exc.on_http_error(exc.GitlabUnfollowError) + def unfollow(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """Unfollow the user. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabUnfollowError: If the user could not be followed + + Returns: + The new object data (*not* a RESTObject) + """ + path = f"/users/{self.encoded_id}/unfollow" + return self.manager.gitlab.http_post(path, **kwargs) + + @cli.register_custom_action(cls_names="User") + @exc.on_http_error(exc.GitlabUnblockError) + def unblock(self, **kwargs: Any) -> Optional[bool]: + """Unblock the user. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabUnblockError: If the user could not be unblocked + + Returns: + Whether the user status has been changed + """ + path = f"/users/{self.encoded_id}/unblock" + # NOTE: Undocumented behavior of the GitLab API is that it returns a + # boolean or None + server_data = cast( + Optional[bool], self.manager.gitlab.http_post(path, **kwargs) + ) + if server_data is True: + self._attrs["state"] = "active" + return server_data + + @cli.register_custom_action(cls_names="User") + @exc.on_http_error(exc.GitlabDeactivateError) + def deactivate(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """Deactivate the user. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabDeactivateError: If the user could not be deactivated + + Returns: + Whether the user status has been changed + """ + path = f"/users/{self.encoded_id}/deactivate" + server_data = self.manager.gitlab.http_post(path, **kwargs) + if server_data: + self._attrs["state"] = "deactivated" + return server_data + + @cli.register_custom_action(cls_names="User") + @exc.on_http_error(exc.GitlabActivateError) + def activate(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """Activate the user. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabActivateError: If the user could not be activated + + Returns: + Whether the user status has been changed + """ + path = f"/users/{self.encoded_id}/activate" + server_data = self.manager.gitlab.http_post(path, **kwargs) + if server_data: + self._attrs["state"] = "active" + return server_data + + @cli.register_custom_action(cls_names="User") + @exc.on_http_error(exc.GitlabUserApproveError) + def approve(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """Approve a user creation request. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabUserApproveError: If the user could not be activated + + Returns: + The new object data (*not* a RESTObject) + """ + path = f"/users/{self.encoded_id}/approve" + return self.manager.gitlab.http_post(path, **kwargs) + + @cli.register_custom_action(cls_names="User") + @exc.on_http_error(exc.GitlabUserRejectError) + def reject(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """Reject a user creation request. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabUserRejectError: If the user could not be rejected + + Returns: + The new object data (*not* a RESTObject) + """ + path = f"/users/{self.encoded_id}/reject" + return self.manager.gitlab.http_post(path, **kwargs) + + @cli.register_custom_action(cls_names="User") + @exc.on_http_error(exc.GitlabBanError) + def ban(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """Ban the user. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabBanError: If the user could not be banned + + Returns: + Whether the user has been banned + """ + path = f"/users/{self.encoded_id}/ban" + server_data = self.manager.gitlab.http_post(path, **kwargs) + if server_data: + self._attrs["state"] = "banned" + return server_data + + @cli.register_custom_action(cls_names="User") + @exc.on_http_error(exc.GitlabUnbanError) + def unban(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: + """Unban the user. + + Args: + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabUnbanError: If the user could not be unbanned + + Returns: + Whether the user has been unbanned + """ + path = f"/users/{self.encoded_id}/unban" + server_data = self.manager.gitlab.http_post(path, **kwargs) + if server_data: + self._attrs["state"] = "active" + return server_data + + +class UserManager(CRUDMixin, RESTManager): + _path = "/users" + _obj_cls = User + + _list_filters = ( + "active", + "blocked", + "username", + "extern_uid", + "provider", + "external", + "search", + "custom_attributes", + "status", + "two_factor", + ) + _create_attrs = RequiredOptional( + optional=( + "email", + "username", + "name", + "password", + "reset_password", + "skype", + "linkedin", + "twitter", + "projects_limit", + "extern_uid", + "provider", + "bio", + "admin", + "can_create_group", + "website_url", + "skip_confirmation", + "external", + "organization", + "location", + "avatar", + "public_email", + "private_profile", + "color_scheme_id", + "theme_id", + ), + ) + _update_attrs = RequiredOptional( + required=("email", "username", "name"), + optional=( + "password", + "skype", + "linkedin", + "twitter", + "projects_limit", + "extern_uid", + "provider", + "bio", + "admin", + "can_create_group", + "website_url", + "skip_reconfirmation", + "external", + "organization", + "location", + "avatar", + "public_email", + "private_profile", + "color_scheme_id", + "theme_id", + ), + ) + _types = {"confirm": types.LowercaseStringAttribute, "avatar": types.ImageAttribute} + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> User: + return cast(User, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectUser(RESTObject): + pass + + +class ProjectUserManager(ListMixin, RESTManager): + _path = "/projects/{project_id}/users" + _obj_cls = ProjectUser + _from_parent_attrs = {"project_id": "id"} + _list_filters = ("search", "skip_users") + _types = {"skip_users": types.ArrayAttribute} + + +class UserEmail(ObjectDeleteMixin, RESTObject): + _repr_attr = "email" + + +class UserEmailManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager): + _path = "/users/{user_id}/emails" + _obj_cls = UserEmail + _from_parent_attrs = {"user_id": "id"} + _create_attrs = RequiredOptional(required=("email",)) + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> UserEmail: + return cast(UserEmail, super().get(id=id, lazy=lazy, **kwargs)) + + +class UserActivities(RESTObject): + _id_attr = "username" + + +class UserStatus(RESTObject): + _id_attr = None + _repr_attr = "message" + + +class UserStatusManager(GetWithoutIdMixin, RESTManager): + _path = "/users/{user_id}/status" + _obj_cls = UserStatus + _from_parent_attrs = {"user_id": "id"} + + def get(self, **kwargs: Any) -> UserStatus: + return cast(UserStatus, super().get(**kwargs)) + + +class UserActivitiesManager(ListMixin, RESTManager): + _path = "/user/activities" + _obj_cls = UserActivities + + +class UserGPGKey(ObjectDeleteMixin, RESTObject): + pass + + +class UserGPGKeyManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager): + _path = "/users/{user_id}/gpg_keys" + _obj_cls = UserGPGKey + _from_parent_attrs = {"user_id": "id"} + _create_attrs = RequiredOptional(required=("key",)) + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> UserGPGKey: + return cast(UserGPGKey, super().get(id=id, lazy=lazy, **kwargs)) + + +class UserKey(ObjectDeleteMixin, RESTObject): + pass + + +class UserKeyManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager): + _path = "/users/{user_id}/keys" + _obj_cls = UserKey + _from_parent_attrs = {"user_id": "id"} + _create_attrs = RequiredOptional(required=("title", "key")) + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> UserKey: + return cast(UserKey, super().get(id=id, lazy=lazy, **kwargs)) + + +class UserIdentityProviderManager(DeleteMixin, RESTManager): + """Manager for user identities. + + This manager does not actually manage objects but enables + functionality for deletion of user identities by provider. + """ + + _path = "/users/{user_id}/identities" + _from_parent_attrs = {"user_id": "id"} + + +class UserImpersonationToken(ObjectDeleteMixin, RESTObject): + pass + + +class UserImpersonationTokenManager(NoUpdateMixin, RESTManager): + _path = "/users/{user_id}/impersonation_tokens" + _obj_cls = UserImpersonationToken + _from_parent_attrs = {"user_id": "id"} + _create_attrs = RequiredOptional( + required=("name", "scopes"), optional=("expires_at",) + ) + _list_filters = ("state",) + _types = {"scopes": ArrayAttribute} + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> UserImpersonationToken: + return cast(UserImpersonationToken, super().get(id=id, lazy=lazy, **kwargs)) + + +class UserMembership(RESTObject): + _id_attr = "source_id" + + +class UserMembershipManager(RetrieveMixin, RESTManager): + _path = "/users/{user_id}/memberships" + _obj_cls = UserMembership + _from_parent_attrs = {"user_id": "id"} + _list_filters = ("type",) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> UserMembership: + return cast(UserMembership, super().get(id=id, lazy=lazy, **kwargs)) + + +# Having this outside projects avoids circular imports due to ProjectUser +class UserProject(RESTObject): + pass + + +class UserProjectManager(ListMixin, CreateMixin, RESTManager): + _path = "/projects/user/{user_id}" + _obj_cls = UserProject + _from_parent_attrs = {"user_id": "id"} + _create_attrs = RequiredOptional( + required=("name",), + optional=( + "default_branch", + "issues_enabled", + "wall_enabled", + "merge_requests_enabled", + "wiki_enabled", + "snippets_enabled", + "squash_option", + "public", + "visibility", + "description", + "builds_enabled", + "public_builds", + "import_url", + "only_allow_merge_if_build_succeeds", + ), + ) + _list_filters = ( + "archived", + "visibility", + "order_by", + "sort", + "search", + "simple", + "owned", + "membership", + "starred", + "statistics", + "with_issues_enabled", + "with_merge_requests_enabled", + "with_custom_attributes", + "with_programming_language", + "wiki_checksum_failed", + "repository_checksum_failed", + "min_access_level", + "id_after", + "id_before", + ) + + def list(self, **kwargs: Any) -> Union[RESTObjectList, List[RESTObject]]: + """Retrieve a list of objects. + + Args: + all: If True, return all the items, without pagination + per_page: Number of items to retrieve per request + page: ID of the page to return (starts with page 1) + iterator: If set to True and no pagination option is + defined, return a generator instead of a list + **kwargs: Extra options to send to the server (e.g. sudo) + + Returns: + The list of objects, or a generator if `iterator` is True + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabListError: If the server cannot perform the request + """ + if self._parent: + path = f"/users/{self._parent.id}/projects" + else: + path = f"/users/{self._from_parent_attrs['user_id']}/projects" + return ListMixin.list(self, path=path, **kwargs) + + +class StarredProject(RESTObject): + pass + + +class StarredProjectManager(ListMixin, RESTManager): + _path = "/users/{user_id}/starred_projects" + _obj_cls = StarredProject + _from_parent_attrs = {"user_id": "id"} + _list_filters = ( + "archived", + "membership", + "min_access_level", + "order_by", + "owned", + "search", + "simple", + "sort", + "starred", + "statistics", + "visibility", + "with_custom_attributes", + "with_issues_enabled", + "with_merge_requests_enabled", + ) + + +class UserFollowersManager(ListMixin, RESTManager): + _path = "/users/{user_id}/followers" + _obj_cls = User + _from_parent_attrs = {"user_id": "id"} + + +class UserFollowingManager(ListMixin, RESTManager): + _path = "/users/{user_id}/following" + _obj_cls = User + _from_parent_attrs = {"user_id": "id"} diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/variables.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/variables.py new file mode 100644 index 0000000..4cfbeb4 --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/variables.py @@ -0,0 +1,83 @@ +""" +GitLab API: +https://docs.gitlab.com/ee/api/instance_level_ci_variables.html +https://docs.gitlab.com/ee/api/project_level_variables.html +https://docs.gitlab.com/ee/api/group_level_variables.html +""" + +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CRUDMixin, ObjectDeleteMixin, SaveMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "Variable", + "VariableManager", + "GroupVariable", + "GroupVariableManager", + "ProjectVariable", + "ProjectVariableManager", +] + + +class Variable(SaveMixin, ObjectDeleteMixin, RESTObject): + _id_attr = "key" + + +class VariableManager(CRUDMixin, RESTManager): + _path = "/admin/ci/variables" + _obj_cls = Variable + _create_attrs = RequiredOptional( + required=("key", "value"), optional=("protected", "variable_type", "masked") + ) + _update_attrs = RequiredOptional( + required=("key", "value"), optional=("protected", "variable_type", "masked") + ) + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> Variable: + return cast(Variable, super().get(id=id, lazy=lazy, **kwargs)) + + +class GroupVariable(SaveMixin, ObjectDeleteMixin, RESTObject): + _id_attr = "key" + + +class GroupVariableManager(CRUDMixin, RESTManager): + _path = "/groups/{group_id}/variables" + _obj_cls = GroupVariable + _from_parent_attrs = {"group_id": "id"} + _create_attrs = RequiredOptional( + required=("key", "value"), optional=("protected", "variable_type", "masked") + ) + _update_attrs = RequiredOptional( + required=("key", "value"), optional=("protected", "variable_type", "masked") + ) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> GroupVariable: + return cast(GroupVariable, super().get(id=id, lazy=lazy, **kwargs)) + + +class ProjectVariable(SaveMixin, ObjectDeleteMixin, RESTObject): + _id_attr = "key" + + +class ProjectVariableManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/variables" + _obj_cls = ProjectVariable + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("key", "value"), + optional=("protected", "variable_type", "masked", "environment_scope"), + ) + _update_attrs = RequiredOptional( + required=("key", "value"), + optional=("protected", "variable_type", "masked", "environment_scope"), + ) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectVariable: + return cast(ProjectVariable, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/gitlab/v4/objects/wikis.py b/env/lib/python3.12/site-packages/gitlab/v4/objects/wikis.py new file mode 100644 index 0000000..40f661e --- /dev/null +++ b/env/lib/python3.12/site-packages/gitlab/v4/objects/wikis.py @@ -0,0 +1,54 @@ +from typing import Any, cast, Union + +from gitlab.base import RESTManager, RESTObject +from gitlab.mixins import CRUDMixin, ObjectDeleteMixin, SaveMixin, UploadMixin +from gitlab.types import RequiredOptional + +__all__ = [ + "ProjectWiki", + "ProjectWikiManager", + "GroupWiki", + "GroupWikiManager", +] + + +class ProjectWiki(SaveMixin, ObjectDeleteMixin, UploadMixin, RESTObject): + _id_attr = "slug" + _repr_attr = "slug" + _upload_path = "/projects/{project_id}/wikis/attachments" + + +class ProjectWikiManager(CRUDMixin, RESTManager): + _path = "/projects/{project_id}/wikis" + _obj_cls = ProjectWiki + _from_parent_attrs = {"project_id": "id"} + _create_attrs = RequiredOptional( + required=("title", "content"), optional=("format",) + ) + _update_attrs = RequiredOptional(optional=("title", "content", "format")) + _list_filters = ("with_content",) + + def get( + self, id: Union[str, int], lazy: bool = False, **kwargs: Any + ) -> ProjectWiki: + return cast(ProjectWiki, super().get(id=id, lazy=lazy, **kwargs)) + + +class GroupWiki(SaveMixin, ObjectDeleteMixin, UploadMixin, RESTObject): + _id_attr = "slug" + _repr_attr = "slug" + _upload_path = "/groups/{group_id}/wikis/attachments" + + +class GroupWikiManager(CRUDMixin, RESTManager): + _path = "/groups/{group_id}/wikis" + _obj_cls = GroupWiki + _from_parent_attrs = {"group_id": "id"} + _create_attrs = RequiredOptional( + required=("title", "content"), optional=("format",) + ) + _update_attrs = RequiredOptional(optional=("title", "content", "format")) + _list_filters = ("with_content",) + + def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> GroupWiki: + return cast(GroupWiki, super().get(id=id, lazy=lazy, **kwargs)) diff --git a/env/lib/python3.12/site-packages/idna-3.10.dist-info/INSTALLER b/env/lib/python3.12/site-packages/idna-3.10.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/env/lib/python3.12/site-packages/idna-3.10.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/env/lib/python3.12/site-packages/idna-3.10.dist-info/LICENSE.md b/env/lib/python3.12/site-packages/idna-3.10.dist-info/LICENSE.md new file mode 100644 index 0000000..19b6b45 --- /dev/null +++ b/env/lib/python3.12/site-packages/idna-3.10.dist-info/LICENSE.md @@ -0,0 +1,31 @@ +BSD 3-Clause License + +Copyright (c) 2013-2024, Kim Davies and contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/env/lib/python3.12/site-packages/idna-3.10.dist-info/METADATA b/env/lib/python3.12/site-packages/idna-3.10.dist-info/METADATA new file mode 100644 index 0000000..c42623e --- /dev/null +++ b/env/lib/python3.12/site-packages/idna-3.10.dist-info/METADATA @@ -0,0 +1,250 @@ +Metadata-Version: 2.1 +Name: idna +Version: 3.10 +Summary: Internationalized Domain Names in Applications (IDNA) +Author-email: Kim Davies +Requires-Python: >=3.6 +Description-Content-Type: text/x-rst +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Intended Audience :: System Administrators +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Internet :: Name Service (DNS) +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Utilities +Requires-Dist: ruff >= 0.6.2 ; extra == "all" +Requires-Dist: mypy >= 1.11.2 ; extra == "all" +Requires-Dist: pytest >= 8.3.2 ; extra == "all" +Requires-Dist: flake8 >= 7.1.1 ; extra == "all" +Project-URL: Changelog, https://github.com/kjd/idna/blob/master/HISTORY.rst +Project-URL: Issue tracker, https://github.com/kjd/idna/issues +Project-URL: Source, https://github.com/kjd/idna +Provides-Extra: all + +Internationalized Domain Names in Applications (IDNA) +===================================================== + +Support for the Internationalized Domain Names in +Applications (IDNA) protocol as specified in `RFC 5891 +`_. This is the latest version of +the protocol and is sometimes referred to as “IDNA 2008”. + +This library also provides support for Unicode Technical +Standard 46, `Unicode IDNA Compatibility Processing +`_. + +This acts as a suitable replacement for the “encodings.idna” +module that comes with the Python standard library, but which +only supports the older superseded IDNA specification (`RFC 3490 +`_). + +Basic functions are simply executed: + +.. code-block:: pycon + + >>> import idna + >>> idna.encode('ドメイン.テスト') + b'xn--eckwd4c7c.xn--zckzah' + >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) + ドメイン.テスト + + +Installation +------------ + +This package is available for installation from PyPI: + +.. code-block:: bash + + $ python3 -m pip install idna + + +Usage +----- + +For typical usage, the ``encode`` and ``decode`` functions will take a +domain name argument and perform a conversion to A-labels or U-labels +respectively. + +.. code-block:: pycon + + >>> import idna + >>> idna.encode('ドメイン.テスト') + b'xn--eckwd4c7c.xn--zckzah' + >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) + ドメイン.テスト + +You may use the codec encoding and decoding methods using the +``idna.codec`` module: + +.. code-block:: pycon + + >>> import idna.codec + >>> print('домен.испытание'.encode('idna2008')) + b'xn--d1acufc.xn--80akhbyknj4f' + >>> print(b'xn--d1acufc.xn--80akhbyknj4f'.decode('idna2008')) + домен.испытание + +Conversions can be applied at a per-label basis using the ``ulabel`` or +``alabel`` functions if necessary: + +.. code-block:: pycon + + >>> idna.alabel('测试') + b'xn--0zwm56d' + +Compatibility Mapping (UTS #46) ++++++++++++++++++++++++++++++++ + +As described in `RFC 5895 `_, the +IDNA specification does not normalize input from different potential +ways a user may input a domain name. This functionality, known as +a “mapping”, is considered by the specification to be a local +user-interface issue distinct from IDNA conversion functionality. + +This library provides one such mapping that was developed by the +Unicode Consortium. Known as `Unicode IDNA Compatibility Processing +`_, it provides for both a regular +mapping for typical applications, as well as a transitional mapping to +help migrate from older IDNA 2003 applications. Strings are +preprocessed according to Section 4.4 “Preprocessing for IDNA2008” +prior to the IDNA operations. + +For example, “Königsgäßchen” is not a permissible label as *LATIN +CAPITAL LETTER K* is not allowed (nor are capital letters in general). +UTS 46 will convert this into lower case prior to applying the IDNA +conversion. + +.. code-block:: pycon + + >>> import idna + >>> idna.encode('Königsgäßchen') + ... + idna.core.InvalidCodepoint: Codepoint U+004B at position 1 of 'Königsgäßchen' not allowed + >>> idna.encode('Königsgäßchen', uts46=True) + b'xn--knigsgchen-b4a3dun' + >>> print(idna.decode('xn--knigsgchen-b4a3dun')) + königsgäßchen + +Transitional processing provides conversions to help transition from +the older 2003 standard to the current standard. For example, in the +original IDNA specification, the *LATIN SMALL LETTER SHARP S* (ß) was +converted into two *LATIN SMALL LETTER S* (ss), whereas in the current +IDNA specification this conversion is not performed. + +.. code-block:: pycon + + >>> idna.encode('Königsgäßchen', uts46=True, transitional=True) + 'xn--knigsgsschen-lcb0w' + +Implementers should use transitional processing with caution, only in +rare cases where conversion from legacy labels to current labels must be +performed (i.e. IDNA implementations that pre-date 2008). For typical +applications that just need to convert labels, transitional processing +is unlikely to be beneficial and could produce unexpected incompatible +results. + +``encodings.idna`` Compatibility +++++++++++++++++++++++++++++++++ + +Function calls from the Python built-in ``encodings.idna`` module are +mapped to their IDNA 2008 equivalents using the ``idna.compat`` module. +Simply substitute the ``import`` clause in your code to refer to the new +module name. + +Exceptions +---------- + +All errors raised during the conversion following the specification +should raise an exception derived from the ``idna.IDNAError`` base +class. + +More specific exceptions that may be generated as ``idna.IDNABidiError`` +when the error reflects an illegal combination of left-to-right and +right-to-left characters in a label; ``idna.InvalidCodepoint`` when +a specific codepoint is an illegal character in an IDN label (i.e. +INVALID); and ``idna.InvalidCodepointContext`` when the codepoint is +illegal based on its positional context (i.e. it is CONTEXTO or CONTEXTJ +but the contextual requirements are not satisfied.) + +Building and Diagnostics +------------------------ + +The IDNA and UTS 46 functionality relies upon pre-calculated lookup +tables for performance. These tables are derived from computing against +eligibility criteria in the respective standards. These tables are +computed using the command-line script ``tools/idna-data``. + +This tool will fetch relevant codepoint data from the Unicode repository +and perform the required calculations to identify eligibility. There are +three main modes: + +* ``idna-data make-libdata``. Generates ``idnadata.py`` and + ``uts46data.py``, the pre-calculated lookup tables used for IDNA and + UTS 46 conversions. Implementers who wish to track this library against + a different Unicode version may use this tool to manually generate a + different version of the ``idnadata.py`` and ``uts46data.py`` files. + +* ``idna-data make-table``. Generate a table of the IDNA disposition + (e.g. PVALID, CONTEXTJ, CONTEXTO) in the format found in Appendix + B.1 of RFC 5892 and the pre-computed tables published by `IANA + `_. + +* ``idna-data U+0061``. Prints debugging output on the various + properties associated with an individual Unicode codepoint (in this + case, U+0061), that are used to assess the IDNA and UTS 46 status of a + codepoint. This is helpful in debugging or analysis. + +The tool accepts a number of arguments, described using ``idna-data +-h``. Most notably, the ``--version`` argument allows the specification +of the version of Unicode to be used in computing the table data. For +example, ``idna-data --version 9.0.0 make-libdata`` will generate +library data against Unicode 9.0.0. + + +Additional Notes +---------------- + +* **Packages**. The latest tagged release version is published in the + `Python Package Index `_. + +* **Version support**. This library supports Python 3.6 and higher. + As this library serves as a low-level toolkit for a variety of + applications, many of which strive for broad compatibility with older + Python versions, there is no rush to remove older interpreter support. + Removing support for older versions should be well justified in that the + maintenance burden has become too high. + +* **Python 2**. Python 2 is supported by version 2.x of this library. + Use "idna<3" in your requirements file if you need this library for + a Python 2 application. Be advised that these versions are no longer + actively developed. + +* **Testing**. The library has a test suite based on each rule of the + IDNA specification, as well as tests that are provided as part of the + Unicode Technical Standard 46, `Unicode IDNA Compatibility Processing + `_. + +* **Emoji**. It is an occasional request to support emoji domains in + this library. Encoding of symbols like emoji is expressly prohibited by + the technical standard IDNA 2008 and emoji domains are broadly phased + out across the domain industry due to associated security risks. For + now, applications that need to support these non-compliant labels + may wish to consider trying the encode/decode operation in this library + first, and then falling back to using `encodings.idna`. See `the Github + project `_ for more discussion. + diff --git a/env/lib/python3.12/site-packages/idna-3.10.dist-info/RECORD b/env/lib/python3.12/site-packages/idna-3.10.dist-info/RECORD new file mode 100644 index 0000000..9cfce7f --- /dev/null +++ b/env/lib/python3.12/site-packages/idna-3.10.dist-info/RECORD @@ -0,0 +1,22 @@ +idna-3.10.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +idna-3.10.dist-info/LICENSE.md,sha256=pZ8LDvNjWHQQmkRhykT_enDVBpboFHZ7-vch1Mmw2w8,1541 +idna-3.10.dist-info/METADATA,sha256=URR5ZyDfQ1PCEGhkYoojqfi2Ra0tau2--lhwG4XSfjI,10158 +idna-3.10.dist-info/RECORD,, +idna-3.10.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81 +idna/__init__.py,sha256=MPqNDLZbXqGaNdXxAFhiqFPKEQXju2jNQhCey6-5eJM,868 +idna/__pycache__/__init__.cpython-312.pyc,, +idna/__pycache__/codec.cpython-312.pyc,, +idna/__pycache__/compat.cpython-312.pyc,, +idna/__pycache__/core.cpython-312.pyc,, +idna/__pycache__/idnadata.cpython-312.pyc,, +idna/__pycache__/intranges.cpython-312.pyc,, +idna/__pycache__/package_data.cpython-312.pyc,, +idna/__pycache__/uts46data.cpython-312.pyc,, +idna/codec.py,sha256=PEew3ItwzjW4hymbasnty2N2OXvNcgHB-JjrBuxHPYY,3422 +idna/compat.py,sha256=RzLy6QQCdl9784aFhb2EX9EKGCJjg0P3PilGdeXXcx8,316 +idna/core.py,sha256=YJYyAMnwiQEPjVC4-Fqu_p4CJ6yKKuDGmppBNQNQpFs,13239 +idna/idnadata.py,sha256=W30GcIGvtOWYwAjZj4ZjuouUutC6ffgNuyjJy7fZ-lo,78306 +idna/intranges.py,sha256=amUtkdhYcQG8Zr-CoMM_kVRacxkivC1WgxN1b63KKdU,1898 +idna/package_data.py,sha256=q59S3OXsc5VI8j6vSD0sGBMyk6zZ4vWFREE88yCJYKs,21 +idna/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +idna/uts46data.py,sha256=rt90K9J40gUSwppDPCrhjgi5AA6pWM65dEGRSf6rIhM,239289 diff --git a/env/lib/python3.12/site-packages/idna-3.10.dist-info/WHEEL b/env/lib/python3.12/site-packages/idna-3.10.dist-info/WHEEL new file mode 100644 index 0000000..3b5e64b --- /dev/null +++ b/env/lib/python3.12/site-packages/idna-3.10.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: flit 3.9.0 +Root-Is-Purelib: true +Tag: py3-none-any diff --git a/env/lib/python3.12/site-packages/idna/__init__.py b/env/lib/python3.12/site-packages/idna/__init__.py new file mode 100644 index 0000000..cfdc030 --- /dev/null +++ b/env/lib/python3.12/site-packages/idna/__init__.py @@ -0,0 +1,45 @@ +from .core import ( + IDNABidiError, + IDNAError, + InvalidCodepoint, + InvalidCodepointContext, + alabel, + check_bidi, + check_hyphen_ok, + check_initial_combiner, + check_label, + check_nfc, + decode, + encode, + ulabel, + uts46_remap, + valid_contextj, + valid_contexto, + valid_label_length, + valid_string_length, +) +from .intranges import intranges_contain +from .package_data import __version__ + +__all__ = [ + "__version__", + "IDNABidiError", + "IDNAError", + "InvalidCodepoint", + "InvalidCodepointContext", + "alabel", + "check_bidi", + "check_hyphen_ok", + "check_initial_combiner", + "check_label", + "check_nfc", + "decode", + "encode", + "intranges_contain", + "ulabel", + "uts46_remap", + "valid_contextj", + "valid_contexto", + "valid_label_length", + "valid_string_length", +] diff --git a/env/lib/python3.12/site-packages/idna/__pycache__/__init__.cpython-312.pyc b/env/lib/python3.12/site-packages/idna/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e6d2e3abb4bfcf3dff2cc12e6e77ff563205b7c1 GIT binary patch literal 864 zcmbu7yN=W_6o&0gCNr5#=039&hz^MqyAc;rAtYF~*n)ikHHu=4rLvUG} z;5|q|3Jbs?g4{t4@1PEMk;}WN%RS`r9_sNv>T@6Ye1HZ#Kmi}3ArDc=M`*;yXv`;Q z!l!7;XJ`hkpHs~F0xg=jQ!M!ktsuxi>VAOeXy1*zZ_t#EW;#57aq;XqOWB!HQfc3& zZ8$j>J5sRpRHn3)Ow{`5rgADpP2beoBL!L0LJyLhCL6pqc6!{#`M%7lz;dHkt-u7U z87Xig`I-r;bkORpgWo3NRieF=CZ@FZsA!+t_LE>+SC1ZJML8+;sALhX_^ApXK^k$jZ-PIT*iXd6-{C)c5%Vhak;N^DIT8Oe-Kx! zrpE`nDrTu5F~)Z07@w5;>;4li(``YYsyoKj-ofhF;Clx`c;(EYa|Qm!&wBtyU%=fT N?lN%R_S9{&;};M|=|2Df literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/idna/__pycache__/codec.cpython-312.pyc b/env/lib/python3.12/site-packages/idna/__pycache__/codec.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..568893ed931ec4fe4ae93452cb8c758b3d09fc98 GIT binary patch literal 4964 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 s{T-I--}BCJ@5 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 O8)dSt+95}_^8W=gS`tM7 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/idna/__pycache__/idnadata.cpython-312.pyc b/env/lib/python3.12/site-packages/idna/__pycache__/idnadata.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b98069fb80b656dda53253e01c655c899c05f0b8 GIT binary patch literal 99454 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 LxIF}(J^TLvN>ECS literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/idna/__pycache__/intranges.cpython-312.pyc b/env/lib/python3.12/site-packages/idna/__pycache__/intranges.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..694d78c1b4ff804295382630412482f3d502d49a GIT binary patch literal 2616 zcmZuyO>7&-6`uX0Xi}6!36|uaSR*S5vos>sZM58_ zXP2?5P>ovTAT6`x#m`Ek>&q6i&~36;`Y| zPE7|>zic`Vb*tqYjHA}^+!Ezg*G~Xb@LZo2ssXrt&R4-JSE>Pn#hg_*^O+l%f$h1t zJeX&+=<#x5dfE?69vsV1=32+}42}5Xf6Lkm*Y$6~=D74`mHEQe(OafZ zZ_}>(gzXBo$L*5snvOW&dq*KA8rWqyaLiVM?VA>DZubV{V_*&HNGT3tqv zzBqz?JxN`&6yaI3q^?g;J%n9x^dgl=U0qV{{8=SIGSWaSa!-4i=&E@Ll5nYa+i>$Q zB85=94pQMKG z=GQ*k8kyQkz5IU?)5cb$cCvrv=IUEr`QzkNd+=c6*y>-Kht@B)(hsg~PUc(Y=H$u8 zgD2ZV-5CGFN~#?n_-AT0b+_C+-bXXKGkIh~ zJ;KL88cKXmyTM(>&Y05f&QP=vfxHMPD$20Ca)BQLt%G*YK7aPPLik}Ib&0_0yM9p2|CAkQftGjXV-2v&To#rwvl{&Lw!98N`*@{I7YoEEeJyq+`oX> z+Y2qJ*E^Qv-7ffv3WhHX=vVTNtpdGES~vpYC`3a!r9=r99W)cDk<6kL~sTJAPy6H|nW1rKalI;;Az%V7zR*Q1(T7 z9aD0h7U5C!@yYY32a4{)7L^CSI@credRCM>$9{WdR@Vd`!q^QPsxAnV(QG)Z7>G;Z zSUh?kr!a}MhcQw5MyOOgKUC2W8irk(4?@ZCF;iI7Fa+Ad^lnkY%N&@t%XP4M4L<*G z@LMMTO&x5UXr{MPQ_HhY5<@>H4sRw7H?B3WZ6z|xr#mqcPp(}2`>iLVQ_b1+Jk;LF z`yXzNo>)z;s4J|U99%o`Q*xs5%H!ljdt|JmkbWxG+_?<(^q0qd<4=Ysnz5#TKe;uW zS?z;Grdafk88B}rhXkzjWY}jImRB$gj%5LdtW}_|a>NuzsDuh01ko845CS$-Z+M;~ z&LdzhT!~}<8lNe9R@GsDnM^W{ZG~;b$ftF1OFyRIiRML{KxB literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/idna/__pycache__/uts46data.cpython-312.pyc b/env/lib/python3.12/site-packages/idna/__pycache__/uts46data.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4feafcd939f04b31f0fb2bc87f6b160e731f5c72 GIT binary patch literal 158824 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 U>8s4_PX(^YDw*zH%swIhe=ZG9ApigX literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/idna/codec.py b/env/lib/python3.12/site-packages/idna/codec.py new file mode 100644 index 0000000..913abfd --- /dev/null +++ b/env/lib/python3.12/site-packages/idna/codec.py @@ -0,0 +1,122 @@ +import codecs +import re +from typing import Any, Optional, Tuple + +from .core import IDNAError, alabel, decode, encode, ulabel + +_unicode_dots_re = re.compile("[\u002e\u3002\uff0e\uff61]") + + +class Codec(codecs.Codec): + def encode(self, data: str, errors: str = "strict") -> Tuple[bytes, int]: + if errors != "strict": + raise IDNAError('Unsupported error handling "{}"'.format(errors)) + + if not data: + return b"", 0 + + return encode(data), len(data) + + def decode(self, data: bytes, errors: str = "strict") -> Tuple[str, int]: + if errors != "strict": + raise IDNAError('Unsupported error handling "{}"'.format(errors)) + + if not data: + return "", 0 + + return decode(data), len(data) + + +class IncrementalEncoder(codecs.BufferedIncrementalEncoder): + def _buffer_encode(self, data: str, errors: str, final: bool) -> Tuple[bytes, int]: + if errors != "strict": + raise IDNAError('Unsupported error handling "{}"'.format(errors)) + + if not data: + return b"", 0 + + labels = _unicode_dots_re.split(data) + trailing_dot = b"" + if labels: + if not labels[-1]: + trailing_dot = b"." + del labels[-1] + elif not final: + # Keep potentially unfinished label until the next call + del labels[-1] + if labels: + trailing_dot = b"." + + result = [] + size = 0 + for label in labels: + result.append(alabel(label)) + if size: + size += 1 + size += len(label) + + # Join with U+002E + result_bytes = b".".join(result) + trailing_dot + size += len(trailing_dot) + return result_bytes, size + + +class IncrementalDecoder(codecs.BufferedIncrementalDecoder): + def _buffer_decode(self, data: Any, errors: str, final: bool) -> Tuple[str, int]: + if errors != "strict": + raise IDNAError('Unsupported error handling "{}"'.format(errors)) + + if not data: + return ("", 0) + + if not isinstance(data, str): + data = str(data, "ascii") + + labels = _unicode_dots_re.split(data) + trailing_dot = "" + if labels: + if not labels[-1]: + trailing_dot = "." + del labels[-1] + elif not final: + # Keep potentially unfinished label until the next call + del labels[-1] + if labels: + trailing_dot = "." + + result = [] + size = 0 + for label in labels: + result.append(ulabel(label)) + if size: + size += 1 + size += len(label) + + result_str = ".".join(result) + trailing_dot + size += len(trailing_dot) + return (result_str, size) + + +class StreamWriter(Codec, codecs.StreamWriter): + pass + + +class StreamReader(Codec, codecs.StreamReader): + pass + + +def search_function(name: str) -> Optional[codecs.CodecInfo]: + if name != "idna2008": + return None + return codecs.CodecInfo( + name=name, + encode=Codec().encode, + decode=Codec().decode, + incrementalencoder=IncrementalEncoder, + incrementaldecoder=IncrementalDecoder, + streamwriter=StreamWriter, + streamreader=StreamReader, + ) + + +codecs.register(search_function) diff --git a/env/lib/python3.12/site-packages/idna/compat.py b/env/lib/python3.12/site-packages/idna/compat.py new file mode 100644 index 0000000..1df9f2a --- /dev/null +++ b/env/lib/python3.12/site-packages/idna/compat.py @@ -0,0 +1,15 @@ +from typing import Any, Union + +from .core import decode, encode + + +def ToASCII(label: str) -> bytes: + return encode(label) + + +def ToUnicode(label: Union[bytes, bytearray]) -> str: + return decode(label) + + +def nameprep(s: Any) -> None: + raise NotImplementedError("IDNA 2008 does not utilise nameprep protocol") diff --git a/env/lib/python3.12/site-packages/idna/core.py b/env/lib/python3.12/site-packages/idna/core.py new file mode 100644 index 0000000..9115f12 --- /dev/null +++ b/env/lib/python3.12/site-packages/idna/core.py @@ -0,0 +1,437 @@ +import bisect +import re +import unicodedata +from typing import Optional, Union + +from . import idnadata +from .intranges import intranges_contain + +_virama_combining_class = 9 +_alabel_prefix = b"xn--" +_unicode_dots_re = re.compile("[\u002e\u3002\uff0e\uff61]") + + +class IDNAError(UnicodeError): + """Base exception for all IDNA-encoding related problems""" + + pass + + +class IDNABidiError(IDNAError): + """Exception when bidirectional requirements are not satisfied""" + + pass + + +class InvalidCodepoint(IDNAError): + """Exception when a disallowed or unallocated codepoint is used""" + + pass + + +class InvalidCodepointContext(IDNAError): + """Exception when the codepoint is not valid in the context it is used""" + + pass + + +def _combining_class(cp: int) -> int: + v = unicodedata.combining(chr(cp)) + if v == 0: + if not unicodedata.name(chr(cp)): + raise ValueError("Unknown character in unicodedata") + return v + + +def _is_script(cp: str, script: str) -> bool: + return intranges_contain(ord(cp), idnadata.scripts[script]) + + +def _punycode(s: str) -> bytes: + return s.encode("punycode") + + +def _unot(s: int) -> str: + return "U+{:04X}".format(s) + + +def valid_label_length(label: Union[bytes, str]) -> bool: + if len(label) > 63: + return False + return True + + +def valid_string_length(label: Union[bytes, str], trailing_dot: bool) -> bool: + if len(label) > (254 if trailing_dot else 253): + return False + return True + + +def check_bidi(label: str, check_ltr: bool = False) -> bool: + # Bidi rules should only be applied if string contains RTL characters + bidi_label = False + for idx, cp in enumerate(label, 1): + direction = unicodedata.bidirectional(cp) + if direction == "": + # String likely comes from a newer version of Unicode + raise IDNABidiError("Unknown directionality in label {} at position {}".format(repr(label), idx)) + if direction in ["R", "AL", "AN"]: + bidi_label = True + if not bidi_label and not check_ltr: + return True + + # Bidi rule 1 + direction = unicodedata.bidirectional(label[0]) + if direction in ["R", "AL"]: + rtl = True + elif direction == "L": + rtl = False + else: + raise IDNABidiError("First codepoint in label {} must be directionality L, R or AL".format(repr(label))) + + valid_ending = False + number_type: Optional[str] = None + for idx, cp in enumerate(label, 1): + direction = unicodedata.bidirectional(cp) + + if rtl: + # Bidi rule 2 + if direction not in [ + "R", + "AL", + "AN", + "EN", + "ES", + "CS", + "ET", + "ON", + "BN", + "NSM", + ]: + raise IDNABidiError("Invalid direction for codepoint at position {} in a right-to-left label".format(idx)) + # Bidi rule 3 + if direction in ["R", "AL", "EN", "AN"]: + valid_ending = True + elif direction != "NSM": + valid_ending = False + # Bidi rule 4 + if direction in ["AN", "EN"]: + if not number_type: + number_type = direction + else: + if number_type != direction: + raise IDNABidiError("Can not mix numeral types in a right-to-left label") + else: + # Bidi rule 5 + if direction not in ["L", "EN", "ES", "CS", "ET", "ON", "BN", "NSM"]: + raise IDNABidiError("Invalid direction for codepoint at position {} in a left-to-right label".format(idx)) + # Bidi rule 6 + if direction in ["L", "EN"]: + valid_ending = True + elif direction != "NSM": + valid_ending = False + + if not valid_ending: + raise IDNABidiError("Label ends with illegal codepoint directionality") + + return True + + +def check_initial_combiner(label: str) -> bool: + if unicodedata.category(label[0])[0] == "M": + raise IDNAError("Label begins with an illegal combining character") + return True + + +def check_hyphen_ok(label: str) -> bool: + if label[2:4] == "--": + raise IDNAError("Label has disallowed hyphens in 3rd and 4th position") + if label[0] == "-" or label[-1] == "-": + raise IDNAError("Label must not start or end with a hyphen") + return True + + +def check_nfc(label: str) -> None: + if unicodedata.normalize("NFC", label) != label: + raise IDNAError("Label must be in Normalization Form C") + + +def valid_contextj(label: str, pos: int) -> bool: + cp_value = ord(label[pos]) + + if cp_value == 0x200C: + if pos > 0: + if _combining_class(ord(label[pos - 1])) == _virama_combining_class: + return True + + ok = False + for i in range(pos - 1, -1, -1): + joining_type = idnadata.joining_types.get(ord(label[i])) + if joining_type == ord("T"): + continue + elif joining_type in [ord("L"), ord("D")]: + ok = True + break + else: + break + + if not ok: + return False + + ok = False + for i in range(pos + 1, len(label)): + joining_type = idnadata.joining_types.get(ord(label[i])) + if joining_type == ord("T"): + continue + elif joining_type in [ord("R"), ord("D")]: + ok = True + break + else: + break + return ok + + if cp_value == 0x200D: + if pos > 0: + if _combining_class(ord(label[pos - 1])) == _virama_combining_class: + return True + return False + + else: + return False + + +def valid_contexto(label: str, pos: int, exception: bool = False) -> bool: + cp_value = ord(label[pos]) + + if cp_value == 0x00B7: + if 0 < pos < len(label) - 1: + if ord(label[pos - 1]) == 0x006C and ord(label[pos + 1]) == 0x006C: + return True + return False + + elif cp_value == 0x0375: + if pos < len(label) - 1 and len(label) > 1: + return _is_script(label[pos + 1], "Greek") + return False + + elif cp_value == 0x05F3 or cp_value == 0x05F4: + if pos > 0: + return _is_script(label[pos - 1], "Hebrew") + return False + + elif cp_value == 0x30FB: + for cp in label: + if cp == "\u30fb": + continue + if _is_script(cp, "Hiragana") or _is_script(cp, "Katakana") or _is_script(cp, "Han"): + return True + return False + + elif 0x660 <= cp_value <= 0x669: + for cp in label: + if 0x6F0 <= ord(cp) <= 0x06F9: + return False + return True + + elif 0x6F0 <= cp_value <= 0x6F9: + for cp in label: + if 0x660 <= ord(cp) <= 0x0669: + return False + return True + + return False + + +def check_label(label: Union[str, bytes, bytearray]) -> None: + if isinstance(label, (bytes, bytearray)): + label = label.decode("utf-8") + if len(label) == 0: + raise IDNAError("Empty Label") + + check_nfc(label) + check_hyphen_ok(label) + check_initial_combiner(label) + + for pos, cp in enumerate(label): + cp_value = ord(cp) + if intranges_contain(cp_value, idnadata.codepoint_classes["PVALID"]): + continue + elif intranges_contain(cp_value, idnadata.codepoint_classes["CONTEXTJ"]): + try: + if not valid_contextj(label, pos): + raise InvalidCodepointContext( + "Joiner {} not allowed at position {} in {}".format(_unot(cp_value), pos + 1, repr(label)) + ) + except ValueError: + raise IDNAError( + "Unknown codepoint adjacent to joiner {} at position {} in {}".format( + _unot(cp_value), pos + 1, repr(label) + ) + ) + elif intranges_contain(cp_value, idnadata.codepoint_classes["CONTEXTO"]): + if not valid_contexto(label, pos): + raise InvalidCodepointContext( + "Codepoint {} not allowed at position {} in {}".format(_unot(cp_value), pos + 1, repr(label)) + ) + else: + raise InvalidCodepoint( + "Codepoint {} at position {} of {} not allowed".format(_unot(cp_value), pos + 1, repr(label)) + ) + + check_bidi(label) + + +def alabel(label: str) -> bytes: + try: + label_bytes = label.encode("ascii") + ulabel(label_bytes) + if not valid_label_length(label_bytes): + raise IDNAError("Label too long") + return label_bytes + except UnicodeEncodeError: + pass + + check_label(label) + label_bytes = _alabel_prefix + _punycode(label) + + if not valid_label_length(label_bytes): + raise IDNAError("Label too long") + + return label_bytes + + +def ulabel(label: Union[str, bytes, bytearray]) -> str: + if not isinstance(label, (bytes, bytearray)): + try: + label_bytes = label.encode("ascii") + except UnicodeEncodeError: + check_label(label) + return label + else: + label_bytes = label + + label_bytes = label_bytes.lower() + if label_bytes.startswith(_alabel_prefix): + label_bytes = label_bytes[len(_alabel_prefix) :] + if not label_bytes: + raise IDNAError("Malformed A-label, no Punycode eligible content found") + if label_bytes.decode("ascii")[-1] == "-": + raise IDNAError("A-label must not end with a hyphen") + else: + check_label(label_bytes) + return label_bytes.decode("ascii") + + try: + label = label_bytes.decode("punycode") + except UnicodeError: + raise IDNAError("Invalid A-label") + check_label(label) + return label + + +def uts46_remap(domain: str, std3_rules: bool = True, transitional: bool = False) -> str: + """Re-map the characters in the string according to UTS46 processing.""" + from .uts46data import uts46data + + output = "" + + for pos, char in enumerate(domain): + code_point = ord(char) + try: + uts46row = uts46data[code_point if code_point < 256 else bisect.bisect_left(uts46data, (code_point, "Z")) - 1] + status = uts46row[1] + replacement: Optional[str] = None + if len(uts46row) == 3: + replacement = uts46row[2] + if ( + status == "V" + or (status == "D" and not transitional) + or (status == "3" and not std3_rules and replacement is None) + ): + output += char + elif replacement is not None and ( + status == "M" or (status == "3" and not std3_rules) or (status == "D" and transitional) + ): + output += replacement + elif status != "I": + raise IndexError() + except IndexError: + raise InvalidCodepoint( + "Codepoint {} not allowed at position {} in {}".format(_unot(code_point), pos + 1, repr(domain)) + ) + + return unicodedata.normalize("NFC", output) + + +def encode( + s: Union[str, bytes, bytearray], + strict: bool = False, + uts46: bool = False, + std3_rules: bool = False, + transitional: bool = False, +) -> bytes: + if not isinstance(s, str): + try: + s = str(s, "ascii") + except UnicodeDecodeError: + raise IDNAError("should pass a unicode string to the function rather than a byte string.") + if uts46: + s = uts46_remap(s, std3_rules, transitional) + trailing_dot = False + result = [] + if strict: + labels = s.split(".") + else: + labels = _unicode_dots_re.split(s) + if not labels or labels == [""]: + raise IDNAError("Empty domain") + if labels[-1] == "": + del labels[-1] + trailing_dot = True + for label in labels: + s = alabel(label) + if s: + result.append(s) + else: + raise IDNAError("Empty label") + if trailing_dot: + result.append(b"") + s = b".".join(result) + if not valid_string_length(s, trailing_dot): + raise IDNAError("Domain too long") + return s + + +def decode( + s: Union[str, bytes, bytearray], + strict: bool = False, + uts46: bool = False, + std3_rules: bool = False, +) -> str: + try: + if not isinstance(s, str): + s = str(s, "ascii") + except UnicodeDecodeError: + raise IDNAError("Invalid ASCII in A-label") + if uts46: + s = uts46_remap(s, std3_rules, False) + trailing_dot = False + result = [] + if not strict: + labels = _unicode_dots_re.split(s) + else: + labels = s.split(".") + if not labels or labels == [""]: + raise IDNAError("Empty domain") + if not labels[-1]: + del labels[-1] + trailing_dot = True + for label in labels: + s = ulabel(label) + if s: + result.append(s) + else: + raise IDNAError("Empty label") + if trailing_dot: + result.append("") + return ".".join(result) diff --git a/env/lib/python3.12/site-packages/idna/idnadata.py b/env/lib/python3.12/site-packages/idna/idnadata.py new file mode 100644 index 0000000..4be6004 --- /dev/null +++ b/env/lib/python3.12/site-packages/idna/idnadata.py @@ -0,0 +1,4243 @@ +# This file is automatically generated by tools/idna-data + +__version__ = "15.1.0" +scripts = { + "Greek": ( + 0x37000000374, + 0x37500000378, + 0x37A0000037E, + 0x37F00000380, + 0x38400000385, + 0x38600000387, + 0x3880000038B, + 0x38C0000038D, + 0x38E000003A2, + 0x3A3000003E2, + 0x3F000000400, + 0x1D2600001D2B, + 0x1D5D00001D62, + 0x1D6600001D6B, + 0x1DBF00001DC0, + 0x1F0000001F16, + 0x1F1800001F1E, + 0x1F2000001F46, + 0x1F4800001F4E, + 0x1F5000001F58, + 0x1F5900001F5A, + 0x1F5B00001F5C, + 0x1F5D00001F5E, + 0x1F5F00001F7E, + 0x1F8000001FB5, + 0x1FB600001FC5, + 0x1FC600001FD4, + 0x1FD600001FDC, + 0x1FDD00001FF0, + 0x1FF200001FF5, + 0x1FF600001FFF, + 0x212600002127, + 0xAB650000AB66, + 0x101400001018F, + 0x101A0000101A1, + 0x1D2000001D246, + ), + "Han": ( + 0x2E8000002E9A, + 0x2E9B00002EF4, + 0x2F0000002FD6, + 0x300500003006, + 0x300700003008, + 0x30210000302A, + 0x30380000303C, + 0x340000004DC0, + 0x4E000000A000, + 0xF9000000FA6E, + 0xFA700000FADA, + 0x16FE200016FE4, + 0x16FF000016FF2, + 0x200000002A6E0, + 0x2A7000002B73A, + 0x2B7400002B81E, + 0x2B8200002CEA2, + 0x2CEB00002EBE1, + 0x2EBF00002EE5E, + 0x2F8000002FA1E, + 0x300000003134B, + 0x31350000323B0, + ), + "Hebrew": ( + 0x591000005C8, + 0x5D0000005EB, + 0x5EF000005F5, + 0xFB1D0000FB37, + 0xFB380000FB3D, + 0xFB3E0000FB3F, + 0xFB400000FB42, + 0xFB430000FB45, + 0xFB460000FB50, + ), + "Hiragana": ( + 0x304100003097, + 0x309D000030A0, + 0x1B0010001B120, + 0x1B1320001B133, + 0x1B1500001B153, + 0x1F2000001F201, + ), + "Katakana": ( + 0x30A1000030FB, + 0x30FD00003100, + 0x31F000003200, + 0x32D0000032FF, + 0x330000003358, + 0xFF660000FF70, + 0xFF710000FF9E, + 0x1AFF00001AFF4, + 0x1AFF50001AFFC, + 0x1AFFD0001AFFF, + 0x1B0000001B001, + 0x1B1200001B123, + 0x1B1550001B156, + 0x1B1640001B168, + ), +} +joining_types = { + 0xAD: 84, + 0x300: 84, + 0x301: 84, + 0x302: 84, + 0x303: 84, + 0x304: 84, + 0x305: 84, + 0x306: 84, + 0x307: 84, + 0x308: 84, + 0x309: 84, + 0x30A: 84, + 0x30B: 84, + 0x30C: 84, + 0x30D: 84, + 0x30E: 84, + 0x30F: 84, + 0x310: 84, + 0x311: 84, + 0x312: 84, + 0x313: 84, + 0x314: 84, + 0x315: 84, + 0x316: 84, + 0x317: 84, + 0x318: 84, + 0x319: 84, + 0x31A: 84, + 0x31B: 84, + 0x31C: 84, + 0x31D: 84, + 0x31E: 84, + 0x31F: 84, + 0x320: 84, + 0x321: 84, + 0x322: 84, + 0x323: 84, + 0x324: 84, + 0x325: 84, + 0x326: 84, + 0x327: 84, + 0x328: 84, + 0x329: 84, + 0x32A: 84, + 0x32B: 84, + 0x32C: 84, + 0x32D: 84, + 0x32E: 84, + 0x32F: 84, + 0x330: 84, + 0x331: 84, + 0x332: 84, + 0x333: 84, + 0x334: 84, + 0x335: 84, + 0x336: 84, + 0x337: 84, + 0x338: 84, + 0x339: 84, + 0x33A: 84, + 0x33B: 84, + 0x33C: 84, + 0x33D: 84, + 0x33E: 84, + 0x33F: 84, + 0x340: 84, + 0x341: 84, + 0x342: 84, + 0x343: 84, + 0x344: 84, + 0x345: 84, + 0x346: 84, + 0x347: 84, + 0x348: 84, + 0x349: 84, + 0x34A: 84, + 0x34B: 84, + 0x34C: 84, + 0x34D: 84, + 0x34E: 84, + 0x34F: 84, + 0x350: 84, + 0x351: 84, + 0x352: 84, + 0x353: 84, + 0x354: 84, + 0x355: 84, + 0x356: 84, + 0x357: 84, + 0x358: 84, + 0x359: 84, + 0x35A: 84, + 0x35B: 84, + 0x35C: 84, + 0x35D: 84, + 0x35E: 84, + 0x35F: 84, + 0x360: 84, + 0x361: 84, + 0x362: 84, + 0x363: 84, + 0x364: 84, + 0x365: 84, + 0x366: 84, + 0x367: 84, + 0x368: 84, + 0x369: 84, + 0x36A: 84, + 0x36B: 84, + 0x36C: 84, + 0x36D: 84, + 0x36E: 84, + 0x36F: 84, + 0x483: 84, + 0x484: 84, + 0x485: 84, + 0x486: 84, + 0x487: 84, + 0x488: 84, + 0x489: 84, + 0x591: 84, + 0x592: 84, + 0x593: 84, + 0x594: 84, + 0x595: 84, + 0x596: 84, + 0x597: 84, + 0x598: 84, + 0x599: 84, + 0x59A: 84, + 0x59B: 84, + 0x59C: 84, + 0x59D: 84, + 0x59E: 84, + 0x59F: 84, + 0x5A0: 84, + 0x5A1: 84, + 0x5A2: 84, + 0x5A3: 84, + 0x5A4: 84, + 0x5A5: 84, + 0x5A6: 84, + 0x5A7: 84, + 0x5A8: 84, + 0x5A9: 84, + 0x5AA: 84, + 0x5AB: 84, + 0x5AC: 84, + 0x5AD: 84, + 0x5AE: 84, + 0x5AF: 84, + 0x5B0: 84, + 0x5B1: 84, + 0x5B2: 84, + 0x5B3: 84, + 0x5B4: 84, + 0x5B5: 84, + 0x5B6: 84, + 0x5B7: 84, + 0x5B8: 84, + 0x5B9: 84, + 0x5BA: 84, + 0x5BB: 84, + 0x5BC: 84, + 0x5BD: 84, + 0x5BF: 84, + 0x5C1: 84, + 0x5C2: 84, + 0x5C4: 84, + 0x5C5: 84, + 0x5C7: 84, + 0x610: 84, + 0x611: 84, + 0x612: 84, + 0x613: 84, + 0x614: 84, + 0x615: 84, + 0x616: 84, + 0x617: 84, + 0x618: 84, + 0x619: 84, + 0x61A: 84, + 0x61C: 84, + 0x620: 68, + 0x622: 82, + 0x623: 82, + 0x624: 82, + 0x625: 82, + 0x626: 68, + 0x627: 82, + 0x628: 68, + 0x629: 82, + 0x62A: 68, + 0x62B: 68, + 0x62C: 68, + 0x62D: 68, + 0x62E: 68, + 0x62F: 82, + 0x630: 82, + 0x631: 82, + 0x632: 82, + 0x633: 68, + 0x634: 68, + 0x635: 68, + 0x636: 68, + 0x637: 68, + 0x638: 68, + 0x639: 68, + 0x63A: 68, + 0x63B: 68, + 0x63C: 68, + 0x63D: 68, + 0x63E: 68, + 0x63F: 68, + 0x640: 67, + 0x641: 68, + 0x642: 68, + 0x643: 68, + 0x644: 68, + 0x645: 68, + 0x646: 68, + 0x647: 68, + 0x648: 82, + 0x649: 68, + 0x64A: 68, + 0x64B: 84, + 0x64C: 84, + 0x64D: 84, + 0x64E: 84, + 0x64F: 84, + 0x650: 84, + 0x651: 84, + 0x652: 84, + 0x653: 84, + 0x654: 84, + 0x655: 84, + 0x656: 84, + 0x657: 84, + 0x658: 84, + 0x659: 84, + 0x65A: 84, + 0x65B: 84, + 0x65C: 84, + 0x65D: 84, + 0x65E: 84, + 0x65F: 84, + 0x66E: 68, + 0x66F: 68, + 0x670: 84, + 0x671: 82, + 0x672: 82, + 0x673: 82, + 0x675: 82, + 0x676: 82, + 0x677: 82, + 0x678: 68, + 0x679: 68, + 0x67A: 68, + 0x67B: 68, + 0x67C: 68, + 0x67D: 68, + 0x67E: 68, + 0x67F: 68, + 0x680: 68, + 0x681: 68, + 0x682: 68, + 0x683: 68, + 0x684: 68, + 0x685: 68, + 0x686: 68, + 0x687: 68, + 0x688: 82, + 0x689: 82, + 0x68A: 82, + 0x68B: 82, + 0x68C: 82, + 0x68D: 82, + 0x68E: 82, + 0x68F: 82, + 0x690: 82, + 0x691: 82, + 0x692: 82, + 0x693: 82, + 0x694: 82, + 0x695: 82, + 0x696: 82, + 0x697: 82, + 0x698: 82, + 0x699: 82, + 0x69A: 68, + 0x69B: 68, + 0x69C: 68, + 0x69D: 68, + 0x69E: 68, + 0x69F: 68, + 0x6A0: 68, + 0x6A1: 68, + 0x6A2: 68, + 0x6A3: 68, + 0x6A4: 68, + 0x6A5: 68, + 0x6A6: 68, + 0x6A7: 68, + 0x6A8: 68, + 0x6A9: 68, + 0x6AA: 68, + 0x6AB: 68, + 0x6AC: 68, + 0x6AD: 68, + 0x6AE: 68, + 0x6AF: 68, + 0x6B0: 68, + 0x6B1: 68, + 0x6B2: 68, + 0x6B3: 68, + 0x6B4: 68, + 0x6B5: 68, + 0x6B6: 68, + 0x6B7: 68, + 0x6B8: 68, + 0x6B9: 68, + 0x6BA: 68, + 0x6BB: 68, + 0x6BC: 68, + 0x6BD: 68, + 0x6BE: 68, + 0x6BF: 68, + 0x6C0: 82, + 0x6C1: 68, + 0x6C2: 68, + 0x6C3: 82, + 0x6C4: 82, + 0x6C5: 82, + 0x6C6: 82, + 0x6C7: 82, + 0x6C8: 82, + 0x6C9: 82, + 0x6CA: 82, + 0x6CB: 82, + 0x6CC: 68, + 0x6CD: 82, + 0x6CE: 68, + 0x6CF: 82, + 0x6D0: 68, + 0x6D1: 68, + 0x6D2: 82, + 0x6D3: 82, + 0x6D5: 82, + 0x6D6: 84, + 0x6D7: 84, + 0x6D8: 84, + 0x6D9: 84, + 0x6DA: 84, + 0x6DB: 84, + 0x6DC: 84, + 0x6DF: 84, + 0x6E0: 84, + 0x6E1: 84, + 0x6E2: 84, + 0x6E3: 84, + 0x6E4: 84, + 0x6E7: 84, + 0x6E8: 84, + 0x6EA: 84, + 0x6EB: 84, + 0x6EC: 84, + 0x6ED: 84, + 0x6EE: 82, + 0x6EF: 82, + 0x6FA: 68, + 0x6FB: 68, + 0x6FC: 68, + 0x6FF: 68, + 0x70F: 84, + 0x710: 82, + 0x711: 84, + 0x712: 68, + 0x713: 68, + 0x714: 68, + 0x715: 82, + 0x716: 82, + 0x717: 82, + 0x718: 82, + 0x719: 82, + 0x71A: 68, + 0x71B: 68, + 0x71C: 68, + 0x71D: 68, + 0x71E: 82, + 0x71F: 68, + 0x720: 68, + 0x721: 68, + 0x722: 68, + 0x723: 68, + 0x724: 68, + 0x725: 68, + 0x726: 68, + 0x727: 68, + 0x728: 82, + 0x729: 68, + 0x72A: 82, + 0x72B: 68, + 0x72C: 82, + 0x72D: 68, + 0x72E: 68, + 0x72F: 82, + 0x730: 84, + 0x731: 84, + 0x732: 84, + 0x733: 84, + 0x734: 84, + 0x735: 84, + 0x736: 84, + 0x737: 84, + 0x738: 84, + 0x739: 84, + 0x73A: 84, + 0x73B: 84, + 0x73C: 84, + 0x73D: 84, + 0x73E: 84, + 0x73F: 84, + 0x740: 84, + 0x741: 84, + 0x742: 84, + 0x743: 84, + 0x744: 84, + 0x745: 84, + 0x746: 84, + 0x747: 84, + 0x748: 84, + 0x749: 84, + 0x74A: 84, + 0x74D: 82, + 0x74E: 68, + 0x74F: 68, + 0x750: 68, + 0x751: 68, + 0x752: 68, + 0x753: 68, + 0x754: 68, + 0x755: 68, + 0x756: 68, + 0x757: 68, + 0x758: 68, + 0x759: 82, + 0x75A: 82, + 0x75B: 82, + 0x75C: 68, + 0x75D: 68, + 0x75E: 68, + 0x75F: 68, + 0x760: 68, + 0x761: 68, + 0x762: 68, + 0x763: 68, + 0x764: 68, + 0x765: 68, + 0x766: 68, + 0x767: 68, + 0x768: 68, + 0x769: 68, + 0x76A: 68, + 0x76B: 82, + 0x76C: 82, + 0x76D: 68, + 0x76E: 68, + 0x76F: 68, + 0x770: 68, + 0x771: 82, + 0x772: 68, + 0x773: 82, + 0x774: 82, + 0x775: 68, + 0x776: 68, + 0x777: 68, + 0x778: 82, + 0x779: 82, + 0x77A: 68, + 0x77B: 68, + 0x77C: 68, + 0x77D: 68, + 0x77E: 68, + 0x77F: 68, + 0x7A6: 84, + 0x7A7: 84, + 0x7A8: 84, + 0x7A9: 84, + 0x7AA: 84, + 0x7AB: 84, + 0x7AC: 84, + 0x7AD: 84, + 0x7AE: 84, + 0x7AF: 84, + 0x7B0: 84, + 0x7CA: 68, + 0x7CB: 68, + 0x7CC: 68, + 0x7CD: 68, + 0x7CE: 68, + 0x7CF: 68, + 0x7D0: 68, + 0x7D1: 68, + 0x7D2: 68, + 0x7D3: 68, + 0x7D4: 68, + 0x7D5: 68, + 0x7D6: 68, + 0x7D7: 68, + 0x7D8: 68, + 0x7D9: 68, + 0x7DA: 68, + 0x7DB: 68, + 0x7DC: 68, + 0x7DD: 68, + 0x7DE: 68, + 0x7DF: 68, + 0x7E0: 68, + 0x7E1: 68, + 0x7E2: 68, + 0x7E3: 68, + 0x7E4: 68, + 0x7E5: 68, + 0x7E6: 68, + 0x7E7: 68, + 0x7E8: 68, + 0x7E9: 68, + 0x7EA: 68, + 0x7EB: 84, + 0x7EC: 84, + 0x7ED: 84, + 0x7EE: 84, + 0x7EF: 84, + 0x7F0: 84, + 0x7F1: 84, + 0x7F2: 84, + 0x7F3: 84, + 0x7FA: 67, + 0x7FD: 84, + 0x816: 84, + 0x817: 84, + 0x818: 84, + 0x819: 84, + 0x81B: 84, + 0x81C: 84, + 0x81D: 84, + 0x81E: 84, + 0x81F: 84, + 0x820: 84, + 0x821: 84, + 0x822: 84, + 0x823: 84, + 0x825: 84, + 0x826: 84, + 0x827: 84, + 0x829: 84, + 0x82A: 84, + 0x82B: 84, + 0x82C: 84, + 0x82D: 84, + 0x840: 82, + 0x841: 68, + 0x842: 68, + 0x843: 68, + 0x844: 68, + 0x845: 68, + 0x846: 82, + 0x847: 82, + 0x848: 68, + 0x849: 82, + 0x84A: 68, + 0x84B: 68, + 0x84C: 68, + 0x84D: 68, + 0x84E: 68, + 0x84F: 68, + 0x850: 68, + 0x851: 68, + 0x852: 68, + 0x853: 68, + 0x854: 82, + 0x855: 68, + 0x856: 82, + 0x857: 82, + 0x858: 82, + 0x859: 84, + 0x85A: 84, + 0x85B: 84, + 0x860: 68, + 0x862: 68, + 0x863: 68, + 0x864: 68, + 0x865: 68, + 0x867: 82, + 0x868: 68, + 0x869: 82, + 0x86A: 82, + 0x870: 82, + 0x871: 82, + 0x872: 82, + 0x873: 82, + 0x874: 82, + 0x875: 82, + 0x876: 82, + 0x877: 82, + 0x878: 82, + 0x879: 82, + 0x87A: 82, + 0x87B: 82, + 0x87C: 82, + 0x87D: 82, + 0x87E: 82, + 0x87F: 82, + 0x880: 82, + 0x881: 82, + 0x882: 82, + 0x883: 67, + 0x884: 67, + 0x885: 67, + 0x886: 68, + 0x889: 68, + 0x88A: 68, + 0x88B: 68, + 0x88C: 68, + 0x88D: 68, + 0x88E: 82, + 0x898: 84, + 0x899: 84, + 0x89A: 84, + 0x89B: 84, + 0x89C: 84, + 0x89D: 84, + 0x89E: 84, + 0x89F: 84, + 0x8A0: 68, + 0x8A1: 68, + 0x8A2: 68, + 0x8A3: 68, + 0x8A4: 68, + 0x8A5: 68, + 0x8A6: 68, + 0x8A7: 68, + 0x8A8: 68, + 0x8A9: 68, + 0x8AA: 82, + 0x8AB: 82, + 0x8AC: 82, + 0x8AE: 82, + 0x8AF: 68, + 0x8B0: 68, + 0x8B1: 82, + 0x8B2: 82, + 0x8B3: 68, + 0x8B4: 68, + 0x8B5: 68, + 0x8B6: 68, + 0x8B7: 68, + 0x8B8: 68, + 0x8B9: 82, + 0x8BA: 68, + 0x8BB: 68, + 0x8BC: 68, + 0x8BD: 68, + 0x8BE: 68, + 0x8BF: 68, + 0x8C0: 68, + 0x8C1: 68, + 0x8C2: 68, + 0x8C3: 68, + 0x8C4: 68, + 0x8C5: 68, + 0x8C6: 68, + 0x8C7: 68, + 0x8C8: 68, + 0x8CA: 84, + 0x8CB: 84, + 0x8CC: 84, + 0x8CD: 84, + 0x8CE: 84, + 0x8CF: 84, + 0x8D0: 84, + 0x8D1: 84, + 0x8D2: 84, + 0x8D3: 84, + 0x8D4: 84, + 0x8D5: 84, + 0x8D6: 84, + 0x8D7: 84, + 0x8D8: 84, + 0x8D9: 84, + 0x8DA: 84, + 0x8DB: 84, + 0x8DC: 84, + 0x8DD: 84, + 0x8DE: 84, + 0x8DF: 84, + 0x8E0: 84, + 0x8E1: 84, + 0x8E3: 84, + 0x8E4: 84, + 0x8E5: 84, + 0x8E6: 84, + 0x8E7: 84, + 0x8E8: 84, + 0x8E9: 84, + 0x8EA: 84, + 0x8EB: 84, + 0x8EC: 84, + 0x8ED: 84, + 0x8EE: 84, + 0x8EF: 84, + 0x8F0: 84, + 0x8F1: 84, + 0x8F2: 84, + 0x8F3: 84, + 0x8F4: 84, + 0x8F5: 84, + 0x8F6: 84, + 0x8F7: 84, + 0x8F8: 84, + 0x8F9: 84, + 0x8FA: 84, + 0x8FB: 84, + 0x8FC: 84, + 0x8FD: 84, + 0x8FE: 84, + 0x8FF: 84, + 0x900: 84, + 0x901: 84, + 0x902: 84, + 0x93A: 84, + 0x93C: 84, + 0x941: 84, + 0x942: 84, + 0x943: 84, + 0x944: 84, + 0x945: 84, + 0x946: 84, + 0x947: 84, + 0x948: 84, + 0x94D: 84, + 0x951: 84, + 0x952: 84, + 0x953: 84, + 0x954: 84, + 0x955: 84, + 0x956: 84, + 0x957: 84, + 0x962: 84, + 0x963: 84, + 0x981: 84, + 0x9BC: 84, + 0x9C1: 84, + 0x9C2: 84, + 0x9C3: 84, + 0x9C4: 84, + 0x9CD: 84, + 0x9E2: 84, + 0x9E3: 84, + 0x9FE: 84, + 0xA01: 84, + 0xA02: 84, + 0xA3C: 84, + 0xA41: 84, + 0xA42: 84, + 0xA47: 84, + 0xA48: 84, + 0xA4B: 84, + 0xA4C: 84, + 0xA4D: 84, + 0xA51: 84, + 0xA70: 84, + 0xA71: 84, + 0xA75: 84, + 0xA81: 84, + 0xA82: 84, + 0xABC: 84, + 0xAC1: 84, + 0xAC2: 84, + 0xAC3: 84, + 0xAC4: 84, + 0xAC5: 84, + 0xAC7: 84, + 0xAC8: 84, + 0xACD: 84, + 0xAE2: 84, + 0xAE3: 84, + 0xAFA: 84, + 0xAFB: 84, + 0xAFC: 84, + 0xAFD: 84, + 0xAFE: 84, + 0xAFF: 84, + 0xB01: 84, + 0xB3C: 84, + 0xB3F: 84, + 0xB41: 84, + 0xB42: 84, + 0xB43: 84, + 0xB44: 84, + 0xB4D: 84, + 0xB55: 84, + 0xB56: 84, + 0xB62: 84, + 0xB63: 84, + 0xB82: 84, + 0xBC0: 84, + 0xBCD: 84, + 0xC00: 84, + 0xC04: 84, + 0xC3C: 84, + 0xC3E: 84, + 0xC3F: 84, + 0xC40: 84, + 0xC46: 84, + 0xC47: 84, + 0xC48: 84, + 0xC4A: 84, + 0xC4B: 84, + 0xC4C: 84, + 0xC4D: 84, + 0xC55: 84, + 0xC56: 84, + 0xC62: 84, + 0xC63: 84, + 0xC81: 84, + 0xCBC: 84, + 0xCBF: 84, + 0xCC6: 84, + 0xCCC: 84, + 0xCCD: 84, + 0xCE2: 84, + 0xCE3: 84, + 0xD00: 84, + 0xD01: 84, + 0xD3B: 84, + 0xD3C: 84, + 0xD41: 84, + 0xD42: 84, + 0xD43: 84, + 0xD44: 84, + 0xD4D: 84, + 0xD62: 84, + 0xD63: 84, + 0xD81: 84, + 0xDCA: 84, + 0xDD2: 84, + 0xDD3: 84, + 0xDD4: 84, + 0xDD6: 84, + 0xE31: 84, + 0xE34: 84, + 0xE35: 84, + 0xE36: 84, + 0xE37: 84, + 0xE38: 84, + 0xE39: 84, + 0xE3A: 84, + 0xE47: 84, + 0xE48: 84, + 0xE49: 84, + 0xE4A: 84, + 0xE4B: 84, + 0xE4C: 84, + 0xE4D: 84, + 0xE4E: 84, + 0xEB1: 84, + 0xEB4: 84, + 0xEB5: 84, + 0xEB6: 84, + 0xEB7: 84, + 0xEB8: 84, + 0xEB9: 84, + 0xEBA: 84, + 0xEBB: 84, + 0xEBC: 84, + 0xEC8: 84, + 0xEC9: 84, + 0xECA: 84, + 0xECB: 84, + 0xECC: 84, + 0xECD: 84, + 0xECE: 84, + 0xF18: 84, + 0xF19: 84, + 0xF35: 84, + 0xF37: 84, + 0xF39: 84, + 0xF71: 84, + 0xF72: 84, + 0xF73: 84, + 0xF74: 84, + 0xF75: 84, + 0xF76: 84, + 0xF77: 84, + 0xF78: 84, + 0xF79: 84, + 0xF7A: 84, + 0xF7B: 84, + 0xF7C: 84, + 0xF7D: 84, + 0xF7E: 84, + 0xF80: 84, + 0xF81: 84, + 0xF82: 84, + 0xF83: 84, + 0xF84: 84, + 0xF86: 84, + 0xF87: 84, + 0xF8D: 84, + 0xF8E: 84, + 0xF8F: 84, + 0xF90: 84, + 0xF91: 84, + 0xF92: 84, + 0xF93: 84, + 0xF94: 84, + 0xF95: 84, + 0xF96: 84, + 0xF97: 84, + 0xF99: 84, + 0xF9A: 84, + 0xF9B: 84, + 0xF9C: 84, + 0xF9D: 84, + 0xF9E: 84, + 0xF9F: 84, + 0xFA0: 84, + 0xFA1: 84, + 0xFA2: 84, + 0xFA3: 84, + 0xFA4: 84, + 0xFA5: 84, + 0xFA6: 84, + 0xFA7: 84, + 0xFA8: 84, + 0xFA9: 84, + 0xFAA: 84, + 0xFAB: 84, + 0xFAC: 84, + 0xFAD: 84, + 0xFAE: 84, + 0xFAF: 84, + 0xFB0: 84, + 0xFB1: 84, + 0xFB2: 84, + 0xFB3: 84, + 0xFB4: 84, + 0xFB5: 84, + 0xFB6: 84, + 0xFB7: 84, + 0xFB8: 84, + 0xFB9: 84, + 0xFBA: 84, + 0xFBB: 84, + 0xFBC: 84, + 0xFC6: 84, + 0x102D: 84, + 0x102E: 84, + 0x102F: 84, + 0x1030: 84, + 0x1032: 84, + 0x1033: 84, + 0x1034: 84, + 0x1035: 84, + 0x1036: 84, + 0x1037: 84, + 0x1039: 84, + 0x103A: 84, + 0x103D: 84, + 0x103E: 84, + 0x1058: 84, + 0x1059: 84, + 0x105E: 84, + 0x105F: 84, + 0x1060: 84, + 0x1071: 84, + 0x1072: 84, + 0x1073: 84, + 0x1074: 84, + 0x1082: 84, + 0x1085: 84, + 0x1086: 84, + 0x108D: 84, + 0x109D: 84, + 0x135D: 84, + 0x135E: 84, + 0x135F: 84, + 0x1712: 84, + 0x1713: 84, + 0x1714: 84, + 0x1732: 84, + 0x1733: 84, + 0x1752: 84, + 0x1753: 84, + 0x1772: 84, + 0x1773: 84, + 0x17B4: 84, + 0x17B5: 84, + 0x17B7: 84, + 0x17B8: 84, + 0x17B9: 84, + 0x17BA: 84, + 0x17BB: 84, + 0x17BC: 84, + 0x17BD: 84, + 0x17C6: 84, + 0x17C9: 84, + 0x17CA: 84, + 0x17CB: 84, + 0x17CC: 84, + 0x17CD: 84, + 0x17CE: 84, + 0x17CF: 84, + 0x17D0: 84, + 0x17D1: 84, + 0x17D2: 84, + 0x17D3: 84, + 0x17DD: 84, + 0x1807: 68, + 0x180A: 67, + 0x180B: 84, + 0x180C: 84, + 0x180D: 84, + 0x180F: 84, + 0x1820: 68, + 0x1821: 68, + 0x1822: 68, + 0x1823: 68, + 0x1824: 68, + 0x1825: 68, + 0x1826: 68, + 0x1827: 68, + 0x1828: 68, + 0x1829: 68, + 0x182A: 68, + 0x182B: 68, + 0x182C: 68, + 0x182D: 68, + 0x182E: 68, + 0x182F: 68, + 0x1830: 68, + 0x1831: 68, + 0x1832: 68, + 0x1833: 68, + 0x1834: 68, + 0x1835: 68, + 0x1836: 68, + 0x1837: 68, + 0x1838: 68, + 0x1839: 68, + 0x183A: 68, + 0x183B: 68, + 0x183C: 68, + 0x183D: 68, + 0x183E: 68, + 0x183F: 68, + 0x1840: 68, + 0x1841: 68, + 0x1842: 68, + 0x1843: 68, + 0x1844: 68, + 0x1845: 68, + 0x1846: 68, + 0x1847: 68, + 0x1848: 68, + 0x1849: 68, + 0x184A: 68, + 0x184B: 68, + 0x184C: 68, + 0x184D: 68, + 0x184E: 68, + 0x184F: 68, + 0x1850: 68, + 0x1851: 68, + 0x1852: 68, + 0x1853: 68, + 0x1854: 68, + 0x1855: 68, + 0x1856: 68, + 0x1857: 68, + 0x1858: 68, + 0x1859: 68, + 0x185A: 68, + 0x185B: 68, + 0x185C: 68, + 0x185D: 68, + 0x185E: 68, + 0x185F: 68, + 0x1860: 68, + 0x1861: 68, + 0x1862: 68, + 0x1863: 68, + 0x1864: 68, + 0x1865: 68, + 0x1866: 68, + 0x1867: 68, + 0x1868: 68, + 0x1869: 68, + 0x186A: 68, + 0x186B: 68, + 0x186C: 68, + 0x186D: 68, + 0x186E: 68, + 0x186F: 68, + 0x1870: 68, + 0x1871: 68, + 0x1872: 68, + 0x1873: 68, + 0x1874: 68, + 0x1875: 68, + 0x1876: 68, + 0x1877: 68, + 0x1878: 68, + 0x1885: 84, + 0x1886: 84, + 0x1887: 68, + 0x1888: 68, + 0x1889: 68, + 0x188A: 68, + 0x188B: 68, + 0x188C: 68, + 0x188D: 68, + 0x188E: 68, + 0x188F: 68, + 0x1890: 68, + 0x1891: 68, + 0x1892: 68, + 0x1893: 68, + 0x1894: 68, + 0x1895: 68, + 0x1896: 68, + 0x1897: 68, + 0x1898: 68, + 0x1899: 68, + 0x189A: 68, + 0x189B: 68, + 0x189C: 68, + 0x189D: 68, + 0x189E: 68, + 0x189F: 68, + 0x18A0: 68, + 0x18A1: 68, + 0x18A2: 68, + 0x18A3: 68, + 0x18A4: 68, + 0x18A5: 68, + 0x18A6: 68, + 0x18A7: 68, + 0x18A8: 68, + 0x18A9: 84, + 0x18AA: 68, + 0x1920: 84, + 0x1921: 84, + 0x1922: 84, + 0x1927: 84, + 0x1928: 84, + 0x1932: 84, + 0x1939: 84, + 0x193A: 84, + 0x193B: 84, + 0x1A17: 84, + 0x1A18: 84, + 0x1A1B: 84, + 0x1A56: 84, + 0x1A58: 84, + 0x1A59: 84, + 0x1A5A: 84, + 0x1A5B: 84, + 0x1A5C: 84, + 0x1A5D: 84, + 0x1A5E: 84, + 0x1A60: 84, + 0x1A62: 84, + 0x1A65: 84, + 0x1A66: 84, + 0x1A67: 84, + 0x1A68: 84, + 0x1A69: 84, + 0x1A6A: 84, + 0x1A6B: 84, + 0x1A6C: 84, + 0x1A73: 84, + 0x1A74: 84, + 0x1A75: 84, + 0x1A76: 84, + 0x1A77: 84, + 0x1A78: 84, + 0x1A79: 84, + 0x1A7A: 84, + 0x1A7B: 84, + 0x1A7C: 84, + 0x1A7F: 84, + 0x1AB0: 84, + 0x1AB1: 84, + 0x1AB2: 84, + 0x1AB3: 84, + 0x1AB4: 84, + 0x1AB5: 84, + 0x1AB6: 84, + 0x1AB7: 84, + 0x1AB8: 84, + 0x1AB9: 84, + 0x1ABA: 84, + 0x1ABB: 84, + 0x1ABC: 84, + 0x1ABD: 84, + 0x1ABE: 84, + 0x1ABF: 84, + 0x1AC0: 84, + 0x1AC1: 84, + 0x1AC2: 84, + 0x1AC3: 84, + 0x1AC4: 84, + 0x1AC5: 84, + 0x1AC6: 84, + 0x1AC7: 84, + 0x1AC8: 84, + 0x1AC9: 84, + 0x1ACA: 84, + 0x1ACB: 84, + 0x1ACC: 84, + 0x1ACD: 84, + 0x1ACE: 84, + 0x1B00: 84, + 0x1B01: 84, + 0x1B02: 84, + 0x1B03: 84, + 0x1B34: 84, + 0x1B36: 84, + 0x1B37: 84, + 0x1B38: 84, + 0x1B39: 84, + 0x1B3A: 84, + 0x1B3C: 84, + 0x1B42: 84, + 0x1B6B: 84, + 0x1B6C: 84, + 0x1B6D: 84, + 0x1B6E: 84, + 0x1B6F: 84, + 0x1B70: 84, + 0x1B71: 84, + 0x1B72: 84, + 0x1B73: 84, + 0x1B80: 84, + 0x1B81: 84, + 0x1BA2: 84, + 0x1BA3: 84, + 0x1BA4: 84, + 0x1BA5: 84, + 0x1BA8: 84, + 0x1BA9: 84, + 0x1BAB: 84, + 0x1BAC: 84, + 0x1BAD: 84, + 0x1BE6: 84, + 0x1BE8: 84, + 0x1BE9: 84, + 0x1BED: 84, + 0x1BEF: 84, + 0x1BF0: 84, + 0x1BF1: 84, + 0x1C2C: 84, + 0x1C2D: 84, + 0x1C2E: 84, + 0x1C2F: 84, + 0x1C30: 84, + 0x1C31: 84, + 0x1C32: 84, + 0x1C33: 84, + 0x1C36: 84, + 0x1C37: 84, + 0x1CD0: 84, + 0x1CD1: 84, + 0x1CD2: 84, + 0x1CD4: 84, + 0x1CD5: 84, + 0x1CD6: 84, + 0x1CD7: 84, + 0x1CD8: 84, + 0x1CD9: 84, + 0x1CDA: 84, + 0x1CDB: 84, + 0x1CDC: 84, + 0x1CDD: 84, + 0x1CDE: 84, + 0x1CDF: 84, + 0x1CE0: 84, + 0x1CE2: 84, + 0x1CE3: 84, + 0x1CE4: 84, + 0x1CE5: 84, + 0x1CE6: 84, + 0x1CE7: 84, + 0x1CE8: 84, + 0x1CED: 84, + 0x1CF4: 84, + 0x1CF8: 84, + 0x1CF9: 84, + 0x1DC0: 84, + 0x1DC1: 84, + 0x1DC2: 84, + 0x1DC3: 84, + 0x1DC4: 84, + 0x1DC5: 84, + 0x1DC6: 84, + 0x1DC7: 84, + 0x1DC8: 84, + 0x1DC9: 84, + 0x1DCA: 84, + 0x1DCB: 84, + 0x1DCC: 84, + 0x1DCD: 84, + 0x1DCE: 84, + 0x1DCF: 84, + 0x1DD0: 84, + 0x1DD1: 84, + 0x1DD2: 84, + 0x1DD3: 84, + 0x1DD4: 84, + 0x1DD5: 84, + 0x1DD6: 84, + 0x1DD7: 84, + 0x1DD8: 84, + 0x1DD9: 84, + 0x1DDA: 84, + 0x1DDB: 84, + 0x1DDC: 84, + 0x1DDD: 84, + 0x1DDE: 84, + 0x1DDF: 84, + 0x1DE0: 84, + 0x1DE1: 84, + 0x1DE2: 84, + 0x1DE3: 84, + 0x1DE4: 84, + 0x1DE5: 84, + 0x1DE6: 84, + 0x1DE7: 84, + 0x1DE8: 84, + 0x1DE9: 84, + 0x1DEA: 84, + 0x1DEB: 84, + 0x1DEC: 84, + 0x1DED: 84, + 0x1DEE: 84, + 0x1DEF: 84, + 0x1DF0: 84, + 0x1DF1: 84, + 0x1DF2: 84, + 0x1DF3: 84, + 0x1DF4: 84, + 0x1DF5: 84, + 0x1DF6: 84, + 0x1DF7: 84, + 0x1DF8: 84, + 0x1DF9: 84, + 0x1DFA: 84, + 0x1DFB: 84, + 0x1DFC: 84, + 0x1DFD: 84, + 0x1DFE: 84, + 0x1DFF: 84, + 0x200B: 84, + 0x200D: 67, + 0x200E: 84, + 0x200F: 84, + 0x202A: 84, + 0x202B: 84, + 0x202C: 84, + 0x202D: 84, + 0x202E: 84, + 0x2060: 84, + 0x2061: 84, + 0x2062: 84, + 0x2063: 84, + 0x2064: 84, + 0x206A: 84, + 0x206B: 84, + 0x206C: 84, + 0x206D: 84, + 0x206E: 84, + 0x206F: 84, + 0x20D0: 84, + 0x20D1: 84, + 0x20D2: 84, + 0x20D3: 84, + 0x20D4: 84, + 0x20D5: 84, + 0x20D6: 84, + 0x20D7: 84, + 0x20D8: 84, + 0x20D9: 84, + 0x20DA: 84, + 0x20DB: 84, + 0x20DC: 84, + 0x20DD: 84, + 0x20DE: 84, + 0x20DF: 84, + 0x20E0: 84, + 0x20E1: 84, + 0x20E2: 84, + 0x20E3: 84, + 0x20E4: 84, + 0x20E5: 84, + 0x20E6: 84, + 0x20E7: 84, + 0x20E8: 84, + 0x20E9: 84, + 0x20EA: 84, + 0x20EB: 84, + 0x20EC: 84, + 0x20ED: 84, + 0x20EE: 84, + 0x20EF: 84, + 0x20F0: 84, + 0x2CEF: 84, + 0x2CF0: 84, + 0x2CF1: 84, + 0x2D7F: 84, + 0x2DE0: 84, + 0x2DE1: 84, + 0x2DE2: 84, + 0x2DE3: 84, + 0x2DE4: 84, + 0x2DE5: 84, + 0x2DE6: 84, + 0x2DE7: 84, + 0x2DE8: 84, + 0x2DE9: 84, + 0x2DEA: 84, + 0x2DEB: 84, + 0x2DEC: 84, + 0x2DED: 84, + 0x2DEE: 84, + 0x2DEF: 84, + 0x2DF0: 84, + 0x2DF1: 84, + 0x2DF2: 84, + 0x2DF3: 84, + 0x2DF4: 84, + 0x2DF5: 84, + 0x2DF6: 84, + 0x2DF7: 84, + 0x2DF8: 84, + 0x2DF9: 84, + 0x2DFA: 84, + 0x2DFB: 84, + 0x2DFC: 84, + 0x2DFD: 84, + 0x2DFE: 84, + 0x2DFF: 84, + 0x302A: 84, + 0x302B: 84, + 0x302C: 84, + 0x302D: 84, + 0x3099: 84, + 0x309A: 84, + 0xA66F: 84, + 0xA670: 84, + 0xA671: 84, + 0xA672: 84, + 0xA674: 84, + 0xA675: 84, + 0xA676: 84, + 0xA677: 84, + 0xA678: 84, + 0xA679: 84, + 0xA67A: 84, + 0xA67B: 84, + 0xA67C: 84, + 0xA67D: 84, + 0xA69E: 84, + 0xA69F: 84, + 0xA6F0: 84, + 0xA6F1: 84, + 0xA802: 84, + 0xA806: 84, + 0xA80B: 84, + 0xA825: 84, + 0xA826: 84, + 0xA82C: 84, + 0xA840: 68, + 0xA841: 68, + 0xA842: 68, + 0xA843: 68, + 0xA844: 68, + 0xA845: 68, + 0xA846: 68, + 0xA847: 68, + 0xA848: 68, + 0xA849: 68, + 0xA84A: 68, + 0xA84B: 68, + 0xA84C: 68, + 0xA84D: 68, + 0xA84E: 68, + 0xA84F: 68, + 0xA850: 68, + 0xA851: 68, + 0xA852: 68, + 0xA853: 68, + 0xA854: 68, + 0xA855: 68, + 0xA856: 68, + 0xA857: 68, + 0xA858: 68, + 0xA859: 68, + 0xA85A: 68, + 0xA85B: 68, + 0xA85C: 68, + 0xA85D: 68, + 0xA85E: 68, + 0xA85F: 68, + 0xA860: 68, + 0xA861: 68, + 0xA862: 68, + 0xA863: 68, + 0xA864: 68, + 0xA865: 68, + 0xA866: 68, + 0xA867: 68, + 0xA868: 68, + 0xA869: 68, + 0xA86A: 68, + 0xA86B: 68, + 0xA86C: 68, + 0xA86D: 68, + 0xA86E: 68, + 0xA86F: 68, + 0xA870: 68, + 0xA871: 68, + 0xA872: 76, + 0xA8C4: 84, + 0xA8C5: 84, + 0xA8E0: 84, + 0xA8E1: 84, + 0xA8E2: 84, + 0xA8E3: 84, + 0xA8E4: 84, + 0xA8E5: 84, + 0xA8E6: 84, + 0xA8E7: 84, + 0xA8E8: 84, + 0xA8E9: 84, + 0xA8EA: 84, + 0xA8EB: 84, + 0xA8EC: 84, + 0xA8ED: 84, + 0xA8EE: 84, + 0xA8EF: 84, + 0xA8F0: 84, + 0xA8F1: 84, + 0xA8FF: 84, + 0xA926: 84, + 0xA927: 84, + 0xA928: 84, + 0xA929: 84, + 0xA92A: 84, + 0xA92B: 84, + 0xA92C: 84, + 0xA92D: 84, + 0xA947: 84, + 0xA948: 84, + 0xA949: 84, + 0xA94A: 84, + 0xA94B: 84, + 0xA94C: 84, + 0xA94D: 84, + 0xA94E: 84, + 0xA94F: 84, + 0xA950: 84, + 0xA951: 84, + 0xA980: 84, + 0xA981: 84, + 0xA982: 84, + 0xA9B3: 84, + 0xA9B6: 84, + 0xA9B7: 84, + 0xA9B8: 84, + 0xA9B9: 84, + 0xA9BC: 84, + 0xA9BD: 84, + 0xA9E5: 84, + 0xAA29: 84, + 0xAA2A: 84, + 0xAA2B: 84, + 0xAA2C: 84, + 0xAA2D: 84, + 0xAA2E: 84, + 0xAA31: 84, + 0xAA32: 84, + 0xAA35: 84, + 0xAA36: 84, + 0xAA43: 84, + 0xAA4C: 84, + 0xAA7C: 84, + 0xAAB0: 84, + 0xAAB2: 84, + 0xAAB3: 84, + 0xAAB4: 84, + 0xAAB7: 84, + 0xAAB8: 84, + 0xAABE: 84, + 0xAABF: 84, + 0xAAC1: 84, + 0xAAEC: 84, + 0xAAED: 84, + 0xAAF6: 84, + 0xABE5: 84, + 0xABE8: 84, + 0xABED: 84, + 0xFB1E: 84, + 0xFE00: 84, + 0xFE01: 84, + 0xFE02: 84, + 0xFE03: 84, + 0xFE04: 84, + 0xFE05: 84, + 0xFE06: 84, + 0xFE07: 84, + 0xFE08: 84, + 0xFE09: 84, + 0xFE0A: 84, + 0xFE0B: 84, + 0xFE0C: 84, + 0xFE0D: 84, + 0xFE0E: 84, + 0xFE0F: 84, + 0xFE20: 84, + 0xFE21: 84, + 0xFE22: 84, + 0xFE23: 84, + 0xFE24: 84, + 0xFE25: 84, + 0xFE26: 84, + 0xFE27: 84, + 0xFE28: 84, + 0xFE29: 84, + 0xFE2A: 84, + 0xFE2B: 84, + 0xFE2C: 84, + 0xFE2D: 84, + 0xFE2E: 84, + 0xFE2F: 84, + 0xFEFF: 84, + 0xFFF9: 84, + 0xFFFA: 84, + 0xFFFB: 84, + 0x101FD: 84, + 0x102E0: 84, + 0x10376: 84, + 0x10377: 84, + 0x10378: 84, + 0x10379: 84, + 0x1037A: 84, + 0x10A01: 84, + 0x10A02: 84, + 0x10A03: 84, + 0x10A05: 84, + 0x10A06: 84, + 0x10A0C: 84, + 0x10A0D: 84, + 0x10A0E: 84, + 0x10A0F: 84, + 0x10A38: 84, + 0x10A39: 84, + 0x10A3A: 84, + 0x10A3F: 84, + 0x10AC0: 68, + 0x10AC1: 68, + 0x10AC2: 68, + 0x10AC3: 68, + 0x10AC4: 68, + 0x10AC5: 82, + 0x10AC7: 82, + 0x10AC9: 82, + 0x10ACA: 82, + 0x10ACD: 76, + 0x10ACE: 82, + 0x10ACF: 82, + 0x10AD0: 82, + 0x10AD1: 82, + 0x10AD2: 82, + 0x10AD3: 68, + 0x10AD4: 68, + 0x10AD5: 68, + 0x10AD6: 68, + 0x10AD7: 76, + 0x10AD8: 68, + 0x10AD9: 68, + 0x10ADA: 68, + 0x10ADB: 68, + 0x10ADC: 68, + 0x10ADD: 82, + 0x10ADE: 68, + 0x10ADF: 68, + 0x10AE0: 68, + 0x10AE1: 82, + 0x10AE4: 82, + 0x10AE5: 84, + 0x10AE6: 84, + 0x10AEB: 68, + 0x10AEC: 68, + 0x10AED: 68, + 0x10AEE: 68, + 0x10AEF: 82, + 0x10B80: 68, + 0x10B81: 82, + 0x10B82: 68, + 0x10B83: 82, + 0x10B84: 82, + 0x10B85: 82, + 0x10B86: 68, + 0x10B87: 68, + 0x10B88: 68, + 0x10B89: 82, + 0x10B8A: 68, + 0x10B8B: 68, + 0x10B8C: 82, + 0x10B8D: 68, + 0x10B8E: 82, + 0x10B8F: 82, + 0x10B90: 68, + 0x10B91: 82, + 0x10BA9: 82, + 0x10BAA: 82, + 0x10BAB: 82, + 0x10BAC: 82, + 0x10BAD: 68, + 0x10BAE: 68, + 0x10D00: 76, + 0x10D01: 68, + 0x10D02: 68, + 0x10D03: 68, + 0x10D04: 68, + 0x10D05: 68, + 0x10D06: 68, + 0x10D07: 68, + 0x10D08: 68, + 0x10D09: 68, + 0x10D0A: 68, + 0x10D0B: 68, + 0x10D0C: 68, + 0x10D0D: 68, + 0x10D0E: 68, + 0x10D0F: 68, + 0x10D10: 68, + 0x10D11: 68, + 0x10D12: 68, + 0x10D13: 68, + 0x10D14: 68, + 0x10D15: 68, + 0x10D16: 68, + 0x10D17: 68, + 0x10D18: 68, + 0x10D19: 68, + 0x10D1A: 68, + 0x10D1B: 68, + 0x10D1C: 68, + 0x10D1D: 68, + 0x10D1E: 68, + 0x10D1F: 68, + 0x10D20: 68, + 0x10D21: 68, + 0x10D22: 82, + 0x10D23: 68, + 0x10D24: 84, + 0x10D25: 84, + 0x10D26: 84, + 0x10D27: 84, + 0x10EAB: 84, + 0x10EAC: 84, + 0x10EFD: 84, + 0x10EFE: 84, + 0x10EFF: 84, + 0x10F30: 68, + 0x10F31: 68, + 0x10F32: 68, + 0x10F33: 82, + 0x10F34: 68, + 0x10F35: 68, + 0x10F36: 68, + 0x10F37: 68, + 0x10F38: 68, + 0x10F39: 68, + 0x10F3A: 68, + 0x10F3B: 68, + 0x10F3C: 68, + 0x10F3D: 68, + 0x10F3E: 68, + 0x10F3F: 68, + 0x10F40: 68, + 0x10F41: 68, + 0x10F42: 68, + 0x10F43: 68, + 0x10F44: 68, + 0x10F46: 84, + 0x10F47: 84, + 0x10F48: 84, + 0x10F49: 84, + 0x10F4A: 84, + 0x10F4B: 84, + 0x10F4C: 84, + 0x10F4D: 84, + 0x10F4E: 84, + 0x10F4F: 84, + 0x10F50: 84, + 0x10F51: 68, + 0x10F52: 68, + 0x10F53: 68, + 0x10F54: 82, + 0x10F70: 68, + 0x10F71: 68, + 0x10F72: 68, + 0x10F73: 68, + 0x10F74: 82, + 0x10F75: 82, + 0x10F76: 68, + 0x10F77: 68, + 0x10F78: 68, + 0x10F79: 68, + 0x10F7A: 68, + 0x10F7B: 68, + 0x10F7C: 68, + 0x10F7D: 68, + 0x10F7E: 68, + 0x10F7F: 68, + 0x10F80: 68, + 0x10F81: 68, + 0x10F82: 84, + 0x10F83: 84, + 0x10F84: 84, + 0x10F85: 84, + 0x10FB0: 68, + 0x10FB2: 68, + 0x10FB3: 68, + 0x10FB4: 82, + 0x10FB5: 82, + 0x10FB6: 82, + 0x10FB8: 68, + 0x10FB9: 82, + 0x10FBA: 82, + 0x10FBB: 68, + 0x10FBC: 68, + 0x10FBD: 82, + 0x10FBE: 68, + 0x10FBF: 68, + 0x10FC1: 68, + 0x10FC2: 82, + 0x10FC3: 82, + 0x10FC4: 68, + 0x10FC9: 82, + 0x10FCA: 68, + 0x10FCB: 76, + 0x11001: 84, + 0x11038: 84, + 0x11039: 84, + 0x1103A: 84, + 0x1103B: 84, + 0x1103C: 84, + 0x1103D: 84, + 0x1103E: 84, + 0x1103F: 84, + 0x11040: 84, + 0x11041: 84, + 0x11042: 84, + 0x11043: 84, + 0x11044: 84, + 0x11045: 84, + 0x11046: 84, + 0x11070: 84, + 0x11073: 84, + 0x11074: 84, + 0x1107F: 84, + 0x11080: 84, + 0x11081: 84, + 0x110B3: 84, + 0x110B4: 84, + 0x110B5: 84, + 0x110B6: 84, + 0x110B9: 84, + 0x110BA: 84, + 0x110C2: 84, + 0x11100: 84, + 0x11101: 84, + 0x11102: 84, + 0x11127: 84, + 0x11128: 84, + 0x11129: 84, + 0x1112A: 84, + 0x1112B: 84, + 0x1112D: 84, + 0x1112E: 84, + 0x1112F: 84, + 0x11130: 84, + 0x11131: 84, + 0x11132: 84, + 0x11133: 84, + 0x11134: 84, + 0x11173: 84, + 0x11180: 84, + 0x11181: 84, + 0x111B6: 84, + 0x111B7: 84, + 0x111B8: 84, + 0x111B9: 84, + 0x111BA: 84, + 0x111BB: 84, + 0x111BC: 84, + 0x111BD: 84, + 0x111BE: 84, + 0x111C9: 84, + 0x111CA: 84, + 0x111CB: 84, + 0x111CC: 84, + 0x111CF: 84, + 0x1122F: 84, + 0x11230: 84, + 0x11231: 84, + 0x11234: 84, + 0x11236: 84, + 0x11237: 84, + 0x1123E: 84, + 0x11241: 84, + 0x112DF: 84, + 0x112E3: 84, + 0x112E4: 84, + 0x112E5: 84, + 0x112E6: 84, + 0x112E7: 84, + 0x112E8: 84, + 0x112E9: 84, + 0x112EA: 84, + 0x11300: 84, + 0x11301: 84, + 0x1133B: 84, + 0x1133C: 84, + 0x11340: 84, + 0x11366: 84, + 0x11367: 84, + 0x11368: 84, + 0x11369: 84, + 0x1136A: 84, + 0x1136B: 84, + 0x1136C: 84, + 0x11370: 84, + 0x11371: 84, + 0x11372: 84, + 0x11373: 84, + 0x11374: 84, + 0x11438: 84, + 0x11439: 84, + 0x1143A: 84, + 0x1143B: 84, + 0x1143C: 84, + 0x1143D: 84, + 0x1143E: 84, + 0x1143F: 84, + 0x11442: 84, + 0x11443: 84, + 0x11444: 84, + 0x11446: 84, + 0x1145E: 84, + 0x114B3: 84, + 0x114B4: 84, + 0x114B5: 84, + 0x114B6: 84, + 0x114B7: 84, + 0x114B8: 84, + 0x114BA: 84, + 0x114BF: 84, + 0x114C0: 84, + 0x114C2: 84, + 0x114C3: 84, + 0x115B2: 84, + 0x115B3: 84, + 0x115B4: 84, + 0x115B5: 84, + 0x115BC: 84, + 0x115BD: 84, + 0x115BF: 84, + 0x115C0: 84, + 0x115DC: 84, + 0x115DD: 84, + 0x11633: 84, + 0x11634: 84, + 0x11635: 84, + 0x11636: 84, + 0x11637: 84, + 0x11638: 84, + 0x11639: 84, + 0x1163A: 84, + 0x1163D: 84, + 0x1163F: 84, + 0x11640: 84, + 0x116AB: 84, + 0x116AD: 84, + 0x116B0: 84, + 0x116B1: 84, + 0x116B2: 84, + 0x116B3: 84, + 0x116B4: 84, + 0x116B5: 84, + 0x116B7: 84, + 0x1171D: 84, + 0x1171E: 84, + 0x1171F: 84, + 0x11722: 84, + 0x11723: 84, + 0x11724: 84, + 0x11725: 84, + 0x11727: 84, + 0x11728: 84, + 0x11729: 84, + 0x1172A: 84, + 0x1172B: 84, + 0x1182F: 84, + 0x11830: 84, + 0x11831: 84, + 0x11832: 84, + 0x11833: 84, + 0x11834: 84, + 0x11835: 84, + 0x11836: 84, + 0x11837: 84, + 0x11839: 84, + 0x1183A: 84, + 0x1193B: 84, + 0x1193C: 84, + 0x1193E: 84, + 0x11943: 84, + 0x119D4: 84, + 0x119D5: 84, + 0x119D6: 84, + 0x119D7: 84, + 0x119DA: 84, + 0x119DB: 84, + 0x119E0: 84, + 0x11A01: 84, + 0x11A02: 84, + 0x11A03: 84, + 0x11A04: 84, + 0x11A05: 84, + 0x11A06: 84, + 0x11A07: 84, + 0x11A08: 84, + 0x11A09: 84, + 0x11A0A: 84, + 0x11A33: 84, + 0x11A34: 84, + 0x11A35: 84, + 0x11A36: 84, + 0x11A37: 84, + 0x11A38: 84, + 0x11A3B: 84, + 0x11A3C: 84, + 0x11A3D: 84, + 0x11A3E: 84, + 0x11A47: 84, + 0x11A51: 84, + 0x11A52: 84, + 0x11A53: 84, + 0x11A54: 84, + 0x11A55: 84, + 0x11A56: 84, + 0x11A59: 84, + 0x11A5A: 84, + 0x11A5B: 84, + 0x11A8A: 84, + 0x11A8B: 84, + 0x11A8C: 84, + 0x11A8D: 84, + 0x11A8E: 84, + 0x11A8F: 84, + 0x11A90: 84, + 0x11A91: 84, + 0x11A92: 84, + 0x11A93: 84, + 0x11A94: 84, + 0x11A95: 84, + 0x11A96: 84, + 0x11A98: 84, + 0x11A99: 84, + 0x11C30: 84, + 0x11C31: 84, + 0x11C32: 84, + 0x11C33: 84, + 0x11C34: 84, + 0x11C35: 84, + 0x11C36: 84, + 0x11C38: 84, + 0x11C39: 84, + 0x11C3A: 84, + 0x11C3B: 84, + 0x11C3C: 84, + 0x11C3D: 84, + 0x11C3F: 84, + 0x11C92: 84, + 0x11C93: 84, + 0x11C94: 84, + 0x11C95: 84, + 0x11C96: 84, + 0x11C97: 84, + 0x11C98: 84, + 0x11C99: 84, + 0x11C9A: 84, + 0x11C9B: 84, + 0x11C9C: 84, + 0x11C9D: 84, + 0x11C9E: 84, + 0x11C9F: 84, + 0x11CA0: 84, + 0x11CA1: 84, + 0x11CA2: 84, + 0x11CA3: 84, + 0x11CA4: 84, + 0x11CA5: 84, + 0x11CA6: 84, + 0x11CA7: 84, + 0x11CAA: 84, + 0x11CAB: 84, + 0x11CAC: 84, + 0x11CAD: 84, + 0x11CAE: 84, + 0x11CAF: 84, + 0x11CB0: 84, + 0x11CB2: 84, + 0x11CB3: 84, + 0x11CB5: 84, + 0x11CB6: 84, + 0x11D31: 84, + 0x11D32: 84, + 0x11D33: 84, + 0x11D34: 84, + 0x11D35: 84, + 0x11D36: 84, + 0x11D3A: 84, + 0x11D3C: 84, + 0x11D3D: 84, + 0x11D3F: 84, + 0x11D40: 84, + 0x11D41: 84, + 0x11D42: 84, + 0x11D43: 84, + 0x11D44: 84, + 0x11D45: 84, + 0x11D47: 84, + 0x11D90: 84, + 0x11D91: 84, + 0x11D95: 84, + 0x11D97: 84, + 0x11EF3: 84, + 0x11EF4: 84, + 0x11F00: 84, + 0x11F01: 84, + 0x11F36: 84, + 0x11F37: 84, + 0x11F38: 84, + 0x11F39: 84, + 0x11F3A: 84, + 0x11F40: 84, + 0x11F42: 84, + 0x13430: 84, + 0x13431: 84, + 0x13432: 84, + 0x13433: 84, + 0x13434: 84, + 0x13435: 84, + 0x13436: 84, + 0x13437: 84, + 0x13438: 84, + 0x13439: 84, + 0x1343A: 84, + 0x1343B: 84, + 0x1343C: 84, + 0x1343D: 84, + 0x1343E: 84, + 0x1343F: 84, + 0x13440: 84, + 0x13447: 84, + 0x13448: 84, + 0x13449: 84, + 0x1344A: 84, + 0x1344B: 84, + 0x1344C: 84, + 0x1344D: 84, + 0x1344E: 84, + 0x1344F: 84, + 0x13450: 84, + 0x13451: 84, + 0x13452: 84, + 0x13453: 84, + 0x13454: 84, + 0x13455: 84, + 0x16AF0: 84, + 0x16AF1: 84, + 0x16AF2: 84, + 0x16AF3: 84, + 0x16AF4: 84, + 0x16B30: 84, + 0x16B31: 84, + 0x16B32: 84, + 0x16B33: 84, + 0x16B34: 84, + 0x16B35: 84, + 0x16B36: 84, + 0x16F4F: 84, + 0x16F8F: 84, + 0x16F90: 84, + 0x16F91: 84, + 0x16F92: 84, + 0x16FE4: 84, + 0x1BC9D: 84, + 0x1BC9E: 84, + 0x1BCA0: 84, + 0x1BCA1: 84, + 0x1BCA2: 84, + 0x1BCA3: 84, + 0x1CF00: 84, + 0x1CF01: 84, + 0x1CF02: 84, + 0x1CF03: 84, + 0x1CF04: 84, + 0x1CF05: 84, + 0x1CF06: 84, + 0x1CF07: 84, + 0x1CF08: 84, + 0x1CF09: 84, + 0x1CF0A: 84, + 0x1CF0B: 84, + 0x1CF0C: 84, + 0x1CF0D: 84, + 0x1CF0E: 84, + 0x1CF0F: 84, + 0x1CF10: 84, + 0x1CF11: 84, + 0x1CF12: 84, + 0x1CF13: 84, + 0x1CF14: 84, + 0x1CF15: 84, + 0x1CF16: 84, + 0x1CF17: 84, + 0x1CF18: 84, + 0x1CF19: 84, + 0x1CF1A: 84, + 0x1CF1B: 84, + 0x1CF1C: 84, + 0x1CF1D: 84, + 0x1CF1E: 84, + 0x1CF1F: 84, + 0x1CF20: 84, + 0x1CF21: 84, + 0x1CF22: 84, + 0x1CF23: 84, + 0x1CF24: 84, + 0x1CF25: 84, + 0x1CF26: 84, + 0x1CF27: 84, + 0x1CF28: 84, + 0x1CF29: 84, + 0x1CF2A: 84, + 0x1CF2B: 84, + 0x1CF2C: 84, + 0x1CF2D: 84, + 0x1CF30: 84, + 0x1CF31: 84, + 0x1CF32: 84, + 0x1CF33: 84, + 0x1CF34: 84, + 0x1CF35: 84, + 0x1CF36: 84, + 0x1CF37: 84, + 0x1CF38: 84, + 0x1CF39: 84, + 0x1CF3A: 84, + 0x1CF3B: 84, + 0x1CF3C: 84, + 0x1CF3D: 84, + 0x1CF3E: 84, + 0x1CF3F: 84, + 0x1CF40: 84, + 0x1CF41: 84, + 0x1CF42: 84, + 0x1CF43: 84, + 0x1CF44: 84, + 0x1CF45: 84, + 0x1CF46: 84, + 0x1D167: 84, + 0x1D168: 84, + 0x1D169: 84, + 0x1D173: 84, + 0x1D174: 84, + 0x1D175: 84, + 0x1D176: 84, + 0x1D177: 84, + 0x1D178: 84, + 0x1D179: 84, + 0x1D17A: 84, + 0x1D17B: 84, + 0x1D17C: 84, + 0x1D17D: 84, + 0x1D17E: 84, + 0x1D17F: 84, + 0x1D180: 84, + 0x1D181: 84, + 0x1D182: 84, + 0x1D185: 84, + 0x1D186: 84, + 0x1D187: 84, + 0x1D188: 84, + 0x1D189: 84, + 0x1D18A: 84, + 0x1D18B: 84, + 0x1D1AA: 84, + 0x1D1AB: 84, + 0x1D1AC: 84, + 0x1D1AD: 84, + 0x1D242: 84, + 0x1D243: 84, + 0x1D244: 84, + 0x1DA00: 84, + 0x1DA01: 84, + 0x1DA02: 84, + 0x1DA03: 84, + 0x1DA04: 84, + 0x1DA05: 84, + 0x1DA06: 84, + 0x1DA07: 84, + 0x1DA08: 84, + 0x1DA09: 84, + 0x1DA0A: 84, + 0x1DA0B: 84, + 0x1DA0C: 84, + 0x1DA0D: 84, + 0x1DA0E: 84, + 0x1DA0F: 84, + 0x1DA10: 84, + 0x1DA11: 84, + 0x1DA12: 84, + 0x1DA13: 84, + 0x1DA14: 84, + 0x1DA15: 84, + 0x1DA16: 84, + 0x1DA17: 84, + 0x1DA18: 84, + 0x1DA19: 84, + 0x1DA1A: 84, + 0x1DA1B: 84, + 0x1DA1C: 84, + 0x1DA1D: 84, + 0x1DA1E: 84, + 0x1DA1F: 84, + 0x1DA20: 84, + 0x1DA21: 84, + 0x1DA22: 84, + 0x1DA23: 84, + 0x1DA24: 84, + 0x1DA25: 84, + 0x1DA26: 84, + 0x1DA27: 84, + 0x1DA28: 84, + 0x1DA29: 84, + 0x1DA2A: 84, + 0x1DA2B: 84, + 0x1DA2C: 84, + 0x1DA2D: 84, + 0x1DA2E: 84, + 0x1DA2F: 84, + 0x1DA30: 84, + 0x1DA31: 84, + 0x1DA32: 84, + 0x1DA33: 84, + 0x1DA34: 84, + 0x1DA35: 84, + 0x1DA36: 84, + 0x1DA3B: 84, + 0x1DA3C: 84, + 0x1DA3D: 84, + 0x1DA3E: 84, + 0x1DA3F: 84, + 0x1DA40: 84, + 0x1DA41: 84, + 0x1DA42: 84, + 0x1DA43: 84, + 0x1DA44: 84, + 0x1DA45: 84, + 0x1DA46: 84, + 0x1DA47: 84, + 0x1DA48: 84, + 0x1DA49: 84, + 0x1DA4A: 84, + 0x1DA4B: 84, + 0x1DA4C: 84, + 0x1DA4D: 84, + 0x1DA4E: 84, + 0x1DA4F: 84, + 0x1DA50: 84, + 0x1DA51: 84, + 0x1DA52: 84, + 0x1DA53: 84, + 0x1DA54: 84, + 0x1DA55: 84, + 0x1DA56: 84, + 0x1DA57: 84, + 0x1DA58: 84, + 0x1DA59: 84, + 0x1DA5A: 84, + 0x1DA5B: 84, + 0x1DA5C: 84, + 0x1DA5D: 84, + 0x1DA5E: 84, + 0x1DA5F: 84, + 0x1DA60: 84, + 0x1DA61: 84, + 0x1DA62: 84, + 0x1DA63: 84, + 0x1DA64: 84, + 0x1DA65: 84, + 0x1DA66: 84, + 0x1DA67: 84, + 0x1DA68: 84, + 0x1DA69: 84, + 0x1DA6A: 84, + 0x1DA6B: 84, + 0x1DA6C: 84, + 0x1DA75: 84, + 0x1DA84: 84, + 0x1DA9B: 84, + 0x1DA9C: 84, + 0x1DA9D: 84, + 0x1DA9E: 84, + 0x1DA9F: 84, + 0x1DAA1: 84, + 0x1DAA2: 84, + 0x1DAA3: 84, + 0x1DAA4: 84, + 0x1DAA5: 84, + 0x1DAA6: 84, + 0x1DAA7: 84, + 0x1DAA8: 84, + 0x1DAA9: 84, + 0x1DAAA: 84, + 0x1DAAB: 84, + 0x1DAAC: 84, + 0x1DAAD: 84, + 0x1DAAE: 84, + 0x1DAAF: 84, + 0x1E000: 84, + 0x1E001: 84, + 0x1E002: 84, + 0x1E003: 84, + 0x1E004: 84, + 0x1E005: 84, + 0x1E006: 84, + 0x1E008: 84, + 0x1E009: 84, + 0x1E00A: 84, + 0x1E00B: 84, + 0x1E00C: 84, + 0x1E00D: 84, + 0x1E00E: 84, + 0x1E00F: 84, + 0x1E010: 84, + 0x1E011: 84, + 0x1E012: 84, + 0x1E013: 84, + 0x1E014: 84, + 0x1E015: 84, + 0x1E016: 84, + 0x1E017: 84, + 0x1E018: 84, + 0x1E01B: 84, + 0x1E01C: 84, + 0x1E01D: 84, + 0x1E01E: 84, + 0x1E01F: 84, + 0x1E020: 84, + 0x1E021: 84, + 0x1E023: 84, + 0x1E024: 84, + 0x1E026: 84, + 0x1E027: 84, + 0x1E028: 84, + 0x1E029: 84, + 0x1E02A: 84, + 0x1E08F: 84, + 0x1E130: 84, + 0x1E131: 84, + 0x1E132: 84, + 0x1E133: 84, + 0x1E134: 84, + 0x1E135: 84, + 0x1E136: 84, + 0x1E2AE: 84, + 0x1E2EC: 84, + 0x1E2ED: 84, + 0x1E2EE: 84, + 0x1E2EF: 84, + 0x1E4EC: 84, + 0x1E4ED: 84, + 0x1E4EE: 84, + 0x1E4EF: 84, + 0x1E8D0: 84, + 0x1E8D1: 84, + 0x1E8D2: 84, + 0x1E8D3: 84, + 0x1E8D4: 84, + 0x1E8D5: 84, + 0x1E8D6: 84, + 0x1E900: 68, + 0x1E901: 68, + 0x1E902: 68, + 0x1E903: 68, + 0x1E904: 68, + 0x1E905: 68, + 0x1E906: 68, + 0x1E907: 68, + 0x1E908: 68, + 0x1E909: 68, + 0x1E90A: 68, + 0x1E90B: 68, + 0x1E90C: 68, + 0x1E90D: 68, + 0x1E90E: 68, + 0x1E90F: 68, + 0x1E910: 68, + 0x1E911: 68, + 0x1E912: 68, + 0x1E913: 68, + 0x1E914: 68, + 0x1E915: 68, + 0x1E916: 68, + 0x1E917: 68, + 0x1E918: 68, + 0x1E919: 68, + 0x1E91A: 68, + 0x1E91B: 68, + 0x1E91C: 68, + 0x1E91D: 68, + 0x1E91E: 68, + 0x1E91F: 68, + 0x1E920: 68, + 0x1E921: 68, + 0x1E922: 68, + 0x1E923: 68, + 0x1E924: 68, + 0x1E925: 68, + 0x1E926: 68, + 0x1E927: 68, + 0x1E928: 68, + 0x1E929: 68, + 0x1E92A: 68, + 0x1E92B: 68, + 0x1E92C: 68, + 0x1E92D: 68, + 0x1E92E: 68, + 0x1E92F: 68, + 0x1E930: 68, + 0x1E931: 68, + 0x1E932: 68, + 0x1E933: 68, + 0x1E934: 68, + 0x1E935: 68, + 0x1E936: 68, + 0x1E937: 68, + 0x1E938: 68, + 0x1E939: 68, + 0x1E93A: 68, + 0x1E93B: 68, + 0x1E93C: 68, + 0x1E93D: 68, + 0x1E93E: 68, + 0x1E93F: 68, + 0x1E940: 68, + 0x1E941: 68, + 0x1E942: 68, + 0x1E943: 68, + 0x1E944: 84, + 0x1E945: 84, + 0x1E946: 84, + 0x1E947: 84, + 0x1E948: 84, + 0x1E949: 84, + 0x1E94A: 84, + 0x1E94B: 84, + 0xE0001: 84, + 0xE0020: 84, + 0xE0021: 84, + 0xE0022: 84, + 0xE0023: 84, + 0xE0024: 84, + 0xE0025: 84, + 0xE0026: 84, + 0xE0027: 84, + 0xE0028: 84, + 0xE0029: 84, + 0xE002A: 84, + 0xE002B: 84, + 0xE002C: 84, + 0xE002D: 84, + 0xE002E: 84, + 0xE002F: 84, + 0xE0030: 84, + 0xE0031: 84, + 0xE0032: 84, + 0xE0033: 84, + 0xE0034: 84, + 0xE0035: 84, + 0xE0036: 84, + 0xE0037: 84, + 0xE0038: 84, + 0xE0039: 84, + 0xE003A: 84, + 0xE003B: 84, + 0xE003C: 84, + 0xE003D: 84, + 0xE003E: 84, + 0xE003F: 84, + 0xE0040: 84, + 0xE0041: 84, + 0xE0042: 84, + 0xE0043: 84, + 0xE0044: 84, + 0xE0045: 84, + 0xE0046: 84, + 0xE0047: 84, + 0xE0048: 84, + 0xE0049: 84, + 0xE004A: 84, + 0xE004B: 84, + 0xE004C: 84, + 0xE004D: 84, + 0xE004E: 84, + 0xE004F: 84, + 0xE0050: 84, + 0xE0051: 84, + 0xE0052: 84, + 0xE0053: 84, + 0xE0054: 84, + 0xE0055: 84, + 0xE0056: 84, + 0xE0057: 84, + 0xE0058: 84, + 0xE0059: 84, + 0xE005A: 84, + 0xE005B: 84, + 0xE005C: 84, + 0xE005D: 84, + 0xE005E: 84, + 0xE005F: 84, + 0xE0060: 84, + 0xE0061: 84, + 0xE0062: 84, + 0xE0063: 84, + 0xE0064: 84, + 0xE0065: 84, + 0xE0066: 84, + 0xE0067: 84, + 0xE0068: 84, + 0xE0069: 84, + 0xE006A: 84, + 0xE006B: 84, + 0xE006C: 84, + 0xE006D: 84, + 0xE006E: 84, + 0xE006F: 84, + 0xE0070: 84, + 0xE0071: 84, + 0xE0072: 84, + 0xE0073: 84, + 0xE0074: 84, + 0xE0075: 84, + 0xE0076: 84, + 0xE0077: 84, + 0xE0078: 84, + 0xE0079: 84, + 0xE007A: 84, + 0xE007B: 84, + 0xE007C: 84, + 0xE007D: 84, + 0xE007E: 84, + 0xE007F: 84, + 0xE0100: 84, + 0xE0101: 84, + 0xE0102: 84, + 0xE0103: 84, + 0xE0104: 84, + 0xE0105: 84, + 0xE0106: 84, + 0xE0107: 84, + 0xE0108: 84, + 0xE0109: 84, + 0xE010A: 84, + 0xE010B: 84, + 0xE010C: 84, + 0xE010D: 84, + 0xE010E: 84, + 0xE010F: 84, + 0xE0110: 84, + 0xE0111: 84, + 0xE0112: 84, + 0xE0113: 84, + 0xE0114: 84, + 0xE0115: 84, + 0xE0116: 84, + 0xE0117: 84, + 0xE0118: 84, + 0xE0119: 84, + 0xE011A: 84, + 0xE011B: 84, + 0xE011C: 84, + 0xE011D: 84, + 0xE011E: 84, + 0xE011F: 84, + 0xE0120: 84, + 0xE0121: 84, + 0xE0122: 84, + 0xE0123: 84, + 0xE0124: 84, + 0xE0125: 84, + 0xE0126: 84, + 0xE0127: 84, + 0xE0128: 84, + 0xE0129: 84, + 0xE012A: 84, + 0xE012B: 84, + 0xE012C: 84, + 0xE012D: 84, + 0xE012E: 84, + 0xE012F: 84, + 0xE0130: 84, + 0xE0131: 84, + 0xE0132: 84, + 0xE0133: 84, + 0xE0134: 84, + 0xE0135: 84, + 0xE0136: 84, + 0xE0137: 84, + 0xE0138: 84, + 0xE0139: 84, + 0xE013A: 84, + 0xE013B: 84, + 0xE013C: 84, + 0xE013D: 84, + 0xE013E: 84, + 0xE013F: 84, + 0xE0140: 84, + 0xE0141: 84, + 0xE0142: 84, + 0xE0143: 84, + 0xE0144: 84, + 0xE0145: 84, + 0xE0146: 84, + 0xE0147: 84, + 0xE0148: 84, + 0xE0149: 84, + 0xE014A: 84, + 0xE014B: 84, + 0xE014C: 84, + 0xE014D: 84, + 0xE014E: 84, + 0xE014F: 84, + 0xE0150: 84, + 0xE0151: 84, + 0xE0152: 84, + 0xE0153: 84, + 0xE0154: 84, + 0xE0155: 84, + 0xE0156: 84, + 0xE0157: 84, + 0xE0158: 84, + 0xE0159: 84, + 0xE015A: 84, + 0xE015B: 84, + 0xE015C: 84, + 0xE015D: 84, + 0xE015E: 84, + 0xE015F: 84, + 0xE0160: 84, + 0xE0161: 84, + 0xE0162: 84, + 0xE0163: 84, + 0xE0164: 84, + 0xE0165: 84, + 0xE0166: 84, + 0xE0167: 84, + 0xE0168: 84, + 0xE0169: 84, + 0xE016A: 84, + 0xE016B: 84, + 0xE016C: 84, + 0xE016D: 84, + 0xE016E: 84, + 0xE016F: 84, + 0xE0170: 84, + 0xE0171: 84, + 0xE0172: 84, + 0xE0173: 84, + 0xE0174: 84, + 0xE0175: 84, + 0xE0176: 84, + 0xE0177: 84, + 0xE0178: 84, + 0xE0179: 84, + 0xE017A: 84, + 0xE017B: 84, + 0xE017C: 84, + 0xE017D: 84, + 0xE017E: 84, + 0xE017F: 84, + 0xE0180: 84, + 0xE0181: 84, + 0xE0182: 84, + 0xE0183: 84, + 0xE0184: 84, + 0xE0185: 84, + 0xE0186: 84, + 0xE0187: 84, + 0xE0188: 84, + 0xE0189: 84, + 0xE018A: 84, + 0xE018B: 84, + 0xE018C: 84, + 0xE018D: 84, + 0xE018E: 84, + 0xE018F: 84, + 0xE0190: 84, + 0xE0191: 84, + 0xE0192: 84, + 0xE0193: 84, + 0xE0194: 84, + 0xE0195: 84, + 0xE0196: 84, + 0xE0197: 84, + 0xE0198: 84, + 0xE0199: 84, + 0xE019A: 84, + 0xE019B: 84, + 0xE019C: 84, + 0xE019D: 84, + 0xE019E: 84, + 0xE019F: 84, + 0xE01A0: 84, + 0xE01A1: 84, + 0xE01A2: 84, + 0xE01A3: 84, + 0xE01A4: 84, + 0xE01A5: 84, + 0xE01A6: 84, + 0xE01A7: 84, + 0xE01A8: 84, + 0xE01A9: 84, + 0xE01AA: 84, + 0xE01AB: 84, + 0xE01AC: 84, + 0xE01AD: 84, + 0xE01AE: 84, + 0xE01AF: 84, + 0xE01B0: 84, + 0xE01B1: 84, + 0xE01B2: 84, + 0xE01B3: 84, + 0xE01B4: 84, + 0xE01B5: 84, + 0xE01B6: 84, + 0xE01B7: 84, + 0xE01B8: 84, + 0xE01B9: 84, + 0xE01BA: 84, + 0xE01BB: 84, + 0xE01BC: 84, + 0xE01BD: 84, + 0xE01BE: 84, + 0xE01BF: 84, + 0xE01C0: 84, + 0xE01C1: 84, + 0xE01C2: 84, + 0xE01C3: 84, + 0xE01C4: 84, + 0xE01C5: 84, + 0xE01C6: 84, + 0xE01C7: 84, + 0xE01C8: 84, + 0xE01C9: 84, + 0xE01CA: 84, + 0xE01CB: 84, + 0xE01CC: 84, + 0xE01CD: 84, + 0xE01CE: 84, + 0xE01CF: 84, + 0xE01D0: 84, + 0xE01D1: 84, + 0xE01D2: 84, + 0xE01D3: 84, + 0xE01D4: 84, + 0xE01D5: 84, + 0xE01D6: 84, + 0xE01D7: 84, + 0xE01D8: 84, + 0xE01D9: 84, + 0xE01DA: 84, + 0xE01DB: 84, + 0xE01DC: 84, + 0xE01DD: 84, + 0xE01DE: 84, + 0xE01DF: 84, + 0xE01E0: 84, + 0xE01E1: 84, + 0xE01E2: 84, + 0xE01E3: 84, + 0xE01E4: 84, + 0xE01E5: 84, + 0xE01E6: 84, + 0xE01E7: 84, + 0xE01E8: 84, + 0xE01E9: 84, + 0xE01EA: 84, + 0xE01EB: 84, + 0xE01EC: 84, + 0xE01ED: 84, + 0xE01EE: 84, + 0xE01EF: 84, +} +codepoint_classes = { + "PVALID": ( + 0x2D0000002E, + 0x300000003A, + 0x610000007B, + 0xDF000000F7, + 0xF800000100, + 0x10100000102, + 0x10300000104, + 0x10500000106, + 0x10700000108, + 0x1090000010A, + 0x10B0000010C, + 0x10D0000010E, + 0x10F00000110, + 0x11100000112, + 0x11300000114, + 0x11500000116, + 0x11700000118, + 0x1190000011A, + 0x11B0000011C, + 0x11D0000011E, + 0x11F00000120, + 0x12100000122, + 0x12300000124, + 0x12500000126, + 0x12700000128, + 0x1290000012A, + 0x12B0000012C, + 0x12D0000012E, + 0x12F00000130, + 0x13100000132, + 0x13500000136, + 0x13700000139, + 0x13A0000013B, + 0x13C0000013D, + 0x13E0000013F, + 0x14200000143, + 0x14400000145, + 0x14600000147, + 0x14800000149, + 0x14B0000014C, + 0x14D0000014E, + 0x14F00000150, + 0x15100000152, + 0x15300000154, + 0x15500000156, + 0x15700000158, + 0x1590000015A, + 0x15B0000015C, + 0x15D0000015E, + 0x15F00000160, + 0x16100000162, + 0x16300000164, + 0x16500000166, + 0x16700000168, + 0x1690000016A, + 0x16B0000016C, + 0x16D0000016E, + 0x16F00000170, + 0x17100000172, + 0x17300000174, + 0x17500000176, + 0x17700000178, + 0x17A0000017B, + 0x17C0000017D, + 0x17E0000017F, + 0x18000000181, + 0x18300000184, + 0x18500000186, + 0x18800000189, + 0x18C0000018E, + 0x19200000193, + 0x19500000196, + 0x1990000019C, + 0x19E0000019F, + 0x1A1000001A2, + 0x1A3000001A4, + 0x1A5000001A6, + 0x1A8000001A9, + 0x1AA000001AC, + 0x1AD000001AE, + 0x1B0000001B1, + 0x1B4000001B5, + 0x1B6000001B7, + 0x1B9000001BC, + 0x1BD000001C4, + 0x1CE000001CF, + 0x1D0000001D1, + 0x1D2000001D3, + 0x1D4000001D5, + 0x1D6000001D7, + 0x1D8000001D9, + 0x1DA000001DB, + 0x1DC000001DE, + 0x1DF000001E0, + 0x1E1000001E2, + 0x1E3000001E4, + 0x1E5000001E6, + 0x1E7000001E8, + 0x1E9000001EA, + 0x1EB000001EC, + 0x1ED000001EE, + 0x1EF000001F1, + 0x1F5000001F6, + 0x1F9000001FA, + 0x1FB000001FC, + 0x1FD000001FE, + 0x1FF00000200, + 0x20100000202, + 0x20300000204, + 0x20500000206, + 0x20700000208, + 0x2090000020A, + 0x20B0000020C, + 0x20D0000020E, + 0x20F00000210, + 0x21100000212, + 0x21300000214, + 0x21500000216, + 0x21700000218, + 0x2190000021A, + 0x21B0000021C, + 0x21D0000021E, + 0x21F00000220, + 0x22100000222, + 0x22300000224, + 0x22500000226, + 0x22700000228, + 0x2290000022A, + 0x22B0000022C, + 0x22D0000022E, + 0x22F00000230, + 0x23100000232, + 0x2330000023A, + 0x23C0000023D, + 0x23F00000241, + 0x24200000243, + 0x24700000248, + 0x2490000024A, + 0x24B0000024C, + 0x24D0000024E, + 0x24F000002B0, + 0x2B9000002C2, + 0x2C6000002D2, + 0x2EC000002ED, + 0x2EE000002EF, + 0x30000000340, + 0x34200000343, + 0x3460000034F, + 0x35000000370, + 0x37100000372, + 0x37300000374, + 0x37700000378, + 0x37B0000037E, + 0x39000000391, + 0x3AC000003CF, + 0x3D7000003D8, + 0x3D9000003DA, + 0x3DB000003DC, + 0x3DD000003DE, + 0x3DF000003E0, + 0x3E1000003E2, + 0x3E3000003E4, + 0x3E5000003E6, + 0x3E7000003E8, + 0x3E9000003EA, + 0x3EB000003EC, + 0x3ED000003EE, + 0x3EF000003F0, + 0x3F3000003F4, + 0x3F8000003F9, + 0x3FB000003FD, + 0x43000000460, + 0x46100000462, + 0x46300000464, + 0x46500000466, + 0x46700000468, + 0x4690000046A, + 0x46B0000046C, + 0x46D0000046E, + 0x46F00000470, + 0x47100000472, + 0x47300000474, + 0x47500000476, + 0x47700000478, + 0x4790000047A, + 0x47B0000047C, + 0x47D0000047E, + 0x47F00000480, + 0x48100000482, + 0x48300000488, + 0x48B0000048C, + 0x48D0000048E, + 0x48F00000490, + 0x49100000492, + 0x49300000494, + 0x49500000496, + 0x49700000498, + 0x4990000049A, + 0x49B0000049C, + 0x49D0000049E, + 0x49F000004A0, + 0x4A1000004A2, + 0x4A3000004A4, + 0x4A5000004A6, + 0x4A7000004A8, + 0x4A9000004AA, + 0x4AB000004AC, + 0x4AD000004AE, + 0x4AF000004B0, + 0x4B1000004B2, + 0x4B3000004B4, + 0x4B5000004B6, + 0x4B7000004B8, + 0x4B9000004BA, + 0x4BB000004BC, + 0x4BD000004BE, + 0x4BF000004C0, + 0x4C2000004C3, + 0x4C4000004C5, + 0x4C6000004C7, + 0x4C8000004C9, + 0x4CA000004CB, + 0x4CC000004CD, + 0x4CE000004D0, + 0x4D1000004D2, + 0x4D3000004D4, + 0x4D5000004D6, + 0x4D7000004D8, + 0x4D9000004DA, + 0x4DB000004DC, + 0x4DD000004DE, + 0x4DF000004E0, + 0x4E1000004E2, + 0x4E3000004E4, + 0x4E5000004E6, + 0x4E7000004E8, + 0x4E9000004EA, + 0x4EB000004EC, + 0x4ED000004EE, + 0x4EF000004F0, + 0x4F1000004F2, + 0x4F3000004F4, + 0x4F5000004F6, + 0x4F7000004F8, + 0x4F9000004FA, + 0x4FB000004FC, + 0x4FD000004FE, + 0x4FF00000500, + 0x50100000502, + 0x50300000504, + 0x50500000506, + 0x50700000508, + 0x5090000050A, + 0x50B0000050C, + 0x50D0000050E, + 0x50F00000510, + 0x51100000512, + 0x51300000514, + 0x51500000516, + 0x51700000518, + 0x5190000051A, + 0x51B0000051C, + 0x51D0000051E, + 0x51F00000520, + 0x52100000522, + 0x52300000524, + 0x52500000526, + 0x52700000528, + 0x5290000052A, + 0x52B0000052C, + 0x52D0000052E, + 0x52F00000530, + 0x5590000055A, + 0x56000000587, + 0x58800000589, + 0x591000005BE, + 0x5BF000005C0, + 0x5C1000005C3, + 0x5C4000005C6, + 0x5C7000005C8, + 0x5D0000005EB, + 0x5EF000005F3, + 0x6100000061B, + 0x62000000640, + 0x64100000660, + 0x66E00000675, + 0x679000006D4, + 0x6D5000006DD, + 0x6DF000006E9, + 0x6EA000006F0, + 0x6FA00000700, + 0x7100000074B, + 0x74D000007B2, + 0x7C0000007F6, + 0x7FD000007FE, + 0x8000000082E, + 0x8400000085C, + 0x8600000086B, + 0x87000000888, + 0x8890000088F, + 0x898000008E2, + 0x8E300000958, + 0x96000000964, + 0x96600000970, + 0x97100000984, + 0x9850000098D, + 0x98F00000991, + 0x993000009A9, + 0x9AA000009B1, + 0x9B2000009B3, + 0x9B6000009BA, + 0x9BC000009C5, + 0x9C7000009C9, + 0x9CB000009CF, + 0x9D7000009D8, + 0x9E0000009E4, + 0x9E6000009F2, + 0x9FC000009FD, + 0x9FE000009FF, + 0xA0100000A04, + 0xA0500000A0B, + 0xA0F00000A11, + 0xA1300000A29, + 0xA2A00000A31, + 0xA3200000A33, + 0xA3500000A36, + 0xA3800000A3A, + 0xA3C00000A3D, + 0xA3E00000A43, + 0xA4700000A49, + 0xA4B00000A4E, + 0xA5100000A52, + 0xA5C00000A5D, + 0xA6600000A76, + 0xA8100000A84, + 0xA8500000A8E, + 0xA8F00000A92, + 0xA9300000AA9, + 0xAAA00000AB1, + 0xAB200000AB4, + 0xAB500000ABA, + 0xABC00000AC6, + 0xAC700000ACA, + 0xACB00000ACE, + 0xAD000000AD1, + 0xAE000000AE4, + 0xAE600000AF0, + 0xAF900000B00, + 0xB0100000B04, + 0xB0500000B0D, + 0xB0F00000B11, + 0xB1300000B29, + 0xB2A00000B31, + 0xB3200000B34, + 0xB3500000B3A, + 0xB3C00000B45, + 0xB4700000B49, + 0xB4B00000B4E, + 0xB5500000B58, + 0xB5F00000B64, + 0xB6600000B70, + 0xB7100000B72, + 0xB8200000B84, + 0xB8500000B8B, + 0xB8E00000B91, + 0xB9200000B96, + 0xB9900000B9B, + 0xB9C00000B9D, + 0xB9E00000BA0, + 0xBA300000BA5, + 0xBA800000BAB, + 0xBAE00000BBA, + 0xBBE00000BC3, + 0xBC600000BC9, + 0xBCA00000BCE, + 0xBD000000BD1, + 0xBD700000BD8, + 0xBE600000BF0, + 0xC0000000C0D, + 0xC0E00000C11, + 0xC1200000C29, + 0xC2A00000C3A, + 0xC3C00000C45, + 0xC4600000C49, + 0xC4A00000C4E, + 0xC5500000C57, + 0xC5800000C5B, + 0xC5D00000C5E, + 0xC6000000C64, + 0xC6600000C70, + 0xC8000000C84, + 0xC8500000C8D, + 0xC8E00000C91, + 0xC9200000CA9, + 0xCAA00000CB4, + 0xCB500000CBA, + 0xCBC00000CC5, + 0xCC600000CC9, + 0xCCA00000CCE, + 0xCD500000CD7, + 0xCDD00000CDF, + 0xCE000000CE4, + 0xCE600000CF0, + 0xCF100000CF4, + 0xD0000000D0D, + 0xD0E00000D11, + 0xD1200000D45, + 0xD4600000D49, + 0xD4A00000D4F, + 0xD5400000D58, + 0xD5F00000D64, + 0xD6600000D70, + 0xD7A00000D80, + 0xD8100000D84, + 0xD8500000D97, + 0xD9A00000DB2, + 0xDB300000DBC, + 0xDBD00000DBE, + 0xDC000000DC7, + 0xDCA00000DCB, + 0xDCF00000DD5, + 0xDD600000DD7, + 0xDD800000DE0, + 0xDE600000DF0, + 0xDF200000DF4, + 0xE0100000E33, + 0xE3400000E3B, + 0xE4000000E4F, + 0xE5000000E5A, + 0xE8100000E83, + 0xE8400000E85, + 0xE8600000E8B, + 0xE8C00000EA4, + 0xEA500000EA6, + 0xEA700000EB3, + 0xEB400000EBE, + 0xEC000000EC5, + 0xEC600000EC7, + 0xEC800000ECF, + 0xED000000EDA, + 0xEDE00000EE0, + 0xF0000000F01, + 0xF0B00000F0C, + 0xF1800000F1A, + 0xF2000000F2A, + 0xF3500000F36, + 0xF3700000F38, + 0xF3900000F3A, + 0xF3E00000F43, + 0xF4400000F48, + 0xF4900000F4D, + 0xF4E00000F52, + 0xF5300000F57, + 0xF5800000F5C, + 0xF5D00000F69, + 0xF6A00000F6D, + 0xF7100000F73, + 0xF7400000F75, + 0xF7A00000F81, + 0xF8200000F85, + 0xF8600000F93, + 0xF9400000F98, + 0xF9900000F9D, + 0xF9E00000FA2, + 0xFA300000FA7, + 0xFA800000FAC, + 0xFAD00000FB9, + 0xFBA00000FBD, + 0xFC600000FC7, + 0x10000000104A, + 0x10500000109E, + 0x10D0000010FB, + 0x10FD00001100, + 0x120000001249, + 0x124A0000124E, + 0x125000001257, + 0x125800001259, + 0x125A0000125E, + 0x126000001289, + 0x128A0000128E, + 0x1290000012B1, + 0x12B2000012B6, + 0x12B8000012BF, + 0x12C0000012C1, + 0x12C2000012C6, + 0x12C8000012D7, + 0x12D800001311, + 0x131200001316, + 0x13180000135B, + 0x135D00001360, + 0x138000001390, + 0x13A0000013F6, + 0x14010000166D, + 0x166F00001680, + 0x16810000169B, + 0x16A0000016EB, + 0x16F1000016F9, + 0x170000001716, + 0x171F00001735, + 0x174000001754, + 0x17600000176D, + 0x176E00001771, + 0x177200001774, + 0x1780000017B4, + 0x17B6000017D4, + 0x17D7000017D8, + 0x17DC000017DE, + 0x17E0000017EA, + 0x18100000181A, + 0x182000001879, + 0x1880000018AB, + 0x18B0000018F6, + 0x19000000191F, + 0x19200000192C, + 0x19300000193C, + 0x19460000196E, + 0x197000001975, + 0x1980000019AC, + 0x19B0000019CA, + 0x19D0000019DA, + 0x1A0000001A1C, + 0x1A2000001A5F, + 0x1A6000001A7D, + 0x1A7F00001A8A, + 0x1A9000001A9A, + 0x1AA700001AA8, + 0x1AB000001ABE, + 0x1ABF00001ACF, + 0x1B0000001B4D, + 0x1B5000001B5A, + 0x1B6B00001B74, + 0x1B8000001BF4, + 0x1C0000001C38, + 0x1C4000001C4A, + 0x1C4D00001C7E, + 0x1CD000001CD3, + 0x1CD400001CFB, + 0x1D0000001D2C, + 0x1D2F00001D30, + 0x1D3B00001D3C, + 0x1D4E00001D4F, + 0x1D6B00001D78, + 0x1D7900001D9B, + 0x1DC000001E00, + 0x1E0100001E02, + 0x1E0300001E04, + 0x1E0500001E06, + 0x1E0700001E08, + 0x1E0900001E0A, + 0x1E0B00001E0C, + 0x1E0D00001E0E, + 0x1E0F00001E10, + 0x1E1100001E12, + 0x1E1300001E14, + 0x1E1500001E16, + 0x1E1700001E18, + 0x1E1900001E1A, + 0x1E1B00001E1C, + 0x1E1D00001E1E, + 0x1E1F00001E20, + 0x1E2100001E22, + 0x1E2300001E24, + 0x1E2500001E26, + 0x1E2700001E28, + 0x1E2900001E2A, + 0x1E2B00001E2C, + 0x1E2D00001E2E, + 0x1E2F00001E30, + 0x1E3100001E32, + 0x1E3300001E34, + 0x1E3500001E36, + 0x1E3700001E38, + 0x1E3900001E3A, + 0x1E3B00001E3C, + 0x1E3D00001E3E, + 0x1E3F00001E40, + 0x1E4100001E42, + 0x1E4300001E44, + 0x1E4500001E46, + 0x1E4700001E48, + 0x1E4900001E4A, + 0x1E4B00001E4C, + 0x1E4D00001E4E, + 0x1E4F00001E50, + 0x1E5100001E52, + 0x1E5300001E54, + 0x1E5500001E56, + 0x1E5700001E58, + 0x1E5900001E5A, + 0x1E5B00001E5C, + 0x1E5D00001E5E, + 0x1E5F00001E60, + 0x1E6100001E62, + 0x1E6300001E64, + 0x1E6500001E66, + 0x1E6700001E68, + 0x1E6900001E6A, + 0x1E6B00001E6C, + 0x1E6D00001E6E, + 0x1E6F00001E70, + 0x1E7100001E72, + 0x1E7300001E74, + 0x1E7500001E76, + 0x1E7700001E78, + 0x1E7900001E7A, + 0x1E7B00001E7C, + 0x1E7D00001E7E, + 0x1E7F00001E80, + 0x1E8100001E82, + 0x1E8300001E84, + 0x1E8500001E86, + 0x1E8700001E88, + 0x1E8900001E8A, + 0x1E8B00001E8C, + 0x1E8D00001E8E, + 0x1E8F00001E90, + 0x1E9100001E92, + 0x1E9300001E94, + 0x1E9500001E9A, + 0x1E9C00001E9E, + 0x1E9F00001EA0, + 0x1EA100001EA2, + 0x1EA300001EA4, + 0x1EA500001EA6, + 0x1EA700001EA8, + 0x1EA900001EAA, + 0x1EAB00001EAC, + 0x1EAD00001EAE, + 0x1EAF00001EB0, + 0x1EB100001EB2, + 0x1EB300001EB4, + 0x1EB500001EB6, + 0x1EB700001EB8, + 0x1EB900001EBA, + 0x1EBB00001EBC, + 0x1EBD00001EBE, + 0x1EBF00001EC0, + 0x1EC100001EC2, + 0x1EC300001EC4, + 0x1EC500001EC6, + 0x1EC700001EC8, + 0x1EC900001ECA, + 0x1ECB00001ECC, + 0x1ECD00001ECE, + 0x1ECF00001ED0, + 0x1ED100001ED2, + 0x1ED300001ED4, + 0x1ED500001ED6, + 0x1ED700001ED8, + 0x1ED900001EDA, + 0x1EDB00001EDC, + 0x1EDD00001EDE, + 0x1EDF00001EE0, + 0x1EE100001EE2, + 0x1EE300001EE4, + 0x1EE500001EE6, + 0x1EE700001EE8, + 0x1EE900001EEA, + 0x1EEB00001EEC, + 0x1EED00001EEE, + 0x1EEF00001EF0, + 0x1EF100001EF2, + 0x1EF300001EF4, + 0x1EF500001EF6, + 0x1EF700001EF8, + 0x1EF900001EFA, + 0x1EFB00001EFC, + 0x1EFD00001EFE, + 0x1EFF00001F08, + 0x1F1000001F16, + 0x1F2000001F28, + 0x1F3000001F38, + 0x1F4000001F46, + 0x1F5000001F58, + 0x1F6000001F68, + 0x1F7000001F71, + 0x1F7200001F73, + 0x1F7400001F75, + 0x1F7600001F77, + 0x1F7800001F79, + 0x1F7A00001F7B, + 0x1F7C00001F7D, + 0x1FB000001FB2, + 0x1FB600001FB7, + 0x1FC600001FC7, + 0x1FD000001FD3, + 0x1FD600001FD8, + 0x1FE000001FE3, + 0x1FE400001FE8, + 0x1FF600001FF7, + 0x214E0000214F, + 0x218400002185, + 0x2C3000002C60, + 0x2C6100002C62, + 0x2C6500002C67, + 0x2C6800002C69, + 0x2C6A00002C6B, + 0x2C6C00002C6D, + 0x2C7100002C72, + 0x2C7300002C75, + 0x2C7600002C7C, + 0x2C8100002C82, + 0x2C8300002C84, + 0x2C8500002C86, + 0x2C8700002C88, + 0x2C8900002C8A, + 0x2C8B00002C8C, + 0x2C8D00002C8E, + 0x2C8F00002C90, + 0x2C9100002C92, + 0x2C9300002C94, + 0x2C9500002C96, + 0x2C9700002C98, + 0x2C9900002C9A, + 0x2C9B00002C9C, + 0x2C9D00002C9E, + 0x2C9F00002CA0, + 0x2CA100002CA2, + 0x2CA300002CA4, + 0x2CA500002CA6, + 0x2CA700002CA8, + 0x2CA900002CAA, + 0x2CAB00002CAC, + 0x2CAD00002CAE, + 0x2CAF00002CB0, + 0x2CB100002CB2, + 0x2CB300002CB4, + 0x2CB500002CB6, + 0x2CB700002CB8, + 0x2CB900002CBA, + 0x2CBB00002CBC, + 0x2CBD00002CBE, + 0x2CBF00002CC0, + 0x2CC100002CC2, + 0x2CC300002CC4, + 0x2CC500002CC6, + 0x2CC700002CC8, + 0x2CC900002CCA, + 0x2CCB00002CCC, + 0x2CCD00002CCE, + 0x2CCF00002CD0, + 0x2CD100002CD2, + 0x2CD300002CD4, + 0x2CD500002CD6, + 0x2CD700002CD8, + 0x2CD900002CDA, + 0x2CDB00002CDC, + 0x2CDD00002CDE, + 0x2CDF00002CE0, + 0x2CE100002CE2, + 0x2CE300002CE5, + 0x2CEC00002CED, + 0x2CEE00002CF2, + 0x2CF300002CF4, + 0x2D0000002D26, + 0x2D2700002D28, + 0x2D2D00002D2E, + 0x2D3000002D68, + 0x2D7F00002D97, + 0x2DA000002DA7, + 0x2DA800002DAF, + 0x2DB000002DB7, + 0x2DB800002DBF, + 0x2DC000002DC7, + 0x2DC800002DCF, + 0x2DD000002DD7, + 0x2DD800002DDF, + 0x2DE000002E00, + 0x2E2F00002E30, + 0x300500003008, + 0x302A0000302E, + 0x303C0000303D, + 0x304100003097, + 0x30990000309B, + 0x309D0000309F, + 0x30A1000030FB, + 0x30FC000030FF, + 0x310500003130, + 0x31A0000031C0, + 0x31F000003200, + 0x340000004DC0, + 0x4E000000A48D, + 0xA4D00000A4FE, + 0xA5000000A60D, + 0xA6100000A62C, + 0xA6410000A642, + 0xA6430000A644, + 0xA6450000A646, + 0xA6470000A648, + 0xA6490000A64A, + 0xA64B0000A64C, + 0xA64D0000A64E, + 0xA64F0000A650, + 0xA6510000A652, + 0xA6530000A654, + 0xA6550000A656, + 0xA6570000A658, + 0xA6590000A65A, + 0xA65B0000A65C, + 0xA65D0000A65E, + 0xA65F0000A660, + 0xA6610000A662, + 0xA6630000A664, + 0xA6650000A666, + 0xA6670000A668, + 0xA6690000A66A, + 0xA66B0000A66C, + 0xA66D0000A670, + 0xA6740000A67E, + 0xA67F0000A680, + 0xA6810000A682, + 0xA6830000A684, + 0xA6850000A686, + 0xA6870000A688, + 0xA6890000A68A, + 0xA68B0000A68C, + 0xA68D0000A68E, + 0xA68F0000A690, + 0xA6910000A692, + 0xA6930000A694, + 0xA6950000A696, + 0xA6970000A698, + 0xA6990000A69A, + 0xA69B0000A69C, + 0xA69E0000A6E6, + 0xA6F00000A6F2, + 0xA7170000A720, + 0xA7230000A724, + 0xA7250000A726, + 0xA7270000A728, + 0xA7290000A72A, + 0xA72B0000A72C, + 0xA72D0000A72E, + 0xA72F0000A732, + 0xA7330000A734, + 0xA7350000A736, + 0xA7370000A738, + 0xA7390000A73A, + 0xA73B0000A73C, + 0xA73D0000A73E, + 0xA73F0000A740, + 0xA7410000A742, + 0xA7430000A744, + 0xA7450000A746, + 0xA7470000A748, + 0xA7490000A74A, + 0xA74B0000A74C, + 0xA74D0000A74E, + 0xA74F0000A750, + 0xA7510000A752, + 0xA7530000A754, + 0xA7550000A756, + 0xA7570000A758, + 0xA7590000A75A, + 0xA75B0000A75C, + 0xA75D0000A75E, + 0xA75F0000A760, + 0xA7610000A762, + 0xA7630000A764, + 0xA7650000A766, + 0xA7670000A768, + 0xA7690000A76A, + 0xA76B0000A76C, + 0xA76D0000A76E, + 0xA76F0000A770, + 0xA7710000A779, + 0xA77A0000A77B, + 0xA77C0000A77D, + 0xA77F0000A780, + 0xA7810000A782, + 0xA7830000A784, + 0xA7850000A786, + 0xA7870000A789, + 0xA78C0000A78D, + 0xA78E0000A790, + 0xA7910000A792, + 0xA7930000A796, + 0xA7970000A798, + 0xA7990000A79A, + 0xA79B0000A79C, + 0xA79D0000A79E, + 0xA79F0000A7A0, + 0xA7A10000A7A2, + 0xA7A30000A7A4, + 0xA7A50000A7A6, + 0xA7A70000A7A8, + 0xA7A90000A7AA, + 0xA7AF0000A7B0, + 0xA7B50000A7B6, + 0xA7B70000A7B8, + 0xA7B90000A7BA, + 0xA7BB0000A7BC, + 0xA7BD0000A7BE, + 0xA7BF0000A7C0, + 0xA7C10000A7C2, + 0xA7C30000A7C4, + 0xA7C80000A7C9, + 0xA7CA0000A7CB, + 0xA7D10000A7D2, + 0xA7D30000A7D4, + 0xA7D50000A7D6, + 0xA7D70000A7D8, + 0xA7D90000A7DA, + 0xA7F60000A7F8, + 0xA7FA0000A828, + 0xA82C0000A82D, + 0xA8400000A874, + 0xA8800000A8C6, + 0xA8D00000A8DA, + 0xA8E00000A8F8, + 0xA8FB0000A8FC, + 0xA8FD0000A92E, + 0xA9300000A954, + 0xA9800000A9C1, + 0xA9CF0000A9DA, + 0xA9E00000A9FF, + 0xAA000000AA37, + 0xAA400000AA4E, + 0xAA500000AA5A, + 0xAA600000AA77, + 0xAA7A0000AAC3, + 0xAADB0000AADE, + 0xAAE00000AAF0, + 0xAAF20000AAF7, + 0xAB010000AB07, + 0xAB090000AB0F, + 0xAB110000AB17, + 0xAB200000AB27, + 0xAB280000AB2F, + 0xAB300000AB5B, + 0xAB600000AB69, + 0xABC00000ABEB, + 0xABEC0000ABEE, + 0xABF00000ABFA, + 0xAC000000D7A4, + 0xFA0E0000FA10, + 0xFA110000FA12, + 0xFA130000FA15, + 0xFA1F0000FA20, + 0xFA210000FA22, + 0xFA230000FA25, + 0xFA270000FA2A, + 0xFB1E0000FB1F, + 0xFE200000FE30, + 0xFE730000FE74, + 0x100000001000C, + 0x1000D00010027, + 0x100280001003B, + 0x1003C0001003E, + 0x1003F0001004E, + 0x100500001005E, + 0x10080000100FB, + 0x101FD000101FE, + 0x102800001029D, + 0x102A0000102D1, + 0x102E0000102E1, + 0x1030000010320, + 0x1032D00010341, + 0x103420001034A, + 0x103500001037B, + 0x103800001039E, + 0x103A0000103C4, + 0x103C8000103D0, + 0x104280001049E, + 0x104A0000104AA, + 0x104D8000104FC, + 0x1050000010528, + 0x1053000010564, + 0x10597000105A2, + 0x105A3000105B2, + 0x105B3000105BA, + 0x105BB000105BD, + 0x1060000010737, + 0x1074000010756, + 0x1076000010768, + 0x1078000010781, + 0x1080000010806, + 0x1080800010809, + 0x1080A00010836, + 0x1083700010839, + 0x1083C0001083D, + 0x1083F00010856, + 0x1086000010877, + 0x108800001089F, + 0x108E0000108F3, + 0x108F4000108F6, + 0x1090000010916, + 0x109200001093A, + 0x10980000109B8, + 0x109BE000109C0, + 0x10A0000010A04, + 0x10A0500010A07, + 0x10A0C00010A14, + 0x10A1500010A18, + 0x10A1900010A36, + 0x10A3800010A3B, + 0x10A3F00010A40, + 0x10A6000010A7D, + 0x10A8000010A9D, + 0x10AC000010AC8, + 0x10AC900010AE7, + 0x10B0000010B36, + 0x10B4000010B56, + 0x10B6000010B73, + 0x10B8000010B92, + 0x10C0000010C49, + 0x10CC000010CF3, + 0x10D0000010D28, + 0x10D3000010D3A, + 0x10E8000010EAA, + 0x10EAB00010EAD, + 0x10EB000010EB2, + 0x10EFD00010F1D, + 0x10F2700010F28, + 0x10F3000010F51, + 0x10F7000010F86, + 0x10FB000010FC5, + 0x10FE000010FF7, + 0x1100000011047, + 0x1106600011076, + 0x1107F000110BB, + 0x110C2000110C3, + 0x110D0000110E9, + 0x110F0000110FA, + 0x1110000011135, + 0x1113600011140, + 0x1114400011148, + 0x1115000011174, + 0x1117600011177, + 0x11180000111C5, + 0x111C9000111CD, + 0x111CE000111DB, + 0x111DC000111DD, + 0x1120000011212, + 0x1121300011238, + 0x1123E00011242, + 0x1128000011287, + 0x1128800011289, + 0x1128A0001128E, + 0x1128F0001129E, + 0x1129F000112A9, + 0x112B0000112EB, + 0x112F0000112FA, + 0x1130000011304, + 0x113050001130D, + 0x1130F00011311, + 0x1131300011329, + 0x1132A00011331, + 0x1133200011334, + 0x113350001133A, + 0x1133B00011345, + 0x1134700011349, + 0x1134B0001134E, + 0x1135000011351, + 0x1135700011358, + 0x1135D00011364, + 0x113660001136D, + 0x1137000011375, + 0x114000001144B, + 0x114500001145A, + 0x1145E00011462, + 0x11480000114C6, + 0x114C7000114C8, + 0x114D0000114DA, + 0x11580000115B6, + 0x115B8000115C1, + 0x115D8000115DE, + 0x1160000011641, + 0x1164400011645, + 0x116500001165A, + 0x11680000116B9, + 0x116C0000116CA, + 0x117000001171B, + 0x1171D0001172C, + 0x117300001173A, + 0x1174000011747, + 0x118000001183B, + 0x118C0000118EA, + 0x118FF00011907, + 0x119090001190A, + 0x1190C00011914, + 0x1191500011917, + 0x1191800011936, + 0x1193700011939, + 0x1193B00011944, + 0x119500001195A, + 0x119A0000119A8, + 0x119AA000119D8, + 0x119DA000119E2, + 0x119E3000119E5, + 0x11A0000011A3F, + 0x11A4700011A48, + 0x11A5000011A9A, + 0x11A9D00011A9E, + 0x11AB000011AF9, + 0x11C0000011C09, + 0x11C0A00011C37, + 0x11C3800011C41, + 0x11C5000011C5A, + 0x11C7200011C90, + 0x11C9200011CA8, + 0x11CA900011CB7, + 0x11D0000011D07, + 0x11D0800011D0A, + 0x11D0B00011D37, + 0x11D3A00011D3B, + 0x11D3C00011D3E, + 0x11D3F00011D48, + 0x11D5000011D5A, + 0x11D6000011D66, + 0x11D6700011D69, + 0x11D6A00011D8F, + 0x11D9000011D92, + 0x11D9300011D99, + 0x11DA000011DAA, + 0x11EE000011EF7, + 0x11F0000011F11, + 0x11F1200011F3B, + 0x11F3E00011F43, + 0x11F5000011F5A, + 0x11FB000011FB1, + 0x120000001239A, + 0x1248000012544, + 0x12F9000012FF1, + 0x1300000013430, + 0x1344000013456, + 0x1440000014647, + 0x1680000016A39, + 0x16A4000016A5F, + 0x16A6000016A6A, + 0x16A7000016ABF, + 0x16AC000016ACA, + 0x16AD000016AEE, + 0x16AF000016AF5, + 0x16B0000016B37, + 0x16B4000016B44, + 0x16B5000016B5A, + 0x16B6300016B78, + 0x16B7D00016B90, + 0x16E6000016E80, + 0x16F0000016F4B, + 0x16F4F00016F88, + 0x16F8F00016FA0, + 0x16FE000016FE2, + 0x16FE300016FE5, + 0x16FF000016FF2, + 0x17000000187F8, + 0x1880000018CD6, + 0x18D0000018D09, + 0x1AFF00001AFF4, + 0x1AFF50001AFFC, + 0x1AFFD0001AFFF, + 0x1B0000001B123, + 0x1B1320001B133, + 0x1B1500001B153, + 0x1B1550001B156, + 0x1B1640001B168, + 0x1B1700001B2FC, + 0x1BC000001BC6B, + 0x1BC700001BC7D, + 0x1BC800001BC89, + 0x1BC900001BC9A, + 0x1BC9D0001BC9F, + 0x1CF000001CF2E, + 0x1CF300001CF47, + 0x1DA000001DA37, + 0x1DA3B0001DA6D, + 0x1DA750001DA76, + 0x1DA840001DA85, + 0x1DA9B0001DAA0, + 0x1DAA10001DAB0, + 0x1DF000001DF1F, + 0x1DF250001DF2B, + 0x1E0000001E007, + 0x1E0080001E019, + 0x1E01B0001E022, + 0x1E0230001E025, + 0x1E0260001E02B, + 0x1E08F0001E090, + 0x1E1000001E12D, + 0x1E1300001E13E, + 0x1E1400001E14A, + 0x1E14E0001E14F, + 0x1E2900001E2AF, + 0x1E2C00001E2FA, + 0x1E4D00001E4FA, + 0x1E7E00001E7E7, + 0x1E7E80001E7EC, + 0x1E7ED0001E7EF, + 0x1E7F00001E7FF, + 0x1E8000001E8C5, + 0x1E8D00001E8D7, + 0x1E9220001E94C, + 0x1E9500001E95A, + 0x200000002A6E0, + 0x2A7000002B73A, + 0x2B7400002B81E, + 0x2B8200002CEA2, + 0x2CEB00002EBE1, + 0x2EBF00002EE5E, + 0x300000003134B, + 0x31350000323B0, + ), + "CONTEXTJ": (0x200C0000200E,), + "CONTEXTO": ( + 0xB7000000B8, + 0x37500000376, + 0x5F3000005F5, + 0x6600000066A, + 0x6F0000006FA, + 0x30FB000030FC, + ), +} diff --git a/env/lib/python3.12/site-packages/idna/intranges.py b/env/lib/python3.12/site-packages/idna/intranges.py new file mode 100644 index 0000000..7bfaa8d --- /dev/null +++ b/env/lib/python3.12/site-packages/idna/intranges.py @@ -0,0 +1,57 @@ +""" +Given a list of integers, made up of (hopefully) a small number of long runs +of consecutive integers, compute a representation of the form +((start1, end1), (start2, end2) ...). Then answer the question "was x present +in the original list?" in time O(log(# runs)). +""" + +import bisect +from typing import List, Tuple + + +def intranges_from_list(list_: List[int]) -> Tuple[int, ...]: + """Represent a list of integers as a sequence of ranges: + ((start_0, end_0), (start_1, end_1), ...), such that the original + integers are exactly those x such that start_i <= x < end_i for some i. + + Ranges are encoded as single integers (start << 32 | end), not as tuples. + """ + + sorted_list = sorted(list_) + ranges = [] + last_write = -1 + for i in range(len(sorted_list)): + if i + 1 < len(sorted_list): + if sorted_list[i] == sorted_list[i + 1] - 1: + continue + current_range = sorted_list[last_write + 1 : i + 1] + ranges.append(_encode_range(current_range[0], current_range[-1] + 1)) + last_write = i + + return tuple(ranges) + + +def _encode_range(start: int, end: int) -> int: + return (start << 32) | end + + +def _decode_range(r: int) -> Tuple[int, int]: + return (r >> 32), (r & ((1 << 32) - 1)) + + +def intranges_contain(int_: int, ranges: Tuple[int, ...]) -> bool: + """Determine if `int_` falls into one of the ranges in `ranges`.""" + tuple_ = _encode_range(int_, 0) + pos = bisect.bisect_left(ranges, tuple_) + # we could be immediately ahead of a tuple (start, end) + # with start < int_ <= end + if pos > 0: + left, right = _decode_range(ranges[pos - 1]) + if left <= int_ < right: + return True + # or we could be immediately behind a tuple (int_, end) + if pos < len(ranges): + left, _ = _decode_range(ranges[pos]) + if left == int_: + return True + return False diff --git a/env/lib/python3.12/site-packages/idna/package_data.py b/env/lib/python3.12/site-packages/idna/package_data.py new file mode 100644 index 0000000..514ff7e --- /dev/null +++ b/env/lib/python3.12/site-packages/idna/package_data.py @@ -0,0 +1 @@ +__version__ = "3.10" diff --git a/env/lib/python3.12/site-packages/idna/py.typed b/env/lib/python3.12/site-packages/idna/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/env/lib/python3.12/site-packages/idna/uts46data.py b/env/lib/python3.12/site-packages/idna/uts46data.py new file mode 100644 index 0000000..eb89432 --- /dev/null +++ b/env/lib/python3.12/site-packages/idna/uts46data.py @@ -0,0 +1,8681 @@ +# This file is automatically generated by tools/idna-data +# vim: set fileencoding=utf-8 : + +from typing import List, Tuple, Union + +"""IDNA Mapping Table from UTS46.""" + + +__version__ = "15.1.0" + + +def _seg_0() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x0, "3"), + (0x1, "3"), + (0x2, "3"), + (0x3, "3"), + (0x4, "3"), + (0x5, "3"), + (0x6, "3"), + (0x7, "3"), + (0x8, "3"), + (0x9, "3"), + (0xA, "3"), + (0xB, "3"), + (0xC, "3"), + (0xD, "3"), + (0xE, "3"), + (0xF, "3"), + (0x10, "3"), + (0x11, "3"), + (0x12, "3"), + (0x13, "3"), + (0x14, "3"), + (0x15, "3"), + (0x16, "3"), + (0x17, "3"), + (0x18, "3"), + (0x19, "3"), + (0x1A, "3"), + (0x1B, "3"), + (0x1C, "3"), + (0x1D, "3"), + (0x1E, "3"), + (0x1F, "3"), + (0x20, "3"), + (0x21, "3"), + (0x22, "3"), + (0x23, "3"), + (0x24, "3"), + (0x25, "3"), + (0x26, "3"), + (0x27, "3"), + (0x28, "3"), + (0x29, "3"), + (0x2A, "3"), + (0x2B, "3"), + (0x2C, "3"), + (0x2D, "V"), + (0x2E, "V"), + (0x2F, "3"), + (0x30, "V"), + (0x31, "V"), + (0x32, "V"), + (0x33, "V"), + (0x34, "V"), + (0x35, "V"), + (0x36, "V"), + (0x37, "V"), + (0x38, "V"), + (0x39, "V"), + (0x3A, "3"), + (0x3B, "3"), + (0x3C, "3"), + (0x3D, "3"), + (0x3E, "3"), + (0x3F, "3"), + (0x40, "3"), + (0x41, "M", "a"), + (0x42, "M", "b"), + (0x43, "M", "c"), + (0x44, "M", "d"), + (0x45, "M", "e"), + (0x46, "M", "f"), + (0x47, "M", "g"), + (0x48, "M", "h"), + (0x49, "M", "i"), + (0x4A, "M", "j"), + (0x4B, "M", "k"), + (0x4C, "M", "l"), + (0x4D, "M", "m"), + (0x4E, "M", "n"), + (0x4F, "M", "o"), + (0x50, "M", "p"), + (0x51, "M", "q"), + (0x52, "M", "r"), + (0x53, "M", "s"), + (0x54, "M", "t"), + (0x55, "M", "u"), + (0x56, "M", "v"), + (0x57, "M", "w"), + (0x58, "M", "x"), + (0x59, "M", "y"), + (0x5A, "M", "z"), + (0x5B, "3"), + (0x5C, "3"), + (0x5D, "3"), + (0x5E, "3"), + (0x5F, "3"), + (0x60, "3"), + (0x61, "V"), + (0x62, "V"), + (0x63, "V"), + ] + + +def _seg_1() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x64, "V"), + (0x65, "V"), + (0x66, "V"), + (0x67, "V"), + (0x68, "V"), + (0x69, "V"), + (0x6A, "V"), + (0x6B, "V"), + (0x6C, "V"), + (0x6D, "V"), + (0x6E, "V"), + (0x6F, "V"), + (0x70, "V"), + (0x71, "V"), + (0x72, "V"), + (0x73, "V"), + (0x74, "V"), + (0x75, "V"), + (0x76, "V"), + (0x77, "V"), + (0x78, "V"), + (0x79, "V"), + (0x7A, "V"), + (0x7B, "3"), + (0x7C, "3"), + (0x7D, "3"), + (0x7E, "3"), + (0x7F, "3"), + (0x80, "X"), + (0x81, "X"), + (0x82, "X"), + (0x83, "X"), + (0x84, "X"), + (0x85, "X"), + (0x86, "X"), + (0x87, "X"), + (0x88, "X"), + (0x89, "X"), + (0x8A, "X"), + (0x8B, "X"), + (0x8C, "X"), + (0x8D, "X"), + (0x8E, "X"), + (0x8F, "X"), + (0x90, "X"), + (0x91, "X"), + (0x92, "X"), + (0x93, "X"), + (0x94, "X"), + (0x95, "X"), + (0x96, "X"), + (0x97, "X"), + (0x98, "X"), + (0x99, "X"), + (0x9A, "X"), + (0x9B, "X"), + (0x9C, "X"), + (0x9D, "X"), + (0x9E, "X"), + (0x9F, "X"), + (0xA0, "3", " "), + (0xA1, "V"), + (0xA2, "V"), + (0xA3, "V"), + (0xA4, "V"), + (0xA5, "V"), + (0xA6, "V"), + (0xA7, "V"), + (0xA8, "3", " ̈"), + (0xA9, "V"), + (0xAA, "M", "a"), + (0xAB, "V"), + (0xAC, "V"), + (0xAD, "I"), + (0xAE, "V"), + (0xAF, "3", " ̄"), + (0xB0, "V"), + (0xB1, "V"), + (0xB2, "M", "2"), + (0xB3, "M", "3"), + (0xB4, "3", " ́"), + (0xB5, "M", "μ"), + (0xB6, "V"), + (0xB7, "V"), + (0xB8, "3", " ̧"), + (0xB9, "M", "1"), + (0xBA, "M", "o"), + (0xBB, "V"), + (0xBC, "M", "1⁄4"), + (0xBD, "M", "1⁄2"), + (0xBE, "M", "3⁄4"), + (0xBF, "V"), + (0xC0, "M", "à"), + (0xC1, "M", "á"), + (0xC2, "M", "â"), + (0xC3, "M", "ã"), + (0xC4, "M", "ä"), + (0xC5, "M", "å"), + (0xC6, "M", "æ"), + (0xC7, "M", "ç"), + ] + + +def _seg_2() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xC8, "M", "è"), + (0xC9, "M", "é"), + (0xCA, "M", "ê"), + (0xCB, "M", "ë"), + (0xCC, "M", "ì"), + (0xCD, "M", "í"), + (0xCE, "M", "î"), + (0xCF, "M", "ï"), + (0xD0, "M", "ð"), + (0xD1, "M", "ñ"), + (0xD2, "M", "ò"), + (0xD3, "M", "ó"), + (0xD4, "M", "ô"), + (0xD5, "M", "õ"), + (0xD6, "M", "ö"), + (0xD7, "V"), + (0xD8, "M", "ø"), + (0xD9, "M", "ù"), + (0xDA, "M", "ú"), + (0xDB, "M", "û"), + (0xDC, "M", "ü"), + (0xDD, "M", "ý"), + (0xDE, "M", "þ"), + (0xDF, "D", "ss"), + (0xE0, "V"), + (0xE1, "V"), + (0xE2, "V"), + (0xE3, "V"), + (0xE4, "V"), + (0xE5, "V"), + (0xE6, "V"), + (0xE7, "V"), + (0xE8, "V"), + (0xE9, "V"), + (0xEA, "V"), + (0xEB, "V"), + (0xEC, "V"), + (0xED, "V"), + (0xEE, "V"), + (0xEF, "V"), + (0xF0, "V"), + (0xF1, "V"), + (0xF2, "V"), + (0xF3, "V"), + (0xF4, "V"), + (0xF5, "V"), + (0xF6, "V"), + (0xF7, "V"), + (0xF8, "V"), + (0xF9, "V"), + (0xFA, "V"), + (0xFB, "V"), + (0xFC, "V"), + (0xFD, "V"), + (0xFE, "V"), + (0xFF, "V"), + (0x100, "M", "ā"), + (0x101, "V"), + (0x102, "M", "ă"), + (0x103, "V"), + (0x104, "M", "ą"), + (0x105, "V"), + (0x106, "M", "ć"), + (0x107, "V"), + (0x108, "M", "ĉ"), + (0x109, "V"), + (0x10A, "M", "ċ"), + (0x10B, "V"), + (0x10C, "M", "č"), + (0x10D, "V"), + (0x10E, "M", "ď"), + (0x10F, "V"), + (0x110, "M", "đ"), + (0x111, "V"), + (0x112, "M", "ē"), + (0x113, "V"), + (0x114, "M", "ĕ"), + (0x115, "V"), + (0x116, "M", "ė"), + (0x117, "V"), + (0x118, "M", "ę"), + (0x119, "V"), + (0x11A, "M", "ě"), + (0x11B, "V"), + (0x11C, "M", "ĝ"), + (0x11D, "V"), + (0x11E, "M", "ğ"), + (0x11F, "V"), + (0x120, "M", "ġ"), + (0x121, "V"), + (0x122, "M", "ģ"), + (0x123, "V"), + (0x124, "M", "ĥ"), + (0x125, "V"), + (0x126, "M", "ħ"), + (0x127, "V"), + (0x128, "M", "ĩ"), + (0x129, "V"), + (0x12A, "M", "ī"), + (0x12B, "V"), + ] + + +def _seg_3() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x12C, "M", "ĭ"), + (0x12D, "V"), + (0x12E, "M", "į"), + (0x12F, "V"), + (0x130, "M", "i̇"), + (0x131, "V"), + (0x132, "M", "ij"), + (0x134, "M", "ĵ"), + (0x135, "V"), + (0x136, "M", "ķ"), + (0x137, "V"), + (0x139, "M", "ĺ"), + (0x13A, "V"), + (0x13B, "M", "ļ"), + (0x13C, "V"), + (0x13D, "M", "ľ"), + (0x13E, "V"), + (0x13F, "M", "l·"), + (0x141, "M", "ł"), + (0x142, "V"), + (0x143, "M", "ń"), + (0x144, "V"), + (0x145, "M", "ņ"), + (0x146, "V"), + (0x147, "M", "ň"), + (0x148, "V"), + (0x149, "M", "ʼn"), + (0x14A, "M", "ŋ"), + (0x14B, "V"), + (0x14C, "M", "ō"), + (0x14D, "V"), + (0x14E, "M", "ŏ"), + (0x14F, "V"), + (0x150, "M", "ő"), + (0x151, "V"), + (0x152, "M", "œ"), + (0x153, "V"), + (0x154, "M", "ŕ"), + (0x155, "V"), + (0x156, "M", "ŗ"), + (0x157, "V"), + (0x158, "M", "ř"), + (0x159, "V"), + (0x15A, "M", "ś"), + (0x15B, "V"), + (0x15C, "M", "ŝ"), + (0x15D, "V"), + (0x15E, "M", "ş"), + (0x15F, "V"), + (0x160, "M", "š"), + (0x161, "V"), + (0x162, "M", "ţ"), + (0x163, "V"), + (0x164, "M", "ť"), + (0x165, "V"), + (0x166, "M", "ŧ"), + (0x167, "V"), + (0x168, "M", "ũ"), + (0x169, "V"), + (0x16A, "M", "ū"), + (0x16B, "V"), + (0x16C, "M", "ŭ"), + (0x16D, "V"), + (0x16E, "M", "ů"), + (0x16F, "V"), + (0x170, "M", "ű"), + (0x171, "V"), + (0x172, "M", "ų"), + (0x173, "V"), + (0x174, "M", "ŵ"), + (0x175, "V"), + (0x176, "M", "ŷ"), + (0x177, "V"), + (0x178, "M", "ÿ"), + (0x179, "M", "ź"), + (0x17A, "V"), + (0x17B, "M", "ż"), + (0x17C, "V"), + (0x17D, "M", "ž"), + (0x17E, "V"), + (0x17F, "M", "s"), + (0x180, "V"), + (0x181, "M", "ɓ"), + (0x182, "M", "ƃ"), + (0x183, "V"), + (0x184, "M", "ƅ"), + (0x185, "V"), + (0x186, "M", "ɔ"), + (0x187, "M", "ƈ"), + (0x188, "V"), + (0x189, "M", "ɖ"), + (0x18A, "M", "ɗ"), + (0x18B, "M", "ƌ"), + (0x18C, "V"), + (0x18E, "M", "ǝ"), + (0x18F, "M", "ə"), + (0x190, "M", "ɛ"), + (0x191, "M", "ƒ"), + (0x192, "V"), + (0x193, "M", "ɠ"), + ] + + +def _seg_4() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x194, "M", "ɣ"), + (0x195, "V"), + (0x196, "M", "ɩ"), + (0x197, "M", "ɨ"), + (0x198, "M", "ƙ"), + (0x199, "V"), + (0x19C, "M", "ɯ"), + (0x19D, "M", "ɲ"), + (0x19E, "V"), + (0x19F, "M", "ɵ"), + (0x1A0, "M", "ơ"), + (0x1A1, "V"), + (0x1A2, "M", "ƣ"), + (0x1A3, "V"), + (0x1A4, "M", "ƥ"), + (0x1A5, "V"), + (0x1A6, "M", "ʀ"), + (0x1A7, "M", "ƨ"), + (0x1A8, "V"), + (0x1A9, "M", "ʃ"), + (0x1AA, "V"), + (0x1AC, "M", "ƭ"), + (0x1AD, "V"), + (0x1AE, "M", "ʈ"), + (0x1AF, "M", "ư"), + (0x1B0, "V"), + (0x1B1, "M", "ʊ"), + (0x1B2, "M", "ʋ"), + (0x1B3, "M", "ƴ"), + (0x1B4, "V"), + (0x1B5, "M", "ƶ"), + (0x1B6, "V"), + (0x1B7, "M", "ʒ"), + (0x1B8, "M", "ƹ"), + (0x1B9, "V"), + (0x1BC, "M", "ƽ"), + (0x1BD, "V"), + (0x1C4, "M", "dž"), + (0x1C7, "M", "lj"), + (0x1CA, "M", "nj"), + (0x1CD, "M", "ǎ"), + (0x1CE, "V"), + (0x1CF, "M", "ǐ"), + (0x1D0, "V"), + (0x1D1, "M", "ǒ"), + (0x1D2, "V"), + (0x1D3, "M", "ǔ"), + (0x1D4, "V"), + (0x1D5, "M", "ǖ"), + (0x1D6, "V"), + (0x1D7, "M", "ǘ"), + (0x1D8, "V"), + (0x1D9, "M", "ǚ"), + (0x1DA, "V"), + (0x1DB, "M", "ǜ"), + (0x1DC, "V"), + (0x1DE, "M", "ǟ"), + (0x1DF, "V"), + (0x1E0, "M", "ǡ"), + (0x1E1, "V"), + (0x1E2, "M", "ǣ"), + (0x1E3, "V"), + (0x1E4, "M", "ǥ"), + (0x1E5, "V"), + (0x1E6, "M", "ǧ"), + (0x1E7, "V"), + (0x1E8, "M", "ǩ"), + (0x1E9, "V"), + (0x1EA, "M", "ǫ"), + (0x1EB, "V"), + (0x1EC, "M", "ǭ"), + (0x1ED, "V"), + (0x1EE, "M", "ǯ"), + (0x1EF, "V"), + (0x1F1, "M", "dz"), + (0x1F4, "M", "ǵ"), + (0x1F5, "V"), + (0x1F6, "M", "ƕ"), + (0x1F7, "M", "ƿ"), + (0x1F8, "M", "ǹ"), + (0x1F9, "V"), + (0x1FA, "M", "ǻ"), + (0x1FB, "V"), + (0x1FC, "M", "ǽ"), + (0x1FD, "V"), + (0x1FE, "M", "ǿ"), + (0x1FF, "V"), + (0x200, "M", "ȁ"), + (0x201, "V"), + (0x202, "M", "ȃ"), + (0x203, "V"), + (0x204, "M", "ȅ"), + (0x205, "V"), + (0x206, "M", "ȇ"), + (0x207, "V"), + (0x208, "M", "ȉ"), + (0x209, "V"), + (0x20A, "M", "ȋ"), + (0x20B, "V"), + (0x20C, "M", "ȍ"), + ] + + +def _seg_5() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x20D, "V"), + (0x20E, "M", "ȏ"), + (0x20F, "V"), + (0x210, "M", "ȑ"), + (0x211, "V"), + (0x212, "M", "ȓ"), + (0x213, "V"), + (0x214, "M", "ȕ"), + (0x215, "V"), + (0x216, "M", "ȗ"), + (0x217, "V"), + (0x218, "M", "ș"), + (0x219, "V"), + (0x21A, "M", "ț"), + (0x21B, "V"), + (0x21C, "M", "ȝ"), + (0x21D, "V"), + (0x21E, "M", "ȟ"), + (0x21F, "V"), + (0x220, "M", "ƞ"), + (0x221, "V"), + (0x222, "M", "ȣ"), + (0x223, "V"), + (0x224, "M", "ȥ"), + (0x225, "V"), + (0x226, "M", "ȧ"), + (0x227, "V"), + (0x228, "M", "ȩ"), + (0x229, "V"), + (0x22A, "M", "ȫ"), + (0x22B, "V"), + (0x22C, "M", "ȭ"), + (0x22D, "V"), + (0x22E, "M", "ȯ"), + (0x22F, "V"), + (0x230, "M", "ȱ"), + (0x231, "V"), + (0x232, "M", "ȳ"), + (0x233, "V"), + (0x23A, "M", "ⱥ"), + (0x23B, "M", "ȼ"), + (0x23C, "V"), + (0x23D, "M", "ƚ"), + (0x23E, "M", "ⱦ"), + (0x23F, "V"), + (0x241, "M", "ɂ"), + (0x242, "V"), + (0x243, "M", "ƀ"), + (0x244, "M", "ʉ"), + (0x245, "M", "ʌ"), + (0x246, "M", "ɇ"), + (0x247, "V"), + (0x248, "M", "ɉ"), + (0x249, "V"), + (0x24A, "M", "ɋ"), + (0x24B, "V"), + (0x24C, "M", "ɍ"), + (0x24D, "V"), + (0x24E, "M", "ɏ"), + (0x24F, "V"), + (0x2B0, "M", "h"), + (0x2B1, "M", "ɦ"), + (0x2B2, "M", "j"), + (0x2B3, "M", "r"), + (0x2B4, "M", "ɹ"), + (0x2B5, "M", "ɻ"), + (0x2B6, "M", "ʁ"), + (0x2B7, "M", "w"), + (0x2B8, "M", "y"), + (0x2B9, "V"), + (0x2D8, "3", " ̆"), + (0x2D9, "3", " ̇"), + (0x2DA, "3", " ̊"), + (0x2DB, "3", " ̨"), + (0x2DC, "3", " ̃"), + (0x2DD, "3", " ̋"), + (0x2DE, "V"), + (0x2E0, "M", "ɣ"), + (0x2E1, "M", "l"), + (0x2E2, "M", "s"), + (0x2E3, "M", "x"), + (0x2E4, "M", "ʕ"), + (0x2E5, "V"), + (0x340, "M", "̀"), + (0x341, "M", "́"), + (0x342, "V"), + (0x343, "M", "̓"), + (0x344, "M", "̈́"), + (0x345, "M", "ι"), + (0x346, "V"), + (0x34F, "I"), + (0x350, "V"), + (0x370, "M", "ͱ"), + (0x371, "V"), + (0x372, "M", "ͳ"), + (0x373, "V"), + (0x374, "M", "ʹ"), + (0x375, "V"), + (0x376, "M", "ͷ"), + (0x377, "V"), + ] + + +def _seg_6() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x378, "X"), + (0x37A, "3", " ι"), + (0x37B, "V"), + (0x37E, "3", ";"), + (0x37F, "M", "ϳ"), + (0x380, "X"), + (0x384, "3", " ́"), + (0x385, "3", " ̈́"), + (0x386, "M", "ά"), + (0x387, "M", "·"), + (0x388, "M", "έ"), + (0x389, "M", "ή"), + (0x38A, "M", "ί"), + (0x38B, "X"), + (0x38C, "M", "ό"), + (0x38D, "X"), + (0x38E, "M", "ύ"), + (0x38F, "M", "ώ"), + (0x390, "V"), + (0x391, "M", "α"), + (0x392, "M", "β"), + (0x393, "M", "γ"), + (0x394, "M", "δ"), + (0x395, "M", "ε"), + (0x396, "M", "ζ"), + (0x397, "M", "η"), + (0x398, "M", "θ"), + (0x399, "M", "ι"), + (0x39A, "M", "κ"), + (0x39B, "M", "λ"), + (0x39C, "M", "μ"), + (0x39D, "M", "ν"), + (0x39E, "M", "ξ"), + (0x39F, "M", "ο"), + (0x3A0, "M", "π"), + (0x3A1, "M", "ρ"), + (0x3A2, "X"), + (0x3A3, "M", "σ"), + (0x3A4, "M", "τ"), + (0x3A5, "M", "υ"), + (0x3A6, "M", "φ"), + (0x3A7, "M", "χ"), + (0x3A8, "M", "ψ"), + (0x3A9, "M", "ω"), + (0x3AA, "M", "ϊ"), + (0x3AB, "M", "ϋ"), + (0x3AC, "V"), + (0x3C2, "D", "σ"), + (0x3C3, "V"), + (0x3CF, "M", "ϗ"), + (0x3D0, "M", "β"), + (0x3D1, "M", "θ"), + (0x3D2, "M", "υ"), + (0x3D3, "M", "ύ"), + (0x3D4, "M", "ϋ"), + (0x3D5, "M", "φ"), + (0x3D6, "M", "π"), + (0x3D7, "V"), + (0x3D8, "M", "ϙ"), + (0x3D9, "V"), + (0x3DA, "M", "ϛ"), + (0x3DB, "V"), + (0x3DC, "M", "ϝ"), + (0x3DD, "V"), + (0x3DE, "M", "ϟ"), + (0x3DF, "V"), + (0x3E0, "M", "ϡ"), + (0x3E1, "V"), + (0x3E2, "M", "ϣ"), + (0x3E3, "V"), + (0x3E4, "M", "ϥ"), + (0x3E5, "V"), + (0x3E6, "M", "ϧ"), + (0x3E7, "V"), + (0x3E8, "M", "ϩ"), + (0x3E9, "V"), + (0x3EA, "M", "ϫ"), + (0x3EB, "V"), + (0x3EC, "M", "ϭ"), + (0x3ED, "V"), + (0x3EE, "M", "ϯ"), + (0x3EF, "V"), + (0x3F0, "M", "κ"), + (0x3F1, "M", "ρ"), + (0x3F2, "M", "σ"), + (0x3F3, "V"), + (0x3F4, "M", "θ"), + (0x3F5, "M", "ε"), + (0x3F6, "V"), + (0x3F7, "M", "ϸ"), + (0x3F8, "V"), + (0x3F9, "M", "σ"), + (0x3FA, "M", "ϻ"), + (0x3FB, "V"), + (0x3FD, "M", "ͻ"), + (0x3FE, "M", "ͼ"), + (0x3FF, "M", "ͽ"), + (0x400, "M", "ѐ"), + (0x401, "M", "ё"), + (0x402, "M", "ђ"), + ] + + +def _seg_7() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x403, "M", "ѓ"), + (0x404, "M", "є"), + (0x405, "M", "ѕ"), + (0x406, "M", "і"), + (0x407, "M", "ї"), + (0x408, "M", "ј"), + (0x409, "M", "љ"), + (0x40A, "M", "њ"), + (0x40B, "M", "ћ"), + (0x40C, "M", "ќ"), + (0x40D, "M", "ѝ"), + (0x40E, "M", "ў"), + (0x40F, "M", "џ"), + (0x410, "M", "а"), + (0x411, "M", "б"), + (0x412, "M", "в"), + (0x413, "M", "г"), + (0x414, "M", "д"), + (0x415, "M", "е"), + (0x416, "M", "ж"), + (0x417, "M", "з"), + (0x418, "M", "и"), + (0x419, "M", "й"), + (0x41A, "M", "к"), + (0x41B, "M", "л"), + (0x41C, "M", "м"), + (0x41D, "M", "н"), + (0x41E, "M", "о"), + (0x41F, "M", "п"), + (0x420, "M", "р"), + (0x421, "M", "с"), + (0x422, "M", "т"), + (0x423, "M", "у"), + (0x424, "M", "ф"), + (0x425, "M", "х"), + (0x426, "M", "ц"), + (0x427, "M", "ч"), + (0x428, "M", "ш"), + (0x429, "M", "щ"), + (0x42A, "M", "ъ"), + (0x42B, "M", "ы"), + (0x42C, "M", "ь"), + (0x42D, "M", "э"), + (0x42E, "M", "ю"), + (0x42F, "M", "я"), + (0x430, "V"), + (0x460, "M", "ѡ"), + (0x461, "V"), + (0x462, "M", "ѣ"), + (0x463, "V"), + (0x464, "M", "ѥ"), + (0x465, "V"), + (0x466, "M", "ѧ"), + (0x467, "V"), + (0x468, "M", "ѩ"), + (0x469, "V"), + (0x46A, "M", "ѫ"), + (0x46B, "V"), + (0x46C, "M", "ѭ"), + (0x46D, "V"), + (0x46E, "M", "ѯ"), + (0x46F, "V"), + (0x470, "M", "ѱ"), + (0x471, "V"), + (0x472, "M", "ѳ"), + (0x473, "V"), + (0x474, "M", "ѵ"), + (0x475, "V"), + (0x476, "M", "ѷ"), + (0x477, "V"), + (0x478, "M", "ѹ"), + (0x479, "V"), + (0x47A, "M", "ѻ"), + (0x47B, "V"), + (0x47C, "M", "ѽ"), + (0x47D, "V"), + (0x47E, "M", "ѿ"), + (0x47F, "V"), + (0x480, "M", "ҁ"), + (0x481, "V"), + (0x48A, "M", "ҋ"), + (0x48B, "V"), + (0x48C, "M", "ҍ"), + (0x48D, "V"), + (0x48E, "M", "ҏ"), + (0x48F, "V"), + (0x490, "M", "ґ"), + (0x491, "V"), + (0x492, "M", "ғ"), + (0x493, "V"), + (0x494, "M", "ҕ"), + (0x495, "V"), + (0x496, "M", "җ"), + (0x497, "V"), + (0x498, "M", "ҙ"), + (0x499, "V"), + (0x49A, "M", "қ"), + (0x49B, "V"), + (0x49C, "M", "ҝ"), + (0x49D, "V"), + ] + + +def _seg_8() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x49E, "M", "ҟ"), + (0x49F, "V"), + (0x4A0, "M", "ҡ"), + (0x4A1, "V"), + (0x4A2, "M", "ң"), + (0x4A3, "V"), + (0x4A4, "M", "ҥ"), + (0x4A5, "V"), + (0x4A6, "M", "ҧ"), + (0x4A7, "V"), + (0x4A8, "M", "ҩ"), + (0x4A9, "V"), + (0x4AA, "M", "ҫ"), + (0x4AB, "V"), + (0x4AC, "M", "ҭ"), + (0x4AD, "V"), + (0x4AE, "M", "ү"), + (0x4AF, "V"), + (0x4B0, "M", "ұ"), + (0x4B1, "V"), + (0x4B2, "M", "ҳ"), + (0x4B3, "V"), + (0x4B4, "M", "ҵ"), + (0x4B5, "V"), + (0x4B6, "M", "ҷ"), + (0x4B7, "V"), + (0x4B8, "M", "ҹ"), + (0x4B9, "V"), + (0x4BA, "M", "һ"), + (0x4BB, "V"), + (0x4BC, "M", "ҽ"), + (0x4BD, "V"), + (0x4BE, "M", "ҿ"), + (0x4BF, "V"), + (0x4C0, "X"), + (0x4C1, "M", "ӂ"), + (0x4C2, "V"), + (0x4C3, "M", "ӄ"), + (0x4C4, "V"), + (0x4C5, "M", "ӆ"), + (0x4C6, "V"), + (0x4C7, "M", "ӈ"), + (0x4C8, "V"), + (0x4C9, "M", "ӊ"), + (0x4CA, "V"), + (0x4CB, "M", "ӌ"), + (0x4CC, "V"), + (0x4CD, "M", "ӎ"), + (0x4CE, "V"), + (0x4D0, "M", "ӑ"), + (0x4D1, "V"), + (0x4D2, "M", "ӓ"), + (0x4D3, "V"), + (0x4D4, "M", "ӕ"), + (0x4D5, "V"), + (0x4D6, "M", "ӗ"), + (0x4D7, "V"), + (0x4D8, "M", "ә"), + (0x4D9, "V"), + (0x4DA, "M", "ӛ"), + (0x4DB, "V"), + (0x4DC, "M", "ӝ"), + (0x4DD, "V"), + (0x4DE, "M", "ӟ"), + (0x4DF, "V"), + (0x4E0, "M", "ӡ"), + (0x4E1, "V"), + (0x4E2, "M", "ӣ"), + (0x4E3, "V"), + (0x4E4, "M", "ӥ"), + (0x4E5, "V"), + (0x4E6, "M", "ӧ"), + (0x4E7, "V"), + (0x4E8, "M", "ө"), + (0x4E9, "V"), + (0x4EA, "M", "ӫ"), + (0x4EB, "V"), + (0x4EC, "M", "ӭ"), + (0x4ED, "V"), + (0x4EE, "M", "ӯ"), + (0x4EF, "V"), + (0x4F0, "M", "ӱ"), + (0x4F1, "V"), + (0x4F2, "M", "ӳ"), + (0x4F3, "V"), + (0x4F4, "M", "ӵ"), + (0x4F5, "V"), + (0x4F6, "M", "ӷ"), + (0x4F7, "V"), + (0x4F8, "M", "ӹ"), + (0x4F9, "V"), + (0x4FA, "M", "ӻ"), + (0x4FB, "V"), + (0x4FC, "M", "ӽ"), + (0x4FD, "V"), + (0x4FE, "M", "ӿ"), + (0x4FF, "V"), + (0x500, "M", "ԁ"), + (0x501, "V"), + (0x502, "M", "ԃ"), + ] + + +def _seg_9() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x503, "V"), + (0x504, "M", "ԅ"), + (0x505, "V"), + (0x506, "M", "ԇ"), + (0x507, "V"), + (0x508, "M", "ԉ"), + (0x509, "V"), + (0x50A, "M", "ԋ"), + (0x50B, "V"), + (0x50C, "M", "ԍ"), + (0x50D, "V"), + (0x50E, "M", "ԏ"), + (0x50F, "V"), + (0x510, "M", "ԑ"), + (0x511, "V"), + (0x512, "M", "ԓ"), + (0x513, "V"), + (0x514, "M", "ԕ"), + (0x515, "V"), + (0x516, "M", "ԗ"), + (0x517, "V"), + (0x518, "M", "ԙ"), + (0x519, "V"), + (0x51A, "M", "ԛ"), + (0x51B, "V"), + (0x51C, "M", "ԝ"), + (0x51D, "V"), + (0x51E, "M", "ԟ"), + (0x51F, "V"), + (0x520, "M", "ԡ"), + (0x521, "V"), + (0x522, "M", "ԣ"), + (0x523, "V"), + (0x524, "M", "ԥ"), + (0x525, "V"), + (0x526, "M", "ԧ"), + (0x527, "V"), + (0x528, "M", "ԩ"), + (0x529, "V"), + (0x52A, "M", "ԫ"), + (0x52B, "V"), + (0x52C, "M", "ԭ"), + (0x52D, "V"), + (0x52E, "M", "ԯ"), + (0x52F, "V"), + (0x530, "X"), + (0x531, "M", "ա"), + (0x532, "M", "բ"), + (0x533, "M", "գ"), + (0x534, "M", "դ"), + (0x535, "M", "ե"), + (0x536, "M", "զ"), + (0x537, "M", "է"), + (0x538, "M", "ը"), + (0x539, "M", "թ"), + (0x53A, "M", "ժ"), + (0x53B, "M", "ի"), + (0x53C, "M", "լ"), + (0x53D, "M", "խ"), + (0x53E, "M", "ծ"), + (0x53F, "M", "կ"), + (0x540, "M", "հ"), + (0x541, "M", "ձ"), + (0x542, "M", "ղ"), + (0x543, "M", "ճ"), + (0x544, "M", "մ"), + (0x545, "M", "յ"), + (0x546, "M", "ն"), + (0x547, "M", "շ"), + (0x548, "M", "ո"), + (0x549, "M", "չ"), + (0x54A, "M", "պ"), + (0x54B, "M", "ջ"), + (0x54C, "M", "ռ"), + (0x54D, "M", "ս"), + (0x54E, "M", "վ"), + (0x54F, "M", "տ"), + (0x550, "M", "ր"), + (0x551, "M", "ց"), + (0x552, "M", "ւ"), + (0x553, "M", "փ"), + (0x554, "M", "ք"), + (0x555, "M", "օ"), + (0x556, "M", "ֆ"), + (0x557, "X"), + (0x559, "V"), + (0x587, "M", "եւ"), + (0x588, "V"), + (0x58B, "X"), + (0x58D, "V"), + (0x590, "X"), + (0x591, "V"), + (0x5C8, "X"), + (0x5D0, "V"), + (0x5EB, "X"), + (0x5EF, "V"), + (0x5F5, "X"), + (0x606, "V"), + (0x61C, "X"), + (0x61D, "V"), + ] + + +def _seg_10() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x675, "M", "اٴ"), + (0x676, "M", "وٴ"), + (0x677, "M", "ۇٴ"), + (0x678, "M", "يٴ"), + (0x679, "V"), + (0x6DD, "X"), + (0x6DE, "V"), + (0x70E, "X"), + (0x710, "V"), + (0x74B, "X"), + (0x74D, "V"), + (0x7B2, "X"), + (0x7C0, "V"), + (0x7FB, "X"), + (0x7FD, "V"), + (0x82E, "X"), + (0x830, "V"), + (0x83F, "X"), + (0x840, "V"), + (0x85C, "X"), + (0x85E, "V"), + (0x85F, "X"), + (0x860, "V"), + (0x86B, "X"), + (0x870, "V"), + (0x88F, "X"), + (0x898, "V"), + (0x8E2, "X"), + (0x8E3, "V"), + (0x958, "M", "क़"), + (0x959, "M", "ख़"), + (0x95A, "M", "ग़"), + (0x95B, "M", "ज़"), + (0x95C, "M", "ड़"), + (0x95D, "M", "ढ़"), + (0x95E, "M", "फ़"), + (0x95F, "M", "य़"), + (0x960, "V"), + (0x984, "X"), + (0x985, "V"), + (0x98D, "X"), + (0x98F, "V"), + (0x991, "X"), + (0x993, "V"), + (0x9A9, "X"), + (0x9AA, "V"), + (0x9B1, "X"), + (0x9B2, "V"), + (0x9B3, "X"), + (0x9B6, "V"), + (0x9BA, "X"), + (0x9BC, "V"), + (0x9C5, "X"), + (0x9C7, "V"), + (0x9C9, "X"), + (0x9CB, "V"), + (0x9CF, "X"), + (0x9D7, "V"), + (0x9D8, "X"), + (0x9DC, "M", "ড়"), + (0x9DD, "M", "ঢ়"), + (0x9DE, "X"), + (0x9DF, "M", "য়"), + (0x9E0, "V"), + (0x9E4, "X"), + (0x9E6, "V"), + (0x9FF, "X"), + (0xA01, "V"), + (0xA04, "X"), + (0xA05, "V"), + (0xA0B, "X"), + (0xA0F, "V"), + (0xA11, "X"), + (0xA13, "V"), + (0xA29, "X"), + (0xA2A, "V"), + (0xA31, "X"), + (0xA32, "V"), + (0xA33, "M", "ਲ਼"), + (0xA34, "X"), + (0xA35, "V"), + (0xA36, "M", "ਸ਼"), + (0xA37, "X"), + (0xA38, "V"), + (0xA3A, "X"), + (0xA3C, "V"), + (0xA3D, "X"), + (0xA3E, "V"), + (0xA43, "X"), + (0xA47, "V"), + (0xA49, "X"), + (0xA4B, "V"), + (0xA4E, "X"), + (0xA51, "V"), + (0xA52, "X"), + (0xA59, "M", "ਖ਼"), + (0xA5A, "M", "ਗ਼"), + (0xA5B, "M", "ਜ਼"), + (0xA5C, "V"), + (0xA5D, "X"), + ] + + +def _seg_11() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xA5E, "M", "ਫ਼"), + (0xA5F, "X"), + (0xA66, "V"), + (0xA77, "X"), + (0xA81, "V"), + (0xA84, "X"), + (0xA85, "V"), + (0xA8E, "X"), + (0xA8F, "V"), + (0xA92, "X"), + (0xA93, "V"), + (0xAA9, "X"), + (0xAAA, "V"), + (0xAB1, "X"), + (0xAB2, "V"), + (0xAB4, "X"), + (0xAB5, "V"), + (0xABA, "X"), + (0xABC, "V"), + (0xAC6, "X"), + (0xAC7, "V"), + (0xACA, "X"), + (0xACB, "V"), + (0xACE, "X"), + (0xAD0, "V"), + (0xAD1, "X"), + (0xAE0, "V"), + (0xAE4, "X"), + (0xAE6, "V"), + (0xAF2, "X"), + (0xAF9, "V"), + (0xB00, "X"), + (0xB01, "V"), + (0xB04, "X"), + (0xB05, "V"), + (0xB0D, "X"), + (0xB0F, "V"), + (0xB11, "X"), + (0xB13, "V"), + (0xB29, "X"), + (0xB2A, "V"), + (0xB31, "X"), + (0xB32, "V"), + (0xB34, "X"), + (0xB35, "V"), + (0xB3A, "X"), + (0xB3C, "V"), + (0xB45, "X"), + (0xB47, "V"), + (0xB49, "X"), + (0xB4B, "V"), + (0xB4E, "X"), + (0xB55, "V"), + (0xB58, "X"), + (0xB5C, "M", "ଡ଼"), + (0xB5D, "M", "ଢ଼"), + (0xB5E, "X"), + (0xB5F, "V"), + (0xB64, "X"), + (0xB66, "V"), + (0xB78, "X"), + (0xB82, "V"), + (0xB84, "X"), + (0xB85, "V"), + (0xB8B, "X"), + (0xB8E, "V"), + (0xB91, "X"), + (0xB92, "V"), + (0xB96, "X"), + (0xB99, "V"), + (0xB9B, "X"), + (0xB9C, "V"), + (0xB9D, "X"), + (0xB9E, "V"), + (0xBA0, "X"), + (0xBA3, "V"), + (0xBA5, "X"), + (0xBA8, "V"), + (0xBAB, "X"), + (0xBAE, "V"), + (0xBBA, "X"), + (0xBBE, "V"), + (0xBC3, "X"), + (0xBC6, "V"), + (0xBC9, "X"), + (0xBCA, "V"), + (0xBCE, "X"), + (0xBD0, "V"), + (0xBD1, "X"), + (0xBD7, "V"), + (0xBD8, "X"), + (0xBE6, "V"), + (0xBFB, "X"), + (0xC00, "V"), + (0xC0D, "X"), + (0xC0E, "V"), + (0xC11, "X"), + (0xC12, "V"), + (0xC29, "X"), + (0xC2A, "V"), + ] + + +def _seg_12() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xC3A, "X"), + (0xC3C, "V"), + (0xC45, "X"), + (0xC46, "V"), + (0xC49, "X"), + (0xC4A, "V"), + (0xC4E, "X"), + (0xC55, "V"), + (0xC57, "X"), + (0xC58, "V"), + (0xC5B, "X"), + (0xC5D, "V"), + (0xC5E, "X"), + (0xC60, "V"), + (0xC64, "X"), + (0xC66, "V"), + (0xC70, "X"), + (0xC77, "V"), + (0xC8D, "X"), + (0xC8E, "V"), + (0xC91, "X"), + (0xC92, "V"), + (0xCA9, "X"), + (0xCAA, "V"), + (0xCB4, "X"), + (0xCB5, "V"), + (0xCBA, "X"), + (0xCBC, "V"), + (0xCC5, "X"), + (0xCC6, "V"), + (0xCC9, "X"), + (0xCCA, "V"), + (0xCCE, "X"), + (0xCD5, "V"), + (0xCD7, "X"), + (0xCDD, "V"), + (0xCDF, "X"), + (0xCE0, "V"), + (0xCE4, "X"), + (0xCE6, "V"), + (0xCF0, "X"), + (0xCF1, "V"), + (0xCF4, "X"), + (0xD00, "V"), + (0xD0D, "X"), + (0xD0E, "V"), + (0xD11, "X"), + (0xD12, "V"), + (0xD45, "X"), + (0xD46, "V"), + (0xD49, "X"), + (0xD4A, "V"), + (0xD50, "X"), + (0xD54, "V"), + (0xD64, "X"), + (0xD66, "V"), + (0xD80, "X"), + (0xD81, "V"), + (0xD84, "X"), + (0xD85, "V"), + (0xD97, "X"), + (0xD9A, "V"), + (0xDB2, "X"), + (0xDB3, "V"), + (0xDBC, "X"), + (0xDBD, "V"), + (0xDBE, "X"), + (0xDC0, "V"), + (0xDC7, "X"), + (0xDCA, "V"), + (0xDCB, "X"), + (0xDCF, "V"), + (0xDD5, "X"), + (0xDD6, "V"), + (0xDD7, "X"), + (0xDD8, "V"), + (0xDE0, "X"), + (0xDE6, "V"), + (0xDF0, "X"), + (0xDF2, "V"), + (0xDF5, "X"), + (0xE01, "V"), + (0xE33, "M", "ํา"), + (0xE34, "V"), + (0xE3B, "X"), + (0xE3F, "V"), + (0xE5C, "X"), + (0xE81, "V"), + (0xE83, "X"), + (0xE84, "V"), + (0xE85, "X"), + (0xE86, "V"), + (0xE8B, "X"), + (0xE8C, "V"), + (0xEA4, "X"), + (0xEA5, "V"), + (0xEA6, "X"), + (0xEA7, "V"), + (0xEB3, "M", "ໍາ"), + (0xEB4, "V"), + ] + + +def _seg_13() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xEBE, "X"), + (0xEC0, "V"), + (0xEC5, "X"), + (0xEC6, "V"), + (0xEC7, "X"), + (0xEC8, "V"), + (0xECF, "X"), + (0xED0, "V"), + (0xEDA, "X"), + (0xEDC, "M", "ຫນ"), + (0xEDD, "M", "ຫມ"), + (0xEDE, "V"), + (0xEE0, "X"), + (0xF00, "V"), + (0xF0C, "M", "་"), + (0xF0D, "V"), + (0xF43, "M", "གྷ"), + (0xF44, "V"), + (0xF48, "X"), + (0xF49, "V"), + (0xF4D, "M", "ཌྷ"), + (0xF4E, "V"), + (0xF52, "M", "དྷ"), + (0xF53, "V"), + (0xF57, "M", "བྷ"), + (0xF58, "V"), + (0xF5C, "M", "ཛྷ"), + (0xF5D, "V"), + (0xF69, "M", "ཀྵ"), + (0xF6A, "V"), + (0xF6D, "X"), + (0xF71, "V"), + (0xF73, "M", "ཱི"), + (0xF74, "V"), + (0xF75, "M", "ཱུ"), + (0xF76, "M", "ྲྀ"), + (0xF77, "M", "ྲཱྀ"), + (0xF78, "M", "ླྀ"), + (0xF79, "M", "ླཱྀ"), + (0xF7A, "V"), + (0xF81, "M", "ཱྀ"), + (0xF82, "V"), + (0xF93, "M", "ྒྷ"), + (0xF94, "V"), + (0xF98, "X"), + (0xF99, "V"), + (0xF9D, "M", "ྜྷ"), + (0xF9E, "V"), + (0xFA2, "M", "ྡྷ"), + (0xFA3, "V"), + (0xFA7, "M", "ྦྷ"), + (0xFA8, "V"), + (0xFAC, "M", "ྫྷ"), + (0xFAD, "V"), + (0xFB9, "M", "ྐྵ"), + (0xFBA, "V"), + (0xFBD, "X"), + (0xFBE, "V"), + (0xFCD, "X"), + (0xFCE, "V"), + (0xFDB, "X"), + (0x1000, "V"), + (0x10A0, "X"), + (0x10C7, "M", "ⴧ"), + (0x10C8, "X"), + (0x10CD, "M", "ⴭ"), + (0x10CE, "X"), + (0x10D0, "V"), + (0x10FC, "M", "ნ"), + (0x10FD, "V"), + (0x115F, "X"), + (0x1161, "V"), + (0x1249, "X"), + (0x124A, "V"), + (0x124E, "X"), + (0x1250, "V"), + (0x1257, "X"), + (0x1258, "V"), + (0x1259, "X"), + (0x125A, "V"), + (0x125E, "X"), + (0x1260, "V"), + (0x1289, "X"), + (0x128A, "V"), + (0x128E, "X"), + (0x1290, "V"), + (0x12B1, "X"), + (0x12B2, "V"), + (0x12B6, "X"), + (0x12B8, "V"), + (0x12BF, "X"), + (0x12C0, "V"), + (0x12C1, "X"), + (0x12C2, "V"), + (0x12C6, "X"), + (0x12C8, "V"), + (0x12D7, "X"), + (0x12D8, "V"), + (0x1311, "X"), + (0x1312, "V"), + ] + + +def _seg_14() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1316, "X"), + (0x1318, "V"), + (0x135B, "X"), + (0x135D, "V"), + (0x137D, "X"), + (0x1380, "V"), + (0x139A, "X"), + (0x13A0, "V"), + (0x13F6, "X"), + (0x13F8, "M", "Ᏸ"), + (0x13F9, "M", "Ᏹ"), + (0x13FA, "M", "Ᏺ"), + (0x13FB, "M", "Ᏻ"), + (0x13FC, "M", "Ᏼ"), + (0x13FD, "M", "Ᏽ"), + (0x13FE, "X"), + (0x1400, "V"), + (0x1680, "X"), + (0x1681, "V"), + (0x169D, "X"), + (0x16A0, "V"), + (0x16F9, "X"), + (0x1700, "V"), + (0x1716, "X"), + (0x171F, "V"), + (0x1737, "X"), + (0x1740, "V"), + (0x1754, "X"), + (0x1760, "V"), + (0x176D, "X"), + (0x176E, "V"), + (0x1771, "X"), + (0x1772, "V"), + (0x1774, "X"), + (0x1780, "V"), + (0x17B4, "X"), + (0x17B6, "V"), + (0x17DE, "X"), + (0x17E0, "V"), + (0x17EA, "X"), + (0x17F0, "V"), + (0x17FA, "X"), + (0x1800, "V"), + (0x1806, "X"), + (0x1807, "V"), + (0x180B, "I"), + (0x180E, "X"), + (0x180F, "I"), + (0x1810, "V"), + (0x181A, "X"), + (0x1820, "V"), + (0x1879, "X"), + (0x1880, "V"), + (0x18AB, "X"), + (0x18B0, "V"), + (0x18F6, "X"), + (0x1900, "V"), + (0x191F, "X"), + (0x1920, "V"), + (0x192C, "X"), + (0x1930, "V"), + (0x193C, "X"), + (0x1940, "V"), + (0x1941, "X"), + (0x1944, "V"), + (0x196E, "X"), + (0x1970, "V"), + (0x1975, "X"), + (0x1980, "V"), + (0x19AC, "X"), + (0x19B0, "V"), + (0x19CA, "X"), + (0x19D0, "V"), + (0x19DB, "X"), + (0x19DE, "V"), + (0x1A1C, "X"), + (0x1A1E, "V"), + (0x1A5F, "X"), + (0x1A60, "V"), + (0x1A7D, "X"), + (0x1A7F, "V"), + (0x1A8A, "X"), + (0x1A90, "V"), + (0x1A9A, "X"), + (0x1AA0, "V"), + (0x1AAE, "X"), + (0x1AB0, "V"), + (0x1ACF, "X"), + (0x1B00, "V"), + (0x1B4D, "X"), + (0x1B50, "V"), + (0x1B7F, "X"), + (0x1B80, "V"), + (0x1BF4, "X"), + (0x1BFC, "V"), + (0x1C38, "X"), + (0x1C3B, "V"), + (0x1C4A, "X"), + (0x1C4D, "V"), + (0x1C80, "M", "в"), + ] + + +def _seg_15() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1C81, "M", "д"), + (0x1C82, "M", "о"), + (0x1C83, "M", "с"), + (0x1C84, "M", "т"), + (0x1C86, "M", "ъ"), + (0x1C87, "M", "ѣ"), + (0x1C88, "M", "ꙋ"), + (0x1C89, "X"), + (0x1C90, "M", "ა"), + (0x1C91, "M", "ბ"), + (0x1C92, "M", "გ"), + (0x1C93, "M", "დ"), + (0x1C94, "M", "ე"), + (0x1C95, "M", "ვ"), + (0x1C96, "M", "ზ"), + (0x1C97, "M", "თ"), + (0x1C98, "M", "ი"), + (0x1C99, "M", "კ"), + (0x1C9A, "M", "ლ"), + (0x1C9B, "M", "მ"), + (0x1C9C, "M", "ნ"), + (0x1C9D, "M", "ო"), + (0x1C9E, "M", "პ"), + (0x1C9F, "M", "ჟ"), + (0x1CA0, "M", "რ"), + (0x1CA1, "M", "ს"), + (0x1CA2, "M", "ტ"), + (0x1CA3, "M", "უ"), + (0x1CA4, "M", "ფ"), + (0x1CA5, "M", "ქ"), + (0x1CA6, "M", "ღ"), + (0x1CA7, "M", "ყ"), + (0x1CA8, "M", "შ"), + (0x1CA9, "M", "ჩ"), + (0x1CAA, "M", "ც"), + (0x1CAB, "M", "ძ"), + (0x1CAC, "M", "წ"), + (0x1CAD, "M", "ჭ"), + (0x1CAE, "M", "ხ"), + (0x1CAF, "M", "ჯ"), + (0x1CB0, "M", "ჰ"), + (0x1CB1, "M", "ჱ"), + (0x1CB2, "M", "ჲ"), + (0x1CB3, "M", "ჳ"), + (0x1CB4, "M", "ჴ"), + (0x1CB5, "M", "ჵ"), + (0x1CB6, "M", "ჶ"), + (0x1CB7, "M", "ჷ"), + (0x1CB8, "M", "ჸ"), + (0x1CB9, "M", "ჹ"), + (0x1CBA, "M", "ჺ"), + (0x1CBB, "X"), + (0x1CBD, "M", "ჽ"), + (0x1CBE, "M", "ჾ"), + (0x1CBF, "M", "ჿ"), + (0x1CC0, "V"), + (0x1CC8, "X"), + (0x1CD0, "V"), + (0x1CFB, "X"), + (0x1D00, "V"), + (0x1D2C, "M", "a"), + (0x1D2D, "M", "æ"), + (0x1D2E, "M", "b"), + (0x1D2F, "V"), + (0x1D30, "M", "d"), + (0x1D31, "M", "e"), + (0x1D32, "M", "ǝ"), + (0x1D33, "M", "g"), + (0x1D34, "M", "h"), + (0x1D35, "M", "i"), + (0x1D36, "M", "j"), + (0x1D37, "M", "k"), + (0x1D38, "M", "l"), + (0x1D39, "M", "m"), + (0x1D3A, "M", "n"), + (0x1D3B, "V"), + (0x1D3C, "M", "o"), + (0x1D3D, "M", "ȣ"), + (0x1D3E, "M", "p"), + (0x1D3F, "M", "r"), + (0x1D40, "M", "t"), + (0x1D41, "M", "u"), + (0x1D42, "M", "w"), + (0x1D43, "M", "a"), + (0x1D44, "M", "ɐ"), + (0x1D45, "M", "ɑ"), + (0x1D46, "M", "ᴂ"), + (0x1D47, "M", "b"), + (0x1D48, "M", "d"), + (0x1D49, "M", "e"), + (0x1D4A, "M", "ə"), + (0x1D4B, "M", "ɛ"), + (0x1D4C, "M", "ɜ"), + (0x1D4D, "M", "g"), + (0x1D4E, "V"), + (0x1D4F, "M", "k"), + (0x1D50, "M", "m"), + (0x1D51, "M", "ŋ"), + (0x1D52, "M", "o"), + (0x1D53, "M", "ɔ"), + ] + + +def _seg_16() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D54, "M", "ᴖ"), + (0x1D55, "M", "ᴗ"), + (0x1D56, "M", "p"), + (0x1D57, "M", "t"), + (0x1D58, "M", "u"), + (0x1D59, "M", "ᴝ"), + (0x1D5A, "M", "ɯ"), + (0x1D5B, "M", "v"), + (0x1D5C, "M", "ᴥ"), + (0x1D5D, "M", "β"), + (0x1D5E, "M", "γ"), + (0x1D5F, "M", "δ"), + (0x1D60, "M", "φ"), + (0x1D61, "M", "χ"), + (0x1D62, "M", "i"), + (0x1D63, "M", "r"), + (0x1D64, "M", "u"), + (0x1D65, "M", "v"), + (0x1D66, "M", "β"), + (0x1D67, "M", "γ"), + (0x1D68, "M", "ρ"), + (0x1D69, "M", "φ"), + (0x1D6A, "M", "χ"), + (0x1D6B, "V"), + (0x1D78, "M", "н"), + (0x1D79, "V"), + (0x1D9B, "M", "ɒ"), + (0x1D9C, "M", "c"), + (0x1D9D, "M", "ɕ"), + (0x1D9E, "M", "ð"), + (0x1D9F, "M", "ɜ"), + (0x1DA0, "M", "f"), + (0x1DA1, "M", "ɟ"), + (0x1DA2, "M", "ɡ"), + (0x1DA3, "M", "ɥ"), + (0x1DA4, "M", "ɨ"), + (0x1DA5, "M", "ɩ"), + (0x1DA6, "M", "ɪ"), + (0x1DA7, "M", "ᵻ"), + (0x1DA8, "M", "ʝ"), + (0x1DA9, "M", "ɭ"), + (0x1DAA, "M", "ᶅ"), + (0x1DAB, "M", "ʟ"), + (0x1DAC, "M", "ɱ"), + (0x1DAD, "M", "ɰ"), + (0x1DAE, "M", "ɲ"), + (0x1DAF, "M", "ɳ"), + (0x1DB0, "M", "ɴ"), + (0x1DB1, "M", "ɵ"), + (0x1DB2, "M", "ɸ"), + (0x1DB3, "M", "ʂ"), + (0x1DB4, "M", "ʃ"), + (0x1DB5, "M", "ƫ"), + (0x1DB6, "M", "ʉ"), + (0x1DB7, "M", "ʊ"), + (0x1DB8, "M", "ᴜ"), + (0x1DB9, "M", "ʋ"), + (0x1DBA, "M", "ʌ"), + (0x1DBB, "M", "z"), + (0x1DBC, "M", "ʐ"), + (0x1DBD, "M", "ʑ"), + (0x1DBE, "M", "ʒ"), + (0x1DBF, "M", "θ"), + (0x1DC0, "V"), + (0x1E00, "M", "ḁ"), + (0x1E01, "V"), + (0x1E02, "M", "ḃ"), + (0x1E03, "V"), + (0x1E04, "M", "ḅ"), + (0x1E05, "V"), + (0x1E06, "M", "ḇ"), + (0x1E07, "V"), + (0x1E08, "M", "ḉ"), + (0x1E09, "V"), + (0x1E0A, "M", "ḋ"), + (0x1E0B, "V"), + (0x1E0C, "M", "ḍ"), + (0x1E0D, "V"), + (0x1E0E, "M", "ḏ"), + (0x1E0F, "V"), + (0x1E10, "M", "ḑ"), + (0x1E11, "V"), + (0x1E12, "M", "ḓ"), + (0x1E13, "V"), + (0x1E14, "M", "ḕ"), + (0x1E15, "V"), + (0x1E16, "M", "ḗ"), + (0x1E17, "V"), + (0x1E18, "M", "ḙ"), + (0x1E19, "V"), + (0x1E1A, "M", "ḛ"), + (0x1E1B, "V"), + (0x1E1C, "M", "ḝ"), + (0x1E1D, "V"), + (0x1E1E, "M", "ḟ"), + (0x1E1F, "V"), + (0x1E20, "M", "ḡ"), + (0x1E21, "V"), + (0x1E22, "M", "ḣ"), + (0x1E23, "V"), + ] + + +def _seg_17() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1E24, "M", "ḥ"), + (0x1E25, "V"), + (0x1E26, "M", "ḧ"), + (0x1E27, "V"), + (0x1E28, "M", "ḩ"), + (0x1E29, "V"), + (0x1E2A, "M", "ḫ"), + (0x1E2B, "V"), + (0x1E2C, "M", "ḭ"), + (0x1E2D, "V"), + (0x1E2E, "M", "ḯ"), + (0x1E2F, "V"), + (0x1E30, "M", "ḱ"), + (0x1E31, "V"), + (0x1E32, "M", "ḳ"), + (0x1E33, "V"), + (0x1E34, "M", "ḵ"), + (0x1E35, "V"), + (0x1E36, "M", "ḷ"), + (0x1E37, "V"), + (0x1E38, "M", "ḹ"), + (0x1E39, "V"), + (0x1E3A, "M", "ḻ"), + (0x1E3B, "V"), + (0x1E3C, "M", "ḽ"), + (0x1E3D, "V"), + (0x1E3E, "M", "ḿ"), + (0x1E3F, "V"), + (0x1E40, "M", "ṁ"), + (0x1E41, "V"), + (0x1E42, "M", "ṃ"), + (0x1E43, "V"), + (0x1E44, "M", "ṅ"), + (0x1E45, "V"), + (0x1E46, "M", "ṇ"), + (0x1E47, "V"), + (0x1E48, "M", "ṉ"), + (0x1E49, "V"), + (0x1E4A, "M", "ṋ"), + (0x1E4B, "V"), + (0x1E4C, "M", "ṍ"), + (0x1E4D, "V"), + (0x1E4E, "M", "ṏ"), + (0x1E4F, "V"), + (0x1E50, "M", "ṑ"), + (0x1E51, "V"), + (0x1E52, "M", "ṓ"), + (0x1E53, "V"), + (0x1E54, "M", "ṕ"), + (0x1E55, "V"), + (0x1E56, "M", "ṗ"), + (0x1E57, "V"), + (0x1E58, "M", "ṙ"), + (0x1E59, "V"), + (0x1E5A, "M", "ṛ"), + (0x1E5B, "V"), + (0x1E5C, "M", "ṝ"), + (0x1E5D, "V"), + (0x1E5E, "M", "ṟ"), + (0x1E5F, "V"), + (0x1E60, "M", "ṡ"), + (0x1E61, "V"), + (0x1E62, "M", "ṣ"), + (0x1E63, "V"), + (0x1E64, "M", "ṥ"), + (0x1E65, "V"), + (0x1E66, "M", "ṧ"), + (0x1E67, "V"), + (0x1E68, "M", "ṩ"), + (0x1E69, "V"), + (0x1E6A, "M", "ṫ"), + (0x1E6B, "V"), + (0x1E6C, "M", "ṭ"), + (0x1E6D, "V"), + (0x1E6E, "M", "ṯ"), + (0x1E6F, "V"), + (0x1E70, "M", "ṱ"), + (0x1E71, "V"), + (0x1E72, "M", "ṳ"), + (0x1E73, "V"), + (0x1E74, "M", "ṵ"), + (0x1E75, "V"), + (0x1E76, "M", "ṷ"), + (0x1E77, "V"), + (0x1E78, "M", "ṹ"), + (0x1E79, "V"), + (0x1E7A, "M", "ṻ"), + (0x1E7B, "V"), + (0x1E7C, "M", "ṽ"), + (0x1E7D, "V"), + (0x1E7E, "M", "ṿ"), + (0x1E7F, "V"), + (0x1E80, "M", "ẁ"), + (0x1E81, "V"), + (0x1E82, "M", "ẃ"), + (0x1E83, "V"), + (0x1E84, "M", "ẅ"), + (0x1E85, "V"), + (0x1E86, "M", "ẇ"), + (0x1E87, "V"), + ] + + +def _seg_18() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1E88, "M", "ẉ"), + (0x1E89, "V"), + (0x1E8A, "M", "ẋ"), + (0x1E8B, "V"), + (0x1E8C, "M", "ẍ"), + (0x1E8D, "V"), + (0x1E8E, "M", "ẏ"), + (0x1E8F, "V"), + (0x1E90, "M", "ẑ"), + (0x1E91, "V"), + (0x1E92, "M", "ẓ"), + (0x1E93, "V"), + (0x1E94, "M", "ẕ"), + (0x1E95, "V"), + (0x1E9A, "M", "aʾ"), + (0x1E9B, "M", "ṡ"), + (0x1E9C, "V"), + (0x1E9E, "M", "ß"), + (0x1E9F, "V"), + (0x1EA0, "M", "ạ"), + (0x1EA1, "V"), + (0x1EA2, "M", "ả"), + (0x1EA3, "V"), + (0x1EA4, "M", "ấ"), + (0x1EA5, "V"), + (0x1EA6, "M", "ầ"), + (0x1EA7, "V"), + (0x1EA8, "M", "ẩ"), + (0x1EA9, "V"), + (0x1EAA, "M", "ẫ"), + (0x1EAB, "V"), + (0x1EAC, "M", "ậ"), + (0x1EAD, "V"), + (0x1EAE, "M", "ắ"), + (0x1EAF, "V"), + (0x1EB0, "M", "ằ"), + (0x1EB1, "V"), + (0x1EB2, "M", "ẳ"), + (0x1EB3, "V"), + (0x1EB4, "M", "ẵ"), + (0x1EB5, "V"), + (0x1EB6, "M", "ặ"), + (0x1EB7, "V"), + (0x1EB8, "M", "ẹ"), + (0x1EB9, "V"), + (0x1EBA, "M", "ẻ"), + (0x1EBB, "V"), + (0x1EBC, "M", "ẽ"), + (0x1EBD, "V"), + (0x1EBE, "M", "ế"), + (0x1EBF, "V"), + (0x1EC0, "M", "ề"), + (0x1EC1, "V"), + (0x1EC2, "M", "ể"), + (0x1EC3, "V"), + (0x1EC4, "M", "ễ"), + (0x1EC5, "V"), + (0x1EC6, "M", "ệ"), + (0x1EC7, "V"), + (0x1EC8, "M", "ỉ"), + (0x1EC9, "V"), + (0x1ECA, "M", "ị"), + (0x1ECB, "V"), + (0x1ECC, "M", "ọ"), + (0x1ECD, "V"), + (0x1ECE, "M", "ỏ"), + (0x1ECF, "V"), + (0x1ED0, "M", "ố"), + (0x1ED1, "V"), + (0x1ED2, "M", "ồ"), + (0x1ED3, "V"), + (0x1ED4, "M", "ổ"), + (0x1ED5, "V"), + (0x1ED6, "M", "ỗ"), + (0x1ED7, "V"), + (0x1ED8, "M", "ộ"), + (0x1ED9, "V"), + (0x1EDA, "M", "ớ"), + (0x1EDB, "V"), + (0x1EDC, "M", "ờ"), + (0x1EDD, "V"), + (0x1EDE, "M", "ở"), + (0x1EDF, "V"), + (0x1EE0, "M", "ỡ"), + (0x1EE1, "V"), + (0x1EE2, "M", "ợ"), + (0x1EE3, "V"), + (0x1EE4, "M", "ụ"), + (0x1EE5, "V"), + (0x1EE6, "M", "ủ"), + (0x1EE7, "V"), + (0x1EE8, "M", "ứ"), + (0x1EE9, "V"), + (0x1EEA, "M", "ừ"), + (0x1EEB, "V"), + (0x1EEC, "M", "ử"), + (0x1EED, "V"), + (0x1EEE, "M", "ữ"), + (0x1EEF, "V"), + (0x1EF0, "M", "ự"), + ] + + +def _seg_19() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1EF1, "V"), + (0x1EF2, "M", "ỳ"), + (0x1EF3, "V"), + (0x1EF4, "M", "ỵ"), + (0x1EF5, "V"), + (0x1EF6, "M", "ỷ"), + (0x1EF7, "V"), + (0x1EF8, "M", "ỹ"), + (0x1EF9, "V"), + (0x1EFA, "M", "ỻ"), + (0x1EFB, "V"), + (0x1EFC, "M", "ỽ"), + (0x1EFD, "V"), + (0x1EFE, "M", "ỿ"), + (0x1EFF, "V"), + (0x1F08, "M", "ἀ"), + (0x1F09, "M", "ἁ"), + (0x1F0A, "M", "ἂ"), + (0x1F0B, "M", "ἃ"), + (0x1F0C, "M", "ἄ"), + (0x1F0D, "M", "ἅ"), + (0x1F0E, "M", "ἆ"), + (0x1F0F, "M", "ἇ"), + (0x1F10, "V"), + (0x1F16, "X"), + (0x1F18, "M", "ἐ"), + (0x1F19, "M", "ἑ"), + (0x1F1A, "M", "ἒ"), + (0x1F1B, "M", "ἓ"), + (0x1F1C, "M", "ἔ"), + (0x1F1D, "M", "ἕ"), + (0x1F1E, "X"), + (0x1F20, "V"), + (0x1F28, "M", "ἠ"), + (0x1F29, "M", "ἡ"), + (0x1F2A, "M", "ἢ"), + (0x1F2B, "M", "ἣ"), + (0x1F2C, "M", "ἤ"), + (0x1F2D, "M", "ἥ"), + (0x1F2E, "M", "ἦ"), + (0x1F2F, "M", "ἧ"), + (0x1F30, "V"), + (0x1F38, "M", "ἰ"), + (0x1F39, "M", "ἱ"), + (0x1F3A, "M", "ἲ"), + (0x1F3B, "M", "ἳ"), + (0x1F3C, "M", "ἴ"), + (0x1F3D, "M", "ἵ"), + (0x1F3E, "M", "ἶ"), + (0x1F3F, "M", "ἷ"), + (0x1F40, "V"), + (0x1F46, "X"), + (0x1F48, "M", "ὀ"), + (0x1F49, "M", "ὁ"), + (0x1F4A, "M", "ὂ"), + (0x1F4B, "M", "ὃ"), + (0x1F4C, "M", "ὄ"), + (0x1F4D, "M", "ὅ"), + (0x1F4E, "X"), + (0x1F50, "V"), + (0x1F58, "X"), + (0x1F59, "M", "ὑ"), + (0x1F5A, "X"), + (0x1F5B, "M", "ὓ"), + (0x1F5C, "X"), + (0x1F5D, "M", "ὕ"), + (0x1F5E, "X"), + (0x1F5F, "M", "ὗ"), + (0x1F60, "V"), + (0x1F68, "M", "ὠ"), + (0x1F69, "M", "ὡ"), + (0x1F6A, "M", "ὢ"), + (0x1F6B, "M", "ὣ"), + (0x1F6C, "M", "ὤ"), + (0x1F6D, "M", "ὥ"), + (0x1F6E, "M", "ὦ"), + (0x1F6F, "M", "ὧ"), + (0x1F70, "V"), + (0x1F71, "M", "ά"), + (0x1F72, "V"), + (0x1F73, "M", "έ"), + (0x1F74, "V"), + (0x1F75, "M", "ή"), + (0x1F76, "V"), + (0x1F77, "M", "ί"), + (0x1F78, "V"), + (0x1F79, "M", "ό"), + (0x1F7A, "V"), + (0x1F7B, "M", "ύ"), + (0x1F7C, "V"), + (0x1F7D, "M", "ώ"), + (0x1F7E, "X"), + (0x1F80, "M", "ἀι"), + (0x1F81, "M", "ἁι"), + (0x1F82, "M", "ἂι"), + (0x1F83, "M", "ἃι"), + (0x1F84, "M", "ἄι"), + (0x1F85, "M", "ἅι"), + (0x1F86, "M", "ἆι"), + (0x1F87, "M", "ἇι"), + ] + + +def _seg_20() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1F88, "M", "ἀι"), + (0x1F89, "M", "ἁι"), + (0x1F8A, "M", "ἂι"), + (0x1F8B, "M", "ἃι"), + (0x1F8C, "M", "ἄι"), + (0x1F8D, "M", "ἅι"), + (0x1F8E, "M", "ἆι"), + (0x1F8F, "M", "ἇι"), + (0x1F90, "M", "ἠι"), + (0x1F91, "M", "ἡι"), + (0x1F92, "M", "ἢι"), + (0x1F93, "M", "ἣι"), + (0x1F94, "M", "ἤι"), + (0x1F95, "M", "ἥι"), + (0x1F96, "M", "ἦι"), + (0x1F97, "M", "ἧι"), + (0x1F98, "M", "ἠι"), + (0x1F99, "M", "ἡι"), + (0x1F9A, "M", "ἢι"), + (0x1F9B, "M", "ἣι"), + (0x1F9C, "M", "ἤι"), + (0x1F9D, "M", "ἥι"), + (0x1F9E, "M", "ἦι"), + (0x1F9F, "M", "ἧι"), + (0x1FA0, "M", "ὠι"), + (0x1FA1, "M", "ὡι"), + (0x1FA2, "M", "ὢι"), + (0x1FA3, "M", "ὣι"), + (0x1FA4, "M", "ὤι"), + (0x1FA5, "M", "ὥι"), + (0x1FA6, "M", "ὦι"), + (0x1FA7, "M", "ὧι"), + (0x1FA8, "M", "ὠι"), + (0x1FA9, "M", "ὡι"), + (0x1FAA, "M", "ὢι"), + (0x1FAB, "M", "ὣι"), + (0x1FAC, "M", "ὤι"), + (0x1FAD, "M", "ὥι"), + (0x1FAE, "M", "ὦι"), + (0x1FAF, "M", "ὧι"), + (0x1FB0, "V"), + (0x1FB2, "M", "ὰι"), + (0x1FB3, "M", "αι"), + (0x1FB4, "M", "άι"), + (0x1FB5, "X"), + (0x1FB6, "V"), + (0x1FB7, "M", "ᾶι"), + (0x1FB8, "M", "ᾰ"), + (0x1FB9, "M", "ᾱ"), + (0x1FBA, "M", "ὰ"), + (0x1FBB, "M", "ά"), + (0x1FBC, "M", "αι"), + (0x1FBD, "3", " ̓"), + (0x1FBE, "M", "ι"), + (0x1FBF, "3", " ̓"), + (0x1FC0, "3", " ͂"), + (0x1FC1, "3", " ̈͂"), + (0x1FC2, "M", "ὴι"), + (0x1FC3, "M", "ηι"), + (0x1FC4, "M", "ήι"), + (0x1FC5, "X"), + (0x1FC6, "V"), + (0x1FC7, "M", "ῆι"), + (0x1FC8, "M", "ὲ"), + (0x1FC9, "M", "έ"), + (0x1FCA, "M", "ὴ"), + (0x1FCB, "M", "ή"), + (0x1FCC, "M", "ηι"), + (0x1FCD, "3", " ̓̀"), + (0x1FCE, "3", " ̓́"), + (0x1FCF, "3", " ̓͂"), + (0x1FD0, "V"), + (0x1FD3, "M", "ΐ"), + (0x1FD4, "X"), + (0x1FD6, "V"), + (0x1FD8, "M", "ῐ"), + (0x1FD9, "M", "ῑ"), + (0x1FDA, "M", "ὶ"), + (0x1FDB, "M", "ί"), + (0x1FDC, "X"), + (0x1FDD, "3", " ̔̀"), + (0x1FDE, "3", " ̔́"), + (0x1FDF, "3", " ̔͂"), + (0x1FE0, "V"), + (0x1FE3, "M", "ΰ"), + (0x1FE4, "V"), + (0x1FE8, "M", "ῠ"), + (0x1FE9, "M", "ῡ"), + (0x1FEA, "M", "ὺ"), + (0x1FEB, "M", "ύ"), + (0x1FEC, "M", "ῥ"), + (0x1FED, "3", " ̈̀"), + (0x1FEE, "3", " ̈́"), + (0x1FEF, "3", "`"), + (0x1FF0, "X"), + (0x1FF2, "M", "ὼι"), + (0x1FF3, "M", "ωι"), + (0x1FF4, "M", "ώι"), + (0x1FF5, "X"), + (0x1FF6, "V"), + ] + + +def _seg_21() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1FF7, "M", "ῶι"), + (0x1FF8, "M", "ὸ"), + (0x1FF9, "M", "ό"), + (0x1FFA, "M", "ὼ"), + (0x1FFB, "M", "ώ"), + (0x1FFC, "M", "ωι"), + (0x1FFD, "3", " ́"), + (0x1FFE, "3", " ̔"), + (0x1FFF, "X"), + (0x2000, "3", " "), + (0x200B, "I"), + (0x200C, "D", ""), + (0x200E, "X"), + (0x2010, "V"), + (0x2011, "M", "‐"), + (0x2012, "V"), + (0x2017, "3", " ̳"), + (0x2018, "V"), + (0x2024, "X"), + (0x2027, "V"), + (0x2028, "X"), + (0x202F, "3", " "), + (0x2030, "V"), + (0x2033, "M", "′′"), + (0x2034, "M", "′′′"), + (0x2035, "V"), + (0x2036, "M", "‵‵"), + (0x2037, "M", "‵‵‵"), + (0x2038, "V"), + (0x203C, "3", "!!"), + (0x203D, "V"), + (0x203E, "3", " ̅"), + (0x203F, "V"), + (0x2047, "3", "??"), + (0x2048, "3", "?!"), + (0x2049, "3", "!?"), + (0x204A, "V"), + (0x2057, "M", "′′′′"), + (0x2058, "V"), + (0x205F, "3", " "), + (0x2060, "I"), + (0x2061, "X"), + (0x2064, "I"), + (0x2065, "X"), + (0x2070, "M", "0"), + (0x2071, "M", "i"), + (0x2072, "X"), + (0x2074, "M", "4"), + (0x2075, "M", "5"), + (0x2076, "M", "6"), + (0x2077, "M", "7"), + (0x2078, "M", "8"), + (0x2079, "M", "9"), + (0x207A, "3", "+"), + (0x207B, "M", "−"), + (0x207C, "3", "="), + (0x207D, "3", "("), + (0x207E, "3", ")"), + (0x207F, "M", "n"), + (0x2080, "M", "0"), + (0x2081, "M", "1"), + (0x2082, "M", "2"), + (0x2083, "M", "3"), + (0x2084, "M", "4"), + (0x2085, "M", "5"), + (0x2086, "M", "6"), + (0x2087, "M", "7"), + (0x2088, "M", "8"), + (0x2089, "M", "9"), + (0x208A, "3", "+"), + (0x208B, "M", "−"), + (0x208C, "3", "="), + (0x208D, "3", "("), + (0x208E, "3", ")"), + (0x208F, "X"), + (0x2090, "M", "a"), + (0x2091, "M", "e"), + (0x2092, "M", "o"), + (0x2093, "M", "x"), + (0x2094, "M", "ə"), + (0x2095, "M", "h"), + (0x2096, "M", "k"), + (0x2097, "M", "l"), + (0x2098, "M", "m"), + (0x2099, "M", "n"), + (0x209A, "M", "p"), + (0x209B, "M", "s"), + (0x209C, "M", "t"), + (0x209D, "X"), + (0x20A0, "V"), + (0x20A8, "M", "rs"), + (0x20A9, "V"), + (0x20C1, "X"), + (0x20D0, "V"), + (0x20F1, "X"), + (0x2100, "3", "a/c"), + (0x2101, "3", "a/s"), + (0x2102, "M", "c"), + (0x2103, "M", "°c"), + (0x2104, "V"), + ] + + +def _seg_22() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2105, "3", "c/o"), + (0x2106, "3", "c/u"), + (0x2107, "M", "ɛ"), + (0x2108, "V"), + (0x2109, "M", "°f"), + (0x210A, "M", "g"), + (0x210B, "M", "h"), + (0x210F, "M", "ħ"), + (0x2110, "M", "i"), + (0x2112, "M", "l"), + (0x2114, "V"), + (0x2115, "M", "n"), + (0x2116, "M", "no"), + (0x2117, "V"), + (0x2119, "M", "p"), + (0x211A, "M", "q"), + (0x211B, "M", "r"), + (0x211E, "V"), + (0x2120, "M", "sm"), + (0x2121, "M", "tel"), + (0x2122, "M", "tm"), + (0x2123, "V"), + (0x2124, "M", "z"), + (0x2125, "V"), + (0x2126, "M", "ω"), + (0x2127, "V"), + (0x2128, "M", "z"), + (0x2129, "V"), + (0x212A, "M", "k"), + (0x212B, "M", "å"), + (0x212C, "M", "b"), + (0x212D, "M", "c"), + (0x212E, "V"), + (0x212F, "M", "e"), + (0x2131, "M", "f"), + (0x2132, "X"), + (0x2133, "M", "m"), + (0x2134, "M", "o"), + (0x2135, "M", "א"), + (0x2136, "M", "ב"), + (0x2137, "M", "ג"), + (0x2138, "M", "ד"), + (0x2139, "M", "i"), + (0x213A, "V"), + (0x213B, "M", "fax"), + (0x213C, "M", "π"), + (0x213D, "M", "γ"), + (0x213F, "M", "π"), + (0x2140, "M", "∑"), + (0x2141, "V"), + (0x2145, "M", "d"), + (0x2147, "M", "e"), + (0x2148, "M", "i"), + (0x2149, "M", "j"), + (0x214A, "V"), + (0x2150, "M", "1⁄7"), + (0x2151, "M", "1⁄9"), + (0x2152, "M", "1⁄10"), + (0x2153, "M", "1⁄3"), + (0x2154, "M", "2⁄3"), + (0x2155, "M", "1⁄5"), + (0x2156, "M", "2⁄5"), + (0x2157, "M", "3⁄5"), + (0x2158, "M", "4⁄5"), + (0x2159, "M", "1⁄6"), + (0x215A, "M", "5⁄6"), + (0x215B, "M", "1⁄8"), + (0x215C, "M", "3⁄8"), + (0x215D, "M", "5⁄8"), + (0x215E, "M", "7⁄8"), + (0x215F, "M", "1⁄"), + (0x2160, "M", "i"), + (0x2161, "M", "ii"), + (0x2162, "M", "iii"), + (0x2163, "M", "iv"), + (0x2164, "M", "v"), + (0x2165, "M", "vi"), + (0x2166, "M", "vii"), + (0x2167, "M", "viii"), + (0x2168, "M", "ix"), + (0x2169, "M", "x"), + (0x216A, "M", "xi"), + (0x216B, "M", "xii"), + (0x216C, "M", "l"), + (0x216D, "M", "c"), + (0x216E, "M", "d"), + (0x216F, "M", "m"), + (0x2170, "M", "i"), + (0x2171, "M", "ii"), + (0x2172, "M", "iii"), + (0x2173, "M", "iv"), + (0x2174, "M", "v"), + (0x2175, "M", "vi"), + (0x2176, "M", "vii"), + (0x2177, "M", "viii"), + (0x2178, "M", "ix"), + (0x2179, "M", "x"), + (0x217A, "M", "xi"), + (0x217B, "M", "xii"), + (0x217C, "M", "l"), + ] + + +def _seg_23() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x217D, "M", "c"), + (0x217E, "M", "d"), + (0x217F, "M", "m"), + (0x2180, "V"), + (0x2183, "X"), + (0x2184, "V"), + (0x2189, "M", "0⁄3"), + (0x218A, "V"), + (0x218C, "X"), + (0x2190, "V"), + (0x222C, "M", "∫∫"), + (0x222D, "M", "∫∫∫"), + (0x222E, "V"), + (0x222F, "M", "∮∮"), + (0x2230, "M", "∮∮∮"), + (0x2231, "V"), + (0x2329, "M", "〈"), + (0x232A, "M", "〉"), + (0x232B, "V"), + (0x2427, "X"), + (0x2440, "V"), + (0x244B, "X"), + (0x2460, "M", "1"), + (0x2461, "M", "2"), + (0x2462, "M", "3"), + (0x2463, "M", "4"), + (0x2464, "M", "5"), + (0x2465, "M", "6"), + (0x2466, "M", "7"), + (0x2467, "M", "8"), + (0x2468, "M", "9"), + (0x2469, "M", "10"), + (0x246A, "M", "11"), + (0x246B, "M", "12"), + (0x246C, "M", "13"), + (0x246D, "M", "14"), + (0x246E, "M", "15"), + (0x246F, "M", "16"), + (0x2470, "M", "17"), + (0x2471, "M", "18"), + (0x2472, "M", "19"), + (0x2473, "M", "20"), + (0x2474, "3", "(1)"), + (0x2475, "3", "(2)"), + (0x2476, "3", "(3)"), + (0x2477, "3", "(4)"), + (0x2478, "3", "(5)"), + (0x2479, "3", "(6)"), + (0x247A, "3", "(7)"), + (0x247B, "3", "(8)"), + (0x247C, "3", "(9)"), + (0x247D, "3", "(10)"), + (0x247E, "3", "(11)"), + (0x247F, "3", "(12)"), + (0x2480, "3", "(13)"), + (0x2481, "3", "(14)"), + (0x2482, "3", "(15)"), + (0x2483, "3", "(16)"), + (0x2484, "3", "(17)"), + (0x2485, "3", "(18)"), + (0x2486, "3", "(19)"), + (0x2487, "3", "(20)"), + (0x2488, "X"), + (0x249C, "3", "(a)"), + (0x249D, "3", "(b)"), + (0x249E, "3", "(c)"), + (0x249F, "3", "(d)"), + (0x24A0, "3", "(e)"), + (0x24A1, "3", "(f)"), + (0x24A2, "3", "(g)"), + (0x24A3, "3", "(h)"), + (0x24A4, "3", "(i)"), + (0x24A5, "3", "(j)"), + (0x24A6, "3", "(k)"), + (0x24A7, "3", "(l)"), + (0x24A8, "3", "(m)"), + (0x24A9, "3", "(n)"), + (0x24AA, "3", "(o)"), + (0x24AB, "3", "(p)"), + (0x24AC, "3", "(q)"), + (0x24AD, "3", "(r)"), + (0x24AE, "3", "(s)"), + (0x24AF, "3", "(t)"), + (0x24B0, "3", "(u)"), + (0x24B1, "3", "(v)"), + (0x24B2, "3", "(w)"), + (0x24B3, "3", "(x)"), + (0x24B4, "3", "(y)"), + (0x24B5, "3", "(z)"), + (0x24B6, "M", "a"), + (0x24B7, "M", "b"), + (0x24B8, "M", "c"), + (0x24B9, "M", "d"), + (0x24BA, "M", "e"), + (0x24BB, "M", "f"), + (0x24BC, "M", "g"), + (0x24BD, "M", "h"), + (0x24BE, "M", "i"), + (0x24BF, "M", "j"), + (0x24C0, "M", "k"), + ] + + +def _seg_24() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x24C1, "M", "l"), + (0x24C2, "M", "m"), + (0x24C3, "M", "n"), + (0x24C4, "M", "o"), + (0x24C5, "M", "p"), + (0x24C6, "M", "q"), + (0x24C7, "M", "r"), + (0x24C8, "M", "s"), + (0x24C9, "M", "t"), + (0x24CA, "M", "u"), + (0x24CB, "M", "v"), + (0x24CC, "M", "w"), + (0x24CD, "M", "x"), + (0x24CE, "M", "y"), + (0x24CF, "M", "z"), + (0x24D0, "M", "a"), + (0x24D1, "M", "b"), + (0x24D2, "M", "c"), + (0x24D3, "M", "d"), + (0x24D4, "M", "e"), + (0x24D5, "M", "f"), + (0x24D6, "M", "g"), + (0x24D7, "M", "h"), + (0x24D8, "M", "i"), + (0x24D9, "M", "j"), + (0x24DA, "M", "k"), + (0x24DB, "M", "l"), + (0x24DC, "M", "m"), + (0x24DD, "M", "n"), + (0x24DE, "M", "o"), + (0x24DF, "M", "p"), + (0x24E0, "M", "q"), + (0x24E1, "M", "r"), + (0x24E2, "M", "s"), + (0x24E3, "M", "t"), + (0x24E4, "M", "u"), + (0x24E5, "M", "v"), + (0x24E6, "M", "w"), + (0x24E7, "M", "x"), + (0x24E8, "M", "y"), + (0x24E9, "M", "z"), + (0x24EA, "M", "0"), + (0x24EB, "V"), + (0x2A0C, "M", "∫∫∫∫"), + (0x2A0D, "V"), + (0x2A74, "3", "::="), + (0x2A75, "3", "=="), + (0x2A76, "3", "==="), + (0x2A77, "V"), + (0x2ADC, "M", "⫝̸"), + (0x2ADD, "V"), + (0x2B74, "X"), + (0x2B76, "V"), + (0x2B96, "X"), + (0x2B97, "V"), + (0x2C00, "M", "ⰰ"), + (0x2C01, "M", "ⰱ"), + (0x2C02, "M", "ⰲ"), + (0x2C03, "M", "ⰳ"), + (0x2C04, "M", "ⰴ"), + (0x2C05, "M", "ⰵ"), + (0x2C06, "M", "ⰶ"), + (0x2C07, "M", "ⰷ"), + (0x2C08, "M", "ⰸ"), + (0x2C09, "M", "ⰹ"), + (0x2C0A, "M", "ⰺ"), + (0x2C0B, "M", "ⰻ"), + (0x2C0C, "M", "ⰼ"), + (0x2C0D, "M", "ⰽ"), + (0x2C0E, "M", "ⰾ"), + (0x2C0F, "M", "ⰿ"), + (0x2C10, "M", "ⱀ"), + (0x2C11, "M", "ⱁ"), + (0x2C12, "M", "ⱂ"), + (0x2C13, "M", "ⱃ"), + (0x2C14, "M", "ⱄ"), + (0x2C15, "M", "ⱅ"), + (0x2C16, "M", "ⱆ"), + (0x2C17, "M", "ⱇ"), + (0x2C18, "M", "ⱈ"), + (0x2C19, "M", "ⱉ"), + (0x2C1A, "M", "ⱊ"), + (0x2C1B, "M", "ⱋ"), + (0x2C1C, "M", "ⱌ"), + (0x2C1D, "M", "ⱍ"), + (0x2C1E, "M", "ⱎ"), + (0x2C1F, "M", "ⱏ"), + (0x2C20, "M", "ⱐ"), + (0x2C21, "M", "ⱑ"), + (0x2C22, "M", "ⱒ"), + (0x2C23, "M", "ⱓ"), + (0x2C24, "M", "ⱔ"), + (0x2C25, "M", "ⱕ"), + (0x2C26, "M", "ⱖ"), + (0x2C27, "M", "ⱗ"), + (0x2C28, "M", "ⱘ"), + (0x2C29, "M", "ⱙ"), + (0x2C2A, "M", "ⱚ"), + (0x2C2B, "M", "ⱛ"), + (0x2C2C, "M", "ⱜ"), + ] + + +def _seg_25() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2C2D, "M", "ⱝ"), + (0x2C2E, "M", "ⱞ"), + (0x2C2F, "M", "ⱟ"), + (0x2C30, "V"), + (0x2C60, "M", "ⱡ"), + (0x2C61, "V"), + (0x2C62, "M", "ɫ"), + (0x2C63, "M", "ᵽ"), + (0x2C64, "M", "ɽ"), + (0x2C65, "V"), + (0x2C67, "M", "ⱨ"), + (0x2C68, "V"), + (0x2C69, "M", "ⱪ"), + (0x2C6A, "V"), + (0x2C6B, "M", "ⱬ"), + (0x2C6C, "V"), + (0x2C6D, "M", "ɑ"), + (0x2C6E, "M", "ɱ"), + (0x2C6F, "M", "ɐ"), + (0x2C70, "M", "ɒ"), + (0x2C71, "V"), + (0x2C72, "M", "ⱳ"), + (0x2C73, "V"), + (0x2C75, "M", "ⱶ"), + (0x2C76, "V"), + (0x2C7C, "M", "j"), + (0x2C7D, "M", "v"), + (0x2C7E, "M", "ȿ"), + (0x2C7F, "M", "ɀ"), + (0x2C80, "M", "ⲁ"), + (0x2C81, "V"), + (0x2C82, "M", "ⲃ"), + (0x2C83, "V"), + (0x2C84, "M", "ⲅ"), + (0x2C85, "V"), + (0x2C86, "M", "ⲇ"), + (0x2C87, "V"), + (0x2C88, "M", "ⲉ"), + (0x2C89, "V"), + (0x2C8A, "M", "ⲋ"), + (0x2C8B, "V"), + (0x2C8C, "M", "ⲍ"), + (0x2C8D, "V"), + (0x2C8E, "M", "ⲏ"), + (0x2C8F, "V"), + (0x2C90, "M", "ⲑ"), + (0x2C91, "V"), + (0x2C92, "M", "ⲓ"), + (0x2C93, "V"), + (0x2C94, "M", "ⲕ"), + (0x2C95, "V"), + (0x2C96, "M", "ⲗ"), + (0x2C97, "V"), + (0x2C98, "M", "ⲙ"), + (0x2C99, "V"), + (0x2C9A, "M", "ⲛ"), + (0x2C9B, "V"), + (0x2C9C, "M", "ⲝ"), + (0x2C9D, "V"), + (0x2C9E, "M", "ⲟ"), + (0x2C9F, "V"), + (0x2CA0, "M", "ⲡ"), + (0x2CA1, "V"), + (0x2CA2, "M", "ⲣ"), + (0x2CA3, "V"), + (0x2CA4, "M", "ⲥ"), + (0x2CA5, "V"), + (0x2CA6, "M", "ⲧ"), + (0x2CA7, "V"), + (0x2CA8, "M", "ⲩ"), + (0x2CA9, "V"), + (0x2CAA, "M", "ⲫ"), + (0x2CAB, "V"), + (0x2CAC, "M", "ⲭ"), + (0x2CAD, "V"), + (0x2CAE, "M", "ⲯ"), + (0x2CAF, "V"), + (0x2CB0, "M", "ⲱ"), + (0x2CB1, "V"), + (0x2CB2, "M", "ⲳ"), + (0x2CB3, "V"), + (0x2CB4, "M", "ⲵ"), + (0x2CB5, "V"), + (0x2CB6, "M", "ⲷ"), + (0x2CB7, "V"), + (0x2CB8, "M", "ⲹ"), + (0x2CB9, "V"), + (0x2CBA, "M", "ⲻ"), + (0x2CBB, "V"), + (0x2CBC, "M", "ⲽ"), + (0x2CBD, "V"), + (0x2CBE, "M", "ⲿ"), + (0x2CBF, "V"), + (0x2CC0, "M", "ⳁ"), + (0x2CC1, "V"), + (0x2CC2, "M", "ⳃ"), + (0x2CC3, "V"), + (0x2CC4, "M", "ⳅ"), + (0x2CC5, "V"), + (0x2CC6, "M", "ⳇ"), + ] + + +def _seg_26() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2CC7, "V"), + (0x2CC8, "M", "ⳉ"), + (0x2CC9, "V"), + (0x2CCA, "M", "ⳋ"), + (0x2CCB, "V"), + (0x2CCC, "M", "ⳍ"), + (0x2CCD, "V"), + (0x2CCE, "M", "ⳏ"), + (0x2CCF, "V"), + (0x2CD0, "M", "ⳑ"), + (0x2CD1, "V"), + (0x2CD2, "M", "ⳓ"), + (0x2CD3, "V"), + (0x2CD4, "M", "ⳕ"), + (0x2CD5, "V"), + (0x2CD6, "M", "ⳗ"), + (0x2CD7, "V"), + (0x2CD8, "M", "ⳙ"), + (0x2CD9, "V"), + (0x2CDA, "M", "ⳛ"), + (0x2CDB, "V"), + (0x2CDC, "M", "ⳝ"), + (0x2CDD, "V"), + (0x2CDE, "M", "ⳟ"), + (0x2CDF, "V"), + (0x2CE0, "M", "ⳡ"), + (0x2CE1, "V"), + (0x2CE2, "M", "ⳣ"), + (0x2CE3, "V"), + (0x2CEB, "M", "ⳬ"), + (0x2CEC, "V"), + (0x2CED, "M", "ⳮ"), + (0x2CEE, "V"), + (0x2CF2, "M", "ⳳ"), + (0x2CF3, "V"), + (0x2CF4, "X"), + (0x2CF9, "V"), + (0x2D26, "X"), + (0x2D27, "V"), + (0x2D28, "X"), + (0x2D2D, "V"), + (0x2D2E, "X"), + (0x2D30, "V"), + (0x2D68, "X"), + (0x2D6F, "M", "ⵡ"), + (0x2D70, "V"), + (0x2D71, "X"), + (0x2D7F, "V"), + (0x2D97, "X"), + (0x2DA0, "V"), + (0x2DA7, "X"), + (0x2DA8, "V"), + (0x2DAF, "X"), + (0x2DB0, "V"), + (0x2DB7, "X"), + (0x2DB8, "V"), + (0x2DBF, "X"), + (0x2DC0, "V"), + (0x2DC7, "X"), + (0x2DC8, "V"), + (0x2DCF, "X"), + (0x2DD0, "V"), + (0x2DD7, "X"), + (0x2DD8, "V"), + (0x2DDF, "X"), + (0x2DE0, "V"), + (0x2E5E, "X"), + (0x2E80, "V"), + (0x2E9A, "X"), + (0x2E9B, "V"), + (0x2E9F, "M", "母"), + (0x2EA0, "V"), + (0x2EF3, "M", "龟"), + (0x2EF4, "X"), + (0x2F00, "M", "一"), + (0x2F01, "M", "丨"), + (0x2F02, "M", "丶"), + (0x2F03, "M", "丿"), + (0x2F04, "M", "乙"), + (0x2F05, "M", "亅"), + (0x2F06, "M", "二"), + (0x2F07, "M", "亠"), + (0x2F08, "M", "人"), + (0x2F09, "M", "儿"), + (0x2F0A, "M", "入"), + (0x2F0B, "M", "八"), + (0x2F0C, "M", "冂"), + (0x2F0D, "M", "冖"), + (0x2F0E, "M", "冫"), + (0x2F0F, "M", "几"), + (0x2F10, "M", "凵"), + (0x2F11, "M", "刀"), + (0x2F12, "M", "力"), + (0x2F13, "M", "勹"), + (0x2F14, "M", "匕"), + (0x2F15, "M", "匚"), + (0x2F16, "M", "匸"), + (0x2F17, "M", "十"), + (0x2F18, "M", "卜"), + (0x2F19, "M", "卩"), + ] + + +def _seg_27() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F1A, "M", "厂"), + (0x2F1B, "M", "厶"), + (0x2F1C, "M", "又"), + (0x2F1D, "M", "口"), + (0x2F1E, "M", "囗"), + (0x2F1F, "M", "土"), + (0x2F20, "M", "士"), + (0x2F21, "M", "夂"), + (0x2F22, "M", "夊"), + (0x2F23, "M", "夕"), + (0x2F24, "M", "大"), + (0x2F25, "M", "女"), + (0x2F26, "M", "子"), + (0x2F27, "M", "宀"), + (0x2F28, "M", "寸"), + (0x2F29, "M", "小"), + (0x2F2A, "M", "尢"), + (0x2F2B, "M", "尸"), + (0x2F2C, "M", "屮"), + (0x2F2D, "M", "山"), + (0x2F2E, "M", "巛"), + (0x2F2F, "M", "工"), + (0x2F30, "M", "己"), + (0x2F31, "M", "巾"), + (0x2F32, "M", "干"), + (0x2F33, "M", "幺"), + (0x2F34, "M", "广"), + (0x2F35, "M", "廴"), + (0x2F36, "M", "廾"), + (0x2F37, "M", "弋"), + (0x2F38, "M", "弓"), + (0x2F39, "M", "彐"), + (0x2F3A, "M", "彡"), + (0x2F3B, "M", "彳"), + (0x2F3C, "M", "心"), + (0x2F3D, "M", "戈"), + (0x2F3E, "M", "戶"), + (0x2F3F, "M", "手"), + (0x2F40, "M", "支"), + (0x2F41, "M", "攴"), + (0x2F42, "M", "文"), + (0x2F43, "M", "斗"), + (0x2F44, "M", "斤"), + (0x2F45, "M", "方"), + (0x2F46, "M", "无"), + (0x2F47, "M", "日"), + (0x2F48, "M", "曰"), + (0x2F49, "M", "月"), + (0x2F4A, "M", "木"), + (0x2F4B, "M", "欠"), + (0x2F4C, "M", "止"), + (0x2F4D, "M", "歹"), + (0x2F4E, "M", "殳"), + (0x2F4F, "M", "毋"), + (0x2F50, "M", "比"), + (0x2F51, "M", "毛"), + (0x2F52, "M", "氏"), + (0x2F53, "M", "气"), + (0x2F54, "M", "水"), + (0x2F55, "M", "火"), + (0x2F56, "M", "爪"), + (0x2F57, "M", "父"), + (0x2F58, "M", "爻"), + (0x2F59, "M", "爿"), + (0x2F5A, "M", "片"), + (0x2F5B, "M", "牙"), + (0x2F5C, "M", "牛"), + (0x2F5D, "M", "犬"), + (0x2F5E, "M", "玄"), + (0x2F5F, "M", "玉"), + (0x2F60, "M", "瓜"), + (0x2F61, "M", "瓦"), + (0x2F62, "M", "甘"), + (0x2F63, "M", "生"), + (0x2F64, "M", "用"), + (0x2F65, "M", "田"), + (0x2F66, "M", "疋"), + (0x2F67, "M", "疒"), + (0x2F68, "M", "癶"), + (0x2F69, "M", "白"), + (0x2F6A, "M", "皮"), + (0x2F6B, "M", "皿"), + (0x2F6C, "M", "目"), + (0x2F6D, "M", "矛"), + (0x2F6E, "M", "矢"), + (0x2F6F, "M", "石"), + (0x2F70, "M", "示"), + (0x2F71, "M", "禸"), + (0x2F72, "M", "禾"), + (0x2F73, "M", "穴"), + (0x2F74, "M", "立"), + (0x2F75, "M", "竹"), + (0x2F76, "M", "米"), + (0x2F77, "M", "糸"), + (0x2F78, "M", "缶"), + (0x2F79, "M", "网"), + (0x2F7A, "M", "羊"), + (0x2F7B, "M", "羽"), + (0x2F7C, "M", "老"), + (0x2F7D, "M", "而"), + ] + + +def _seg_28() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F7E, "M", "耒"), + (0x2F7F, "M", "耳"), + (0x2F80, "M", "聿"), + (0x2F81, "M", "肉"), + (0x2F82, "M", "臣"), + (0x2F83, "M", "自"), + (0x2F84, "M", "至"), + (0x2F85, "M", "臼"), + (0x2F86, "M", "舌"), + (0x2F87, "M", "舛"), + (0x2F88, "M", "舟"), + (0x2F89, "M", "艮"), + (0x2F8A, "M", "色"), + (0x2F8B, "M", "艸"), + (0x2F8C, "M", "虍"), + (0x2F8D, "M", "虫"), + (0x2F8E, "M", "血"), + (0x2F8F, "M", "行"), + (0x2F90, "M", "衣"), + (0x2F91, "M", "襾"), + (0x2F92, "M", "見"), + (0x2F93, "M", "角"), + (0x2F94, "M", "言"), + (0x2F95, "M", "谷"), + (0x2F96, "M", "豆"), + (0x2F97, "M", "豕"), + (0x2F98, "M", "豸"), + (0x2F99, "M", "貝"), + (0x2F9A, "M", "赤"), + (0x2F9B, "M", "走"), + (0x2F9C, "M", "足"), + (0x2F9D, "M", "身"), + (0x2F9E, "M", "車"), + (0x2F9F, "M", "辛"), + (0x2FA0, "M", "辰"), + (0x2FA1, "M", "辵"), + (0x2FA2, "M", "邑"), + (0x2FA3, "M", "酉"), + (0x2FA4, "M", "釆"), + (0x2FA5, "M", "里"), + (0x2FA6, "M", "金"), + (0x2FA7, "M", "長"), + (0x2FA8, "M", "門"), + (0x2FA9, "M", "阜"), + (0x2FAA, "M", "隶"), + (0x2FAB, "M", "隹"), + (0x2FAC, "M", "雨"), + (0x2FAD, "M", "靑"), + (0x2FAE, "M", "非"), + (0x2FAF, "M", "面"), + (0x2FB0, "M", "革"), + (0x2FB1, "M", "韋"), + (0x2FB2, "M", "韭"), + (0x2FB3, "M", "音"), + (0x2FB4, "M", "頁"), + (0x2FB5, "M", "風"), + (0x2FB6, "M", "飛"), + (0x2FB7, "M", "食"), + (0x2FB8, "M", "首"), + (0x2FB9, "M", "香"), + (0x2FBA, "M", "馬"), + (0x2FBB, "M", "骨"), + (0x2FBC, "M", "高"), + (0x2FBD, "M", "髟"), + (0x2FBE, "M", "鬥"), + (0x2FBF, "M", "鬯"), + (0x2FC0, "M", "鬲"), + (0x2FC1, "M", "鬼"), + (0x2FC2, "M", "魚"), + (0x2FC3, "M", "鳥"), + (0x2FC4, "M", "鹵"), + (0x2FC5, "M", "鹿"), + (0x2FC6, "M", "麥"), + (0x2FC7, "M", "麻"), + (0x2FC8, "M", "黃"), + (0x2FC9, "M", "黍"), + (0x2FCA, "M", "黑"), + (0x2FCB, "M", "黹"), + (0x2FCC, "M", "黽"), + (0x2FCD, "M", "鼎"), + (0x2FCE, "M", "鼓"), + (0x2FCF, "M", "鼠"), + (0x2FD0, "M", "鼻"), + (0x2FD1, "M", "齊"), + (0x2FD2, "M", "齒"), + (0x2FD3, "M", "龍"), + (0x2FD4, "M", "龜"), + (0x2FD5, "M", "龠"), + (0x2FD6, "X"), + (0x3000, "3", " "), + (0x3001, "V"), + (0x3002, "M", "."), + (0x3003, "V"), + (0x3036, "M", "〒"), + (0x3037, "V"), + (0x3038, "M", "十"), + (0x3039, "M", "卄"), + (0x303A, "M", "卅"), + (0x303B, "V"), + (0x3040, "X"), + ] + + +def _seg_29() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x3041, "V"), + (0x3097, "X"), + (0x3099, "V"), + (0x309B, "3", " ゙"), + (0x309C, "3", " ゚"), + (0x309D, "V"), + (0x309F, "M", "より"), + (0x30A0, "V"), + (0x30FF, "M", "コト"), + (0x3100, "X"), + (0x3105, "V"), + (0x3130, "X"), + (0x3131, "M", "ᄀ"), + (0x3132, "M", "ᄁ"), + (0x3133, "M", "ᆪ"), + (0x3134, "M", "ᄂ"), + (0x3135, "M", "ᆬ"), + (0x3136, "M", "ᆭ"), + (0x3137, "M", "ᄃ"), + (0x3138, "M", "ᄄ"), + (0x3139, "M", "ᄅ"), + (0x313A, "M", "ᆰ"), + (0x313B, "M", "ᆱ"), + (0x313C, "M", "ᆲ"), + (0x313D, "M", "ᆳ"), + (0x313E, "M", "ᆴ"), + (0x313F, "M", "ᆵ"), + (0x3140, "M", "ᄚ"), + (0x3141, "M", "ᄆ"), + (0x3142, "M", "ᄇ"), + (0x3143, "M", "ᄈ"), + (0x3144, "M", "ᄡ"), + (0x3145, "M", "ᄉ"), + (0x3146, "M", "ᄊ"), + (0x3147, "M", "ᄋ"), + (0x3148, "M", "ᄌ"), + (0x3149, "M", "ᄍ"), + (0x314A, "M", "ᄎ"), + (0x314B, "M", "ᄏ"), + (0x314C, "M", "ᄐ"), + (0x314D, "M", "ᄑ"), + (0x314E, "M", "ᄒ"), + (0x314F, "M", "ᅡ"), + (0x3150, "M", "ᅢ"), + (0x3151, "M", "ᅣ"), + (0x3152, "M", "ᅤ"), + (0x3153, "M", "ᅥ"), + (0x3154, "M", "ᅦ"), + (0x3155, "M", "ᅧ"), + (0x3156, "M", "ᅨ"), + (0x3157, "M", "ᅩ"), + (0x3158, "M", "ᅪ"), + (0x3159, "M", "ᅫ"), + (0x315A, "M", "ᅬ"), + (0x315B, "M", "ᅭ"), + (0x315C, "M", "ᅮ"), + (0x315D, "M", "ᅯ"), + (0x315E, "M", "ᅰ"), + (0x315F, "M", "ᅱ"), + (0x3160, "M", "ᅲ"), + (0x3161, "M", "ᅳ"), + (0x3162, "M", "ᅴ"), + (0x3163, "M", "ᅵ"), + (0x3164, "X"), + (0x3165, "M", "ᄔ"), + (0x3166, "M", "ᄕ"), + (0x3167, "M", "ᇇ"), + (0x3168, "M", "ᇈ"), + (0x3169, "M", "ᇌ"), + (0x316A, "M", "ᇎ"), + (0x316B, "M", "ᇓ"), + (0x316C, "M", "ᇗ"), + (0x316D, "M", "ᇙ"), + (0x316E, "M", "ᄜ"), + (0x316F, "M", "ᇝ"), + (0x3170, "M", "ᇟ"), + (0x3171, "M", "ᄝ"), + (0x3172, "M", "ᄞ"), + (0x3173, "M", "ᄠ"), + (0x3174, "M", "ᄢ"), + (0x3175, "M", "ᄣ"), + (0x3176, "M", "ᄧ"), + (0x3177, "M", "ᄩ"), + (0x3178, "M", "ᄫ"), + (0x3179, "M", "ᄬ"), + (0x317A, "M", "ᄭ"), + (0x317B, "M", "ᄮ"), + (0x317C, "M", "ᄯ"), + (0x317D, "M", "ᄲ"), + (0x317E, "M", "ᄶ"), + (0x317F, "M", "ᅀ"), + (0x3180, "M", "ᅇ"), + (0x3181, "M", "ᅌ"), + (0x3182, "M", "ᇱ"), + (0x3183, "M", "ᇲ"), + (0x3184, "M", "ᅗ"), + (0x3185, "M", "ᅘ"), + (0x3186, "M", "ᅙ"), + (0x3187, "M", "ᆄ"), + (0x3188, "M", "ᆅ"), + ] + + +def _seg_30() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x3189, "M", "ᆈ"), + (0x318A, "M", "ᆑ"), + (0x318B, "M", "ᆒ"), + (0x318C, "M", "ᆔ"), + (0x318D, "M", "ᆞ"), + (0x318E, "M", "ᆡ"), + (0x318F, "X"), + (0x3190, "V"), + (0x3192, "M", "一"), + (0x3193, "M", "二"), + (0x3194, "M", "三"), + (0x3195, "M", "四"), + (0x3196, "M", "上"), + (0x3197, "M", "中"), + (0x3198, "M", "下"), + (0x3199, "M", "甲"), + (0x319A, "M", "乙"), + (0x319B, "M", "丙"), + (0x319C, "M", "丁"), + (0x319D, "M", "天"), + (0x319E, "M", "地"), + (0x319F, "M", "人"), + (0x31A0, "V"), + (0x31E4, "X"), + (0x31F0, "V"), + (0x3200, "3", "(ᄀ)"), + (0x3201, "3", "(ᄂ)"), + (0x3202, "3", "(ᄃ)"), + (0x3203, "3", "(ᄅ)"), + (0x3204, "3", "(ᄆ)"), + (0x3205, "3", "(ᄇ)"), + (0x3206, "3", "(ᄉ)"), + (0x3207, "3", "(ᄋ)"), + (0x3208, "3", "(ᄌ)"), + (0x3209, "3", "(ᄎ)"), + (0x320A, "3", "(ᄏ)"), + (0x320B, "3", "(ᄐ)"), + (0x320C, "3", "(ᄑ)"), + (0x320D, "3", "(ᄒ)"), + (0x320E, "3", "(가)"), + (0x320F, "3", "(나)"), + (0x3210, "3", "(다)"), + (0x3211, "3", "(라)"), + (0x3212, "3", "(마)"), + (0x3213, "3", "(바)"), + (0x3214, "3", "(사)"), + (0x3215, "3", "(아)"), + (0x3216, "3", "(자)"), + (0x3217, "3", "(차)"), + (0x3218, "3", "(카)"), + (0x3219, "3", "(타)"), + (0x321A, "3", "(파)"), + (0x321B, "3", "(하)"), + (0x321C, "3", "(주)"), + (0x321D, "3", "(오전)"), + (0x321E, "3", "(오후)"), + (0x321F, "X"), + (0x3220, "3", "(一)"), + (0x3221, "3", "(二)"), + (0x3222, "3", "(三)"), + (0x3223, "3", "(四)"), + (0x3224, "3", "(五)"), + (0x3225, "3", "(六)"), + (0x3226, "3", "(七)"), + (0x3227, "3", "(八)"), + (0x3228, "3", "(九)"), + (0x3229, "3", "(十)"), + (0x322A, "3", "(月)"), + (0x322B, "3", "(火)"), + (0x322C, "3", "(水)"), + (0x322D, "3", "(木)"), + (0x322E, "3", "(金)"), + (0x322F, "3", "(土)"), + (0x3230, "3", "(日)"), + (0x3231, "3", "(株)"), + (0x3232, "3", "(有)"), + (0x3233, "3", "(社)"), + (0x3234, "3", "(名)"), + (0x3235, "3", "(特)"), + (0x3236, "3", "(財)"), + (0x3237, "3", "(祝)"), + (0x3238, "3", "(労)"), + (0x3239, "3", "(代)"), + (0x323A, "3", "(呼)"), + (0x323B, "3", "(学)"), + (0x323C, "3", "(監)"), + (0x323D, "3", "(企)"), + (0x323E, "3", "(資)"), + (0x323F, "3", "(協)"), + (0x3240, "3", "(祭)"), + (0x3241, "3", "(休)"), + (0x3242, "3", "(自)"), + (0x3243, "3", "(至)"), + (0x3244, "M", "問"), + (0x3245, "M", "幼"), + (0x3246, "M", "文"), + (0x3247, "M", "箏"), + (0x3248, "V"), + (0x3250, "M", "pte"), + (0x3251, "M", "21"), + ] + + +def _seg_31() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x3252, "M", "22"), + (0x3253, "M", "23"), + (0x3254, "M", "24"), + (0x3255, "M", "25"), + (0x3256, "M", "26"), + (0x3257, "M", "27"), + (0x3258, "M", "28"), + (0x3259, "M", "29"), + (0x325A, "M", "30"), + (0x325B, "M", "31"), + (0x325C, "M", "32"), + (0x325D, "M", "33"), + (0x325E, "M", "34"), + (0x325F, "M", "35"), + (0x3260, "M", "ᄀ"), + (0x3261, "M", "ᄂ"), + (0x3262, "M", "ᄃ"), + (0x3263, "M", "ᄅ"), + (0x3264, "M", "ᄆ"), + (0x3265, "M", "ᄇ"), + (0x3266, "M", "ᄉ"), + (0x3267, "M", "ᄋ"), + (0x3268, "M", "ᄌ"), + (0x3269, "M", "ᄎ"), + (0x326A, "M", "ᄏ"), + (0x326B, "M", "ᄐ"), + (0x326C, "M", "ᄑ"), + (0x326D, "M", "ᄒ"), + (0x326E, "M", "가"), + (0x326F, "M", "나"), + (0x3270, "M", "다"), + (0x3271, "M", "라"), + (0x3272, "M", "마"), + (0x3273, "M", "바"), + (0x3274, "M", "사"), + (0x3275, "M", "아"), + (0x3276, "M", "자"), + (0x3277, "M", "차"), + (0x3278, "M", "카"), + (0x3279, "M", "타"), + (0x327A, "M", "파"), + (0x327B, "M", "하"), + (0x327C, "M", "참고"), + (0x327D, "M", "주의"), + (0x327E, "M", "우"), + (0x327F, "V"), + (0x3280, "M", "一"), + (0x3281, "M", "二"), + (0x3282, "M", "三"), + (0x3283, "M", "四"), + (0x3284, "M", "五"), + (0x3285, "M", "六"), + (0x3286, "M", "七"), + (0x3287, "M", "八"), + (0x3288, "M", "九"), + (0x3289, "M", "十"), + (0x328A, "M", "月"), + (0x328B, "M", "火"), + (0x328C, "M", "水"), + (0x328D, "M", "木"), + (0x328E, "M", "金"), + (0x328F, "M", "土"), + (0x3290, "M", "日"), + (0x3291, "M", "株"), + (0x3292, "M", "有"), + (0x3293, "M", "社"), + (0x3294, "M", "名"), + (0x3295, "M", "特"), + (0x3296, "M", "財"), + (0x3297, "M", "祝"), + (0x3298, "M", "労"), + (0x3299, "M", "秘"), + (0x329A, "M", "男"), + (0x329B, "M", "女"), + (0x329C, "M", "適"), + (0x329D, "M", "優"), + (0x329E, "M", "印"), + (0x329F, "M", "注"), + (0x32A0, "M", "項"), + (0x32A1, "M", "休"), + (0x32A2, "M", "写"), + (0x32A3, "M", "正"), + (0x32A4, "M", "上"), + (0x32A5, "M", "中"), + (0x32A6, "M", "下"), + (0x32A7, "M", "左"), + (0x32A8, "M", "右"), + (0x32A9, "M", "医"), + (0x32AA, "M", "宗"), + (0x32AB, "M", "学"), + (0x32AC, "M", "監"), + (0x32AD, "M", "企"), + (0x32AE, "M", "資"), + (0x32AF, "M", "協"), + (0x32B0, "M", "夜"), + (0x32B1, "M", "36"), + (0x32B2, "M", "37"), + (0x32B3, "M", "38"), + (0x32B4, "M", "39"), + (0x32B5, "M", "40"), + ] + + +def _seg_32() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x32B6, "M", "41"), + (0x32B7, "M", "42"), + (0x32B8, "M", "43"), + (0x32B9, "M", "44"), + (0x32BA, "M", "45"), + (0x32BB, "M", "46"), + (0x32BC, "M", "47"), + (0x32BD, "M", "48"), + (0x32BE, "M", "49"), + (0x32BF, "M", "50"), + (0x32C0, "M", "1月"), + (0x32C1, "M", "2月"), + (0x32C2, "M", "3月"), + (0x32C3, "M", "4月"), + (0x32C4, "M", "5月"), + (0x32C5, "M", "6月"), + (0x32C6, "M", "7月"), + (0x32C7, "M", "8月"), + (0x32C8, "M", "9月"), + (0x32C9, "M", "10月"), + (0x32CA, "M", "11月"), + (0x32CB, "M", "12月"), + (0x32CC, "M", "hg"), + (0x32CD, "M", "erg"), + (0x32CE, "M", "ev"), + (0x32CF, "M", "ltd"), + (0x32D0, "M", "ア"), + (0x32D1, "M", "イ"), + (0x32D2, "M", "ウ"), + (0x32D3, "M", "エ"), + (0x32D4, "M", "オ"), + (0x32D5, "M", "カ"), + (0x32D6, "M", "キ"), + (0x32D7, "M", "ク"), + (0x32D8, "M", "ケ"), + (0x32D9, "M", "コ"), + (0x32DA, "M", "サ"), + (0x32DB, "M", "シ"), + (0x32DC, "M", "ス"), + (0x32DD, "M", "セ"), + (0x32DE, "M", "ソ"), + (0x32DF, "M", "タ"), + (0x32E0, "M", "チ"), + (0x32E1, "M", "ツ"), + (0x32E2, "M", "テ"), + (0x32E3, "M", "ト"), + (0x32E4, "M", "ナ"), + (0x32E5, "M", "ニ"), + (0x32E6, "M", "ヌ"), + (0x32E7, "M", "ネ"), + (0x32E8, "M", "ノ"), + (0x32E9, "M", "ハ"), + (0x32EA, "M", "ヒ"), + (0x32EB, "M", "フ"), + (0x32EC, "M", "ヘ"), + (0x32ED, "M", "ホ"), + (0x32EE, "M", "マ"), + (0x32EF, "M", "ミ"), + (0x32F0, "M", "ム"), + (0x32F1, "M", "メ"), + (0x32F2, "M", "モ"), + (0x32F3, "M", "ヤ"), + (0x32F4, "M", "ユ"), + (0x32F5, "M", "ヨ"), + (0x32F6, "M", "ラ"), + (0x32F7, "M", "リ"), + (0x32F8, "M", "ル"), + (0x32F9, "M", "レ"), + (0x32FA, "M", "ロ"), + (0x32FB, "M", "ワ"), + (0x32FC, "M", "ヰ"), + (0x32FD, "M", "ヱ"), + (0x32FE, "M", "ヲ"), + (0x32FF, "M", "令和"), + (0x3300, "M", "アパート"), + (0x3301, "M", "アルファ"), + (0x3302, "M", "アンペア"), + (0x3303, "M", "アール"), + (0x3304, "M", "イニング"), + (0x3305, "M", "インチ"), + (0x3306, "M", "ウォン"), + (0x3307, "M", "エスクード"), + (0x3308, "M", "エーカー"), + (0x3309, "M", "オンス"), + (0x330A, "M", "オーム"), + (0x330B, "M", "カイリ"), + (0x330C, "M", "カラット"), + (0x330D, "M", "カロリー"), + (0x330E, "M", "ガロン"), + (0x330F, "M", "ガンマ"), + (0x3310, "M", "ギガ"), + (0x3311, "M", "ギニー"), + (0x3312, "M", "キュリー"), + (0x3313, "M", "ギルダー"), + (0x3314, "M", "キロ"), + (0x3315, "M", "キログラム"), + (0x3316, "M", "キロメートル"), + (0x3317, "M", "キロワット"), + (0x3318, "M", "グラム"), + (0x3319, "M", "グラムトン"), + ] + + +def _seg_33() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x331A, "M", "クルゼイロ"), + (0x331B, "M", "クローネ"), + (0x331C, "M", "ケース"), + (0x331D, "M", "コルナ"), + (0x331E, "M", "コーポ"), + (0x331F, "M", "サイクル"), + (0x3320, "M", "サンチーム"), + (0x3321, "M", "シリング"), + (0x3322, "M", "センチ"), + (0x3323, "M", "セント"), + (0x3324, "M", "ダース"), + (0x3325, "M", "デシ"), + (0x3326, "M", "ドル"), + (0x3327, "M", "トン"), + (0x3328, "M", "ナノ"), + (0x3329, "M", "ノット"), + (0x332A, "M", "ハイツ"), + (0x332B, "M", "パーセント"), + (0x332C, "M", "パーツ"), + (0x332D, "M", "バーレル"), + (0x332E, "M", "ピアストル"), + (0x332F, "M", "ピクル"), + (0x3330, "M", "ピコ"), + (0x3331, "M", "ビル"), + (0x3332, "M", "ファラッド"), + (0x3333, "M", "フィート"), + (0x3334, "M", "ブッシェル"), + (0x3335, "M", "フラン"), + (0x3336, "M", "ヘクタール"), + (0x3337, "M", "ペソ"), + (0x3338, "M", "ペニヒ"), + (0x3339, "M", "ヘルツ"), + (0x333A, "M", "ペンス"), + (0x333B, "M", "ページ"), + (0x333C, "M", "ベータ"), + (0x333D, "M", "ポイント"), + (0x333E, "M", "ボルト"), + (0x333F, "M", "ホン"), + (0x3340, "M", "ポンド"), + (0x3341, "M", "ホール"), + (0x3342, "M", "ホーン"), + (0x3343, "M", "マイクロ"), + (0x3344, "M", "マイル"), + (0x3345, "M", "マッハ"), + (0x3346, "M", "マルク"), + (0x3347, "M", "マンション"), + (0x3348, "M", "ミクロン"), + (0x3349, "M", "ミリ"), + (0x334A, "M", "ミリバール"), + (0x334B, "M", "メガ"), + (0x334C, "M", "メガトン"), + (0x334D, "M", "メートル"), + (0x334E, "M", "ヤード"), + (0x334F, "M", "ヤール"), + (0x3350, "M", "ユアン"), + (0x3351, "M", "リットル"), + (0x3352, "M", "リラ"), + (0x3353, "M", "ルピー"), + (0x3354, "M", "ルーブル"), + (0x3355, "M", "レム"), + (0x3356, "M", "レントゲン"), + (0x3357, "M", "ワット"), + (0x3358, "M", "0点"), + (0x3359, "M", "1点"), + (0x335A, "M", "2点"), + (0x335B, "M", "3点"), + (0x335C, "M", "4点"), + (0x335D, "M", "5点"), + (0x335E, "M", "6点"), + (0x335F, "M", "7点"), + (0x3360, "M", "8点"), + (0x3361, "M", "9点"), + (0x3362, "M", "10点"), + (0x3363, "M", "11点"), + (0x3364, "M", "12点"), + (0x3365, "M", "13点"), + (0x3366, "M", "14点"), + (0x3367, "M", "15点"), + (0x3368, "M", "16点"), + (0x3369, "M", "17点"), + (0x336A, "M", "18点"), + (0x336B, "M", "19点"), + (0x336C, "M", "20点"), + (0x336D, "M", "21点"), + (0x336E, "M", "22点"), + (0x336F, "M", "23点"), + (0x3370, "M", "24点"), + (0x3371, "M", "hpa"), + (0x3372, "M", "da"), + (0x3373, "M", "au"), + (0x3374, "M", "bar"), + (0x3375, "M", "ov"), + (0x3376, "M", "pc"), + (0x3377, "M", "dm"), + (0x3378, "M", "dm2"), + (0x3379, "M", "dm3"), + (0x337A, "M", "iu"), + (0x337B, "M", "平成"), + (0x337C, "M", "昭和"), + (0x337D, "M", "大正"), + ] + + +def _seg_34() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x337E, "M", "明治"), + (0x337F, "M", "株式会社"), + (0x3380, "M", "pa"), + (0x3381, "M", "na"), + (0x3382, "M", "μa"), + (0x3383, "M", "ma"), + (0x3384, "M", "ka"), + (0x3385, "M", "kb"), + (0x3386, "M", "mb"), + (0x3387, "M", "gb"), + (0x3388, "M", "cal"), + (0x3389, "M", "kcal"), + (0x338A, "M", "pf"), + (0x338B, "M", "nf"), + (0x338C, "M", "μf"), + (0x338D, "M", "μg"), + (0x338E, "M", "mg"), + (0x338F, "M", "kg"), + (0x3390, "M", "hz"), + (0x3391, "M", "khz"), + (0x3392, "M", "mhz"), + (0x3393, "M", "ghz"), + (0x3394, "M", "thz"), + (0x3395, "M", "μl"), + (0x3396, "M", "ml"), + (0x3397, "M", "dl"), + (0x3398, "M", "kl"), + (0x3399, "M", "fm"), + (0x339A, "M", "nm"), + (0x339B, "M", "μm"), + (0x339C, "M", "mm"), + (0x339D, "M", "cm"), + (0x339E, "M", "km"), + (0x339F, "M", "mm2"), + (0x33A0, "M", "cm2"), + (0x33A1, "M", "m2"), + (0x33A2, "M", "km2"), + (0x33A3, "M", "mm3"), + (0x33A4, "M", "cm3"), + (0x33A5, "M", "m3"), + (0x33A6, "M", "km3"), + (0x33A7, "M", "m∕s"), + (0x33A8, "M", "m∕s2"), + (0x33A9, "M", "pa"), + (0x33AA, "M", "kpa"), + (0x33AB, "M", "mpa"), + (0x33AC, "M", "gpa"), + (0x33AD, "M", "rad"), + (0x33AE, "M", "rad∕s"), + (0x33AF, "M", "rad∕s2"), + (0x33B0, "M", "ps"), + (0x33B1, "M", "ns"), + (0x33B2, "M", "μs"), + (0x33B3, "M", "ms"), + (0x33B4, "M", "pv"), + (0x33B5, "M", "nv"), + (0x33B6, "M", "μv"), + (0x33B7, "M", "mv"), + (0x33B8, "M", "kv"), + (0x33B9, "M", "mv"), + (0x33BA, "M", "pw"), + (0x33BB, "M", "nw"), + (0x33BC, "M", "μw"), + (0x33BD, "M", "mw"), + (0x33BE, "M", "kw"), + (0x33BF, "M", "mw"), + (0x33C0, "M", "kω"), + (0x33C1, "M", "mω"), + (0x33C2, "X"), + (0x33C3, "M", "bq"), + (0x33C4, "M", "cc"), + (0x33C5, "M", "cd"), + (0x33C6, "M", "c∕kg"), + (0x33C7, "X"), + (0x33C8, "M", "db"), + (0x33C9, "M", "gy"), + (0x33CA, "M", "ha"), + (0x33CB, "M", "hp"), + (0x33CC, "M", "in"), + (0x33CD, "M", "kk"), + (0x33CE, "M", "km"), + (0x33CF, "M", "kt"), + (0x33D0, "M", "lm"), + (0x33D1, "M", "ln"), + (0x33D2, "M", "log"), + (0x33D3, "M", "lx"), + (0x33D4, "M", "mb"), + (0x33D5, "M", "mil"), + (0x33D6, "M", "mol"), + (0x33D7, "M", "ph"), + (0x33D8, "X"), + (0x33D9, "M", "ppm"), + (0x33DA, "M", "pr"), + (0x33DB, "M", "sr"), + (0x33DC, "M", "sv"), + (0x33DD, "M", "wb"), + (0x33DE, "M", "v∕m"), + (0x33DF, "M", "a∕m"), + (0x33E0, "M", "1日"), + (0x33E1, "M", "2日"), + ] + + +def _seg_35() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x33E2, "M", "3日"), + (0x33E3, "M", "4日"), + (0x33E4, "M", "5日"), + (0x33E5, "M", "6日"), + (0x33E6, "M", "7日"), + (0x33E7, "M", "8日"), + (0x33E8, "M", "9日"), + (0x33E9, "M", "10日"), + (0x33EA, "M", "11日"), + (0x33EB, "M", "12日"), + (0x33EC, "M", "13日"), + (0x33ED, "M", "14日"), + (0x33EE, "M", "15日"), + (0x33EF, "M", "16日"), + (0x33F0, "M", "17日"), + (0x33F1, "M", "18日"), + (0x33F2, "M", "19日"), + (0x33F3, "M", "20日"), + (0x33F4, "M", "21日"), + (0x33F5, "M", "22日"), + (0x33F6, "M", "23日"), + (0x33F7, "M", "24日"), + (0x33F8, "M", "25日"), + (0x33F9, "M", "26日"), + (0x33FA, "M", "27日"), + (0x33FB, "M", "28日"), + (0x33FC, "M", "29日"), + (0x33FD, "M", "30日"), + (0x33FE, "M", "31日"), + (0x33FF, "M", "gal"), + (0x3400, "V"), + (0xA48D, "X"), + (0xA490, "V"), + (0xA4C7, "X"), + (0xA4D0, "V"), + (0xA62C, "X"), + (0xA640, "M", "ꙁ"), + (0xA641, "V"), + (0xA642, "M", "ꙃ"), + (0xA643, "V"), + (0xA644, "M", "ꙅ"), + (0xA645, "V"), + (0xA646, "M", "ꙇ"), + (0xA647, "V"), + (0xA648, "M", "ꙉ"), + (0xA649, "V"), + (0xA64A, "M", "ꙋ"), + (0xA64B, "V"), + (0xA64C, "M", "ꙍ"), + (0xA64D, "V"), + (0xA64E, "M", "ꙏ"), + (0xA64F, "V"), + (0xA650, "M", "ꙑ"), + (0xA651, "V"), + (0xA652, "M", "ꙓ"), + (0xA653, "V"), + (0xA654, "M", "ꙕ"), + (0xA655, "V"), + (0xA656, "M", "ꙗ"), + (0xA657, "V"), + (0xA658, "M", "ꙙ"), + (0xA659, "V"), + (0xA65A, "M", "ꙛ"), + (0xA65B, "V"), + (0xA65C, "M", "ꙝ"), + (0xA65D, "V"), + (0xA65E, "M", "ꙟ"), + (0xA65F, "V"), + (0xA660, "M", "ꙡ"), + (0xA661, "V"), + (0xA662, "M", "ꙣ"), + (0xA663, "V"), + (0xA664, "M", "ꙥ"), + (0xA665, "V"), + (0xA666, "M", "ꙧ"), + (0xA667, "V"), + (0xA668, "M", "ꙩ"), + (0xA669, "V"), + (0xA66A, "M", "ꙫ"), + (0xA66B, "V"), + (0xA66C, "M", "ꙭ"), + (0xA66D, "V"), + (0xA680, "M", "ꚁ"), + (0xA681, "V"), + (0xA682, "M", "ꚃ"), + (0xA683, "V"), + (0xA684, "M", "ꚅ"), + (0xA685, "V"), + (0xA686, "M", "ꚇ"), + (0xA687, "V"), + (0xA688, "M", "ꚉ"), + (0xA689, "V"), + (0xA68A, "M", "ꚋ"), + (0xA68B, "V"), + (0xA68C, "M", "ꚍ"), + (0xA68D, "V"), + (0xA68E, "M", "ꚏ"), + (0xA68F, "V"), + (0xA690, "M", "ꚑ"), + (0xA691, "V"), + ] + + +def _seg_36() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xA692, "M", "ꚓ"), + (0xA693, "V"), + (0xA694, "M", "ꚕ"), + (0xA695, "V"), + (0xA696, "M", "ꚗ"), + (0xA697, "V"), + (0xA698, "M", "ꚙ"), + (0xA699, "V"), + (0xA69A, "M", "ꚛ"), + (0xA69B, "V"), + (0xA69C, "M", "ъ"), + (0xA69D, "M", "ь"), + (0xA69E, "V"), + (0xA6F8, "X"), + (0xA700, "V"), + (0xA722, "M", "ꜣ"), + (0xA723, "V"), + (0xA724, "M", "ꜥ"), + (0xA725, "V"), + (0xA726, "M", "ꜧ"), + (0xA727, "V"), + (0xA728, "M", "ꜩ"), + (0xA729, "V"), + (0xA72A, "M", "ꜫ"), + (0xA72B, "V"), + (0xA72C, "M", "ꜭ"), + (0xA72D, "V"), + (0xA72E, "M", "ꜯ"), + (0xA72F, "V"), + (0xA732, "M", "ꜳ"), + (0xA733, "V"), + (0xA734, "M", "ꜵ"), + (0xA735, "V"), + (0xA736, "M", "ꜷ"), + (0xA737, "V"), + (0xA738, "M", "ꜹ"), + (0xA739, "V"), + (0xA73A, "M", "ꜻ"), + (0xA73B, "V"), + (0xA73C, "M", "ꜽ"), + (0xA73D, "V"), + (0xA73E, "M", "ꜿ"), + (0xA73F, "V"), + (0xA740, "M", "ꝁ"), + (0xA741, "V"), + (0xA742, "M", "ꝃ"), + (0xA743, "V"), + (0xA744, "M", "ꝅ"), + (0xA745, "V"), + (0xA746, "M", "ꝇ"), + (0xA747, "V"), + (0xA748, "M", "ꝉ"), + (0xA749, "V"), + (0xA74A, "M", "ꝋ"), + (0xA74B, "V"), + (0xA74C, "M", "ꝍ"), + (0xA74D, "V"), + (0xA74E, "M", "ꝏ"), + (0xA74F, "V"), + (0xA750, "M", "ꝑ"), + (0xA751, "V"), + (0xA752, "M", "ꝓ"), + (0xA753, "V"), + (0xA754, "M", "ꝕ"), + (0xA755, "V"), + (0xA756, "M", "ꝗ"), + (0xA757, "V"), + (0xA758, "M", "ꝙ"), + (0xA759, "V"), + (0xA75A, "M", "ꝛ"), + (0xA75B, "V"), + (0xA75C, "M", "ꝝ"), + (0xA75D, "V"), + (0xA75E, "M", "ꝟ"), + (0xA75F, "V"), + (0xA760, "M", "ꝡ"), + (0xA761, "V"), + (0xA762, "M", "ꝣ"), + (0xA763, "V"), + (0xA764, "M", "ꝥ"), + (0xA765, "V"), + (0xA766, "M", "ꝧ"), + (0xA767, "V"), + (0xA768, "M", "ꝩ"), + (0xA769, "V"), + (0xA76A, "M", "ꝫ"), + (0xA76B, "V"), + (0xA76C, "M", "ꝭ"), + (0xA76D, "V"), + (0xA76E, "M", "ꝯ"), + (0xA76F, "V"), + (0xA770, "M", "ꝯ"), + (0xA771, "V"), + (0xA779, "M", "ꝺ"), + (0xA77A, "V"), + (0xA77B, "M", "ꝼ"), + (0xA77C, "V"), + (0xA77D, "M", "ᵹ"), + (0xA77E, "M", "ꝿ"), + (0xA77F, "V"), + ] + + +def _seg_37() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xA780, "M", "ꞁ"), + (0xA781, "V"), + (0xA782, "M", "ꞃ"), + (0xA783, "V"), + (0xA784, "M", "ꞅ"), + (0xA785, "V"), + (0xA786, "M", "ꞇ"), + (0xA787, "V"), + (0xA78B, "M", "ꞌ"), + (0xA78C, "V"), + (0xA78D, "M", "ɥ"), + (0xA78E, "V"), + (0xA790, "M", "ꞑ"), + (0xA791, "V"), + (0xA792, "M", "ꞓ"), + (0xA793, "V"), + (0xA796, "M", "ꞗ"), + (0xA797, "V"), + (0xA798, "M", "ꞙ"), + (0xA799, "V"), + (0xA79A, "M", "ꞛ"), + (0xA79B, "V"), + (0xA79C, "M", "ꞝ"), + (0xA79D, "V"), + (0xA79E, "M", "ꞟ"), + (0xA79F, "V"), + (0xA7A0, "M", "ꞡ"), + (0xA7A1, "V"), + (0xA7A2, "M", "ꞣ"), + (0xA7A3, "V"), + (0xA7A4, "M", "ꞥ"), + (0xA7A5, "V"), + (0xA7A6, "M", "ꞧ"), + (0xA7A7, "V"), + (0xA7A8, "M", "ꞩ"), + (0xA7A9, "V"), + (0xA7AA, "M", "ɦ"), + (0xA7AB, "M", "ɜ"), + (0xA7AC, "M", "ɡ"), + (0xA7AD, "M", "ɬ"), + (0xA7AE, "M", "ɪ"), + (0xA7AF, "V"), + (0xA7B0, "M", "ʞ"), + (0xA7B1, "M", "ʇ"), + (0xA7B2, "M", "ʝ"), + (0xA7B3, "M", "ꭓ"), + (0xA7B4, "M", "ꞵ"), + (0xA7B5, "V"), + (0xA7B6, "M", "ꞷ"), + (0xA7B7, "V"), + (0xA7B8, "M", "ꞹ"), + (0xA7B9, "V"), + (0xA7BA, "M", "ꞻ"), + (0xA7BB, "V"), + (0xA7BC, "M", "ꞽ"), + (0xA7BD, "V"), + (0xA7BE, "M", "ꞿ"), + (0xA7BF, "V"), + (0xA7C0, "M", "ꟁ"), + (0xA7C1, "V"), + (0xA7C2, "M", "ꟃ"), + (0xA7C3, "V"), + (0xA7C4, "M", "ꞔ"), + (0xA7C5, "M", "ʂ"), + (0xA7C6, "M", "ᶎ"), + (0xA7C7, "M", "ꟈ"), + (0xA7C8, "V"), + (0xA7C9, "M", "ꟊ"), + (0xA7CA, "V"), + (0xA7CB, "X"), + (0xA7D0, "M", "ꟑ"), + (0xA7D1, "V"), + (0xA7D2, "X"), + (0xA7D3, "V"), + (0xA7D4, "X"), + (0xA7D5, "V"), + (0xA7D6, "M", "ꟗ"), + (0xA7D7, "V"), + (0xA7D8, "M", "ꟙ"), + (0xA7D9, "V"), + (0xA7DA, "X"), + (0xA7F2, "M", "c"), + (0xA7F3, "M", "f"), + (0xA7F4, "M", "q"), + (0xA7F5, "M", "ꟶ"), + (0xA7F6, "V"), + (0xA7F8, "M", "ħ"), + (0xA7F9, "M", "œ"), + (0xA7FA, "V"), + (0xA82D, "X"), + (0xA830, "V"), + (0xA83A, "X"), + (0xA840, "V"), + (0xA878, "X"), + (0xA880, "V"), + (0xA8C6, "X"), + (0xA8CE, "V"), + (0xA8DA, "X"), + (0xA8E0, "V"), + (0xA954, "X"), + ] + + +def _seg_38() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xA95F, "V"), + (0xA97D, "X"), + (0xA980, "V"), + (0xA9CE, "X"), + (0xA9CF, "V"), + (0xA9DA, "X"), + (0xA9DE, "V"), + (0xA9FF, "X"), + (0xAA00, "V"), + (0xAA37, "X"), + (0xAA40, "V"), + (0xAA4E, "X"), + (0xAA50, "V"), + (0xAA5A, "X"), + (0xAA5C, "V"), + (0xAAC3, "X"), + (0xAADB, "V"), + (0xAAF7, "X"), + (0xAB01, "V"), + (0xAB07, "X"), + (0xAB09, "V"), + (0xAB0F, "X"), + (0xAB11, "V"), + (0xAB17, "X"), + (0xAB20, "V"), + (0xAB27, "X"), + (0xAB28, "V"), + (0xAB2F, "X"), + (0xAB30, "V"), + (0xAB5C, "M", "ꜧ"), + (0xAB5D, "M", "ꬷ"), + (0xAB5E, "M", "ɫ"), + (0xAB5F, "M", "ꭒ"), + (0xAB60, "V"), + (0xAB69, "M", "ʍ"), + (0xAB6A, "V"), + (0xAB6C, "X"), + (0xAB70, "M", "Ꭰ"), + (0xAB71, "M", "Ꭱ"), + (0xAB72, "M", "Ꭲ"), + (0xAB73, "M", "Ꭳ"), + (0xAB74, "M", "Ꭴ"), + (0xAB75, "M", "Ꭵ"), + (0xAB76, "M", "Ꭶ"), + (0xAB77, "M", "Ꭷ"), + (0xAB78, "M", "Ꭸ"), + (0xAB79, "M", "Ꭹ"), + (0xAB7A, "M", "Ꭺ"), + (0xAB7B, "M", "Ꭻ"), + (0xAB7C, "M", "Ꭼ"), + (0xAB7D, "M", "Ꭽ"), + (0xAB7E, "M", "Ꭾ"), + (0xAB7F, "M", "Ꭿ"), + (0xAB80, "M", "Ꮀ"), + (0xAB81, "M", "Ꮁ"), + (0xAB82, "M", "Ꮂ"), + (0xAB83, "M", "Ꮃ"), + (0xAB84, "M", "Ꮄ"), + (0xAB85, "M", "Ꮅ"), + (0xAB86, "M", "Ꮆ"), + (0xAB87, "M", "Ꮇ"), + (0xAB88, "M", "Ꮈ"), + (0xAB89, "M", "Ꮉ"), + (0xAB8A, "M", "Ꮊ"), + (0xAB8B, "M", "Ꮋ"), + (0xAB8C, "M", "Ꮌ"), + (0xAB8D, "M", "Ꮍ"), + (0xAB8E, "M", "Ꮎ"), + (0xAB8F, "M", "Ꮏ"), + (0xAB90, "M", "Ꮐ"), + (0xAB91, "M", "Ꮑ"), + (0xAB92, "M", "Ꮒ"), + (0xAB93, "M", "Ꮓ"), + (0xAB94, "M", "Ꮔ"), + (0xAB95, "M", "Ꮕ"), + (0xAB96, "M", "Ꮖ"), + (0xAB97, "M", "Ꮗ"), + (0xAB98, "M", "Ꮘ"), + (0xAB99, "M", "Ꮙ"), + (0xAB9A, "M", "Ꮚ"), + (0xAB9B, "M", "Ꮛ"), + (0xAB9C, "M", "Ꮜ"), + (0xAB9D, "M", "Ꮝ"), + (0xAB9E, "M", "Ꮞ"), + (0xAB9F, "M", "Ꮟ"), + (0xABA0, "M", "Ꮠ"), + (0xABA1, "M", "Ꮡ"), + (0xABA2, "M", "Ꮢ"), + (0xABA3, "M", "Ꮣ"), + (0xABA4, "M", "Ꮤ"), + (0xABA5, "M", "Ꮥ"), + (0xABA6, "M", "Ꮦ"), + (0xABA7, "M", "Ꮧ"), + (0xABA8, "M", "Ꮨ"), + (0xABA9, "M", "Ꮩ"), + (0xABAA, "M", "Ꮪ"), + (0xABAB, "M", "Ꮫ"), + (0xABAC, "M", "Ꮬ"), + (0xABAD, "M", "Ꮭ"), + (0xABAE, "M", "Ꮮ"), + ] + + +def _seg_39() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xABAF, "M", "Ꮯ"), + (0xABB0, "M", "Ꮰ"), + (0xABB1, "M", "Ꮱ"), + (0xABB2, "M", "Ꮲ"), + (0xABB3, "M", "Ꮳ"), + (0xABB4, "M", "Ꮴ"), + (0xABB5, "M", "Ꮵ"), + (0xABB6, "M", "Ꮶ"), + (0xABB7, "M", "Ꮷ"), + (0xABB8, "M", "Ꮸ"), + (0xABB9, "M", "Ꮹ"), + (0xABBA, "M", "Ꮺ"), + (0xABBB, "M", "Ꮻ"), + (0xABBC, "M", "Ꮼ"), + (0xABBD, "M", "Ꮽ"), + (0xABBE, "M", "Ꮾ"), + (0xABBF, "M", "Ꮿ"), + (0xABC0, "V"), + (0xABEE, "X"), + (0xABF0, "V"), + (0xABFA, "X"), + (0xAC00, "V"), + (0xD7A4, "X"), + (0xD7B0, "V"), + (0xD7C7, "X"), + (0xD7CB, "V"), + (0xD7FC, "X"), + (0xF900, "M", "豈"), + (0xF901, "M", "更"), + (0xF902, "M", "車"), + (0xF903, "M", "賈"), + (0xF904, "M", "滑"), + (0xF905, "M", "串"), + (0xF906, "M", "句"), + (0xF907, "M", "龜"), + (0xF909, "M", "契"), + (0xF90A, "M", "金"), + (0xF90B, "M", "喇"), + (0xF90C, "M", "奈"), + (0xF90D, "M", "懶"), + (0xF90E, "M", "癩"), + (0xF90F, "M", "羅"), + (0xF910, "M", "蘿"), + (0xF911, "M", "螺"), + (0xF912, "M", "裸"), + (0xF913, "M", "邏"), + (0xF914, "M", "樂"), + (0xF915, "M", "洛"), + (0xF916, "M", "烙"), + (0xF917, "M", "珞"), + (0xF918, "M", "落"), + (0xF919, "M", "酪"), + (0xF91A, "M", "駱"), + (0xF91B, "M", "亂"), + (0xF91C, "M", "卵"), + (0xF91D, "M", "欄"), + (0xF91E, "M", "爛"), + (0xF91F, "M", "蘭"), + (0xF920, "M", "鸞"), + (0xF921, "M", "嵐"), + (0xF922, "M", "濫"), + (0xF923, "M", "藍"), + (0xF924, "M", "襤"), + (0xF925, "M", "拉"), + (0xF926, "M", "臘"), + (0xF927, "M", "蠟"), + (0xF928, "M", "廊"), + (0xF929, "M", "朗"), + (0xF92A, "M", "浪"), + (0xF92B, "M", "狼"), + (0xF92C, "M", "郎"), + (0xF92D, "M", "來"), + (0xF92E, "M", "冷"), + (0xF92F, "M", "勞"), + (0xF930, "M", "擄"), + (0xF931, "M", "櫓"), + (0xF932, "M", "爐"), + (0xF933, "M", "盧"), + (0xF934, "M", "老"), + (0xF935, "M", "蘆"), + (0xF936, "M", "虜"), + (0xF937, "M", "路"), + (0xF938, "M", "露"), + (0xF939, "M", "魯"), + (0xF93A, "M", "鷺"), + (0xF93B, "M", "碌"), + (0xF93C, "M", "祿"), + (0xF93D, "M", "綠"), + (0xF93E, "M", "菉"), + (0xF93F, "M", "錄"), + (0xF940, "M", "鹿"), + (0xF941, "M", "論"), + (0xF942, "M", "壟"), + (0xF943, "M", "弄"), + (0xF944, "M", "籠"), + (0xF945, "M", "聾"), + (0xF946, "M", "牢"), + (0xF947, "M", "磊"), + (0xF948, "M", "賂"), + (0xF949, "M", "雷"), + ] + + +def _seg_40() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xF94A, "M", "壘"), + (0xF94B, "M", "屢"), + (0xF94C, "M", "樓"), + (0xF94D, "M", "淚"), + (0xF94E, "M", "漏"), + (0xF94F, "M", "累"), + (0xF950, "M", "縷"), + (0xF951, "M", "陋"), + (0xF952, "M", "勒"), + (0xF953, "M", "肋"), + (0xF954, "M", "凜"), + (0xF955, "M", "凌"), + (0xF956, "M", "稜"), + (0xF957, "M", "綾"), + (0xF958, "M", "菱"), + (0xF959, "M", "陵"), + (0xF95A, "M", "讀"), + (0xF95B, "M", "拏"), + (0xF95C, "M", "樂"), + (0xF95D, "M", "諾"), + (0xF95E, "M", "丹"), + (0xF95F, "M", "寧"), + (0xF960, "M", "怒"), + (0xF961, "M", "率"), + (0xF962, "M", "異"), + (0xF963, "M", "北"), + (0xF964, "M", "磻"), + (0xF965, "M", "便"), + (0xF966, "M", "復"), + (0xF967, "M", "不"), + (0xF968, "M", "泌"), + (0xF969, "M", "數"), + (0xF96A, "M", "索"), + (0xF96B, "M", "參"), + (0xF96C, "M", "塞"), + (0xF96D, "M", "省"), + (0xF96E, "M", "葉"), + (0xF96F, "M", "說"), + (0xF970, "M", "殺"), + (0xF971, "M", "辰"), + (0xF972, "M", "沈"), + (0xF973, "M", "拾"), + (0xF974, "M", "若"), + (0xF975, "M", "掠"), + (0xF976, "M", "略"), + (0xF977, "M", "亮"), + (0xF978, "M", "兩"), + (0xF979, "M", "凉"), + (0xF97A, "M", "梁"), + (0xF97B, "M", "糧"), + (0xF97C, "M", "良"), + (0xF97D, "M", "諒"), + (0xF97E, "M", "量"), + (0xF97F, "M", "勵"), + (0xF980, "M", "呂"), + (0xF981, "M", "女"), + (0xF982, "M", "廬"), + (0xF983, "M", "旅"), + (0xF984, "M", "濾"), + (0xF985, "M", "礪"), + (0xF986, "M", "閭"), + (0xF987, "M", "驪"), + (0xF988, "M", "麗"), + (0xF989, "M", "黎"), + (0xF98A, "M", "力"), + (0xF98B, "M", "曆"), + (0xF98C, "M", "歷"), + (0xF98D, "M", "轢"), + (0xF98E, "M", "年"), + (0xF98F, "M", "憐"), + (0xF990, "M", "戀"), + (0xF991, "M", "撚"), + (0xF992, "M", "漣"), + (0xF993, "M", "煉"), + (0xF994, "M", "璉"), + (0xF995, "M", "秊"), + (0xF996, "M", "練"), + (0xF997, "M", "聯"), + (0xF998, "M", "輦"), + (0xF999, "M", "蓮"), + (0xF99A, "M", "連"), + (0xF99B, "M", "鍊"), + (0xF99C, "M", "列"), + (0xF99D, "M", "劣"), + (0xF99E, "M", "咽"), + (0xF99F, "M", "烈"), + (0xF9A0, "M", "裂"), + (0xF9A1, "M", "說"), + (0xF9A2, "M", "廉"), + (0xF9A3, "M", "念"), + (0xF9A4, "M", "捻"), + (0xF9A5, "M", "殮"), + (0xF9A6, "M", "簾"), + (0xF9A7, "M", "獵"), + (0xF9A8, "M", "令"), + (0xF9A9, "M", "囹"), + (0xF9AA, "M", "寧"), + (0xF9AB, "M", "嶺"), + (0xF9AC, "M", "怜"), + (0xF9AD, "M", "玲"), + ] + + +def _seg_41() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xF9AE, "M", "瑩"), + (0xF9AF, "M", "羚"), + (0xF9B0, "M", "聆"), + (0xF9B1, "M", "鈴"), + (0xF9B2, "M", "零"), + (0xF9B3, "M", "靈"), + (0xF9B4, "M", "領"), + (0xF9B5, "M", "例"), + (0xF9B6, "M", "禮"), + (0xF9B7, "M", "醴"), + (0xF9B8, "M", "隸"), + (0xF9B9, "M", "惡"), + (0xF9BA, "M", "了"), + (0xF9BB, "M", "僚"), + (0xF9BC, "M", "寮"), + (0xF9BD, "M", "尿"), + (0xF9BE, "M", "料"), + (0xF9BF, "M", "樂"), + (0xF9C0, "M", "燎"), + (0xF9C1, "M", "療"), + (0xF9C2, "M", "蓼"), + (0xF9C3, "M", "遼"), + (0xF9C4, "M", "龍"), + (0xF9C5, "M", "暈"), + (0xF9C6, "M", "阮"), + (0xF9C7, "M", "劉"), + (0xF9C8, "M", "杻"), + (0xF9C9, "M", "柳"), + (0xF9CA, "M", "流"), + (0xF9CB, "M", "溜"), + (0xF9CC, "M", "琉"), + (0xF9CD, "M", "留"), + (0xF9CE, "M", "硫"), + (0xF9CF, "M", "紐"), + (0xF9D0, "M", "類"), + (0xF9D1, "M", "六"), + (0xF9D2, "M", "戮"), + (0xF9D3, "M", "陸"), + (0xF9D4, "M", "倫"), + (0xF9D5, "M", "崙"), + (0xF9D6, "M", "淪"), + (0xF9D7, "M", "輪"), + (0xF9D8, "M", "律"), + (0xF9D9, "M", "慄"), + (0xF9DA, "M", "栗"), + (0xF9DB, "M", "率"), + (0xF9DC, "M", "隆"), + (0xF9DD, "M", "利"), + (0xF9DE, "M", "吏"), + (0xF9DF, "M", "履"), + (0xF9E0, "M", "易"), + (0xF9E1, "M", "李"), + (0xF9E2, "M", "梨"), + (0xF9E3, "M", "泥"), + (0xF9E4, "M", "理"), + (0xF9E5, "M", "痢"), + (0xF9E6, "M", "罹"), + (0xF9E7, "M", "裏"), + (0xF9E8, "M", "裡"), + (0xF9E9, "M", "里"), + (0xF9EA, "M", "離"), + (0xF9EB, "M", "匿"), + (0xF9EC, "M", "溺"), + (0xF9ED, "M", "吝"), + (0xF9EE, "M", "燐"), + (0xF9EF, "M", "璘"), + (0xF9F0, "M", "藺"), + (0xF9F1, "M", "隣"), + (0xF9F2, "M", "鱗"), + (0xF9F3, "M", "麟"), + (0xF9F4, "M", "林"), + (0xF9F5, "M", "淋"), + (0xF9F6, "M", "臨"), + (0xF9F7, "M", "立"), + (0xF9F8, "M", "笠"), + (0xF9F9, "M", "粒"), + (0xF9FA, "M", "狀"), + (0xF9FB, "M", "炙"), + (0xF9FC, "M", "識"), + (0xF9FD, "M", "什"), + (0xF9FE, "M", "茶"), + (0xF9FF, "M", "刺"), + (0xFA00, "M", "切"), + (0xFA01, "M", "度"), + (0xFA02, "M", "拓"), + (0xFA03, "M", "糖"), + (0xFA04, "M", "宅"), + (0xFA05, "M", "洞"), + (0xFA06, "M", "暴"), + (0xFA07, "M", "輻"), + (0xFA08, "M", "行"), + (0xFA09, "M", "降"), + (0xFA0A, "M", "見"), + (0xFA0B, "M", "廓"), + (0xFA0C, "M", "兀"), + (0xFA0D, "M", "嗀"), + (0xFA0E, "V"), + (0xFA10, "M", "塚"), + (0xFA11, "V"), + (0xFA12, "M", "晴"), + ] + + +def _seg_42() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFA13, "V"), + (0xFA15, "M", "凞"), + (0xFA16, "M", "猪"), + (0xFA17, "M", "益"), + (0xFA18, "M", "礼"), + (0xFA19, "M", "神"), + (0xFA1A, "M", "祥"), + (0xFA1B, "M", "福"), + (0xFA1C, "M", "靖"), + (0xFA1D, "M", "精"), + (0xFA1E, "M", "羽"), + (0xFA1F, "V"), + (0xFA20, "M", "蘒"), + (0xFA21, "V"), + (0xFA22, "M", "諸"), + (0xFA23, "V"), + (0xFA25, "M", "逸"), + (0xFA26, "M", "都"), + (0xFA27, "V"), + (0xFA2A, "M", "飯"), + (0xFA2B, "M", "飼"), + (0xFA2C, "M", "館"), + (0xFA2D, "M", "鶴"), + (0xFA2E, "M", "郞"), + (0xFA2F, "M", "隷"), + (0xFA30, "M", "侮"), + (0xFA31, "M", "僧"), + (0xFA32, "M", "免"), + (0xFA33, "M", "勉"), + (0xFA34, "M", "勤"), + (0xFA35, "M", "卑"), + (0xFA36, "M", "喝"), + (0xFA37, "M", "嘆"), + (0xFA38, "M", "器"), + (0xFA39, "M", "塀"), + (0xFA3A, "M", "墨"), + (0xFA3B, "M", "層"), + (0xFA3C, "M", "屮"), + (0xFA3D, "M", "悔"), + (0xFA3E, "M", "慨"), + (0xFA3F, "M", "憎"), + (0xFA40, "M", "懲"), + (0xFA41, "M", "敏"), + (0xFA42, "M", "既"), + (0xFA43, "M", "暑"), + (0xFA44, "M", "梅"), + (0xFA45, "M", "海"), + (0xFA46, "M", "渚"), + (0xFA47, "M", "漢"), + (0xFA48, "M", "煮"), + (0xFA49, "M", "爫"), + (0xFA4A, "M", "琢"), + (0xFA4B, "M", "碑"), + (0xFA4C, "M", "社"), + (0xFA4D, "M", "祉"), + (0xFA4E, "M", "祈"), + (0xFA4F, "M", "祐"), + (0xFA50, "M", "祖"), + (0xFA51, "M", "祝"), + (0xFA52, "M", "禍"), + (0xFA53, "M", "禎"), + (0xFA54, "M", "穀"), + (0xFA55, "M", "突"), + (0xFA56, "M", "節"), + (0xFA57, "M", "練"), + (0xFA58, "M", "縉"), + (0xFA59, "M", "繁"), + (0xFA5A, "M", "署"), + (0xFA5B, "M", "者"), + (0xFA5C, "M", "臭"), + (0xFA5D, "M", "艹"), + (0xFA5F, "M", "著"), + (0xFA60, "M", "褐"), + (0xFA61, "M", "視"), + (0xFA62, "M", "謁"), + (0xFA63, "M", "謹"), + (0xFA64, "M", "賓"), + (0xFA65, "M", "贈"), + (0xFA66, "M", "辶"), + (0xFA67, "M", "逸"), + (0xFA68, "M", "難"), + (0xFA69, "M", "響"), + (0xFA6A, "M", "頻"), + (0xFA6B, "M", "恵"), + (0xFA6C, "M", "𤋮"), + (0xFA6D, "M", "舘"), + (0xFA6E, "X"), + (0xFA70, "M", "並"), + (0xFA71, "M", "况"), + (0xFA72, "M", "全"), + (0xFA73, "M", "侀"), + (0xFA74, "M", "充"), + (0xFA75, "M", "冀"), + (0xFA76, "M", "勇"), + (0xFA77, "M", "勺"), + (0xFA78, "M", "喝"), + (0xFA79, "M", "啕"), + (0xFA7A, "M", "喙"), + (0xFA7B, "M", "嗢"), + (0xFA7C, "M", "塚"), + ] + + +def _seg_43() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFA7D, "M", "墳"), + (0xFA7E, "M", "奄"), + (0xFA7F, "M", "奔"), + (0xFA80, "M", "婢"), + (0xFA81, "M", "嬨"), + (0xFA82, "M", "廒"), + (0xFA83, "M", "廙"), + (0xFA84, "M", "彩"), + (0xFA85, "M", "徭"), + (0xFA86, "M", "惘"), + (0xFA87, "M", "慎"), + (0xFA88, "M", "愈"), + (0xFA89, "M", "憎"), + (0xFA8A, "M", "慠"), + (0xFA8B, "M", "懲"), + (0xFA8C, "M", "戴"), + (0xFA8D, "M", "揄"), + (0xFA8E, "M", "搜"), + (0xFA8F, "M", "摒"), + (0xFA90, "M", "敖"), + (0xFA91, "M", "晴"), + (0xFA92, "M", "朗"), + (0xFA93, "M", "望"), + (0xFA94, "M", "杖"), + (0xFA95, "M", "歹"), + (0xFA96, "M", "殺"), + (0xFA97, "M", "流"), + (0xFA98, "M", "滛"), + (0xFA99, "M", "滋"), + (0xFA9A, "M", "漢"), + (0xFA9B, "M", "瀞"), + (0xFA9C, "M", "煮"), + (0xFA9D, "M", "瞧"), + (0xFA9E, "M", "爵"), + (0xFA9F, "M", "犯"), + (0xFAA0, "M", "猪"), + (0xFAA1, "M", "瑱"), + (0xFAA2, "M", "甆"), + (0xFAA3, "M", "画"), + (0xFAA4, "M", "瘝"), + (0xFAA5, "M", "瘟"), + (0xFAA6, "M", "益"), + (0xFAA7, "M", "盛"), + (0xFAA8, "M", "直"), + (0xFAA9, "M", "睊"), + (0xFAAA, "M", "着"), + (0xFAAB, "M", "磌"), + (0xFAAC, "M", "窱"), + (0xFAAD, "M", "節"), + (0xFAAE, "M", "类"), + (0xFAAF, "M", "絛"), + (0xFAB0, "M", "練"), + (0xFAB1, "M", "缾"), + (0xFAB2, "M", "者"), + (0xFAB3, "M", "荒"), + (0xFAB4, "M", "華"), + (0xFAB5, "M", "蝹"), + (0xFAB6, "M", "襁"), + (0xFAB7, "M", "覆"), + (0xFAB8, "M", "視"), + (0xFAB9, "M", "調"), + (0xFABA, "M", "諸"), + (0xFABB, "M", "請"), + (0xFABC, "M", "謁"), + (0xFABD, "M", "諾"), + (0xFABE, "M", "諭"), + (0xFABF, "M", "謹"), + (0xFAC0, "M", "變"), + (0xFAC1, "M", "贈"), + (0xFAC2, "M", "輸"), + (0xFAC3, "M", "遲"), + (0xFAC4, "M", "醙"), + (0xFAC5, "M", "鉶"), + (0xFAC6, "M", "陼"), + (0xFAC7, "M", "難"), + (0xFAC8, "M", "靖"), + (0xFAC9, "M", "韛"), + (0xFACA, "M", "響"), + (0xFACB, "M", "頋"), + (0xFACC, "M", "頻"), + (0xFACD, "M", "鬒"), + (0xFACE, "M", "龜"), + (0xFACF, "M", "𢡊"), + (0xFAD0, "M", "𢡄"), + (0xFAD1, "M", "𣏕"), + (0xFAD2, "M", "㮝"), + (0xFAD3, "M", "䀘"), + (0xFAD4, "M", "䀹"), + (0xFAD5, "M", "𥉉"), + (0xFAD6, "M", "𥳐"), + (0xFAD7, "M", "𧻓"), + (0xFAD8, "M", "齃"), + (0xFAD9, "M", "龎"), + (0xFADA, "X"), + (0xFB00, "M", "ff"), + (0xFB01, "M", "fi"), + (0xFB02, "M", "fl"), + (0xFB03, "M", "ffi"), + (0xFB04, "M", "ffl"), + (0xFB05, "M", "st"), + ] + + +def _seg_44() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFB07, "X"), + (0xFB13, "M", "մն"), + (0xFB14, "M", "մե"), + (0xFB15, "M", "մի"), + (0xFB16, "M", "վն"), + (0xFB17, "M", "մխ"), + (0xFB18, "X"), + (0xFB1D, "M", "יִ"), + (0xFB1E, "V"), + (0xFB1F, "M", "ײַ"), + (0xFB20, "M", "ע"), + (0xFB21, "M", "א"), + (0xFB22, "M", "ד"), + (0xFB23, "M", "ה"), + (0xFB24, "M", "כ"), + (0xFB25, "M", "ל"), + (0xFB26, "M", "ם"), + (0xFB27, "M", "ר"), + (0xFB28, "M", "ת"), + (0xFB29, "3", "+"), + (0xFB2A, "M", "שׁ"), + (0xFB2B, "M", "שׂ"), + (0xFB2C, "M", "שּׁ"), + (0xFB2D, "M", "שּׂ"), + (0xFB2E, "M", "אַ"), + (0xFB2F, "M", "אָ"), + (0xFB30, "M", "אּ"), + (0xFB31, "M", "בּ"), + (0xFB32, "M", "גּ"), + (0xFB33, "M", "דּ"), + (0xFB34, "M", "הּ"), + (0xFB35, "M", "וּ"), + (0xFB36, "M", "זּ"), + (0xFB37, "X"), + (0xFB38, "M", "טּ"), + (0xFB39, "M", "יּ"), + (0xFB3A, "M", "ךּ"), + (0xFB3B, "M", "כּ"), + (0xFB3C, "M", "לּ"), + (0xFB3D, "X"), + (0xFB3E, "M", "מּ"), + (0xFB3F, "X"), + (0xFB40, "M", "נּ"), + (0xFB41, "M", "סּ"), + (0xFB42, "X"), + (0xFB43, "M", "ףּ"), + (0xFB44, "M", "פּ"), + (0xFB45, "X"), + (0xFB46, "M", "צּ"), + (0xFB47, "M", "קּ"), + (0xFB48, "M", "רּ"), + (0xFB49, "M", "שּ"), + (0xFB4A, "M", "תּ"), + (0xFB4B, "M", "וֹ"), + (0xFB4C, "M", "בֿ"), + (0xFB4D, "M", "כֿ"), + (0xFB4E, "M", "פֿ"), + (0xFB4F, "M", "אל"), + (0xFB50, "M", "ٱ"), + (0xFB52, "M", "ٻ"), + (0xFB56, "M", "پ"), + (0xFB5A, "M", "ڀ"), + (0xFB5E, "M", "ٺ"), + (0xFB62, "M", "ٿ"), + (0xFB66, "M", "ٹ"), + (0xFB6A, "M", "ڤ"), + (0xFB6E, "M", "ڦ"), + (0xFB72, "M", "ڄ"), + (0xFB76, "M", "ڃ"), + (0xFB7A, "M", "چ"), + (0xFB7E, "M", "ڇ"), + (0xFB82, "M", "ڍ"), + (0xFB84, "M", "ڌ"), + (0xFB86, "M", "ڎ"), + (0xFB88, "M", "ڈ"), + (0xFB8A, "M", "ژ"), + (0xFB8C, "M", "ڑ"), + (0xFB8E, "M", "ک"), + (0xFB92, "M", "گ"), + (0xFB96, "M", "ڳ"), + (0xFB9A, "M", "ڱ"), + (0xFB9E, "M", "ں"), + (0xFBA0, "M", "ڻ"), + (0xFBA4, "M", "ۀ"), + (0xFBA6, "M", "ہ"), + (0xFBAA, "M", "ھ"), + (0xFBAE, "M", "ے"), + (0xFBB0, "M", "ۓ"), + (0xFBB2, "V"), + (0xFBC3, "X"), + (0xFBD3, "M", "ڭ"), + (0xFBD7, "M", "ۇ"), + (0xFBD9, "M", "ۆ"), + (0xFBDB, "M", "ۈ"), + (0xFBDD, "M", "ۇٴ"), + (0xFBDE, "M", "ۋ"), + (0xFBE0, "M", "ۅ"), + (0xFBE2, "M", "ۉ"), + (0xFBE4, "M", "ې"), + (0xFBE8, "M", "ى"), + ] + + +def _seg_45() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFBEA, "M", "ئا"), + (0xFBEC, "M", "ئە"), + (0xFBEE, "M", "ئو"), + (0xFBF0, "M", "ئۇ"), + (0xFBF2, "M", "ئۆ"), + (0xFBF4, "M", "ئۈ"), + (0xFBF6, "M", "ئې"), + (0xFBF9, "M", "ئى"), + (0xFBFC, "M", "ی"), + (0xFC00, "M", "ئج"), + (0xFC01, "M", "ئح"), + (0xFC02, "M", "ئم"), + (0xFC03, "M", "ئى"), + (0xFC04, "M", "ئي"), + (0xFC05, "M", "بج"), + (0xFC06, "M", "بح"), + (0xFC07, "M", "بخ"), + (0xFC08, "M", "بم"), + (0xFC09, "M", "بى"), + (0xFC0A, "M", "بي"), + (0xFC0B, "M", "تج"), + (0xFC0C, "M", "تح"), + (0xFC0D, "M", "تخ"), + (0xFC0E, "M", "تم"), + (0xFC0F, "M", "تى"), + (0xFC10, "M", "تي"), + (0xFC11, "M", "ثج"), + (0xFC12, "M", "ثم"), + (0xFC13, "M", "ثى"), + (0xFC14, "M", "ثي"), + (0xFC15, "M", "جح"), + (0xFC16, "M", "جم"), + (0xFC17, "M", "حج"), + (0xFC18, "M", "حم"), + (0xFC19, "M", "خج"), + (0xFC1A, "M", "خح"), + (0xFC1B, "M", "خم"), + (0xFC1C, "M", "سج"), + (0xFC1D, "M", "سح"), + (0xFC1E, "M", "سخ"), + (0xFC1F, "M", "سم"), + (0xFC20, "M", "صح"), + (0xFC21, "M", "صم"), + (0xFC22, "M", "ضج"), + (0xFC23, "M", "ضح"), + (0xFC24, "M", "ضخ"), + (0xFC25, "M", "ضم"), + (0xFC26, "M", "طح"), + (0xFC27, "M", "طم"), + (0xFC28, "M", "ظم"), + (0xFC29, "M", "عج"), + (0xFC2A, "M", "عم"), + (0xFC2B, "M", "غج"), + (0xFC2C, "M", "غم"), + (0xFC2D, "M", "فج"), + (0xFC2E, "M", "فح"), + (0xFC2F, "M", "فخ"), + (0xFC30, "M", "فم"), + (0xFC31, "M", "فى"), + (0xFC32, "M", "في"), + (0xFC33, "M", "قح"), + (0xFC34, "M", "قم"), + (0xFC35, "M", "قى"), + (0xFC36, "M", "قي"), + (0xFC37, "M", "كا"), + (0xFC38, "M", "كج"), + (0xFC39, "M", "كح"), + (0xFC3A, "M", "كخ"), + (0xFC3B, "M", "كل"), + (0xFC3C, "M", "كم"), + (0xFC3D, "M", "كى"), + (0xFC3E, "M", "كي"), + (0xFC3F, "M", "لج"), + (0xFC40, "M", "لح"), + (0xFC41, "M", "لخ"), + (0xFC42, "M", "لم"), + (0xFC43, "M", "لى"), + (0xFC44, "M", "لي"), + (0xFC45, "M", "مج"), + (0xFC46, "M", "مح"), + (0xFC47, "M", "مخ"), + (0xFC48, "M", "مم"), + (0xFC49, "M", "مى"), + (0xFC4A, "M", "مي"), + (0xFC4B, "M", "نج"), + (0xFC4C, "M", "نح"), + (0xFC4D, "M", "نخ"), + (0xFC4E, "M", "نم"), + (0xFC4F, "M", "نى"), + (0xFC50, "M", "ني"), + (0xFC51, "M", "هج"), + (0xFC52, "M", "هم"), + (0xFC53, "M", "هى"), + (0xFC54, "M", "هي"), + (0xFC55, "M", "يج"), + (0xFC56, "M", "يح"), + (0xFC57, "M", "يخ"), + (0xFC58, "M", "يم"), + (0xFC59, "M", "يى"), + (0xFC5A, "M", "يي"), + ] + + +def _seg_46() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFC5B, "M", "ذٰ"), + (0xFC5C, "M", "رٰ"), + (0xFC5D, "M", "ىٰ"), + (0xFC5E, "3", " ٌّ"), + (0xFC5F, "3", " ٍّ"), + (0xFC60, "3", " َّ"), + (0xFC61, "3", " ُّ"), + (0xFC62, "3", " ِّ"), + (0xFC63, "3", " ّٰ"), + (0xFC64, "M", "ئر"), + (0xFC65, "M", "ئز"), + (0xFC66, "M", "ئم"), + (0xFC67, "M", "ئن"), + (0xFC68, "M", "ئى"), + (0xFC69, "M", "ئي"), + (0xFC6A, "M", "بر"), + (0xFC6B, "M", "بز"), + (0xFC6C, "M", "بم"), + (0xFC6D, "M", "بن"), + (0xFC6E, "M", "بى"), + (0xFC6F, "M", "بي"), + (0xFC70, "M", "تر"), + (0xFC71, "M", "تز"), + (0xFC72, "M", "تم"), + (0xFC73, "M", "تن"), + (0xFC74, "M", "تى"), + (0xFC75, "M", "تي"), + (0xFC76, "M", "ثر"), + (0xFC77, "M", "ثز"), + (0xFC78, "M", "ثم"), + (0xFC79, "M", "ثن"), + (0xFC7A, "M", "ثى"), + (0xFC7B, "M", "ثي"), + (0xFC7C, "M", "فى"), + (0xFC7D, "M", "في"), + (0xFC7E, "M", "قى"), + (0xFC7F, "M", "قي"), + (0xFC80, "M", "كا"), + (0xFC81, "M", "كل"), + (0xFC82, "M", "كم"), + (0xFC83, "M", "كى"), + (0xFC84, "M", "كي"), + (0xFC85, "M", "لم"), + (0xFC86, "M", "لى"), + (0xFC87, "M", "لي"), + (0xFC88, "M", "ما"), + (0xFC89, "M", "مم"), + (0xFC8A, "M", "نر"), + (0xFC8B, "M", "نز"), + (0xFC8C, "M", "نم"), + (0xFC8D, "M", "نن"), + (0xFC8E, "M", "نى"), + (0xFC8F, "M", "ني"), + (0xFC90, "M", "ىٰ"), + (0xFC91, "M", "ير"), + (0xFC92, "M", "يز"), + (0xFC93, "M", "يم"), + (0xFC94, "M", "ين"), + (0xFC95, "M", "يى"), + (0xFC96, "M", "يي"), + (0xFC97, "M", "ئج"), + (0xFC98, "M", "ئح"), + (0xFC99, "M", "ئخ"), + (0xFC9A, "M", "ئم"), + (0xFC9B, "M", "ئه"), + (0xFC9C, "M", "بج"), + (0xFC9D, "M", "بح"), + (0xFC9E, "M", "بخ"), + (0xFC9F, "M", "بم"), + (0xFCA0, "M", "به"), + (0xFCA1, "M", "تج"), + (0xFCA2, "M", "تح"), + (0xFCA3, "M", "تخ"), + (0xFCA4, "M", "تم"), + (0xFCA5, "M", "ته"), + (0xFCA6, "M", "ثم"), + (0xFCA7, "M", "جح"), + (0xFCA8, "M", "جم"), + (0xFCA9, "M", "حج"), + (0xFCAA, "M", "حم"), + (0xFCAB, "M", "خج"), + (0xFCAC, "M", "خم"), + (0xFCAD, "M", "سج"), + (0xFCAE, "M", "سح"), + (0xFCAF, "M", "سخ"), + (0xFCB0, "M", "سم"), + (0xFCB1, "M", "صح"), + (0xFCB2, "M", "صخ"), + (0xFCB3, "M", "صم"), + (0xFCB4, "M", "ضج"), + (0xFCB5, "M", "ضح"), + (0xFCB6, "M", "ضخ"), + (0xFCB7, "M", "ضم"), + (0xFCB8, "M", "طح"), + (0xFCB9, "M", "ظم"), + (0xFCBA, "M", "عج"), + (0xFCBB, "M", "عم"), + (0xFCBC, "M", "غج"), + (0xFCBD, "M", "غم"), + (0xFCBE, "M", "فج"), + ] + + +def _seg_47() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFCBF, "M", "فح"), + (0xFCC0, "M", "فخ"), + (0xFCC1, "M", "فم"), + (0xFCC2, "M", "قح"), + (0xFCC3, "M", "قم"), + (0xFCC4, "M", "كج"), + (0xFCC5, "M", "كح"), + (0xFCC6, "M", "كخ"), + (0xFCC7, "M", "كل"), + (0xFCC8, "M", "كم"), + (0xFCC9, "M", "لج"), + (0xFCCA, "M", "لح"), + (0xFCCB, "M", "لخ"), + (0xFCCC, "M", "لم"), + (0xFCCD, "M", "له"), + (0xFCCE, "M", "مج"), + (0xFCCF, "M", "مح"), + (0xFCD0, "M", "مخ"), + (0xFCD1, "M", "مم"), + (0xFCD2, "M", "نج"), + (0xFCD3, "M", "نح"), + (0xFCD4, "M", "نخ"), + (0xFCD5, "M", "نم"), + (0xFCD6, "M", "نه"), + (0xFCD7, "M", "هج"), + (0xFCD8, "M", "هم"), + (0xFCD9, "M", "هٰ"), + (0xFCDA, "M", "يج"), + (0xFCDB, "M", "يح"), + (0xFCDC, "M", "يخ"), + (0xFCDD, "M", "يم"), + (0xFCDE, "M", "يه"), + (0xFCDF, "M", "ئم"), + (0xFCE0, "M", "ئه"), + (0xFCE1, "M", "بم"), + (0xFCE2, "M", "به"), + (0xFCE3, "M", "تم"), + (0xFCE4, "M", "ته"), + (0xFCE5, "M", "ثم"), + (0xFCE6, "M", "ثه"), + (0xFCE7, "M", "سم"), + (0xFCE8, "M", "سه"), + (0xFCE9, "M", "شم"), + (0xFCEA, "M", "شه"), + (0xFCEB, "M", "كل"), + (0xFCEC, "M", "كم"), + (0xFCED, "M", "لم"), + (0xFCEE, "M", "نم"), + (0xFCEF, "M", "نه"), + (0xFCF0, "M", "يم"), + (0xFCF1, "M", "يه"), + (0xFCF2, "M", "ـَّ"), + (0xFCF3, "M", "ـُّ"), + (0xFCF4, "M", "ـِّ"), + (0xFCF5, "M", "طى"), + (0xFCF6, "M", "طي"), + (0xFCF7, "M", "عى"), + (0xFCF8, "M", "عي"), + (0xFCF9, "M", "غى"), + (0xFCFA, "M", "غي"), + (0xFCFB, "M", "سى"), + (0xFCFC, "M", "سي"), + (0xFCFD, "M", "شى"), + (0xFCFE, "M", "شي"), + (0xFCFF, "M", "حى"), + (0xFD00, "M", "حي"), + (0xFD01, "M", "جى"), + (0xFD02, "M", "جي"), + (0xFD03, "M", "خى"), + (0xFD04, "M", "خي"), + (0xFD05, "M", "صى"), + (0xFD06, "M", "صي"), + (0xFD07, "M", "ضى"), + (0xFD08, "M", "ضي"), + (0xFD09, "M", "شج"), + (0xFD0A, "M", "شح"), + (0xFD0B, "M", "شخ"), + (0xFD0C, "M", "شم"), + (0xFD0D, "M", "شر"), + (0xFD0E, "M", "سر"), + (0xFD0F, "M", "صر"), + (0xFD10, "M", "ضر"), + (0xFD11, "M", "طى"), + (0xFD12, "M", "طي"), + (0xFD13, "M", "عى"), + (0xFD14, "M", "عي"), + (0xFD15, "M", "غى"), + (0xFD16, "M", "غي"), + (0xFD17, "M", "سى"), + (0xFD18, "M", "سي"), + (0xFD19, "M", "شى"), + (0xFD1A, "M", "شي"), + (0xFD1B, "M", "حى"), + (0xFD1C, "M", "حي"), + (0xFD1D, "M", "جى"), + (0xFD1E, "M", "جي"), + (0xFD1F, "M", "خى"), + (0xFD20, "M", "خي"), + (0xFD21, "M", "صى"), + (0xFD22, "M", "صي"), + ] + + +def _seg_48() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFD23, "M", "ضى"), + (0xFD24, "M", "ضي"), + (0xFD25, "M", "شج"), + (0xFD26, "M", "شح"), + (0xFD27, "M", "شخ"), + (0xFD28, "M", "شم"), + (0xFD29, "M", "شر"), + (0xFD2A, "M", "سر"), + (0xFD2B, "M", "صر"), + (0xFD2C, "M", "ضر"), + (0xFD2D, "M", "شج"), + (0xFD2E, "M", "شح"), + (0xFD2F, "M", "شخ"), + (0xFD30, "M", "شم"), + (0xFD31, "M", "سه"), + (0xFD32, "M", "شه"), + (0xFD33, "M", "طم"), + (0xFD34, "M", "سج"), + (0xFD35, "M", "سح"), + (0xFD36, "M", "سخ"), + (0xFD37, "M", "شج"), + (0xFD38, "M", "شح"), + (0xFD39, "M", "شخ"), + (0xFD3A, "M", "طم"), + (0xFD3B, "M", "ظم"), + (0xFD3C, "M", "اً"), + (0xFD3E, "V"), + (0xFD50, "M", "تجم"), + (0xFD51, "M", "تحج"), + (0xFD53, "M", "تحم"), + (0xFD54, "M", "تخم"), + (0xFD55, "M", "تمج"), + (0xFD56, "M", "تمح"), + (0xFD57, "M", "تمخ"), + (0xFD58, "M", "جمح"), + (0xFD5A, "M", "حمي"), + (0xFD5B, "M", "حمى"), + (0xFD5C, "M", "سحج"), + (0xFD5D, "M", "سجح"), + (0xFD5E, "M", "سجى"), + (0xFD5F, "M", "سمح"), + (0xFD61, "M", "سمج"), + (0xFD62, "M", "سمم"), + (0xFD64, "M", "صحح"), + (0xFD66, "M", "صمم"), + (0xFD67, "M", "شحم"), + (0xFD69, "M", "شجي"), + (0xFD6A, "M", "شمخ"), + (0xFD6C, "M", "شمم"), + (0xFD6E, "M", "ضحى"), + (0xFD6F, "M", "ضخم"), + (0xFD71, "M", "طمح"), + (0xFD73, "M", "طمم"), + (0xFD74, "M", "طمي"), + (0xFD75, "M", "عجم"), + (0xFD76, "M", "عمم"), + (0xFD78, "M", "عمى"), + (0xFD79, "M", "غمم"), + (0xFD7A, "M", "غمي"), + (0xFD7B, "M", "غمى"), + (0xFD7C, "M", "فخم"), + (0xFD7E, "M", "قمح"), + (0xFD7F, "M", "قمم"), + (0xFD80, "M", "لحم"), + (0xFD81, "M", "لحي"), + (0xFD82, "M", "لحى"), + (0xFD83, "M", "لجج"), + (0xFD85, "M", "لخم"), + (0xFD87, "M", "لمح"), + (0xFD89, "M", "محج"), + (0xFD8A, "M", "محم"), + (0xFD8B, "M", "محي"), + (0xFD8C, "M", "مجح"), + (0xFD8D, "M", "مجم"), + (0xFD8E, "M", "مخج"), + (0xFD8F, "M", "مخم"), + (0xFD90, "X"), + (0xFD92, "M", "مجخ"), + (0xFD93, "M", "همج"), + (0xFD94, "M", "همم"), + (0xFD95, "M", "نحم"), + (0xFD96, "M", "نحى"), + (0xFD97, "M", "نجم"), + (0xFD99, "M", "نجى"), + (0xFD9A, "M", "نمي"), + (0xFD9B, "M", "نمى"), + (0xFD9C, "M", "يمم"), + (0xFD9E, "M", "بخي"), + (0xFD9F, "M", "تجي"), + (0xFDA0, "M", "تجى"), + (0xFDA1, "M", "تخي"), + (0xFDA2, "M", "تخى"), + (0xFDA3, "M", "تمي"), + (0xFDA4, "M", "تمى"), + (0xFDA5, "M", "جمي"), + (0xFDA6, "M", "جحى"), + (0xFDA7, "M", "جمى"), + (0xFDA8, "M", "سخى"), + (0xFDA9, "M", "صحي"), + (0xFDAA, "M", "شحي"), + ] + + +def _seg_49() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFDAB, "M", "ضحي"), + (0xFDAC, "M", "لجي"), + (0xFDAD, "M", "لمي"), + (0xFDAE, "M", "يحي"), + (0xFDAF, "M", "يجي"), + (0xFDB0, "M", "يمي"), + (0xFDB1, "M", "ممي"), + (0xFDB2, "M", "قمي"), + (0xFDB3, "M", "نحي"), + (0xFDB4, "M", "قمح"), + (0xFDB5, "M", "لحم"), + (0xFDB6, "M", "عمي"), + (0xFDB7, "M", "كمي"), + (0xFDB8, "M", "نجح"), + (0xFDB9, "M", "مخي"), + (0xFDBA, "M", "لجم"), + (0xFDBB, "M", "كمم"), + (0xFDBC, "M", "لجم"), + (0xFDBD, "M", "نجح"), + (0xFDBE, "M", "جحي"), + (0xFDBF, "M", "حجي"), + (0xFDC0, "M", "مجي"), + (0xFDC1, "M", "فمي"), + (0xFDC2, "M", "بحي"), + (0xFDC3, "M", "كمم"), + (0xFDC4, "M", "عجم"), + (0xFDC5, "M", "صمم"), + (0xFDC6, "M", "سخي"), + (0xFDC7, "M", "نجي"), + (0xFDC8, "X"), + (0xFDCF, "V"), + (0xFDD0, "X"), + (0xFDF0, "M", "صلے"), + (0xFDF1, "M", "قلے"), + (0xFDF2, "M", "الله"), + (0xFDF3, "M", "اكبر"), + (0xFDF4, "M", "محمد"), + (0xFDF5, "M", "صلعم"), + (0xFDF6, "M", "رسول"), + (0xFDF7, "M", "عليه"), + (0xFDF8, "M", "وسلم"), + (0xFDF9, "M", "صلى"), + (0xFDFA, "3", "صلى الله عليه وسلم"), + (0xFDFB, "3", "جل جلاله"), + (0xFDFC, "M", "ریال"), + (0xFDFD, "V"), + (0xFE00, "I"), + (0xFE10, "3", ","), + (0xFE11, "M", "、"), + (0xFE12, "X"), + (0xFE13, "3", ":"), + (0xFE14, "3", ";"), + (0xFE15, "3", "!"), + (0xFE16, "3", "?"), + (0xFE17, "M", "〖"), + (0xFE18, "M", "〗"), + (0xFE19, "X"), + (0xFE20, "V"), + (0xFE30, "X"), + (0xFE31, "M", "—"), + (0xFE32, "M", "–"), + (0xFE33, "3", "_"), + (0xFE35, "3", "("), + (0xFE36, "3", ")"), + (0xFE37, "3", "{"), + (0xFE38, "3", "}"), + (0xFE39, "M", "〔"), + (0xFE3A, "M", "〕"), + (0xFE3B, "M", "【"), + (0xFE3C, "M", "】"), + (0xFE3D, "M", "《"), + (0xFE3E, "M", "》"), + (0xFE3F, "M", "〈"), + (0xFE40, "M", "〉"), + (0xFE41, "M", "「"), + (0xFE42, "M", "」"), + (0xFE43, "M", "『"), + (0xFE44, "M", "』"), + (0xFE45, "V"), + (0xFE47, "3", "["), + (0xFE48, "3", "]"), + (0xFE49, "3", " ̅"), + (0xFE4D, "3", "_"), + (0xFE50, "3", ","), + (0xFE51, "M", "、"), + (0xFE52, "X"), + (0xFE54, "3", ";"), + (0xFE55, "3", ":"), + (0xFE56, "3", "?"), + (0xFE57, "3", "!"), + (0xFE58, "M", "—"), + (0xFE59, "3", "("), + (0xFE5A, "3", ")"), + (0xFE5B, "3", "{"), + (0xFE5C, "3", "}"), + (0xFE5D, "M", "〔"), + (0xFE5E, "M", "〕"), + (0xFE5F, "3", "#"), + (0xFE60, "3", "&"), + (0xFE61, "3", "*"), + ] + + +def _seg_50() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFE62, "3", "+"), + (0xFE63, "M", "-"), + (0xFE64, "3", "<"), + (0xFE65, "3", ">"), + (0xFE66, "3", "="), + (0xFE67, "X"), + (0xFE68, "3", "\\"), + (0xFE69, "3", "$"), + (0xFE6A, "3", "%"), + (0xFE6B, "3", "@"), + (0xFE6C, "X"), + (0xFE70, "3", " ً"), + (0xFE71, "M", "ـً"), + (0xFE72, "3", " ٌ"), + (0xFE73, "V"), + (0xFE74, "3", " ٍ"), + (0xFE75, "X"), + (0xFE76, "3", " َ"), + (0xFE77, "M", "ـَ"), + (0xFE78, "3", " ُ"), + (0xFE79, "M", "ـُ"), + (0xFE7A, "3", " ِ"), + (0xFE7B, "M", "ـِ"), + (0xFE7C, "3", " ّ"), + (0xFE7D, "M", "ـّ"), + (0xFE7E, "3", " ْ"), + (0xFE7F, "M", "ـْ"), + (0xFE80, "M", "ء"), + (0xFE81, "M", "آ"), + (0xFE83, "M", "أ"), + (0xFE85, "M", "ؤ"), + (0xFE87, "M", "إ"), + (0xFE89, "M", "ئ"), + (0xFE8D, "M", "ا"), + (0xFE8F, "M", "ب"), + (0xFE93, "M", "ة"), + (0xFE95, "M", "ت"), + (0xFE99, "M", "ث"), + (0xFE9D, "M", "ج"), + (0xFEA1, "M", "ح"), + (0xFEA5, "M", "خ"), + (0xFEA9, "M", "د"), + (0xFEAB, "M", "ذ"), + (0xFEAD, "M", "ر"), + (0xFEAF, "M", "ز"), + (0xFEB1, "M", "س"), + (0xFEB5, "M", "ش"), + (0xFEB9, "M", "ص"), + (0xFEBD, "M", "ض"), + (0xFEC1, "M", "ط"), + (0xFEC5, "M", "ظ"), + (0xFEC9, "M", "ع"), + (0xFECD, "M", "غ"), + (0xFED1, "M", "ف"), + (0xFED5, "M", "ق"), + (0xFED9, "M", "ك"), + (0xFEDD, "M", "ل"), + (0xFEE1, "M", "م"), + (0xFEE5, "M", "ن"), + (0xFEE9, "M", "ه"), + (0xFEED, "M", "و"), + (0xFEEF, "M", "ى"), + (0xFEF1, "M", "ي"), + (0xFEF5, "M", "لآ"), + (0xFEF7, "M", "لأ"), + (0xFEF9, "M", "لإ"), + (0xFEFB, "M", "لا"), + (0xFEFD, "X"), + (0xFEFF, "I"), + (0xFF00, "X"), + (0xFF01, "3", "!"), + (0xFF02, "3", '"'), + (0xFF03, "3", "#"), + (0xFF04, "3", "$"), + (0xFF05, "3", "%"), + (0xFF06, "3", "&"), + (0xFF07, "3", "'"), + (0xFF08, "3", "("), + (0xFF09, "3", ")"), + (0xFF0A, "3", "*"), + (0xFF0B, "3", "+"), + (0xFF0C, "3", ","), + (0xFF0D, "M", "-"), + (0xFF0E, "M", "."), + (0xFF0F, "3", "/"), + (0xFF10, "M", "0"), + (0xFF11, "M", "1"), + (0xFF12, "M", "2"), + (0xFF13, "M", "3"), + (0xFF14, "M", "4"), + (0xFF15, "M", "5"), + (0xFF16, "M", "6"), + (0xFF17, "M", "7"), + (0xFF18, "M", "8"), + (0xFF19, "M", "9"), + (0xFF1A, "3", ":"), + (0xFF1B, "3", ";"), + (0xFF1C, "3", "<"), + (0xFF1D, "3", "="), + (0xFF1E, "3", ">"), + ] + + +def _seg_51() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFF1F, "3", "?"), + (0xFF20, "3", "@"), + (0xFF21, "M", "a"), + (0xFF22, "M", "b"), + (0xFF23, "M", "c"), + (0xFF24, "M", "d"), + (0xFF25, "M", "e"), + (0xFF26, "M", "f"), + (0xFF27, "M", "g"), + (0xFF28, "M", "h"), + (0xFF29, "M", "i"), + (0xFF2A, "M", "j"), + (0xFF2B, "M", "k"), + (0xFF2C, "M", "l"), + (0xFF2D, "M", "m"), + (0xFF2E, "M", "n"), + (0xFF2F, "M", "o"), + (0xFF30, "M", "p"), + (0xFF31, "M", "q"), + (0xFF32, "M", "r"), + (0xFF33, "M", "s"), + (0xFF34, "M", "t"), + (0xFF35, "M", "u"), + (0xFF36, "M", "v"), + (0xFF37, "M", "w"), + (0xFF38, "M", "x"), + (0xFF39, "M", "y"), + (0xFF3A, "M", "z"), + (0xFF3B, "3", "["), + (0xFF3C, "3", "\\"), + (0xFF3D, "3", "]"), + (0xFF3E, "3", "^"), + (0xFF3F, "3", "_"), + (0xFF40, "3", "`"), + (0xFF41, "M", "a"), + (0xFF42, "M", "b"), + (0xFF43, "M", "c"), + (0xFF44, "M", "d"), + (0xFF45, "M", "e"), + (0xFF46, "M", "f"), + (0xFF47, "M", "g"), + (0xFF48, "M", "h"), + (0xFF49, "M", "i"), + (0xFF4A, "M", "j"), + (0xFF4B, "M", "k"), + (0xFF4C, "M", "l"), + (0xFF4D, "M", "m"), + (0xFF4E, "M", "n"), + (0xFF4F, "M", "o"), + (0xFF50, "M", "p"), + (0xFF51, "M", "q"), + (0xFF52, "M", "r"), + (0xFF53, "M", "s"), + (0xFF54, "M", "t"), + (0xFF55, "M", "u"), + (0xFF56, "M", "v"), + (0xFF57, "M", "w"), + (0xFF58, "M", "x"), + (0xFF59, "M", "y"), + (0xFF5A, "M", "z"), + (0xFF5B, "3", "{"), + (0xFF5C, "3", "|"), + (0xFF5D, "3", "}"), + (0xFF5E, "3", "~"), + (0xFF5F, "M", "⦅"), + (0xFF60, "M", "⦆"), + (0xFF61, "M", "."), + (0xFF62, "M", "「"), + (0xFF63, "M", "」"), + (0xFF64, "M", "、"), + (0xFF65, "M", "・"), + (0xFF66, "M", "ヲ"), + (0xFF67, "M", "ァ"), + (0xFF68, "M", "ィ"), + (0xFF69, "M", "ゥ"), + (0xFF6A, "M", "ェ"), + (0xFF6B, "M", "ォ"), + (0xFF6C, "M", "ャ"), + (0xFF6D, "M", "ュ"), + (0xFF6E, "M", "ョ"), + (0xFF6F, "M", "ッ"), + (0xFF70, "M", "ー"), + (0xFF71, "M", "ア"), + (0xFF72, "M", "イ"), + (0xFF73, "M", "ウ"), + (0xFF74, "M", "エ"), + (0xFF75, "M", "オ"), + (0xFF76, "M", "カ"), + (0xFF77, "M", "キ"), + (0xFF78, "M", "ク"), + (0xFF79, "M", "ケ"), + (0xFF7A, "M", "コ"), + (0xFF7B, "M", "サ"), + (0xFF7C, "M", "シ"), + (0xFF7D, "M", "ス"), + (0xFF7E, "M", "セ"), + (0xFF7F, "M", "ソ"), + (0xFF80, "M", "タ"), + (0xFF81, "M", "チ"), + (0xFF82, "M", "ツ"), + ] + + +def _seg_52() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFF83, "M", "テ"), + (0xFF84, "M", "ト"), + (0xFF85, "M", "ナ"), + (0xFF86, "M", "ニ"), + (0xFF87, "M", "ヌ"), + (0xFF88, "M", "ネ"), + (0xFF89, "M", "ノ"), + (0xFF8A, "M", "ハ"), + (0xFF8B, "M", "ヒ"), + (0xFF8C, "M", "フ"), + (0xFF8D, "M", "ヘ"), + (0xFF8E, "M", "ホ"), + (0xFF8F, "M", "マ"), + (0xFF90, "M", "ミ"), + (0xFF91, "M", "ム"), + (0xFF92, "M", "メ"), + (0xFF93, "M", "モ"), + (0xFF94, "M", "ヤ"), + (0xFF95, "M", "ユ"), + (0xFF96, "M", "ヨ"), + (0xFF97, "M", "ラ"), + (0xFF98, "M", "リ"), + (0xFF99, "M", "ル"), + (0xFF9A, "M", "レ"), + (0xFF9B, "M", "ロ"), + (0xFF9C, "M", "ワ"), + (0xFF9D, "M", "ン"), + (0xFF9E, "M", "゙"), + (0xFF9F, "M", "゚"), + (0xFFA0, "X"), + (0xFFA1, "M", "ᄀ"), + (0xFFA2, "M", "ᄁ"), + (0xFFA3, "M", "ᆪ"), + (0xFFA4, "M", "ᄂ"), + (0xFFA5, "M", "ᆬ"), + (0xFFA6, "M", "ᆭ"), + (0xFFA7, "M", "ᄃ"), + (0xFFA8, "M", "ᄄ"), + (0xFFA9, "M", "ᄅ"), + (0xFFAA, "M", "ᆰ"), + (0xFFAB, "M", "ᆱ"), + (0xFFAC, "M", "ᆲ"), + (0xFFAD, "M", "ᆳ"), + (0xFFAE, "M", "ᆴ"), + (0xFFAF, "M", "ᆵ"), + (0xFFB0, "M", "ᄚ"), + (0xFFB1, "M", "ᄆ"), + (0xFFB2, "M", "ᄇ"), + (0xFFB3, "M", "ᄈ"), + (0xFFB4, "M", "ᄡ"), + (0xFFB5, "M", "ᄉ"), + (0xFFB6, "M", "ᄊ"), + (0xFFB7, "M", "ᄋ"), + (0xFFB8, "M", "ᄌ"), + (0xFFB9, "M", "ᄍ"), + (0xFFBA, "M", "ᄎ"), + (0xFFBB, "M", "ᄏ"), + (0xFFBC, "M", "ᄐ"), + (0xFFBD, "M", "ᄑ"), + (0xFFBE, "M", "ᄒ"), + (0xFFBF, "X"), + (0xFFC2, "M", "ᅡ"), + (0xFFC3, "M", "ᅢ"), + (0xFFC4, "M", "ᅣ"), + (0xFFC5, "M", "ᅤ"), + (0xFFC6, "M", "ᅥ"), + (0xFFC7, "M", "ᅦ"), + (0xFFC8, "X"), + (0xFFCA, "M", "ᅧ"), + (0xFFCB, "M", "ᅨ"), + (0xFFCC, "M", "ᅩ"), + (0xFFCD, "M", "ᅪ"), + (0xFFCE, "M", "ᅫ"), + (0xFFCF, "M", "ᅬ"), + (0xFFD0, "X"), + (0xFFD2, "M", "ᅭ"), + (0xFFD3, "M", "ᅮ"), + (0xFFD4, "M", "ᅯ"), + (0xFFD5, "M", "ᅰ"), + (0xFFD6, "M", "ᅱ"), + (0xFFD7, "M", "ᅲ"), + (0xFFD8, "X"), + (0xFFDA, "M", "ᅳ"), + (0xFFDB, "M", "ᅴ"), + (0xFFDC, "M", "ᅵ"), + (0xFFDD, "X"), + (0xFFE0, "M", "¢"), + (0xFFE1, "M", "£"), + (0xFFE2, "M", "¬"), + (0xFFE3, "3", " ̄"), + (0xFFE4, "M", "¦"), + (0xFFE5, "M", "¥"), + (0xFFE6, "M", "₩"), + (0xFFE7, "X"), + (0xFFE8, "M", "│"), + (0xFFE9, "M", "←"), + (0xFFEA, "M", "↑"), + (0xFFEB, "M", "→"), + (0xFFEC, "M", "↓"), + (0xFFED, "M", "■"), + ] + + +def _seg_53() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFFEE, "M", "○"), + (0xFFEF, "X"), + (0x10000, "V"), + (0x1000C, "X"), + (0x1000D, "V"), + (0x10027, "X"), + (0x10028, "V"), + (0x1003B, "X"), + (0x1003C, "V"), + (0x1003E, "X"), + (0x1003F, "V"), + (0x1004E, "X"), + (0x10050, "V"), + (0x1005E, "X"), + (0x10080, "V"), + (0x100FB, "X"), + (0x10100, "V"), + (0x10103, "X"), + (0x10107, "V"), + (0x10134, "X"), + (0x10137, "V"), + (0x1018F, "X"), + (0x10190, "V"), + (0x1019D, "X"), + (0x101A0, "V"), + (0x101A1, "X"), + (0x101D0, "V"), + (0x101FE, "X"), + (0x10280, "V"), + (0x1029D, "X"), + (0x102A0, "V"), + (0x102D1, "X"), + (0x102E0, "V"), + (0x102FC, "X"), + (0x10300, "V"), + (0x10324, "X"), + (0x1032D, "V"), + (0x1034B, "X"), + (0x10350, "V"), + (0x1037B, "X"), + (0x10380, "V"), + (0x1039E, "X"), + (0x1039F, "V"), + (0x103C4, "X"), + (0x103C8, "V"), + (0x103D6, "X"), + (0x10400, "M", "𐐨"), + (0x10401, "M", "𐐩"), + (0x10402, "M", "𐐪"), + (0x10403, "M", "𐐫"), + (0x10404, "M", "𐐬"), + (0x10405, "M", "𐐭"), + (0x10406, "M", "𐐮"), + (0x10407, "M", "𐐯"), + (0x10408, "M", "𐐰"), + (0x10409, "M", "𐐱"), + (0x1040A, "M", "𐐲"), + (0x1040B, "M", "𐐳"), + (0x1040C, "M", "𐐴"), + (0x1040D, "M", "𐐵"), + (0x1040E, "M", "𐐶"), + (0x1040F, "M", "𐐷"), + (0x10410, "M", "𐐸"), + (0x10411, "M", "𐐹"), + (0x10412, "M", "𐐺"), + (0x10413, "M", "𐐻"), + (0x10414, "M", "𐐼"), + (0x10415, "M", "𐐽"), + (0x10416, "M", "𐐾"), + (0x10417, "M", "𐐿"), + (0x10418, "M", "𐑀"), + (0x10419, "M", "𐑁"), + (0x1041A, "M", "𐑂"), + (0x1041B, "M", "𐑃"), + (0x1041C, "M", "𐑄"), + (0x1041D, "M", "𐑅"), + (0x1041E, "M", "𐑆"), + (0x1041F, "M", "𐑇"), + (0x10420, "M", "𐑈"), + (0x10421, "M", "𐑉"), + (0x10422, "M", "𐑊"), + (0x10423, "M", "𐑋"), + (0x10424, "M", "𐑌"), + (0x10425, "M", "𐑍"), + (0x10426, "M", "𐑎"), + (0x10427, "M", "𐑏"), + (0x10428, "V"), + (0x1049E, "X"), + (0x104A0, "V"), + (0x104AA, "X"), + (0x104B0, "M", "𐓘"), + (0x104B1, "M", "𐓙"), + (0x104B2, "M", "𐓚"), + (0x104B3, "M", "𐓛"), + (0x104B4, "M", "𐓜"), + (0x104B5, "M", "𐓝"), + (0x104B6, "M", "𐓞"), + (0x104B7, "M", "𐓟"), + (0x104B8, "M", "𐓠"), + (0x104B9, "M", "𐓡"), + ] + + +def _seg_54() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x104BA, "M", "𐓢"), + (0x104BB, "M", "𐓣"), + (0x104BC, "M", "𐓤"), + (0x104BD, "M", "𐓥"), + (0x104BE, "M", "𐓦"), + (0x104BF, "M", "𐓧"), + (0x104C0, "M", "𐓨"), + (0x104C1, "M", "𐓩"), + (0x104C2, "M", "𐓪"), + (0x104C3, "M", "𐓫"), + (0x104C4, "M", "𐓬"), + (0x104C5, "M", "𐓭"), + (0x104C6, "M", "𐓮"), + (0x104C7, "M", "𐓯"), + (0x104C8, "M", "𐓰"), + (0x104C9, "M", "𐓱"), + (0x104CA, "M", "𐓲"), + (0x104CB, "M", "𐓳"), + (0x104CC, "M", "𐓴"), + (0x104CD, "M", "𐓵"), + (0x104CE, "M", "𐓶"), + (0x104CF, "M", "𐓷"), + (0x104D0, "M", "𐓸"), + (0x104D1, "M", "𐓹"), + (0x104D2, "M", "𐓺"), + (0x104D3, "M", "𐓻"), + (0x104D4, "X"), + (0x104D8, "V"), + (0x104FC, "X"), + (0x10500, "V"), + (0x10528, "X"), + (0x10530, "V"), + (0x10564, "X"), + (0x1056F, "V"), + (0x10570, "M", "𐖗"), + (0x10571, "M", "𐖘"), + (0x10572, "M", "𐖙"), + (0x10573, "M", "𐖚"), + (0x10574, "M", "𐖛"), + (0x10575, "M", "𐖜"), + (0x10576, "M", "𐖝"), + (0x10577, "M", "𐖞"), + (0x10578, "M", "𐖟"), + (0x10579, "M", "𐖠"), + (0x1057A, "M", "𐖡"), + (0x1057B, "X"), + (0x1057C, "M", "𐖣"), + (0x1057D, "M", "𐖤"), + (0x1057E, "M", "𐖥"), + (0x1057F, "M", "𐖦"), + (0x10580, "M", "𐖧"), + (0x10581, "M", "𐖨"), + (0x10582, "M", "𐖩"), + (0x10583, "M", "𐖪"), + (0x10584, "M", "𐖫"), + (0x10585, "M", "𐖬"), + (0x10586, "M", "𐖭"), + (0x10587, "M", "𐖮"), + (0x10588, "M", "𐖯"), + (0x10589, "M", "𐖰"), + (0x1058A, "M", "𐖱"), + (0x1058B, "X"), + (0x1058C, "M", "𐖳"), + (0x1058D, "M", "𐖴"), + (0x1058E, "M", "𐖵"), + (0x1058F, "M", "𐖶"), + (0x10590, "M", "𐖷"), + (0x10591, "M", "𐖸"), + (0x10592, "M", "𐖹"), + (0x10593, "X"), + (0x10594, "M", "𐖻"), + (0x10595, "M", "𐖼"), + (0x10596, "X"), + (0x10597, "V"), + (0x105A2, "X"), + (0x105A3, "V"), + (0x105B2, "X"), + (0x105B3, "V"), + (0x105BA, "X"), + (0x105BB, "V"), + (0x105BD, "X"), + (0x10600, "V"), + (0x10737, "X"), + (0x10740, "V"), + (0x10756, "X"), + (0x10760, "V"), + (0x10768, "X"), + (0x10780, "V"), + (0x10781, "M", "ː"), + (0x10782, "M", "ˑ"), + (0x10783, "M", "æ"), + (0x10784, "M", "ʙ"), + (0x10785, "M", "ɓ"), + (0x10786, "X"), + (0x10787, "M", "ʣ"), + (0x10788, "M", "ꭦ"), + (0x10789, "M", "ʥ"), + (0x1078A, "M", "ʤ"), + (0x1078B, "M", "ɖ"), + (0x1078C, "M", "ɗ"), + ] + + +def _seg_55() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1078D, "M", "ᶑ"), + (0x1078E, "M", "ɘ"), + (0x1078F, "M", "ɞ"), + (0x10790, "M", "ʩ"), + (0x10791, "M", "ɤ"), + (0x10792, "M", "ɢ"), + (0x10793, "M", "ɠ"), + (0x10794, "M", "ʛ"), + (0x10795, "M", "ħ"), + (0x10796, "M", "ʜ"), + (0x10797, "M", "ɧ"), + (0x10798, "M", "ʄ"), + (0x10799, "M", "ʪ"), + (0x1079A, "M", "ʫ"), + (0x1079B, "M", "ɬ"), + (0x1079C, "M", "𝼄"), + (0x1079D, "M", "ꞎ"), + (0x1079E, "M", "ɮ"), + (0x1079F, "M", "𝼅"), + (0x107A0, "M", "ʎ"), + (0x107A1, "M", "𝼆"), + (0x107A2, "M", "ø"), + (0x107A3, "M", "ɶ"), + (0x107A4, "M", "ɷ"), + (0x107A5, "M", "q"), + (0x107A6, "M", "ɺ"), + (0x107A7, "M", "𝼈"), + (0x107A8, "M", "ɽ"), + (0x107A9, "M", "ɾ"), + (0x107AA, "M", "ʀ"), + (0x107AB, "M", "ʨ"), + (0x107AC, "M", "ʦ"), + (0x107AD, "M", "ꭧ"), + (0x107AE, "M", "ʧ"), + (0x107AF, "M", "ʈ"), + (0x107B0, "M", "ⱱ"), + (0x107B1, "X"), + (0x107B2, "M", "ʏ"), + (0x107B3, "M", "ʡ"), + (0x107B4, "M", "ʢ"), + (0x107B5, "M", "ʘ"), + (0x107B6, "M", "ǀ"), + (0x107B7, "M", "ǁ"), + (0x107B8, "M", "ǂ"), + (0x107B9, "M", "𝼊"), + (0x107BA, "M", "𝼞"), + (0x107BB, "X"), + (0x10800, "V"), + (0x10806, "X"), + (0x10808, "V"), + (0x10809, "X"), + (0x1080A, "V"), + (0x10836, "X"), + (0x10837, "V"), + (0x10839, "X"), + (0x1083C, "V"), + (0x1083D, "X"), + (0x1083F, "V"), + (0x10856, "X"), + (0x10857, "V"), + (0x1089F, "X"), + (0x108A7, "V"), + (0x108B0, "X"), + (0x108E0, "V"), + (0x108F3, "X"), + (0x108F4, "V"), + (0x108F6, "X"), + (0x108FB, "V"), + (0x1091C, "X"), + (0x1091F, "V"), + (0x1093A, "X"), + (0x1093F, "V"), + (0x10940, "X"), + (0x10980, "V"), + (0x109B8, "X"), + (0x109BC, "V"), + (0x109D0, "X"), + (0x109D2, "V"), + (0x10A04, "X"), + (0x10A05, "V"), + (0x10A07, "X"), + (0x10A0C, "V"), + (0x10A14, "X"), + (0x10A15, "V"), + (0x10A18, "X"), + (0x10A19, "V"), + (0x10A36, "X"), + (0x10A38, "V"), + (0x10A3B, "X"), + (0x10A3F, "V"), + (0x10A49, "X"), + (0x10A50, "V"), + (0x10A59, "X"), + (0x10A60, "V"), + (0x10AA0, "X"), + (0x10AC0, "V"), + (0x10AE7, "X"), + (0x10AEB, "V"), + (0x10AF7, "X"), + (0x10B00, "V"), + ] + + +def _seg_56() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x10B36, "X"), + (0x10B39, "V"), + (0x10B56, "X"), + (0x10B58, "V"), + (0x10B73, "X"), + (0x10B78, "V"), + (0x10B92, "X"), + (0x10B99, "V"), + (0x10B9D, "X"), + (0x10BA9, "V"), + (0x10BB0, "X"), + (0x10C00, "V"), + (0x10C49, "X"), + (0x10C80, "M", "𐳀"), + (0x10C81, "M", "𐳁"), + (0x10C82, "M", "𐳂"), + (0x10C83, "M", "𐳃"), + (0x10C84, "M", "𐳄"), + (0x10C85, "M", "𐳅"), + (0x10C86, "M", "𐳆"), + (0x10C87, "M", "𐳇"), + (0x10C88, "M", "𐳈"), + (0x10C89, "M", "𐳉"), + (0x10C8A, "M", "𐳊"), + (0x10C8B, "M", "𐳋"), + (0x10C8C, "M", "𐳌"), + (0x10C8D, "M", "𐳍"), + (0x10C8E, "M", "𐳎"), + (0x10C8F, "M", "𐳏"), + (0x10C90, "M", "𐳐"), + (0x10C91, "M", "𐳑"), + (0x10C92, "M", "𐳒"), + (0x10C93, "M", "𐳓"), + (0x10C94, "M", "𐳔"), + (0x10C95, "M", "𐳕"), + (0x10C96, "M", "𐳖"), + (0x10C97, "M", "𐳗"), + (0x10C98, "M", "𐳘"), + (0x10C99, "M", "𐳙"), + (0x10C9A, "M", "𐳚"), + (0x10C9B, "M", "𐳛"), + (0x10C9C, "M", "𐳜"), + (0x10C9D, "M", "𐳝"), + (0x10C9E, "M", "𐳞"), + (0x10C9F, "M", "𐳟"), + (0x10CA0, "M", "𐳠"), + (0x10CA1, "M", "𐳡"), + (0x10CA2, "M", "𐳢"), + (0x10CA3, "M", "𐳣"), + (0x10CA4, "M", "𐳤"), + (0x10CA5, "M", "𐳥"), + (0x10CA6, "M", "𐳦"), + (0x10CA7, "M", "𐳧"), + (0x10CA8, "M", "𐳨"), + (0x10CA9, "M", "𐳩"), + (0x10CAA, "M", "𐳪"), + (0x10CAB, "M", "𐳫"), + (0x10CAC, "M", "𐳬"), + (0x10CAD, "M", "𐳭"), + (0x10CAE, "M", "𐳮"), + (0x10CAF, "M", "𐳯"), + (0x10CB0, "M", "𐳰"), + (0x10CB1, "M", "𐳱"), + (0x10CB2, "M", "𐳲"), + (0x10CB3, "X"), + (0x10CC0, "V"), + (0x10CF3, "X"), + (0x10CFA, "V"), + (0x10D28, "X"), + (0x10D30, "V"), + (0x10D3A, "X"), + (0x10E60, "V"), + (0x10E7F, "X"), + (0x10E80, "V"), + (0x10EAA, "X"), + (0x10EAB, "V"), + (0x10EAE, "X"), + (0x10EB0, "V"), + (0x10EB2, "X"), + (0x10EFD, "V"), + (0x10F28, "X"), + (0x10F30, "V"), + (0x10F5A, "X"), + (0x10F70, "V"), + (0x10F8A, "X"), + (0x10FB0, "V"), + (0x10FCC, "X"), + (0x10FE0, "V"), + (0x10FF7, "X"), + (0x11000, "V"), + (0x1104E, "X"), + (0x11052, "V"), + (0x11076, "X"), + (0x1107F, "V"), + (0x110BD, "X"), + (0x110BE, "V"), + (0x110C3, "X"), + (0x110D0, "V"), + (0x110E9, "X"), + (0x110F0, "V"), + ] + + +def _seg_57() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x110FA, "X"), + (0x11100, "V"), + (0x11135, "X"), + (0x11136, "V"), + (0x11148, "X"), + (0x11150, "V"), + (0x11177, "X"), + (0x11180, "V"), + (0x111E0, "X"), + (0x111E1, "V"), + (0x111F5, "X"), + (0x11200, "V"), + (0x11212, "X"), + (0x11213, "V"), + (0x11242, "X"), + (0x11280, "V"), + (0x11287, "X"), + (0x11288, "V"), + (0x11289, "X"), + (0x1128A, "V"), + (0x1128E, "X"), + (0x1128F, "V"), + (0x1129E, "X"), + (0x1129F, "V"), + (0x112AA, "X"), + (0x112B0, "V"), + (0x112EB, "X"), + (0x112F0, "V"), + (0x112FA, "X"), + (0x11300, "V"), + (0x11304, "X"), + (0x11305, "V"), + (0x1130D, "X"), + (0x1130F, "V"), + (0x11311, "X"), + (0x11313, "V"), + (0x11329, "X"), + (0x1132A, "V"), + (0x11331, "X"), + (0x11332, "V"), + (0x11334, "X"), + (0x11335, "V"), + (0x1133A, "X"), + (0x1133B, "V"), + (0x11345, "X"), + (0x11347, "V"), + (0x11349, "X"), + (0x1134B, "V"), + (0x1134E, "X"), + (0x11350, "V"), + (0x11351, "X"), + (0x11357, "V"), + (0x11358, "X"), + (0x1135D, "V"), + (0x11364, "X"), + (0x11366, "V"), + (0x1136D, "X"), + (0x11370, "V"), + (0x11375, "X"), + (0x11400, "V"), + (0x1145C, "X"), + (0x1145D, "V"), + (0x11462, "X"), + (0x11480, "V"), + (0x114C8, "X"), + (0x114D0, "V"), + (0x114DA, "X"), + (0x11580, "V"), + (0x115B6, "X"), + (0x115B8, "V"), + (0x115DE, "X"), + (0x11600, "V"), + (0x11645, "X"), + (0x11650, "V"), + (0x1165A, "X"), + (0x11660, "V"), + (0x1166D, "X"), + (0x11680, "V"), + (0x116BA, "X"), + (0x116C0, "V"), + (0x116CA, "X"), + (0x11700, "V"), + (0x1171B, "X"), + (0x1171D, "V"), + (0x1172C, "X"), + (0x11730, "V"), + (0x11747, "X"), + (0x11800, "V"), + (0x1183C, "X"), + (0x118A0, "M", "𑣀"), + (0x118A1, "M", "𑣁"), + (0x118A2, "M", "𑣂"), + (0x118A3, "M", "𑣃"), + (0x118A4, "M", "𑣄"), + (0x118A5, "M", "𑣅"), + (0x118A6, "M", "𑣆"), + (0x118A7, "M", "𑣇"), + (0x118A8, "M", "𑣈"), + (0x118A9, "M", "𑣉"), + (0x118AA, "M", "𑣊"), + ] + + +def _seg_58() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x118AB, "M", "𑣋"), + (0x118AC, "M", "𑣌"), + (0x118AD, "M", "𑣍"), + (0x118AE, "M", "𑣎"), + (0x118AF, "M", "𑣏"), + (0x118B0, "M", "𑣐"), + (0x118B1, "M", "𑣑"), + (0x118B2, "M", "𑣒"), + (0x118B3, "M", "𑣓"), + (0x118B4, "M", "𑣔"), + (0x118B5, "M", "𑣕"), + (0x118B6, "M", "𑣖"), + (0x118B7, "M", "𑣗"), + (0x118B8, "M", "𑣘"), + (0x118B9, "M", "𑣙"), + (0x118BA, "M", "𑣚"), + (0x118BB, "M", "𑣛"), + (0x118BC, "M", "𑣜"), + (0x118BD, "M", "𑣝"), + (0x118BE, "M", "𑣞"), + (0x118BF, "M", "𑣟"), + (0x118C0, "V"), + (0x118F3, "X"), + (0x118FF, "V"), + (0x11907, "X"), + (0x11909, "V"), + (0x1190A, "X"), + (0x1190C, "V"), + (0x11914, "X"), + (0x11915, "V"), + (0x11917, "X"), + (0x11918, "V"), + (0x11936, "X"), + (0x11937, "V"), + (0x11939, "X"), + (0x1193B, "V"), + (0x11947, "X"), + (0x11950, "V"), + (0x1195A, "X"), + (0x119A0, "V"), + (0x119A8, "X"), + (0x119AA, "V"), + (0x119D8, "X"), + (0x119DA, "V"), + (0x119E5, "X"), + (0x11A00, "V"), + (0x11A48, "X"), + (0x11A50, "V"), + (0x11AA3, "X"), + (0x11AB0, "V"), + (0x11AF9, "X"), + (0x11B00, "V"), + (0x11B0A, "X"), + (0x11C00, "V"), + (0x11C09, "X"), + (0x11C0A, "V"), + (0x11C37, "X"), + (0x11C38, "V"), + (0x11C46, "X"), + (0x11C50, "V"), + (0x11C6D, "X"), + (0x11C70, "V"), + (0x11C90, "X"), + (0x11C92, "V"), + (0x11CA8, "X"), + (0x11CA9, "V"), + (0x11CB7, "X"), + (0x11D00, "V"), + (0x11D07, "X"), + (0x11D08, "V"), + (0x11D0A, "X"), + (0x11D0B, "V"), + (0x11D37, "X"), + (0x11D3A, "V"), + (0x11D3B, "X"), + (0x11D3C, "V"), + (0x11D3E, "X"), + (0x11D3F, "V"), + (0x11D48, "X"), + (0x11D50, "V"), + (0x11D5A, "X"), + (0x11D60, "V"), + (0x11D66, "X"), + (0x11D67, "V"), + (0x11D69, "X"), + (0x11D6A, "V"), + (0x11D8F, "X"), + (0x11D90, "V"), + (0x11D92, "X"), + (0x11D93, "V"), + (0x11D99, "X"), + (0x11DA0, "V"), + (0x11DAA, "X"), + (0x11EE0, "V"), + (0x11EF9, "X"), + (0x11F00, "V"), + (0x11F11, "X"), + (0x11F12, "V"), + (0x11F3B, "X"), + (0x11F3E, "V"), + ] + + +def _seg_59() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x11F5A, "X"), + (0x11FB0, "V"), + (0x11FB1, "X"), + (0x11FC0, "V"), + (0x11FF2, "X"), + (0x11FFF, "V"), + (0x1239A, "X"), + (0x12400, "V"), + (0x1246F, "X"), + (0x12470, "V"), + (0x12475, "X"), + (0x12480, "V"), + (0x12544, "X"), + (0x12F90, "V"), + (0x12FF3, "X"), + (0x13000, "V"), + (0x13430, "X"), + (0x13440, "V"), + (0x13456, "X"), + (0x14400, "V"), + (0x14647, "X"), + (0x16800, "V"), + (0x16A39, "X"), + (0x16A40, "V"), + (0x16A5F, "X"), + (0x16A60, "V"), + (0x16A6A, "X"), + (0x16A6E, "V"), + (0x16ABF, "X"), + (0x16AC0, "V"), + (0x16ACA, "X"), + (0x16AD0, "V"), + (0x16AEE, "X"), + (0x16AF0, "V"), + (0x16AF6, "X"), + (0x16B00, "V"), + (0x16B46, "X"), + (0x16B50, "V"), + (0x16B5A, "X"), + (0x16B5B, "V"), + (0x16B62, "X"), + (0x16B63, "V"), + (0x16B78, "X"), + (0x16B7D, "V"), + (0x16B90, "X"), + (0x16E40, "M", "𖹠"), + (0x16E41, "M", "𖹡"), + (0x16E42, "M", "𖹢"), + (0x16E43, "M", "𖹣"), + (0x16E44, "M", "𖹤"), + (0x16E45, "M", "𖹥"), + (0x16E46, "M", "𖹦"), + (0x16E47, "M", "𖹧"), + (0x16E48, "M", "𖹨"), + (0x16E49, "M", "𖹩"), + (0x16E4A, "M", "𖹪"), + (0x16E4B, "M", "𖹫"), + (0x16E4C, "M", "𖹬"), + (0x16E4D, "M", "𖹭"), + (0x16E4E, "M", "𖹮"), + (0x16E4F, "M", "𖹯"), + (0x16E50, "M", "𖹰"), + (0x16E51, "M", "𖹱"), + (0x16E52, "M", "𖹲"), + (0x16E53, "M", "𖹳"), + (0x16E54, "M", "𖹴"), + (0x16E55, "M", "𖹵"), + (0x16E56, "M", "𖹶"), + (0x16E57, "M", "𖹷"), + (0x16E58, "M", "𖹸"), + (0x16E59, "M", "𖹹"), + (0x16E5A, "M", "𖹺"), + (0x16E5B, "M", "𖹻"), + (0x16E5C, "M", "𖹼"), + (0x16E5D, "M", "𖹽"), + (0x16E5E, "M", "𖹾"), + (0x16E5F, "M", "𖹿"), + (0x16E60, "V"), + (0x16E9B, "X"), + (0x16F00, "V"), + (0x16F4B, "X"), + (0x16F4F, "V"), + (0x16F88, "X"), + (0x16F8F, "V"), + (0x16FA0, "X"), + (0x16FE0, "V"), + (0x16FE5, "X"), + (0x16FF0, "V"), + (0x16FF2, "X"), + (0x17000, "V"), + (0x187F8, "X"), + (0x18800, "V"), + (0x18CD6, "X"), + (0x18D00, "V"), + (0x18D09, "X"), + (0x1AFF0, "V"), + (0x1AFF4, "X"), + (0x1AFF5, "V"), + (0x1AFFC, "X"), + (0x1AFFD, "V"), + ] + + +def _seg_60() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1AFFF, "X"), + (0x1B000, "V"), + (0x1B123, "X"), + (0x1B132, "V"), + (0x1B133, "X"), + (0x1B150, "V"), + (0x1B153, "X"), + (0x1B155, "V"), + (0x1B156, "X"), + (0x1B164, "V"), + (0x1B168, "X"), + (0x1B170, "V"), + (0x1B2FC, "X"), + (0x1BC00, "V"), + (0x1BC6B, "X"), + (0x1BC70, "V"), + (0x1BC7D, "X"), + (0x1BC80, "V"), + (0x1BC89, "X"), + (0x1BC90, "V"), + (0x1BC9A, "X"), + (0x1BC9C, "V"), + (0x1BCA0, "I"), + (0x1BCA4, "X"), + (0x1CF00, "V"), + (0x1CF2E, "X"), + (0x1CF30, "V"), + (0x1CF47, "X"), + (0x1CF50, "V"), + (0x1CFC4, "X"), + (0x1D000, "V"), + (0x1D0F6, "X"), + (0x1D100, "V"), + (0x1D127, "X"), + (0x1D129, "V"), + (0x1D15E, "M", "𝅗𝅥"), + (0x1D15F, "M", "𝅘𝅥"), + (0x1D160, "M", "𝅘𝅥𝅮"), + (0x1D161, "M", "𝅘𝅥𝅯"), + (0x1D162, "M", "𝅘𝅥𝅰"), + (0x1D163, "M", "𝅘𝅥𝅱"), + (0x1D164, "M", "𝅘𝅥𝅲"), + (0x1D165, "V"), + (0x1D173, "X"), + (0x1D17B, "V"), + (0x1D1BB, "M", "𝆹𝅥"), + (0x1D1BC, "M", "𝆺𝅥"), + (0x1D1BD, "M", "𝆹𝅥𝅮"), + (0x1D1BE, "M", "𝆺𝅥𝅮"), + (0x1D1BF, "M", "𝆹𝅥𝅯"), + (0x1D1C0, "M", "𝆺𝅥𝅯"), + (0x1D1C1, "V"), + (0x1D1EB, "X"), + (0x1D200, "V"), + (0x1D246, "X"), + (0x1D2C0, "V"), + (0x1D2D4, "X"), + (0x1D2E0, "V"), + (0x1D2F4, "X"), + (0x1D300, "V"), + (0x1D357, "X"), + (0x1D360, "V"), + (0x1D379, "X"), + (0x1D400, "M", "a"), + (0x1D401, "M", "b"), + (0x1D402, "M", "c"), + (0x1D403, "M", "d"), + (0x1D404, "M", "e"), + (0x1D405, "M", "f"), + (0x1D406, "M", "g"), + (0x1D407, "M", "h"), + (0x1D408, "M", "i"), + (0x1D409, "M", "j"), + (0x1D40A, "M", "k"), + (0x1D40B, "M", "l"), + (0x1D40C, "M", "m"), + (0x1D40D, "M", "n"), + (0x1D40E, "M", "o"), + (0x1D40F, "M", "p"), + (0x1D410, "M", "q"), + (0x1D411, "M", "r"), + (0x1D412, "M", "s"), + (0x1D413, "M", "t"), + (0x1D414, "M", "u"), + (0x1D415, "M", "v"), + (0x1D416, "M", "w"), + (0x1D417, "M", "x"), + (0x1D418, "M", "y"), + (0x1D419, "M", "z"), + (0x1D41A, "M", "a"), + (0x1D41B, "M", "b"), + (0x1D41C, "M", "c"), + (0x1D41D, "M", "d"), + (0x1D41E, "M", "e"), + (0x1D41F, "M", "f"), + (0x1D420, "M", "g"), + (0x1D421, "M", "h"), + (0x1D422, "M", "i"), + (0x1D423, "M", "j"), + (0x1D424, "M", "k"), + ] + + +def _seg_61() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D425, "M", "l"), + (0x1D426, "M", "m"), + (0x1D427, "M", "n"), + (0x1D428, "M", "o"), + (0x1D429, "M", "p"), + (0x1D42A, "M", "q"), + (0x1D42B, "M", "r"), + (0x1D42C, "M", "s"), + (0x1D42D, "M", "t"), + (0x1D42E, "M", "u"), + (0x1D42F, "M", "v"), + (0x1D430, "M", "w"), + (0x1D431, "M", "x"), + (0x1D432, "M", "y"), + (0x1D433, "M", "z"), + (0x1D434, "M", "a"), + (0x1D435, "M", "b"), + (0x1D436, "M", "c"), + (0x1D437, "M", "d"), + (0x1D438, "M", "e"), + (0x1D439, "M", "f"), + (0x1D43A, "M", "g"), + (0x1D43B, "M", "h"), + (0x1D43C, "M", "i"), + (0x1D43D, "M", "j"), + (0x1D43E, "M", "k"), + (0x1D43F, "M", "l"), + (0x1D440, "M", "m"), + (0x1D441, "M", "n"), + (0x1D442, "M", "o"), + (0x1D443, "M", "p"), + (0x1D444, "M", "q"), + (0x1D445, "M", "r"), + (0x1D446, "M", "s"), + (0x1D447, "M", "t"), + (0x1D448, "M", "u"), + (0x1D449, "M", "v"), + (0x1D44A, "M", "w"), + (0x1D44B, "M", "x"), + (0x1D44C, "M", "y"), + (0x1D44D, "M", "z"), + (0x1D44E, "M", "a"), + (0x1D44F, "M", "b"), + (0x1D450, "M", "c"), + (0x1D451, "M", "d"), + (0x1D452, "M", "e"), + (0x1D453, "M", "f"), + (0x1D454, "M", "g"), + (0x1D455, "X"), + (0x1D456, "M", "i"), + (0x1D457, "M", "j"), + (0x1D458, "M", "k"), + (0x1D459, "M", "l"), + (0x1D45A, "M", "m"), + (0x1D45B, "M", "n"), + (0x1D45C, "M", "o"), + (0x1D45D, "M", "p"), + (0x1D45E, "M", "q"), + (0x1D45F, "M", "r"), + (0x1D460, "M", "s"), + (0x1D461, "M", "t"), + (0x1D462, "M", "u"), + (0x1D463, "M", "v"), + (0x1D464, "M", "w"), + (0x1D465, "M", "x"), + (0x1D466, "M", "y"), + (0x1D467, "M", "z"), + (0x1D468, "M", "a"), + (0x1D469, "M", "b"), + (0x1D46A, "M", "c"), + (0x1D46B, "M", "d"), + (0x1D46C, "M", "e"), + (0x1D46D, "M", "f"), + (0x1D46E, "M", "g"), + (0x1D46F, "M", "h"), + (0x1D470, "M", "i"), + (0x1D471, "M", "j"), + (0x1D472, "M", "k"), + (0x1D473, "M", "l"), + (0x1D474, "M", "m"), + (0x1D475, "M", "n"), + (0x1D476, "M", "o"), + (0x1D477, "M", "p"), + (0x1D478, "M", "q"), + (0x1D479, "M", "r"), + (0x1D47A, "M", "s"), + (0x1D47B, "M", "t"), + (0x1D47C, "M", "u"), + (0x1D47D, "M", "v"), + (0x1D47E, "M", "w"), + (0x1D47F, "M", "x"), + (0x1D480, "M", "y"), + (0x1D481, "M", "z"), + (0x1D482, "M", "a"), + (0x1D483, "M", "b"), + (0x1D484, "M", "c"), + (0x1D485, "M", "d"), + (0x1D486, "M", "e"), + (0x1D487, "M", "f"), + (0x1D488, "M", "g"), + ] + + +def _seg_62() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D489, "M", "h"), + (0x1D48A, "M", "i"), + (0x1D48B, "M", "j"), + (0x1D48C, "M", "k"), + (0x1D48D, "M", "l"), + (0x1D48E, "M", "m"), + (0x1D48F, "M", "n"), + (0x1D490, "M", "o"), + (0x1D491, "M", "p"), + (0x1D492, "M", "q"), + (0x1D493, "M", "r"), + (0x1D494, "M", "s"), + (0x1D495, "M", "t"), + (0x1D496, "M", "u"), + (0x1D497, "M", "v"), + (0x1D498, "M", "w"), + (0x1D499, "M", "x"), + (0x1D49A, "M", "y"), + (0x1D49B, "M", "z"), + (0x1D49C, "M", "a"), + (0x1D49D, "X"), + (0x1D49E, "M", "c"), + (0x1D49F, "M", "d"), + (0x1D4A0, "X"), + (0x1D4A2, "M", "g"), + (0x1D4A3, "X"), + (0x1D4A5, "M", "j"), + (0x1D4A6, "M", "k"), + (0x1D4A7, "X"), + (0x1D4A9, "M", "n"), + (0x1D4AA, "M", "o"), + (0x1D4AB, "M", "p"), + (0x1D4AC, "M", "q"), + (0x1D4AD, "X"), + (0x1D4AE, "M", "s"), + (0x1D4AF, "M", "t"), + (0x1D4B0, "M", "u"), + (0x1D4B1, "M", "v"), + (0x1D4B2, "M", "w"), + (0x1D4B3, "M", "x"), + (0x1D4B4, "M", "y"), + (0x1D4B5, "M", "z"), + (0x1D4B6, "M", "a"), + (0x1D4B7, "M", "b"), + (0x1D4B8, "M", "c"), + (0x1D4B9, "M", "d"), + (0x1D4BA, "X"), + (0x1D4BB, "M", "f"), + (0x1D4BC, "X"), + (0x1D4BD, "M", "h"), + (0x1D4BE, "M", "i"), + (0x1D4BF, "M", "j"), + (0x1D4C0, "M", "k"), + (0x1D4C1, "M", "l"), + (0x1D4C2, "M", "m"), + (0x1D4C3, "M", "n"), + (0x1D4C4, "X"), + (0x1D4C5, "M", "p"), + (0x1D4C6, "M", "q"), + (0x1D4C7, "M", "r"), + (0x1D4C8, "M", "s"), + (0x1D4C9, "M", "t"), + (0x1D4CA, "M", "u"), + (0x1D4CB, "M", "v"), + (0x1D4CC, "M", "w"), + (0x1D4CD, "M", "x"), + (0x1D4CE, "M", "y"), + (0x1D4CF, "M", "z"), + (0x1D4D0, "M", "a"), + (0x1D4D1, "M", "b"), + (0x1D4D2, "M", "c"), + (0x1D4D3, "M", "d"), + (0x1D4D4, "M", "e"), + (0x1D4D5, "M", "f"), + (0x1D4D6, "M", "g"), + (0x1D4D7, "M", "h"), + (0x1D4D8, "M", "i"), + (0x1D4D9, "M", "j"), + (0x1D4DA, "M", "k"), + (0x1D4DB, "M", "l"), + (0x1D4DC, "M", "m"), + (0x1D4DD, "M", "n"), + (0x1D4DE, "M", "o"), + (0x1D4DF, "M", "p"), + (0x1D4E0, "M", "q"), + (0x1D4E1, "M", "r"), + (0x1D4E2, "M", "s"), + (0x1D4E3, "M", "t"), + (0x1D4E4, "M", "u"), + (0x1D4E5, "M", "v"), + (0x1D4E6, "M", "w"), + (0x1D4E7, "M", "x"), + (0x1D4E8, "M", "y"), + (0x1D4E9, "M", "z"), + (0x1D4EA, "M", "a"), + (0x1D4EB, "M", "b"), + (0x1D4EC, "M", "c"), + (0x1D4ED, "M", "d"), + (0x1D4EE, "M", "e"), + (0x1D4EF, "M", "f"), + ] + + +def _seg_63() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D4F0, "M", "g"), + (0x1D4F1, "M", "h"), + (0x1D4F2, "M", "i"), + (0x1D4F3, "M", "j"), + (0x1D4F4, "M", "k"), + (0x1D4F5, "M", "l"), + (0x1D4F6, "M", "m"), + (0x1D4F7, "M", "n"), + (0x1D4F8, "M", "o"), + (0x1D4F9, "M", "p"), + (0x1D4FA, "M", "q"), + (0x1D4FB, "M", "r"), + (0x1D4FC, "M", "s"), + (0x1D4FD, "M", "t"), + (0x1D4FE, "M", "u"), + (0x1D4FF, "M", "v"), + (0x1D500, "M", "w"), + (0x1D501, "M", "x"), + (0x1D502, "M", "y"), + (0x1D503, "M", "z"), + (0x1D504, "M", "a"), + (0x1D505, "M", "b"), + (0x1D506, "X"), + (0x1D507, "M", "d"), + (0x1D508, "M", "e"), + (0x1D509, "M", "f"), + (0x1D50A, "M", "g"), + (0x1D50B, "X"), + (0x1D50D, "M", "j"), + (0x1D50E, "M", "k"), + (0x1D50F, "M", "l"), + (0x1D510, "M", "m"), + (0x1D511, "M", "n"), + (0x1D512, "M", "o"), + (0x1D513, "M", "p"), + (0x1D514, "M", "q"), + (0x1D515, "X"), + (0x1D516, "M", "s"), + (0x1D517, "M", "t"), + (0x1D518, "M", "u"), + (0x1D519, "M", "v"), + (0x1D51A, "M", "w"), + (0x1D51B, "M", "x"), + (0x1D51C, "M", "y"), + (0x1D51D, "X"), + (0x1D51E, "M", "a"), + (0x1D51F, "M", "b"), + (0x1D520, "M", "c"), + (0x1D521, "M", "d"), + (0x1D522, "M", "e"), + (0x1D523, "M", "f"), + (0x1D524, "M", "g"), + (0x1D525, "M", "h"), + (0x1D526, "M", "i"), + (0x1D527, "M", "j"), + (0x1D528, "M", "k"), + (0x1D529, "M", "l"), + (0x1D52A, "M", "m"), + (0x1D52B, "M", "n"), + (0x1D52C, "M", "o"), + (0x1D52D, "M", "p"), + (0x1D52E, "M", "q"), + (0x1D52F, "M", "r"), + (0x1D530, "M", "s"), + (0x1D531, "M", "t"), + (0x1D532, "M", "u"), + (0x1D533, "M", "v"), + (0x1D534, "M", "w"), + (0x1D535, "M", "x"), + (0x1D536, "M", "y"), + (0x1D537, "M", "z"), + (0x1D538, "M", "a"), + (0x1D539, "M", "b"), + (0x1D53A, "X"), + (0x1D53B, "M", "d"), + (0x1D53C, "M", "e"), + (0x1D53D, "M", "f"), + (0x1D53E, "M", "g"), + (0x1D53F, "X"), + (0x1D540, "M", "i"), + (0x1D541, "M", "j"), + (0x1D542, "M", "k"), + (0x1D543, "M", "l"), + (0x1D544, "M", "m"), + (0x1D545, "X"), + (0x1D546, "M", "o"), + (0x1D547, "X"), + (0x1D54A, "M", "s"), + (0x1D54B, "M", "t"), + (0x1D54C, "M", "u"), + (0x1D54D, "M", "v"), + (0x1D54E, "M", "w"), + (0x1D54F, "M", "x"), + (0x1D550, "M", "y"), + (0x1D551, "X"), + (0x1D552, "M", "a"), + (0x1D553, "M", "b"), + (0x1D554, "M", "c"), + (0x1D555, "M", "d"), + (0x1D556, "M", "e"), + ] + + +def _seg_64() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D557, "M", "f"), + (0x1D558, "M", "g"), + (0x1D559, "M", "h"), + (0x1D55A, "M", "i"), + (0x1D55B, "M", "j"), + (0x1D55C, "M", "k"), + (0x1D55D, "M", "l"), + (0x1D55E, "M", "m"), + (0x1D55F, "M", "n"), + (0x1D560, "M", "o"), + (0x1D561, "M", "p"), + (0x1D562, "M", "q"), + (0x1D563, "M", "r"), + (0x1D564, "M", "s"), + (0x1D565, "M", "t"), + (0x1D566, "M", "u"), + (0x1D567, "M", "v"), + (0x1D568, "M", "w"), + (0x1D569, "M", "x"), + (0x1D56A, "M", "y"), + (0x1D56B, "M", "z"), + (0x1D56C, "M", "a"), + (0x1D56D, "M", "b"), + (0x1D56E, "M", "c"), + (0x1D56F, "M", "d"), + (0x1D570, "M", "e"), + (0x1D571, "M", "f"), + (0x1D572, "M", "g"), + (0x1D573, "M", "h"), + (0x1D574, "M", "i"), + (0x1D575, "M", "j"), + (0x1D576, "M", "k"), + (0x1D577, "M", "l"), + (0x1D578, "M", "m"), + (0x1D579, "M", "n"), + (0x1D57A, "M", "o"), + (0x1D57B, "M", "p"), + (0x1D57C, "M", "q"), + (0x1D57D, "M", "r"), + (0x1D57E, "M", "s"), + (0x1D57F, "M", "t"), + (0x1D580, "M", "u"), + (0x1D581, "M", "v"), + (0x1D582, "M", "w"), + (0x1D583, "M", "x"), + (0x1D584, "M", "y"), + (0x1D585, "M", "z"), + (0x1D586, "M", "a"), + (0x1D587, "M", "b"), + (0x1D588, "M", "c"), + (0x1D589, "M", "d"), + (0x1D58A, "M", "e"), + (0x1D58B, "M", "f"), + (0x1D58C, "M", "g"), + (0x1D58D, "M", "h"), + (0x1D58E, "M", "i"), + (0x1D58F, "M", "j"), + (0x1D590, "M", "k"), + (0x1D591, "M", "l"), + (0x1D592, "M", "m"), + (0x1D593, "M", "n"), + (0x1D594, "M", "o"), + (0x1D595, "M", "p"), + (0x1D596, "M", "q"), + (0x1D597, "M", "r"), + (0x1D598, "M", "s"), + (0x1D599, "M", "t"), + (0x1D59A, "M", "u"), + (0x1D59B, "M", "v"), + (0x1D59C, "M", "w"), + (0x1D59D, "M", "x"), + (0x1D59E, "M", "y"), + (0x1D59F, "M", "z"), + (0x1D5A0, "M", "a"), + (0x1D5A1, "M", "b"), + (0x1D5A2, "M", "c"), + (0x1D5A3, "M", "d"), + (0x1D5A4, "M", "e"), + (0x1D5A5, "M", "f"), + (0x1D5A6, "M", "g"), + (0x1D5A7, "M", "h"), + (0x1D5A8, "M", "i"), + (0x1D5A9, "M", "j"), + (0x1D5AA, "M", "k"), + (0x1D5AB, "M", "l"), + (0x1D5AC, "M", "m"), + (0x1D5AD, "M", "n"), + (0x1D5AE, "M", "o"), + (0x1D5AF, "M", "p"), + (0x1D5B0, "M", "q"), + (0x1D5B1, "M", "r"), + (0x1D5B2, "M", "s"), + (0x1D5B3, "M", "t"), + (0x1D5B4, "M", "u"), + (0x1D5B5, "M", "v"), + (0x1D5B6, "M", "w"), + (0x1D5B7, "M", "x"), + (0x1D5B8, "M", "y"), + (0x1D5B9, "M", "z"), + (0x1D5BA, "M", "a"), + ] + + +def _seg_65() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D5BB, "M", "b"), + (0x1D5BC, "M", "c"), + (0x1D5BD, "M", "d"), + (0x1D5BE, "M", "e"), + (0x1D5BF, "M", "f"), + (0x1D5C0, "M", "g"), + (0x1D5C1, "M", "h"), + (0x1D5C2, "M", "i"), + (0x1D5C3, "M", "j"), + (0x1D5C4, "M", "k"), + (0x1D5C5, "M", "l"), + (0x1D5C6, "M", "m"), + (0x1D5C7, "M", "n"), + (0x1D5C8, "M", "o"), + (0x1D5C9, "M", "p"), + (0x1D5CA, "M", "q"), + (0x1D5CB, "M", "r"), + (0x1D5CC, "M", "s"), + (0x1D5CD, "M", "t"), + (0x1D5CE, "M", "u"), + (0x1D5CF, "M", "v"), + (0x1D5D0, "M", "w"), + (0x1D5D1, "M", "x"), + (0x1D5D2, "M", "y"), + (0x1D5D3, "M", "z"), + (0x1D5D4, "M", "a"), + (0x1D5D5, "M", "b"), + (0x1D5D6, "M", "c"), + (0x1D5D7, "M", "d"), + (0x1D5D8, "M", "e"), + (0x1D5D9, "M", "f"), + (0x1D5DA, "M", "g"), + (0x1D5DB, "M", "h"), + (0x1D5DC, "M", "i"), + (0x1D5DD, "M", "j"), + (0x1D5DE, "M", "k"), + (0x1D5DF, "M", "l"), + (0x1D5E0, "M", "m"), + (0x1D5E1, "M", "n"), + (0x1D5E2, "M", "o"), + (0x1D5E3, "M", "p"), + (0x1D5E4, "M", "q"), + (0x1D5E5, "M", "r"), + (0x1D5E6, "M", "s"), + (0x1D5E7, "M", "t"), + (0x1D5E8, "M", "u"), + (0x1D5E9, "M", "v"), + (0x1D5EA, "M", "w"), + (0x1D5EB, "M", "x"), + (0x1D5EC, "M", "y"), + (0x1D5ED, "M", "z"), + (0x1D5EE, "M", "a"), + (0x1D5EF, "M", "b"), + (0x1D5F0, "M", "c"), + (0x1D5F1, "M", "d"), + (0x1D5F2, "M", "e"), + (0x1D5F3, "M", "f"), + (0x1D5F4, "M", "g"), + (0x1D5F5, "M", "h"), + (0x1D5F6, "M", "i"), + (0x1D5F7, "M", "j"), + (0x1D5F8, "M", "k"), + (0x1D5F9, "M", "l"), + (0x1D5FA, "M", "m"), + (0x1D5FB, "M", "n"), + (0x1D5FC, "M", "o"), + (0x1D5FD, "M", "p"), + (0x1D5FE, "M", "q"), + (0x1D5FF, "M", "r"), + (0x1D600, "M", "s"), + (0x1D601, "M", "t"), + (0x1D602, "M", "u"), + (0x1D603, "M", "v"), + (0x1D604, "M", "w"), + (0x1D605, "M", "x"), + (0x1D606, "M", "y"), + (0x1D607, "M", "z"), + (0x1D608, "M", "a"), + (0x1D609, "M", "b"), + (0x1D60A, "M", "c"), + (0x1D60B, "M", "d"), + (0x1D60C, "M", "e"), + (0x1D60D, "M", "f"), + (0x1D60E, "M", "g"), + (0x1D60F, "M", "h"), + (0x1D610, "M", "i"), + (0x1D611, "M", "j"), + (0x1D612, "M", "k"), + (0x1D613, "M", "l"), + (0x1D614, "M", "m"), + (0x1D615, "M", "n"), + (0x1D616, "M", "o"), + (0x1D617, "M", "p"), + (0x1D618, "M", "q"), + (0x1D619, "M", "r"), + (0x1D61A, "M", "s"), + (0x1D61B, "M", "t"), + (0x1D61C, "M", "u"), + (0x1D61D, "M", "v"), + (0x1D61E, "M", "w"), + ] + + +def _seg_66() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D61F, "M", "x"), + (0x1D620, "M", "y"), + (0x1D621, "M", "z"), + (0x1D622, "M", "a"), + (0x1D623, "M", "b"), + (0x1D624, "M", "c"), + (0x1D625, "M", "d"), + (0x1D626, "M", "e"), + (0x1D627, "M", "f"), + (0x1D628, "M", "g"), + (0x1D629, "M", "h"), + (0x1D62A, "M", "i"), + (0x1D62B, "M", "j"), + (0x1D62C, "M", "k"), + (0x1D62D, "M", "l"), + (0x1D62E, "M", "m"), + (0x1D62F, "M", "n"), + (0x1D630, "M", "o"), + (0x1D631, "M", "p"), + (0x1D632, "M", "q"), + (0x1D633, "M", "r"), + (0x1D634, "M", "s"), + (0x1D635, "M", "t"), + (0x1D636, "M", "u"), + (0x1D637, "M", "v"), + (0x1D638, "M", "w"), + (0x1D639, "M", "x"), + (0x1D63A, "M", "y"), + (0x1D63B, "M", "z"), + (0x1D63C, "M", "a"), + (0x1D63D, "M", "b"), + (0x1D63E, "M", "c"), + (0x1D63F, "M", "d"), + (0x1D640, "M", "e"), + (0x1D641, "M", "f"), + (0x1D642, "M", "g"), + (0x1D643, "M", "h"), + (0x1D644, "M", "i"), + (0x1D645, "M", "j"), + (0x1D646, "M", "k"), + (0x1D647, "M", "l"), + (0x1D648, "M", "m"), + (0x1D649, "M", "n"), + (0x1D64A, "M", "o"), + (0x1D64B, "M", "p"), + (0x1D64C, "M", "q"), + (0x1D64D, "M", "r"), + (0x1D64E, "M", "s"), + (0x1D64F, "M", "t"), + (0x1D650, "M", "u"), + (0x1D651, "M", "v"), + (0x1D652, "M", "w"), + (0x1D653, "M", "x"), + (0x1D654, "M", "y"), + (0x1D655, "M", "z"), + (0x1D656, "M", "a"), + (0x1D657, "M", "b"), + (0x1D658, "M", "c"), + (0x1D659, "M", "d"), + (0x1D65A, "M", "e"), + (0x1D65B, "M", "f"), + (0x1D65C, "M", "g"), + (0x1D65D, "M", "h"), + (0x1D65E, "M", "i"), + (0x1D65F, "M", "j"), + (0x1D660, "M", "k"), + (0x1D661, "M", "l"), + (0x1D662, "M", "m"), + (0x1D663, "M", "n"), + (0x1D664, "M", "o"), + (0x1D665, "M", "p"), + (0x1D666, "M", "q"), + (0x1D667, "M", "r"), + (0x1D668, "M", "s"), + (0x1D669, "M", "t"), + (0x1D66A, "M", "u"), + (0x1D66B, "M", "v"), + (0x1D66C, "M", "w"), + (0x1D66D, "M", "x"), + (0x1D66E, "M", "y"), + (0x1D66F, "M", "z"), + (0x1D670, "M", "a"), + (0x1D671, "M", "b"), + (0x1D672, "M", "c"), + (0x1D673, "M", "d"), + (0x1D674, "M", "e"), + (0x1D675, "M", "f"), + (0x1D676, "M", "g"), + (0x1D677, "M", "h"), + (0x1D678, "M", "i"), + (0x1D679, "M", "j"), + (0x1D67A, "M", "k"), + (0x1D67B, "M", "l"), + (0x1D67C, "M", "m"), + (0x1D67D, "M", "n"), + (0x1D67E, "M", "o"), + (0x1D67F, "M", "p"), + (0x1D680, "M", "q"), + (0x1D681, "M", "r"), + (0x1D682, "M", "s"), + ] + + +def _seg_67() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D683, "M", "t"), + (0x1D684, "M", "u"), + (0x1D685, "M", "v"), + (0x1D686, "M", "w"), + (0x1D687, "M", "x"), + (0x1D688, "M", "y"), + (0x1D689, "M", "z"), + (0x1D68A, "M", "a"), + (0x1D68B, "M", "b"), + (0x1D68C, "M", "c"), + (0x1D68D, "M", "d"), + (0x1D68E, "M", "e"), + (0x1D68F, "M", "f"), + (0x1D690, "M", "g"), + (0x1D691, "M", "h"), + (0x1D692, "M", "i"), + (0x1D693, "M", "j"), + (0x1D694, "M", "k"), + (0x1D695, "M", "l"), + (0x1D696, "M", "m"), + (0x1D697, "M", "n"), + (0x1D698, "M", "o"), + (0x1D699, "M", "p"), + (0x1D69A, "M", "q"), + (0x1D69B, "M", "r"), + (0x1D69C, "M", "s"), + (0x1D69D, "M", "t"), + (0x1D69E, "M", "u"), + (0x1D69F, "M", "v"), + (0x1D6A0, "M", "w"), + (0x1D6A1, "M", "x"), + (0x1D6A2, "M", "y"), + (0x1D6A3, "M", "z"), + (0x1D6A4, "M", "ı"), + (0x1D6A5, "M", "ȷ"), + (0x1D6A6, "X"), + (0x1D6A8, "M", "α"), + (0x1D6A9, "M", "β"), + (0x1D6AA, "M", "γ"), + (0x1D6AB, "M", "δ"), + (0x1D6AC, "M", "ε"), + (0x1D6AD, "M", "ζ"), + (0x1D6AE, "M", "η"), + (0x1D6AF, "M", "θ"), + (0x1D6B0, "M", "ι"), + (0x1D6B1, "M", "κ"), + (0x1D6B2, "M", "λ"), + (0x1D6B3, "M", "μ"), + (0x1D6B4, "M", "ν"), + (0x1D6B5, "M", "ξ"), + (0x1D6B6, "M", "ο"), + (0x1D6B7, "M", "π"), + (0x1D6B8, "M", "ρ"), + (0x1D6B9, "M", "θ"), + (0x1D6BA, "M", "σ"), + (0x1D6BB, "M", "τ"), + (0x1D6BC, "M", "υ"), + (0x1D6BD, "M", "φ"), + (0x1D6BE, "M", "χ"), + (0x1D6BF, "M", "ψ"), + (0x1D6C0, "M", "ω"), + (0x1D6C1, "M", "∇"), + (0x1D6C2, "M", "α"), + (0x1D6C3, "M", "β"), + (0x1D6C4, "M", "γ"), + (0x1D6C5, "M", "δ"), + (0x1D6C6, "M", "ε"), + (0x1D6C7, "M", "ζ"), + (0x1D6C8, "M", "η"), + (0x1D6C9, "M", "θ"), + (0x1D6CA, "M", "ι"), + (0x1D6CB, "M", "κ"), + (0x1D6CC, "M", "λ"), + (0x1D6CD, "M", "μ"), + (0x1D6CE, "M", "ν"), + (0x1D6CF, "M", "ξ"), + (0x1D6D0, "M", "ο"), + (0x1D6D1, "M", "π"), + (0x1D6D2, "M", "ρ"), + (0x1D6D3, "M", "σ"), + (0x1D6D5, "M", "τ"), + (0x1D6D6, "M", "υ"), + (0x1D6D7, "M", "φ"), + (0x1D6D8, "M", "χ"), + (0x1D6D9, "M", "ψ"), + (0x1D6DA, "M", "ω"), + (0x1D6DB, "M", "∂"), + (0x1D6DC, "M", "ε"), + (0x1D6DD, "M", "θ"), + (0x1D6DE, "M", "κ"), + (0x1D6DF, "M", "φ"), + (0x1D6E0, "M", "ρ"), + (0x1D6E1, "M", "π"), + (0x1D6E2, "M", "α"), + (0x1D6E3, "M", "β"), + (0x1D6E4, "M", "γ"), + (0x1D6E5, "M", "δ"), + (0x1D6E6, "M", "ε"), + (0x1D6E7, "M", "ζ"), + (0x1D6E8, "M", "η"), + ] + + +def _seg_68() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D6E9, "M", "θ"), + (0x1D6EA, "M", "ι"), + (0x1D6EB, "M", "κ"), + (0x1D6EC, "M", "λ"), + (0x1D6ED, "M", "μ"), + (0x1D6EE, "M", "ν"), + (0x1D6EF, "M", "ξ"), + (0x1D6F0, "M", "ο"), + (0x1D6F1, "M", "π"), + (0x1D6F2, "M", "ρ"), + (0x1D6F3, "M", "θ"), + (0x1D6F4, "M", "σ"), + (0x1D6F5, "M", "τ"), + (0x1D6F6, "M", "υ"), + (0x1D6F7, "M", "φ"), + (0x1D6F8, "M", "χ"), + (0x1D6F9, "M", "ψ"), + (0x1D6FA, "M", "ω"), + (0x1D6FB, "M", "∇"), + (0x1D6FC, "M", "α"), + (0x1D6FD, "M", "β"), + (0x1D6FE, "M", "γ"), + (0x1D6FF, "M", "δ"), + (0x1D700, "M", "ε"), + (0x1D701, "M", "ζ"), + (0x1D702, "M", "η"), + (0x1D703, "M", "θ"), + (0x1D704, "M", "ι"), + (0x1D705, "M", "κ"), + (0x1D706, "M", "λ"), + (0x1D707, "M", "μ"), + (0x1D708, "M", "ν"), + (0x1D709, "M", "ξ"), + (0x1D70A, "M", "ο"), + (0x1D70B, "M", "π"), + (0x1D70C, "M", "ρ"), + (0x1D70D, "M", "σ"), + (0x1D70F, "M", "τ"), + (0x1D710, "M", "υ"), + (0x1D711, "M", "φ"), + (0x1D712, "M", "χ"), + (0x1D713, "M", "ψ"), + (0x1D714, "M", "ω"), + (0x1D715, "M", "∂"), + (0x1D716, "M", "ε"), + (0x1D717, "M", "θ"), + (0x1D718, "M", "κ"), + (0x1D719, "M", "φ"), + (0x1D71A, "M", "ρ"), + (0x1D71B, "M", "π"), + (0x1D71C, "M", "α"), + (0x1D71D, "M", "β"), + (0x1D71E, "M", "γ"), + (0x1D71F, "M", "δ"), + (0x1D720, "M", "ε"), + (0x1D721, "M", "ζ"), + (0x1D722, "M", "η"), + (0x1D723, "M", "θ"), + (0x1D724, "M", "ι"), + (0x1D725, "M", "κ"), + (0x1D726, "M", "λ"), + (0x1D727, "M", "μ"), + (0x1D728, "M", "ν"), + (0x1D729, "M", "ξ"), + (0x1D72A, "M", "ο"), + (0x1D72B, "M", "π"), + (0x1D72C, "M", "ρ"), + (0x1D72D, "M", "θ"), + (0x1D72E, "M", "σ"), + (0x1D72F, "M", "τ"), + (0x1D730, "M", "υ"), + (0x1D731, "M", "φ"), + (0x1D732, "M", "χ"), + (0x1D733, "M", "ψ"), + (0x1D734, "M", "ω"), + (0x1D735, "M", "∇"), + (0x1D736, "M", "α"), + (0x1D737, "M", "β"), + (0x1D738, "M", "γ"), + (0x1D739, "M", "δ"), + (0x1D73A, "M", "ε"), + (0x1D73B, "M", "ζ"), + (0x1D73C, "M", "η"), + (0x1D73D, "M", "θ"), + (0x1D73E, "M", "ι"), + (0x1D73F, "M", "κ"), + (0x1D740, "M", "λ"), + (0x1D741, "M", "μ"), + (0x1D742, "M", "ν"), + (0x1D743, "M", "ξ"), + (0x1D744, "M", "ο"), + (0x1D745, "M", "π"), + (0x1D746, "M", "ρ"), + (0x1D747, "M", "σ"), + (0x1D749, "M", "τ"), + (0x1D74A, "M", "υ"), + (0x1D74B, "M", "φ"), + (0x1D74C, "M", "χ"), + (0x1D74D, "M", "ψ"), + (0x1D74E, "M", "ω"), + ] + + +def _seg_69() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D74F, "M", "∂"), + (0x1D750, "M", "ε"), + (0x1D751, "M", "θ"), + (0x1D752, "M", "κ"), + (0x1D753, "M", "φ"), + (0x1D754, "M", "ρ"), + (0x1D755, "M", "π"), + (0x1D756, "M", "α"), + (0x1D757, "M", "β"), + (0x1D758, "M", "γ"), + (0x1D759, "M", "δ"), + (0x1D75A, "M", "ε"), + (0x1D75B, "M", "ζ"), + (0x1D75C, "M", "η"), + (0x1D75D, "M", "θ"), + (0x1D75E, "M", "ι"), + (0x1D75F, "M", "κ"), + (0x1D760, "M", "λ"), + (0x1D761, "M", "μ"), + (0x1D762, "M", "ν"), + (0x1D763, "M", "ξ"), + (0x1D764, "M", "ο"), + (0x1D765, "M", "π"), + (0x1D766, "M", "ρ"), + (0x1D767, "M", "θ"), + (0x1D768, "M", "σ"), + (0x1D769, "M", "τ"), + (0x1D76A, "M", "υ"), + (0x1D76B, "M", "φ"), + (0x1D76C, "M", "χ"), + (0x1D76D, "M", "ψ"), + (0x1D76E, "M", "ω"), + (0x1D76F, "M", "∇"), + (0x1D770, "M", "α"), + (0x1D771, "M", "β"), + (0x1D772, "M", "γ"), + (0x1D773, "M", "δ"), + (0x1D774, "M", "ε"), + (0x1D775, "M", "ζ"), + (0x1D776, "M", "η"), + (0x1D777, "M", "θ"), + (0x1D778, "M", "ι"), + (0x1D779, "M", "κ"), + (0x1D77A, "M", "λ"), + (0x1D77B, "M", "μ"), + (0x1D77C, "M", "ν"), + (0x1D77D, "M", "ξ"), + (0x1D77E, "M", "ο"), + (0x1D77F, "M", "π"), + (0x1D780, "M", "ρ"), + (0x1D781, "M", "σ"), + (0x1D783, "M", "τ"), + (0x1D784, "M", "υ"), + (0x1D785, "M", "φ"), + (0x1D786, "M", "χ"), + (0x1D787, "M", "ψ"), + (0x1D788, "M", "ω"), + (0x1D789, "M", "∂"), + (0x1D78A, "M", "ε"), + (0x1D78B, "M", "θ"), + (0x1D78C, "M", "κ"), + (0x1D78D, "M", "φ"), + (0x1D78E, "M", "ρ"), + (0x1D78F, "M", "π"), + (0x1D790, "M", "α"), + (0x1D791, "M", "β"), + (0x1D792, "M", "γ"), + (0x1D793, "M", "δ"), + (0x1D794, "M", "ε"), + (0x1D795, "M", "ζ"), + (0x1D796, "M", "η"), + (0x1D797, "M", "θ"), + (0x1D798, "M", "ι"), + (0x1D799, "M", "κ"), + (0x1D79A, "M", "λ"), + (0x1D79B, "M", "μ"), + (0x1D79C, "M", "ν"), + (0x1D79D, "M", "ξ"), + (0x1D79E, "M", "ο"), + (0x1D79F, "M", "π"), + (0x1D7A0, "M", "ρ"), + (0x1D7A1, "M", "θ"), + (0x1D7A2, "M", "σ"), + (0x1D7A3, "M", "τ"), + (0x1D7A4, "M", "υ"), + (0x1D7A5, "M", "φ"), + (0x1D7A6, "M", "χ"), + (0x1D7A7, "M", "ψ"), + (0x1D7A8, "M", "ω"), + (0x1D7A9, "M", "∇"), + (0x1D7AA, "M", "α"), + (0x1D7AB, "M", "β"), + (0x1D7AC, "M", "γ"), + (0x1D7AD, "M", "δ"), + (0x1D7AE, "M", "ε"), + (0x1D7AF, "M", "ζ"), + (0x1D7B0, "M", "η"), + (0x1D7B1, "M", "θ"), + (0x1D7B2, "M", "ι"), + (0x1D7B3, "M", "κ"), + ] + + +def _seg_70() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D7B4, "M", "λ"), + (0x1D7B5, "M", "μ"), + (0x1D7B6, "M", "ν"), + (0x1D7B7, "M", "ξ"), + (0x1D7B8, "M", "ο"), + (0x1D7B9, "M", "π"), + (0x1D7BA, "M", "ρ"), + (0x1D7BB, "M", "σ"), + (0x1D7BD, "M", "τ"), + (0x1D7BE, "M", "υ"), + (0x1D7BF, "M", "φ"), + (0x1D7C0, "M", "χ"), + (0x1D7C1, "M", "ψ"), + (0x1D7C2, "M", "ω"), + (0x1D7C3, "M", "∂"), + (0x1D7C4, "M", "ε"), + (0x1D7C5, "M", "θ"), + (0x1D7C6, "M", "κ"), + (0x1D7C7, "M", "φ"), + (0x1D7C8, "M", "ρ"), + (0x1D7C9, "M", "π"), + (0x1D7CA, "M", "ϝ"), + (0x1D7CC, "X"), + (0x1D7CE, "M", "0"), + (0x1D7CF, "M", "1"), + (0x1D7D0, "M", "2"), + (0x1D7D1, "M", "3"), + (0x1D7D2, "M", "4"), + (0x1D7D3, "M", "5"), + (0x1D7D4, "M", "6"), + (0x1D7D5, "M", "7"), + (0x1D7D6, "M", "8"), + (0x1D7D7, "M", "9"), + (0x1D7D8, "M", "0"), + (0x1D7D9, "M", "1"), + (0x1D7DA, "M", "2"), + (0x1D7DB, "M", "3"), + (0x1D7DC, "M", "4"), + (0x1D7DD, "M", "5"), + (0x1D7DE, "M", "6"), + (0x1D7DF, "M", "7"), + (0x1D7E0, "M", "8"), + (0x1D7E1, "M", "9"), + (0x1D7E2, "M", "0"), + (0x1D7E3, "M", "1"), + (0x1D7E4, "M", "2"), + (0x1D7E5, "M", "3"), + (0x1D7E6, "M", "4"), + (0x1D7E7, "M", "5"), + (0x1D7E8, "M", "6"), + (0x1D7E9, "M", "7"), + (0x1D7EA, "M", "8"), + (0x1D7EB, "M", "9"), + (0x1D7EC, "M", "0"), + (0x1D7ED, "M", "1"), + (0x1D7EE, "M", "2"), + (0x1D7EF, "M", "3"), + (0x1D7F0, "M", "4"), + (0x1D7F1, "M", "5"), + (0x1D7F2, "M", "6"), + (0x1D7F3, "M", "7"), + (0x1D7F4, "M", "8"), + (0x1D7F5, "M", "9"), + (0x1D7F6, "M", "0"), + (0x1D7F7, "M", "1"), + (0x1D7F8, "M", "2"), + (0x1D7F9, "M", "3"), + (0x1D7FA, "M", "4"), + (0x1D7FB, "M", "5"), + (0x1D7FC, "M", "6"), + (0x1D7FD, "M", "7"), + (0x1D7FE, "M", "8"), + (0x1D7FF, "M", "9"), + (0x1D800, "V"), + (0x1DA8C, "X"), + (0x1DA9B, "V"), + (0x1DAA0, "X"), + (0x1DAA1, "V"), + (0x1DAB0, "X"), + (0x1DF00, "V"), + (0x1DF1F, "X"), + (0x1DF25, "V"), + (0x1DF2B, "X"), + (0x1E000, "V"), + (0x1E007, "X"), + (0x1E008, "V"), + (0x1E019, "X"), + (0x1E01B, "V"), + (0x1E022, "X"), + (0x1E023, "V"), + (0x1E025, "X"), + (0x1E026, "V"), + (0x1E02B, "X"), + (0x1E030, "M", "а"), + (0x1E031, "M", "б"), + (0x1E032, "M", "в"), + (0x1E033, "M", "г"), + (0x1E034, "M", "д"), + (0x1E035, "M", "е"), + (0x1E036, "M", "ж"), + ] + + +def _seg_71() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1E037, "M", "з"), + (0x1E038, "M", "и"), + (0x1E039, "M", "к"), + (0x1E03A, "M", "л"), + (0x1E03B, "M", "м"), + (0x1E03C, "M", "о"), + (0x1E03D, "M", "п"), + (0x1E03E, "M", "р"), + (0x1E03F, "M", "с"), + (0x1E040, "M", "т"), + (0x1E041, "M", "у"), + (0x1E042, "M", "ф"), + (0x1E043, "M", "х"), + (0x1E044, "M", "ц"), + (0x1E045, "M", "ч"), + (0x1E046, "M", "ш"), + (0x1E047, "M", "ы"), + (0x1E048, "M", "э"), + (0x1E049, "M", "ю"), + (0x1E04A, "M", "ꚉ"), + (0x1E04B, "M", "ә"), + (0x1E04C, "M", "і"), + (0x1E04D, "M", "ј"), + (0x1E04E, "M", "ө"), + (0x1E04F, "M", "ү"), + (0x1E050, "M", "ӏ"), + (0x1E051, "M", "а"), + (0x1E052, "M", "б"), + (0x1E053, "M", "в"), + (0x1E054, "M", "г"), + (0x1E055, "M", "д"), + (0x1E056, "M", "е"), + (0x1E057, "M", "ж"), + (0x1E058, "M", "з"), + (0x1E059, "M", "и"), + (0x1E05A, "M", "к"), + (0x1E05B, "M", "л"), + (0x1E05C, "M", "о"), + (0x1E05D, "M", "п"), + (0x1E05E, "M", "с"), + (0x1E05F, "M", "у"), + (0x1E060, "M", "ф"), + (0x1E061, "M", "х"), + (0x1E062, "M", "ц"), + (0x1E063, "M", "ч"), + (0x1E064, "M", "ш"), + (0x1E065, "M", "ъ"), + (0x1E066, "M", "ы"), + (0x1E067, "M", "ґ"), + (0x1E068, "M", "і"), + (0x1E069, "M", "ѕ"), + (0x1E06A, "M", "џ"), + (0x1E06B, "M", "ҫ"), + (0x1E06C, "M", "ꙑ"), + (0x1E06D, "M", "ұ"), + (0x1E06E, "X"), + (0x1E08F, "V"), + (0x1E090, "X"), + (0x1E100, "V"), + (0x1E12D, "X"), + (0x1E130, "V"), + (0x1E13E, "X"), + (0x1E140, "V"), + (0x1E14A, "X"), + (0x1E14E, "V"), + (0x1E150, "X"), + (0x1E290, "V"), + (0x1E2AF, "X"), + (0x1E2C0, "V"), + (0x1E2FA, "X"), + (0x1E2FF, "V"), + (0x1E300, "X"), + (0x1E4D0, "V"), + (0x1E4FA, "X"), + (0x1E7E0, "V"), + (0x1E7E7, "X"), + (0x1E7E8, "V"), + (0x1E7EC, "X"), + (0x1E7ED, "V"), + (0x1E7EF, "X"), + (0x1E7F0, "V"), + (0x1E7FF, "X"), + (0x1E800, "V"), + (0x1E8C5, "X"), + (0x1E8C7, "V"), + (0x1E8D7, "X"), + (0x1E900, "M", "𞤢"), + (0x1E901, "M", "𞤣"), + (0x1E902, "M", "𞤤"), + (0x1E903, "M", "𞤥"), + (0x1E904, "M", "𞤦"), + (0x1E905, "M", "𞤧"), + (0x1E906, "M", "𞤨"), + (0x1E907, "M", "𞤩"), + (0x1E908, "M", "𞤪"), + (0x1E909, "M", "𞤫"), + (0x1E90A, "M", "𞤬"), + (0x1E90B, "M", "𞤭"), + (0x1E90C, "M", "𞤮"), + (0x1E90D, "M", "𞤯"), + ] + + +def _seg_72() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1E90E, "M", "𞤰"), + (0x1E90F, "M", "𞤱"), + (0x1E910, "M", "𞤲"), + (0x1E911, "M", "𞤳"), + (0x1E912, "M", "𞤴"), + (0x1E913, "M", "𞤵"), + (0x1E914, "M", "𞤶"), + (0x1E915, "M", "𞤷"), + (0x1E916, "M", "𞤸"), + (0x1E917, "M", "𞤹"), + (0x1E918, "M", "𞤺"), + (0x1E919, "M", "𞤻"), + (0x1E91A, "M", "𞤼"), + (0x1E91B, "M", "𞤽"), + (0x1E91C, "M", "𞤾"), + (0x1E91D, "M", "𞤿"), + (0x1E91E, "M", "𞥀"), + (0x1E91F, "M", "𞥁"), + (0x1E920, "M", "𞥂"), + (0x1E921, "M", "𞥃"), + (0x1E922, "V"), + (0x1E94C, "X"), + (0x1E950, "V"), + (0x1E95A, "X"), + (0x1E95E, "V"), + (0x1E960, "X"), + (0x1EC71, "V"), + (0x1ECB5, "X"), + (0x1ED01, "V"), + (0x1ED3E, "X"), + (0x1EE00, "M", "ا"), + (0x1EE01, "M", "ب"), + (0x1EE02, "M", "ج"), + (0x1EE03, "M", "د"), + (0x1EE04, "X"), + (0x1EE05, "M", "و"), + (0x1EE06, "M", "ز"), + (0x1EE07, "M", "ح"), + (0x1EE08, "M", "ط"), + (0x1EE09, "M", "ي"), + (0x1EE0A, "M", "ك"), + (0x1EE0B, "M", "ل"), + (0x1EE0C, "M", "م"), + (0x1EE0D, "M", "ن"), + (0x1EE0E, "M", "س"), + (0x1EE0F, "M", "ع"), + (0x1EE10, "M", "ف"), + (0x1EE11, "M", "ص"), + (0x1EE12, "M", "ق"), + (0x1EE13, "M", "ر"), + (0x1EE14, "M", "ش"), + (0x1EE15, "M", "ت"), + (0x1EE16, "M", "ث"), + (0x1EE17, "M", "خ"), + (0x1EE18, "M", "ذ"), + (0x1EE19, "M", "ض"), + (0x1EE1A, "M", "ظ"), + (0x1EE1B, "M", "غ"), + (0x1EE1C, "M", "ٮ"), + (0x1EE1D, "M", "ں"), + (0x1EE1E, "M", "ڡ"), + (0x1EE1F, "M", "ٯ"), + (0x1EE20, "X"), + (0x1EE21, "M", "ب"), + (0x1EE22, "M", "ج"), + (0x1EE23, "X"), + (0x1EE24, "M", "ه"), + (0x1EE25, "X"), + (0x1EE27, "M", "ح"), + (0x1EE28, "X"), + (0x1EE29, "M", "ي"), + (0x1EE2A, "M", "ك"), + (0x1EE2B, "M", "ل"), + (0x1EE2C, "M", "م"), + (0x1EE2D, "M", "ن"), + (0x1EE2E, "M", "س"), + (0x1EE2F, "M", "ع"), + (0x1EE30, "M", "ف"), + (0x1EE31, "M", "ص"), + (0x1EE32, "M", "ق"), + (0x1EE33, "X"), + (0x1EE34, "M", "ش"), + (0x1EE35, "M", "ت"), + (0x1EE36, "M", "ث"), + (0x1EE37, "M", "خ"), + (0x1EE38, "X"), + (0x1EE39, "M", "ض"), + (0x1EE3A, "X"), + (0x1EE3B, "M", "غ"), + (0x1EE3C, "X"), + (0x1EE42, "M", "ج"), + (0x1EE43, "X"), + (0x1EE47, "M", "ح"), + (0x1EE48, "X"), + (0x1EE49, "M", "ي"), + (0x1EE4A, "X"), + (0x1EE4B, "M", "ل"), + (0x1EE4C, "X"), + (0x1EE4D, "M", "ن"), + (0x1EE4E, "M", "س"), + ] + + +def _seg_73() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1EE4F, "M", "ع"), + (0x1EE50, "X"), + (0x1EE51, "M", "ص"), + (0x1EE52, "M", "ق"), + (0x1EE53, "X"), + (0x1EE54, "M", "ش"), + (0x1EE55, "X"), + (0x1EE57, "M", "خ"), + (0x1EE58, "X"), + (0x1EE59, "M", "ض"), + (0x1EE5A, "X"), + (0x1EE5B, "M", "غ"), + (0x1EE5C, "X"), + (0x1EE5D, "M", "ں"), + (0x1EE5E, "X"), + (0x1EE5F, "M", "ٯ"), + (0x1EE60, "X"), + (0x1EE61, "M", "ب"), + (0x1EE62, "M", "ج"), + (0x1EE63, "X"), + (0x1EE64, "M", "ه"), + (0x1EE65, "X"), + (0x1EE67, "M", "ح"), + (0x1EE68, "M", "ط"), + (0x1EE69, "M", "ي"), + (0x1EE6A, "M", "ك"), + (0x1EE6B, "X"), + (0x1EE6C, "M", "م"), + (0x1EE6D, "M", "ن"), + (0x1EE6E, "M", "س"), + (0x1EE6F, "M", "ع"), + (0x1EE70, "M", "ف"), + (0x1EE71, "M", "ص"), + (0x1EE72, "M", "ق"), + (0x1EE73, "X"), + (0x1EE74, "M", "ش"), + (0x1EE75, "M", "ت"), + (0x1EE76, "M", "ث"), + (0x1EE77, "M", "خ"), + (0x1EE78, "X"), + (0x1EE79, "M", "ض"), + (0x1EE7A, "M", "ظ"), + (0x1EE7B, "M", "غ"), + (0x1EE7C, "M", "ٮ"), + (0x1EE7D, "X"), + (0x1EE7E, "M", "ڡ"), + (0x1EE7F, "X"), + (0x1EE80, "M", "ا"), + (0x1EE81, "M", "ب"), + (0x1EE82, "M", "ج"), + (0x1EE83, "M", "د"), + (0x1EE84, "M", "ه"), + (0x1EE85, "M", "و"), + (0x1EE86, "M", "ز"), + (0x1EE87, "M", "ح"), + (0x1EE88, "M", "ط"), + (0x1EE89, "M", "ي"), + (0x1EE8A, "X"), + (0x1EE8B, "M", "ل"), + (0x1EE8C, "M", "م"), + (0x1EE8D, "M", "ن"), + (0x1EE8E, "M", "س"), + (0x1EE8F, "M", "ع"), + (0x1EE90, "M", "ف"), + (0x1EE91, "M", "ص"), + (0x1EE92, "M", "ق"), + (0x1EE93, "M", "ر"), + (0x1EE94, "M", "ش"), + (0x1EE95, "M", "ت"), + (0x1EE96, "M", "ث"), + (0x1EE97, "M", "خ"), + (0x1EE98, "M", "ذ"), + (0x1EE99, "M", "ض"), + (0x1EE9A, "M", "ظ"), + (0x1EE9B, "M", "غ"), + (0x1EE9C, "X"), + (0x1EEA1, "M", "ب"), + (0x1EEA2, "M", "ج"), + (0x1EEA3, "M", "د"), + (0x1EEA4, "X"), + (0x1EEA5, "M", "و"), + (0x1EEA6, "M", "ز"), + (0x1EEA7, "M", "ح"), + (0x1EEA8, "M", "ط"), + (0x1EEA9, "M", "ي"), + (0x1EEAA, "X"), + (0x1EEAB, "M", "ل"), + (0x1EEAC, "M", "م"), + (0x1EEAD, "M", "ن"), + (0x1EEAE, "M", "س"), + (0x1EEAF, "M", "ع"), + (0x1EEB0, "M", "ف"), + (0x1EEB1, "M", "ص"), + (0x1EEB2, "M", "ق"), + (0x1EEB3, "M", "ر"), + (0x1EEB4, "M", "ش"), + (0x1EEB5, "M", "ت"), + (0x1EEB6, "M", "ث"), + (0x1EEB7, "M", "خ"), + (0x1EEB8, "M", "ذ"), + ] + + +def _seg_74() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1EEB9, "M", "ض"), + (0x1EEBA, "M", "ظ"), + (0x1EEBB, "M", "غ"), + (0x1EEBC, "X"), + (0x1EEF0, "V"), + (0x1EEF2, "X"), + (0x1F000, "V"), + (0x1F02C, "X"), + (0x1F030, "V"), + (0x1F094, "X"), + (0x1F0A0, "V"), + (0x1F0AF, "X"), + (0x1F0B1, "V"), + (0x1F0C0, "X"), + (0x1F0C1, "V"), + (0x1F0D0, "X"), + (0x1F0D1, "V"), + (0x1F0F6, "X"), + (0x1F101, "3", "0,"), + (0x1F102, "3", "1,"), + (0x1F103, "3", "2,"), + (0x1F104, "3", "3,"), + (0x1F105, "3", "4,"), + (0x1F106, "3", "5,"), + (0x1F107, "3", "6,"), + (0x1F108, "3", "7,"), + (0x1F109, "3", "8,"), + (0x1F10A, "3", "9,"), + (0x1F10B, "V"), + (0x1F110, "3", "(a)"), + (0x1F111, "3", "(b)"), + (0x1F112, "3", "(c)"), + (0x1F113, "3", "(d)"), + (0x1F114, "3", "(e)"), + (0x1F115, "3", "(f)"), + (0x1F116, "3", "(g)"), + (0x1F117, "3", "(h)"), + (0x1F118, "3", "(i)"), + (0x1F119, "3", "(j)"), + (0x1F11A, "3", "(k)"), + (0x1F11B, "3", "(l)"), + (0x1F11C, "3", "(m)"), + (0x1F11D, "3", "(n)"), + (0x1F11E, "3", "(o)"), + (0x1F11F, "3", "(p)"), + (0x1F120, "3", "(q)"), + (0x1F121, "3", "(r)"), + (0x1F122, "3", "(s)"), + (0x1F123, "3", "(t)"), + (0x1F124, "3", "(u)"), + (0x1F125, "3", "(v)"), + (0x1F126, "3", "(w)"), + (0x1F127, "3", "(x)"), + (0x1F128, "3", "(y)"), + (0x1F129, "3", "(z)"), + (0x1F12A, "M", "〔s〕"), + (0x1F12B, "M", "c"), + (0x1F12C, "M", "r"), + (0x1F12D, "M", "cd"), + (0x1F12E, "M", "wz"), + (0x1F12F, "V"), + (0x1F130, "M", "a"), + (0x1F131, "M", "b"), + (0x1F132, "M", "c"), + (0x1F133, "M", "d"), + (0x1F134, "M", "e"), + (0x1F135, "M", "f"), + (0x1F136, "M", "g"), + (0x1F137, "M", "h"), + (0x1F138, "M", "i"), + (0x1F139, "M", "j"), + (0x1F13A, "M", "k"), + (0x1F13B, "M", "l"), + (0x1F13C, "M", "m"), + (0x1F13D, "M", "n"), + (0x1F13E, "M", "o"), + (0x1F13F, "M", "p"), + (0x1F140, "M", "q"), + (0x1F141, "M", "r"), + (0x1F142, "M", "s"), + (0x1F143, "M", "t"), + (0x1F144, "M", "u"), + (0x1F145, "M", "v"), + (0x1F146, "M", "w"), + (0x1F147, "M", "x"), + (0x1F148, "M", "y"), + (0x1F149, "M", "z"), + (0x1F14A, "M", "hv"), + (0x1F14B, "M", "mv"), + (0x1F14C, "M", "sd"), + (0x1F14D, "M", "ss"), + (0x1F14E, "M", "ppv"), + (0x1F14F, "M", "wc"), + (0x1F150, "V"), + (0x1F16A, "M", "mc"), + (0x1F16B, "M", "md"), + (0x1F16C, "M", "mr"), + (0x1F16D, "V"), + (0x1F190, "M", "dj"), + (0x1F191, "V"), + ] + + +def _seg_75() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1F1AE, "X"), + (0x1F1E6, "V"), + (0x1F200, "M", "ほか"), + (0x1F201, "M", "ココ"), + (0x1F202, "M", "サ"), + (0x1F203, "X"), + (0x1F210, "M", "手"), + (0x1F211, "M", "字"), + (0x1F212, "M", "双"), + (0x1F213, "M", "デ"), + (0x1F214, "M", "二"), + (0x1F215, "M", "多"), + (0x1F216, "M", "解"), + (0x1F217, "M", "天"), + (0x1F218, "M", "交"), + (0x1F219, "M", "映"), + (0x1F21A, "M", "無"), + (0x1F21B, "M", "料"), + (0x1F21C, "M", "前"), + (0x1F21D, "M", "後"), + (0x1F21E, "M", "再"), + (0x1F21F, "M", "新"), + (0x1F220, "M", "初"), + (0x1F221, "M", "終"), + (0x1F222, "M", "生"), + (0x1F223, "M", "販"), + (0x1F224, "M", "声"), + (0x1F225, "M", "吹"), + (0x1F226, "M", "演"), + (0x1F227, "M", "投"), + (0x1F228, "M", "捕"), + (0x1F229, "M", "一"), + (0x1F22A, "M", "三"), + (0x1F22B, "M", "遊"), + (0x1F22C, "M", "左"), + (0x1F22D, "M", "中"), + (0x1F22E, "M", "右"), + (0x1F22F, "M", "指"), + (0x1F230, "M", "走"), + (0x1F231, "M", "打"), + (0x1F232, "M", "禁"), + (0x1F233, "M", "空"), + (0x1F234, "M", "合"), + (0x1F235, "M", "満"), + (0x1F236, "M", "有"), + (0x1F237, "M", "月"), + (0x1F238, "M", "申"), + (0x1F239, "M", "割"), + (0x1F23A, "M", "営"), + (0x1F23B, "M", "配"), + (0x1F23C, "X"), + (0x1F240, "M", "〔本〕"), + (0x1F241, "M", "〔三〕"), + (0x1F242, "M", "〔二〕"), + (0x1F243, "M", "〔安〕"), + (0x1F244, "M", "〔点〕"), + (0x1F245, "M", "〔打〕"), + (0x1F246, "M", "〔盗〕"), + (0x1F247, "M", "〔勝〕"), + (0x1F248, "M", "〔敗〕"), + (0x1F249, "X"), + (0x1F250, "M", "得"), + (0x1F251, "M", "可"), + (0x1F252, "X"), + (0x1F260, "V"), + (0x1F266, "X"), + (0x1F300, "V"), + (0x1F6D8, "X"), + (0x1F6DC, "V"), + (0x1F6ED, "X"), + (0x1F6F0, "V"), + (0x1F6FD, "X"), + (0x1F700, "V"), + (0x1F777, "X"), + (0x1F77B, "V"), + (0x1F7DA, "X"), + (0x1F7E0, "V"), + (0x1F7EC, "X"), + (0x1F7F0, "V"), + (0x1F7F1, "X"), + (0x1F800, "V"), + (0x1F80C, "X"), + (0x1F810, "V"), + (0x1F848, "X"), + (0x1F850, "V"), + (0x1F85A, "X"), + (0x1F860, "V"), + (0x1F888, "X"), + (0x1F890, "V"), + (0x1F8AE, "X"), + (0x1F8B0, "V"), + (0x1F8B2, "X"), + (0x1F900, "V"), + (0x1FA54, "X"), + (0x1FA60, "V"), + (0x1FA6E, "X"), + (0x1FA70, "V"), + (0x1FA7D, "X"), + (0x1FA80, "V"), + (0x1FA89, "X"), + ] + + +def _seg_76() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1FA90, "V"), + (0x1FABE, "X"), + (0x1FABF, "V"), + (0x1FAC6, "X"), + (0x1FACE, "V"), + (0x1FADC, "X"), + (0x1FAE0, "V"), + (0x1FAE9, "X"), + (0x1FAF0, "V"), + (0x1FAF9, "X"), + (0x1FB00, "V"), + (0x1FB93, "X"), + (0x1FB94, "V"), + (0x1FBCB, "X"), + (0x1FBF0, "M", "0"), + (0x1FBF1, "M", "1"), + (0x1FBF2, "M", "2"), + (0x1FBF3, "M", "3"), + (0x1FBF4, "M", "4"), + (0x1FBF5, "M", "5"), + (0x1FBF6, "M", "6"), + (0x1FBF7, "M", "7"), + (0x1FBF8, "M", "8"), + (0x1FBF9, "M", "9"), + (0x1FBFA, "X"), + (0x20000, "V"), + (0x2A6E0, "X"), + (0x2A700, "V"), + (0x2B73A, "X"), + (0x2B740, "V"), + (0x2B81E, "X"), + (0x2B820, "V"), + (0x2CEA2, "X"), + (0x2CEB0, "V"), + (0x2EBE1, "X"), + (0x2EBF0, "V"), + (0x2EE5E, "X"), + (0x2F800, "M", "丽"), + (0x2F801, "M", "丸"), + (0x2F802, "M", "乁"), + (0x2F803, "M", "𠄢"), + (0x2F804, "M", "你"), + (0x2F805, "M", "侮"), + (0x2F806, "M", "侻"), + (0x2F807, "M", "倂"), + (0x2F808, "M", "偺"), + (0x2F809, "M", "備"), + (0x2F80A, "M", "僧"), + (0x2F80B, "M", "像"), + (0x2F80C, "M", "㒞"), + (0x2F80D, "M", "𠘺"), + (0x2F80E, "M", "免"), + (0x2F80F, "M", "兔"), + (0x2F810, "M", "兤"), + (0x2F811, "M", "具"), + (0x2F812, "M", "𠔜"), + (0x2F813, "M", "㒹"), + (0x2F814, "M", "內"), + (0x2F815, "M", "再"), + (0x2F816, "M", "𠕋"), + (0x2F817, "M", "冗"), + (0x2F818, "M", "冤"), + (0x2F819, "M", "仌"), + (0x2F81A, "M", "冬"), + (0x2F81B, "M", "况"), + (0x2F81C, "M", "𩇟"), + (0x2F81D, "M", "凵"), + (0x2F81E, "M", "刃"), + (0x2F81F, "M", "㓟"), + (0x2F820, "M", "刻"), + (0x2F821, "M", "剆"), + (0x2F822, "M", "割"), + (0x2F823, "M", "剷"), + (0x2F824, "M", "㔕"), + (0x2F825, "M", "勇"), + (0x2F826, "M", "勉"), + (0x2F827, "M", "勤"), + (0x2F828, "M", "勺"), + (0x2F829, "M", "包"), + (0x2F82A, "M", "匆"), + (0x2F82B, "M", "北"), + (0x2F82C, "M", "卉"), + (0x2F82D, "M", "卑"), + (0x2F82E, "M", "博"), + (0x2F82F, "M", "即"), + (0x2F830, "M", "卽"), + (0x2F831, "M", "卿"), + (0x2F834, "M", "𠨬"), + (0x2F835, "M", "灰"), + (0x2F836, "M", "及"), + (0x2F837, "M", "叟"), + (0x2F838, "M", "𠭣"), + (0x2F839, "M", "叫"), + (0x2F83A, "M", "叱"), + (0x2F83B, "M", "吆"), + (0x2F83C, "M", "咞"), + (0x2F83D, "M", "吸"), + (0x2F83E, "M", "呈"), + (0x2F83F, "M", "周"), + (0x2F840, "M", "咢"), + ] + + +def _seg_77() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F841, "M", "哶"), + (0x2F842, "M", "唐"), + (0x2F843, "M", "啓"), + (0x2F844, "M", "啣"), + (0x2F845, "M", "善"), + (0x2F847, "M", "喙"), + (0x2F848, "M", "喫"), + (0x2F849, "M", "喳"), + (0x2F84A, "M", "嗂"), + (0x2F84B, "M", "圖"), + (0x2F84C, "M", "嘆"), + (0x2F84D, "M", "圗"), + (0x2F84E, "M", "噑"), + (0x2F84F, "M", "噴"), + (0x2F850, "M", "切"), + (0x2F851, "M", "壮"), + (0x2F852, "M", "城"), + (0x2F853, "M", "埴"), + (0x2F854, "M", "堍"), + (0x2F855, "M", "型"), + (0x2F856, "M", "堲"), + (0x2F857, "M", "報"), + (0x2F858, "M", "墬"), + (0x2F859, "M", "𡓤"), + (0x2F85A, "M", "売"), + (0x2F85B, "M", "壷"), + (0x2F85C, "M", "夆"), + (0x2F85D, "M", "多"), + (0x2F85E, "M", "夢"), + (0x2F85F, "M", "奢"), + (0x2F860, "M", "𡚨"), + (0x2F861, "M", "𡛪"), + (0x2F862, "M", "姬"), + (0x2F863, "M", "娛"), + (0x2F864, "M", "娧"), + (0x2F865, "M", "姘"), + (0x2F866, "M", "婦"), + (0x2F867, "M", "㛮"), + (0x2F868, "X"), + (0x2F869, "M", "嬈"), + (0x2F86A, "M", "嬾"), + (0x2F86C, "M", "𡧈"), + (0x2F86D, "M", "寃"), + (0x2F86E, "M", "寘"), + (0x2F86F, "M", "寧"), + (0x2F870, "M", "寳"), + (0x2F871, "M", "𡬘"), + (0x2F872, "M", "寿"), + (0x2F873, "M", "将"), + (0x2F874, "X"), + (0x2F875, "M", "尢"), + (0x2F876, "M", "㞁"), + (0x2F877, "M", "屠"), + (0x2F878, "M", "屮"), + (0x2F879, "M", "峀"), + (0x2F87A, "M", "岍"), + (0x2F87B, "M", "𡷤"), + (0x2F87C, "M", "嵃"), + (0x2F87D, "M", "𡷦"), + (0x2F87E, "M", "嵮"), + (0x2F87F, "M", "嵫"), + (0x2F880, "M", "嵼"), + (0x2F881, "M", "巡"), + (0x2F882, "M", "巢"), + (0x2F883, "M", "㠯"), + (0x2F884, "M", "巽"), + (0x2F885, "M", "帨"), + (0x2F886, "M", "帽"), + (0x2F887, "M", "幩"), + (0x2F888, "M", "㡢"), + (0x2F889, "M", "𢆃"), + (0x2F88A, "M", "㡼"), + (0x2F88B, "M", "庰"), + (0x2F88C, "M", "庳"), + (0x2F88D, "M", "庶"), + (0x2F88E, "M", "廊"), + (0x2F88F, "M", "𪎒"), + (0x2F890, "M", "廾"), + (0x2F891, "M", "𢌱"), + (0x2F893, "M", "舁"), + (0x2F894, "M", "弢"), + (0x2F896, "M", "㣇"), + (0x2F897, "M", "𣊸"), + (0x2F898, "M", "𦇚"), + (0x2F899, "M", "形"), + (0x2F89A, "M", "彫"), + (0x2F89B, "M", "㣣"), + (0x2F89C, "M", "徚"), + (0x2F89D, "M", "忍"), + (0x2F89E, "M", "志"), + (0x2F89F, "M", "忹"), + (0x2F8A0, "M", "悁"), + (0x2F8A1, "M", "㤺"), + (0x2F8A2, "M", "㤜"), + (0x2F8A3, "M", "悔"), + (0x2F8A4, "M", "𢛔"), + (0x2F8A5, "M", "惇"), + (0x2F8A6, "M", "慈"), + (0x2F8A7, "M", "慌"), + (0x2F8A8, "M", "慎"), + ] + + +def _seg_78() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F8A9, "M", "慌"), + (0x2F8AA, "M", "慺"), + (0x2F8AB, "M", "憎"), + (0x2F8AC, "M", "憲"), + (0x2F8AD, "M", "憤"), + (0x2F8AE, "M", "憯"), + (0x2F8AF, "M", "懞"), + (0x2F8B0, "M", "懲"), + (0x2F8B1, "M", "懶"), + (0x2F8B2, "M", "成"), + (0x2F8B3, "M", "戛"), + (0x2F8B4, "M", "扝"), + (0x2F8B5, "M", "抱"), + (0x2F8B6, "M", "拔"), + (0x2F8B7, "M", "捐"), + (0x2F8B8, "M", "𢬌"), + (0x2F8B9, "M", "挽"), + (0x2F8BA, "M", "拼"), + (0x2F8BB, "M", "捨"), + (0x2F8BC, "M", "掃"), + (0x2F8BD, "M", "揤"), + (0x2F8BE, "M", "𢯱"), + (0x2F8BF, "M", "搢"), + (0x2F8C0, "M", "揅"), + (0x2F8C1, "M", "掩"), + (0x2F8C2, "M", "㨮"), + (0x2F8C3, "M", "摩"), + (0x2F8C4, "M", "摾"), + (0x2F8C5, "M", "撝"), + (0x2F8C6, "M", "摷"), + (0x2F8C7, "M", "㩬"), + (0x2F8C8, "M", "敏"), + (0x2F8C9, "M", "敬"), + (0x2F8CA, "M", "𣀊"), + (0x2F8CB, "M", "旣"), + (0x2F8CC, "M", "書"), + (0x2F8CD, "M", "晉"), + (0x2F8CE, "M", "㬙"), + (0x2F8CF, "M", "暑"), + (0x2F8D0, "M", "㬈"), + (0x2F8D1, "M", "㫤"), + (0x2F8D2, "M", "冒"), + (0x2F8D3, "M", "冕"), + (0x2F8D4, "M", "最"), + (0x2F8D5, "M", "暜"), + (0x2F8D6, "M", "肭"), + (0x2F8D7, "M", "䏙"), + (0x2F8D8, "M", "朗"), + (0x2F8D9, "M", "望"), + (0x2F8DA, "M", "朡"), + (0x2F8DB, "M", "杞"), + (0x2F8DC, "M", "杓"), + (0x2F8DD, "M", "𣏃"), + (0x2F8DE, "M", "㭉"), + (0x2F8DF, "M", "柺"), + (0x2F8E0, "M", "枅"), + (0x2F8E1, "M", "桒"), + (0x2F8E2, "M", "梅"), + (0x2F8E3, "M", "𣑭"), + (0x2F8E4, "M", "梎"), + (0x2F8E5, "M", "栟"), + (0x2F8E6, "M", "椔"), + (0x2F8E7, "M", "㮝"), + (0x2F8E8, "M", "楂"), + (0x2F8E9, "M", "榣"), + (0x2F8EA, "M", "槪"), + (0x2F8EB, "M", "檨"), + (0x2F8EC, "M", "𣚣"), + (0x2F8ED, "M", "櫛"), + (0x2F8EE, "M", "㰘"), + (0x2F8EF, "M", "次"), + (0x2F8F0, "M", "𣢧"), + (0x2F8F1, "M", "歔"), + (0x2F8F2, "M", "㱎"), + (0x2F8F3, "M", "歲"), + (0x2F8F4, "M", "殟"), + (0x2F8F5, "M", "殺"), + (0x2F8F6, "M", "殻"), + (0x2F8F7, "M", "𣪍"), + (0x2F8F8, "M", "𡴋"), + (0x2F8F9, "M", "𣫺"), + (0x2F8FA, "M", "汎"), + (0x2F8FB, "M", "𣲼"), + (0x2F8FC, "M", "沿"), + (0x2F8FD, "M", "泍"), + (0x2F8FE, "M", "汧"), + (0x2F8FF, "M", "洖"), + (0x2F900, "M", "派"), + (0x2F901, "M", "海"), + (0x2F902, "M", "流"), + (0x2F903, "M", "浩"), + (0x2F904, "M", "浸"), + (0x2F905, "M", "涅"), + (0x2F906, "M", "𣴞"), + (0x2F907, "M", "洴"), + (0x2F908, "M", "港"), + (0x2F909, "M", "湮"), + (0x2F90A, "M", "㴳"), + (0x2F90B, "M", "滋"), + (0x2F90C, "M", "滇"), + ] + + +def _seg_79() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F90D, "M", "𣻑"), + (0x2F90E, "M", "淹"), + (0x2F90F, "M", "潮"), + (0x2F910, "M", "𣽞"), + (0x2F911, "M", "𣾎"), + (0x2F912, "M", "濆"), + (0x2F913, "M", "瀹"), + (0x2F914, "M", "瀞"), + (0x2F915, "M", "瀛"), + (0x2F916, "M", "㶖"), + (0x2F917, "M", "灊"), + (0x2F918, "M", "災"), + (0x2F919, "M", "灷"), + (0x2F91A, "M", "炭"), + (0x2F91B, "M", "𠔥"), + (0x2F91C, "M", "煅"), + (0x2F91D, "M", "𤉣"), + (0x2F91E, "M", "熜"), + (0x2F91F, "X"), + (0x2F920, "M", "爨"), + (0x2F921, "M", "爵"), + (0x2F922, "M", "牐"), + (0x2F923, "M", "𤘈"), + (0x2F924, "M", "犀"), + (0x2F925, "M", "犕"), + (0x2F926, "M", "𤜵"), + (0x2F927, "M", "𤠔"), + (0x2F928, "M", "獺"), + (0x2F929, "M", "王"), + (0x2F92A, "M", "㺬"), + (0x2F92B, "M", "玥"), + (0x2F92C, "M", "㺸"), + (0x2F92E, "M", "瑇"), + (0x2F92F, "M", "瑜"), + (0x2F930, "M", "瑱"), + (0x2F931, "M", "璅"), + (0x2F932, "M", "瓊"), + (0x2F933, "M", "㼛"), + (0x2F934, "M", "甤"), + (0x2F935, "M", "𤰶"), + (0x2F936, "M", "甾"), + (0x2F937, "M", "𤲒"), + (0x2F938, "M", "異"), + (0x2F939, "M", "𢆟"), + (0x2F93A, "M", "瘐"), + (0x2F93B, "M", "𤾡"), + (0x2F93C, "M", "𤾸"), + (0x2F93D, "M", "𥁄"), + (0x2F93E, "M", "㿼"), + (0x2F93F, "M", "䀈"), + (0x2F940, "M", "直"), + (0x2F941, "M", "𥃳"), + (0x2F942, "M", "𥃲"), + (0x2F943, "M", "𥄙"), + (0x2F944, "M", "𥄳"), + (0x2F945, "M", "眞"), + (0x2F946, "M", "真"), + (0x2F948, "M", "睊"), + (0x2F949, "M", "䀹"), + (0x2F94A, "M", "瞋"), + (0x2F94B, "M", "䁆"), + (0x2F94C, "M", "䂖"), + (0x2F94D, "M", "𥐝"), + (0x2F94E, "M", "硎"), + (0x2F94F, "M", "碌"), + (0x2F950, "M", "磌"), + (0x2F951, "M", "䃣"), + (0x2F952, "M", "𥘦"), + (0x2F953, "M", "祖"), + (0x2F954, "M", "𥚚"), + (0x2F955, "M", "𥛅"), + (0x2F956, "M", "福"), + (0x2F957, "M", "秫"), + (0x2F958, "M", "䄯"), + (0x2F959, "M", "穀"), + (0x2F95A, "M", "穊"), + (0x2F95B, "M", "穏"), + (0x2F95C, "M", "𥥼"), + (0x2F95D, "M", "𥪧"), + (0x2F95F, "X"), + (0x2F960, "M", "䈂"), + (0x2F961, "M", "𥮫"), + (0x2F962, "M", "篆"), + (0x2F963, "M", "築"), + (0x2F964, "M", "䈧"), + (0x2F965, "M", "𥲀"), + (0x2F966, "M", "糒"), + (0x2F967, "M", "䊠"), + (0x2F968, "M", "糨"), + (0x2F969, "M", "糣"), + (0x2F96A, "M", "紀"), + (0x2F96B, "M", "𥾆"), + (0x2F96C, "M", "絣"), + (0x2F96D, "M", "䌁"), + (0x2F96E, "M", "緇"), + (0x2F96F, "M", "縂"), + (0x2F970, "M", "繅"), + (0x2F971, "M", "䌴"), + (0x2F972, "M", "𦈨"), + (0x2F973, "M", "𦉇"), + ] + + +def _seg_80() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F974, "M", "䍙"), + (0x2F975, "M", "𦋙"), + (0x2F976, "M", "罺"), + (0x2F977, "M", "𦌾"), + (0x2F978, "M", "羕"), + (0x2F979, "M", "翺"), + (0x2F97A, "M", "者"), + (0x2F97B, "M", "𦓚"), + (0x2F97C, "M", "𦔣"), + (0x2F97D, "M", "聠"), + (0x2F97E, "M", "𦖨"), + (0x2F97F, "M", "聰"), + (0x2F980, "M", "𣍟"), + (0x2F981, "M", "䏕"), + (0x2F982, "M", "育"), + (0x2F983, "M", "脃"), + (0x2F984, "M", "䐋"), + (0x2F985, "M", "脾"), + (0x2F986, "M", "媵"), + (0x2F987, "M", "𦞧"), + (0x2F988, "M", "𦞵"), + (0x2F989, "M", "𣎓"), + (0x2F98A, "M", "𣎜"), + (0x2F98B, "M", "舁"), + (0x2F98C, "M", "舄"), + (0x2F98D, "M", "辞"), + (0x2F98E, "M", "䑫"), + (0x2F98F, "M", "芑"), + (0x2F990, "M", "芋"), + (0x2F991, "M", "芝"), + (0x2F992, "M", "劳"), + (0x2F993, "M", "花"), + (0x2F994, "M", "芳"), + (0x2F995, "M", "芽"), + (0x2F996, "M", "苦"), + (0x2F997, "M", "𦬼"), + (0x2F998, "M", "若"), + (0x2F999, "M", "茝"), + (0x2F99A, "M", "荣"), + (0x2F99B, "M", "莭"), + (0x2F99C, "M", "茣"), + (0x2F99D, "M", "莽"), + (0x2F99E, "M", "菧"), + (0x2F99F, "M", "著"), + (0x2F9A0, "M", "荓"), + (0x2F9A1, "M", "菊"), + (0x2F9A2, "M", "菌"), + (0x2F9A3, "M", "菜"), + (0x2F9A4, "M", "𦰶"), + (0x2F9A5, "M", "𦵫"), + (0x2F9A6, "M", "𦳕"), + (0x2F9A7, "M", "䔫"), + (0x2F9A8, "M", "蓱"), + (0x2F9A9, "M", "蓳"), + (0x2F9AA, "M", "蔖"), + (0x2F9AB, "M", "𧏊"), + (0x2F9AC, "M", "蕤"), + (0x2F9AD, "M", "𦼬"), + (0x2F9AE, "M", "䕝"), + (0x2F9AF, "M", "䕡"), + (0x2F9B0, "M", "𦾱"), + (0x2F9B1, "M", "𧃒"), + (0x2F9B2, "M", "䕫"), + (0x2F9B3, "M", "虐"), + (0x2F9B4, "M", "虜"), + (0x2F9B5, "M", "虧"), + (0x2F9B6, "M", "虩"), + (0x2F9B7, "M", "蚩"), + (0x2F9B8, "M", "蚈"), + (0x2F9B9, "M", "蜎"), + (0x2F9BA, "M", "蛢"), + (0x2F9BB, "M", "蝹"), + (0x2F9BC, "M", "蜨"), + (0x2F9BD, "M", "蝫"), + (0x2F9BE, "M", "螆"), + (0x2F9BF, "X"), + (0x2F9C0, "M", "蟡"), + (0x2F9C1, "M", "蠁"), + (0x2F9C2, "M", "䗹"), + (0x2F9C3, "M", "衠"), + (0x2F9C4, "M", "衣"), + (0x2F9C5, "M", "𧙧"), + (0x2F9C6, "M", "裗"), + (0x2F9C7, "M", "裞"), + (0x2F9C8, "M", "䘵"), + (0x2F9C9, "M", "裺"), + (0x2F9CA, "M", "㒻"), + (0x2F9CB, "M", "𧢮"), + (0x2F9CC, "M", "𧥦"), + (0x2F9CD, "M", "䚾"), + (0x2F9CE, "M", "䛇"), + (0x2F9CF, "M", "誠"), + (0x2F9D0, "M", "諭"), + (0x2F9D1, "M", "變"), + (0x2F9D2, "M", "豕"), + (0x2F9D3, "M", "𧲨"), + (0x2F9D4, "M", "貫"), + (0x2F9D5, "M", "賁"), + (0x2F9D6, "M", "贛"), + (0x2F9D7, "M", "起"), + ] + + +def _seg_81() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F9D8, "M", "𧼯"), + (0x2F9D9, "M", "𠠄"), + (0x2F9DA, "M", "跋"), + (0x2F9DB, "M", "趼"), + (0x2F9DC, "M", "跰"), + (0x2F9DD, "M", "𠣞"), + (0x2F9DE, "M", "軔"), + (0x2F9DF, "M", "輸"), + (0x2F9E0, "M", "𨗒"), + (0x2F9E1, "M", "𨗭"), + (0x2F9E2, "M", "邔"), + (0x2F9E3, "M", "郱"), + (0x2F9E4, "M", "鄑"), + (0x2F9E5, "M", "𨜮"), + (0x2F9E6, "M", "鄛"), + (0x2F9E7, "M", "鈸"), + (0x2F9E8, "M", "鋗"), + (0x2F9E9, "M", "鋘"), + (0x2F9EA, "M", "鉼"), + (0x2F9EB, "M", "鏹"), + (0x2F9EC, "M", "鐕"), + (0x2F9ED, "M", "𨯺"), + (0x2F9EE, "M", "開"), + (0x2F9EF, "M", "䦕"), + (0x2F9F0, "M", "閷"), + (0x2F9F1, "M", "𨵷"), + (0x2F9F2, "M", "䧦"), + (0x2F9F3, "M", "雃"), + (0x2F9F4, "M", "嶲"), + (0x2F9F5, "M", "霣"), + (0x2F9F6, "M", "𩅅"), + (0x2F9F7, "M", "𩈚"), + (0x2F9F8, "M", "䩮"), + (0x2F9F9, "M", "䩶"), + (0x2F9FA, "M", "韠"), + (0x2F9FB, "M", "𩐊"), + (0x2F9FC, "M", "䪲"), + (0x2F9FD, "M", "𩒖"), + (0x2F9FE, "M", "頋"), + (0x2FA00, "M", "頩"), + (0x2FA01, "M", "𩖶"), + (0x2FA02, "M", "飢"), + (0x2FA03, "M", "䬳"), + (0x2FA04, "M", "餩"), + (0x2FA05, "M", "馧"), + (0x2FA06, "M", "駂"), + (0x2FA07, "M", "駾"), + (0x2FA08, "M", "䯎"), + (0x2FA09, "M", "𩬰"), + (0x2FA0A, "M", "鬒"), + (0x2FA0B, "M", "鱀"), + (0x2FA0C, "M", "鳽"), + (0x2FA0D, "M", "䳎"), + (0x2FA0E, "M", "䳭"), + (0x2FA0F, "M", "鵧"), + (0x2FA10, "M", "𪃎"), + (0x2FA11, "M", "䳸"), + (0x2FA12, "M", "𪄅"), + (0x2FA13, "M", "𪈎"), + (0x2FA14, "M", "𪊑"), + (0x2FA15, "M", "麻"), + (0x2FA16, "M", "䵖"), + (0x2FA17, "M", "黹"), + (0x2FA18, "M", "黾"), + (0x2FA19, "M", "鼅"), + (0x2FA1A, "M", "鼏"), + (0x2FA1B, "M", "鼖"), + (0x2FA1C, "M", "鼻"), + (0x2FA1D, "M", "𪘀"), + (0x2FA1E, "X"), + (0x30000, "V"), + (0x3134B, "X"), + (0x31350, "V"), + (0x323B0, "X"), + (0xE0100, "I"), + (0xE01F0, "X"), + ] + + +uts46data = tuple( + _seg_0() + + _seg_1() + + _seg_2() + + _seg_3() + + _seg_4() + + _seg_5() + + _seg_6() + + _seg_7() + + _seg_8() + + _seg_9() + + _seg_10() + + _seg_11() + + _seg_12() + + _seg_13() + + _seg_14() + + _seg_15() + + _seg_16() + + _seg_17() + + _seg_18() + + _seg_19() + + _seg_20() + + _seg_21() + + _seg_22() + + _seg_23() + + _seg_24() + + _seg_25() + + _seg_26() + + _seg_27() + + _seg_28() + + _seg_29() + + _seg_30() + + _seg_31() + + _seg_32() + + _seg_33() + + _seg_34() + + _seg_35() + + _seg_36() + + _seg_37() + + _seg_38() + + _seg_39() + + _seg_40() + + _seg_41() + + _seg_42() + + _seg_43() + + _seg_44() + + _seg_45() + + _seg_46() + + _seg_47() + + _seg_48() + + _seg_49() + + _seg_50() + + _seg_51() + + _seg_52() + + _seg_53() + + _seg_54() + + _seg_55() + + _seg_56() + + _seg_57() + + _seg_58() + + _seg_59() + + _seg_60() + + _seg_61() + + _seg_62() + + _seg_63() + + _seg_64() + + _seg_65() + + _seg_66() + + _seg_67() + + _seg_68() + + _seg_69() + + _seg_70() + + _seg_71() + + _seg_72() + + _seg_73() + + _seg_74() + + _seg_75() + + _seg_76() + + _seg_77() + + _seg_78() + + _seg_79() + + _seg_80() + + _seg_81() +) # type: Tuple[Union[Tuple[int, str], Tuple[int, str, str]], ...] diff --git a/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/INSTALLER b/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/LICENSE.txt b/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/LICENSE.txt new file mode 100644 index 0000000..a76d0ed --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/LICENSE.txt @@ -0,0 +1,29 @@ +Copyright (c) 2004 Infrae. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + 3. Neither the name of Infrae nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/LICENSES.txt b/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/LICENSES.txt new file mode 100644 index 0000000..9f97c18 --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/LICENSES.txt @@ -0,0 +1,29 @@ +lxml is copyright Infrae and distributed under the BSD license (see +doc/licenses/BSD.txt), with the following exceptions: + +Some code, such a selftest.py, selftest2.py and +src/lxml/_elementpath.py are derived from ElementTree and +cElementTree. See doc/licenses/elementtree.txt for the license text. + +lxml.cssselect and lxml.html are copyright Ian Bicking and distributed +under the BSD license (see doc/licenses/BSD.txt). + +test.py, the test-runner script, is GPL and copyright Shuttleworth +Foundation. See doc/licenses/GPL.txt. It is believed the unchanged +inclusion of test.py to run the unit test suite falls under the +"aggregation" clause of the GPL and thus does not affect the license +of the rest of the package. + +The isoschematron implementation uses several XSL and RelaxNG resources: + * The (XML syntax) RelaxNG schema for schematron, copyright International + Organization for Standardization (see + src/lxml/isoschematron/resources/rng/iso-schematron.rng for the license + text) + * The skeleton iso-schematron-xlt1 pure-xslt schematron implementation + xsl stylesheets, copyright Rick Jelliffe and Academia Sinica Computing + Center, Taiwan (see the xsl files here for the license text: + src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/) + * The xsd/rng schema schematron extraction xsl transformations are unlicensed + and copyright the respective authors as noted (see + src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl and + src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl) diff --git a/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/METADATA b/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/METADATA new file mode 100644 index 0000000..33c8368 --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/METADATA @@ -0,0 +1,103 @@ +Metadata-Version: 2.1 +Name: lxml +Version: 5.3.0 +Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API. +Home-page: https://lxml.de/ +Author: lxml dev team +Author-email: lxml-dev@lxml.de +Maintainer: lxml dev team +Maintainer-email: lxml-dev@lxml.de +License: BSD-3-Clause +Project-URL: Source, https://github.com/lxml/lxml +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Intended Audience :: Information Technology +Classifier: License :: OSI Approved :: BSD License +Classifier: Programming Language :: Cython +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: C +Classifier: Operating System :: OS Independent +Classifier: Topic :: Text Processing :: Markup :: HTML +Classifier: Topic :: Text Processing :: Markup :: XML +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Requires-Python: >=3.6 +License-File: LICENSE.txt +License-File: LICENSES.txt +Provides-Extra: cssselect +Requires-Dist: cssselect>=0.7; extra == "cssselect" +Provides-Extra: html5 +Requires-Dist: html5lib; extra == "html5" +Provides-Extra: html_clean +Requires-Dist: lxml-html-clean; extra == "html-clean" +Provides-Extra: htmlsoup +Requires-Dist: BeautifulSoup4; extra == "htmlsoup" +Provides-Extra: source +Requires-Dist: Cython>=3.0.11; extra == "source" + +lxml is a Pythonic, mature binding for the libxml2 and libxslt libraries. It +provides safe and convenient access to these libraries using the ElementTree +API. + +It extends the ElementTree API significantly to offer support for XPath, +RelaxNG, XML Schema, XSLT, C14N and much more. + +To contact the project, go to the `project home page +`_ or see our bug tracker at +https://launchpad.net/lxml + +In case you want to use the current in-development version of lxml, +you can get it from the github repository at +https://github.com/lxml/lxml . Note that this requires Cython to +build the sources, see the build instructions on the project home +page. To the same end, running ``easy_install lxml==dev`` will +install lxml from +https://github.com/lxml/lxml/tarball/master#egg=lxml-dev if you have +an appropriate version of Cython installed. + + +After an official release of a new stable series, bug fixes may become +available at +https://github.com/lxml/lxml/tree/lxml-5.3 . +Running ``easy_install lxml==5.3bugfix`` will install +the unreleased branch state from +https://github.com/lxml/lxml/tarball/lxml-5.3#egg=lxml-5.3bugfix +as soon as a maintenance branch has been established. Note that this +requires Cython to be installed at an appropriate version for the build. + +5.3.0 (2024-08-10) +================== + +Features added +-------------- + +* GH#421: Nested ``CDATA`` sections are no longer rejected but split on output + to represent ``]]>`` correctly. + Patch by Gertjan Klein. + +Bugs fixed +---------- + +* LP#2060160: Attribute values serialised differently in ``xmlfile.element()`` and ``xmlfile.write()``. + +* LP#2058177: The ISO-Schematron implementation could fail on unknown prefixes. + Patch by David Lakin. + +Other changes +------------- + +* LP#2067707: The ``strip_cdata`` option in ``HTMLParser()`` turned out to be useless and is now deprecated. + +* Binary wheels use the library versions libxml2 2.12.9 and libxslt 1.1.42. + +* Windows binary wheels use the library versions libxml2 2.11.8 and libxslt 1.1.39. + +* Built with Cython 3.0.11. + + diff --git a/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/RECORD b/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/RECORD new file mode 100644 index 0000000..c657208 --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/RECORD @@ -0,0 +1,201 @@ +lxml-5.3.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +lxml-5.3.0.dist-info/LICENSE.txt,sha256=ae20RcEzWoMS1MCScYR-mVbYTw2fck0SU0DMP612eyo,1488 +lxml-5.3.0.dist-info/LICENSES.txt,sha256=QdSd1AaqDhVIptXyGjDWv2OLPNlutyid00jYPtLkA5I,1514 +lxml-5.3.0.dist-info/METADATA,sha256=9Gvwa8HvE2_sh8r-bguvdhRcK2mcHuUiryEAcxPpGzQ,3785 +lxml-5.3.0.dist-info/RECORD,, +lxml-5.3.0.dist-info/WHEEL,sha256=XnIESqhfCE2aOGKffkOEcKoglK8cihfhsIZsxbO0Fd4,114 +lxml-5.3.0.dist-info/top_level.txt,sha256=NjD988wqaKq512nshNdLt-uDxsjkp4Bh51m6N-dhUrk,5 +lxml/ElementInclude.py,sha256=PSLeZFvCa76WHJulPLxcZXJtCI2-4dK2CtqPRiYOAQg,8560 +lxml/__init__.py,sha256=_qTx8RYrwxte6hDXTKSEp63HX2T3QE1IEbQjswgB9X0,574 +lxml/__pycache__/ElementInclude.cpython-312.pyc,, +lxml/__pycache__/__init__.cpython-312.pyc,, +lxml/__pycache__/_elementpath.cpython-312.pyc,, +lxml/__pycache__/builder.cpython-312.pyc,, +lxml/__pycache__/cssselect.cpython-312.pyc,, +lxml/__pycache__/doctestcompare.cpython-312.pyc,, +lxml/__pycache__/pyclasslookup.cpython-312.pyc,, +lxml/__pycache__/sax.cpython-312.pyc,, +lxml/__pycache__/usedoctest.cpython-312.pyc,, +lxml/_elementpath.cpython-312-aarch64-linux-gnu.so,sha256=6AxWIUWYCodbd31P9ADlpn6NG4tNKH8kHF93A8sNbqw,208960 +lxml/_elementpath.py,sha256=5-PzX8ZIxPIvESKDGVL829sejYkvx991FSQyM-J0LqE,10888 +lxml/apihelpers.pxi,sha256=zipCUecXzy5INij_qdEEqZoLp9LYB3CJQUzIzFVH1Ow,63610 +lxml/builder.cpython-312-aarch64-linux-gnu.so,sha256=ujm8_iD2vI055CnABkjj2Gm_JqmZu6sLzOeUrtLiNDs,136896 +lxml/builder.py,sha256=XD0DQc_G-D950Ym2NwDqxF2v9frtldxdfmvYhxhpP64,8100 +lxml/classlookup.pxi,sha256=Tax8Vhbm5C6UCjgmRFsYjW0pFHxIuTthH1MOgASDLgc,22435 +lxml/cleanup.pxi,sha256=ZNEpbv7qx_ICPzsxhCaMUHCOfiznOoZ_u3jlYXHAuh4,8454 +lxml/cssselect.py,sha256=_wZdX-B9p5MeIYABmENIYRWEkwXwX-7jO8Dkf-1rUZU,3306 +lxml/debug.pxi,sha256=zhxiMeNnKtkjn_FWboHk1T-Vtcg_vEGV8jfYK0XyXHM,3282 +lxml/docloader.pxi,sha256=bYSZAxxbBEfVzfLXTUWFRfOyUTfV23L7i9hR2dgtSNY,5772 +lxml/doctestcompare.py,sha256=40EDnkwpcvW86qNa86990OXF42xdHaosSZoiBsEjkzU,17731 +lxml/dtd.pxi,sha256=y2i_PVKnlWCe9VGchgM6t8lIljtVfbWSXuWC-rEbzeE,15228 +lxml/etree.cpython-312-aarch64-linux-gnu.so,sha256=PzAFfhklEl94Q8mHjosOHGbFJ3dhw1fG-rtJrbKzfY0,5094584 +lxml/etree.h,sha256=QRYm9jldpUZGAmLDcg96JAAUx9HT78fwugGaNJfR_iM,9912 +lxml/etree.pyx,sha256=vhYOLtALCc3KPlferHRz28v7UMknOJpPzq6H2jLvrG0,134462 +lxml/etree_api.h,sha256=kVJ_gwZ1gF3GgGTpD324jh4RJSwSVX3XOqoNuoJur9o,17063 +lxml/extensions.pxi,sha256=58O6mBbDeWnkiIsRd9T7mLodylo7typz2dbjpJryAyY,32088 +lxml/html/ElementSoup.py,sha256=s_dLobLMuKn2DhexR-iDXdZrMFg1RjLy1feHsIeZMpw,320 +lxml/html/__init__.py,sha256=ap2X3ZzRaufsJppVEVa7ctw1bYtBfs7FSRBCUIKPyDk,64302 +lxml/html/__pycache__/ElementSoup.cpython-312.pyc,, +lxml/html/__pycache__/__init__.cpython-312.pyc,, +lxml/html/__pycache__/_diffcommand.cpython-312.pyc,, +lxml/html/__pycache__/_html5builder.cpython-312.pyc,, +lxml/html/__pycache__/_setmixin.cpython-312.pyc,, +lxml/html/__pycache__/builder.cpython-312.pyc,, +lxml/html/__pycache__/clean.cpython-312.pyc,, +lxml/html/__pycache__/defs.cpython-312.pyc,, +lxml/html/__pycache__/diff.cpython-312.pyc,, +lxml/html/__pycache__/formfill.cpython-312.pyc,, +lxml/html/__pycache__/html5parser.cpython-312.pyc,, +lxml/html/__pycache__/soupparser.cpython-312.pyc,, +lxml/html/__pycache__/usedoctest.cpython-312.pyc,, +lxml/html/_diffcommand.py,sha256=kz_7EP9PmYWuczlZcGiw74_rG0eTKvQ2lrO0rkiwlYE,2081 +lxml/html/_html5builder.py,sha256=NLaT-Ev-aBgJpeQl-6ZbJChLZK5GV-znDkHOJD5VQC4,3230 +lxml/html/_setmixin.py,sha256=8IFIOLmVz0G-XzsD2tCEkSFWO-dgPBHgvHufC8ni67s,1188 +lxml/html/builder.py,sha256=aRgS-Ea9bli-muGX0iUQGKAe9D93P8BspQ2WPuiWJcU,4492 +lxml/html/clean.py,sha256=FghSJy4jt2RaBy6dgusowkU18hxpZ4XLE5ceCK9qxyA,503 +lxml/html/defs.py,sha256=ZzOp2TmY9f_ein9GIcDPyN8-f5HVptzSj56umimWub4,4236 +lxml/html/diff.cpython-312-aarch64-linux-gnu.so,sha256=A9X1A-D-ZWka0WbcXvLhN4tHOKUfxNbfRey4se9nDMc,335952 +lxml/html/diff.py,sha256=n2jMJW8D2OYfG-SKbdmpSjZ3Lwk516WwJfMn6yvQiuM,30393 +lxml/html/formfill.py,sha256=umgk0BbkAI1W6q9musFbL-cDnI_aap2NsLBJqk0UmVI,9681 +lxml/html/html5parser.py,sha256=dnyC4cqHxywjZSzk0mu2L7THTZjxhg4yF4pncjusa_w,8634 +lxml/html/soupparser.py,sha256=xo8VvNeOEb-SChuXLKCRECh8J7HBiJLE9sAbEskoUUQ,10197 +lxml/html/usedoctest.py,sha256=tPlmVz4KK1GRKV5DJLrdVECeqsT9PlDzSqqTodVi5s0,249 +lxml/includes/__init__.pxd,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +lxml/includes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +lxml/includes/__pycache__/__init__.cpython-312.pyc,, +lxml/includes/c14n.pxd,sha256=DBQcOJ0c_YS245ohMb8fmuEC1kFyv1LrNY_8Mf-syZg,1110 +lxml/includes/config.pxd,sha256=H6Mrl8It21hzRI2hzMId9W48QqkYYkoLT4dniLNmdTw,96 +lxml/includes/dtdvalid.pxd,sha256=Nv0OykjYehv2lO-Zj--q6jS3TAC_dvQVPSgPMuse1NM,689 +lxml/includes/etree_defs.h,sha256=wWC0nsE3NCLBABsKjo_UMBtUJr7yPL7-e8OLc-tGI5o,14245 +lxml/includes/etreepublic.pxd,sha256=Bn4d3JkWPqXputXqI-eJ0xmPrwNFPTfDCa7axgjB7FM,10184 +lxml/includes/extlibs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +lxml/includes/extlibs/__pycache__/__init__.cpython-312.pyc,, +lxml/includes/extlibs/libcharset.h,sha256=GA0FumrbNI4VDGlzq3lf5CLaCwXgn4unw2l0btGQFwI,1510 +lxml/includes/extlibs/localcharset.h,sha256=Z_AagaQeq0aDE7NPsVOqEf4nO4KcUp46ggo4d0ONIOQ,6338 +lxml/includes/extlibs/zconf.h,sha256=ROVD_0UUx6mgHWSAGcLJqB0RBcv6PHfx-vbNhur6ir0,16464 +lxml/includes/extlibs/zlib.h,sha256=ilV5r3LqT0J_8ApBUPDMs_xcHkN59ybhARM7Grn8YAw,96829 +lxml/includes/htmlparser.pxd,sha256=9uASkP5dU7OE2lCOLT-z2e01qSbFlp4ehgwdostF_qk,2802 +lxml/includes/libexslt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +lxml/includes/libexslt/__pycache__/__init__.cpython-312.pyc,, +lxml/includes/libexslt/exslt.h,sha256=eSW5tMJAewSUANLqk7AGEiU8b2BbCNRyauHnez7nKSU,3114 +lxml/includes/libexslt/exsltconfig.h,sha256=agTeMNvoGxvX30dbonoVhr5xRyb390Wjb_OFLCZz06E,1172 +lxml/includes/libexslt/exsltexports.h,sha256=1Jm9KTXm2FUUJIZ6V6-Uw55yG0BMULX3_goyxDd2LL8,1077 +lxml/includes/libxml/HTMLparser.h,sha256=ySe0Ebz_SqcymDMfwbuuXrWFjzk36u87-gEel_Nuctg,10008 +lxml/includes/libxml/HTMLtree.h,sha256=xQMeETDtY8XZnkV9rGkI4UgUIp71I4z2O3R_P1AEwc4,3502 +lxml/includes/libxml/SAX.h,sha256=TG2pkIInEA1vLbMfhB02mZhYSoTKxX-m0RaUGmYyzCo,4418 +lxml/includes/libxml/SAX2.h,sha256=5fiNvrQmkgIzgZJk-38P1txfs-jIvAcL-_hDAE2pQFs,4430 +lxml/includes/libxml/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +lxml/includes/libxml/__pycache__/__init__.cpython-312.pyc,, +lxml/includes/libxml/c14n.h,sha256=vG_CjBvBDaMDVLD8qTQNqT-fj7rmkvD8O8Q7OCv9p3M,3021 +lxml/includes/libxml/catalog.h,sha256=_aTvqPlvW9WSwGr0UsUr50H3xvLK3KjIT7NEaE8L4Ww,4618 +lxml/includes/libxml/chvalid.h,sha256=TZcceNp6Cw0QlYwIqK9GxyYqL5UiAjpQyjt_yrZGTQE,5087 +lxml/includes/libxml/debugXML.h,sha256=W0JxFbxqZKEDwyTffBNeVPyHjFQL4wj3Vr9PCl63YA4,4928 +lxml/includes/libxml/dict.h,sha256=SweaPGMtTTf4je6dNTIoEzcfEvpsAT9_PhR7FC0K-rQ,1770 +lxml/includes/libxml/encoding.h,sha256=10GEJ6jAieaRXNHDqoHy4s5FSDTfPBm-_Y8V5eSQdqU,8109 +lxml/includes/libxml/entities.h,sha256=QDLCNfqDBiza2N4T5nBqecGLcvmCqdPbbXBpoqd1ZgY,4659 +lxml/includes/libxml/globals.h,sha256=GCp5Iy7IOre0MC1FbFTdpidiSeVFT4fA2t0Facbiw0Q,890 +lxml/includes/libxml/hash.h,sha256=NiQ7FIrpb5_fqLbqB_wuakO2hcbEjkjrLMkWsJ4u7z0,6310 +lxml/includes/libxml/list.h,sha256=kwMDctdAgRtCGInjdXuaBAlNDrn5Vc87rdUNjHgUNH4,3140 +lxml/includes/libxml/nanoftp.h,sha256=q-OGmv3ltTTTbB_n6ehpGFJpS6wwME-pNTkxcYhHKvo,4013 +lxml/includes/libxml/nanohttp.h,sha256=jca5Z9jzu_Lb6ey7B90q6gjZHGlO82LUx0OsTulCl8E,1869 +lxml/includes/libxml/parser.h,sha256=4Bg_i5vI9fn_L3IcNok18l1ceX9OlwHg-2Aimeh5KH8,44395 +lxml/includes/libxml/parserInternals.h,sha256=ZVSsuLs_K-Ldj0ryU1OPP8lnIe3yKN4QL_CgfhmeiZM,16604 +lxml/includes/libxml/relaxng.h,sha256=miygBGaAxpxiG16kzGWbah9Pl84TunzqKIQf9GcTkhE,5830 +lxml/includes/libxml/schemasInternals.h,sha256=V8M4In3zf24EX55Yt4dcfxwp7NpHGYViKnLKwtyrPJ4,26233 +lxml/includes/libxml/schematron.h,sha256=8EhPDhvtlMxl9e0C5rSbEruOvzJS5BC_OOFbq9RXZnY,4255 +lxml/includes/libxml/threads.h,sha256=vWXv_Nvf7a1iJVZO22J7nCUZkTwM1plW6lL_v9Wckd0,1730 +lxml/includes/libxml/tree.h,sha256=qVYizJJHQqrFJPmK_ZbdeWGDTwv2m1MzeZ51xfeVong,38353 +lxml/includes/libxml/uri.h,sha256=A7nSyNLbCGWRVvpVbg8bbo-cw3s-Eu0rs45ILWhzfDk,2568 +lxml/includes/libxml/valid.h,sha256=N0iyv98q1qPwS1lzzuF9U5o_ZSXfPNqsbnq2qjofeU4,12834 +lxml/includes/libxml/xinclude.h,sha256=2M5D4Koe4Q4zX1qYaiKmp0Fq5joC5UpY4fcV6FG80Xw,2887 +lxml/includes/libxml/xlink.h,sha256=UwJVQvFAax69tdMkePYiAlfkpzTTGZM7hWMyGzEDdwk,5002 +lxml/includes/libxml/xmlIO.h,sha256=SSvJNj3eA4zw87n4-tTrsZBGqHnw7_Rt_6jJon_stDk,12253 +lxml/includes/libxml/xmlautomata.h,sha256=6V_99Ozmfjy1EywHByHLBrgvBsItuYoV34qifJDdXDc,3787 +lxml/includes/libxml/xmlerror.h,sha256=mPPTbEDEM3UodTTwMMPhMG0zWsEBMA6w2xUOUELWisM,37295 +lxml/includes/libxml/xmlexports.h,sha256=GZ1O2qLq9NHTeUddup2ac90MdoImLuH81HvA59oYFyY,992 +lxml/includes/libxml/xmlmemory.h,sha256=N1C_93dytOuKccDvGWzRoT5yrA9YZS9A57vb34DwtuY,6116 +lxml/includes/libxml/xmlmodule.h,sha256=y8AmygZrR3wf5UEfyhu6Sf6sn7TTO47g0FUfwdtexA8,1138 +lxml/includes/libxml/xmlreader.h,sha256=iSQmsBM7175FC9D0yPzASIrEVzXktaibRMzmYJPJBxE,12114 +lxml/includes/libxml/xmlregexp.h,sha256=AK69btlcPhG_i_6wVB-VABljotbg241WFsL34STKxmg,5149 +lxml/includes/libxml/xmlsave.h,sha256=A6_a6TtPnAT8vLcSW-CU4ntcs8GCc1igRyjz2eVlpv4,2469 +lxml/includes/libxml/xmlschemas.h,sha256=lXHsYTgPFpvSZF8LSFmHlF6EycX1PkzzW7zejosOn34,6902 +lxml/includes/libxml/xmlschemastypes.h,sha256=MYwlGmoKAo3lHRaaKgnCXiLmPT9KRjdxyCJ7TEyZ6jM,4583 +lxml/includes/libxml/xmlstring.h,sha256=d5PpqxP1I1sfmCUHvVJtjoC9h7hLHcAAQ5ok_Rtf50I,5271 +lxml/includes/libxml/xmlunicode.h,sha256=xqhfmchk-GELwmZWZ2Ha0IgosCy9csZswVDnbmvzRjI,8665 +lxml/includes/libxml/xmlversion.h,sha256=zMS-yTc0vIwJKlsubVTqxa847aW9PS8xQ0iLiOh6jRc,9205 +lxml/includes/libxml/xmlwriter.h,sha256=7tXNqXynH7tbeeMrxcbpI_TI_ZSjxmcR43wXxVg9X9o,20625 +lxml/includes/libxml/xpath.h,sha256=v7fb_GTuugqevysPRNLBocL0YleyEGMyH_SaDpescek,16442 +lxml/includes/libxml/xpathInternals.h,sha256=y3F0P7awBk9qhRQmmEgtSDEHoSvbLN_Q2vIifflypSI,18419 +lxml/includes/libxml/xpointer.h,sha256=9MKw7uRowx53od3plREL_szioEudglZS6H2EUetBToQ,3647 +lxml/includes/libxslt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +lxml/includes/libxslt/__pycache__/__init__.cpython-312.pyc,, +lxml/includes/libxslt/attributes.h,sha256=qKwzfGf7r89esLC65s96iYJWRA-s-Ezss2_V6Mmo1hk,957 +lxml/includes/libxslt/documents.h,sha256=kBihgH5pqRvFalhm_fOFHtJTFhTpBcm681yT5dxgwfw,2704 +lxml/includes/libxslt/extensions.h,sha256=W5UMyJqUP_1zt6sXZ0mgc0gAIwDJrZ8gjByhyrWqvd8,6899 +lxml/includes/libxslt/extra.h,sha256=6X3Wu3NdPtrlqz-Koo7dB-rccnnszi6j3zg599gTByg,1640 +lxml/includes/libxslt/functions.h,sha256=fc4CZj-9KeBHzO9-WWU_bNqmaEZAz3n7NNwClIBXk14,1972 +lxml/includes/libxslt/imports.h,sha256=18kIjoGqdFXR63Ce3ZtzxsTiYV3XGKpchYakMUPDuUI,1840 +lxml/includes/libxslt/keys.h,sha256=16v25VEluS7jYhgg6gYFwVxgGMn-1ctnlhhWWT4RcBY,1155 +lxml/includes/libxslt/namespaces.h,sha256=VofSn2Kkn-a5JyRKCmY3jPp7amQy3n09vzy0KUQt4q0,1666 +lxml/includes/libxslt/numbersInternals.h,sha256=Eg5gYZ5p3h0_e5wyI61S-0E6_ArVJzv0yr63j6BU2fc,2019 +lxml/includes/libxslt/pattern.h,sha256=tJ-BPfs9UYgiZMMoQZbhij3g7xVppYq7TrrOu25eR7Q,2110 +lxml/includes/libxslt/preproc.h,sha256=D_LjEdHhsdyBnEAvflnwFgoR4hGUb72kgEhXkkmPRsw,896 +lxml/includes/libxslt/security.h,sha256=fUD1cy_WxFCTvTNAF0WOQIU4p5CNWn1LHFyZJd-Fx5U,2652 +lxml/includes/libxslt/templates.h,sha256=bnt6Jqui6KU5pNUdMNPbQZkZ5d-VTWqC0TMGkOlVoIo,2268 +lxml/includes/libxslt/transform.h,sha256=ICT7meUV0OTAx27WaKVrKj-aUmR9LSpTNaOAJd2UStg,6311 +lxml/includes/libxslt/variables.h,sha256=cQAgPe4QCcK2uKbWg7Iz-9peM9xWGm7m3M6jQm0sjIA,3143 +lxml/includes/libxslt/xslt.h,sha256=wmFx2Q31Pd8Iq2phAQpY9J3QQatb8lWg3gABtqKFgEw,1964 +lxml/includes/libxslt/xsltInternals.h,sha256=2EbEKYmnYZq0HjGnUMAlpqnqZJurRXzjlgk5Js1WYaY,57949 +lxml/includes/libxslt/xsltconfig.h,sha256=-b37x0e10lrewvGEu92HMegJoGhlfh2Y3ETrrOcJUAY,2956 +lxml/includes/libxslt/xsltexports.h,sha256=1-luH-0bCIgBAlKAXhV-dqHBfwOAQNDamiYbxIlTf0k,1124 +lxml/includes/libxslt/xsltlocale.h,sha256=ppxGEmJfZIJgwRQzCM0_77p9WNekEWq1NrdYZrQl4IE,942 +lxml/includes/libxslt/xsltutils.h,sha256=1eguYgR9-jeNOVlBUktHboaq-VLX6JXraO80TfbARKM,9085 +lxml/includes/lxml-version.h,sha256=YL6wwjlcOnGFHvlMIefFrUtPEY7qcBOjwQhRuV9hIvo,71 +lxml/includes/relaxng.pxd,sha256=HzHlQ6mCcf_tj_JZ9NAVJTVAv8ScCkE8Ifq15y3bS0c,2615 +lxml/includes/schematron.pxd,sha256=Hob7xh-K-MKqp7WiG8thMagf5EkQzmgfi4ds0EF91JA,1604 +lxml/includes/tree.pxd,sha256=Z5mHkABQPlnwu81WTTq7R4fz17rJAkamOvXf_Jp-nxg,20391 +lxml/includes/uri.pxd,sha256=3vOXw6AbSPxAM9uo71T1qnfx-wd9ezXLDQtWsb2zX0I,145 +lxml/includes/xinclude.pxd,sha256=CuO_XZNB6E2JK1qXXWn11APrjFQV5kA6SMyb77WZn0A,804 +lxml/includes/xmlerror.pxd,sha256=pNP5juL4hRHdVdXUWzMspbdtgPqJdHLDu4jns3ItvrI,58016 +lxml/includes/xmlparser.pxd,sha256=d79Wmyof6BX_rjBkKYyDXhBBC3O-yCfyhx8PrI0wm5E,11434 +lxml/includes/xmlschema.pxd,sha256=OLZPd2WDJyopiXJJyo-dAyyYHaeSYFiMAI4tqIiv-Ik,1702 +lxml/includes/xpath.pxd,sha256=e8-ZYUbRG7N1mHETAlknJ_QqAteOosrYLRgpH-OsTkg,5603 +lxml/includes/xslt.pxd,sha256=4yl3pOu7pAvsx5Tc-W4IWCoB8wgtSSR62HI1jqu6jko,8241 +lxml/isoschematron/__init__.py,sha256=uauerYeKTlWFCJSqieIHhF5l6rYV2myeEJ0Imd1LzRc,13274 +lxml/isoschematron/__pycache__/__init__.cpython-312.pyc,, +lxml/isoschematron/resources/rng/iso-schematron.rng,sha256=VsWxPyi3iViJDDbjJJw0wWkEHkLrz9zoCA8zJLor9N4,18337 +lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl,sha256=ObebsB8Wt-d3uIA_U5NU85TpnQ3PxPX38TdOAqosMac,3172 +lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl,sha256=QweRrIIM-zFcgg98GXA2CaWfIbgVE0XKEeYSfvv67A0,4563 +lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl,sha256=xSZ_Ekq_I-62ZpiE5AqYYHwFW_qh855zt9V4_s7rbkY,11703 +lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl,sha256=x42QJ-dxQ1waPzydsCoQnp2Xj15y53nW43O7BuoDRHk,39957 +lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl,sha256=Tr9BnO6pzjVWwhqJfm10UlvAy95EgfSCz2iMlrVGT6Q,2015 +lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl,sha256=ue8q_88X4e_jsJizo31GRNBxNhdxkEE9fY20oq0Iqwk,71764 +lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl,sha256=BBAdsVSi5zAzeGepuN6gS1saQINDqITXKplmmj4dTWg,20382 +lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt,sha256=OGLiFswuLJEW5EPYKOeoauuCJFEtVa6jyzBE1OcJI98,3310 +lxml/iterparse.pxi,sha256=HcHYTLU6cs1R7GOik62rEkTebgsz1fYttk00iKfOtcw,16527 +lxml/lxml.etree.h,sha256=QRYm9jldpUZGAmLDcg96JAAUx9HT78fwugGaNJfR_iM,9912 +lxml/lxml.etree_api.h,sha256=VOjk6v1RVrOiSPrhzYZrRUDddL20E3Va6j1vdbYsvg0,17068 +lxml/nsclasses.pxi,sha256=5pzNBhBtlqObPdThL9QIGRs1Dxj1qnr0PyXuTCURqTg,9129 +lxml/objectify.cpython-312-aarch64-linux-gnu.so,sha256=vhkEurAHd81w4imqYUX5-8h4x9Iv55kfinzhKwYYDe0,2974808 +lxml/objectify.pyx,sha256=pvaZmS21G-qlNjPuVaB_dgGgi0alxNALo7gFOV8Ispc,75735 +lxml/objectpath.pxi,sha256=s5TNG2-EbaWWKLFAiX303B95zK_Ui8ausB__3QvFFGw,11450 +lxml/parser.pxi,sha256=LnahQZQl0qCLWtH1NMMHy0_fwG7maRsL-py0q5lauw0,82040 +lxml/parsertarget.pxi,sha256=v1PidxRaG5giwXcTDkpBI7PDFmsZuOcK0y9LdkQaY8M,6326 +lxml/proxy.pxi,sha256=TPfavn4-ufhVlr-GKciz2qXCTUFtvGdxO-F-h30yIws,23697 +lxml/public-api.pxi,sha256=XoP6_cJOEoQIItvE1RiYCKYD1ry4AobaOr4XLo0KSE4,6666 +lxml/pyclasslookup.py,sha256=gLD1HM2HtITYYiGzjEOewSwbB7XkVx_NZv_quCt79Oc,92 +lxml/readonlytree.pxi,sha256=ddRYczhHieJ4XUvWvTPW9N9oQ8vuKtv7lC1mtE1qvH8,18976 +lxml/relaxng.pxi,sha256=3OQ-fZMzP-KF5vM6HTozT_9ee3J0DJnpj9RcHC8LoMw,6339 +lxml/sax.cpython-312-aarch64-linux-gnu.so,sha256=ZgAjxviz1GWggsTRHmgqDzBG3AYoLLk77WoUKH2lPTw,202296 +lxml/sax.py,sha256=8e9Ef4Cfbwr7AHMGCBBZcotBkOehQtdaCxsVCgWM5_c,9303 +lxml/saxparser.pxi,sha256=9nJEnVFFFx7vueUJ3fSeDjxG4gLgrXsDBWVkD_f8U1Q,33322 +lxml/schematron.pxi,sha256=hFn1p4egpvvz-Tkk2AH7cbVOavTC-A7mzHABHrGh7g4,5908 +lxml/serializer.pxi,sha256=kiHyYa5EK1T_hpsXni-JSa6XuhXlU4BaESP0c-Qkbek,65753 +lxml/usedoctest.py,sha256=qRgZKQVcAZcl-zN0AIXVJnOsETUXz2nPXkxuzs1lGgk,230 +lxml/xinclude.pxi,sha256=7eBrI_OK47mmrHQ0ixbixRI8pKqQ1nwkMV-OmKUVlD4,2456 +lxml/xmlerror.pxi,sha256=K7YIB21sLWdf_2GxyUymRZ5vDr3O4OJ5vGjrklBGa6o,49854 +lxml/xmlid.pxi,sha256=5zf9oR6bsCtavGiOmilNyHqYwgG_bnrIabSd2SURtm0,6073 +lxml/xmlschema.pxi,sha256=mumNoHni5S3BQPtcmOHRd61KRaVWu4eOie2wQeB0e6E,8490 +lxml/xpath.pxi,sha256=aqW24V817dUxps4Gnc8h7Tm3QVlITKvxU5_9WgJUIFg,19132 +lxml/xslt.pxi,sha256=R2fpAf0P7GA1Dhjg0-fGVUbxCk8bBAshuoAs4ODwqlc,36023 +lxml/xsltext.pxi,sha256=TImDiAPlAezC07P7RY1N9YChA7AuKFH-G53hXdel9yc,11088 diff --git a/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/WHEEL b/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/WHEEL new file mode 100644 index 0000000..1e4a3a0 --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (72.1.0) +Root-Is-Purelib: false +Tag: cp312-cp312-manylinux_2_28_aarch64 + diff --git a/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/top_level.txt b/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/top_level.txt new file mode 100644 index 0000000..ab90481 --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml-5.3.0.dist-info/top_level.txt @@ -0,0 +1 @@ +lxml diff --git a/env/lib/python3.12/site-packages/lxml/ElementInclude.py b/env/lib/python3.12/site-packages/lxml/ElementInclude.py new file mode 100644 index 0000000..2188433 --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml/ElementInclude.py @@ -0,0 +1,244 @@ +# +# ElementTree +# $Id: ElementInclude.py 1862 2004-06-18 07:31:02Z Fredrik $ +# +# limited xinclude support for element trees +# +# history: +# 2003-08-15 fl created +# 2003-11-14 fl fixed default loader +# +# Copyright (c) 2003-2004 by Fredrik Lundh. All rights reserved. +# +# fredrik@pythonware.com +# http://www.pythonware.com +# +# -------------------------------------------------------------------- +# The ElementTree toolkit is +# +# Copyright (c) 1999-2004 by Fredrik Lundh +# +# By obtaining, using, and/or copying this software and/or its +# associated documentation, you agree that you have read, understood, +# and will comply with the following terms and conditions: +# +# Permission to use, copy, modify, and distribute this software and +# its associated documentation for any purpose and without fee is +# hereby granted, provided that the above copyright notice appears in +# all copies, and that both that copyright notice and this permission +# notice appear in supporting documentation, and that the name of +# Secret Labs AB or the author not be used in advertising or publicity +# pertaining to distribution of the software without specific, written +# prior permission. +# +# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD +# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- +# ABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR +# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY +# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +# OF THIS SOFTWARE. +# -------------------------------------------------------------------- + +""" +Limited XInclude support for the ElementTree package. + +While lxml.etree has full support for XInclude (see +`etree.ElementTree.xinclude()`), this module provides a simpler, pure +Python, ElementTree compatible implementation that supports a simple +form of custom URL resolvers. +""" + +from lxml import etree +try: + from urlparse import urljoin + from urllib2 import urlopen +except ImportError: + # Python 3 + from urllib.parse import urljoin + from urllib.request import urlopen + +XINCLUDE = "{http://www.w3.org/2001/XInclude}" + +XINCLUDE_INCLUDE = XINCLUDE + "include" +XINCLUDE_FALLBACK = XINCLUDE + "fallback" +XINCLUDE_ITER_TAG = XINCLUDE + "*" + +# For security reasons, the inclusion depth is limited to this read-only value by default. +DEFAULT_MAX_INCLUSION_DEPTH = 6 + + +## +# Fatal include error. + +class FatalIncludeError(etree.LxmlSyntaxError): + pass + + +class LimitedRecursiveIncludeError(FatalIncludeError): + pass + + +## +# ET compatible default loader. +# This loader reads an included resource from disk. +# +# @param href Resource reference. +# @param parse Parse mode. Either "xml" or "text". +# @param encoding Optional text encoding. +# @return The expanded resource. If the parse mode is "xml", this +# is an ElementTree instance. If the parse mode is "text", this +# is a Unicode string. If the loader fails, it can return None +# or raise an IOError exception. +# @throws IOError If the loader fails to load the resource. + +def default_loader(href, parse, encoding=None): + file = open(href, 'rb') + if parse == "xml": + data = etree.parse(file).getroot() + else: + data = file.read() + if not encoding: + encoding = 'utf-8' + data = data.decode(encoding) + file.close() + return data + + +## +# Default loader used by lxml.etree - handles custom resolvers properly +# + +def _lxml_default_loader(href, parse, encoding=None, parser=None): + if parse == "xml": + data = etree.parse(href, parser).getroot() + else: + if "://" in href: + f = urlopen(href) + else: + f = open(href, 'rb') + data = f.read() + f.close() + if not encoding: + encoding = 'utf-8' + data = data.decode(encoding) + return data + + +## +# Wrapper for ET compatibility - drops the parser + +def _wrap_et_loader(loader): + def load(href, parse, encoding=None, parser=None): + return loader(href, parse, encoding) + return load + + +## +# Expand XInclude directives. +# +# @param elem Root element. +# @param loader Optional resource loader. If omitted, it defaults +# to {@link default_loader}. If given, it should be a callable +# that implements the same interface as default_loader. +# @param base_url The base URL of the original file, to resolve +# relative include file references. +# @param max_depth The maximum number of recursive inclusions. +# Limited to reduce the risk of malicious content explosion. +# Pass None to disable the limitation. +# @throws LimitedRecursiveIncludeError If the {@link max_depth} was exceeded. +# @throws FatalIncludeError If the function fails to include a given +# resource, or if the tree contains malformed XInclude elements. +# @throws IOError If the function fails to load a given resource. +# @returns the node or its replacement if it was an XInclude node + +def include(elem, loader=None, base_url=None, + max_depth=DEFAULT_MAX_INCLUSION_DEPTH): + if max_depth is None: + max_depth = -1 + elif max_depth < 0: + raise ValueError("expected non-negative depth or None for 'max_depth', got %r" % max_depth) + + if base_url is None: + if hasattr(elem, 'getroot'): + tree = elem + elem = elem.getroot() + else: + tree = elem.getroottree() + if hasattr(tree, 'docinfo'): + base_url = tree.docinfo.URL + elif hasattr(elem, 'getroot'): + elem = elem.getroot() + _include(elem, loader, base_url, max_depth) + + +def _include(elem, loader=None, base_url=None, + max_depth=DEFAULT_MAX_INCLUSION_DEPTH, _parent_hrefs=None): + if loader is not None: + load_include = _wrap_et_loader(loader) + else: + load_include = _lxml_default_loader + + if _parent_hrefs is None: + _parent_hrefs = set() + + parser = elem.getroottree().parser + + include_elements = list( + elem.iter(XINCLUDE_ITER_TAG)) + + for e in include_elements: + if e.tag == XINCLUDE_INCLUDE: + # process xinclude directive + href = urljoin(base_url, e.get("href")) + parse = e.get("parse", "xml") + parent = e.getparent() + if parse == "xml": + if href in _parent_hrefs: + raise FatalIncludeError( + "recursive include of %r detected" % href + ) + if max_depth == 0: + raise LimitedRecursiveIncludeError( + "maximum xinclude depth reached when including file %s" % href) + node = load_include(href, parse, parser=parser) + if node is None: + raise FatalIncludeError( + "cannot load %r as %r" % (href, parse) + ) + node = _include(node, loader, href, max_depth - 1, {href} | _parent_hrefs) + if e.tail: + node.tail = (node.tail or "") + e.tail + if parent is None: + return node # replaced the root node! + parent.replace(e, node) + elif parse == "text": + text = load_include(href, parse, encoding=e.get("encoding")) + if text is None: + raise FatalIncludeError( + "cannot load %r as %r" % (href, parse) + ) + predecessor = e.getprevious() + if predecessor is not None: + predecessor.tail = (predecessor.tail or "") + text + elif parent is None: + return text # replaced the root node! + else: + parent.text = (parent.text or "") + text + (e.tail or "") + parent.remove(e) + else: + raise FatalIncludeError( + "unknown parse type in xi:include tag (%r)" % parse + ) + elif e.tag == XINCLUDE_FALLBACK: + parent = e.getparent() + if parent is not None and parent.tag != XINCLUDE_INCLUDE: + raise FatalIncludeError( + "xi:fallback tag must be child of xi:include (%r)" % e.tag + ) + else: + raise FatalIncludeError( + "Invalid element found in XInclude namespace (%r)" % e.tag + ) + return elem diff --git a/env/lib/python3.12/site-packages/lxml/__init__.py b/env/lib/python3.12/site-packages/lxml/__init__.py new file mode 100644 index 0000000..9f0387a --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml/__init__.py @@ -0,0 +1,22 @@ +# this is a package + +__version__ = "5.3.0" + + +def get_include(): + """ + Returns a list of header include paths (for lxml itself, libxml2 + and libxslt) needed to compile C code against lxml if it was built + with statically linked libraries. + """ + import os + lxml_path = __path__[0] + include_path = os.path.join(lxml_path, 'includes') + includes = [include_path, lxml_path] + + for name in os.listdir(include_path): + path = os.path.join(include_path, name) + if os.path.isdir(path): + includes.append(path) + + return includes diff --git a/env/lib/python3.12/site-packages/lxml/__pycache__/ElementInclude.cpython-312.pyc b/env/lib/python3.12/site-packages/lxml/__pycache__/ElementInclude.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..df5ae42e7343dae7858fdea64ff296fe34d13ab8 GIT binary patch literal 6063 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 DM{w)g literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/lxml/__pycache__/_elementpath.cpython-312.pyc b/env/lib/python3.12/site-packages/lxml/__pycache__/_elementpath.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..26f0b75e738584cdfeb990e5b33516d0304f3a1d GIT binary patch literal 10414 zcmcIKTWlLwc5~;!H${;mDUy1alJzhpOSG)4A6mzjY)cy_vGcHZ>&UWIS~Ie#NR%=& z@`ItUTszxPii)M;bWN|5jnWoa8A$;LD6rYKK$A3CY|$T5bYW_s0xp`5=1;b~fTJ$3 zJ@*cWq-1R#1v-%K+?hG|+;h)4_q;Cu&1yAKaQ(wuN6#f%DC)oPgLdijoz-7J=Q_nx zJQ}6?DVh?f5n2N(-g)|cq(1f2d^yj&hWZ(veU0j8c@A2R*Fme}_0Z~h1GEO-2(3|I z1y0Zj20Ykc$pUvP+^ujggL@g=ZM=iG!M*%43RHZFr#%*Z zXg;MBlr{M7yA=|F7T zwgX)Qubw(Hb-Hz6DsbS`nPBnrfONVw5F3zMhnV6rDIN5;!vE@eya39xFYl%(@mZdW=`T>?ju>2F|;EgYD1Nzz7^DK247+jpSff8+qlFb?wydh?Yf)q5KT|pPAOUz5uMf7*fMHDa{ zQ>Z=>uVf9qx`w*G#9~=PQ_;E!Q5X(i@;8e9$hhnu9-oZx{&2*fe?1nOSVP?box+?G zWW{l5A|#(5l*eBdBH^eY4vK=J9}Y+O(CDbbNfV=CSus2#T<#UcaZxcJzZ{W6m&ilF zr08L+EQk@s6bX$9(nM%TkQD31Fd$SXgGW0r42LF1<-r1oVxI_!QaEyM5JrpPvy-x* zaD)K3$(JVtg^@$&6rGAfVJ5|}gmo-1+ffM35z6C@4fO1V_VX zgAAXdRtN8n$2 z2+e;}kK)vSKJ{YC_ipWt+66Z2ZCmsny6yXQ?T57=(|0-!rB4o|Sy#?e1MRYX>s@@tZ`zdL64H{nEZLcSWo}pM_?u7WY>wp6bo9npuD0&o@Qv^S zv+zQ;HaKTa>Qc-K&Dl?&rK-l|+NM<5l5fjG|3|uP+ksCi(sjLQUvJjgdtXO6wq{!Q zExD@}16{v4l&1jKpN1yDdJh+|yRNn~wPq%vxvE09~ z4D^Qzn-)NE9~+LhU(Yg^t}qiUssQ z96BE!`kBY$+Mszv)FkKh0b`BriNm?ds=JljGL_pFDzcSrcP(uhOWS=0KIJTJYpWI* zan;w1-a(DJUmBXxE$SAluo2;sEV|&6*nk^C6Xp#leYZ-KbsaHc06w0Df5`(4Xlc%5 zOQPv*@k0-3nrmOtQ5Hx1=qh}p)=3NVo=6Lm0p1S1M&+eLAKP3o&jaAM6ANFk@82Yr z0DVkBE#ekH9iYW}xQSb#k+3fL{bap_57BCE(UKezHws_`57`dQcj3Q;7k@OFkFP_;{V8SESU=UU&Wpm zb`f=)67g0f^aT*%l7xXa=Z`QtypcZ>04(7h2ijqCC9H%vf=+D5pH!WHY>9wL+zH>u zF%0GwULxY$_ssVA(Z?5vu@H^I+KBf*4Ya=xeSF~^tXcz}#*R+}r$56)+}c}72R-7# z;jLLNSO%Ugx;(#5<4Jlc*ycxeyu+^L}2Ch6M0k5qWb}{{OKtL`ngq z*szr;k|2q7K;b&WqUv9-mm;1z<7;JqQh$ktIv{8-4NKoZgan;U|}pomYOGE3;2C zIjbYtF>^9kR*~$PK0nQTQRYqi+OuWBv>}KMPDkG0Jgy#Cq(nWw$>3lh;t8IDPKm(* zSMsO)KtapEzr@k3J4UNP*K8H`0oeX)vN1xigDrVP4lqS~13?CPw{9n>LaNnxr9x~J z&=sI@gXv+6H6S0C_xhQ+Gg((-q7U|5##WbeS6{Q-*TdJZBm<1P;;BbB_4TUR*<>G< zt)E!@K8*PZo=r10ELXE)BG&zJX5$cAWj3_0bFb@O*S~JSR(^^;2LZS7@x4j*9)!<$ zZ=y&y>_$%Q&sJ(XQ*>%Q$c<lY5C}&R0(vA=pD`qK z3BxcAIaCpv1l(eyjQK*Y5xgrlTznbeAiU6$0|`^0S|)u$4;0u+aF$~Vq*|cGPH1`J zJ7cdZVlPrZtrramJz0T6n+={2U!gt0jAT8M33^UK1qVGBp<+b)Dt5?))JK~~<1$Z2 zA)21yra7K@8T_sI6!Z*ayjeDCY~kG+{1sI4wzBwE!^?X}>Qy?{TLPugR$-*p(c~+Y zyhc+5G--xQaIoTPZN(+C*A($W;)HVoazWx`fyAjudsPumOPK<-$3!f4;xO`A(`g7j z$UEFb>E`-1)coZi;aWp&QM$Wrb031O)4Dhn;;%ntpNerRSSMEu<*k!%opri}M7)%B zc8PgexV(wyz^NUHN8!$gheEQj(Js9Um?Rt;=3`P%?E{LoZb`DaipuMI=JuoxU3)T9 zu|4Ojz4r8d4!)>H>1w5Fl%i~R+mp?kFZ>u@I9+0xzg2)f%@8F;v!258Nq}B3&LVa^ z0k&wA#Y6By;lQI$3V8<>kC%jm-^_#sKp?e3^EFJE@6A>O9%F;A5&cr%h@!f-0|R_( z!{&^5EQ+Z48Vz7HU4)DV_9WQCycVdL%IubPx}ZkHCCpIJ;JRGkyD{Q6X2hQLj9{!j z&<1bKU2jXq+p^G^^#(yj?7n0VaO2IVmz-YE3%l<=1At!<{$FiqMp35y$>u1tQ8{p^ zN_=(-I_s39`&;q^;^irtM@8Z| z`>@0OfLdWk#={ZCfTJ}TvaSGE)I9|Wgxz8<07}@KLjLs~weKJC(C47ZYhQK!1B$iR zClBXp>h9LGXKLCPq-;&+1B!9gr%ETrvQfrXXc>lf!P zrsQ|0ZcN?$akese`+M2SJ-OQYn_Nq>i5xHJKU0fAT8(U2rZ zos$u1a$;f}6p8l_Pez91@Ob1)@TyeQUHS=zLCHaakL#pX*ghY_h;>o}{rgi+MUxLs z+i}nfjzV-KUrsGtFYR97B_o2=!03+By3JEbR@IN(NCcQL`sB z_gb*#u$lG(24GKElF4=>`$;h!!8}w8hb8+>?83ktF2hI)NBFGmx_m9>+p5emAd<$Q zDY5w`tCyHMT)WG914&)3!kgTmb5^g=I=lCaYX7|ZZru}^x+iX*`1Q#TPiE`(XR8k+ zdvlf5sUOb8=4D8;K(l^fdUW3os7UP$_A;`2mz*A4Ec5g}mT?*w~n^d}Yu zx}VsLJyqN%9vb(32=}Y-`>0*ZQwypGWmsKkVghnjg@(#2Hx`nI&MQnfB9kOeG5rX8 zL6vRBVueC6O5t;nkUR-vj0I$bRpJSth`7)aLxw{mFl10lf=jI?*3@ zYC(bjCr+&xD0@ZxNUq!gjmf-J?!2ahf~L7VX`kMclx7a(EOz|#)S|iip2bN%%ykovDWm(`dp0=E`GUZCWa>FxUH-9iyn|3xQdUFPQ@`tI8xsz`W&R1j%4GAN> zxohxb3?3Esj-h_VMVT!tJ_RcSbT7xms$c;S1C zwLAXF@z0*$cs>sN?xpmfo&48bBb`Q{6Gw3*>pLlH5buZ1k>p2-(XfSK1xOnp)Cq%cF-| zDGyP07>x_X`?J0SY3Bi~_T6ZWl!ZPw*n8Wl&)Z#n3=`0)p){^ptfBTO-46f3;2Ju$ z?obIUA~sg5*ks`v7Y{igWRxUG6ghZiNyZ3Yh7lMfBwpnqVuF0LAC7kLy2;m%=W zMY4~|lFAXTD3Q$ZCQWiw0(Fyqr=+431I#MSFe(~P89PyO;d47MnuQ!ndk?v4zI(XP z)6A!Kj{*c)0~2YCF`HrkddwOg?XKbiBX7{Ch>@)HI5x>RaUd7uK*S_RSj{BMka??D zaioS5a>&DAC7i`CBe-U?;nLO$$9a(V^QMBF%(7hr<;@yS$P+8Hw=yndlPd;%jL{!h z-p{)z4SI@&LpOHBt-%%VQ(UA9R)(wEz%B>nL#e+4dk?4&SP^KTjrRfcqjO%&if@8cgtb4>+a7<6{%yQNgdC zVvLLa{4t(*0Dz9Ip`cn?C0TJ(&)C`UxykWK35u)aAkSYo$b$%K{6d%)_%46c;J+Y< z5*>OYVDg===L273jzC> zgk!7x3Bj6i-#G!!O(w+s(dNOklW@E9G40dW2~IWa20@e>IsAt1sl zR&;|yp`r7Fhzo!UGb%(BZfH~piE4;|*&>otOA;R_Wj)%dDhV4D!{8u3TN)fxtjFc? zi6ewJ5QvIDBn?2c|v2B@udO^-KJn@m~lJ=raLv)-dIICYM066&9oe#-X~RxTP3PJ@n?3#%1ac4);G;fQft+4E@GRt+eO?aPjuR3z(YOIz9igRy;Wh2@M6s1RKHff}d0FnuZ2IrHNs zPt8qzlKUz@&aq^%V|d5fN(Bz#+?2QOwZ6pO3>=i3E8@>dxRUf~rQx8T`qXbcxSjd5 z6+!zMWjSo6KC`+GH!`0!AlwG@hdZdxI$XUv=5uRZZ;<*t=;~vc-x}O~Td3b|G4{1G zzimO#4q;=ZUD%Cd%d>hCn(I_CG{CMX#(aP@X9T}K$-5;mju3EYMj3u(!a}(Qoa>Yh z%&ra$FK8{krnp%P3x@bOg^LQq@CK4!tlJ_^Jpy`hEAET9DQqV30)DK=O#?LKKrX*! z)Ez@A5%@P3B90w8v4z4ln>e*>+d6-Eq2=SFcWf`lp91wrK9OvG<8-_)=fFqJoIjyk zvR9^b*J`JASj7I46S`7{;N*`m#Ov&^8+43D( zb4Qx(P>*p6!6(2K1cr;vrKFN@iixqH!+BxgUqr>p&nsfwWqcnj L!!i!l5T^Vu)P)D_ literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/lxml/__pycache__/builder.cpython-312.pyc b/env/lib/python3.12/site-packages/lxml/__pycache__/builder.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9e3b3a0a198f6da0442e79d5b7b5d08a9156bf7a GIT binary patch literal 7573 zcmbtZU2GfImA;o8{!5{LW5u?dD@roSMkeF9**X%ML~Vgv8P z?m2fj{ITS$vmHoxX6`-b+;h**ckUhjTWzhI!1e3vXD2>-nUFu?i+Ksfhn=6m!wN}| z5t5(@OPXdZBUVZz>!i~pE#F6MKx0kYGma4lB`zX4dF!FXLQax|@IFb{KDHS2BQ+Kx z)qGrJ9;uzPv=hnIK@=NEcaJzPkZXr#$wli0GE1vQJTMY4M}qcCZ@7n(5*r;I7#(E; zX(=Pg8XFhmT2`53<5`7GNV24eT1uW^=g*#DiEMltY1EMWPdNF|9jZHWqN1h5biAky zzZLZ)I{|oIArcv(Uj9xGGq;4O;u0CFsy=ib|Xnr(oWA4I!ph zMNL4bqJAN_o5A(haym67F%6cHRT3##1kFvJB4rmJ9WWW0m`-PBRW_HMW?GizL{()e znG4Hg6%-}PY;s!Fn8-A7f{Aj1so4z3&uOWwET);LX-aBrT9ecsE+q~OVp^@1rAZe- z0`O)*H-$-tb=44KXmUQ9Qkj@YNC_sYOiFPw-Vck^#8jHARGzDgOEcv#5mZgds-$Qr zK;vsvQWHsysky8M)0{({)eNkb3z9C1nOs^@ySoj;q4A>8C>vL@8J517NwZWYmsK<- zX^JGFN&~~3aTj4|Y&w-rz?zB-1JwcthC^Cb1q;a&fq{SzOy~;+OOpH%=mLmlF<)Q>VvpeI;e_0X(;Bl4!)B zEKXp)0I9hYZjZOY^D0<14FMufs7BzL`N$)zI(BE3l*ZFH1muBGC=`S|hM>?SF~J39 z$1%ABei-(5F@xag0H`uP7xbmv#X0^GUvU8gA;TsRFWl>Yp&ZotP&sU-0F-2@l=EF&nk<1|66g8o}F zh2q&vCM$!NtES*HV5au66Ko(PmflbC_f+ZqE&e`MPT7Ps⁣uo;w$q33ivrP*gih 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/lxml/__pycache__/cssselect.cpython-312.pyc b/env/lib/python3.12/site-packages/lxml/__pycache__/cssselect.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2347d568a8c6ffbac902c0ffa10b3cabadedb8f5 GIT binary patch literal 4554 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/lxml/__pycache__/pyclasslookup.cpython-312.pyc b/env/lib/python3.12/site-packages/lxml/__pycache__/pyclasslookup.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6f3f4e9a659dafc728be4c50300edc7312487e91 GIT binary patch literal 235 zcmX@j%ge<81iPmArpEy3#~=<2FhLog1%Qm{3@HpLj5!Rsj8Tk?43$ip%r8OGnvAz3 z0xC-~^7CACQgc)DN}O{Ni;I2o^Rr6}{4|+vaphFx=IEuC6s4vXF$2}FWcUoy_RC8@ zBR@A)KP5jeJtJQ~FSVpNHCaD3uS`EDGfBSyY@o58p^<)ZW=X1UL1J=tVtQ(^KFBbj wY%<7>9IzdF1(m-zY;yBcN^?@}ia3BqGXilj$WtGf85tSBu`w_j6tMxh0BDv#KmY&$ literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/lxml/__pycache__/sax.cpython-312.pyc b/env/lib/python3.12/site-packages/lxml/__pycache__/sax.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0bd85b499f70ce5a5db070bd52374fb6835d27cd GIT binary patch literal 12380 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/lxml/__pycache__/usedoctest.cpython-312.pyc b/env/lib/python3.12/site-packages/lxml/__pycache__/usedoctest.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fb387ae2f32e86fc727a57a0d697231f3fd1b920 GIT binary patch literal 468 zcmY+BKT88K6u^_~Rm;(Ka_eBgse>2)Y(+W=F4jc^>5`t8XM38v9G6skPJRGK!PQmt z6ZjRJToi5+1i?)yE}hJIEyXwF{mn1$y*$-w4l?q1-RXZA{hm8BDNT)W%NRF^qb}l@ zTLOnx*TTp`V4Wmz}Ouc z=hVp#9mo(Umr;KpX#`qRPss}RKbk{ei3N)<7o_}gaRy4=c`G{_uPAXeP rAMK=SxcN5KvN^s=7~^lNg6*FrgvlFfT-IMv;~6z>M=xkC$v^WKzLAAE literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/lxml/_elementpath.cpython-312-aarch64-linux-gnu.so b/env/lib/python3.12/site-packages/lxml/_elementpath.cpython-312-aarch64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..7544e83d04bd4886adc626abf63eea47bce228a4 GIT binary patch literal 208960 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/lxml/_elementpath.py b/env/lib/python3.12/site-packages/lxml/_elementpath.py new file mode 100644 index 0000000..6233a63 --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml/_elementpath.py @@ -0,0 +1,341 @@ +# cython: language_level=2 + +# +# ElementTree +# $Id: ElementPath.py 3375 2008-02-13 08:05:08Z fredrik $ +# +# limited xpath support for element trees +# +# history: +# 2003-05-23 fl created +# 2003-05-28 fl added support for // etc +# 2003-08-27 fl fixed parsing of periods in element names +# 2007-09-10 fl new selection engine +# 2007-09-12 fl fixed parent selector +# 2007-09-13 fl added iterfind; changed findall to return a list +# 2007-11-30 fl added namespaces support +# 2009-10-30 fl added child element value filter +# +# Copyright (c) 2003-2009 by Fredrik Lundh. All rights reserved. +# +# fredrik@pythonware.com +# http://www.pythonware.com +# +# -------------------------------------------------------------------- +# The ElementTree toolkit is +# +# Copyright (c) 1999-2009 by Fredrik Lundh +# +# By obtaining, using, and/or copying this software and/or its +# associated documentation, you agree that you have read, understood, +# and will comply with the following terms and conditions: +# +# Permission to use, copy, modify, and distribute this software and +# its associated documentation for any purpose and without fee is +# hereby granted, provided that the above copyright notice appears in +# all copies, and that both that copyright notice and this permission +# notice appear in supporting documentation, and that the name of +# Secret Labs AB or the author not be used in advertising or publicity +# pertaining to distribution of the software without specific, written +# prior permission. +# +# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD +# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- +# ABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR +# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY +# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +# OF THIS SOFTWARE. +# -------------------------------------------------------------------- + +## +# Implementation module for XPath support. There's usually no reason +# to import this module directly; the ElementTree does this for +# you, if needed. +## + + +import re + +xpath_tokenizer_re = re.compile( + "(" + "'[^']*'|\"[^\"]*\"|" + "::|" + "//?|" + r"\.\.|" + r"\(\)|" + r"[/.*:\[\]\(\)@=])|" + r"((?:\{[^}]+\})?[^/\[\]\(\)@=\s]+)|" + r"\s+" + ) + +def xpath_tokenizer(pattern, namespaces=None, with_prefixes=True): + # ElementTree uses '', lxml used None originally. + default_namespace = (namespaces.get(None) or namespaces.get('')) if namespaces else None + parsing_attribute = False + for token in xpath_tokenizer_re.findall(pattern): + ttype, tag = token + if tag and tag[0] != "{": + if ":" in tag and with_prefixes: + prefix, uri = tag.split(":", 1) + try: + if not namespaces: + raise KeyError + yield ttype, "{%s}%s" % (namespaces[prefix], uri) + except KeyError: + raise SyntaxError("prefix %r not found in prefix map" % prefix) + elif default_namespace and not parsing_attribute: + yield ttype, "{%s}%s" % (default_namespace, tag) + else: + yield token + parsing_attribute = False + else: + yield token + parsing_attribute = ttype == '@' + + +def prepare_child(next, token): + tag = token[1] + def select(result): + for elem in result: + yield from elem.iterchildren(tag) + return select + +def prepare_star(next, token): + def select(result): + for elem in result: + yield from elem.iterchildren('*') + return select + +def prepare_self(next, token): + def select(result): + return result + return select + +def prepare_descendant(next, token): + token = next() + if token[0] == "*": + tag = "*" + elif not token[0]: + tag = token[1] + else: + raise SyntaxError("invalid descendant") + def select(result): + for elem in result: + yield from elem.iterdescendants(tag) + return select + +def prepare_parent(next, token): + def select(result): + for elem in result: + parent = elem.getparent() + if parent is not None: + yield parent + return select + +def prepare_predicate(next, token): + # FIXME: replace with real parser!!! refs: + # http://effbot.org/zone/simple-iterator-parser.htm + # http://javascript.crockford.com/tdop/tdop.html + signature = '' + predicate = [] + while 1: + token = next() + if token[0] == "]": + break + if token == ('', ''): + # ignore whitespace + continue + if token[0] and token[0][:1] in "'\"": + token = "'", token[0][1:-1] + signature += token[0] or "-" + predicate.append(token[1]) + + # use signature to determine predicate type + if signature == "@-": + # [@attribute] predicate + key = predicate[1] + def select(result): + for elem in result: + if elem.get(key) is not None: + yield elem + return select + if signature == "@-='": + # [@attribute='value'] + key = predicate[1] + value = predicate[-1] + def select(result): + for elem in result: + if elem.get(key) == value: + yield elem + return select + if signature == "-" and not re.match(r"-?\d+$", predicate[0]): + # [tag] + tag = predicate[0] + def select(result): + for elem in result: + for _ in elem.iterchildren(tag): + yield elem + break + return select + if signature == ".='" or (signature == "-='" and not re.match(r"-?\d+$", predicate[0])): + # [.='value'] or [tag='value'] + tag = predicate[0] + value = predicate[-1] + if tag: + def select(result): + for elem in result: + for e in elem.iterchildren(tag): + if "".join(e.itertext()) == value: + yield elem + break + else: + def select(result): + for elem in result: + if "".join(elem.itertext()) == value: + yield elem + return select + if signature == "-" or signature == "-()" or signature == "-()-": + # [index] or [last()] or [last()-index] + if signature == "-": + # [index] + index = int(predicate[0]) - 1 + if index < 0: + if index == -1: + raise SyntaxError( + "indices in path predicates are 1-based, not 0-based") + else: + raise SyntaxError("path index >= 1 expected") + else: + if predicate[0] != "last": + raise SyntaxError("unsupported function") + if signature == "-()-": + try: + index = int(predicate[2]) - 1 + except ValueError: + raise SyntaxError("unsupported expression") + else: + index = -1 + def select(result): + for elem in result: + parent = elem.getparent() + if parent is None: + continue + try: + # FIXME: what if the selector is "*" ? + elems = list(parent.iterchildren(elem.tag)) + if elems[index] is elem: + yield elem + except IndexError: + pass + return select + raise SyntaxError("invalid predicate") + +ops = { + "": prepare_child, + "*": prepare_star, + ".": prepare_self, + "..": prepare_parent, + "//": prepare_descendant, + "[": prepare_predicate, +} + + +# -------------------------------------------------------------------- + +_cache = {} + + +def _build_path_iterator(path, namespaces, with_prefixes=True): + """compile selector pattern""" + if path[-1:] == "/": + path += "*" # implicit all (FIXME: keep this?) + + cache_key = (path,) + if namespaces: + # lxml originally used None for the default namespace but ElementTree uses the + # more convenient (all-strings-dict) empty string, so we support both here, + # preferring the more convenient '', as long as they aren't ambiguous. + if None in namespaces: + if '' in namespaces and namespaces[None] != namespaces['']: + raise ValueError("Ambiguous default namespace provided: %r versus %r" % ( + namespaces[None], namespaces[''])) + cache_key += (namespaces[None],) + tuple(sorted( + item for item in namespaces.items() if item[0] is not None)) + else: + cache_key += tuple(sorted(namespaces.items())) + + try: + return _cache[cache_key] + except KeyError: + pass + if len(_cache) > 100: + _cache.clear() + + if path[:1] == "/": + raise SyntaxError("cannot use absolute path on element") + stream = iter(xpath_tokenizer(path, namespaces, with_prefixes=with_prefixes)) + try: + _next = stream.next + except AttributeError: + # Python 3 + _next = stream.__next__ + try: + token = _next() + except StopIteration: + raise SyntaxError("empty path expression") + selector = [] + while 1: + try: + selector.append(ops[token[0]](_next, token)) + except StopIteration: + raise SyntaxError("invalid path") + try: + token = _next() + if token[0] == "/": + token = _next() + except StopIteration: + break + _cache[cache_key] = selector + return selector + + +## +# Iterate over the matching nodes + +def iterfind(elem, path, namespaces=None, with_prefixes=True): + selector = _build_path_iterator(path, namespaces, with_prefixes=with_prefixes) + result = iter((elem,)) + for select in selector: + result = select(result) + return result + + +## +# Find first matching object. + +def find(elem, path, namespaces=None, with_prefixes=True): + it = iterfind(elem, path, namespaces, with_prefixes=with_prefixes) + try: + return next(it) + except StopIteration: + return None + + +## +# Find all matching objects. + +def findall(elem, path, namespaces=None, with_prefixes=True): + return list(iterfind(elem, path, namespaces)) + + +## +# Find text for first matching object. + +def findtext(elem, path, default=None, namespaces=None, with_prefixes=True): + el = find(elem, path, namespaces, with_prefixes=with_prefixes) + if el is None: + return default + else: + return el.text or '' diff --git a/env/lib/python3.12/site-packages/lxml/apihelpers.pxi b/env/lib/python3.12/site-packages/lxml/apihelpers.pxi new file mode 100644 index 0000000..fb60af7 --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml/apihelpers.pxi @@ -0,0 +1,1793 @@ +# Private/public helper functions for API functions + +from lxml.includes cimport uri + + +cdef void displayNode(xmlNode* c_node, indent) noexcept: + # to help with debugging + cdef xmlNode* c_child + try: + print(indent * ' ', c_node) + c_child = c_node.children + while c_child is not NULL: + displayNode(c_child, indent + 1) + c_child = c_child.next + finally: + return # swallow any exceptions + +cdef inline bint _isHtmlDocument(_Element element) except -1: + cdef xmlNode* c_node = element._c_node + return ( + c_node is not NULL and c_node.doc is not NULL and + c_node.doc.properties & tree.XML_DOC_HTML != 0 + ) + +cdef inline int _assertValidNode(_Element element) except -1: + assert element._c_node is not NULL, "invalid Element proxy at %s" % id(element) + +cdef inline int _assertValidDoc(_Document doc) except -1: + assert doc._c_doc is not NULL, "invalid Document proxy at %s" % id(doc) + +cdef _Document _documentOrRaise(object input): + """Call this to get the document of a _Document, _ElementTree or _Element + object, or to raise an exception if it can't be determined. + + Should be used in all API functions for consistency. + """ + cdef _Document doc + if isinstance(input, _ElementTree): + if (<_ElementTree>input)._context_node is not None: + doc = (<_ElementTree>input)._context_node._doc + else: + doc = None + elif isinstance(input, _Element): + doc = (<_Element>input)._doc + elif isinstance(input, _Document): + doc = <_Document>input + else: + raise TypeError, f"Invalid input object: {python._fqtypename(input).decode('utf8')}" + if doc is None: + raise ValueError, f"Input object has no document: {python._fqtypename(input).decode('utf8')}" + _assertValidDoc(doc) + return doc + +cdef _Element _rootNodeOrRaise(object input): + """Call this to get the root node of a _Document, _ElementTree or + _Element object, or to raise an exception if it can't be determined. + + Should be used in all API functions for consistency. + """ + cdef _Element node + if isinstance(input, _ElementTree): + node = (<_ElementTree>input)._context_node + elif isinstance(input, _Element): + node = <_Element>input + elif isinstance(input, _Document): + node = (<_Document>input).getroot() + else: + raise TypeError, f"Invalid input object: {python._fqtypename(input).decode('utf8')}" + if (node is None or not node._c_node or + node._c_node.type != tree.XML_ELEMENT_NODE): + raise ValueError, f"Input object is not an XML element: {python._fqtypename(input).decode('utf8')}" + _assertValidNode(node) + return node + +cdef bint _isAncestorOrSame(xmlNode* c_ancestor, xmlNode* c_node) noexcept: + while c_node: + if c_node is c_ancestor: + return True + c_node = c_node.parent + return False + +cdef _Element _makeElement(tag, xmlDoc* c_doc, _Document doc, + _BaseParser parser, text, tail, attrib, nsmap, + dict extra_attrs): + """Create a new element and initialize text content, namespaces and + attributes. + + This helper function will reuse as much of the existing document as + possible: + + If 'parser' is None, the parser will be inherited from 'doc' or the + default parser will be used. + + If 'doc' is None, 'c_doc' is used to create a new _Document and the new + element is made its root node. + + If 'c_doc' is also NULL, a new xmlDoc will be created. + """ + cdef xmlNode* c_node + if doc is not None: + c_doc = doc._c_doc + ns_utf, name_utf = _getNsTag(tag) + if parser is not None and parser._for_html: + _htmlTagValidOrRaise(name_utf) + if c_doc is NULL: + c_doc = _newHTMLDoc() + else: + _tagValidOrRaise(name_utf) + if c_doc is NULL: + c_doc = _newXMLDoc() + c_node = _createElement(c_doc, name_utf) + if c_node is NULL: + if doc is None and c_doc is not NULL: + tree.xmlFreeDoc(c_doc) + raise MemoryError() + try: + if doc is None: + tree.xmlDocSetRootElement(c_doc, c_node) + doc = _documentFactory(c_doc, parser) + if text is not None: + _setNodeText(c_node, text) + if tail is not None: + _setTailText(c_node, tail) + # add namespaces to node if necessary + _setNodeNamespaces(c_node, doc, ns_utf, nsmap) + _initNodeAttributes(c_node, doc, attrib, extra_attrs) + return _elementFactory(doc, c_node) + except: + # free allocated c_node/c_doc unless Python does it for us + if c_node.doc is not c_doc: + # node not yet in document => will not be freed by document + if tail is not None: + _removeText(c_node.next) # tail + tree.xmlFreeNode(c_node) + if doc is None: + # c_doc will not be freed by doc + tree.xmlFreeDoc(c_doc) + raise + +cdef int _initNewElement(_Element element, bint is_html, name_utf, ns_utf, + _BaseParser parser, attrib, nsmap, dict extra_attrs) except -1: + """Initialise a new Element object. + + This is used when users instantiate a Python Element subclass + directly, without it being mapped to an existing XML node. + """ + cdef xmlDoc* c_doc + cdef xmlNode* c_node + cdef _Document doc + if is_html: + _htmlTagValidOrRaise(name_utf) + c_doc = _newHTMLDoc() + else: + _tagValidOrRaise(name_utf) + c_doc = _newXMLDoc() + c_node = _createElement(c_doc, name_utf) + if c_node is NULL: + if c_doc is not NULL: + tree.xmlFreeDoc(c_doc) + raise MemoryError() + tree.xmlDocSetRootElement(c_doc, c_node) + doc = _documentFactory(c_doc, parser) + # add namespaces to node if necessary + _setNodeNamespaces(c_node, doc, ns_utf, nsmap) + _initNodeAttributes(c_node, doc, attrib, extra_attrs) + _registerProxy(element, doc, c_node) + element._init() + return 0 + +cdef _Element _makeSubElement(_Element parent, tag, text, tail, + attrib, nsmap, dict extra_attrs): + """Create a new child element and initialize text content, namespaces and + attributes. + """ + cdef xmlNode* c_node + cdef xmlDoc* c_doc + if parent is None or parent._doc is None: + return None + _assertValidNode(parent) + ns_utf, name_utf = _getNsTag(tag) + c_doc = parent._doc._c_doc + + if parent._doc._parser is not None and parent._doc._parser._for_html: + _htmlTagValidOrRaise(name_utf) + else: + _tagValidOrRaise(name_utf) + + c_node = _createElement(c_doc, name_utf) + if c_node is NULL: + raise MemoryError() + tree.xmlAddChild(parent._c_node, c_node) + + try: + if text is not None: + _setNodeText(c_node, text) + if tail is not None: + _setTailText(c_node, tail) + + # add namespaces to node if necessary + _setNodeNamespaces(c_node, parent._doc, ns_utf, nsmap) + _initNodeAttributes(c_node, parent._doc, attrib, extra_attrs) + return _elementFactory(parent._doc, c_node) + except: + # make sure we clean up in case of an error + _removeNode(parent._doc, c_node) + raise + + +cdef int _setNodeNamespaces(xmlNode* c_node, _Document doc, + object node_ns_utf, object nsmap) except -1: + """Lookup current namespace prefixes, then set namespace structure for + node (if 'node_ns_utf' was provided) and register new ns-prefix mappings. + + 'node_ns_utf' should only be passed for a newly created node. + """ + cdef xmlNs* c_ns + cdef list nsdefs + + if nsmap: + for prefix, href in _iter_nsmap(nsmap): + href_utf = _utf8(href) + _uriValidOrRaise(href_utf) + c_href = _xcstr(href_utf) + if prefix is not None: + prefix_utf = _utf8(prefix) + _prefixValidOrRaise(prefix_utf) + c_prefix = _xcstr(prefix_utf) + else: + c_prefix = NULL + # add namespace with prefix if it is not already known + c_ns = tree.xmlSearchNs(doc._c_doc, c_node, c_prefix) + if c_ns is NULL or \ + c_ns.href is NULL or \ + tree.xmlStrcmp(c_ns.href, c_href) != 0: + c_ns = tree.xmlNewNs(c_node, c_href, c_prefix) + if href_utf == node_ns_utf: + tree.xmlSetNs(c_node, c_ns) + node_ns_utf = None + + if node_ns_utf is not None: + _uriValidOrRaise(node_ns_utf) + doc._setNodeNs(c_node, _xcstr(node_ns_utf)) + return 0 + + +cdef dict _build_nsmap(xmlNode* c_node): + """ + Namespace prefix->URI mapping known in the context of this Element. + This includes all namespace declarations of the parents. + """ + cdef xmlNs* c_ns + nsmap = {} + while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE: + c_ns = c_node.nsDef + while c_ns is not NULL: + if c_ns.prefix or c_ns.href: + prefix = funicodeOrNone(c_ns.prefix) + if prefix not in nsmap: + nsmap[prefix] = funicodeOrNone(c_ns.href) + c_ns = c_ns.next + c_node = c_node.parent + return nsmap + + +cdef _iter_nsmap(nsmap): + """ + Create a reproducibly ordered iterable from an nsmap mapping. + Tries to preserve an existing order and sorts if it assumes no order. + + The difference to _iter_attrib() is that None doesn't sort with strings + in Py3.x. + """ + if isinstance(nsmap, dict): + # dicts are insertion-ordered in Py3.6+ => keep the user provided order. + return nsmap.items() + if len(nsmap) <= 1: + return nsmap.items() + # nsmap will usually be a plain unordered dict => avoid type checking overhead + if type(nsmap) is not dict and isinstance(nsmap, OrderedDict): + return nsmap.items() # keep existing order + if None not in nsmap: + return sorted(nsmap.items()) + + # Move the default namespace to the end. This makes sure libxml2 + # prefers a prefix if the ns is defined redundantly on the same + # element. That way, users can work around a problem themselves + # where default namespace attributes on non-default namespaced + # elements serialise without prefix (i.e. into the non-default + # namespace). + default_ns = nsmap[None] + nsdefs = [(k, v) for k, v in nsmap.items() if k is not None] + nsdefs.sort() + nsdefs.append((None, default_ns)) + return nsdefs + + +cdef _iter_attrib(attrib): + """ + Create a reproducibly ordered iterable from an attrib mapping. + Tries to preserve an existing order and sorts if it assumes no order. + """ + # dicts are insertion-ordered in Py3.6+ => keep the user provided order. + if isinstance(attrib, (dict, _Attrib, OrderedDict)): + return attrib.items() + # assume it's an unordered mapping of some kind + return sorted(attrib.items()) + + +cdef _initNodeAttributes(xmlNode* c_node, _Document doc, attrib, dict extra): + """Initialise the attributes of an element node. + """ + cdef bint is_html + cdef xmlNs* c_ns + if attrib is not None and not hasattr(attrib, 'items'): + raise TypeError, f"Invalid attribute dictionary: {python._fqtypename(attrib).decode('utf8')}" + if not attrib and not extra: + return # nothing to do + is_html = doc._parser._for_html + seen = set() + if extra: + for name, value in extra.items(): + _addAttributeToNode(c_node, doc, is_html, name, value, seen) + if attrib: + for name, value in _iter_attrib(attrib): + _addAttributeToNode(c_node, doc, is_html, name, value, seen) + + +cdef int _addAttributeToNode(xmlNode* c_node, _Document doc, bint is_html, + name, value, set seen_tags) except -1: + ns_utf, name_utf = tag = _getNsTag(name) + if tag in seen_tags: + return 0 + seen_tags.add(tag) + if not is_html: + _attributeValidOrRaise(name_utf) + value_utf = _utf8(value) + if ns_utf is None: + tree.xmlNewProp(c_node, _xcstr(name_utf), _xcstr(value_utf)) + else: + _uriValidOrRaise(ns_utf) + c_ns = doc._findOrBuildNodeNs(c_node, _xcstr(ns_utf), NULL, 1) + tree.xmlNewNsProp(c_node, c_ns, + _xcstr(name_utf), _xcstr(value_utf)) + return 0 + + +ctypedef struct _ns_node_ref: + xmlNs* ns + xmlNode* node + + +cdef int _collectNsDefs(xmlNode* c_element, _ns_node_ref **_c_ns_list, + size_t *_c_ns_list_len, size_t *_c_ns_list_size) except -1: + c_ns_list = _c_ns_list[0] + cdef size_t c_ns_list_len = _c_ns_list_len[0] + cdef size_t c_ns_list_size = _c_ns_list_size[0] + + c_nsdef = c_element.nsDef + while c_nsdef is not NULL: + if c_ns_list_len >= c_ns_list_size: + if c_ns_list is NULL: + c_ns_list_size = 20 + else: + c_ns_list_size *= 2 + c_nsref_ptr = <_ns_node_ref*> python.lxml_realloc( + c_ns_list, c_ns_list_size, sizeof(_ns_node_ref)) + if c_nsref_ptr is NULL: + if c_ns_list is not NULL: + python.lxml_free(c_ns_list) + _c_ns_list[0] = NULL + raise MemoryError() + c_ns_list = c_nsref_ptr + + c_ns_list[c_ns_list_len] = _ns_node_ref(c_nsdef, c_element) + c_ns_list_len += 1 + c_nsdef = c_nsdef.next + + _c_ns_list_size[0] = c_ns_list_size + _c_ns_list_len[0] = c_ns_list_len + _c_ns_list[0] = c_ns_list + + +cdef int _removeUnusedNamespaceDeclarations(xmlNode* c_element, set prefixes_to_keep) except -1: + """Remove any namespace declarations from a subtree that are not used by + any of its elements (or attributes). + + If a 'prefixes_to_keep' is provided, it must be a set of prefixes. + Any corresponding namespace mappings will not be removed as part of the cleanup. + """ + cdef xmlNode* c_node + cdef _ns_node_ref* c_ns_list = NULL + cdef size_t c_ns_list_size = 0 + cdef size_t c_ns_list_len = 0 + cdef size_t i + + if c_element.parent and c_element.parent.type == tree.XML_DOCUMENT_NODE: + # include declarations on the document node + _collectNsDefs(c_element.parent, &c_ns_list, &c_ns_list_len, &c_ns_list_size) + + tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_element, c_element, 1) + # collect all new namespace declarations into the ns list + if c_element.nsDef: + _collectNsDefs(c_element, &c_ns_list, &c_ns_list_len, &c_ns_list_size) + + # remove all namespace declarations from the list that are referenced + if c_ns_list_len and c_element.type == tree.XML_ELEMENT_NODE: + c_node = c_element + while c_node and c_ns_list_len: + if c_node.ns: + for i in range(c_ns_list_len): + if c_node.ns is c_ns_list[i].ns: + c_ns_list_len -= 1 + c_ns_list[i] = c_ns_list[c_ns_list_len] + #c_ns_list[c_ns_list_len] = _ns_node_ref(NULL, NULL) + break + if c_node is c_element: + # continue with attributes + c_node = c_element.properties + else: + c_node = c_node.next + tree.END_FOR_EACH_ELEMENT_FROM(c_element) + + if c_ns_list is NULL: + return 0 + + # free all namespace declarations that remained in the list, + # except for those we should keep explicitly + cdef xmlNs* c_nsdef + for i in range(c_ns_list_len): + if prefixes_to_keep is not None: + if c_ns_list[i].ns.prefix and c_ns_list[i].ns.prefix in prefixes_to_keep: + continue + c_node = c_ns_list[i].node + c_nsdef = c_node.nsDef + if c_nsdef is c_ns_list[i].ns: + c_node.nsDef = c_node.nsDef.next + else: + while c_nsdef.next is not c_ns_list[i].ns: + c_nsdef = c_nsdef.next + c_nsdef.next = c_nsdef.next.next + tree.xmlFreeNs(c_ns_list[i].ns) + + if c_ns_list is not NULL: + python.lxml_free(c_ns_list) + return 0 + +cdef xmlNs* _searchNsByHref(xmlNode* c_node, const_xmlChar* c_href, bint is_attribute) noexcept: + """Search a namespace declaration that covers a node (element or + attribute). + + For attributes, try to find a prefixed namespace declaration + instead of the default namespaces. This helps in supporting + round-trips for attributes on elements with a different namespace. + """ + cdef xmlNs* c_ns + cdef xmlNs* c_default_ns = NULL + cdef xmlNode* c_element + if c_href is NULL or c_node is NULL or c_node.type == tree.XML_ENTITY_REF_NODE: + return NULL + if tree.xmlStrcmp(c_href, tree.XML_XML_NAMESPACE) == 0: + # no special cases here, let libxml2 handle this + return tree.xmlSearchNsByHref(c_node.doc, c_node, c_href) + if c_node.type == tree.XML_ATTRIBUTE_NODE: + is_attribute = 1 + while c_node is not NULL and c_node.type != tree.XML_ELEMENT_NODE: + c_node = c_node.parent + c_element = c_node + while c_node is not NULL: + if c_node.type == tree.XML_ELEMENT_NODE: + c_ns = c_node.nsDef + while c_ns is not NULL: + if c_ns.href is not NULL and tree.xmlStrcmp(c_href, c_ns.href) == 0: + if c_ns.prefix is NULL and is_attribute: + # for attributes, continue searching a named + # prefix, but keep the first default namespace + # declaration that we found + if c_default_ns is NULL: + c_default_ns = c_ns + elif tree.xmlSearchNs( + c_element.doc, c_element, c_ns.prefix) is c_ns: + # start node is in namespace scope => found! + return c_ns + c_ns = c_ns.next + if c_node is not c_element and c_node.ns is not NULL: + # optimise: the node may have the namespace itself + c_ns = c_node.ns + if c_ns.href is not NULL and tree.xmlStrcmp(c_href, c_ns.href) == 0: + if c_ns.prefix is NULL and is_attribute: + # for attributes, continue searching a named + # prefix, but keep the first default namespace + # declaration that we found + if c_default_ns is NULL: + c_default_ns = c_ns + elif tree.xmlSearchNs( + c_element.doc, c_element, c_ns.prefix) is c_ns: + # start node is in namespace scope => found! + return c_ns + c_node = c_node.parent + # nothing found => use a matching default namespace or fail + if c_default_ns is not NULL: + if tree.xmlSearchNs(c_element.doc, c_element, NULL) is c_default_ns: + return c_default_ns + return NULL + +cdef int _replaceNodeByChildren(_Document doc, xmlNode* c_node) except -1: + # NOTE: this does not deallocate the node, just unlink it! + cdef xmlNode* c_parent + cdef xmlNode* c_child + if c_node.children is NULL: + tree.xmlUnlinkNode(c_node) + return 0 + + c_parent = c_node.parent + # fix parent links of children + c_child = c_node.children + while c_child is not NULL: + c_child.parent = c_parent + c_child = c_child.next + + # fix namespace references of children if their parent's namespace + # declarations get lost + if c_node.nsDef is not NULL: + c_child = c_node.children + while c_child is not NULL: + moveNodeToDocument(doc, doc._c_doc, c_child) + c_child = c_child.next + + # fix sibling links to/from child slice + if c_node.prev is NULL: + c_parent.children = c_node.children + else: + c_node.prev.next = c_node.children + c_node.children.prev = c_node.prev + if c_node.next is NULL: + c_parent.last = c_node.last + else: + c_node.next.prev = c_node.last + c_node.last.next = c_node.next + + # unlink c_node + c_node.children = c_node.last = NULL + c_node.parent = c_node.next = c_node.prev = NULL + return 0 + +cdef unicode _attributeValue(xmlNode* c_element, xmlAttr* c_attrib_node): + c_href = _getNs(c_attrib_node) + value = tree.xmlGetNsProp(c_element, c_attrib_node.name, c_href) + try: + result = funicode(value) + finally: + tree.xmlFree(value) + return result + +cdef unicode _attributeValueFromNsName(xmlNode* c_element, + const_xmlChar* c_href, const_xmlChar* c_name): + c_result = tree.xmlGetNsProp(c_element, c_name, c_href) + if c_result is NULL: + return None + try: + result = funicode(c_result) + finally: + tree.xmlFree(c_result) + return result + +cdef object _getNodeAttributeValue(xmlNode* c_node, key, default): + ns, tag = _getNsTag(key) + c_href = NULL if ns is None else _xcstr(ns) + c_result = tree.xmlGetNsProp(c_node, _xcstr(tag), c_href) + if c_result is NULL: + # XXX free namespace that is not in use..? + return default + try: + result = funicode(c_result) + finally: + tree.xmlFree(c_result) + return result + +cdef inline object _getAttributeValue(_Element element, key, default): + return _getNodeAttributeValue(element._c_node, key, default) + +cdef int _setAttributeValue(_Element element, key, value) except -1: + cdef const_xmlChar* c_value + cdef xmlNs* c_ns + ns, tag = _getNsTag(key) + is_html = element._doc._parser._for_html + if not is_html: + _attributeValidOrRaise(tag) + c_tag = _xcstr(tag) + if value is None and is_html: + c_value = NULL + else: + if isinstance(value, QName): + value = _resolveQNameText(element, value) + else: + value = _utf8(value) + c_value = _xcstr(value) + if ns is None: + c_ns = NULL + else: + c_ns = element._doc._findOrBuildNodeNs(element._c_node, _xcstr(ns), NULL, 1) + tree.xmlSetNsProp(element._c_node, c_ns, c_tag, c_value) + return 0 + +cdef int _delAttribute(_Element element, key) except -1: + ns, tag = _getNsTag(key) + c_href = NULL if ns is None else _xcstr(ns) + if _delAttributeFromNsName(element._c_node, c_href, _xcstr(tag)): + raise KeyError, key + return 0 + +cdef int _delAttributeFromNsName(xmlNode* c_node, const_xmlChar* c_href, const_xmlChar* c_name) noexcept: + c_attr = tree.xmlHasNsProp(c_node, c_name, c_href) + if c_attr is NULL: + # XXX free namespace that is not in use..? + return -1 + tree.xmlRemoveProp(c_attr) + return 0 + +cdef list _collectAttributes(xmlNode* c_node, int collecttype): + """Collect all attributes of a node in a list. Depending on collecttype, + it collects either the name (1), the value (2) or the name-value tuples. + """ + cdef Py_ssize_t count + c_attr = c_node.properties + count = 0 + while c_attr is not NULL: + if c_attr.type == tree.XML_ATTRIBUTE_NODE: + count += 1 + c_attr = c_attr.next + + if not count: + return [] + + attributes = [None] * count + c_attr = c_node.properties + count = 0 + while c_attr is not NULL: + if c_attr.type == tree.XML_ATTRIBUTE_NODE: + if collecttype == 1: + item = _namespacedName(c_attr) + elif collecttype == 2: + item = _attributeValue(c_node, c_attr) + else: + item = (_namespacedName(c_attr), + _attributeValue(c_node, c_attr)) + attributes[count] = item + count += 1 + c_attr = c_attr.next + return attributes + +cdef object __RE_XML_ENCODING = re.compile( + r'^(<\?xml[^>]+)\s+encoding\s*=\s*["\'][^"\']*["\'](\s*\?>|)', re.U) + +cdef object __REPLACE_XML_ENCODING = __RE_XML_ENCODING.sub +cdef object __HAS_XML_ENCODING = __RE_XML_ENCODING.match + +cdef object _stripEncodingDeclaration(object xml_string): + # this is a hack to remove the XML encoding declaration from unicode + return __REPLACE_XML_ENCODING(r'\g<1>\g<2>', xml_string) + +cdef bint _hasEncodingDeclaration(object xml_string) except -1: + # check if a (unicode) string has an XML encoding declaration + return __HAS_XML_ENCODING(xml_string) is not None + +cdef inline bint _hasText(xmlNode* c_node) noexcept: + return c_node is not NULL and _textNodeOrSkip(c_node.children) is not NULL + +cdef inline bint _hasTail(xmlNode* c_node) noexcept: + return c_node is not NULL and _textNodeOrSkip(c_node.next) is not NULL + +cdef inline bint _hasNonWhitespaceTail(xmlNode* c_node) except -1: + return _hasNonWhitespaceText(c_node, tail=True) + +cdef bint _hasNonWhitespaceText(xmlNode* c_node, bint tail=False) except -1: + c_text_node = c_node and _textNodeOrSkip(c_node.next if tail else c_node.children) + if c_text_node is NULL: + return False + while c_text_node is not NULL: + if c_text_node.content[0] != c'\0' and not _collectText(c_text_node).isspace(): + return True + c_text_node = _textNodeOrSkip(c_text_node.next) + return False + +cdef unicode _collectText(xmlNode* c_node): + """Collect all text nodes and return them as a unicode string. + + Start collecting at c_node. + + If there was no text to collect, return None + """ + cdef Py_ssize_t scount + cdef xmlChar* c_text + cdef xmlNode* c_node_cur + # check for multiple text nodes + scount = 0 + c_text = NULL + c_node_cur = c_node = _textNodeOrSkip(c_node) + while c_node_cur is not NULL: + if c_node_cur.content[0] != c'\0': + c_text = c_node_cur.content + scount += 1 + c_node_cur = _textNodeOrSkip(c_node_cur.next) + + # handle two most common cases first + if c_text is NULL: + return '' if scount > 0 else None + if scount == 1: + return funicode(c_text) + + # the rest is not performance critical anymore + result = b'' + while c_node is not NULL: + result += c_node.content + c_node = _textNodeOrSkip(c_node.next) + return funicode(result) + +cdef void _removeText(xmlNode* c_node) noexcept: + """Remove all text nodes. + + Start removing at c_node. + """ + cdef xmlNode* c_next + c_node = _textNodeOrSkip(c_node) + while c_node is not NULL: + c_next = _textNodeOrSkip(c_node.next) + tree.xmlUnlinkNode(c_node) + tree.xmlFreeNode(c_node) + c_node = c_next + +cdef xmlNode* _createTextNode(xmlDoc* doc, value) except NULL: + cdef xmlNode* c_text_node + if isinstance(value, CDATA): + c_text_node = tree.xmlNewCDataBlock( + doc, _xcstr((value)._utf8_data), + python.PyBytes_GET_SIZE((value)._utf8_data)) + else: + text = _utf8(value) + c_text_node = tree.xmlNewDocText(doc, _xcstr(text)) + if not c_text_node: + raise MemoryError() + return c_text_node + +cdef int _setNodeText(xmlNode* c_node, value) except -1: + # remove all text nodes at the start first + _removeText(c_node.children) + if value is None: + return 0 + # now add new text node with value at start + c_text_node = _createTextNode(c_node.doc, value) + if c_node.children is NULL: + tree.xmlAddChild(c_node, c_text_node) + else: + tree.xmlAddPrevSibling(c_node.children, c_text_node) + return 0 + +cdef int _setTailText(xmlNode* c_node, value) except -1: + # remove all text nodes at the start first + _removeText(c_node.next) + if value is None: + return 0 + # now append new text node with value + c_text_node = _createTextNode(c_node.doc, value) + tree.xmlAddNextSibling(c_node, c_text_node) + return 0 + +cdef bytes _resolveQNameText(_Element element, value): + cdef xmlNs* c_ns + ns, tag = _getNsTag(value) + if ns is None: + return tag + else: + c_ns = element._doc._findOrBuildNodeNs( + element._c_node, _xcstr(ns), NULL, 0) + return python.PyBytes_FromFormat('%s:%s', c_ns.prefix, _cstr(tag)) + +cdef inline bint _hasChild(xmlNode* c_node) noexcept: + return c_node is not NULL and _findChildForwards(c_node, 0) is not NULL + +cdef inline Py_ssize_t _countElements(xmlNode* c_node) noexcept: + "Counts the elements within the following siblings and the node itself." + cdef Py_ssize_t count + count = 0 + while c_node is not NULL: + if _isElement(c_node): + count += 1 + c_node = c_node.next + return count + +cdef int _findChildSlice( + slice sliceobject, xmlNode* c_parent, + xmlNode** c_start_node, Py_ssize_t* c_step, Py_ssize_t* c_length) except -1: + """Resolve a children slice. + + Returns the start node, step size and the slice length in the + pointer arguments. + """ + cdef Py_ssize_t start = 0, stop = 0, childcount + childcount = _countElements(c_parent.children) + if childcount == 0: + c_start_node[0] = NULL + c_length[0] = 0 + if sliceobject.step is None: + c_step[0] = 1 + else: + python._PyEval_SliceIndex(sliceobject.step, c_step) + return 0 + python.PySlice_GetIndicesEx( + sliceobject, childcount, &start, &stop, c_step, c_length) + if start > childcount // 2: + c_start_node[0] = _findChildBackwards(c_parent, childcount - start - 1) + else: + c_start_node[0] = _findChild(c_parent, start) + return 0 + +cdef bint _isFullSlice(slice sliceobject) except -1: + """Conservative guess if this slice is a full slice as in ``s[:]``. + """ + cdef Py_ssize_t step = 0 + if sliceobject is None: + return 0 + if sliceobject.start is None and \ + sliceobject.stop is None: + if sliceobject.step is None: + return 1 + python._PyEval_SliceIndex(sliceobject.step, &step) + if step == 1: + return 1 + return 0 + return 0 + +cdef _collectChildren(_Element element): + cdef xmlNode* c_node + cdef list result = [] + c_node = element._c_node.children + if c_node is not NULL: + if not _isElement(c_node): + c_node = _nextElement(c_node) + while c_node is not NULL: + result.append(_elementFactory(element._doc, c_node)) + c_node = _nextElement(c_node) + return result + +cdef inline xmlNode* _findChild(xmlNode* c_node, Py_ssize_t index) noexcept: + if index < 0: + return _findChildBackwards(c_node, -index - 1) + else: + return _findChildForwards(c_node, index) + +cdef inline xmlNode* _findChildForwards(xmlNode* c_node, Py_ssize_t index) noexcept: + """Return child element of c_node with index, or return NULL if not found. + """ + cdef xmlNode* c_child + cdef Py_ssize_t c + c_child = c_node.children + c = 0 + while c_child is not NULL: + if _isElement(c_child): + if c == index: + return c_child + c += 1 + c_child = c_child.next + return NULL + +cdef inline xmlNode* _findChildBackwards(xmlNode* c_node, Py_ssize_t index) noexcept: + """Return child element of c_node with index, or return NULL if not found. + Search from the end. + """ + cdef xmlNode* c_child + cdef Py_ssize_t c + c_child = c_node.last + c = 0 + while c_child is not NULL: + if _isElement(c_child): + if c == index: + return c_child + c += 1 + c_child = c_child.prev + return NULL + +cdef inline xmlNode* _textNodeOrSkip(xmlNode* c_node) noexcept nogil: + """Return the node if it's a text node. Skip over ignorable nodes in a + series of text nodes. Return NULL if a non-ignorable node is found. + + This is used to skip over XInclude nodes when collecting adjacent text + nodes. + """ + while c_node is not NULL: + if c_node.type == tree.XML_TEXT_NODE or \ + c_node.type == tree.XML_CDATA_SECTION_NODE: + return c_node + elif c_node.type == tree.XML_XINCLUDE_START or \ + c_node.type == tree.XML_XINCLUDE_END: + c_node = c_node.next + else: + return NULL + return NULL + +cdef inline xmlNode* _nextElement(xmlNode* c_node) noexcept: + """Given a node, find the next sibling that is an element. + """ + if c_node is NULL: + return NULL + c_node = c_node.next + while c_node is not NULL: + if _isElement(c_node): + return c_node + c_node = c_node.next + return NULL + +cdef inline xmlNode* _previousElement(xmlNode* c_node) noexcept: + """Given a node, find the next sibling that is an element. + """ + if c_node is NULL: + return NULL + c_node = c_node.prev + while c_node is not NULL: + if _isElement(c_node): + return c_node + c_node = c_node.prev + return NULL + +cdef inline xmlNode* _parentElement(xmlNode* c_node) noexcept: + "Given a node, find the parent element." + if c_node is NULL or not _isElement(c_node): + return NULL + c_node = c_node.parent + if c_node is NULL or not _isElement(c_node): + return NULL + return c_node + +cdef inline bint _tagMatches(xmlNode* c_node, const_xmlChar* c_href, const_xmlChar* c_name) noexcept: + """Tests if the node matches namespace URI and tag name. + + A node matches if it matches both c_href and c_name. + + A node matches c_href if any of the following is true: + * c_href is NULL + * its namespace is NULL and c_href is the empty string + * its namespace string equals the c_href string + + A node matches c_name if any of the following is true: + * c_name is NULL + * its name string equals the c_name string + """ + if c_node is NULL: + return 0 + if c_node.type != tree.XML_ELEMENT_NODE: + # not an element, only succeed if we match everything + return c_name is NULL and c_href is NULL + if c_name is NULL: + if c_href is NULL: + # always match + return 1 + else: + c_node_href = _getNs(c_node) + if c_node_href is NULL: + return c_href[0] == c'\0' + else: + return tree.xmlStrcmp(c_node_href, c_href) == 0 + elif c_href is NULL: + if _getNs(c_node) is not NULL: + return 0 + return c_node.name == c_name or tree.xmlStrcmp(c_node.name, c_name) == 0 + elif c_node.name == c_name or tree.xmlStrcmp(c_node.name, c_name) == 0: + c_node_href = _getNs(c_node) + if c_node_href is NULL: + return c_href[0] == c'\0' + else: + return tree.xmlStrcmp(c_node_href, c_href) == 0 + else: + return 0 + +cdef inline bint _tagMatchesExactly(xmlNode* c_node, qname* c_qname) noexcept: + """Tests if the node matches namespace URI and tag name. + + This differs from _tagMatches() in that it does not consider a + NULL value in qname.href a wildcard, and that it expects the c_name + to be taken from the doc dict, i.e. it only compares the names by + address. + + A node matches if it matches both href and c_name of the qname. + + A node matches c_href if any of the following is true: + * its namespace is NULL and c_href is the empty string + * its namespace string equals the c_href string + + A node matches c_name if any of the following is true: + * c_name is NULL + * its name string points to the same address (!) as c_name + """ + return _nsTagMatchesExactly(_getNs(c_node), c_node.name, c_qname) + +cdef inline bint _nsTagMatchesExactly(const_xmlChar* c_node_href, + const_xmlChar* c_node_name, + qname* c_qname) noexcept: + """Tests if name and namespace URI match those of c_qname. + + This differs from _tagMatches() in that it does not consider a + NULL value in qname.href a wildcard, and that it expects the c_name + to be taken from the doc dict, i.e. it only compares the names by + address. + + A node matches if it matches both href and c_name of the qname. + + A node matches c_href if any of the following is true: + * its namespace is NULL and c_href is the empty string + * its namespace string equals the c_href string + + A node matches c_name if any of the following is true: + * c_name is NULL + * its name string points to the same address (!) as c_name + """ + cdef char* c_href + if c_qname.c_name is not NULL and c_qname.c_name is not c_node_name: + return 0 + if c_qname.href is NULL: + return 1 + c_href = python.__cstr(c_qname.href) + if c_href[0] == b'\0': + return c_node_href is NULL or c_node_href[0] == b'\0' + elif c_node_href is NULL: + return 0 + else: + return tree.xmlStrcmp(c_href, c_node_href) == 0 + +cdef Py_ssize_t _mapTagsToQnameMatchArray(xmlDoc* c_doc, list ns_tags, + qname* c_ns_tags, bint force_into_dict) except -1: + """Map a sequence of (name, namespace) pairs to a qname array for efficient + matching with _tagMatchesExactly() above. + + Note that each qname struct in the array owns its href byte string object + if it is not NULL. + """ + cdef Py_ssize_t count = 0, i + cdef bytes ns, tag + for ns, tag in ns_tags: + if tag is None: + c_tag = NULL + elif force_into_dict: + c_tag = tree.xmlDictLookup(c_doc.dict, _xcstr(tag), len(tag)) + if c_tag is NULL: + # clean up before raising the error + for i in xrange(count): + cpython.ref.Py_XDECREF(c_ns_tags[i].href) + raise MemoryError() + else: + c_tag = tree.xmlDictExists(c_doc.dict, _xcstr(tag), len(tag)) + if c_tag is NULL: + # not in the dict => not in the document + continue + c_ns_tags[count].c_name = c_tag + if ns is None: + c_ns_tags[count].href = NULL + else: + cpython.ref.Py_INCREF(ns) # keep an owned reference! + c_ns_tags[count].href = ns + count += 1 + return count + +cdef int _removeNode(_Document doc, xmlNode* c_node) except -1: + """Unlink and free a node and subnodes if possible. Otherwise, make sure + it's self-contained. + """ + cdef xmlNode* c_next + c_next = c_node.next + tree.xmlUnlinkNode(c_node) + _moveTail(c_next, c_node) + if not attemptDeallocation(c_node): + # make namespaces absolute + moveNodeToDocument(doc, c_node.doc, c_node) + return 0 + +cdef int _removeSiblings(xmlNode* c_element, tree.xmlElementType node_type, bint with_tail) except -1: + cdef xmlNode* c_node + cdef xmlNode* c_next + c_node = c_element.next + while c_node is not NULL: + c_next = _nextElement(c_node) + if c_node.type == node_type: + if with_tail: + _removeText(c_node.next) + tree.xmlUnlinkNode(c_node) + attemptDeallocation(c_node) + c_node = c_next + c_node = c_element.prev + while c_node is not NULL: + c_next = _previousElement(c_node) + if c_node.type == node_type: + if with_tail: + _removeText(c_node.next) + tree.xmlUnlinkNode(c_node) + attemptDeallocation(c_node) + c_node = c_next + return 0 + +cdef void _moveTail(xmlNode* c_tail, xmlNode* c_target) noexcept: + cdef xmlNode* c_next + # tail support: look for any text nodes trailing this node and + # move them too + c_tail = _textNodeOrSkip(c_tail) + while c_tail is not NULL: + c_next = _textNodeOrSkip(c_tail.next) + c_target = tree.xmlAddNextSibling(c_target, c_tail) + c_tail = c_next + +cdef int _copyTail(xmlNode* c_tail, xmlNode* c_target) except -1: + cdef xmlNode* c_new_tail + # tail copying support: look for any text nodes trailing this node and + # copy it to the target node + c_tail = _textNodeOrSkip(c_tail) + while c_tail is not NULL: + if c_target.doc is not c_tail.doc: + c_new_tail = tree.xmlDocCopyNode(c_tail, c_target.doc, 0) + else: + c_new_tail = tree.xmlCopyNode(c_tail, 0) + if c_new_tail is NULL: + raise MemoryError() + c_target = tree.xmlAddNextSibling(c_target, c_new_tail) + c_tail = _textNodeOrSkip(c_tail.next) + return 0 + +cdef int _copyNonElementSiblings(xmlNode* c_node, xmlNode* c_target) except -1: + cdef xmlNode* c_copy + cdef xmlNode* c_sibling = c_node + while c_sibling.prev != NULL and \ + (c_sibling.prev.type == tree.XML_PI_NODE or + c_sibling.prev.type == tree.XML_COMMENT_NODE or + c_sibling.prev.type == tree.XML_DTD_NODE): + c_sibling = c_sibling.prev + while c_sibling != c_node: + if c_sibling.type == tree.XML_DTD_NODE: + c_copy = _copyDtd(c_sibling) + if c_sibling == c_node.doc.intSubset: + c_target.doc.intSubset = c_copy + else: # c_sibling == c_node.doc.extSubset + c_target.doc.extSubset = c_copy + else: + c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1) + if c_copy is NULL: + raise MemoryError() + tree.xmlAddPrevSibling(c_target, c_copy) + c_sibling = c_sibling.next + while c_sibling.next != NULL and \ + (c_sibling.next.type == tree.XML_PI_NODE or + c_sibling.next.type == tree.XML_COMMENT_NODE): + c_sibling = c_sibling.next + c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1) + if c_copy is NULL: + raise MemoryError() + tree.xmlAddNextSibling(c_target, c_copy) + +cdef int _deleteSlice(_Document doc, xmlNode* c_node, + Py_ssize_t count, Py_ssize_t step) except -1: + """Delete slice, ``count`` items starting with ``c_node`` with a step + width of ``step``. + """ + cdef xmlNode* c_next + cdef Py_ssize_t c, i + cdef _node_to_node_function next_element + if c_node is NULL: + return 0 + if step > 0: + next_element = _nextElement + else: + step = -step + next_element = _previousElement + # now start deleting nodes + c = 0 + c_next = c_node + while c_node is not NULL and c < count: + for i in range(step): + c_next = next_element(c_next) + if c_next is NULL: + break + _removeNode(doc, c_node) + c += 1 + c_node = c_next + return 0 + +cdef int _replaceSlice(_Element parent, xmlNode* c_node, + Py_ssize_t slicelength, Py_ssize_t step, + bint left_to_right, elements) except -1: + """Replace the slice of ``count`` elements starting at ``c_node`` with + positive step width ``step`` by the Elements in ``elements``. The + direction is given by the boolean argument ``left_to_right``. + + ``c_node`` may be NULL to indicate the end of the children list. + """ + cdef xmlNode* c_orig_neighbour + cdef xmlNode* c_next + cdef xmlDoc* c_source_doc + cdef _Element element + cdef Py_ssize_t seqlength, i, c + cdef _node_to_node_function next_element + assert step > 0 + if left_to_right: + next_element = _nextElement + else: + next_element = _previousElement + + if not isinstance(elements, (list, tuple)): + elements = list(elements) + + if step != 1 or not left_to_right: + # *replacing* children stepwise with list => check size! + seqlength = len(elements) + if seqlength != slicelength: + raise ValueError, f"attempt to assign sequence of size {seqlength} " \ + f"to extended slice of size {slicelength}" + + if c_node is NULL: + # no children yet => add all elements straight away + if left_to_right: + for element in elements: + assert element is not None, "Node must not be None" + _appendChild(parent, element) + else: + for element in elements: + assert element is not None, "Node must not be None" + _prependChild(parent, element) + return 0 + + # remove the elements first as some might be re-added + if left_to_right: + # L->R, remember left neighbour + c_orig_neighbour = _previousElement(c_node) + else: + # R->L, remember right neighbour + c_orig_neighbour = _nextElement(c_node) + + # We remove the original slice elements one by one. Since we hold + # a Python reference to all elements that we will insert, it is + # safe to let _removeNode() try (and fail) to free them even if + # the element itself or one of its descendents will be reinserted. + c = 0 + c_next = c_node + while c_node is not NULL and c < slicelength: + for i in range(step): + c_next = next_element(c_next) + if c_next is NULL: + break + _removeNode(parent._doc, c_node) + c += 1 + c_node = c_next + + # make sure each element is inserted only once + elements = iter(elements) + + # find the first node right of the new insertion point + if left_to_right: + if c_orig_neighbour is not NULL: + c_node = next_element(c_orig_neighbour) + else: + # before the first element + c_node = _findChildForwards(parent._c_node, 0) + elif c_orig_neighbour is NULL: + # at the end, but reversed stepping + # append one element and go to the next insertion point + for element in elements: + assert element is not None, "Node must not be None" + _appendChild(parent, element) + c_node = element._c_node + if slicelength > 0: + slicelength -= 1 + for i in range(1, step): + c_node = next_element(c_node) + if c_node is NULL: + break + break + else: + c_node = c_orig_neighbour + + if left_to_right: + # adjust step size after removing slice as we are not stepping + # over the newly inserted elements + step -= 1 + + # now insert elements where we removed them + if c_node is not NULL: + for element in elements: + assert element is not None, "Node must not be None" + _assertValidNode(element) + # move element and tail over + c_source_doc = element._c_node.doc + c_next = element._c_node.next + tree.xmlAddPrevSibling(c_node, element._c_node) + _moveTail(c_next, element._c_node) + + # integrate element into new document + moveNodeToDocument(parent._doc, c_source_doc, element._c_node) + + # stop at the end of the slice + if slicelength > 0: + slicelength -= 1 + for i in range(step): + c_node = next_element(c_node) + if c_node is NULL: + break + if c_node is NULL: + break + else: + # everything inserted + return 0 + + # append the remaining elements at the respective end + if left_to_right: + for element in elements: + assert element is not None, "Node must not be None" + _assertValidNode(element) + _appendChild(parent, element) + else: + for element in elements: + assert element is not None, "Node must not be None" + _assertValidNode(element) + _prependChild(parent, element) + + return 0 + + +cdef int _linkChild(xmlNode* c_parent, xmlNode* c_node) except -1: + """Adaptation of 'xmlAddChild()' that deep-fix the document links iteratively. + """ + assert _isElement(c_node) + c_node.parent = c_parent + if c_parent.children is NULL: + c_parent.children = c_parent.last = c_node + else: + c_node.prev = c_parent.last + c_parent.last.next = c_node + c_parent.last = c_node + + _setTreeDoc(c_node, c_parent.doc) + return 0 + + +cdef int _appendChild(_Element parent, _Element child) except -1: + """Append a new child to a parent element. + """ + c_node = child._c_node + c_source_doc = c_node.doc + # prevent cycles + if _isAncestorOrSame(c_node, parent._c_node): + raise ValueError("cannot append parent to itself") + # store possible text node + c_next = c_node.next + # move node itself + tree.xmlUnlinkNode(c_node) + # do not call xmlAddChild() here since it would deep-traverse the tree + _linkChild(parent._c_node, c_node) + _moveTail(c_next, c_node) + # uh oh, elements may be pointing to different doc when + # parent element has moved; change them too.. + moveNodeToDocument(parent._doc, c_source_doc, c_node) + return 0 + +cdef int _prependChild(_Element parent, _Element child) except -1: + """Prepend a new child to a parent element. + """ + c_node = child._c_node + c_source_doc = c_node.doc + # prevent cycles + if _isAncestorOrSame(c_node, parent._c_node): + raise ValueError("cannot append parent to itself") + # store possible text node + c_next = c_node.next + # move node itself + c_child = _findChildForwards(parent._c_node, 0) + if c_child is NULL: + tree.xmlUnlinkNode(c_node) + # do not call xmlAddChild() here since it would deep-traverse the tree + _linkChild(parent._c_node, c_node) + else: + tree.xmlAddPrevSibling(c_child, c_node) + _moveTail(c_next, c_node) + # uh oh, elements may be pointing to different doc when + # parent element has moved; change them too.. + moveNodeToDocument(parent._doc, c_source_doc, c_node) + return 0 + +cdef int _appendSibling(_Element element, _Element sibling) except -1: + """Add a new sibling behind an element. + """ + return _addSibling(element, sibling, as_next=True) + +cdef int _prependSibling(_Element element, _Element sibling) except -1: + """Add a new sibling before an element. + """ + return _addSibling(element, sibling, as_next=False) + +cdef int _addSibling(_Element element, _Element sibling, bint as_next) except -1: + c_node = sibling._c_node + c_source_doc = c_node.doc + # prevent cycles + if _isAncestorOrSame(c_node, element._c_node): + if element._c_node is c_node: + return 0 # nothing to do + raise ValueError("cannot add ancestor as sibling, please break cycle first") + # store possible text node + c_next = c_node.next + # move node itself + if as_next: + # must insert after any tail text + c_next_node = _nextElement(element._c_node) + if c_next_node is NULL: + c_next_node = element._c_node + while c_next_node.next: + c_next_node = c_next_node.next + tree.xmlAddNextSibling(c_next_node, c_node) + else: + tree.xmlAddPrevSibling(c_next_node, c_node) + else: + tree.xmlAddPrevSibling(element._c_node, c_node) + _moveTail(c_next, c_node) + # uh oh, elements may be pointing to different doc when + # parent element has moved; change them too.. + moveNodeToDocument(element._doc, c_source_doc, c_node) + return 0 + +cdef inline bint isutf8(const_xmlChar* s) noexcept: + cdef xmlChar c = s[0] + while c != c'\0': + if c & 0x80: + return True + s += 1 + c = s[0] + return False + +cdef bint isutf8l(const_xmlChar* s, size_t length) noexcept: + """ + Search for non-ASCII characters in the string, knowing its length in advance. + """ + cdef unsigned int i + cdef unsigned long non_ascii_mask + cdef const unsigned long *lptr = s + + cdef const unsigned long *end = lptr + length // sizeof(unsigned long) + if length >= sizeof(non_ascii_mask): + # Build constant 0x80808080... mask (and let the C compiler fold it). + non_ascii_mask = 0 + for i in range(sizeof(non_ascii_mask) // 2): + non_ascii_mask = (non_ascii_mask << 16) | 0x8080 + + # Advance to long-aligned character before we start reading longs. + while (s) % sizeof(unsigned long) and s < end: + if s[0] & 0x80: + return True + s += 1 + + # Read one long at a time + lptr = s + while lptr < end: + if lptr[0] & non_ascii_mask: + return True + lptr += 1 + s = lptr + + while s < (end + length % sizeof(unsigned long)): + if s[0] & 0x80: + return True + s += 1 + + return False + +cdef int _is_valid_xml_ascii(bytes pystring) except -1: + """Check if a string is XML ascii content.""" + cdef signed char ch + # When ch is a *signed* char, non-ascii characters are negative integers + # and xmlIsChar_ch does not accept them. + for ch in pystring: + if not tree.xmlIsChar_ch(ch): + return 0 + return 1 + +cdef bint _is_valid_xml_utf8(bytes pystring) except -1: + """Check if a string is like valid UTF-8 XML content.""" + cdef const_xmlChar* s = _xcstr(pystring) + cdef const_xmlChar* c_end = s + len(pystring) + cdef unsigned long next3 = 0 + if s < c_end - 2: + next3 = (s[0] << 8) | (s[1]) + + while s < c_end - 2: + next3 = 0x00ffffff & ((next3 << 8) | s[2]) + if s[0] & 0x80: + # 0xefbfbe and 0xefbfbf are utf-8 encodings of + # forbidden characters \ufffe and \uffff + if next3 == 0x00efbfbe or next3 == 0x00efbfbf: + return 0 + # 0xeda080 and 0xedbfbf are utf-8 encodings of + # \ud800 and \udfff. Anything between them (inclusive) + # is forbidden, because they are surrogate blocks in utf-16. + if 0x00eda080 <= next3 <= 0x00edbfbf: + return 0 + elif not tree.xmlIsChar_ch(s[0]): + return 0 # invalid ascii char + s += 1 + + while s < c_end: + if not s[0] & 0x80 and not tree.xmlIsChar_ch(s[0]): + return 0 # invalid ascii char + s += 1 + + return 1 + +cdef inline unicode funicodeOrNone(const_xmlChar* s): + return funicode(s) if s is not NULL else None + +cdef inline unicode funicodeOrEmpty(const_xmlChar* s): + return funicode(s) if s is not NULL else '' + +cdef unicode funicode(const_xmlChar* s): + return s.decode('UTF-8') + +cdef bytes _utf8(object s): + """Test if a string is valid user input and encode it to UTF-8. + Reject all bytes/unicode input that contains non-XML characters. + Reject all bytes input that contains non-ASCII characters. + """ + cdef int valid + cdef bytes utf8_string + if isinstance(s, unicode): + utf8_string = (s).encode('utf8') + valid = _is_valid_xml_utf8(utf8_string) + elif isinstance(s, (bytes, bytearray)): + utf8_string = s if type(s) is bytes else bytes(s) + valid = _is_valid_xml_ascii(utf8_string) + else: + raise TypeError("Argument must be bytes or unicode, got '%.200s'" % type(s).__name__) + if not valid: + raise ValueError( + "All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters") + return utf8_string + + +cdef bytes _utf8orNone(object s): + return _utf8(s) if s is not None else None + + +cdef enum: + NO_FILE_PATH = 0 + ABS_UNIX_FILE_PATH = 1 + ABS_WIN_FILE_PATH = 2 + REL_FILE_PATH = 3 + + +cdef bint _isFilePath(const_xmlChar* c_path) noexcept: + "simple heuristic to see if a path is a filename" + cdef xmlChar c + # test if it looks like an absolute Unix path or a Windows network path + if c_path[0] == c'/': + return ABS_UNIX_FILE_PATH + + # test if it looks like an absolute Windows path or URL + if c'a' <= c_path[0] <= c'z' or c'A' <= c_path[0] <= c'Z': + c_path += 1 + if c_path[0] == c':' and c_path[1] in b'\0\\': + return ABS_WIN_FILE_PATH # C: or C:\... + + # test if it looks like a URL with scheme:// + while c'a' <= c_path[0] <= c'z' or c'A' <= c_path[0] <= c'Z': + c_path += 1 + if c_path[0] == c':' and c_path[1] == c'/' and c_path[2] == c'/': + return NO_FILE_PATH + + # assume it's a relative path + return REL_FILE_PATH + + +cdef object _getFSPathOrObject(object obj): + """ + Get the __fspath__ attribute of an object if it exists. + Otherwise, the original object is returned. + """ + if _isString(obj): + return obj + try: + return python.PyOS_FSPath(obj) + except TypeError: + return obj + + +cdef object _encodeFilename(object filename): + """Make sure a filename is 8-bit encoded (or None). + """ + if filename is None: + return None + elif isinstance(filename, bytes): + return filename + elif isinstance(filename, unicode): + filename8 = (filename).encode('utf8') + if _isFilePath(filename8): + try: + return python.PyUnicode_AsEncodedString( + filename, _C_FILENAME_ENCODING, NULL) + except UnicodeEncodeError: + pass + return filename8 + else: + raise TypeError("Argument must be string or unicode.") + +cdef object _decodeFilename(const_xmlChar* c_path): + """Make the filename a unicode string if we are in Py3. + """ + return _decodeFilenameWithLength(c_path, tree.xmlStrlen(c_path)) + +cdef object _decodeFilenameWithLength(const_xmlChar* c_path, size_t c_len): + """Make the filename a unicode string if we are in Py3. + """ + if _isFilePath(c_path): + try: + return python.PyUnicode_Decode( + c_path, c_len, _C_FILENAME_ENCODING, NULL) + except UnicodeDecodeError: + pass + try: + return (c_path)[:c_len].decode('UTF-8') + except UnicodeDecodeError: + # this is a stupid fallback, but it might still work... + return (c_path)[:c_len].decode('latin-1', 'replace') + +cdef object _encodeFilenameUTF8(object filename): + """Recode filename as UTF-8. Tries ASCII, local filesystem encoding and + UTF-8 as source encoding. + """ + cdef char* c_filename + if filename is None: + return None + elif isinstance(filename, bytes): + if not isutf8l(filename, len(filename)): + # plain ASCII! + return filename + c_filename = _cstr(filename) + try: + # try to decode with default encoding + filename = python.PyUnicode_Decode( + c_filename, len(filename), + _C_FILENAME_ENCODING, NULL) + except UnicodeDecodeError as decode_exc: + try: + # try if it's proper UTF-8 + (filename).decode('utf8') + return filename + except UnicodeDecodeError: + raise decode_exc # otherwise re-raise original exception + if isinstance(filename, unicode): + return (filename).encode('utf8') + else: + raise TypeError("Argument must be string or unicode.") + +cdef tuple _getNsTag(tag): + """Given a tag, find namespace URI and tag name. + Return None for NS uri if no namespace URI provided. + """ + return __getNsTag(tag, 0) + +cdef tuple _getNsTagWithEmptyNs(tag): + """Given a tag, find namespace URI and tag name. Return None for NS uri + if no namespace URI provided, or the empty string if namespace + part is '{}'. + """ + return __getNsTag(tag, 1) + +cdef tuple __getNsTag(tag, bint empty_ns): + cdef char* c_tag + cdef char* c_ns_end + cdef Py_ssize_t taglen + cdef Py_ssize_t nslen + cdef bytes ns = None + # _isString() is much faster than isinstance() + if not _isString(tag) and isinstance(tag, QName): + tag = (tag).text + tag = _utf8(tag) + c_tag = _cstr(tag) + if c_tag[0] == c'{': + c_tag += 1 + c_ns_end = cstring_h.strchr(c_tag, c'}') + if c_ns_end is NULL: + raise ValueError, "Invalid tag name" + nslen = c_ns_end - c_tag + taglen = python.PyBytes_GET_SIZE(tag) - nslen - 2 + if taglen == 0: + raise ValueError, "Empty tag name" + if nslen > 0: + ns = c_tag[:nslen] + elif empty_ns: + ns = b'' + tag = c_ns_end[1:taglen+1] + elif python.PyBytes_GET_SIZE(tag) == 0: + raise ValueError, "Empty tag name" + return ns, tag + +cdef inline int _pyXmlNameIsValid(name_utf8): + return _xmlNameIsValid(_xcstr(name_utf8)) and b':' not in name_utf8 + +cdef inline int _pyHtmlNameIsValid(name_utf8): + return _htmlNameIsValid(_xcstr(name_utf8)) + +cdef inline int _xmlNameIsValid(const_xmlChar* c_name) noexcept: + return tree.xmlValidateNameValue(c_name) + +cdef int _htmlNameIsValid(const_xmlChar* c_name) noexcept: + if c_name is NULL or c_name[0] == c'\0': + return 0 + while c_name[0] != c'\0': + if c_name[0] in b'&<>/"\'\t\n\x0B\x0C\r ': + return 0 + c_name += 1 + return 1 + +cdef bint _characterReferenceIsValid(const_xmlChar* c_name) noexcept: + cdef bint is_hex + if c_name[0] == c'x': + c_name += 1 + is_hex = 1 + else: + is_hex = 0 + if c_name[0] == c'\0': + return 0 + while c_name[0] != c'\0': + if c_name[0] < c'0' or c_name[0] > c'9': + if not is_hex: + return 0 + if not (c'a' <= c_name[0] <= c'f'): + if not (c'A' <= c_name[0] <= c'F'): + return 0 + c_name += 1 + return 1 + +cdef int _tagValidOrRaise(tag_utf) except -1: + if not _pyXmlNameIsValid(tag_utf): + raise ValueError(f"Invalid tag name {(tag_utf).decode('utf8')!r}") + return 0 + +cdef int _htmlTagValidOrRaise(tag_utf) except -1: + if not _pyHtmlNameIsValid(tag_utf): + raise ValueError(f"Invalid HTML tag name {(tag_utf).decode('utf8')!r}") + return 0 + +cdef int _attributeValidOrRaise(name_utf) except -1: + if not _pyXmlNameIsValid(name_utf): + raise ValueError(f"Invalid attribute name {(name_utf).decode('utf8')!r}") + return 0 + +cdef int _prefixValidOrRaise(tag_utf) except -1: + if not _pyXmlNameIsValid(tag_utf): + raise ValueError(f"Invalid namespace prefix {(tag_utf).decode('utf8')!r}") + return 0 + +cdef int _uriValidOrRaise(uri_utf) except -1: + cdef uri.xmlURI* c_uri = uri.xmlParseURI(_cstr(uri_utf)) + if c_uri is NULL: + raise ValueError(f"Invalid namespace URI {(uri_utf).decode('utf8')!r}") + uri.xmlFreeURI(c_uri) + return 0 + +cdef inline unicode _namespacedName(xmlNode* c_node): + return _namespacedNameFromNsName(_getNs(c_node), c_node.name) + + +cdef unicode _namespacedNameFromNsName(const_xmlChar* c_href, const_xmlChar* c_name): + name = funicode(c_name) + if c_href is NULL: + return name + href = funicode(c_href) + return f"{{{href}}}{name}" + + +cdef _getFilenameForFile(source): + """Given a Python File or Gzip object, give filename back. + + Returns None if not a file object. + """ + # urllib2 provides a geturl() method + try: + return source.geturl() + except: + pass + # file instances have a name attribute + try: + filename = source.name + if _isString(filename): + return os_path_abspath(filename) + except: + pass + # gzip file instances have a filename attribute (before Py3k) + try: + filename = source.filename + if _isString(filename): + return os_path_abspath(filename) + except: + pass + # can't determine filename + return None diff --git a/env/lib/python3.12/site-packages/lxml/builder.cpython-312-aarch64-linux-gnu.so b/env/lib/python3.12/site-packages/lxml/builder.cpython-312-aarch64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..0adf44bdbcc8a09b3ec8b94c9f1de38a50edc96c GIT binary patch literal 136896 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�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%0A~Gyvtf_#(v7$6TiL(*!QTDwh~K_XMeJp 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

    ;sG;^2v9}_g;-&eU3UbJ`Xdt2Mf*#%pn-lk=~30 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 literal 0 HcmV?d00001 diff --git a/env/lib/python3.12/site-packages/lxml/builder.py b/env/lib/python3.12/site-packages/lxml/builder.py new file mode 100644 index 0000000..cff67b0 --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml/builder.py @@ -0,0 +1,232 @@ +# cython: language_level=2 + +# +# Element generator factory by Fredrik Lundh. +# +# Source: +# http://online.effbot.org/2006_11_01_archive.htm#et-builder +# http://effbot.python-hosting.com/file/stuff/sandbox/elementlib/builder.py +# +# -------------------------------------------------------------------- +# The ElementTree toolkit is +# +# Copyright (c) 1999-2004 by Fredrik Lundh +# +# By obtaining, using, and/or copying this software and/or its +# associated documentation, you agree that you have read, understood, +# and will comply with the following terms and conditions: +# +# Permission to use, copy, modify, and distribute this software and +# its associated documentation for any purpose and without fee is +# hereby granted, provided that the above copyright notice appears in +# all copies, and that both that copyright notice and this permission +# notice appear in supporting documentation, and that the name of +# Secret Labs AB or the author not be used in advertising or publicity +# pertaining to distribution of the software without specific, written +# prior permission. +# +# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD +# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- +# ABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR +# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY +# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +# OF THIS SOFTWARE. +# -------------------------------------------------------------------- + +""" +The ``E`` Element factory for generating XML documents. +""" + + +import lxml.etree as ET +_QName = ET.QName + +from functools import partial + +try: + basestring +except NameError: + basestring = str + +try: + unicode +except NameError: + unicode = str + + +class ElementMaker: + """Element generator factory. + + Unlike the ordinary Element factory, the E factory allows you to pass in + more than just a tag and some optional attributes; you can also pass in + text and other elements. The text is added as either text or tail + attributes, and elements are inserted at the right spot. Some small + examples:: + + >>> from lxml import etree as ET + >>> from lxml.builder import E + + >>> ET.tostring(E("tag")) + '' + >>> ET.tostring(E("tag", "text")) + 'text' + >>> ET.tostring(E("tag", "text", key="value")) + 'text' + >>> ET.tostring(E("tag", E("subtag", "text"), "tail")) + 'texttail' + + For simple tags, the factory also allows you to write ``E.tag(...)`` instead + of ``E('tag', ...)``:: + + >>> ET.tostring(E.tag()) + '' + >>> ET.tostring(E.tag("text")) + 'text' + >>> ET.tostring(E.tag(E.subtag("text"), "tail")) + 'texttail' + + Here's a somewhat larger example; this shows how to generate HTML + documents, using a mix of prepared factory functions for inline elements, + nested ``E.tag`` calls, and embedded XHTML fragments:: + + # some common inline elements + A = E.a + I = E.i + B = E.b + + def CLASS(v): + # helper function, 'class' is a reserved word + return {'class': v} + + page = ( + E.html( + E.head( + E.title("This is a sample document") + ), + E.body( + E.h1("Hello!", CLASS("title")), + E.p("This is a paragraph with ", B("bold"), " text in it!"), + E.p("This is another paragraph, with a ", + A("link", href="http://www.python.org"), "."), + E.p("Here are some reserved characters: ."), + ET.XML("

    And finally, here is an embedded XHTML fragment.

    "), + ) + ) + ) + + print ET.tostring(page) + + Here's a prettyprinted version of the output from the above script:: + + + + This is a sample document + + +

    Hello!

    +

    This is a paragraph with bold text in it!

    +
    +

    Here are some reserved characters: <spam&egg>.

    +

    And finally, here is an embedded XHTML fragment.

    + + + + For namespace support, you can pass a namespace map (``nsmap``) + and/or a specific target ``namespace`` to the ElementMaker class:: + + >>> E = ElementMaker(namespace="http://my.ns/") + >>> print(ET.tostring( E.test )) + + + >>> E = ElementMaker(namespace="http://my.ns/", nsmap={'p':'http://my.ns/'}) + >>> print(ET.tostring( E.test )) + + """ + + def __init__(self, typemap=None, + namespace=None, nsmap=None, makeelement=None): + self._namespace = '{' + namespace + '}' if namespace is not None else None + self._nsmap = dict(nsmap) if nsmap else None + + assert makeelement is None or callable(makeelement) + self._makeelement = makeelement if makeelement is not None else ET.Element + + # initialize the default type map functions for this element factory + typemap = dict(typemap) if typemap else {} + + def add_text(elem, item): + try: + last_child = elem[-1] + except IndexError: + elem.text = (elem.text or "") + item + else: + last_child.tail = (last_child.tail or "") + item + + def add_cdata(elem, cdata): + if elem.text: + raise ValueError("Can't add a CDATA section. Element already has some text: %r" % elem.text) + elem.text = cdata + + if str not in typemap: + typemap[str] = add_text + if unicode not in typemap: + typemap[unicode] = add_text + if ET.CDATA not in typemap: + typemap[ET.CDATA] = add_cdata + + def add_dict(elem, item): + attrib = elem.attrib + for k, v in item.items(): + if isinstance(v, basestring): + attrib[k] = v + else: + attrib[k] = typemap[type(v)](None, v) + + if dict not in typemap: + typemap[dict] = add_dict + + self._typemap = typemap + + def __call__(self, tag, *children, **attrib): + typemap = self._typemap + + # We'll usually get a 'str', and the compiled type check is very fast. + if not isinstance(tag, str) and isinstance(tag, _QName): + # A QName is explicitly qualified, do not look at self._namespace. + tag = tag.text + elif self._namespace is not None and tag[0] != '{': + tag = self._namespace + tag + elem = self._makeelement(tag, nsmap=self._nsmap) + if attrib: + typemap[dict](elem, attrib) + + for item in children: + if callable(item): + item = item() + t = typemap.get(type(item)) + if t is None: + if ET.iselement(item): + elem.append(item) + continue + for basetype in type(item).__mro__: + # See if the typemap knows of any of this type's bases. + t = typemap.get(basetype) + if t is not None: + break + else: + raise TypeError("bad argument type: %s(%r)" % + (type(item).__name__, item)) + v = t(elem, item) + if v: + typemap.get(type(v))(elem, v) + + return elem + + def __getattr__(self, tag): + return partial(self, tag) + + +# create factory object +E = ElementMaker() diff --git a/env/lib/python3.12/site-packages/lxml/classlookup.pxi b/env/lib/python3.12/site-packages/lxml/classlookup.pxi new file mode 100644 index 0000000..92d1d47 --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml/classlookup.pxi @@ -0,0 +1,580 @@ +# Configurable Element class lookup + +################################################################################ +# Custom Element classes + +cdef public class ElementBase(_Element) [ type LxmlElementBaseType, + object LxmlElementBase ]: + """ElementBase(*children, attrib=None, nsmap=None, **_extra) + + The public Element class. All custom Element classes must inherit + from this one. To create an Element, use the `Element()` factory. + + BIG FAT WARNING: Subclasses *must not* override __init__ or + __new__ as it is absolutely undefined when these objects will be + created or destroyed. All persistent state of Elements must be + stored in the underlying XML. If you really need to initialize + the object after creation, you can implement an ``_init(self)`` + method that will be called directly after object creation. + + Subclasses of this class can be instantiated to create a new + Element. By default, the tag name will be the class name and the + namespace will be empty. You can modify this with the following + class attributes: + + * TAG - the tag name, possibly containing a namespace in Clark + notation + + * NAMESPACE - the default namespace URI, unless provided as part + of the TAG attribute. + + * HTML - flag if the class is an HTML tag, as opposed to an XML + tag. This only applies to un-namespaced tags and defaults to + false (i.e. XML). + + * PARSER - the parser that provides the configuration for the + newly created document. Providing an HTML parser here will + default to creating an HTML element. + + In user code, the latter three are commonly inherited in class + hierarchies that implement a common namespace. + """ + def __init__(self, *children, attrib=None, nsmap=None, **_extra): + """ElementBase(*children, attrib=None, nsmap=None, **_extra) + """ + cdef bint is_html = 0 + cdef _BaseParser parser + cdef _Element last_child + # don't use normal attribute access as it might be overridden + _getattr = object.__getattribute__ + try: + namespace = _utf8(_getattr(self, 'NAMESPACE')) + except AttributeError: + namespace = None + try: + ns, tag = _getNsTag(_getattr(self, 'TAG')) + if ns is not None: + namespace = ns + except AttributeError: + tag = _utf8(_getattr(_getattr(self, '__class__'), '__name__')) + if b'.' in tag: + tag = tag.split(b'.')[-1] + try: + parser = _getattr(self, 'PARSER') + except AttributeError: + parser = None + for child in children: + if isinstance(child, _Element): + parser = (<_Element>child)._doc._parser + break + if isinstance(parser, HTMLParser): + is_html = 1 + if namespace is None: + try: + is_html = _getattr(self, 'HTML') + except AttributeError: + pass + _initNewElement(self, is_html, tag, namespace, parser, + attrib, nsmap, _extra) + last_child = None + for child in children: + if _isString(child): + if last_child is None: + _setNodeText(self._c_node, + (_collectText(self._c_node.children) or '') + child) + else: + _setTailText(last_child._c_node, + (_collectText(last_child._c_node.next) or '') + child) + elif isinstance(child, _Element): + last_child = child + _appendChild(self, last_child) + elif isinstance(child, type) and issubclass(child, ElementBase): + last_child = child() + _appendChild(self, last_child) + else: + raise TypeError, f"Invalid child type: {type(child)!r}" + +cdef class CommentBase(_Comment): + """All custom Comment classes must inherit from this one. + + To create an XML Comment instance, use the ``Comment()`` factory. + + Subclasses *must not* override __init__ or __new__ as it is + absolutely undefined when these objects will be created or + destroyed. All persistent state of Comments must be stored in the + underlying XML. If you really need to initialize the object after + creation, you can implement an ``_init(self)`` method that will be + called after object creation. + """ + def __init__(self, text): + # copied from Comment() factory + cdef _Document doc + cdef xmlDoc* c_doc + if text is None: + text = b'' + else: + text = _utf8(text) + c_doc = _newXMLDoc() + doc = _documentFactory(c_doc, None) + self._c_node = _createComment(c_doc, _xcstr(text)) + if self._c_node is NULL: + raise MemoryError() + tree.xmlAddChild(c_doc, self._c_node) + _registerProxy(self, doc, self._c_node) + self._init() + +cdef class PIBase(_ProcessingInstruction): + """All custom Processing Instruction classes must inherit from this one. + + To create an XML ProcessingInstruction instance, use the ``PI()`` + factory. + + Subclasses *must not* override __init__ or __new__ as it is + absolutely undefined when these objects will be created or + destroyed. All persistent state of PIs must be stored in the + underlying XML. If you really need to initialize the object after + creation, you can implement an ``_init(self)`` method that will be + called after object creation. + """ + def __init__(self, target, text=None): + # copied from PI() factory + cdef _Document doc + cdef xmlDoc* c_doc + target = _utf8(target) + if text is None: + text = b'' + else: + text = _utf8(text) + c_doc = _newXMLDoc() + doc = _documentFactory(c_doc, None) + self._c_node = _createPI(c_doc, _xcstr(target), _xcstr(text)) + if self._c_node is NULL: + raise MemoryError() + tree.xmlAddChild(c_doc, self._c_node) + _registerProxy(self, doc, self._c_node) + self._init() + +cdef class EntityBase(_Entity): + """All custom Entity classes must inherit from this one. + + To create an XML Entity instance, use the ``Entity()`` factory. + + Subclasses *must not* override __init__ or __new__ as it is + absolutely undefined when these objects will be created or + destroyed. All persistent state of Entities must be stored in the + underlying XML. If you really need to initialize the object after + creation, you can implement an ``_init(self)`` method that will be + called after object creation. + """ + def __init__(self, name): + cdef _Document doc + cdef xmlDoc* c_doc + name_utf = _utf8(name) + c_name = _xcstr(name_utf) + if c_name[0] == c'#': + if not _characterReferenceIsValid(c_name + 1): + raise ValueError, f"Invalid character reference: '{name}'" + elif not _xmlNameIsValid(c_name): + raise ValueError, f"Invalid entity reference: '{name}'" + c_doc = _newXMLDoc() + doc = _documentFactory(c_doc, None) + self._c_node = _createEntity(c_doc, c_name) + if self._c_node is NULL: + raise MemoryError() + tree.xmlAddChild(c_doc, self._c_node) + _registerProxy(self, doc, self._c_node) + self._init() + + +cdef int _validateNodeClass(xmlNode* c_node, cls) except -1: + if c_node.type == tree.XML_ELEMENT_NODE: + expected = ElementBase + elif c_node.type == tree.XML_COMMENT_NODE: + expected = CommentBase + elif c_node.type == tree.XML_ENTITY_REF_NODE: + expected = EntityBase + elif c_node.type == tree.XML_PI_NODE: + expected = PIBase + else: + assert False, f"Unknown node type: {c_node.type}" + + if not (isinstance(cls, type) and issubclass(cls, expected)): + raise TypeError( + f"result of class lookup must be subclass of {type(expected)}, got {type(cls)}") + return 0 + + +################################################################################ +# Element class lookup + +ctypedef public object (*_element_class_lookup_function)(object, _Document, xmlNode*) + +# class to store element class lookup functions +cdef public class ElementClassLookup [ type LxmlElementClassLookupType, + object LxmlElementClassLookup ]: + """ElementClassLookup(self) + Superclass of Element class lookups. + """ + cdef _element_class_lookup_function _lookup_function + + +cdef public class FallbackElementClassLookup(ElementClassLookup) \ + [ type LxmlFallbackElementClassLookupType, + object LxmlFallbackElementClassLookup ]: + """FallbackElementClassLookup(self, fallback=None) + + Superclass of Element class lookups with additional fallback. + """ + cdef readonly ElementClassLookup fallback + cdef _element_class_lookup_function _fallback_function + def __cinit__(self): + # fall back to default lookup + self._fallback_function = _lookupDefaultElementClass + + def __init__(self, ElementClassLookup fallback=None): + if fallback is not None: + self._setFallback(fallback) + else: + self._fallback_function = _lookupDefaultElementClass + + cdef void _setFallback(self, ElementClassLookup lookup): + """Sets the fallback scheme for this lookup method. + """ + self.fallback = lookup + self._fallback_function = lookup._lookup_function + if self._fallback_function is NULL: + self._fallback_function = _lookupDefaultElementClass + + def set_fallback(self, ElementClassLookup lookup not None): + """set_fallback(self, lookup) + + Sets the fallback scheme for this lookup method. + """ + self._setFallback(lookup) + +cdef inline object _callLookupFallback(FallbackElementClassLookup lookup, + _Document doc, xmlNode* c_node): + return lookup._fallback_function(lookup.fallback, doc, c_node) + + +################################################################################ +# default lookup scheme + +cdef class ElementDefaultClassLookup(ElementClassLookup): + """ElementDefaultClassLookup(self, element=None, comment=None, pi=None, entity=None) + Element class lookup scheme that always returns the default Element + class. + + The keyword arguments ``element``, ``comment``, ``pi`` and ``entity`` + accept the respective Element classes. + """ + cdef readonly object element_class + cdef readonly object comment_class + cdef readonly object pi_class + cdef readonly object entity_class + def __cinit__(self): + self._lookup_function = _lookupDefaultElementClass + + def __init__(self, element=None, comment=None, pi=None, entity=None): + if element is None: + self.element_class = _Element + elif issubclass(element, ElementBase): + self.element_class = element + else: + raise TypeError, "element class must be subclass of ElementBase" + + if comment is None: + self.comment_class = _Comment + elif issubclass(comment, CommentBase): + self.comment_class = comment + else: + raise TypeError, "comment class must be subclass of CommentBase" + + if entity is None: + self.entity_class = _Entity + elif issubclass(entity, EntityBase): + self.entity_class = entity + else: + raise TypeError, "Entity class must be subclass of EntityBase" + + if pi is None: + self.pi_class = None # special case, see below + elif issubclass(pi, PIBase): + self.pi_class = pi + else: + raise TypeError, "PI class must be subclass of PIBase" + +cdef object _lookupDefaultElementClass(state, _Document _doc, xmlNode* c_node): + "Trivial class lookup function that always returns the default class." + if c_node.type == tree.XML_ELEMENT_NODE: + if state is not None: + return (state).element_class + else: + return _Element + elif c_node.type == tree.XML_COMMENT_NODE: + if state is not None: + return (state).comment_class + else: + return _Comment + elif c_node.type == tree.XML_ENTITY_REF_NODE: + if state is not None: + return (state).entity_class + else: + return _Entity + elif c_node.type == tree.XML_PI_NODE: + if state is None or (state).pi_class is None: + # special case XSLT-PI + if c_node.name is not NULL and c_node.content is not NULL: + if tree.xmlStrcmp(c_node.name, "xml-stylesheet") == 0: + if tree.xmlStrstr(c_node.content, "text/xsl") is not NULL or \ + tree.xmlStrstr(c_node.content, "text/xml") is not NULL: + return _XSLTProcessingInstruction + return _ProcessingInstruction + else: + return (state).pi_class + else: + assert False, f"Unknown node type: {c_node.type}" + + +################################################################################ +# attribute based lookup scheme + +cdef class AttributeBasedElementClassLookup(FallbackElementClassLookup): + """AttributeBasedElementClassLookup(self, attribute_name, class_mapping, fallback=None) + Checks an attribute of an Element and looks up the value in a + class dictionary. + + Arguments: + - attribute name - '{ns}name' style string + - class mapping - Python dict mapping attribute values to Element classes + - fallback - optional fallback lookup mechanism + + A None key in the class mapping will be checked if the attribute is + missing. + """ + cdef object _class_mapping + cdef tuple _pytag + cdef const_xmlChar* _c_ns + cdef const_xmlChar* _c_name + def __cinit__(self): + self._lookup_function = _attribute_class_lookup + + def __init__(self, attribute_name, class_mapping, + ElementClassLookup fallback=None): + self._pytag = _getNsTag(attribute_name) + ns, name = self._pytag + if ns is None: + self._c_ns = NULL + else: + self._c_ns = _xcstr(ns) + self._c_name = _xcstr(name) + self._class_mapping = dict(class_mapping) + + FallbackElementClassLookup.__init__(self, fallback) + +cdef object _attribute_class_lookup(state, _Document doc, xmlNode* c_node): + cdef AttributeBasedElementClassLookup lookup + cdef python.PyObject* dict_result + + lookup = state + if c_node.type == tree.XML_ELEMENT_NODE: + value = _attributeValueFromNsName( + c_node, lookup._c_ns, lookup._c_name) + dict_result = python.PyDict_GetItem(lookup._class_mapping, value) + if dict_result is not NULL: + cls = dict_result + _validateNodeClass(c_node, cls) + return cls + return _callLookupFallback(lookup, doc, c_node) + + +################################################################################ +# per-parser lookup scheme + +cdef class ParserBasedElementClassLookup(FallbackElementClassLookup): + """ParserBasedElementClassLookup(self, fallback=None) + Element class lookup based on the XML parser. + """ + def __cinit__(self): + self._lookup_function = _parser_class_lookup + +cdef object _parser_class_lookup(state, _Document doc, xmlNode* c_node): + if doc._parser._class_lookup is not None: + return doc._parser._class_lookup._lookup_function( + doc._parser._class_lookup, doc, c_node) + return _callLookupFallback(state, doc, c_node) + + +################################################################################ +# custom class lookup based on node type, namespace, name + +cdef class CustomElementClassLookup(FallbackElementClassLookup): + """CustomElementClassLookup(self, fallback=None) + Element class lookup based on a subclass method. + + You can inherit from this class and override the method:: + + lookup(self, type, doc, namespace, name) + + to lookup the element class for a node. Arguments of the method: + * type: one of 'element', 'comment', 'PI', 'entity' + * doc: document that the node is in + * namespace: namespace URI of the node (or None for comments/PIs/entities) + * name: name of the element/entity, None for comments, target for PIs + + If you return None from this method, the fallback will be called. + """ + def __cinit__(self): + self._lookup_function = _custom_class_lookup + + def lookup(self, type, doc, namespace, name): + "lookup(self, type, doc, namespace, name)" + return None + +cdef object _custom_class_lookup(state, _Document doc, xmlNode* c_node): + cdef CustomElementClassLookup lookup + + lookup = state + + if c_node.type == tree.XML_ELEMENT_NODE: + element_type = "element" + elif c_node.type == tree.XML_COMMENT_NODE: + element_type = "comment" + elif c_node.type == tree.XML_PI_NODE: + element_type = "PI" + elif c_node.type == tree.XML_ENTITY_REF_NODE: + element_type = "entity" + else: + element_type = "element" + if c_node.name is NULL: + name = None + else: + name = funicode(c_node.name) + c_str = tree._getNs(c_node) + ns = funicode(c_str) if c_str is not NULL else None + + cls = lookup.lookup(element_type, doc, ns, name) + if cls is not None: + _validateNodeClass(c_node, cls) + return cls + return _callLookupFallback(lookup, doc, c_node) + + +################################################################################ +# read-only tree based class lookup + +cdef class PythonElementClassLookup(FallbackElementClassLookup): + """PythonElementClassLookup(self, fallback=None) + Element class lookup based on a subclass method. + + This class lookup scheme allows access to the entire XML tree in + read-only mode. To use it, re-implement the ``lookup(self, doc, + root)`` method in a subclass:: + + from lxml import etree, pyclasslookup + + class MyElementClass(etree.ElementBase): + honkey = True + + class MyLookup(pyclasslookup.PythonElementClassLookup): + def lookup(self, doc, root): + if root.tag == "sometag": + return MyElementClass + else: + for child in root: + if child.tag == "someothertag": + return MyElementClass + # delegate to default + return None + + If you return None from this method, the fallback will be called. + + The first argument is the opaque document instance that contains + the Element. The second argument is a lightweight Element proxy + implementation that is only valid during the lookup. Do not try + to keep a reference to it. Once the lookup is done, the proxy + will be invalid. + + Also, you cannot wrap such a read-only Element in an ElementTree, + and you must take care not to keep a reference to them outside of + the `lookup()` method. + + Note that the API of the Element objects is not complete. It is + purely read-only and does not support all features of the normal + `lxml.etree` API (such as XPath, extended slicing or some + iteration methods). + + See https://lxml.de/element_classes.html + """ + def __cinit__(self): + self._lookup_function = _python_class_lookup + + def lookup(self, doc, element): + """lookup(self, doc, element) + + Override this method to implement your own lookup scheme. + """ + return None + +cdef object _python_class_lookup(state, _Document doc, tree.xmlNode* c_node): + cdef PythonElementClassLookup lookup + cdef _ReadOnlyProxy proxy + lookup = state + + proxy = _newReadOnlyProxy(None, c_node) + cls = lookup.lookup(doc, proxy) + _freeReadOnlyProxies(proxy) + + if cls is not None: + _validateNodeClass(c_node, cls) + return cls + return _callLookupFallback(lookup, doc, c_node) + +################################################################################ +# Global setup + +cdef _element_class_lookup_function LOOKUP_ELEMENT_CLASS +cdef object ELEMENT_CLASS_LOOKUP_STATE + +cdef void _setElementClassLookupFunction( + _element_class_lookup_function function, object state): + global LOOKUP_ELEMENT_CLASS, ELEMENT_CLASS_LOOKUP_STATE + if function is NULL: + state = DEFAULT_ELEMENT_CLASS_LOOKUP + function = DEFAULT_ELEMENT_CLASS_LOOKUP._lookup_function + + ELEMENT_CLASS_LOOKUP_STATE = state + LOOKUP_ELEMENT_CLASS = function + +def set_element_class_lookup(ElementClassLookup lookup = None): + """set_element_class_lookup(lookup = None) + + Set the global element class lookup method. + + This defines the main entry point for looking up element implementations. + The standard implementation uses the :class:`ParserBasedElementClassLookup` + to delegate to different lookup schemes for each parser. + + .. warning:: + + This should only be changed by applications, not by library packages. + In most cases, parser specific lookups should be preferred, + which can be configured via + :meth:`~lxml.etree.XMLParser.set_element_class_lookup` + (and the same for HTML parsers). + + Globally replacing the element class lookup by something other than a + :class:`ParserBasedElementClassLookup` will prevent parser specific lookup + schemes from working. Several tools rely on parser specific lookups, + including :mod:`lxml.html` and :mod:`lxml.objectify`. + """ + if lookup is None or lookup._lookup_function is NULL: + _setElementClassLookupFunction(NULL, None) + else: + _setElementClassLookupFunction(lookup._lookup_function, lookup) + +# default setup: parser delegation +cdef ParserBasedElementClassLookup DEFAULT_ELEMENT_CLASS_LOOKUP +DEFAULT_ELEMENT_CLASS_LOOKUP = ParserBasedElementClassLookup() + +set_element_class_lookup(DEFAULT_ELEMENT_CLASS_LOOKUP) diff --git a/env/lib/python3.12/site-packages/lxml/cleanup.pxi b/env/lib/python3.12/site-packages/lxml/cleanup.pxi new file mode 100644 index 0000000..8e266b3 --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml/cleanup.pxi @@ -0,0 +1,215 @@ +# functions for tree cleanup and removing elements from subtrees + +def cleanup_namespaces(tree_or_element, top_nsmap=None, keep_ns_prefixes=None): + """cleanup_namespaces(tree_or_element, top_nsmap=None, keep_ns_prefixes=None) + + Remove all namespace declarations from a subtree that are not used + by any of the elements or attributes in that tree. + + If a 'top_nsmap' is provided, it must be a mapping from prefixes + to namespace URIs. These namespaces will be declared on the top + element of the subtree before running the cleanup, which allows + moving namespace declarations to the top of the tree. + + If a 'keep_ns_prefixes' is provided, it must be a list of prefixes. + These prefixes will not be removed as part of the cleanup. + """ + element = _rootNodeOrRaise(tree_or_element) + c_element = element._c_node + + if top_nsmap: + doc = element._doc + # declare namespaces from nsmap, then apply them to the subtree + _setNodeNamespaces(c_element, doc, None, top_nsmap) + moveNodeToDocument(doc, c_element.doc, c_element) + + keep_ns_prefixes = ( + set([_utf8(prefix) for prefix in keep_ns_prefixes]) + if keep_ns_prefixes else None) + + _removeUnusedNamespaceDeclarations(c_element, keep_ns_prefixes) + + +def strip_attributes(tree_or_element, *attribute_names): + """strip_attributes(tree_or_element, *attribute_names) + + Delete all attributes with the provided attribute names from an + Element (or ElementTree) and its descendants. + + Attribute names can contain wildcards as in `_Element.iter`. + + Example usage:: + + strip_attributes(root_element, + 'simpleattr', + '{http://some/ns}attrname', + '{http://other/ns}*') + """ + cdef _MultiTagMatcher matcher + element = _rootNodeOrRaise(tree_or_element) + if not attribute_names: + return + + matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, attribute_names) + matcher.cacheTags(element._doc) + if matcher.rejectsAllAttributes(): + return + _strip_attributes(element._c_node, matcher) + + +cdef _strip_attributes(xmlNode* c_node, _MultiTagMatcher matcher): + cdef xmlAttr* c_attr + cdef xmlAttr* c_next_attr + tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1) + if c_node.type == tree.XML_ELEMENT_NODE: + c_attr = c_node.properties + while c_attr is not NULL: + c_next_attr = c_attr.next + if matcher.matchesAttribute(c_attr): + tree.xmlRemoveProp(c_attr) + c_attr = c_next_attr + tree.END_FOR_EACH_ELEMENT_FROM(c_node) + + +def strip_elements(tree_or_element, *tag_names, bint with_tail=True): + """strip_elements(tree_or_element, *tag_names, with_tail=True) + + Delete all elements with the provided tag names from a tree or + subtree. This will remove the elements and their entire subtree, + including all their attributes, text content and descendants. It + will also remove the tail text of the element unless you + explicitly set the ``with_tail`` keyword argument option to False. + + Tag names can contain wildcards as in `_Element.iter`. + + Note that this will not delete the element (or ElementTree root + element) that you passed even if it matches. It will only treat + its descendants. If you want to include the root element, check + its tag name directly before even calling this function. + + Example usage:: + + strip_elements(some_element, + 'simpletagname', # non-namespaced tag + '{http://some/ns}tagname', # namespaced tag + '{http://some/other/ns}*' # any tag from a namespace + lxml.etree.Comment # comments + ) + """ + cdef _MultiTagMatcher matcher + doc = _documentOrRaise(tree_or_element) + element = _rootNodeOrRaise(tree_or_element) + if not tag_names: + return + + matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag_names) + matcher.cacheTags(doc) + if matcher.rejectsAll(): + return + + if isinstance(tree_or_element, _ElementTree): + # include PIs and comments next to the root node + if matcher.matchesType(tree.XML_COMMENT_NODE): + _removeSiblings(element._c_node, tree.XML_COMMENT_NODE, with_tail) + if matcher.matchesType(tree.XML_PI_NODE): + _removeSiblings(element._c_node, tree.XML_PI_NODE, with_tail) + _strip_elements(doc, element._c_node, matcher, with_tail) + +cdef _strip_elements(_Document doc, xmlNode* c_node, _MultiTagMatcher matcher, + bint with_tail): + cdef xmlNode* c_child + cdef xmlNode* c_next + + tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1) + if c_node.type == tree.XML_ELEMENT_NODE: + # we run through the children here to prevent any problems + # with the tree iteration which would occur if we unlinked the + # c_node itself + c_child = _findChildForwards(c_node, 0) + while c_child is not NULL: + c_next = _nextElement(c_child) + if matcher.matches(c_child): + if c_child.type == tree.XML_ELEMENT_NODE: + if not with_tail: + tree.xmlUnlinkNode(c_child) + _removeNode(doc, c_child) + else: + if with_tail: + _removeText(c_child.next) + tree.xmlUnlinkNode(c_child) + attemptDeallocation(c_child) + c_child = c_next + tree.END_FOR_EACH_ELEMENT_FROM(c_node) + + +def strip_tags(tree_or_element, *tag_names): + """strip_tags(tree_or_element, *tag_names) + + Delete all elements with the provided tag names from a tree or + subtree. This will remove the elements and their attributes, but + *not* their text/tail content or descendants. Instead, it will + merge the text content and children of the element into its + parent. + + Tag names can contain wildcards as in `_Element.iter`. + + Note that this will not delete the element (or ElementTree root + element) that you passed even if it matches. It will only treat + its descendants. + + Example usage:: + + strip_tags(some_element, + 'simpletagname', # non-namespaced tag + '{http://some/ns}tagname', # namespaced tag + '{http://some/other/ns}*' # any tag from a namespace + Comment # comments (including their text!) + ) + """ + cdef _MultiTagMatcher matcher + doc = _documentOrRaise(tree_or_element) + element = _rootNodeOrRaise(tree_or_element) + if not tag_names: + return + + matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag_names) + matcher.cacheTags(doc) + if matcher.rejectsAll(): + return + + if isinstance(tree_or_element, _ElementTree): + # include PIs and comments next to the root node + if matcher.matchesType(tree.XML_COMMENT_NODE): + _removeSiblings(element._c_node, tree.XML_COMMENT_NODE, 0) + if matcher.matchesType(tree.XML_PI_NODE): + _removeSiblings(element._c_node, tree.XML_PI_NODE, 0) + _strip_tags(doc, element._c_node, matcher) + +cdef _strip_tags(_Document doc, xmlNode* c_node, _MultiTagMatcher matcher): + cdef xmlNode* c_child + cdef xmlNode* c_next + + tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1) + if c_node.type == tree.XML_ELEMENT_NODE: + # we run through the children here to prevent any problems + # with the tree iteration which would occur if we unlinked the + # c_node itself + c_child = _findChildForwards(c_node, 0) + while c_child is not NULL: + if not matcher.matches(c_child): + c_child = _nextElement(c_child) + continue + if c_child.type == tree.XML_ELEMENT_NODE: + c_next = _findChildForwards(c_child, 0) or _nextElement(c_child) + _replaceNodeByChildren(doc, c_child) + if not attemptDeallocation(c_child): + if c_child.nsDef is not NULL: + # make namespaces absolute + moveNodeToDocument(doc, doc._c_doc, c_child) + c_child = c_next + else: + c_next = _nextElement(c_child) + tree.xmlUnlinkNode(c_child) + attemptDeallocation(c_child) + c_child = c_next + tree.END_FOR_EACH_ELEMENT_FROM(c_node) diff --git a/env/lib/python3.12/site-packages/lxml/cssselect.py b/env/lib/python3.12/site-packages/lxml/cssselect.py new file mode 100644 index 0000000..54cd75a --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml/cssselect.py @@ -0,0 +1,101 @@ +"""CSS Selectors based on XPath. + +This module supports selecting XML/HTML tags based on CSS selectors. +See the `CSSSelector` class for details. + +This is a thin wrapper around cssselect 0.7 or later. +""" + + +from . import etree +try: + import cssselect as external_cssselect +except ImportError: + raise ImportError( + 'cssselect does not seem to be installed. ' + 'See https://pypi.org/project/cssselect/') + + +SelectorSyntaxError = external_cssselect.SelectorSyntaxError +ExpressionError = external_cssselect.ExpressionError +SelectorError = external_cssselect.SelectorError + + +__all__ = ['SelectorSyntaxError', 'ExpressionError', 'SelectorError', + 'CSSSelector'] + + +class LxmlTranslator(external_cssselect.GenericTranslator): + """ + A custom CSS selector to XPath translator with lxml-specific extensions. + """ + def xpath_contains_function(self, xpath, function): + # Defined there, removed in later drafts: + # http://www.w3.org/TR/2001/CR-css3-selectors-20011113/#content-selectors + if function.argument_types() not in (['STRING'], ['IDENT']): + raise ExpressionError( + "Expected a single string or ident for :contains(), got %r" + % function.arguments) + value = function.arguments[0].value + return xpath.add_condition( + 'contains(__lxml_internal_css:lower-case(string(.)), %s)' + % self.xpath_literal(value.lower())) + + +class LxmlHTMLTranslator(LxmlTranslator, external_cssselect.HTMLTranslator): + """ + lxml extensions + HTML support. + """ + + +def _make_lower_case(context, s): + return s.lower() + +ns = etree.FunctionNamespace('http://codespeak.net/lxml/css/') +ns.prefix = '__lxml_internal_css' +ns['lower-case'] = _make_lower_case + + +class CSSSelector(etree.XPath): + """A CSS selector. + + Usage:: + + >>> from lxml import etree, cssselect + >>> select = cssselect.CSSSelector("a tag > child") + + >>> root = etree.XML("TEXT") + >>> [ el.tag for el in select(root) ] + ['child'] + + To use CSS namespaces, you need to pass a prefix-to-namespace + mapping as ``namespaces`` keyword argument:: + + >>> rdfns = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#' + >>> select_ns = cssselect.CSSSelector('root > rdf|Description', + ... namespaces={'rdf': rdfns}) + + >>> rdf = etree.XML(( + ... '' + ... 'blah' + ... '') % rdfns) + >>> [(el.tag, el.text) for el in select_ns(rdf)] + [('{http://www.w3.org/1999/02/22-rdf-syntax-ns#}Description', 'blah')] + + """ + def __init__(self, css, namespaces=None, translator='xml'): + if translator == 'xml': + translator = LxmlTranslator() + elif translator == 'html': + translator = LxmlHTMLTranslator() + elif translator == 'xhtml': + translator = LxmlHTMLTranslator(xhtml=True) + path = translator.css_to_xpath(css) + super().__init__(path, namespaces=namespaces) + self.css = css + + def __repr__(self): + return '<%s %x for %r>' % ( + self.__class__.__name__, + abs(id(self)), + self.css) diff --git a/env/lib/python3.12/site-packages/lxml/debug.pxi b/env/lib/python3.12/site-packages/lxml/debug.pxi new file mode 100644 index 0000000..e5bb061 --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml/debug.pxi @@ -0,0 +1,90 @@ +@cython.final +@cython.internal +cdef class _MemDebug: + """Debugging support for the memory allocation in libxml2. + """ + def bytes_used(self): + """bytes_used(self) + + Returns the total amount of memory (in bytes) currently used by libxml2. + Note that libxml2 constrains this value to a C int, which limits + the accuracy on 64 bit systems. + """ + return tree.xmlMemUsed() + + def blocks_used(self): + """blocks_used(self) + + Returns the total number of memory blocks currently allocated by libxml2. + Note that libxml2 constrains this value to a C int, which limits + the accuracy on 64 bit systems. + """ + return tree.xmlMemBlocks() + + def dict_size(self): + """dict_size(self) + + Returns the current size of the global name dictionary used by libxml2 + for the current thread. Each thread has its own dictionary. + """ + c_dict = __GLOBAL_PARSER_CONTEXT._getThreadDict(NULL) + if c_dict is NULL: + raise MemoryError() + return tree.xmlDictSize(c_dict) + + def dump(self, output_file=None, byte_count=None): + """dump(self, output_file=None, byte_count=None) + + Dumps the current memory blocks allocated by libxml2 to a file. + + The optional parameter 'output_file' specifies the file path. It defaults + to the file ".memorylist" in the current directory. + + The optional parameter 'byte_count' limits the number of bytes in the dump. + Note that this parameter is ignored when lxml is compiled against a libxml2 + version before 2.7.0. + """ + cdef Py_ssize_t c_count + if output_file is None: + output_file = b'.memorylist' + elif isinstance(output_file, unicode): + output_file.encode(sys.getfilesystemencoding()) + + f = stdio.fopen(output_file, "w") + if f is NULL: + raise IOError(f"Failed to create file {output_file.decode(sys.getfilesystemencoding())}") + try: + if byte_count is None: + tree.xmlMemDisplay(f) + else: + c_count = byte_count + tree.xmlMemDisplayLast(f, c_count) + finally: + stdio.fclose(f) + + def show(self, output_file=None, block_count=None): + """show(self, output_file=None, block_count=None) + + Dumps the current memory blocks allocated by libxml2 to a file. + The output file format is suitable for line diffing. + + The optional parameter 'output_file' specifies the file path. It defaults + to the file ".memorydump" in the current directory. + + The optional parameter 'block_count' limits the number of blocks + in the dump. + """ + if output_file is None: + output_file = b'.memorydump' + elif isinstance(output_file, unicode): + output_file.encode(sys.getfilesystemencoding()) + + f = stdio.fopen(output_file, "w") + if f is NULL: + raise IOError(f"Failed to create file {output_file.decode(sys.getfilesystemencoding())}") + try: + tree.xmlMemShow(f, block_count if block_count is not None else tree.xmlMemBlocks()) + finally: + stdio.fclose(f) + +memory_debugger = _MemDebug() diff --git a/env/lib/python3.12/site-packages/lxml/docloader.pxi b/env/lib/python3.12/site-packages/lxml/docloader.pxi new file mode 100644 index 0000000..7b38f43 --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml/docloader.pxi @@ -0,0 +1,178 @@ +# Custom resolver API + +ctypedef enum _InputDocumentDataType: + PARSER_DATA_INVALID + PARSER_DATA_EMPTY + PARSER_DATA_STRING + PARSER_DATA_FILENAME + PARSER_DATA_FILE + +@cython.final +@cython.internal +cdef class _InputDocument: + cdef _InputDocumentDataType _type + cdef bytes _data_bytes + cdef object _filename + cdef object _file + cdef bint _close_file + + def __cinit__(self): + self._type = PARSER_DATA_INVALID + + +cdef class Resolver: + "This is the base class of all resolvers." + def resolve(self, system_url, public_id, context): + """resolve(self, system_url, public_id, context) + + Override this method to resolve an external source by + ``system_url`` and ``public_id``. The third argument is an + opaque context object. + + Return the result of one of the ``resolve_*()`` methods. + """ + return None + + def resolve_empty(self, context): + """resolve_empty(self, context) + + Return an empty input document. + + Pass context as parameter. + """ + cdef _InputDocument doc_ref + doc_ref = _InputDocument() + doc_ref._type = PARSER_DATA_EMPTY + return doc_ref + + def resolve_string(self, string, context, *, base_url=None): + """resolve_string(self, string, context, base_url=None) + + Return a parsable string as input document. + + Pass data string and context as parameters. You can pass the + source URL or filename through the ``base_url`` keyword + argument. + """ + cdef _InputDocument doc_ref + if isinstance(string, unicode): + string = (string).encode('utf8') + elif not isinstance(string, bytes): + raise TypeError, "argument must be a byte string or unicode string" + doc_ref = _InputDocument() + doc_ref._type = PARSER_DATA_STRING + doc_ref._data_bytes = string + if base_url is not None: + doc_ref._filename = _encodeFilename(base_url) + return doc_ref + + def resolve_filename(self, filename, context): + """resolve_filename(self, filename, context) + + Return the name of a parsable file as input document. + + Pass filename and context as parameters. You can also pass a + URL with an HTTP, FTP or file target. + """ + cdef _InputDocument doc_ref + doc_ref = _InputDocument() + doc_ref._type = PARSER_DATA_FILENAME + doc_ref._filename = _encodeFilename(filename) + return doc_ref + + def resolve_file(self, f, context, *, base_url=None, bint close=True): + """resolve_file(self, f, context, base_url=None, close=True) + + Return an open file-like object as input document. + + Pass open file and context as parameters. You can pass the + base URL or filename of the file through the ``base_url`` + keyword argument. If the ``close`` flag is True (the + default), the file will be closed after reading. + + Note that using ``.resolve_filename()`` is more efficient, + especially in threaded environments. + """ + cdef _InputDocument doc_ref + try: + f.read + except AttributeError: + raise TypeError, "Argument is not a file-like object" + doc_ref = _InputDocument() + doc_ref._type = PARSER_DATA_FILE + if base_url is not None: + doc_ref._filename = _encodeFilename(base_url) + else: + doc_ref._filename = _getFilenameForFile(f) + doc_ref._close_file = close + doc_ref._file = f + return doc_ref + +@cython.final +@cython.internal +cdef class _ResolverRegistry: + cdef object _resolvers + cdef Resolver _default_resolver + def __cinit__(self, Resolver default_resolver=None): + self._resolvers = set() + self._default_resolver = default_resolver + + def add(self, Resolver resolver not None): + """add(self, resolver) + + Register a resolver. + + For each requested entity, the 'resolve' method of the resolver will + be called and the result will be passed to the parser. If this method + returns None, the request will be delegated to other resolvers or the + default resolver. The resolvers will be tested in an arbitrary order + until the first match is found. + """ + self._resolvers.add(resolver) + + def remove(self, resolver): + "remove(self, resolver)" + self._resolvers.discard(resolver) + + cdef _ResolverRegistry _copy(self): + cdef _ResolverRegistry registry + registry = _ResolverRegistry(self._default_resolver) + registry._resolvers = self._resolvers.copy() + return registry + + def copy(self): + "copy(self)" + return self._copy() + + def resolve(self, system_url, public_id, context): + "resolve(self, system_url, public_id, context)" + for resolver in self._resolvers: + result = resolver.resolve(system_url, public_id, context) + if result is not None: + return result + if self._default_resolver is None: + return None + return self._default_resolver.resolve(system_url, public_id, context) + + def __repr__(self): + return repr(self._resolvers) + + +@cython.internal +cdef class _ResolverContext(_ExceptionContext): + cdef _ResolverRegistry _resolvers + cdef _TempStore _storage + + cdef int clear(self) except -1: + _ExceptionContext.clear(self) + self._storage.clear() + return 0 + + +cdef _initResolverContext(_ResolverContext context, + _ResolverRegistry resolvers): + if resolvers is None: + context._resolvers = _ResolverRegistry() + else: + context._resolvers = resolvers + context._storage = _TempStore() diff --git a/env/lib/python3.12/site-packages/lxml/doctestcompare.py b/env/lib/python3.12/site-packages/lxml/doctestcompare.py new file mode 100644 index 0000000..8099771 --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml/doctestcompare.py @@ -0,0 +1,488 @@ +""" +lxml-based doctest output comparison. + +Note: normally, you should just import the `lxml.usedoctest` and +`lxml.html.usedoctest` modules from within a doctest, instead of this +one:: + + >>> import lxml.usedoctest # for XML output + + >>> import lxml.html.usedoctest # for HTML output + +To use this module directly, you must call ``lxmldoctest.install()``, +which will cause doctest to use this in all subsequent calls. + +This changes the way output is checked and comparisons are made for +XML or HTML-like content. + +XML or HTML content is noticed because the example starts with ``<`` +(it's HTML if it starts with ```` or include an ``any`` +attribute in the tag. An ``any`` tag matches any tag, while the +attribute matches any and all attributes. + +When a match fails, the reformatted example and gotten text is +displayed (indented), and a rough diff-like output is given. Anything +marked with ``+`` is in the output but wasn't supposed to be, and +similarly ``-`` means its in the example but wasn't in the output. + +You can disable parsing on one line with ``# doctest:+NOPARSE_MARKUP`` +""" + +from lxml import etree +import sys +import re +import doctest +try: + from html import escape as html_escape +except ImportError: + from cgi import escape as html_escape + +__all__ = ['PARSE_HTML', 'PARSE_XML', 'NOPARSE_MARKUP', 'LXMLOutputChecker', + 'LHTMLOutputChecker', 'install', 'temp_install'] + +PARSE_HTML = doctest.register_optionflag('PARSE_HTML') +PARSE_XML = doctest.register_optionflag('PARSE_XML') +NOPARSE_MARKUP = doctest.register_optionflag('NOPARSE_MARKUP') + +OutputChecker = doctest.OutputChecker + +def strip(v): + if v is None: + return None + else: + return v.strip() + +def norm_whitespace(v): + return _norm_whitespace_re.sub(' ', v) + +_html_parser = etree.HTMLParser(recover=False, remove_blank_text=True) + +def html_fromstring(html): + return etree.fromstring(html, _html_parser) + +# We use this to distinguish repr()s from elements: +_repr_re = re.compile(r'^<[^>]+ (at|object) ') +_norm_whitespace_re = re.compile(r'[ \t\n][ \t\n]+') + +class LXMLOutputChecker(OutputChecker): + + empty_tags = ( + 'param', 'img', 'area', 'br', 'basefont', 'input', + 'base', 'meta', 'link', 'col') + + def get_default_parser(self): + return etree.XML + + def check_output(self, want, got, optionflags): + alt_self = getattr(self, '_temp_override_self', None) + if alt_self is not None: + super_method = self._temp_call_super_check_output + self = alt_self + else: + super_method = OutputChecker.check_output + parser = self.get_parser(want, got, optionflags) + if not parser: + return super_method( + self, want, got, optionflags) + try: + want_doc = parser(want) + except etree.XMLSyntaxError: + return False + try: + got_doc = parser(got) + except etree.XMLSyntaxError: + return False + return self.compare_docs(want_doc, got_doc) + + def get_parser(self, want, got, optionflags): + parser = None + if NOPARSE_MARKUP & optionflags: + return None + if PARSE_HTML & optionflags: + parser = html_fromstring + elif PARSE_XML & optionflags: + parser = etree.XML + elif (want.strip().lower().startswith('' % el.tag + return '<%s %s>' % (el.tag, ' '.join(attrs)) + + def format_end_tag(self, el): + if isinstance(el, etree.CommentBase): + # FIXME: probably PIs should be handled specially too? + return '-->' + return '' % el.tag + + def collect_diff(self, want, got, html, indent): + parts = [] + if not len(want) and not len(got): + parts.append(' '*indent) + parts.append(self.collect_diff_tag(want, got)) + if not self.html_empty_tag(got, html): + parts.append(self.collect_diff_text(want.text, got.text)) + parts.append(self.collect_diff_end_tag(want, got)) + parts.append(self.collect_diff_text(want.tail, got.tail)) + parts.append('\n') + return ''.join(parts) + parts.append(' '*indent) + parts.append(self.collect_diff_tag(want, got)) + parts.append('\n') + if strip(want.text) or strip(got.text): + parts.append(' '*indent) + parts.append(self.collect_diff_text(want.text, got.text)) + parts.append('\n') + want_children = list(want) + got_children = list(got) + while want_children or got_children: + if not want_children: + parts.append(self.format_doc(got_children.pop(0), html, indent+2, '+')) + continue + if not got_children: + parts.append(self.format_doc(want_children.pop(0), html, indent+2, '-')) + continue + parts.append(self.collect_diff( + want_children.pop(0), got_children.pop(0), html, indent+2)) + parts.append(' '*indent) + parts.append(self.collect_diff_end_tag(want, got)) + parts.append('\n') + if strip(want.tail) or strip(got.tail): + parts.append(' '*indent) + parts.append(self.collect_diff_text(want.tail, got.tail)) + parts.append('\n') + return ''.join(parts) + + def collect_diff_tag(self, want, got): + if not self.tag_compare(want.tag, got.tag): + tag = '%s (got: %s)' % (want.tag, got.tag) + else: + tag = got.tag + attrs = [] + any = want.tag == 'any' or 'any' in want.attrib + for name, value in sorted(got.attrib.items()): + if name not in want.attrib and not any: + attrs.append('+%s="%s"' % (name, self.format_text(value, False))) + else: + if name in want.attrib: + text = self.collect_diff_text(want.attrib[name], value, False) + else: + text = self.format_text(value, False) + attrs.append('%s="%s"' % (name, text)) + if not any: + for name, value in sorted(want.attrib.items()): + if name in got.attrib: + continue + attrs.append('-%s="%s"' % (name, self.format_text(value, False))) + if attrs: + tag = '<%s %s>' % (tag, ' '.join(attrs)) + else: + tag = '<%s>' % tag + return tag + + def collect_diff_end_tag(self, want, got): + if want.tag != got.tag: + tag = '%s (got: %s)' % (want.tag, got.tag) + else: + tag = got.tag + return '' % tag + + def collect_diff_text(self, want, got, strip=True): + if self.text_compare(want, got, strip): + if not got: + return '' + return self.format_text(got, strip) + text = '%s (got: %s)' % (want, got) + return self.format_text(text, strip) + +class LHTMLOutputChecker(LXMLOutputChecker): + def get_default_parser(self): + return html_fromstring + +def install(html=False): + """ + Install doctestcompare for all future doctests. + + If html is true, then by default the HTML parser will be used; + otherwise the XML parser is used. + """ + if html: + doctest.OutputChecker = LHTMLOutputChecker + else: + doctest.OutputChecker = LXMLOutputChecker + +def temp_install(html=False, del_module=None): + """ + Use this *inside* a doctest to enable this checker for this + doctest only. + + If html is true, then by default the HTML parser will be used; + otherwise the XML parser is used. + """ + if html: + Checker = LHTMLOutputChecker + else: + Checker = LXMLOutputChecker + frame = _find_doctest_frame() + dt_self = frame.f_locals['self'] + checker = Checker() + old_checker = dt_self._checker + dt_self._checker = checker + # The unfortunate thing is that there is a local variable 'check' + # in the function that runs the doctests, that is a bound method + # into the output checker. We have to update that. We can't + # modify the frame, so we have to modify the object in place. The + # only way to do this is to actually change the func_code + # attribute of the method. We change it, and then wait for + # __record_outcome to be run, which signals the end of the __run + # method, at which point we restore the previous check_output + # implementation. + check_func = frame.f_locals['check'].__func__ + checker_check_func = checker.check_output.__func__ + # Because we can't patch up func_globals, this is the only global + # in check_output that we care about: + doctest.etree = etree + _RestoreChecker(dt_self, old_checker, checker, + check_func, checker_check_func, + del_module) + +class _RestoreChecker: + def __init__(self, dt_self, old_checker, new_checker, check_func, clone_func, + del_module): + self.dt_self = dt_self + self.checker = old_checker + self.checker._temp_call_super_check_output = self.call_super + self.checker._temp_override_self = new_checker + self.check_func = check_func + self.clone_func = clone_func + self.del_module = del_module + self.install_clone() + self.install_dt_self() + def install_clone(self): + self.func_code = self.check_func.__code__ + self.func_globals = self.check_func.__globals__ + self.check_func.__code__ = self.clone_func.__code__ + def uninstall_clone(self): + self.check_func.__code__ = self.func_code + def install_dt_self(self): + self.prev_func = self.dt_self._DocTestRunner__record_outcome + self.dt_self._DocTestRunner__record_outcome = self + def uninstall_dt_self(self): + self.dt_self._DocTestRunner__record_outcome = self.prev_func + def uninstall_module(self): + if self.del_module: + import sys + del sys.modules[self.del_module] + if '.' in self.del_module: + package, module = self.del_module.rsplit('.', 1) + package_mod = sys.modules[package] + delattr(package_mod, module) + def __call__(self, *args, **kw): + self.uninstall_clone() + self.uninstall_dt_self() + del self.checker._temp_override_self + del self.checker._temp_call_super_check_output + result = self.prev_func(*args, **kw) + self.uninstall_module() + return result + def call_super(self, *args, **kw): + self.uninstall_clone() + try: + return self.check_func(*args, **kw) + finally: + self.install_clone() + +def _find_doctest_frame(): + import sys + frame = sys._getframe(1) + while frame: + l = frame.f_locals + if 'BOOM' in l: + # Sign of doctest + return frame + frame = frame.f_back + raise LookupError( + "Could not find doctest (only use this function *inside* a doctest)") + +__test__ = { + 'basic': ''' + >>> temp_install() + >>> print """stuff""" + ... + >>> print """""" + + + + >>> print """blahblahblah""" # doctest: +NOPARSE_MARKUP, +ELLIPSIS + ...foo /> + '''} + +if __name__ == '__main__': + import doctest + doctest.testmod() + + diff --git a/env/lib/python3.12/site-packages/lxml/dtd.pxi b/env/lib/python3.12/site-packages/lxml/dtd.pxi new file mode 100644 index 0000000..348212c --- /dev/null +++ b/env/lib/python3.12/site-packages/lxml/dtd.pxi @@ -0,0 +1,478 @@ +# support for DTD validation +from lxml.includes cimport dtdvalid + +cdef class DTDError(LxmlError): + """Base class for DTD errors. + """ + +cdef class DTDParseError(DTDError): + """Error while parsing a DTD. + """ + +cdef class DTDValidateError(DTDError): + """Error while validating an XML document with a DTD. + """ + + +cdef inline int _assertValidDTDNode(node, void *c_node) except -1: + assert c_node is not NULL, "invalid DTD proxy at %s" % id(node) + + +@cython.final +@cython.internal +@cython.freelist(8) +cdef class _DTDElementContentDecl: + cdef DTD _dtd + cdef tree.xmlElementContent* _c_node + + def __repr__(self): + return "<%s.%s object name=%r type=%r occur=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.name, self.type, self.occur, id(self)) + + @property + def name(self): + _assertValidDTDNode(self, self._c_node) + return funicodeOrNone(self._c_node.name) + + @property + def type(self): + _assertValidDTDNode(self, self._c_node) + cdef int type = self._c_node.type + if type == tree.XML_ELEMENT_CONTENT_PCDATA: + return "pcdata" + elif type == tree.XML_ELEMENT_CONTENT_ELEMENT: + return "element" + elif type == tree.XML_ELEMENT_CONTENT_SEQ: + return "seq" + elif type == tree.XML_ELEMENT_CONTENT_OR: + return "or" + else: + return None + + @property + def occur(self): + _assertValidDTDNode(self, self._c_node) + cdef int occur = self._c_node.ocur + if occur == tree.XML_ELEMENT_CONTENT_ONCE: + return "once" + elif occur == tree.XML_ELEMENT_CONTENT_OPT: + return "opt" + elif occur == tree.XML_ELEMENT_CONTENT_MULT: + return "mult" + elif occur == tree.XML_ELEMENT_CONTENT_PLUS: + return "plus" + else: + return None + + @property + def left(self): + _assertValidDTDNode(self, self._c_node) + c1 = self._c_node.c1 + if c1: + node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl) + node._dtd = self._dtd + node._c_node = c1 + return node + else: + return None + + @property + def right(self): + _assertValidDTDNode(self, self._c_node) + c2 = self._c_node.c2 + if c2: + node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl) + node._dtd = self._dtd + node._c_node = c2 + return node + else: + return None + + +@cython.final +@cython.internal +@cython.freelist(8) +cdef class _DTDAttributeDecl: + cdef DTD _dtd + cdef tree.xmlAttribute* _c_node + + def __repr__(self): + return "<%s.%s object name=%r elemname=%r prefix=%r type=%r default=%r default_value=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.name, self.elemname, self.prefix, self.type, self.default, self.default_value, id(self)) + + @property + def name(self): + _assertValidDTDNode(self, self._c_node) + return funicodeOrNone(self._c_node.name) + + @property + def elemname(self): + _assertValidDTDNode(self, self._c_node) + return funicodeOrNone(self._c_node.elem) + + @property + def prefix(self): + _assertValidDTDNode(self, self._c_node) + return funicodeOrNone(self._c_node.prefix) + + @property + def type(self): + _assertValidDTDNode(self, self._c_node) + cdef int type = self._c_node.atype + if type == tree.XML_ATTRIBUTE_CDATA: + return "cdata" + elif type == tree.XML_ATTRIBUTE_ID: + return "id" + elif type == tree.XML_ATTRIBUTE_IDREF: + return "idref" + elif type == tree.XML_ATTRIBUTE_IDREFS: + return "idrefs" + elif type == tree.XML_ATTRIBUTE_ENTITY: + return "entity" + elif type == tree.XML_ATTRIBUTE_ENTITIES: + return "entities" + elif type == tree.XML_ATTRIBUTE_NMTOKEN: + return "nmtoken" + elif type == tree.XML_ATTRIBUTE_NMTOKENS: + return "nmtokens" + elif type == tree.XML_ATTRIBUTE_ENUMERATION: + return "enumeration" + elif type == tree.XML_ATTRIBUTE_NOTATION: + return "notation" + else: + return None + + @property + def default(self): + _assertValidDTDNode(self, self._c_node) + cdef int default = self._c_node.def_ + if default == tree.XML_ATTRIBUTE_NONE: + return "none" + elif default == tree.XML_ATTRIBUTE_REQUIRED: + return "required" + elif default == tree.XML_ATTRIBUTE_IMPLIED: + return "implied" + elif default == tree.XML_ATTRIBUTE_FIXED: + return "fixed" + else: + return None + + @property + def default_value(self): + _assertValidDTDNode(self, self._c_node) + return funicodeOrNone(self._c_node.defaultValue) + + def itervalues(self): + _assertValidDTDNode(self, self._c_node) + cdef tree.xmlEnumeration *c_node = self._c_node.tree + while c_node is not NULL: + yield funicode(c_node.name) + c_node = c_node.next + + def values(self): + return list(self.itervalues()) + + +@cython.final +@cython.internal +@cython.freelist(8) +cdef class _DTDElementDecl: + cdef DTD _dtd + cdef tree.xmlElement* _c_node + + def __repr__(self): + return "<%s.%s object name=%r prefix=%r type=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.name, self.prefix, self.type, id(self)) + + @property + def name(self): + _assertValidDTDNode(self, self._c_node) + return funicodeOrNone(self._c_node.name) + + @property + def prefix(self): + _assertValidDTDNode(self, self._c_node) + return funicodeOrNone(self._c_node.prefix) + + @property + def type(self): + _assertValidDTDNode(self, self._c_node) + cdef int type = self._c_node.etype + if type == tree.XML_ELEMENT_TYPE_UNDEFINED: + return "undefined" + elif type == tree.XML_ELEMENT_TYPE_EMPTY: + return "empty" + elif type == tree.XML_ELEMENT_TYPE_ANY: + return "any" + elif type == tree.XML_ELEMENT_TYPE_MIXED: + return "mixed" + elif type == tree.XML_ELEMENT_TYPE_ELEMENT: + return "element" + else: + return None + + @property + def content(self): + _assertValidDTDNode(self, self._c_node) + cdef tree.xmlElementContent *content = self._c_node.content + if content: + node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl) + node._dtd = self._dtd + node._c_node = content + return node + else: + return None + + def iterattributes(self): + _assertValidDTDNode(self, self._c_node) + cdef tree.xmlAttribute *c_node = self._c_node.attributes + while c_node: + node = <_DTDAttributeDecl>_DTDAttributeDecl.__new__(_DTDAttributeDecl) + node._dtd = self._dtd + node._c_node = c_node + yield node + c_node = c_node.nexth + + def attributes(self): + return list(self.iterattributes()) + + +@cython.final +@cython.internal +@cython.freelist(8) +cdef class _DTDEntityDecl: + cdef DTD _dtd + cdef tree.xmlEntity* _c_node + def __repr__(self): + return "<%s.%s object name=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.name, id(self)) + + @property + def name(self): + _assertValidDTDNode(self, self._c_node) + return funicodeOrNone(self._c_node.name) + + @property + def orig(self): + _assertValidDTDNode(self, self._c_node) + return funicodeOrNone(self._c_node.orig) + + @property + def content(self): + _assertValidDTDNode(self, self._c_node) + return funicodeOrNone(self._c_node.content) + + @property + def system_url(self): + _assertValidDTDNode(self, self._c_node) + return funicodeOrNone(self._c_node.SystemID) + + +################################################################################ +# DTD + +cdef class DTD(_Validator): + """DTD(self, file=None, external_id=None) + A DTD validator. + + Can load from filesystem directly given a filename or file-like object. + Alternatively, pass the keyword parameter ``external_id`` to load from a + catalog. + """ + cdef tree.xmlDtd* _c_dtd + def __init__(self, file=None, *, external_id=None): + _Validator.__init__(self) + if file is not None: + file = _getFSPathOrObject(file) + if _isString(file): + file = _encodeFilename(file) + with self._error_log: + orig_loader = _register_document_loader() + self._c_dtd = xmlparser.xmlParseDTD(NULL, _xcstr(file)) + _reset_document_loader(orig_loader) + elif hasattr(file, 'read'): + orig_loader = _register_document_loader() + self._c_dtd = _parseDtdFromFilelike(file) + _reset_document_loader(orig_loader) + else: + raise DTDParseError, "file must be a filename, file-like or path-like object" + elif external_id is not None: + with self._error_log: + orig_loader = _register_document_loader() + self._c_dtd = xmlparser.xmlParseDTD(external_id, NULL) + _reset_document_loader(orig_loader) + else: + raise DTDParseError, "either filename or external ID required" + + if self._c_dtd is NULL: + raise DTDParseError( + self._error_log._buildExceptionMessage("error parsing DTD"), + self._error_log) + + @property + def name(self): + if self._c_dtd is NULL: + return None + return funicodeOrNone(self._c_dtd.name) + + @property + def external_id(self): + if self._c_dtd is NULL: + return None + return funicodeOrNone(self._c_dtd.ExternalID) + + @property + def system_url(self): + if self._c_dtd is NULL: + return None + return funicodeOrNone(self._c_dtd.SystemID) + + def iterelements(self): + cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL + while c_node is not NULL: + if c_node.type == tree.XML_ELEMENT_DECL: + node = _DTDElementDecl() + node._dtd = self + node._c_node = c_node + yield node + c_node = c_node.next + + def elements(self): + return list(self.iterelements()) + + def iterentities(self): + cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL + while c_node is not NULL: + if c_node.type == tree.XML_ENTITY_DECL: + node = _DTDEntityDecl() + node._dtd = self + node._c_node = c_node + yield node + c_node = c_node.next + + def entities(self): + return list(self.iterentities()) + + def __dealloc__(self): + tree.xmlFreeDtd(self._c_dtd) + + def __call__(self, etree): + """__call__(self, etree) + + Validate doc using the DTD. + + Returns true if the document is valid, false if not. + """ + cdef _Document doc + cdef _Element root_node + cdef xmlDoc* c_doc + cdef dtdvalid.xmlValidCtxt* valid_ctxt + cdef int ret = -1 + + assert self._c_dtd is not NULL, "DTD not initialised" + doc = _documentOrRaise(etree) + root_node = _rootNodeOrRaise(etree) + + valid_ctxt = dtdvalid.xmlNewValidCtxt() + if valid_ctxt is NULL: + raise DTDError("Failed to create validation context") + + # work around error reporting bug in libxml2 <= 2.9.1 (and later?) + # https://bugzilla.gnome.org/show_bug.cgi?id=724903 + valid_ctxt.error = _nullGenericErrorFunc + valid_ctxt.userData = NULL + + try: + with self._error_log: + c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node) + ret = dtdvalid.xmlValidateDtd(valid_ctxt, c_doc, self._c_dtd) + _destroyFakeDoc(doc._c_doc, c_doc) + finally: + dtdvalid.xmlFreeValidCtxt(valid_ctxt) + + if ret == -1: + raise DTDValidateError("Internal error in DTD validation", + self._error_log) + return ret == 1 + + +cdef tree.xmlDtd* _parseDtdFromFilelike(file) except NULL: + cdef _ExceptionContext exc_context + cdef _FileReaderContext dtd_parser + cdef _ErrorLog error_log + cdef tree.xmlDtd* c_dtd = NULL + exc_context = _ExceptionContext() + dtd_parser = _FileReaderContext(file, exc_context, None) + error_log = _ErrorLog() + + with error_log: + c_dtd = dtd_parser._readDtd() + + exc_context._raise_if_stored() + if c_dtd is NULL: + raise DTDParseError("error parsing DTD", error_log) + return c_dtd + +cdef DTD _dtdFactory(tree.xmlDtd* c_dtd): + # do not run through DTD.__init__()! + cdef DTD dtd + if c_dtd is NULL: + return None + dtd = DTD.__new__(DTD) + dtd._c_dtd = _copyDtd(c_dtd) + _Validator.__init__(dtd) + return dtd + + +cdef tree.xmlDtd* _copyDtd(tree.xmlDtd* c_orig_dtd) except NULL: + """ + Copy a DTD. libxml2 (currently) fails to set up the element->attributes + links when copying DTDs, so we have to rebuild them here. + """ + c_dtd = tree.xmlCopyDtd(c_orig_dtd) + if not c_dtd: + raise MemoryError + cdef tree.xmlNode* c_node = c_dtd.children + while c_node: + if c_node.type == tree.XML_ATTRIBUTE_DECL: + _linkDtdAttribute(c_dtd, c_node) + c_node = c_node.next + return c_dtd + + +cdef void _linkDtdAttribute(tree.xmlDtd* c_dtd, tree.xmlAttribute* c_attr) noexcept: + """ + Create the link to the DTD attribute declaration from the corresponding + element declaration. + """ + c_elem = dtdvalid.xmlGetDtdElementDesc(c_dtd, c_attr.elem) + if not c_elem: + # no such element? something is wrong with the DTD ... + return + c_pos = c_elem.attributes + if not c_pos: + c_elem.attributes = c_attr + c_attr.nexth = NULL + return + # libxml2 keeps namespace declarations first, and we need to make + # sure we don't re-insert attributes that are already there + if _isDtdNsDecl(c_attr): + if not _isDtdNsDecl(c_pos): + c_elem.attributes = c_attr + c_attr.nexth = c_pos + return + while c_pos != c_attr and c_pos.nexth and _isDtdNsDecl(c_pos.nexth): + c_pos = c_pos.nexth + else: + # append at end + while c_pos != c_attr and c_pos.nexth: + c_pos = c_pos.nexth + if c_pos == c_attr: + return + c_attr.nexth = c_pos.nexth + c_pos.nexth = c_attr + + +cdef bint _isDtdNsDecl(tree.xmlAttribute* c_attr) noexcept: + if cstring_h.strcmp(c_attr.name, "xmlns") == 0: + return True + if (c_attr.prefix is not NULL and + cstring_h.strcmp(c_attr.prefix, "xmlns") == 0): + return True + return False diff --git a/env/lib/python3.12/site-packages/lxml/etree.cpython-312-aarch64-linux-gnu.so b/env/lib/python3.12/site-packages/lxml/etree.cpython-312-aarch64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..a86a663c2f8dc8d485621efc60447bb562e5832a GIT binary patch literal 5094584 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

    <5drdR)?L& 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

    F*?nc7?-ZlOV{buF>bs6J5Xnu43A<8Ec#bOkqE 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%0D)q$ndvy+aR2hjG7|?}Gd%7N)TV zA5R+WCj53W<6wA^XUloV_LB`WYrkQ1T9i8QD~@&hAEllsI(qZKo=ITYoQ?;}wtY_7 z%JW$WKVw(%?e(5{Wad<(dh;5~_o#Tc1pSnbY~cFq-yfDZlXtY{DjRSb*UF*F+_!NN zI82yBc%vaSgmXrQ#ENA1E&2lf^Lg;H9rsae_~OTZC}~=w@+d>+fAIY$?%5&@$WT7L zE!Mxoo-vTkNeWxgmwGVWdz58ay);U}lP-;Po>$7>dw$3)#y$Q~ZhqG2&d)6Fd9dXt zIzMD8eObmIWoO#ykK|H(pM+oeYZKjUJUA?|CvYfJg9YFs? zmnV3xehS}_i)-Q!`K|KS^1s(UJ<-Bid!u4$YKXg$KSr`B|FhI&-2B=!k=v5e5!NJ`BXmqvt_YGoKH3AntSiAuv^$u{`=5S z<-2P#*MoU{d?Q}enCpy+OZe^*aG9weIg#x4U=M|Z_09$OM3rZKCVAF1H&Oq^Q)$*S zHeNt{8S4w|i))o%Cl1|%6*U=XMNZ6`%r~KD`p`)25QlDQ&bH9l@Gdzv&`Z3hxUbQ? z2c0`+&#p4@UKVj*mw-9y`PR?3QU2>)-uXoDSk|D}9G<(_+oes?KkJR{=w#m}gH_D? zHG#cjR-`yKi}zJVHDmdA`Vr)vt^7~<2aWwU|CQ7II{r()M#&S7{aGX38f3j(G#SNO z(NB3EK6duuE0`OL=JFMoI1+rh^_r)McRQ`v3B<~tX38#24COnm3#yDET%W_Wc@N+3 zF68^u*@LQk2LD}o#^2hpC{pqd*JqaFqbamLvj9KKEY=p1vVHK48>@LQ>saXFm7V;d zOF1XpULQ#+UjX{YtdHm%sL-HX-ppIRZ+u}kEyFhL+lk4OJ{k;7<%g4fu;*{~8c7g6 zsCAMw{t5N<6@0ticF4aX8CpvYaLHzh7&Y`xzdAkxYrPL$oHdt@vOTIzd9UtZ%_Ytl zc-LI&i91#ss+~0#@wDjDPHeE+C>#C`eODZ^)?1#@zPA5c>n-#tx8B0qOVEkiO>u43 zTUdw1XK&(>ziz$dQ{=mA2kR}5GM3(PP(H~U#CP~&|IvEOEcB?m-qH@8lxN~;{(tRy z3;x$g{(1}eZHj!qp7oY`)?03;9p3elW6+mc=hu3PnUCeImpsb*8{wJf;ny9lmt421 z|9Xk?Erj{@4)lcRr1cWne^tftLD~J z*{7x$u?%)i`&z2Np5jR#~YmhAN$DVb_zRIFAYpDco&jHhy&GO~zpB zMtf~_^d6^eYvvp5Tn-0f=i0PyOmX(wgM`m$Rdhk9WeWK&>#_fe(SKRvWU%*@{jj(8 z6uixtfh}|E8eq!|_N^6v3OU!bzhr1)9rz-|Js*8=v8m4@-U!)KY|rIiW=(9Xd){Ig znI8f_rYPI+Q^{0wPMPNM?E$N95aUlja&;PeUFE!6z()QVItc4-LbnvcyU0<0yleLK z*g8vecJ(8=NLaP7eheMbM?W472I!-^l7nJtY|Jy*G|g?qE7JYakKT1;(d6e~ec?Ne zIb*!CEIHNQYr#5>#kU&gE1Y#@@FaUX$PI@dD}8m?tOwV#wsR@DhPC$I%G#Rry!Kek zrA+DA%PHSGMwc^2)+Y9tkHZh1M_bC5AGB8o(+{;jMn5!96`$P5dPQWnikq|s5O#RX z;(Q44NEkl5ocD}=Wv_&IS?xN-w52pLgSL2S;jZCmJzsWPG*Zm^w|P%8FJ0~GX7R48 zn+;BJ_ltnB79bCS0h-ShUJut=bO8GPyX)am&w99G_gwv~xuNuPoc{yS&+HlOw;mp0 zjm%vSzX5C|y^|VbjnD1Z!M7!PXifY?_({AN@6NW$*X!!$xMwXql(!b%^8;HqBO|sf z{S&&mS@y;w(-CBvKckzg(aj%%N!2Fpg%yq^FI_+Eb_rNa_^tJE8^3kJ)530w+4tL+ z?h|tlUaE)ZzIvjhN&5!0e?fT1tMC5^rgHVY&X&;LgX=u&<2vhP2x|(G?5(!)6gHT zKK~m0-uQL+{r2DO7{A|#Y^vS=A^hI>&*JxmdH8*qgWsbC@cV)6!I0h;K9=9atFKd| zILF+<@?iK5VR-akhXtk=HfQhZwjkew({_mEhYhfd-{$`fJWmdye;Lp31AnG$Jl_%Y z;Q1hXT1pk)nTI)(0fSdK8@qqJCwRW&KY-`8*4-%m2c9>3{}m5v=mA*ht=Q zlt0Q|=iMn*|6h^X*T6Xc2+uEJ?(M7n!?^FK65b za35^G^6Rkq-oNdO%~v^i`~~V%ZV_SHcO5_bjS8}U{l_?$lg=K_iLB~eEQPG?B(}cpMHOcuP*gN=9uJDNnOH!;_N7=<4OMNS#!1S znNB?JE-k?qYjd%GvlDjQpRo3&TxT1s%v#29ukn1(UI6v;Hs*`+=dR%Vo%C^5-95x{ zGPhZ!^;@Dm`kjpz!M=TdK0YA&q!>bjF^Jo(Uu@Ogg}*5?$I1*}Y?OR$eF9RjRf zhCFMTA?@SCc5I_8H#P;?$b@cXy@USDrvA*j-CEMi{jq_2u&;(#!VS=C*`u5#Oq)#% z9R11V>te3^H1%ewpL#NP-q{=TLS32UO`>l_;ZnWwaLgy~pzWfGgg>T|I51qpnYx3N4>7L|wgf?%a47Y6&+8thG z(^>T0NS=s6haa!=Mu^iaPIOIWe=D?q4|-3B-d$52dPCcd=*4>a>G}if>1X}*(4F?Y zH6I!9(15x#;fVZ)ky_Dy>2+V3yoaf?n2$pTZ<|E>IPWUGC!j`QFJVZIUzEXzzp6jRTk6g!oPxhH+=kL;D%0*|Y9B&x`+TzkC zKs%KCJ)?XJI~dmx&kONFfV}nZzy~2uc_Ec|Bxj}oa@YPai|Ij!3p0UimZi{=>PQ3km{MPcvYM*ih{U#oM`e(LpCA8JvBVt@!>fd|;g?;TO8+t2^TF%a4zL)biw8 zyaw5%ZCZ1%KCmXhqdES9N83{HPQIVNnf&~n@SXH=ntE!EMPC>DS|%|Lz87cE&hkXj zr?!nz?D~p*(VNiQ<uBe030h<>YMkgQ(5OkeQp{zcn_S_msz7 zcD$2z%jT!)#{}Y5n<+c!=(c8+3;+8(H1W~S=HJ3&jEVH^fI9eiz`38Lek+W?`Cs>2 zbs_fQ>71Ka$RU{G9nmL@9ZH+?^1Np)O*LmWrejuJdn^2qPmiZ;y-;-hiR}689Vckj z)``s8emn9(9Ajnf5-(Gic$6rB)=uOzzr4sJ(3iHQd0#UB_$@XM$A8b-2k!?w^#|x@ z92}rNitj{U=t3?R+7C@nAm0Uc_FkW`1)%g4rL^z`k2|zv%$@%%Tm?pVL1EDRdk3L%#Cc7{K-~qdex7D^0vQ z`S7X-MrtR+n`SQy7?d^*VeP6c?%|_2WBU|i81cwpL^233Jk6Y1I(8X(5A(li<{R43 zmgc$3f6&T&*UER&L7(V5&v?ao{sc1FPu`IY$<(j;PVyr>s2s)G$1)#17=Fu+lQOg; z&RO@8Z`!&rezmO&yJGejCST+Ca;wSg1%E5MDn}E=_D2TC>PsWFpSPAY9ReMsL!V=Q zbsz22eB^1a6Xx2NSj}~#nI8;HJjL~O<{I2bJ0It_+BwhM8%}P4y%LXb&(32%BC(R| z{miqWiHEq>Sv`trNpP*)@a^bAcxa8}zuvNl{}_;1&a*VR8Qu1(t=f<95^aTEIsTFj z4{Sp280$yKcUcUt_@u{?ZH>M3cxv4VEjo`PiOlBf-cI&-y~+KQhi6mpY@8S)__ZHy zOmhEu?kC|#*H%+*Cj2eRKv%FnJ63#El&XqJ|0@sUJ+xVNFU5DVA@E7=+W_BM#2yy1 zvvJ}|{>(QKPun82jk#}Yp*7+Z@py&safJJCQI6%Inkf0hS7H>` zubb zky$-K#<2<;x>D=vtgjz|e&T=Yn})xKB|ZatJYw4IOZ*Slw*Mw?PaS&5rIUDFe5^e; z;&tu2*%jW=xCytp{HC$9m>X%X>PwA}NoNPqBN6y5%GnIbHP(2QlZOArhtkWEhXA~o zE@r>nBeKu_Sm!7|dlLLH$@->;{Y~M&^h|=+a&{kHGuSqV8Sb=k?Ly{nVf5HPGq-Wu zEWS;ls|{XR&b)>(9Mo}A@4RM4@4RLYwQq(!uhIC{LuVIzpdT{zoV|1B!~JD2Fw@A& zj@y5i)Bd~upS3@7yWM`x#Z3E?Gc&?JW?rWDciHo@)bH%}%jT;6vuVGJ_h!@nWq0(K zMdFoPqYw4(Q{2priT{IMW9NN!hwQQD*Vb?P>!t{Hc{X@Zdc3;l#Ek6!weWuUH$9W^ zSIm{qO7?#$&%`@L@J>z0icJUmbzNa)#yklQ2oNtB;M~XuSy!}*=2{PHeX(e6;CrlB zK5R`2(f2OOeGGn9|00|dScI+YqTCt>9~EIQ>2urRyI8q<^t;WibJQN_ureEO{Jw>l zMZQ(e{VETgs-V;CvpC!BaWhB#g=j3A|NfzpCec)NhaT%suOxDjuje9l%17@@q#D30 z=s}-{pM2C4JptW)e&J{BdPXkhLfbsl&^4xvp^5wX{v6ule)~CP`tf<_d-)?(Ru}W! z!F+4#VeB=}ecAb57~~Gh5C%EP(5pDHnBRMuJ`PVba$RrU^_%wI%x{(RgtRu$V)wE#O+8XsweP_wo4{__*A}DE-0rE zUa?e$iN!6u%_@sN_enB%<#)=pvga z9O%V{i@~=gj6;C&DdxYqOnSyQ z$@p?E&sx#sW#+sW(tgd?Dy@?4ht9F;j=AcBo)mi8ov)#tdG zu+=Ktu}<^qL;Ct_xYx}Y75)4*Dc<)n2Zk^D&6VKI+&G7epgq1z`jfjye=;G)W3zt{ z@(=9_=<+oFHu1FRT?ZFcrN=G zHrMPYZ)VMU7VAJk_NL#*-t_la>z?ZDP48lFx@(K?4BPf*Z)1;&6CdG|ITgJV@r-4J zu~aUS0QZE~U6~AU-<;b{AC{4GW<7n-o*a9PdVtBzBVX{FlquUR-|q<77wC1w_s9hb zt-wlSlNVSW@Z`;t8_hhqsCRr*MYeos?tGYIyZ%5O3sg3~MR#u1#y#<` z-V-j{&%EnTbkYa4>$g0YFHP<8n{SH~4{}fA-Qm0|Tz4P$^!;GyvV!Y-9KS;|*N=0( zl>fis|1bH!od0+8e~Ec#L_&K04u0>3{@47niR(iQtt%2Su2t88=C?0#3%}=beG~sr z<^K)*Kau}G4Lyb>-g9{15WauU z;enW*q2rW?;Ks}FgQ8nHW#jRIux{C?I4NQk8XM3f#;2Hzk&;jJ%xytpBCCh?_la5o zTjv$@iJp%>z;0^4r{+X;tX->K%i-d)MNA8;Md^BG6KW9P*Z-UwbGo6Ff2 ztdR_4jpR9eKWV{r*#2>FRwgvyD?xl#? zK4+(%Nv|@m5nU9Mt2_cp#?Fu4H1D2$G``THZr==ip0s-&?`gk8xb)b}R4}5(oU@Y> z0pe`K9$gnk*M*qpfw#%KP;UCH+zV$i*GzfdOYvR=%%QQ{1RWkSd|sZol78r(auBJ% zm-4%UK0%ZIG@@O^Ync2uqEU!FdM=I5<2%vF)-jw7Tv^;A9s1#YgIi|t?ET8=Eg#-@ z9QQa|(#WSx$J2QxI@VGD>+qTK?2AUmU-d5hjs0Q%e`qpf)dh|RZ^8#&9uWU+ru{As z2~S`>PI}@Qe{AzH;4tw4>pF>tIm4WKG*+T-&0+Xk8223Zpg(~i`)iza;(9P)$lv>1 z{1vGrcLlO9{*o+;zg~Hr+%J@?Hg1D{)kkIP9)Z3y4SkCe0s5zM0*7QLE;Q!@4KVg) zgy@A{(HTvm;V^z@`DPh*IYmsF$zOxtIEs(^$lsJSUBQ^BU&fxIo76w`>r(ZLa@4Q0 zOj*T-KZ_i?#*NNq-bZ^kqJO_sTsrODi2gl+XYPFQbDsP0X?f?1nk$}7`O>MH_tx@$ ze*3ENbC=S-lW3pT3du`na{Y+zT613C0RCU@H|vuJ-S2OTfArPFKbUs<5^vL%g_Oyd z=EflopN7S!&{k&(svONf{=~bQbLjrt=6-LVUhwqk7}H z%**k2sehxL{z;!6XTBYgc!X~&Xk(PV?M@lmSM2&Q9^{$$RrLEW-f!leV%|x5`jDg# zDb|CHZ6j_i#eB{$o~Qj5JeL}lHS#JM*WT9p?8%uQJXq4?(zcrY%jWE>@XoQPXkR;Z zd~9eoB5^bIzhHQawOMTTCuiC6A-lZ+tdvf$=iGw?`>zHpU^4ZIedurS8zUsTVCp$*7yypITMllvt%!+H_5lM?ZO5j=6Rj0 zhv@xIa_I~6-dn<18uZ2OtIOxE2l9p7vpA&E^v3y9?-Vi1D3?E=j_}MO?e{ks|KZl(2@$J5TdW@431s#IrDZ z{Rr7|bVZ81jp(>FTN@}3y_4d7;Y7`a->kA){ zF|MWi&RT=w>s98*{Fk3WZMN4b&>4*1=JR=%aa-rejb!C>aGT_3pqYblE+0BXJ}t#e z&6GbAEa%R_H0~>qP4Sn?eu{eV(Su!j@tQD(+qSn=pVKzQ!Y<|;7u!F??<&g4$9oU( zeSrJYXGg1V@IYu!Vi_2pu*YVFvFqYr3qNtuA)&TWyC8$)4tRRkl8Lq+1;$U8J#k}(l??^}8OMj%Jc6WX^ zJHOd;Lb*Pp$L?|N-H+~A4pv$IGH098?iKhpT)U>WM?8Ir@H>uvS&yA_c_v;2U$CC% z(n#lRi#NL%pDyge-_a*sjE8IQWcxI4tbWnnudaDx`UTl<<~w|=alMSTsb3n$!{KZ7 z=|@g`b@pLMw(sa(o3FZFywBehBA@arR$Y z=tUP}pGF-n#(u=;;9-VVr#N*#Z1i3K@lyGhK>w?uFLJzc6Miz6e^OwNBtA3ox#owO zYp8zr`B1fkZ?u>D625caH*-n)qW99QE$M6?mC=RVx<0v$$ew&E4?PF}b6Fyb}xe=I9x&9YeztrOfF@^KCUTY(dT-Gx=h7vGc_;=U%IPvEzuz zk$fp%>|@yH_*k9qq_g+RbNOQb%9wB2-}EmxcJwQgVjicxo0(DQ^t?XB=~L2kFUk91 z?rmjHq~`nRHDW=E62HQCp!j6Qu*3KLY0!SC$(<$I&CDZhzMW?7#Xl#n9nUM7Cx*C= z^L&=(*X*^{o{#U+H({axvX=9gEcC(S!xIsBO|p=Jc1d^@9$q6_hmG&BJh26ScWHh( zXDo{D?t9_fd!>nwcu%yBa#nMGpA|c@2mOtB#wWtJ7I7AFmFJv~9#?theDtA-wiDfCs`}N49ct1XHkBO6*$18V&cwaih<^7&B;eB%QOQ*Aiu*azO9$Qd6e8h$NH+)jHRqrFZ1x7Rnz5;3mrT&?W?=eox9ZCK(auJieYd0sz$ zvAE~*OB}z1%P%3WMWZzhHorvVhoEi3MQL)g>Y2+g!`5e4{e*h+$GUkpo4=bLC~4BZ zi2Ud6&hwjj9_4w}>EyYCXD;Ddx=wnj933$%6w16Y*u+2?UGX6F3Vg)66netOX{9-R zu?CsGeO-3dt;m~&@4<{axxOTyK_~a=1=u;|5yD?jSerG-%YB)4RQAcU%TX!Nbx zW0l)&Nh25ImC$?nkeBRZb`v_~u^^9RIJ_xPi*JK{unTzWd%l*>X=5k8Ghr9m&obJp_r2Jq9_(@_^&Sp(vA`(a{W=yn zg*k4Hej$EGJbWCXe2Y2mWaa0NMq`{4?5T)B24#I@?~1` z{1tjO?%|6#--TFbNqX)jb&oZLF!ur}+bDBF~)`F#nSO|Dt^zaocSG}iw^e;?b~&gT*Fj7J382X;sQcHDvct@xVkDr{wkZ7X#)(Xd3$R>EJhmGNc7c6M+!(Q8My{EF|k zplj3Ue0Zi2yxrm20rAXSc;-q&zp_LP^=PdppZ~+X{Lfx;8&`u%bNml3&GEm*wfOXB z^)~-o_~>#t=^5c9&I3meiYC*kH;NDQ9sW1-U-=KEht=;&+HxYlr6;A=4oAn7hd8$i z8oKoU0klqT6z-|Wo!#l`o5j%kO)&W>&@4n76qhDFGnO*l@4v_QV4Df@C&U8ik!yre%T4&>J7{JYUXFoeA!zpT(xEvc!j!qa272a$i2x z-MOx(-%IqI@sGb^uu})JVDdKx!A`4wZLpIWH!pVbGj8(ne#Ln0K_6vTF5-Hq^e?(1 zzpZNL-|3g+l(92&8KZyAoWkz+)3mSCjDIgZzsoqP58)59tNxp3MxUYs8bU?*FYI&C z?DMT$|Al=9n*0~but}eTXHLc58UF>kI;R8nvob}@A;oJ`zznaj|5BLX;vYG_h66P} z^|#!Cy++SYuDqE%o5a{euH!o8n;RTUeuo=Flk0uf_ysqz9|e6q)klH@4&l^kp0Ff3=z6tM7}z<2fF18j6h zkab3_$wnvj$2DG(GrP1lwSD!F8Y?p54eDz~ zhdlF#6OHfnvLV=Rr`|C22CtESg?zxntjwt^z-P2IHNOA)W&CI`1nt*4w{n3V0H4I+ zp_DUEjiW;%#%2snoWQt>K7HgrwM)!5EK)o7{*oqPcs-AJbWnuv#-^GxAG_k6c` z$c}!eh}XfUc3@*0JI%U)@<7=0e#3*<;DYmi<`((w2@Z|ap6Im4Td!NEd=%n|OTqZ! zN!cRbvGNg>89&9#%n$K{WYYL44Ba?WP;I=x$RBef=0cIf$Rluv?c+*fo6Y#*S3Und z2PYmu>@GS;dUeSRkBEq7V>YkJN_#1Tsu7A^>1AUM%)Cw zYrv?&h~m#j;Qz3V5p#RHgY0Efy<3_4rLezO!bdLeq--0Uv&qP|Fn11Xg(*LY-538^ z#ip*i~q25-p2h$+rlEo2{k4n|Ck=aX^U`LH5gHPBub8GGY4U;H=&bM&SJ*pB{R-tiAJuy{Nv@@ z-~it#!M&^@Q_9G1wa$*asNO4dc<^u830L#I#>S;dcK*PE*kPduI~-I1JFs`AAZ=XV zN5sJndA<)rn>OYpsS?qqukT|WJU?;Q{(2xZtN^})*W%C+xvmZ4_kl;&#G#{=7RDQz zI2QU0q_5HI$Se3}c6=pz^BZqM3-spuZ)EEN&?AgpoX9&z@op{u^JO)Ptj@l#q)BT6 z`FJ5&051f%=i+5y2Ny33J81moA)CU>w6zy6H1zeWOysPIQ_Ja-hd;#E%;U88&)7)v zRgbm(iMzy(pnVhG#-{Rq>aFY~>ABw*=u16%@L=Bk1H2@elZ?EHoXO9!h1g0LFVr$N z)|Z9-ELUiJ$o)70-cFGdt&siQ4Lz*=PWki-Z_LdvdhykUUV4SOcIjntEnIT2OE3Iz zIovT-^s31Dq4MR(GQN(A#FmeP>g?m+xA4K%BS+SsZVx-7&&uYnpnoQ zFrWBgDc3h~UC;Yz#>X9BcWj@*-rdOaUMwuX5o@iZ`kvGI*QNfZ0#aS)X6NKkd)K$%Y+^l{`Kzr&e=9`@`K7w zsNF$g((15Vk_W9DnsS}@BFMG(z2ltsE_*n;>M-6F=F*>g{!KOK229xt+(?ec67qvi z5r$+Bmuyu#{&Z8eayn`K0=uKV<@olEub(+`oe%uzo|80%JzYWkhu&|POM_2)zlrc% z-{jg&+3s1jsv~0YKK;{mHP~IahW4~xI+hqL{MD$#c<-Dh9+J`1ttq-QNW3)6S{xiXmA zHC99)iR@TKSu3rc-uJm@`lxT*HWSN$kJZ<5&^_eDgjXa-YJ=hxtz)NW%E8l`!-e7R zCdr}IW9)Vq9uHv?<7emQ zcJnj&WY^7j(x0|CXDBeoU#mG%2p+tgIaIQ!cg*QaTf;D|rQ^47uz1+9IlPzo3;q(9 zKD?WW;1dv*67Agk)RPH=lMC&q*8Mlo8!F3vU*+h&Xd<~5ezb9;?F*k>Jk8wKIjhPe z>}R~BPeOci!iDynH4F}cH&+H*kI4wX1ucARv^(PITZF#xyP$8c6CHIWn4CF!j{k+@ zHSV(OH&UmM`Mc_M{og)(ZPoC{md#o9C-)uwF?81X9j|bXfMP8p$iMpz*X zd%|0?6V)!49<TAvmT1l0uSoosYw?Hr|1j4(qNnOq z+40Y^6FYg|&)@5 zes}`=6(v`)WWwAJ?;ev*Z{_}Flvm9&ecNN&OKxA<6Qw-O1KiwUAHeU@?G`Z{<%}om z8<}!&I68?lMalC;Y=zDc$bcIIo^cB>Zawhu1jiQ*@GV6-7gxyW*E9RyvI!A2C!6Ci)@TXs8g;|pII-*C@5 z;@^lty@Tf|+PjYa)Waun_N+a2SmAnt@LQqs!swuaa>e_uZt_hhPLsXvR&qBpMyD_q zT65AkG#?zPRjxSK7q<^%Asw_A|6ev^G(0h!Yx#T2`L8_IDfr0c*%W*cpbhfpDMm?q z0q-^6RU~%ieffsPmnB@k%XL2OXE*tqh(qTcV#3kwif5Gk==Xd4ev;p|zO(a1vwzu~ z1+JBr`gDv)6XP!}&h-a+ zn!O6Py(E9Lf7Tms(~ixwBZ8h*F6vc$*ZT7G%mQRz_0j*j1=Odqq&MOoI})KDy|;<` zCXZfeDD$T2uY118GxxWDce`SyhkWAP|2_3JJLP}o^dDQqTyl7sXO{3~n*+;wyCR!IZ4k!WqJu>{R0CW?32SLsNWm1F1ObPaySw12=uOIb(Qpp7R5eT!YO_uB;yL(><(Z^p-O-b5NjgIjQmj_4W=vuT@h zc8IZyiQ}(&0gJLzD->&m)7C{ROTD@J%o-y8$&NXv@ z$N{nT36a{Xy(#hH1DNz@~8lP*(O?#iX0W7uZs0ne=dDtX69miD*fp_qB{U~ z??-R=3q0B?T1%HdiLRc<88p%h%ei**qSia-9EAGhMICAOGICy4cZ$78v)Io#pdxg& z@U`0a@1Aqe&e*tlQQIf?=0&ys%g&1$n6iVssEVJY4Q^i4lkoE^zA{{F=S8jbkLZqq zJ0)9X%$ZY%S*zS}bH~vgzx=T~54wCGKEbxx=hT3O)$ai3n+q4$;71Y;?4k{;n4igi zk>b1&{A4S&7jy;x7qNd!?NOXnr%N|$8hf~=Zj0ipmmIlzI)JSTv6onNRBg+Szlqoy z>D46T!3K?TGe-E_6|-&1#?I<_{nb~Sb2$`Ow?Oum_#vIis`^Y`Ik#TMi}CL_Ui&gn zh~U?$-JKmM{-@f^)1r9-+F7q=v7!v_DrvCFP0y1NVP*0p$g3w$)5{4?-% zg*{&I`TfXDcwb9%UXvTk9k(5g*L3J2S(D6dKgGsauFeZeN1Jh+wk^rL#U96L+rnJu z#*wy7b;dE^8ArA6UfOW4*^B2L$D(b|yRikMN&8j#u~mg*o#- z8ppnJS9lzu*MDRjedtrkoyO5u)jN*XXnPzZ{NK?yTAp#7>x`r1uFp84<0mqXf%1P| z?#3{FKlh9mHa$09edLbudXqK7e7XBa_R8a4jy&$wSAXKa_)qB1YWyCq{tVK;pnHxN=M^qR9u==N5Lq0< zU!QZlq(5nct3R{&X}hF92ip46l}F){XY*t#`9ik!c<5lu)zobf{0O#Op&z-<$rW{6 z?2Z$8q0oZtOZ<0buAMmti(jjjF;{BY~^mQKGlw#Bq< z#E*Zr%!)-iSueGIwnS^|+CR}bhyC#6$vPhYbQk+ZI_HGizStwV?Aw%dcM0k z@4Fe^wwDfS*-PJ*9@C<>Z{WN9+|%0oo!_7Rxwnor*)ee|7EJMHUAN>H&U;=u-N-%B zbB?DCzs#%uOJa)L`VZw=wL&|CR*65+LH}7>;M}!8f+LkFy;$IYCGb+*l_#2m(4uqa&*u=%qJpXK+Oq+ zxtW`O`q19}v90E;VRV5P2L?E|D+S*Nh^hJlZ2Jyt!uL?teDGvbdW`(ibLqVY_C3ifp1_9&xj>$tUwRTw}EZt%zGCXU0wheRXBRMqK_W7nA`tH^f2qc zt{&FD3s(=vSu2(vPV&E?9wv@UxX9JRzXXSLu~$a8h_lr=gKeb2Me?!DhF{_%4K6Y~ zmCtkeI9B%5<+aD~NxSml@@zdcbai+h-C z{LX2x<`nevfd9kWyT?aaUHkvfBmshWp(GG)ZDs&(sBNuWL~WS~ptfpjA$X-HGl2Gj zp4NKd<|&ha_j;O?R4sbGOt4xrwLP4g)W-Id2`arDtx*(hYs(~nw`i;7mWkT=y+8YT z_T-t#fS&U`-`^j3&6DT4_gZVO^;v7Ly|zW44F7n3l6Sx0d$(dv{(T>=^nAGPC1JC-U!koyxky{4n0F8_T!LK(Z!Gk^c!SGSq`b`$GKhnlc2Z?6j<)nsf- zYD|-CN8j3k7*E++r?px!o;BE*^H}4&fcOrvap_FywFAU;{C0-?@7jl%2bhG^{PUH!d1FaA>18&qD3FaBcez&XSNLQdP`*nw5( zZ(|3@IcvW7!pvLjohv(#|DMv`1U7Hbd+1A)b+f7;S}q$vJc?K-*v*Yy7<~V3yMX?y4TbRr zyX>4|Vm3?prtI=nV4ntTxUtLeDNRn0>!tDeZ~UJDyDYhWfAv$wHml#A=u9&fu|e=C zH}8ONZ}wxi_xtT1eng}E2*qX%CeGQfgqjY;HS_vHTgr>FOMJAuNPm2@vNV(_h>wR z2*3UUd{F7ipwD)xeb#;rwq0}kBiQOfT^S`ePPQxN^Xr4`BRrdS7@IW^pJ`l|l+UhhiM@XR(jDNPfM^yxDI~#<7vUwtNJ>zLDEmsIaWXI z0#9z?JaN%R#YHt9^Kpnf9`kX?A>yL{4{!+nL=K09D_k5B<+muFEb!}xi;tdPuklz{ z>hTf1`TGm<$5diRwrwkPuoxun!yrLF2H_jaEuX+34O$NjCS1qw;r#lTXj8zal>9C6 z$>-N=T*(jp-RE3gA{;W&jQ7DfARqmo`A!=9DlE}`t<#}(0k{@dbSJ z)AWqzqyH1{EcB6!#VA^MZ{d9(@%rue(TAHh4#YCX>RVnc+VW3kYc918=zzxvU*NECb!x{GQ@@P+BFueH zpl#qGljjj({yWAw`+to83+FxS>EkbH`+nxZC4>FDhPGyQ4r@Jt&OOLDRz7GCF-YaO zOSW~-I`CJVHfc`&kIY$zeHcFs#&>w9Y*{<=iB>-f`$zG`;`CK>_FIS-gu$5Nk>0(I zJtE-GsR`;UB$yxF$2svd3gaN4CP`e@d>cOf(={K@Y=4p^Nrb3xeaco^BQMBG5R8@1U`lo1^u8 z@`KnP2YzV&TfDfAwp+T3A94C98k)Q+I~Ofl5#Q8#$!=hlE4yFxx4ZeXxjw~S&DNgD zHThiQ@G~DV$77OXI8K`5vB?UKS)*rk*+`D{?$`PM`g7g<4dr_r!TF`$J;OM@(HxIX zmT`PIdMoegUE;dy%>Cn&eH?$8<4wfG!pOYn6=%KMDV#e6e^2WQg~9HVY~v$p9!q=w z`OnSefAw9qx857O(tV<5n)j>yqQ8D49(|+-^{s>aRdVd7a~PfAjsLC?c`!x?kOz~w zx4c>JsOKH-nz`}G-|&9r5DfTt`E^JfpKj}ut}CYBys@OUR}XK^n%p%9JtZAd&m2PN z=jY_~NCRt_rAJca%}9^r=@8=fW6&WNaZe{>uga%GIvID2nVb$`%nZ^YA@sp2(Rqn< z2sIgA9n!iFTlOk316O}g>nW!{s*>xBUU2nCv9XE|WY!-{C%@6sH_ey~;=gJn_-@h#OF&^@AB-+R@s-}$D0--TZMWt&3IRQ@?>m|+9BEz&mpImKS6vua-9|ufFEVEIPsCnb8S`Z|H=58>qX$^NJ0L zFHi970gf9y{))GX&)3to*SWWl$5CvY+W95(yxZnSc*mvuFL|+eiTKcFTn`f;vN%KW zpS|c5%|#qsJFHdv>&?Mt2tVy3E_4QS532cAr#KL?mFZ46qnP=AaH(SEPl2a|YqykC znfP`L93?!RK<|XUL9GcV(qGSfnyx3n-wEtpYN*q0ZJk5A8xLgf{x7g>aGcYQ9OcQI z#)BPOvbT0jr%LN~=)2~Ba$+3XwSH*dqs)P9Rvm^beCx_Lfx+-$sDD$DtVw*_#9Au& z-T-|+Vd&d3H$J}!`l?NZ-_`fjZ}s^|=%8;u1AVt_2Fwm;#z=?l5T#E>@2r!AvhPjg=STy30=PG8~6 zDWYw?LGmO5%(cvRMw{BR3pu_X9ZM|#S-p2X&x;<)69U7LM>0BjAFjG<0IC_efTpDrb?iXX7im+a%yge2D1Af zK{gWD4dXW=i+hksH`kQ4GP}I^HNIoTdi+N4*?xS!6X1#DP5P-GnOes0Li(%s-Ntbc zoz3^BYE6uZXMf%4cm#Xf{q=B%&TVAgbxLmDb=?N#30HIO0p_O@W`6pn4fk>m+RuXa zvxM6?Udi!F<)ag4?s~wiFK%x&bD7RiGk+=F;m%W*nE0{kL`ZJ3+49ys>xZ{yFJ}Ku z`PcAJ`bD~=51k@@EA|{j2DU;Yjc>`geWqfgN~nS#N~eV+&Sa+qak4#@&Oj5X1w zp1I63&kwhDE7lIK@1Y+@Ba?}b_T}~vA);@5TiZvAKm7gFJJi>ApD9O2JMX+nOiuKE z1HPV#&Jhik=sNvT9YxJE+{YSJ#f4>4h^chhcw+sk8~Q{K<$Dc`vBSrOtLD_x3TDb9Ek$A^qF zG9MU(XBJZg9dr!%xDFk&iMa3xFK=%F^P18T=4IJk5k}d)ad@Q-gUmby<_2H6h1zP-Y?^CCpx^_)BT!5io(Y&@G-(1rueu~ zx__h>Pvn<4Psefm73K-0XoH=f-cRgz7xBa(c|zjd7I;`M{vp4Qc|1t`IoqZflK2oE zHK#x2iz7yJal{G}W4prRL+~F1d@wS9nEc6@Xi~rjVO{ZIF>yrpA2NA&m%|6Gduu>; z{5q;09ku+P^5z%0mL^uWc^-Yb#mya3j8AiZ($80-pQA=U-@M_coWo{xZA13VZ`R8L*@-u~J3d9pthtcQ#GFeCQ5L;7$8e6{Ph_JO`)BVa#cjF}wv#;zJ18bdew`ktWg zE0kY^O$%I7YcLQM;4|R`=@|*exomUEx%hNozDWz+7yvQQwg9qh<6r@FN7+auqrejQ9s3oz%YiAR* z724$94{b8e7gfKtG|4!vlx~QRx~xBqozb`rvbP18EtfkeT4{`Y3Exq1qWCg+@9Amq zU{}beAKoMPWMipvPa7<=h+2VD0OO63vUxRPhSb0f}k*lZCU-AX6FYqnc7p=C%Hyp&~c1W_S zYx1#2G7h9uKF_b@3g5Hq;HG(*yZGJl${g}{s;J|7QGe|7gXQ^MWL5r%@>UF8h!?Bw zqUsnAU732cvJDZ5`F`_E@vE9GQZ*0Cvnc< z-0`0`<1j2t#C_V!U=qJO$;p4k*AmKrd`n83o? zBPU3owV#7ok(7I*5)oW9YIV;~@EvuJ#-NFrM~0IGz9hS;up;A9O#v1{osqTp}zam+@Iq7 z<9ZKt&*^msTEG+0tii)UrY4B|HFT8PGYuX8@1`&8RY_ljb>xebaIEM4ZvJ=YMBfL) z3#&YD&bb(_&pY>mIXBi|o4wvS#S9fwlP>?OcTQ{Ur1N`tkE8n0U{j5WAjbj4iD|#x zBSv&^_lT)T{)Oi+=2@$sMb{Q|b0|Kn=`QHJm2qR~tnaCBde;i!JHF+vWt^CNiuaWB z9$iblHn7$^N}WXU_zA9ux&9Qf_?|%Dqvm^8&B@3HNWW^ovnlu{>xc<0(SB#D>FliA zAo#Cf-L;?vCIM2{JFM}_dbrxOz|x<2JEz+BB=3%4p~F3dX< z#BRs(++t!z_uwZfHj=JH?imA)8yo4W!6tU|UF@96ajk}?>q=|-*HuLNyU8KA89C}9 zPH{8iejC2-&B)R#jC<)Gzb<%?xrdT;cG`Qw$H;RWdYs0$t^7CheaXKtfiq>W+=j`O ziJ|u-L%Z%RZ$0fB>fh`gyY4-gam!l&$-;l7#CF_s+WR4XeEvD|#mIh}#bg@PqblE-P#PxS>f@235M%zemnOmRrgnf=l{+5PccS9Ue`_!;E* z5>uOGV)Dy1)avu(XDGVc%FlyFceBUA9n9U}8}{50?r3-`J455qulFA3yXr>}IefKr z*wh~40gLH_WVC14#_>@jU-;&cIGKo{;kqZ{4t0=b+D5bH49w8+tkC=cRc2 z1!yChsn09CK9|yG*^7&~u6gA`A69E{WCJCKl1Gh2-CM)Ez$UZ6CbRy)x6b-yHit{L z{UY0buX}wZ*H=Evb?d{P&iky6wR-;s-lw%LYR4Td;9$naOr9}zm$Bfti*f9$boLX( zdZn+O5@))`#2RX<>AW2$iv3CFFC|904qac$+{O}g|62CA)c8uzamP#_cHg!~?XWb{ zw@Yag?Kb}Q5w!a>&S_37!f%io2a=h@AIO(R-xj_{&xHf8Zb9_rBto=Zz2LU}tlJkBSM3<-=Nfn-T&{0L*bgPl90K-rfcGU}BH<^VQEdAC)ov{T zee+3TyoKlW{t)k3jBF4`+H7Lo(NCFtqCM-&o0V6gXMe`C;;BDAQb~Ly?(=uzC5n$! zCNIa=lwU2KWPO!-+7$t-t>=&S=5TM+JY#DTxOIZ`jtzWoJ9EiV=A)SR>vHDSWI~BK znX8)0oAcTlJgupPePAA=t!k&+XZJmR{)pbAX|G~R;?*YFP~*i9HqnNUqfgXc@xt{7 zMki0CA1(Alw6^_dp&zj#G>_7+Y4EI&9+rQFyjV>C6u%KRujBYljuSpUCio8YY>Ti* zOJFHO>xg>f!dK$|!TxP0G#HRsm#=0#Jx?7BWY*aE#HX7=@gW8e zv|-Eh=oO#V6eEr%dYua0l#{?XL=GyF0ccV9Zk@keu{CIrc-P(MgSoq0eJ1RY!O?#w z2KWl^GHoHAPp;bAL!>*sHod~Uw_^GYv`zC%s+*uWR>uiv)Rx<6=kItv3LR7XvTgM| zCmk5#er)0VP5;XJ%YE7Dx;Mpru1uCB+pw$R&qJJ>?UY>84Q_(x_z9I}uTV?>gszvD zToXj!%s!HNLVk6h>};s927TfB_IGigeO|g!*X=c}kC_dAV}E=18@}gm+oZ({B$CBe)(Y!AoyO9+>GxnUPx~E&5yPIH)Z3LLfHsTZ|d}9 zBl%rdHuTNa@U~Dc!bR$4UBi7Ew^jyz046Fb1M#Y&GBBL>bn(1oAaQ{8PCRd9fcqr_ zA!GnQ+sME+?z1v*nkNH~a_(?4Aiwv+$bjnR97+Z>M|&t4xSMOT2hts?33C;3oV_Ec z(+a;z%Uu2w$JnemMm76};=|XkBSH)?X2o0iXJ2=rn zex>U~Q-}F4#+6G`?iWp;f_C9|v(xoW-MgE6&9_{A(imeL)^M-YCkftZ^@)?3-X!}N zVvog-AuskF+j)o8r)!CIF3}veuU@vh7S~B;kD*@nN$!4Mi^(Z9^|Hw&Gxf5O|I_f5 zRrh%BWbOgei{G=M?fI;^wDd6;LUhBY3lM*wU3SIa6Ur~+e|XpxYMYabsn_5`hZ*O} zpM8P3JmRpMHK$(r)Y*gVc0JEu0zD4Sar2kV_q^D9iX3K*hXXH`weJ0dlNmw$$IZ7> zu2z+ouUna1N1v?j*Z~Gf`RrK=ott1DI^jE);2iVxCcdRPYKvdvoKKNQTNtmhwV_{x zCuaVgc=i?GR_WZWU>EVu)}yxaW9Ie~AIpnppXB4Ii+5%;#o%cxwo-W1|6Th{TaUU6 zA5ytq*x0uNDHoe*4};?r6N7Kv#HuC#X|Eo&^0^FuiCc@m;;nMAO3o#2pm&7z4swUc zgA%W#>u{3MeaiV){s#GT$bvJZZ)V&_JJEWw)Vl- zA9~08Ird{G*Z#S6@s}|6mZYZG{I^Es*;}8$x7UQ;44eG77-LiCgKvZ5pI{$7eBl~o zYZG&ClBX!S@Hz*MYYch0`~jX(T<$dDWB45%qiIvf)5l=j4lr+S4g$P8C=a)jc3Zki zPWNsvYdwHo7((o9uwEFQ6i$?0P%h_o#c+MHg3M+d#=3C!UHtlSHu0oEIz;*+;Lw-U z1nP{L8dLM@kHF^O>quU$%#-h8Xd4D|q6^HLa>og0Mwj(HioWRb^7tC<{xIkd>3&n& zpvIYK^hGFabia{($C+t#e>Zz;Y-}`ne53SDwZZ>g>4{(CGmC%P6Z%bX*8${E{1etP z-zM)4oX}TJETlb{;S}9_-vSW;y zy!x(v_|J|HyOE#Tfj@T*W3cu*>X{~vL)V}`CY3oK0hhEn=$0tIU`T`a8qg;T&~GNM z8+_to+REhT88bY``tJc>yB^&TU``ADpNns#I2Wf5eieU(HsApMD);8FCHJZ>s=*!F zA9On3RUToS{U6=$j!Ax!?}mu|%I0)3cYq#zHdKm_?`Ym`Tyh0tPWx;&qnqNscgJ~m z)Yq=4+QoZmQzpfGppmn8Ix9j$R4>df+tN5;olFY4h1`ka}j zHBa7mMI+4-s(s{%<$Tw~d#>*~hd$}M_M5K$a=%+c3`{&S_JVPwdtSv)vAl^eHbo=x zrklFiy8a2?=jNu5NuGR|cWbU}3fGmtGw}W~$!B=K=8mn!=w0Kmo91g5u_isM*Vxlfiy=L_wg29Gk=22 zq03^_2+z|2;aMhDHl8siU!weVcYRF!odR9KeG&Fi7|DIYOUj#5U!UYyy!;E_JkMyX%)k3{{#Ut!HM8^cWP<<_Y$4;KtGo54O^TkWG|0lFT{TFY3#IZZC zT9JH+;~#L|>cgdA-gSu~re2ZswJ=g{jeu%PAP34>GP%CQ^LMWq-nte&aV9xS8R8?8 zkn=j?M=4?n)~;W{e5LHF?2~K5eYq^@S$Ww1yXEdd~Y4k#?ZCbf&;I` z9!;R#iV-;zl#ejFmmGjvB}?+UkgkY;Mn4Y0O!D@ zMd$6~=#@VS!!hoxtRQQdAm_uJa}K!UDlGY7JZp~icx2#%=qlZC6E>JVLS{tR>nd-I z!J`^@BOcv@EQ$W|ohsXyUxX%CXeVQ5 zcTqbjUFJ+v9-7vkm^@l&^%_27xF_3IP2a)DrUq%+mqQ!R<N8EDA3phvBa3l-o!NY^o*dd5BTw~rGABB@q^YO0q^X8hE?u=BTUdl=qJ4pQT~W=6F}cG_I(Q?sWa zeRu;q^L6CwzO}C0fCp-SiM}@Xv9BVs*qeSkTdSD+et0W;Yr+Df;DkdfBEh5=0YAbp4uM$ zeb%g7yxF78&Co=#`gQ!eIEDFr=`H>jJ)Sc6kz2vJ)!sQ_BmKYJ`(Ie+X2#?;Fom1< z;I5y^)drhW()7!ln78@Q?97AY81|ca?TN`{_-FC%>~!J2r)Ig|!~d9Sa`chKI^O?Z z=KH0|MI5(tT$taky*)LaN5ePCN)z|ky!L2%C z&zT(f@9^9t^imyq>FM5V?F^q@;#_YOzqpf}T!*zv8%qO5Fa6PcYeMo~!kX)YkBf#!8Uqj-T!N zgHh(&2gcDDGmgeGj#AP?+g)6dVyp(Y3s;_||j&U)j@HBipHO$;W z0=>PG`)7eOPevaIX9{;0;!MryTAXR~FIHn`qH|_6$*(uIgSiRShIj?JmQNo%Ip5a6 zuZ{qE=7aEN=OOTB0^hD^t}Ew*((S~>>DRMCVbCG2&wdB-@?!K=-iM{J#>?xcqsPIU zg?y@?= zYs@!5qa?>+e%;*B@ySnf{3Fg8+3+x_p1ToQxerZA`lI9W>W?N0a4ELd ztnGDi>A>3F7-LLpdxcB=YkOO~^<5U1Zd8t;hfCKGb4qi(Mr(V)rT(?O-N?9TB1~%6 z_I?W->9DTL;?Yjlbx9sH_UABG)9GxR>}a*Yq>Fs(x)$|EeVFuZ^pX64DE7&WL&oG{ z=p#Hj7>h3IuRoTt>%$;X$tkfb?Ef__V9~G9R<&a%-@X`3s$=}RqP9B&e;f~&ikHHs zs)6%C*tEyPrklW{aSxk@J#1Qvp0n8W$3?KI!@0v^)5T{tbuwQ5czYo>9h-asTQ~@t z{$Nh#NA&~PG&nh5U!;-w)#w-5-6%0wA2+2!REW5LF(wi_%!t)@M-Wc__XCP z_%y&Z>9OEp@M+7T@Dk^X>97R&)aWo@>?-BQr+@L`)4#~(RV8cjtv*PHd}n11fvb@-i%+9P@M+4!r!T-?KRz96@Tpsu^pmtlxb%E8cE*46CUPs| zW?kV;8#JCy;QBB46+S(dW8qV4PyM)5`bc~o{n7aR52ADI5Oj`$4U5qky<8NRI)}lf zorl1si9_I0=40AYj0KBJ$1olWc^hV|DTXnV*r3L_j+NUi+Wdt$^c&FTWqx}+dT9*2 z#Q&m;VspYaI=9_BC(Nk-pYi?|oee$(iwvy&ColJLyH93GQ{`I5 zck%G)6pn>W$-U!RY4Yd1`%&}ls$@IIzvg%&IkZ!9d9~{{2!9Hj?)T(GaTUAX|334c zs^o)S89nUbDc^H0JyLHP77FP^5HP~^AE_4Qng`gQDwFe|A`ah+g1=_Fy4G(NZDVJ8#+@W(Gn&hLsdM_e%_k||*y$tARZ$;flq zPX=F{y1kko)7~u(_O|R{_8Q^cH}SqL_ytFyd)N8=0?zd^pHo}!#VhKFzf9p-XjL0y zt|d4!+z~x;>Tr(~p=f9?o5B_|2H5}P#h(Sb5|u7>|JEv4W-o<9nj>iKc#Cx8FJ?Onu& z8ykr6pmTC-9StAB^(IFoosZu)(Zn4_@dHEFej|TOXT+wtC#3_XbyP{;RS-(^bPx51x;6u#=6yU=&wnz9d1U{S!HkPe;nQv>nHZzVjw!X)BstmIq zEw<2(s|TdV1I~2S3KD$o?zen-1BHo|+d?YGG9!H%ha4ZJt(;m$8{thI{W>?3jp zb8_9w!X27p(wd2ze0E*_f*CsxnRPaeA?FwqH~k{xPwy12kZ-RwA+kf*q^@m@FMkc1 zZ`PMK=h63%*%?!KZrya({>YXU+8Na@uy*Bk_t@A9omZdLU-kP(VYeL)nCWv|6F=>r zT_=A9c>@nbtDCI;RUCjhg+?cJL{tCTk|rbb_&l1QvikQRxgGL{GItMeolD*GI@LX= z9u2v!Mi)=<*3~<#bE;!~Z=CfsszGD*%n)~;%BP3iIy7$mnX^p%z}BB>fR}k=()n~# zfINNGX3O4U;|BwKmk!KRxpljxlP*W^M_JEY`ISqJUV7`}uHSks`rPgnC%-j)Tz>8G zW_0^L=B=(fh5g3C;J-vS={;+(2cv5*%$!o~zNf;gK_mZHx<~u*#PEMr$3^~cocE|c zdV+n`zem2xYV@+`qWUw_oN()Y?BG83CMooJ$7)TW-u;~bf!x_ z_0AMyQvKKiZrINJ+*;ZcL4T;PMppXfWn!b8j-?~R{Q>PER}d43^6tXedi@mgop}Db zqlsyPjg%*I#e8>tN#ayw5Z}7+nFw>**N=jBzV}D*zxLBk&gJOKxlAhL(mc$%F!*h1 z4yIWbCcbrN(-l2L$XMnX- z6DUOubm>ObyV*%S`-oSs=pV?e^Rk(*F!hQGb=N?>B3Ex62mP$>TEMf;w1-;E7V zGp|}$pXj^LJoQwz?OKoSap<1TVU$bFK4uo9=zX8@=njs_(cS1u;#m5Id;;a2il$}G z9BPkT+8=;sg>-kA8`V7x-n?ovbial+OvMJj%&&Cb@f@pOknAh_wcuVyldDRc%i^46V1zXOs@=0pHec(lHNG3^*ZLQ- z?VlGt(w_Vl;FROhH(D#4K4w_!S5AYbUVS9_uwRot0`J_M!#nIH#yPcl7VlJB!;fd% z)enPfQfJ|7SCOmj;vHKv>5MhZ18vRD+{b+9e%2J8qwg{H&i8%q$GlhT(e&;f>Lu+0 zd%lbg(>K(X9_l5X$34a-us%U}K>kZjm|AtLcaqL>7zfLtMt&ghxY#7JhtTCSb}sCb+{3XsFW=u{FH5^na9mT3Gp=a~awXcG0PO$>%_FC%<9|&)84pJ)$KU`Q_c2}`OVMRL+vK+f~DOfltocPK4%3FHp$0rQNiJb3^V$X%|?EJ<>_^$_$ z*%{O~muBVXF%NwV@D{-yH4@vk=9m;!dkw@>^g122&}nkS&?$ z<~We8R zd^SG5a8=mFRhv}J za6bRM{RxTD4DhcwE_MpyLBdz6{}{)=sdhem-deX84-)@`4K4q|taB0nqWm6;f5Lc{ zf7g5b3wre*v$p;ta(f2+vpjINXWJf-P4M`T$l)yZ7xc{)iVwT-zY zK3x7<3o)U%FD4Xc&M?7z_iVlw0cZV){I!dy|JXtsx)`Hx^BZNXNcT=Z#*GU#=4(7|%V@pO*He;CRt~`|q>u|G_nj zE%f{T>dj^yhQStzDNP1%fH8zE=7BdJAU=gJy;;7rsgJy?q$$1rC>M)3?*6H{{OKJ| zYnFIG4?e7FKkiwM4Oz_}7$v&~zt+PglZadGV@{?Ad5zAZ=9(}GwQ*B!?5e1~QthDu zo%NYKEVBJm1z05g8MD4pw)8^ez>h^lqk-5}*F&k&x*giP>Jl)CBm6&dzS%eLsLu_? zBz4q+3fH(;Vy72#>PEK(6?Xz_r|EO}T&L~(_}z=Z6{_tw8*DNbY;qKF6=9S0iw9z1 zvM=FJx$mp?@||+;8wzbsciJ}ao*#JlB!r!ugbhaDXL|Tv58qo3Z?yJr78pSM%w~^h zUBLKJj*ap)uEVBp#8xYhI{*%{`876=dlz|Q>U)5;hN2f|qS(KZbFnG#r=*rKjop<# zd2a!>^gLoR1$qMhwPm?hET;~<+4ej+b#Y&8Cl0P~z+J`i`OUtK9gMEheK+s*!V*d;lTlpz+ zWIa3 z!v6H0Z0)x`!J10=!Fq_PG5)^@9TVJ>ZF|M&*2?73&{Vmx(z7EtKAU6J@jMCHQw(RZ z7kjG*V@w5OD27_?9ML;>T;#Db>QHtP!#RlwkcMS zM&~*!ZtVM(=+E`niTRI$U){3F@ay&S!WpggRvSX`u<<>j>B0U;YUhAI66M(XBM!&n z>s$C&W*!qgljo1DEzS8Odl|!z?98_Rob}`vgJHBM%DjN`sog#0)V8(6-PNWZ=C^)B zyVg)A?4(?r;f@XBZH#;v_&E!H&XTVsoO2cNjHroce0ziXDte)-8x<$E_9jED_)2JU z1M7Hp{L{RQ@+L*M*s4{1vMCOJO$m89LG*eZHDq1CW=x)66GmnvvnBY{VDH|L7cX|e zcGZrr9v`xK95U-vgfqWEUWf2k9T>8##fv*erZR@BHKzeCMm{C4iWfVlc=2L>g^N`; zwK_0#SvNdZyf_Umx3%~-Yfdq@Pv*GZPQ{1OJvSf&>6F2X#Fge|@MpS+S#&iJp8`8} z6=DOwKl5K;xjxm;LVlf!g}(UkLSKA%Y;rWRE4`P%he1Cydf3^l{iw#CO0ctjfqJIS(wH#{!F9%8Px-J`L(i7m?BKfb8Bua z7WZQ`Ud6Aio{kZ}w1-K`=$QOGN5zR#-ufFGC${|RCLWaX;=~c=*u<|j@GH&n8u>BU z&mr*YIR4~^T7CujzMa>e3%?S?hgEmDuGHffxa0`Auq7GPQxRwUV*5vR!<@hW=#TfSpcn z&9+C5iqFT7=!z@esr(Btq;NqhUfw*_@NPn~34cxX+?4P3G0xq|@6r55;g_)97|$1~ zWL<8UcPV!BGI}Yv)A~YV%zUx+g#yUi_W#VbZ$UmacZ_{(^n9T%>kHi@-N82$PYt8@ zLW#386W9|ZJ$=9)1dVeW2dHiT)KV@x_%HYzXrNUE@IGp!zm`dFjaH*=vmWe zy;JXtK!=NX->%15t8_nWmDb{;5Fh{IYJ9sR`ewYhfV#EZqr9>pJbTg8uiMbCDWhL+ z-XMH5j%#l28T(Fg{21qypHRWE)?#!+fBebDZHdqDe%14+O76igQJkuWnERzGOPf>o zW@o1BT>Y#%fmeC$uJzufT!$=nMY#^zPhn?4jJl0;(*5Q4vu10T)@|Lo;bG31^*KEI zw)gBj-WNb-7nt`}Bqgh_bIniZk3f?jn(NdQ<(lRd3jNG7&dJYIy-3xDWW1Yrw|9P} z>O_8z^OElNo+C`Lnj^pXU=9${m7Ht zJeGyDxy7qv5;`HGYrTPE!RqKroewSge6EJcBx0%Zchuf%ncvg6HgX}*EpX-oLdC3KEFP}2|A*9Xz%w#`BO48`YdUX1d~ zj1J;H`Nf(Wm`4tY-_F`KDCRz!%NCz){P8LD&4CYp`?&GP2Xtv-c2nS(`24HaxOpTF z_xZo6Z>@lLia}IfRgc!c9yP9k3ix+Xc+-n7Ii8`t4)X5q>G)Ra(eN!dvD zyaCsgJWTx@a=7QwzAehtz-HFaCiTJfGaZwM5+McvU7OY*CsTMfLav7OGo3MGi^cYh zeW-<2VUt7U)(BE;Uu`>xEUYAsHkugxOl*kOgz8)&zk~EU&u&5M*vR<&QPBDU({I+D zF$NVISB^%SW95NL#{SH)Vrux?rY48tIKm^V`2RAniNs+DH`C6N~&FTO4~_`elj zg~xXO+UDDB1eYk^PVrUc+xc-x$mSg=p5%*1?rl~K=74fg%{4#u1 zd{VK+*UYu5bPMOK{kh#eHa11)<;#g* zp*R?oF@`U0=a(8azoc{V-PWHg>kV=&e{Lh^Q@gUY>Vw*D`=MC2+O~sVYm4;zLH0=N z)~r3cAHAx1Rcnv7f{mnmLddVy)X5$l^z6~Y_(S@hwMX);Lch5%XL}ZtPi1Y-`VV1y z{=56pr2V$1PPS)Ea=P*h=ueM{ja%Epe(xW`_Pl`YN%`zds)V_zBDN>~zhHZ6@T=wH z6}3IlPv_a53&C65FWa-(2|G=~@-67Y--A`8vkUE=Y>)Pgv9@O?vC^wO+q2wfd*qv? z;p=Xn?J@No;O{~D-N{_E*8W=CV`?>UZ5`)idz4=(+wVXM3WfirSvd@=e-Lwzj8=Tvj(PUbg1|W95(dZ?Zl2K+hDmN9Qy? z3VEJ}ztDR#^lr5D?uOpq^yvKq(|^|g$*(uZqm#2aUTu!YB+ugbT8`&H2kq%*ZO~=> zFB{bD*`HM2{NDdt`_tmHKLIeG{9@UkFvn(okKaStpEx$q&hPyT_FMWc&HSG1kM{R0 zv_E0!E4@J6wrxIi_%QaT*Yk^He!jb!7dj1%t4?1`5mzs*%H~G3fd$a z^A~jEa?i#nz9|{7`ct~}Z(R4=o!_EQtlfEo`=w)^;M@w+uY9}H%DFIY_Wa$=@^|%q z*_}Tj6PnLDn{m92@qH*8^ZxbJt7Tn==ywns(@J|rP93l@Pw7nTbZQ@Uj)zN$Ux7;l;L>jF%@lOkMsVq! zV4{!@mvXLGvEoTNTw2mQcO-FFaH-l;ulW1Oa7XH>u`^T`YApPmMT}6nC->mvgrz^x z5f5Xt6DKOiUpiuJGFa-?41Eq6+((W{W-@q(_o*LIo(n|>Y}!_zO}+CNw9A#`Wq0)G%f2eD7%1XM3>-?(Nu%Jp2-!_SErit-DJ0<jy5@6mhZ~x(t9^z_av7I+9tl2@F%&{HOZy=IU3&FYQ9~? z9u{MhXYl>C{4X7$F};Jnjt)~d23pwhb{jN{{>{z9)jRb*>o5NVx?O)D+kO>eGR#`! zLfhgv;mka2k@7q*=N{R&KcSlo<n^^tct;8~Q>6<)-@UrJs+F zY3rr$DskG?zeWGZ-km1z!e4*X(2m&7IxyXyQO;)KKgtWG{)o57Kq@$>7Wy|O&+z1L zd^3u^4ZiQIh0gu7Z~kpJP;2$Q{95RiPEI^vuzHBvc)L~+Cqn<~eShM8`S$at%1h~b zARRJ!u;+06YWOJSt!&o1R@au6n*5amv{yMRx%`y7N3?$VyH4vG#){^ul`Bz7-clX; zCyFQb6IXODc50tueq$5yZ-eEhIkk&u%Vcb|Fnu5MZ3izV&Je65p5VMwIpyNaTc3C5 zt{3L5Pa4}BWiGtMm%qA#x$HjX3s+nKrstjOh*vG)JzKEf*Rjs&$K(*G&-w2e(i@(h z|DLGUaWe0zd=rP9fcsbz#~gU)$MHR*;npBLIJoPGRx?-V-Mf+YUQOSw#Gl&c zoC2;IgWXb1q4CMwUP{Qs53eO|{_#E&$3D30bFKQ;M|uCH9v#&8%Aa4FVb1)WqlmK> zwwd$2@eA_Xyqq?RZg-#Pv|Yk`&Z6)C4sX@w5Wca$&9-l8V(Jr)#NG-gvZqH3JJ0-X z()^#8m+2voU^eRpsO8ZgyTr`J54PszX?Ejb**Y%~)xsIoAQ|Q}f@(`Y6j3$r~ zo6neVn2Q0Uq|j;I;M0@X&{G#@O7QE#=t9MjCXx>mr*GZNB~*hw6`%e--}%F7 zPFoNRv;lhAZw2XB*oTY4{2%wtLB^SbOzC~}^F4T}^>CUO7mru|lhe9lXrOf_@vGPP zZqIpq6M1&=!}#PwNxI!7a4rzJv<-8ju>22 z?%N0RQs#`g=S}pT?upW-V*6m~p8LIfBu^8;)|TIDSNe%bD^54*j*$7x-Hj#7KlE6SUBH+jsg-=m-QdETE1G4>~Z8eVhV_C3ydie^K@3CU+UzJuc^&uYIj%@w>ixwJ_-=2fuNB5&=R&J)k+Qaq={i{Ch` zNozn422CEyA=bZnc_5{6UsHl=`V|{AMTdo5UyC-+=jp;HmDqMK=#+SZ>|o9`cP-wBeP~p=RCU zR@T5B39j5j{_$?~R@$3Km|Z%=UAKt+?SjT>)_5L@KZU$G8`@a@9Luw+FYC%1^9;GX zsyV*A6y}+$hPLj)j$KW>PC63|)n?=jncH1;cI(;DdYhNaX7j9+*IDMA%{sa{{VlAE z2_g?x?tg`U{1rXL-)81hL_^VQfWKp1 z{({vm5r5GqAC|w$JF@)!F}_zY$KQEA{?5ze?=JMo9@?`XpP-Px(kaFGyC=urdHu={ zEaY#3n6#h2E8ws4D1@`XvR!k*6vBslO3RXUoWBH~Do;~&mkh6S{B_sIgo$eojNjrp zg5e$c`?|LLq4>V8-7gj2*EPg>k1X5n*7H4I??L~{hTYEnvRM;(=5hG0W9>5; z$F|yW7ss|n!AaLre>Kc~)<*09Ro?Sw=sbF8ch#`gKTkm(ytNOztIlb4?Jw&$`CbpX zAbVI(dKJ&@=38oe4>=_xO#3G!zlAI*myMWp-hQPC{s$LRE;3v7B=47eA#+nNGwt!# zIIKq=q0K_xtu@w5V)ugh^(h~1QXXygV^?1G=&Ivsv_Uynh2JfsErs9J+K5~{nm!!swO{j~$8&8b z?ewn)RV)BKF-y5G-{QJG-s>K(RPM_P-|<@%Zya4{0aY&Az0H zA4o3BXoF7d0J;mqzSnrA(T-+mEal4_xgycSAi9h3Ag?79JJ3elC zd9%qs6ZS3Xn<@WBHNGC}W*^wy%0Jf&_6ptV;f#vpWAszwL72qu zgW`WK%6szKm?~-NWZb+2%?h7W8y-}A8oK%SOI6IL7CqO@dWksg)*hXXFMmhz>q3l< zE^3RCi?2Etqv`LKlFHsV`Y8dHsXU$Y#0V8j5AkbkGJ3O{xP#WbeASyrNr4g9a*y(R zgsV%SYZQMcCi*b;ET)e^pL)Jm3ok_nhnR`>+_ZbDDj%+}E#y1aTH7Q%XzMOZABkSX z&RD-aw8;rqG}Rv;pZ{&>l}E>DX;XlG8E)ph_svoMZ;F-+_^$Mxu?xh7gg^DICE-!5 z3m?@~B8=vQGw+~FcX6L^f&H`Vi_RrJQ(j-ybPm6-GEbrTkF&|m+7_>DBA(OufOD2& zIF0Mr8~7r4v;!V7C)?<-_E|9w z&ggOSxPruU6kE_94#G9@m{a?(>f~T2f{Xc8U6_AyYOer~Ov4^dUleZbXH4whIlMJa zte}qA#@Hh-%)Et<7l2=R$R#b z5!lxURJVk8t>Inc->c0W6)Es}nxqw5eTNc+Z<5=KPl6 z5A&Xj;IYO>kaz`j?+UQ~KZt#Gyzvoq*xQCN6Js3Ma|yai=`pW`|{hVjX~d8WvD#PE>OiSGKPjs@`C_Cb1^@8|l- z_dCMKvei9d2c1Q%rbcZ?Z@;(m$X1Ps?mMuNjBmxcyYD!=)s3N4B-foIeK&iD>fle5 z?xT$ zW0&uxpnC#7s5V6R(1n@O^TD*}n>ow)4sBB0COWcjrlnVe_C$yk=^4@4?9F}2MY-o5 zzsh}1dMZeKpp$+e|IbQK#Y{gclIPQpf#=62LyQ^w-N(gSz8k!xZ>H{%{Pqw(sQ=Xb z+&yzHckfBm_03HA_>h7R(no`R)2@fmcbgsbY^t35c)M;S?IMmknRjXbxF?W7(|2_6lhkZzpsgXU zy@EW+&$RoEqcjsDQTOFoQ+Ffe>L=hpYlz_1FL7=dO2H*vaXs1Z!#Wl3i%?QDBmCh zp6=sb+0S;qr@0d4D*lvX}KAf9lGCtYL@df7m_~e5eKgBV=)8=jX zt!2s!=TMHWJ(0iJf%05D z;uUBsfA!VUVN>^z1Koo^^BOwy6?}o+b6kIQV+rflu}Kl;!f`TW(3eEur&+KOSVugq~WpT#%sM(=p> z2(zwkPsKT{=RosU3*r&4(B3lV9O4ld^+&LGLB3~oY!Dsm%**#zWltxpSlYJ$neg*a z{Hyc$SMwqHS5v^h@FDmYJ_P?F%;SVT{?&6FA|J@`4-6pwrTP7^{994LKk;s(Ga(mm zI7|HN`SAR^(#OB1$?xA?>hUjpNdAq_@$V1#ss9uH)e}D}`=>zej@R?qG@T^0`j~I_}FFq*$Sn;DW_$l8!<*lz=ZPr(gclikx{0%%wv44bL zZy#9@^Or7HL z(bhF{aqVihrFHdf4_NvO@UjQ~KFGPYYU)&=1D@nq7=qZ~<_DBZ4^En5aw^KmrJrZ= zaY`R%t<0yKwkyG3JF&SJu;zaWzJTzxa_M&p!)i^Pw`O}II#U`8bL3V`rR( z&X#YgoC@K(Ao@*MQ*Db+a@&?LIrYj}V(km(qvThp&1$Rmf7=ATX11~B3L5LY_EOY& z+3wlUT=)U}x%qUyEBqioLD>FXe1sA7RrO_beL8xqk2$RU%qI)$;}5)3b?d^+DZ`6l z{jp|`6JdSTH?n?175zQ9z{xy{4|xW%eFbx)J6R`V$BNc;YCUI`xr;dCqz5eJ+O6W_ zL^7&4YmXO4kKwPX{$JX}(FfLZwh%8r4!e~mj{a+GmezA-9oG4gU#2)*3vtD?7l#Yr zD@gBc!EU99uWmu_g(v67;X(m0i{fyMlQ3b8Ji1A3ReYrzxmwMyVind8`Y16vGlz6fwq0`9!u2-E zFEaXD_@Bn+zry_VpBQ6%h7sQ*R}k%KHOJI-+l_9zlDUH2vylO6 zn>|n4{uw=WyrI?jZ@x;bF73rLZ{wQezI#q-(I;5GaYypTYGyaBlZQ+1lKg^Dw&^ zb71x!#$1FpEoNR=W3GX5rtv4+r8*TgS6!0X@ilTm8H1W*PO<0a>5LN~q4^p=y}>PydbAbR?O6?d>Ce$TBb+OK^sEkdJj=7A zq45vJH+*pERLR?hY}-(^Ti>+p1Dm~qY?=1aezorozNvS8mUo4{ zcRi)|7ku+~oZH3w*Yo}?_xoeLGkJ%2As+nsUG^R&4hm+SwSZ@K7Q|My4$xlz1=l%V z$-OJj<=DnqPjv4w=YPt18(USJm3vJ5HOR4zscMc{4~y|pU&1wb|vGIb;WfOeh8ZyX&SDqHB~8n8Y9zdwwxEctE6 zhtzf57s4NR^G3+;^zMunzv%j}l{YKy8YFi~ew@YE(Gv75YdXU8 z`DNrHjIA5p#XhK>e{Ji^D=$)QJeDexkds{g87B`fuYd3Hl#(6n7b&4ATEX+9a4O!&lC0dp&KBcx``{ z_ldqA;aTM@T?!p+Ejg|KVcxs3us(g1T;qnEoi1Ka&cVm`&xaCQ`5*09)B+~Zd>MYk zH_62@c6tqVTI=N2V5g(}7OPJm=KFRX|9tRJs@Q%-&{Jb$OvtTACi!45!Zy`amfeky za`!8eO$?4))bIG#%5~z)*xK~Ompr>L6>%XY+2=A=4TK zlT**P-$33pR;F`Y>(!HA#qn;=YkZu}v1B0pjvLF646y&9k%5iq>2==qVlr|!*W)}( zu4%6JwDw<=?QZ0n)=Wws?&SEJ=9n7xUw1l`pW6L(*WOCk-jtgYyJ>@RM#;O|yp3^_ zw^xd9&D?LlO8lh6twkm}@56rYL+AbJqXxT}I%FGp@06U4ShqoIj%a9eJuscO z<9R&CR=-VQ%&jx}?PskTe@?VCub!y%n(EHyawdIsMb~;d&ejxV-wd~&=oq)2sMQa| z9J=!Lhp+Cur#I#@)*Z&{Zfu|(dy11ucXTrL7Js97e!A!)8L;(4rAN+WoXPdUbV+y$H8{~FYrxUM-j||FNFdB)rjpwQUQpfnYk3c{{Lb}nfZ_2^lv`f8 z#MMch@6{Z%|1!3{FCtNYx~mJU1}?v+Vj^bACozT7?#Ib!d8;A+l5EE|TUCNm?$!Qf3Iau zM`Mz`pK`foj;S#^I{6rwqcBImkk=9F^r0ioUhpmGg-yI`>*T(f`)K=^Qn#kM_?2r9 z_oyDlV(zo;TueI~CJ*R)a;K+SxqI^K<;~Z>nQb%c2^cfto8(KplUyCex{HA^?CxKy zwG6p+udI)K=_{qp@z=96Gi%Rjm5!0lSWDj?^N!;j>-}nb$&|hs+sVT*^R~2qhj-6% z?s?ArzTv5IcqOMj__CL9{&Hw(YhjXSW!7%jd-dVvA8yLookP@*@%+P0KL1d4FcZc< z99#!8;nj~R!#~{Vl;!-x0RCSByR!wm6X96?;YP(Z$zR>5xF)}cS|=y}(5{nvggK&J zr@8*&8fsvw*0|QmY0tS8=m&@TN{7-dx%?_mugE{Ny5;GQxwTWOu^$QQmln^j8g2Ht z8iOAyZ0Y%jjj9o5#wh-w+LrGhy7fz2iui|7=2OrUIsY(B-OPS;xa1%JUyp@<7C&gN z-p@bjr4;Lt7U%d^95-O64Q^Omz`y7r_!m6{|LVb9QICI}=y1!wRF%uWG{1-9Uz|2r z{>}0DmoBUmkIa_CKQMaREzm%Gh^mgPZ*6@%hZo%aapnKYCk|5!s1P%_d?>8L#J(6> zuj#`Lac~2e$KZx~uTK1>@Zl!fP*T=6a|UBgV^BWIkzk-rfxbtLd|hSy-7ewDDPZ7r z(eYs1(M^wI&z3O1vesFj%Wqeaiol?pgdYwc>qx^AXxm?ZgVlKUGh`o>y%hd%lKa>1Vao(lH7hv2AU)(T`xMGu_Vv?L%T^N9*c~$oWiGP+~hC|W2Ga``>cP!|DF$7nfwm4wr!D*8ZE^~rOgI+ z{l;x~QZy~?o5?%OJJF4`dZ*Uq35Ru}hb)$%R*ms3R`T9w3_nLFZ{WCC+k;vQ!~8Ei z*=%|89hWDY@x2>E)IK&kiJYG%cw)ZwUUr7`-OqV9a%|cY1(!x?PY368k7?Jt*%|u% z3FjK1%_Qh|1-7V;8i3jh=l+M;%a3zQ!6O^N$fqDjOTgF;?~ZxvjO!GWVJ$1y4aWAh zw<{DbZ<+(n*ud{lThjTCS4(l7a^7<=N4_P@!%B8t5n}v^> z8&JKMeEE=FMUHba7jT$IXRJZvjOy$A^+g&SYIC~m_;??^zMt=FEcbKVH>khEn!4$4 zwZ@j450*E!3dffnPm|SVu(;an_V;Ys1J5+)Ky3eK9PcELErCpKDXHkikE!hhOPIAu zQ;5qDhswo~iu5sr44D2E(u02c`<$ZBt_<6}zQ=R*AZ0A-}%sWNl>%K2(zTAYO<+)3uf#KWHPhgQMuY zICKxP7BgYTCAccVxQrIiGVJNHX*{p|Md3-wgl%&GzbJ*>jicKtnNNxr@J8Q@2`3et zAM_pQ%sn|i#?gBzWV#ry^lTJ6jxBsP%6-neuKhj-`n>>6)W*4o;By{Lo#9O(aydoU zrO;LRB^ndcdG^m7qhG%JIrO3AAWmEKUafik!+7HMv_Z0J^?oPq;IFNjeImpY`yGdG zNXNwZ&Ut*Ju-|b{R@DaOs_6SVuJqdf19NUnawPx1t~L=nDS2W}rUrW5xy?EP!nQ%nyIhh~2_?HOtaMwQ25C`~31N{iht+V~}HXL|X{i3t@jH%MLPKjjj*k$7!sVj0|UHmo@YTQ#Jix z!yYyuXVAvjbz%b@rRe-g5`u-Vj-3o@o%d!qTOKr$rV#-H@8XqiS{U72P*JGxu_ z5N#63j$fZ9ir5gz=`xQt{j|e>zr%agpGaka4x^_3?evv#m9r-e-giULub%sDjeuI- ztu@{1n=2m!_VKp&Sv!6RxezAu%f(UuA9e2@A60ek|F22HMNvQ!NVsTbfLcXst3VK? zG6@K+*BYXDYnd2&)3#PcMe&p!p{=KQzA^>HTEERiwCzl_#gy`$Cw*hRgYv2bwyU< zZ%dhVl<~il|Ed2i&e7E~vBR_z2iLy$%1eg%_mKwYBG={%PlF%PX+A%YnBBy-$M&oH zMy;+%Z7=uL4&mATu0fMuxi=^Y{_G!8;SM0T^rm3F0>9*%M9# z=DY;5NPQ`$yLRlLZ!<^k9*SHVNnGT>H)+1{_li@%0=Jv8D?9(=N=VI)~=`NKFZR}b)Bsp;`vJyGcfFF(S zrKuR+Q1G8=0Y=&v-+=!8K7JT2p8oB}qKuN~&oOPt=ZSnP`*c=%2L3bANKM_Dtk3Jp+vt z;0fKf6vLCeQt<5Z;W=)2-IM@4UkSkTvw~->3r{Npu#X6y%Yf%(=yoqU%ue7axMc!k z%ZMiM1&WcEhgLEHSUDc7{-OB}nVbmFR|5K?-VbDF?||2j^v;Kq54QtLTzEOuwM#xZ z0s379O~%OI3IF-|G0`>j5oevHc!=`57)*OwKgi$B)fM|=?FdJH8?u*gpp5pUe$A7$ z3g1#j^aPWm7=jtFujik)iTDaOXbo`2`y)zK<5ZAzYPukKVMt9^09CCJbLpF{R68iTn5p?Z*PN0IVgC)|ZlR+H2Z( z3br@zyv#Ge=3!_~vh*?1nrkAC*6R2>d-orppKvaFHhJYevA2CciLxGS>{c&aKz`z{ zisMtAdJNl(&Nnazt=IfAo?mvOU|4PA_=uJVvCmcf?q?%in~lRbMBhHoI*i3(e1hXD z?k3qyA4NxJgV%i)-yyqRZ$q~F@zoCLFLBm19_Gv*L%N;$#rBu@o}!ypufI{RznTxT zTh!lCw!fC&=(G0eWH(Dg+mgFe@E@&=^226~EVSoVzE*>c$NCVu{#vR-K7<c7G1~ zOEB)|u?JsbaafspmUNTHzfY4EY;G?Bo1HD6O6K6XnY48xaFL#2;exDD{E={AJ`a~e zJFKfzS1DeIQND(`!oB0PCZ+Tvw2ksoy_ToeNSf0`6T+ov;ggFK|4R|HUM_<^a7>DSkD}6t@wa~l# z>`T3Skas5mtA2g^SJoco>1*~*Ykw^vy=^9X8fSdv$J@D+wS_OE!v_0h342Kvd{3iK zdxt*U08(D?nNMR~>|^-4UNid`&%j$> zW=v1>ypN}7YcsT_xNcU~^1YA$O5uO6f4_2#dp_2qfir2V62F~2lrhA2E5$P}flKkZ zKi_Gr8Dh~D<1tE}kH-x5Zy%2iY0=&e_9`{sY5vgvQg~d2T}kUe#S0Z)WcROO?hqWO zvwk`g8Rd`bFQeQ!M0I76&yqd9PF<#PF`hKza*$nurRrTwy`{z|dE}S5-i~z?wgeYe zL!dw5b}|2 z+x@v*dWl1x_)PmW()oN_B+5VVt4it2^lqMSGsYdXt3E{~b4z@ahA!Y=)?k%AVRZ91 zft~h-V$`8MFrRO%O~(w4hq(I!o6gIZf3aY*IiwGYwJ4rCbp(EG)S>+Vcf9{quyZvlszR~DiBXzc5O zPdjBaR(P_}>fEgB4lH@v%A(EGq4KxTw_QB%qpWX>*bC0iQvJlxJ7nCMq4Dfcr*W(| zX6hYLT(8!)z;AsXI3}v4>OZ~o!I&8L|I zOZwqw?Ss%u-PV5iRRF&*a>=Kgk=S^O;g`miUB>vLz;6To9zpm`wD235x_6t&T|$|N z2Rp&A^{g^`CUkEQj@0kNaW`k%3hro9%W7QmEY1uhG-cD@MQ6B=|ZsxX9@OA!0 z_#XWHq43>2{7CY_vkwn3R(^_aC%}^q@-bwvpPNs{D=SPg7;n_ajVqt~?aRWuzL#D* zLh^!nMRPp*&AJxq@#eV3DaTMBa#s7QPYyj$?Wfb_3pV?9cwc8$eR<)9dXSIn4Rsmn zT2y9|kFn-cn_5RPS2t4j<(0rqWhK)ep$}>^Sbr$Yn*LSR^R%V@mqnwU*BCQpJafu| z&zM}49;4OcndI(e1x`Kd<_)ewZ+{ir$Z1 zwJ|%*(NKY zM{}Luh_1?0zP!BRg_-5$J-@$>^$Ben?565>2EQ=&&(;~@h-NsmlG*6SkW*V_URw=b zTV=FGUM}P)-cZE~-;b00+(Y zwr%(nexSrmjG~jvFMZz^InT#=NA*|d*R!nab#7f}1jFRV&{^{f-1TrRI%PevRlmTx zWgB_hc%P=PcMORZ>|$xHxdL$-9L1Jk4ZELq3VIXk*cfLZ`&jp01$?(H7>52dE~WF- zm(ae>NpGk9^vR-it?S2HJyc~f^jq(BuWuh?d6>Wbn}y%?+t)XV+4POF)fbudcd%w% zLSNd-t9sJ)_B=r6KHjPAD0RiCM=%yl{XB;}>DH~wIM)WeZW?-EjbJ3$_c7+PSSzOK zBjx|d_nsfm*wp{V4l7uwZT~%WdGE)i?&W21WBZn9>dPR)(-hy@nA0H2bOBDY7Gx>sv zpD%cXqh|drQ-C3K6`tb4F%37l;AHtQ0*kLKFqH(7mGFn)r0IXjDc zz_Ayf!#CMk*tRZ?=44m#+fzRh*fn4K1ag{h)R$7YIgRf}qr2%Yz&!GgyUr(#$3B%A zKO!zVZd}M79X8u7obl?OP>$WIJbvK<&Ipc!R`Ge&-ed&15Qe9|jf@|OY?LkgmyGdk ze7&C@fjk^-nmUk&H+%9>{<@O?AJ-ZI8G!6U%|Dc1#$&531zU&xk)>i5Sg7{=hQ z*T_!<@)P7or-H*4js0+YbQT`Ve6jSqdcC`@^t&v3ZGy?p6&EH$jCU6_7N-B>jVakq zGxpF@du~yDNME5}u|S_=^f_@7HaONKnjb|2c5PDPzIAZgx&Nj^`S<(CTIjKJpXRRs zuS@RT%Gy_J(#-WHN4)ZCLmL^MBRv{-!<-D!$zOIp47- zx-P=pb0TxnGdin|4DLUxKBr*wngGte2%Y3*^9mnoUm>q2P3%eEzS3sxD|4*Ps~Ntx zcSoF1Q+F0L=ATu+gSo?4+t1Lr<|lBBZDkz#Ms+HRZACI`KRU*h@LC4gYD}7cBuCSK z%-2bN$LYW9?_XoCxZ9@3+PULeZ|=C(=8Z{xf&aH7N29>>L9bjhd6R(A0-p1EN~gJ+ z^nZ}PlBdpeUCwj4Ek7=GDQVelbw+jz@YMXY1)hD$<_%0;$p6oiPGg7jaRyCyz6H++ zmwp~R-6=US06c0<|8d$mhi`Xt=5ukSdq(Vd>X8jv^ts!k&pjVPpRM@Xm*S}~`>CaP z%5X>Q-N=pZt7wCM`1;aQ&~iO|;LFf@_@N#?&de{(M-gI99f`+6y36DUyqRUM;7B~( zg`Kk`Pr-u;YoC|>k$nQjuv9h&{Pk}E&c(1_gsl{%*6v07@OQvT-`etcZdrL8-7(&8 zt5$r3k*PtSLoOcQJFT5|Bo8LjPP&BLX{Rrx;O!s}O38^B^KRz)(lD%NZzFS4>30$Q zgEQd1WFPP)|1kNo6x|_4%v2E#>jEq1S=@R#N6Wl-2!1ck%ol&u{Vkfvu-9wT$$yY?^&2(k_3E zP5m3`CFC#RnSm#6<9Pv3%`vx-#wVwG5zpIs-pKO?o?quF-|(;TT)vErgB9b+pX=KvbMN{!?18Z_*1eHE-Yweit4TF}7XKRd zz>4R3-OanCQg=UdzoDM+_^mw6G;{^V(v6(bod^$b2Su2^1osCdus0XhgIkni&AhLijTZ$IatSZkz`%*>sBGRYsoGVUUN0`8o?v zETUgQTs}g5#r!+WL!NDV<=B?(_imcTw*K z%3V%dzvlTnz8!gntLxqE_m%xJ_0!)kdmZ}He(hA~MeW~7Ijvpw3)-)>KK5-o-2E}> zSmsjjISJh`#kziyV1DZUyw>xit0pCnb@_sP&+p6iPxk9}>+j!x(|scN@2->ouD>4l z_u$gUnI>dsr);8HbNjM4%$l&2pLiBIb|!VzRL;$DuxDk4eT30xBAaTE!RSKrUGCrW zxxAp0%;GzL&*%LTdp=R}e4S*0)k!Y5I!VOSNuoy$ubYNWB7TzpkM_RNNj52d&g1Aw ziKC>Ga8`}?8TMdg4|yFM(Q4+k7;}r({r)_uHGeDfR)YC|(WrjCEx~+4UV(@CpEJ;r z<_?`%lkcu@(ZE=>7T5Pay!5Ts5zy>P#rTt~_w`8sZYtom(udor(9q-1hF|_9{>zRY z$0^D<~) z3VU`1TK-%AeqZEo`HtuD4ZE1}{Ep`x!Ur_G7n^GL^cWSnF@Xb z1wZ!to@QJQd?1?9exK(Duu?t($h^WBA7G4rnQQG>`(ZTTJwGj}xGcVmE~>)SAx zclu86wNDY;Pq6mGDs*4%*}y}Jv0H0K^|W(l_-1s!Vm@rKyvm)?@G5?E_WW22e%>*7 zR`pXpSA|^g=W6kJ7`?8PoQNp@G~^m`qWPj|r`m13#&jC&8#?#id=~!VT9cdOM@S~9 z{xJITHOQPO=ZcHvPCN9}G>*FHqxu)2jMnn{4jH)qX1>#Sw67PGEw^G{$^_(126^N9 z>bSZvx|v;TCa6Q>3y#gofj}PL<`VE@I*^xE9`kmrA=(+k4(#x*7CUfkPT>Cq{68=7 zeH@m-=saeU4rt!6MNIh)X%7|^{YglrTE#&{oe8>AbpgQ%lGOVp7w;s@3uhtajiC%24&wk@B~zYpP)G;{DZTI-kK z6Ro8V;gfJbpQObnd`F)TnSVcwM~LTSdBmX4YrMg+YFwE>UPfc359vT&T6whn|CC2W zcOL8xu|{)s-p--xTAdmGe8| zlOenp`~~M9@;~zRBEG@abXpPL1p66;Ujm*`+dkckR$`X!t5Q3duj;RN8b#OQxA*z~ zGn=kX{f)HNbK-;Tq}xbmDXTcY%IhXi^~Mh5>r}@Z$`9Z~cyi#qL?Dm8sO|Ojj7PC_ zRnI2s(SPaf;`0~zzmv4DGap#;pVq%ZdoI$EU47i78a@Tzv2P`PM{{W8#fx(fh26av z%}cLf^NlgT;&-(&;>GQb;AeKrQ2g$Zr)g+(F?{FC@-%#C0yZY}%g$J!?=kwW^}gCN z=puWTR#+RKoySV})o+1keLryB|J@SMt2W5iN2~{5uhu%y_p1;2w!Y(P4)Ft*f19rt zyu~^rdW!UF`2k@A@N}IJwy#AeAI=+5?5Miy@nn4K)PKLvd2bBGX96~22lM-WA$E`A zz9)#|P^#~mJ7uR#jB}F>RvUaVO%5XMA`n+_U|JsdT z65kfDl^^1}bU==YK8pLMIh`^Ec}1CAj65gsox^uJ15I9`9C?bv?45z^_iI0};M-E~G;kK>&~)|w_=NYls2@+7|$o-0gqLC`@o{G^|UtYvqo@Jh_OufVU*I$3QXW`(xx$b$2qdzxzwae3$skbOs zXZg7@^#*ChvfRwmw+p>OTJlqMN)K`Ob=7_E&-k9AReNqqWf=KZqIy8h}j>2vY>R*!ye zr_40otDYxZ-zxl3s`0HFVb{1f@?LbA8RYI4-p6;M%_#Re3;yRo3u^ZvzEun+lc|b- zo^P7==R0KQQ=A;laiW{al-&kB+$>qdU3hlv?s^G-l417D|3$!9bI@UY!u+K=)K|a0 zTI!q3f5~F4(bS(`K`XnUmDPXBcbv+*KpTa)0#j*2bej1x8u)pf7`f1Q-?7H(+^eNgr34Xa|vur?|U&js?MIW#I z(m{LXHA+9hg=dR<>c?G!4}c^0oVx)}YUi#84qDim@TmB2=M$?8I3EhHUl;s4g-@Ng z-SE+aYZ6vo;y)w4={+~s0>A5Q^GN>7p0^ZSE*x=bUn}cT=ZwSWCC*<;H|kt<2D+=a zKbg>6A^TLNdqYL4jPX#}CbzOrQ9gl=Z$6Jsy#zb=ykuBmAUk4PA z2sf(p5SS-M#k1ErjSn6Ich_Di`n{I+^i5C~bMevduPHyOh;ietXsxmvdXP@$uQQt& zPYv*>`H^C*)bu#`^s8>2=aElL3_IB0@o%$mrO%64`}+OPh_|KF7mY=EnzuhU%dEEN znu*&I1((0_eXvT*zk;)Thl6lVvkrqs?fo)A`(qZo8uY+d&gm~NU9ggI=p39A=#N7m z!}#_dK9{*Zxf#Bx(plLeeSrFNG4DdqPBwfML`hH+>f4Z^{}CbSE@J+ta{1ogvabTKWCSQ8>9^MI-+=W}G`AK-#L7scQr7HCg(nlIcmUg@Ori*9B ztFN2#I;V1ANxwaNH}o)yG0P6*@~ayg-L+}sm&>{JZr(SrekteKg5ErTQGKo+p3T5N z`FT1g65_1KENh>xU>W=fW^Mgn85TgaTvnA3$Z z>ue11eg*e;MB@ww2~j@pj7$_=CAfaz4YFKzthH(Gd2DVxB6c zV@J_}O6@Oa(CtUM@;B$}x%8u84?3kJFSuuZ#M3&5BU`#5UPsN9%vxdGGMl8I*e9`(x6@`!l+S zN$VybZVLoA@(OU<7JwUR>2d=Of!nA8+@40~^WnA{-MpPPwMTiB*S}qyliA1r;&C@q z?rG@bDc&8!+^4vJ7QVy<)ZD#5cN=h@jvp6r?Fjsk191UQhewO+tOu4qqfW`~;&;uw z`!VmdN57d^f#Z3K7Vp7-Q8b$1{D)%eP5ZiR)^3ahhdEbe^j|(KVR**>&pN$h>lOHN zl=n`HY3}ImkIfU~ysFB@z{POd3684)y!vqi4P$tT_Yd%NI4@+&73tbH!EZh;r&3mF z!T1c)>A-x8?8wE?|Jupx!j3EXgbe&+JNfnS^Dp+~*EjR7d5^o7g#M8Wu}7kQ*3nOQ zt{a(}OnNtU3+JC8ZR^91^#OUJGmX`se`(LgjD83>q&dGE9H(OQ`S|l=^A+PTeH6ZC zJMz{}knrNvY8=ForeDPWq5W^uZX@u4H%h`s^2mpYV%blnkFWDhJ&&Zy6&@!8cr z*qMyAY6|Dy=$FQDFSyu%|K!6XF7FF9n5NaVy$HURzkqPHlW*0Y&QD1Oq+>4qmhn#K zb^Jcy3yT|5zg-%<9%j!mpT?h-KEDaSN72!I8i=B!Wq4Q02h1VAl&@0sJjo1Vm4ILQ zr;E3upJj~5@i1q^73V$lUx&vv7Hr$mRmV~8LGDkkHRF1+R{`_DoC*El7l7T5xwUT? z@!W`E8DXtsh^O0E%YS0EB*0@WF?0L!ZH<`&8%A7N?u==bZa~{Q?=4^d&`B4`KdW;+ zz5&KtgM^LgyoNrgTmv@N_ED5ue1(N^_m!@FRWzfRBWr+lR(reC-8=vctU8j~L%_}xccKCCnFM&d&1omFP<59#GhyZnQGe)-_lA#h^X3iQ9A z4}hDlPb&7sSW7Rf=Y#(M|Ej)p1Gu1{7M7QxI|X3r0L#71fxGBKE8qF`w(?yF+-8As zH!v2=W_oar0OxMt482=8&jilh9-NVVV>0-wEGRF#u3^HRW2A>Z!QRW*tK~~hOziT| zihY;Lm)O{I0WtU>5$JD1_Ti&xfS_Yh55-kgQ)lQ}`W2W@VOfcFUa7Vf*@ z$tZf5Xm>Z`e~tgKKws4-*-jI{mUZ5ynwi@F9z%JUD@^N4fynhv-1Hl~r z>h$RX{*q3Z>!XcyiT$}}S>yZku*=fJnAB;|gYcy>2$n&-MbH^{vtKUw&8t5gzG3wG zUAH%M=9dmm_I<9Q6S&>5`v(o3$KvbYz_TAkj{5jXLj&T4kh#?Iir?oje1h&YDGRU8 zIs<&t_b7N1{KVUl2QSQ(v2Mx0TVZ%C_+1QmT{X_cv*InmocqhP?#a%=H$Om|z_)V? z_=*j8X)ws=qQ4-Y2kEa_?V|T>f$l_a3q)`9PiIsNypRdtFar+5&;{+pplrCDypOrQfM;InG`=QXs0cP0-ivQT^h12NA6O;=WfIgI zWv|J`(7;bZ^(cl3w2^8Zz#3qy8!NSU9{6HDLuXqV#urU-FRYE!sfnKrEtm4u4Ig#* zyqTeovJn~otSCT~3VaCOI)4S770V&v`g-&R(dK*j1;&8S1mut8ft5A*()+T~%7rIO z&*9C;g&=P?a~3WgXg_Uvn;0%}9YYkX)o$$!ecF(>y1wAuij3+6k?lYL*l{Hk{$@O=Wf*tv}K zPtixqcyD>s%I1-&XD@Tt#DZBH@8$1*8D-ab-_0Za3!APXZpzry#rz*(%Z*H3K>A~} zwHTVzT0k^0m%PU)zZ+TE!JbFrYZv4mxRiAXeHTs~>=h5aJR6zk#>jd5JXiO$@`d$6 zEWocZ_%(Bqc-r+z)c6N6Rwq!#p-dXu6eWfnpA<7y&Or39HXR-3@BZuoy=0wvZJWKZFTaHQ!wrXp_Jy+#+ z4?8-!1^M?iVC?Hci9p{I^qu~%Up?V)zI7sjanqmYnhqbgVIAemvcAhY$L)xW>>eOFIf0yweN)OekS%JRZ&-=x|^EbBM%G4&ldBMVOWa{^%pR(yO zspm=Su1fjyJxh9xO;@Gl@232N16}yZpI$gpostQnRmmRhdkAJvQhue<&`#z34XhuD zYs1(L`mRa1F{}6CcdYMJ$BUHR3!N{92cnG8^6*{KYnY$8?>%&?=GIZEu(#j0i+SJ+&+N1pC^I-skqU%Jx-tYd+rlV{8?Cqc|G+PU99l zgWrZ&9V3KuFj+beTDPk-+7=e;ar zzXRIXvW0k5<@nl95S@=s-FgY}rjF^Iw%4xhs#9;Fk7;d({c%%Edal)NL}SM_GC$3A z&)H?L6Pti6WFC?~M?rt)e=f`!0?~x_@BY`IgKPX4Yb%rnXQKPNNEgqAKjAKg|A0oM z*X={Ey^8ZXG4$8ofKJPtc$oi42EObC=Dtpqfj48=9;M4ZMgR9%ou;Os)7*v}YNpS= zUgPVu&Gfw$c_h5;rSDH$8X1f1tVtQ@MEM)YdlG!U%QJ|}W_&S&G;48*%$xOMzC(1b zZ^S>s;XrUC8Q+6!deWw=Q}2@ANm_8Oq3j;&KNCLr15e2Zeb-Cc@*w|phQo)`KK!%< zr@kUMMT>NQ!KtqZPV$YE3>2*PAp-?3%_Bh>_%RP&z8owKuQ4fiEP~gV)OyAvc|gr6Q`(OS-pQ4nj1G_|ZrlQ78Fr|h?5A=zva=FD8Ock@$|&}P z7&^;n&KOL$`+1{#3}+Nxg#N}%p*-jArQco+{krG>ujp$f*5#G>N^#z(aQ^>ZVi!tx zxD2~k=nkEeADOx}a?rxpY2qC^YD{H#wvRsO`USSo57yyX+SWcw zig_LVUiQs0$~9PfL|IQaXM@|ZNenuMbMW&`ZtiE`Kjg$?WqquU1A@+Y5+4iK8T`Q5g;-1%ryy}OWC=?*iuw)G=e>;62EF<1;;*u zEs5B};ZL|WrRd3~DIDP8FtQJO)jHi-sPjHLgMNTDP!;F0RzFo|@1``Ie|!&n`Eqn_ z(YgE>g!^5@S;&HGeW!D+va@TQDE`s@0B3z(ev3I!az^z+j|F)OJ?0F1L2m#%QzYvX z_>#JI`~LC{Fm+`wI9 zvFszl(Q8@!le}-zlSC7|r`{^YW$zRSyr&QLJ^RD!v_E_d?WwNMus0!Jamm^XNk3xK zRjKnxOD<>1D^hbwud-?GMx+0;_^%Jd6M0!75v3T&j-$vu%28 zYBK4wz4RwYuO=-R6vJC^7R+0CFMI^~51v@xHJyF&;pPM3Lh@63jbJ<%y*hI?biTI# z3}M5?#BV&gcUm)Zq2^dWR)EeA7O#=pv6<;Sq1r5d7t*`=yc6Gps&Ak`! z?}_9o4vEkAyUPbzzE2nU9lHbelCAWA5cQq`|M>Dz^S5B}F!_?V8PSJ0}poZS!7##9X)mS8V?btlIrg3yK4(-j# zKBBochri2uWST3lMyDS4`rr3vzT?;QbsRRbVxAgHe_{bXi@`HSa=^9Yu9F>iX?edL zcVT&b-@?i(`m*>7Cn`D50UWjW5{|r4r#@^#H&Ocubke2BZAbGoaZ7%~S~NO{`3rwy zhyQK7D@#XKG*p|M#ur@{O4d&%_Q`9kfjFa)g%>r(`~MriH|9m*p^Gz6qV4Xs^OAkg z>{j4wCPzEbVW*(;tc%cR=&Yb0gn_G_d&y7GMmP0!1IJf@spe;kf9iGMoe;WF@wYK_ zjVyC$LEelPEUr!R5*S91l;xqw@9G zPJiw$LoU#VsP%mqWc~HFLqn3&G0s*=kNFum-C8?0xs^5aR{Ea_$kL2tDf)@wEUe%q zzF%75(yj0iW&Qk4KELu2VnAulf;?{&o@Q5@E9CO|5H7BjB@5qG$&e1F+-?8Hvls134hF83w$A~(-O zKQ)2=82SUvulMOSD4Qh5r%>Mq;QwaYd>0(V$m^X@9@l)EIbSrOxGwH~g8C)d9)|u~ ze}_HHjK?o@bX;@sORPIX$bLH~sE;1)MJ8%5vL^K-*6GeK@>A8f=$o#MQ+>4$8(%+7J&j%(%an$;A)(|5BF}jxMmrP`Y(ARUfIB!N%M<* zZX{crzjEHx<0JpOReZOPHic{9Vg&Wezrin8m~W`>F3N6)A1;)v0^c#_aJ`rP%?Pge zPh_D@-&c78vOwijrkgT?wPbIOwPH8@(RxsADsPvU_Y3mW{}1@DK7UvL>Hm1z&%zVp z*?Y+I`!7EJ27UMahj$KfZLcQm+4-j+yNNsZ0dr(*JbSJCL!H5xe0vV;xB1Gey&zQZ z1uk{o9{+~McE&83R?A-Ih0JMFE0}jCF=ue!qkF~*pCV|qVIn++4w1mFa@ZLTY^}cB zbeKo{dBtH4kzaGMUet`ArTU)D=eb*Mh~;$y?JPPCUF!~$ySKtjjh(=`trJ=6nyMay zzuqFwX|+v2N4a>ss1ZUBN!5ncG^=w>s}8CI9$4~Z!5$&oy#ar+OX!Xm+2W(%eF)=N1f21uUg_U$7RA58K~IVC z{+_=5YuZM^$JhiM{)-1g{63rCzowvHb9ONdT@?OBUnHSO^E}L2`xlv_b(y4F17drW}ct<@9f%c4C5{JT?{`#`BcjWqkRJ1Ik5y;VDZS@ zR!u*l`P?*QX&ztFDE7O)68luWz~V{zU;?s^Ii@oh+h6#ecma2#4(Xk?d;6T^K6GS_ zLw)}#eebHXI#_NR?WM^p=7$J-jiuHDhB@{Px9x%~w(}eO_C4~$=yv$*^wi@|m_8$# z`_mams2?79i}JC+94?toT_t^OGT?$axu5nDW8z&GIE_7@DcrkfaZp%mpCUhc7ay`U zbRehY<7NFxNNfLa9Z$sq(Y*W^X%=#%$D~rEpC$cco*Q^3;9;K^pcUIk=@i;Om8^V- zGJj&MZ!=cAr?!1y@=xr;oQ*EZ_&WDN+rIo^jGa?~(e7!;l%09`e^}WRM(-0HuCaX> znfiCyRv%qI&C#hF`2Q&X<@Y4H{2!!!|E~VC9A!3UiEHC4x3NQHj~yAthIDE)ch;Gl ziw948;H~;tSv-AbL+;}D+&jWD#2;&CecB36+K5Nrbt?Bc9&ND4MRTm%3+MY2$YaC4 zWsGu<(kJjTB{7CGc@Z;}*ixMi^FZQ(`p(*uupMz0`u2#KmN?M z?OGe%#^?R?1XfSTaW0}>@63T0&>@|(z-`2=zlm|`do!Lj)EUvvFyoqmywsY{+8>dN zJDJ08WsXz5Q<T$HDJphpD`*FN{BTp|8NT&{zCH)Spb1 zX;KVJ(NU0w+;|s?F+@zDJ>ETU@RGqE=+mnBDa?9BV-s9eUxant?cgp-*;rq`j`h{1 z4Zz#*z6o7Iei-P9>(wUu#!7?FH|vR&4fuRFL(ko_Ck-O8?~LrR`lngX6k-)zXWnbG{8D}(>0u* zGhPhn)t5Pq;-gjQ1_XAh^7&1%HbR^o)H_QToE7tFaUthvHOIEH-kb7SVl7kWEWXV{ zcWL%UGIyHz8fXk(ww(NvA27&7cv&{mUEUXd+Hg3&s)yhd2BRQsXTh~t5>BpoMug z#<FQ3X@!&Pb9c$u=$rlY?9ig1;CjNReLfKaKHumwpmVKuO@Qp04D}k?0z2Cop z4D)4I_bhCJbKs3YpQ7|>A2i2m(az(%EA)?dHrBE)$41jf`E>}^sxV>r81+`iATveq*F59f6*NCc&Uc+#zFP2zoe53RpD?ohZuDV|C3Cu)r@1Kd z?(EzzDf`aF&^+%9?~41E#_q0hYJ95y1jeX3Racrlm&3+L`EX#2@S2Uyt1)iyHu=of1FnG4-}a$D)2?KG z_%+wYBYH}|DjUy$)RT;9tsTd>)H^E%CS|XGhkMEX?!odMcue-*ci_4AJs7H7$}6Yy z6q3Eld&JAr*$bTm*0I&i-T{HFB~XO@b_busefVkRJLpLWWHkqc7Y6XBYQkH zqQTr127Ijl67~v>znB(cVR(lWoN8P)UJ$$^JYL9M&#_@1=DZ%%D}F5h&4#s^HYz^g`Z z1}+)wcv)a394-(J$&)Qtxcn^T2YTg%k8Aj^KA=0Tw0au4Q}zm{@qOSBr(gTnSCKyQ zXNxyX>#-Fbp`qwwLRpy3@nu~64#@5)z zeOK+A+4OxkfMKK71b%$F2L-L{O^mZ7ba6!U_9**a-6%Q{8tdtfy}cBsjF z_FJE@1bwDVE|0Cu!KTtxhK_<9zZE;it=Olh?aQyv2EO|U-^pJngHDhkzm|PsgB{cV zu9xrjqPO3gJM_D1@4J|6kB6Ndc-q=4HQog4h-SWTMZOMW&89K7)7Fv3s5wpT?InJJ zd^iN7boqkKTd|ESufh+EGyBU&%## zg3VSuCHqnb{9y47pFV&*yuGfhQ~N8G*ojq##A_o_!m`Q@o2 z*EPhocgdFO^NoC-d>ibg_(yC57fu=b_sAn?_w*=q@06L&RrEVX{!Vz_&ySHW-E;`H zJ>;JluncP1w#2u3z!Ec>Twm#xIJiXYF?F1jLSV_cEo&6R%71{~+^74O|1es+)|V~7K{`cjTQv6wu}i~$ zmkpyP^>gZ%y<57~7SjG%hz#j}BTw}D7t)-~tqzVi?ZMTj6Y)d@-#pP<47&35OmLk` zu;(GVLU$$nqg{(nVRp)vqH=-BIcgzDl**#oQrWm3kN9U5x#Z zQPfvUJ(uC%_cr@4G0p_O4sB+jO`k3^(B-S_zc8`NkFb#Mkl(j46wj><#dj|Y1@1*~ z<9cd68ao;vFmKR{w9P^)@PDC z@|kdBw~k3QQC9mF(vL17eJ|;Yc|O4NLY{5*9sYl$Um*P{p4yX{!}B%!Ze(f}>A#Wg zk5li$_kW*NzM751f~=Q(+@doBiKF5NmOPq#hrRPh(jScj$BPe?oA_4VEe}`6x2zeO zwB^#r#VNDtk<4-NtxMU@*ZXKVzNLD&-mhy(SGn&K<8|*vvKQa8O9{TR(N+UGOn<}p(qddyThpWM2}`dQ%^T4{@kfXo(O|~K4fMM^C7Ej+_K7w}~7RemO6=JpKhw&{0CE{#gP#+i2cu;+$wrU|?M z$C%UF#+V(FrjW9b@&YVJel$-9VXJ3kQU#cUr{ED1xTDN0=v2AhQd+$JE zK=|*gK4ahCsQ2pAyrTD;-0!c|d-{(3$9}JKWvajZ3zyjMuhDzPn7F`wkB+wE)EU@M z2QhavG4FjjT^C`UJadNGF}@=D-NEdgg~vua&xF=%%FAA;S!%vtyYbAPR>o922#Zq0 zG-)3$!}_2PJYKo<++2?5^l9hjcJZ|L=b14*`>@}?TRwIYK7cn=m@E1!hBx(fv1hfX z{KDk^vF9bXUw?k`y;CkohUKSCc|SIbU$%XUX##$m1P_P4Mq&+i?XUazTIqi}Ag|KM ztF@GiA>TfKK|SRL^q^Zdl|35GUBiCGY-m&a>J7vnYD1TM)X)#koul*cKhzUrY_r&t z*+9IXX7saYh?uHpnSwlwhOqA<>ol(h<$pc4r?=_5_A0(~j_Isruj1M|qx-TZJ~N3_N6ib+Q~pWv9k_ur)7{(I zWdk0Q3@GROFmR6SpM}~|_JX-1^nGG$Jf6Y7f#(jxQ~Krmd-t!YO^16#r!meDvCetC zl{Vi3Uxql7nvam-o6Mu^mm#|&u?bdQ{{q;)Oqs+0(*eFmNKWiwy*qt*L2ho!4MJvu z3*lMyw0rU@61&{Wt2+ESw3iwMSBJ>M_4Dof)ASx$Y>*p=ynoVtf1=(av!l?u-akzH zf85P@(9!XgoD}*qcH-+y=a1>S;%J5jQm4| zC*fW+lRF=KiwC0ud=@p@@&5z+h;04Nba#B~Y+a*LcYEday?8vd?lN1S-8a!U)Ty;r zntfNnMS6$yWB;BAhkeR+)>~V_tKxHMpG|b?$C+|SCwRY9@ux_u|JPBkdGZ zYi)cRb+*Xm<-O=%_XD>~`M}in9}P@?&BMj^AI;I3p-GX~^G)Z13;j=T&J+J+RI2&Q zP9y#|d^0HZ9_y=S@0<6~|MX2OusxG+^grx<)5m}$pZINyl?Oox9zm^ z%~Jc#QK?UPHToN*E>Hy@tjL%_0ZXi*rC{yTqk@-u5Pe+T?{N8*4V<0bQ3Edo^pMS+lHDQ ziUZb0oF>IlZaW%zLaeX#_`m)G+6nec{!qboFXw%dygPX!8w+z9vazJxi*UA7IFRgH zgzW3$yJ@6#58WE-Y3GS9x3VQRG(H<$?mrmI_)2`}xI0PxfCkuG8kh3nbda?|us>03 z?xJ~n&X0LV^ex)2iSlD#&Yv4zWgW-7%iK_nzqET7it*-$9JD^|rF_Q|$f+nXP}JZ0 zYn{epz)`d1U1CdjA-9k(Rv(fc(Re=R)<>lbcWQm|T<#io^~#k-_de+k2Y%8izcY96 z>g9}4xVeh)-az^ap8v+v=a&u4bD7^9$}bxv6O_kzB3>WTzjpa&CUazrwD?D|!;n^- z%Wtdye`eh)S?cP;D+OD0;!ViamA*bKy;(Z(K;SL?*`SB~8Td$MO$YurQ;*@S#=lz6 zHu%)9=XtN5k5W$y^`u|_*XwyEP|uTIJtL{-Sm1R%g6`GNVdS5$`n8|+FOK(z zf%+3({RgmR3y)dwy^=QSs5AWXzh39J0(GwN>U@_vW8@3pT9?cB-pbI=Tq%1;foH-7 zI}SA4Jd`~E#^A@hX&uPC8Q?8+gig_I2%B6tF_&h3NW7&iajhCm>lo3h>^WUj7;Q&B(;pM#(FQkeLPECJfPNB_eu7<#y=3BG;4_k$lWU!QczguvTVGGy+?l{o zwy6a2NB?!6%#O{A6%fIv-aU6sj0j|U3_Ddb?L`ju$ENE#0Q^}$-{aLWi8?j`+Zbp2 z|5aRnA%GXzheb1Yf|uWr4sZO|>zNa%r_!tE>(uio=}h`xujj--Jt422&ry$I?dV`{ z2qCYqQ!?+3ws4WnG>u(DF{pg_Ngu}UY~_$(yzIhq8|z7PO#8hq{93_R{k?);Rca>i z`w?wKkf#x6M*MurtKKm7?iBnJl!dQigOv`o_lNn8G_q-t#<$$%wJFpge4Ijk-vAe1 zc zXU7uSk-YVP1^;^DT~9_{&BKNgdlOzNGgGwJk$r7VWBXtJ^Tt{ex-JHc{tH{kQtcm* zPUrI<82r|keq(6TFW3C0>0DYiO!0!e{fnpUI^Xu~)wwwnMz5tE(WvEN+WQf8vWN6o zY#=s^ih7>dEh-v#mhqg$vz+H_o)tXLqMd2Rs_)wAvvE#{&qO~~-{8^pce3vxoM*w4f8U#Q zRHMBd_$$mEMkYEX9{vRD56ZZEHtv`o_v93K@3@8jb=_)hB>i();)M7c%yEikQ2cE@ zW#!9$V968Kf1UN+%H`=#x^^JZ6LL-W|G0J^&j)waARDV~Eqjd8>389Cc=j=6E3RRW zk-dr??d;u51@^ZfyLMxvf19<&k_C(t+=J?MOLsj-K zol%i~kj8!#A}zbyZLGUTJ~k5v8t zn|e;>Jb~5;8f!zeBJS#FBU5W;u}{nW4H}bdl>337Vl`^Nj>cQ~@ z^t1%)_gd^E3v23sRl%>`eRH}f_;iMrNMUu zo7z(Lx5DHvCEj3^X9e@zNBE&bU8nsp(Nv5(Znl({PrBxgvhUx3zL&v2O0wn3K_>oo z*_fUvdqj~XxA)Fu>_#zZp{p>mcL8xGMQ@6cD7%bkuA(M-dpo|uwW7Zf^ZPRF?<+q% ze14xpy20wKBU4)6+C2mKvm016;Ny#}WL*osaPoUoy|z9x3wzf5K8-yLK7)39Y%l9o z=Bd8?l=FbWP-sc`NU&}m2>hRc#@>O}bOuoTzm+{5yWTG^iw`>oySm|w1N#G~gAdV= zd^&DsoZsOo-{TYD_blrk{0k;!m4__tW<9%(`JkKitn%8>Hzp=bJd)vOmOr5L# zH4wugiriJam)FARPT&H$ye@cO(J!GJ|GuIpp(*3>aaued@LNRw*%*pGOcQ13GbQdT zviK=+U(p17DL)V0ZeZR17;)BHJbRTJbDVu<@|v+#(Z03)72j86YHI2@qm`5Fl)Xy# z6{RH$oT2fb?PMPPnARljeMJdk4NIQC2Ho6*T`C>W!x&diYm?pBbi_-7mEY$h-B;9d ze1G4M#imx=_ZV@TO7*=Rc!s&JD0aMiUy)>C1o!W-}870PgJL^u%kJxpT zmmt2nYu733iF$F@rK@JJG1z@q4x%eD7hWA6tN%>%oF+)LB9G`g^8 z{gwCg9f`oZg!+wr$e&N`T00hwH-E#8*Ywj_{+XvzcPNca-OiXK0~hnun(`K&xA9!W zQ$A2P^3*=u*Lmu^(bsq~-s-RL{0UFN>dT~$47X9-_feCIQRa`7FCOnx|J-kNHu*!Y zf`=sI5KldH6S!>4_9G^wM zAL3_BH20YL3ysA7>F)oFwhi|%30DVMPuxsj1OxfQ-DuM;j`s3@Gq9h|SPb)Nsj-Y; zEW%4Mea2Yt3eQ&r>f1tnm-4^=zN3+;Z-5ig_bTil7pW}sn0HQjWh67m+PQPkiuQ63 zx$g)&rtoXa`}ZATr~D1&-1+o3@(JIe{o1?Har|?~6Ut48e5y3|$VB8g^JoSgB6#N5 zhh+u&sB}c>i>}UEmXf}BXF42j2@kTmt8_=fxCs~=(*LCW81rF(DpC`}0%Pmdb9Wtk0(=6L$4p$7%d6wg$hRtEE<#63U{Ng32w8F4vYtUYdp$# z*uO`gU043@tlUP{$)c~N-ag&K(AU$*Hiv%JYTjlaLij* z1XhCMhvF<2ISgl2jCb3P{q`<6;fygApY6stN(U;`RQrQ{3 z`?`HPR9;&5c57^`g?xT&3Gm}{wCVbFSEfz?E?T$v>)HRm;`i@bGZf>!1b*e8`=R)a zj*n-zx%e&ne~I6(eF%QP_5T5WFA3oHhrq?f?=K4H*LUF~;rbDl+k3CDPZ47$V+l zRzAa;UTdLu*h6A}YUOhN+t?7u^X>5RmhuYLQx&Nd*zUDXNk1GgoBFWksHFO`jq$55FVa72Q-C*=ueJH;*|Y7t$40vQgB!0g ztli!9d7kxon)+hMteNSzL`Nfo)pwML%mo z2V5CJ2DH&`m^tF__@*$IY|{RM{{MD_S?SwFx|z3`V>Zbzr@`Uwo9LkUh7S(s6?3AM zg`2RIth2H(Gd><^bsEpCAG})YUdbt+5BqI3F3cr|%b>^q2`}5w1K!~$+7Rp<;4l0L zFYhpiXv{jdfqYvj`DVw1jYqg*uH2;gaUp#$j88TW;n&g___cV&pIT*oI{Ol3ER9`# zu8o`3ym*O)brjphc>GYp*2Ylb*%;U(^=$&!7{b6hjNI0_MdW5rGxYrt&4H{T<&*NT zXESNXZg3(tlQ3r*pT%A>fM4DWxGwA2OxnS5xRx{c*i2ekcgbe50h@^lbB-OGNi1Tx z_9)u6&v@cA$!P-bhr_@G#mun}%jv_nBN^2*fop(q- za+s~;Tx=zm_O)}@u4v4kN5ckO!Uw?VhVjGzS%Ga#^VqkSEa{y_Kho-7jp^719XhS|4_yE(%#(GmNNVjD^pKRFJEn{d#4G9+t++Lxotl733Np9(=+xg9p|NL2U@?a zr_Q`AH-hrpkP(Kyzf;TJt@c}?r9rgGoPG!$cR|PBiVj|_yJ|#-3n^pA2yIBuQh%El zFSPXG!0Y|=F~Fmb0f*3scri#HS?J@W0(}hbsTl3r)FR}c?9s=hc}Ut0Q@86rK*rH|SH&XGYSs2teKniY3N<(XYkZ>b6c@*9cpj; zl%=6o;367IhkC8wuxKczbpUgf+UdT@bZ)zcwm4_?cYFu8LzCO?nah9dWj6r}Xssa! ztudx=E?L<7bMPt|l%?!THjOQpNOZDL7^!MGitW9q0T=G7ZwCC-H4NPu5+vHB?eRddiVYA!HxXwEYn8;Q8tB{B-&8;1hP^$%S(N{($77Y~=QZ3-fsJ zuBB_rIByL8mf#P_xs;Wg>#SekN;k&tSbNVJc$zd594sumtZ(6nEBYePvBMsJIAH$^ z%XbY~@5_l;8EeCdtcR#m_g30HFywy(IjgmW=KC1)pJFJ5;K_zCbVYtG{Y+0ZO%IH> zb2a{E4Y~RWgW_}EaL<~jKY}bp9!4bBti9OW@G$+VKfA2+VfxmNT{=p9kKNdV64++^ zHAaGQI<&J1`mnKyusxYT|7E{)DF4P#`t8{`9ll{qov#LLS&XX_9b#oodRERbue`Fk zEIBgDT@=_lS=Vopy>Zn);JKq^v#Uv=`(uL{m6FX-Hi#!>i(pNj4!|l6tfIv1=spWO zFtSo>=v#K?*DMEKifbTw2@P7i^YT*#WB2Z~4Eja|cS&CRbH8)~(X;kz(&YtdhzJLCLkzU~nD z>r99@uW=eroH=;4{I1`FPBos-Q5HK!U5s;a?e{y4+5;85@ZESh`$hKMr*UQu9q1F- zZ88Sg0NrT)E?vgAcO1pHpW)Xz~|y6mSVo<~R?z z{z3AcYU)Q1mA;d}mDbx?ou&=}(A97!MqyhKB`FQqP zvtNvMK5~xhzd$U;0v%?0WG|{p-H84AYD*jaJaR00k9dT85<9+S-&Ll*M7a;AMd*ui z*6st%%0KmE-uIW2ej6EDOru@UsQP*beT-5T{1wI}xH0Fi*Lh8q(Z1T0$9L&}tSsjSP2b_j2l6gNzb= z%YG`}`6zW*qtC2kULQn$*#h)819_n49@V<2ub7xA{xHt_S$;ho4zD$k5GxtM_z3g%JZqFBFu%o*%d3P3VmZHmgY)_@=K8?+-B;Au=ijHYxeW^44 z$ikBJ9j1JYF-xWh?oUIbf3+|gljA#Uy9CrEF zCHNoazx=8dL+c>0(>x)2ug<0&Ski9S_fNC$t}`8*cn%*wF0MI!GxN?yY{@T?_s{H% z_#ary{vlEkXMJzu)cv0Sk3|O9vmY;#zPovN`~{xZMXKY^^UZnnpNQM}m^uDA@=tC* z&iW7hj`ZNJ5%FhvZs!aNI`{|Aa0cbp{qu4g`L4wr9sezPk3_@PPSA_p;VJSPG9%-h z9ay>g8|Z$+MkQ^ZIiq5~;f#tsZvbuYe(Bic&XoGPeQ8AUgPGOI z{9cp$$F!Q{&NgC0&Z|o9o;Nc2_m7WG{_UeV0mm)tt+_+&}0BMfFC?t5@tT8?z$fEa;6Of8~pNko{oRO&xck z6KeegU#x?Vv8BMr(TVZU@0`Xjf710W3HllI&zo=Cd2`^IrsECHThwswLORT!bOr<6 zE6r0r5Ph^SfAZdzLCNhr-{q%RwYoE88^7Ea2PbuITyio~epE8oa&$5cO-Mhx27M$H zYse|?Qag9x<%tm~9Z9wx;B>=`-(A?b)y(VL%DS$e{Z!>SW+2vYKvPO2>t+eefDDQ7~cKN)%*{oqB=y+N5ZMU4U}doBRTW^;Fy_#zD=ZW6X{zQbmEp7Zp-93(;yftR$|W6 zN4IhfW_WD$_6%c9k2F&sEU#^x4z9DT(MpY@9lOA0aHx9I?BleSk7%4h`(4k>E5tpz zhCONN$HM!~iW$efc3*}jrOQfp>^#9taRU0TgP!WsRy%r&r7tf=QZr{)bU)&&Cs7aI zJb@nK%V&L;3DlF}e*)df*XtALP39x`LE+EJ`Goiu=6>n+doHd{?%N0tBL}w3N4~#+ zedle?nLW#oac_Bv=RBUT@Z=2Ame+Z5He$d zp7Udo5|4MnkmR-&lY30>C!9~3HO#hrU4$~la^Ood2CvQ|)9+w!5WkTRbVj5b{*_!A zfK1woJkp+Fh+pee?)3djep=@H7bf3ryC`YnHZ3Lg^mU&}+PF^la5w1+blo+;nE5iZ zDvFKKz2CjJjdN^2BcF9@=KDP7^IXew7SA8?#J-mK2~TWBihHfN^;^ddN#3C`j6FXY z&F1Tx>A$-lR*|}eeD*!->YsNSWp9&A2_gSyn(Ce?{N3%-5H^&F)|O_ht)vZmSx>~^ddiJWr$k46OoXRiveUO;*KZ3pF|FHMwaZ(lM{(tq%2nZ@L8>^Xa z78hcS3k>2CdIm(JM$I_5=h6dubE7eF-|&VrfSSacWLhyOnoAEZN%ze%Mg|>Cqz8#6 z8WRLXqvqNTh|w|bEIoq#dw=Sj({t!)V(#yIzkmIHfAs5A*Qry>Q%^lxJ@r%uAA<+6 zl~nM1-BeuKjgP$SC7fMv&ftTzT4`*xvZpP_o|YzmIrg*+&wWg^>mYuwV~4YAjPp8k z@Iyj&YjQ|$DX*Bc5S!ZR?5k;gX^ox>KM>ANW6XvzcR%Yi{g5#i<9Q5xZ2zOvbgRXY zn$+)DZ~E`X@EDysl<(88aK}0@`;ILWN=+ay_9}Ifr~Pi(IO^2SYx(*R?dW{6@uvuK1o(AtAZ!v&o6uh z$C?z=Vr$)g$swFewRl^1S~B+M{FHORhv_=shwT$zSnE?I*oC2~nOEF1BC;Faj4mcQ z)F8{%L4O51`yKSRg0c%j(^@;0|CSD6@4XmbK5Qu+__k?J zv_tk@?S;x;UN&ogKXh2nuB8+CPW@Ai62WO6^|^N;)uv*kcia3Csjrb9U|~~}I-m4Q zHorP`4(azu3n!NI{1J7Ej{cJL4&>{(qGk8(6PL}~y??DQ@As7X)!&fwpdX6m;_G5r zXh$!Q^SILvDXDj|(8SBq=%d#(%_eH*W zm?yYA4P2h~6*qkY=^IYbH`san-|qRHh5aAJ_|P7ZZ|9MHXBunIx9=p8@uTRtR^A{s zJ~CT};>aTppi_^tGUay85DOOC<2C8QR%Yv7Xp*mE2iduKU~=begObhYkT_PYoIcQe z(10G?!a9}?mxU%>h^<5NNDTQ3{q=)=S(6Kps}AFgUvAM!$zJKY$biNA@o$hxTDhkx z%(>6V+CDzl2)!4d`-nQP5}jvGG~copMaNqjUsw~+_Acp1OX=$=%&Fytl!-yB#zcuD zh5ZS=3%&G!_~CCOw~aAVHlZKNzh3qW-M65=p9P+Og8hc|R^Tb(5$tvK<40+HqSAqK zX_bTD#L5HT!jEW|buiM#P8A*W@9e-nXYE`LwwvO3;cKX8Gi9x<3_Mq?zIo8v81RS! zi{kPNX#=0JrefVSOurL>J|^g+>;Ue5P1T+;imgrOSu2~~z@DDwSoUszof`Uk!#>sr zw?jU-56IWG&j;78-L3T1U$+y0b8*{I`m+b0Oizfn{@H2z$+4~vk?cy0qmnt&3TIIs-bw^D%UWMpCg?W!W3;RAS%bcXrDJ#+^742vcojXmAv4YjEwNMB*|t5aVf{SBM0N=+io-s1?? zD(B5~#(t*NLtdlKC^6^MH^~HwVOmF7`P&@G^CtU!O=>jh&zkRhS$}t*dSSn{X~5-} zcVB@4mksw7SbRV~si5A|Y#XCeA=3X!dIsY&*z;`}*Jjt@+w8`&c163iw!#&zJyL7S z;0NUdaMU3$gRZ?1nwk#er&Si+yd8W|J;it=ycq%>x#wYOQm0hLMQ^7X1O?8Qyh z7}DUA>UxZF8z>i~H?x^L;cuF=W53~@FCV_4wN4-Po&1V7L(?Q5=8nQz30 zrJHAj=W3qnOFM1+inRLg|NbZZLH48n+x+1L?7sgm`NO(a@dwW2eHMRs6*znre^`U8 zv={!s9>W3g2jTI1;}6e5d;Wj^FlS>Cf3RmCjVbVlHjh873-E_^$aZZ({%|jFPOxTt z{Vc(n@%Teq2LCu~Pl-*8XWu|KoA%H1hhxFBBL1*$FZ`j+;}310#UJ*UjQ)R-KYRoK z9`T2dgnI%0@L$jgpFjMJw9g+NAno&q6{J1>&?dU!^M_{YEaneODJ%YPCr_V0+)ny` znLn(P{pu#__4&gMq{SZ|XM7%iSm*8OwE6sD32RrhOZ4>rgg=Dv^HM$VhduB}{9(~C zef&ZGmEsRSq)$QqApP*O_``{m@%e+=E5#p z5r2}iWjafP-MQmE?8{p=R41`Lcl-(aGB)RqUtnLx-rV*d*q47t*$2P_?9LsRVqeDY z+;IxF<;_3ZKZ(t`!vpP@n|4nSm*qu9`!fyP=kM>JyZZ;1c zntWp@v5#)!?q}+shrL;LaOpe#UiOyjh<|j)@Z^>|Dw7{RU6ahe$(=&0Ym;x>QI&l6 zkrByvel;@r_D@G)Um1;0!I-3M$m3)~KG?vg%eVuqEcJPG2hk42S+I8GC^3P??-Sn- z8|f7Iu+qAxOETd!A9aE`=zUPPHivyD(9YbZi@TJ$qSPw-Nwo= zqi5&tAkV2J51X&eD?2;)L-I1i$-};D^TwT>`yP2w<<0Q&zJE?`F?oq$wDIe6XhVA} zRjCE!8S*ws_mrG;%UQV_$%_r8+_7g;PWHH})HUR#51<@&NLy~>Il0Tp3o8#BrOjJ) zPVQ3joc+neerfX_J16(AITv!&5ptE0r~LvKfiw6e*9t+YQ(x~tAF>E7Dfl!HHkWS;xM z-6ib7rUN`R4Nna#4qYHGqdfL-MQ459%N*vy_;)&iJcqnAdZ6|&47z3i{eKt#ZgB0J zmOi<6YSy~;P1cET-~93s_;|gAeeDfL{h4zULzQ+2}d61PGhy}{H zGQip310k4XI2Th4lMLh7fX-12mnbj@u1(#Up!NBFy}LF?+4e@H9?6eb&$SSF-jd_7&}!MEcY3?D8V-?6N%< zTVc;GAIsV0M(m5S@3vsKtT)_;1wG#m-mJzqc0cy3wBPo+cXqiQIyXmqDy*r<@4d6j z*sp+7fsQd(T`LBfDGAETPe=YnNB_aQ*MhQ)p-?tM*$wnn{!G-d$9&^s=i688nFaTZ zm+LE|KKU>=^to!FwWsuxmp8fRLy(tsruiUi2VM7uJ=5GL)0l(f*^N%q>EI!Wjt!{MXekw&N&_Pq3hDF0sSadnuQT?y$PQmF@On-d8b~ zYgjXO4)Dj*9Qg3oJlw~7;Z(7V{RbBxY+GUC5vvcclPCKIbY^{hv>|srXGaS0$rMun zzrhfG($l%`1zETGY|^Wsb@1Hh)s}0AuT8xU?s>9oKR5u>jz-6x)x{oOn>u+i_mOSS zPiFqyaTBXo<90NzpzH{o+h2Cix_vZ-*fPAwe!O0L+OL8G^Eq#Q2=ajTI@Wmm91;3E zo_&rqwx-}&>lXY!b=Eq~K1cAZb$gli635uH)@k-RmMi^FoVCt!W>fHY0%xsj(SOV! zGa30Lz8Zfe=ohfN!NM+zy=)C@AZ+(-#&|xiWA@m$>1HmGfv!mJ^_+EWsug`md+jmo zG2OsG_wTOZ*=T)-L)KStI(1Z-Mtja0UzcVlU>9|;B_*)&s7yEKtiR9rW&3*=9ET3e zXL#LH;Jtg!TKsd*bJm@QmoG`+)3zO%Kz4rNvV4B@l<)D`j92wtM|#aBZ1&jeC9lix zBKvLAH5)w1ayPp2mScyXP_WJSowfcQw)wQR&42b;YnPt=HVN(M(3vX9rZrBZjlm$h z^fgcCmoi7(aSmP785ZQ?tHA;M_ z(J9p)J~*prPkm+nng`i^w5n8|Jpgz8?ODIZ`WIlmgZJvE?651LaT(@$q3(GK4~n-B zahk@kz6yEH!STpn@G&A!`!S{J-AsMzhx~9F_H&y2I#r+Q9muzWLCmxB2?hq4TXgaT zzU6-85h1?&kmv6CKehVMee6ffLmxt~Y5Nm;i}WFMo3>w|uUOp%eFdGS?b3#D`~~K6 z2|hIFHf^Uw@V{Z+SAhd-k$ur|+74|WCmpA45PA{(qT?$3W1i;!o3UZmf965jdJ0|U z0iF+Vr|;eA3v&09UX1U|$3GgLbo+8d{6)U?V}V;=8swyH8-^r5-mqUXhfmG6mkz*} z2A`Tg4@1|fOy=2Zf9F?K=sVTuJ2lCzOKX!`Rl-|Ybjh5y^Mf6z0K7@G2jas5b^o2os0pBHlt zruqTW zlepzRXWOkS-?M)e<;}en_@{(8Ym!B`QrTmGO>6o7M;(vfjv1)DQ9YWg7s1oSW9R1{ z8seV2iXP_1KWblfey;Ik?vMC_s|RXd@J`YRct@1J650_v)ragb;1nV(ogoib$_rVPVkMQ3ac!c|IWa=&6 z$uCAeF+pFLaR&wZHxc~>Uzi8se`+tmf6w2g!+8EK4F^GM;mP&*yQJa!zk$a3^fE2p zAMojgNA>e}3F{8XMHTUD*e4c#$u~(nW#<`H$xnW2h>ua3%)*m$uh%4dALspj{LnqK z|HTtsHT#Ik9YFtdenl|a#JHs+sg7HSdy)3`J4@|-go)!C0zUq}a|rk};Ok7Eb7!$v z>gyczJBRI|pB@8UwR?o6d}|!ueb#!@In_7E?3;WygHPj_FDGO8#uTsL?u?a_Dw9VK zS~3ipYGXzcw=%15(5=w{`+XD2y5HQ(H#!&L`O9?l^Ou1R`TAt%VVryZ@BGwFRcBbA zx89$gn$-PA@_EZG{Yr9c-I>V1Urk1lb3XaH@SXGhmqv3lSwB{XypDOB0sJ_VJUvup z*w=ibXxVZYV6w|l&A-@u-bz~7_z+g9(}*?jvOt9K1d{g7`=rhnN6500l$ z_90t#WNHy*Gu-{xuU@b0bjm(x%T}e(A)1D=&UBtc^45N&KMNiuGAm zg)bz&C&CrM=Udn&o#*qD73))YBRG8)%%wXtzwX+SPO$ak|H!&I(WW_1NcwX&%{^6K zzLl%cWlv;Z`aWn9x@<=~&%NogHz60s7<(-=%ODpWy~(v3i$3{lN%TqYeE1RT%j*6H zUL||-dq)jgqCGj=Hv64w&$nl1fM1W--!A&->i@N=RiqCf{|?%dKk&QsL-chWeNmod zQolW)FNVlhdmCs^zB8HoD&o7K9rC}P?a`vYlK-k#*PWz`>xg)Dtf3C0etC8H-#^DU z+n_`0gY3pW{howfN%S;IjK)XE@6+F(u=0}pbI<`gBFMCol_aND9TDaJTHItE*D8^@#5NBSW|p`ajIC2PsIADXJlju) z-ZSQ_H)6v951jxk9r3HV+zniAro?{Tz|oTfkBa>|)b%3YJxq+6J9w(z^Rd|^D$HcQ zE#NiZve#cY+hgPJ>#p=M|GjHO1lYG6Th^60-Q<2M-HEL6$muW|JRU#WE`2Pa` zeO%Mizb^;h@{aMt+`DolZ)@!=KwpmGGbkI9Sd~t7U?j(r$IHnv{P=O?VN;C#TdIwHRkLuN?>d=6lKJ zvKw`e8yLU$8P|5C_hH8MYJFo@8n`~g_#PN=(xJLXMl$DSY}MGICpGMg+yvc~ZQ>2| zV5{#Tk3Io?x`_Vhu2}c}?Wz>}Fdg$)Z#o0^YJFLkgWO=tW1DZWeea7!!uXDK*uRkM z91Gw;OgMl(8Pu!#&eXeil`lXyj$m7`aLaIR68%(gYv8#9-EGI3L*vtSd}o8?Zv*UP zPr-isYxY5U-r9ye1zpFk;qWYb@6Q=u9JGXWv@UWhbWZjd`OKS1@t+(yXo++<>g?FD zkUBqEutBs_bJM_GE|*H|?0gbKzc^H8bXo{LE8omUoE}PQ5!;42g?oYHY!A zwK7ii;bO)on{V;^cJKYycz-wVANRhWJ07@jCP-(2#(vjnn$7zq&=if=OpfMijFszi zcgo(+xeM77u<`Z8@VV`heJ3Etvd+66;cVI?q6Y!`k%4|}zK?r}o(y^S5>=;;L$1=k zijPCvH_uAS9?*+S8wSTLF0rrG${DpVeVAel@_PTXX<6{9)LEP~_Jo(*eiUdC{jfIj zyT~^qWCt-lS$uq*qoTRHj@nE8|KJQzDcLyztqq9cGf8S{m z{7cPK3-46!qa)mJ4yU}<>67>tiHGanqcmyJ$|rcr)*;`$$4Nh9)1y+4lI|wGif0$k zL|`q_zg&iWnh~_2bBnSs3LnlG?E1s2|DrF7HEQ;2%$)~Ku((ft@tW58Jgqye6T`Z@ z^6>t#gJq*G#>LiK+%Z0;F(M1hrGJ}<5!}e031@?Km!P$q+(Q4w&+cM=mNP&0j`ht0 zl6PT`AB}Dq1^0T9#f@i&ih_T&%{^>90}Bw~^M~f$Bbl|7X~DRjFyDbv{pWbv@~J(xt}jAS3zb z3=gJEaog%+iuUCf?DNA4_?s_xx&FT)Y#L>gTFDn5%yItP=Y@i=ga4<`$Hdoy=dGih z=N3-|*V@F>g8b}nzjygrm@;>Ardo1>PkXxIYob5mr-{J)g17y2=omDh6WK`oa3FYm zbAcDuzzgNyFmh6Rg?OR6zc~(mDITvi_6ahQc%g7xcp=&iFKjEx3pvkR62{nBMC(iO z!wmQ&9;kVe%p!ZTe`lQEpQGr5?GL!*^PPX+oL>rWs23i5AK6oDSn`YhKgR#HHeHo^ zg!JC(uN!Kvkew}47M)hNtNe=AO40*J?<~Kf9lXd4j!uhlo;`CwbQ=3NlQ~B?Ni^ng z>?(EeB<7;Ij(a1wLFYPGOp14wEnoIi+TCNFXC}qFZ*$jq8eY7&z7&6x^}czSZ{(j| zicekmA5PPM@&0Y_yC0vzzTo4Ed)X)=r*r_C!$-vPHE{D_WDxvDFI*GgHJJEX9H8=tN4#__AKCkZ`|co z50si;-l^=#-go+D7Ui6Gv0H#oQ9Z#W;Z+toD}1u}M%u@n9hD|NvdVmQ1mB6z>3qp6 zHa$8ufVB42D|p(yJa8~X+VyE3mHHHXe2DkEcp`-N<8$)&4f46~QO355Ea|tKgZ~us zmt+1H`AY*a(2HqnGqIj~J79fc)KD{xUlCDCxi3{MwYttmOaA zfw9ZJQ{1O7(x=fLuZcllRx zJ|Be+mf|Ufbt#_m3OwaX=<_0YihQ`lBU<k8r%Vzt%>qq3r+ORSgYnT2M)-(OdIp~I^U>~OMTD#&SvA{PmzDXDHnqodP8U4og zHNa;!XSoNn*S!bxeQXChJN_K=CY%U^1HQlCfuw`9-LG5xd?9PKoxW%+zAd?({Ev*}T( zZ;P1LD%3{ za^7Q;SL}D=HT>)S$u9H(Zk}KPv!pVquGzWwOny0QI)ytx_s!NAF)R} zeIvGd>dO+tOYzTFk2YPh!ItVndtP6W&*EF!-XeK94Z|I6*!);~XKZfmQ{NHBSIItOD zTlRDIV4*9z|8hC|^ZVl~(il_xGB>U+dDh0>;KjpVz&=+Ca4+zpllye)^l`+a_jD)G z+*O>L+lc?#3i2*GM7lPMqZaPa>v)Dh6jqbEZ%>1QkbEZ@>dKiOBKpJDnL14pEb zs-IuL=g81cjk_G*kmZzfu+Ntj#s8I_b<1U+THc$O(%+V0pz*EnDxXia!lzoHnhv|odt}49n zl&A7HjxFe5Jrv(y$p_TA^Foi;}GA zuV2ZT5%Pabe!5mR?9n}0+Av2GXAPR4CcjwDYe%*(#lN+8QHpv9LD4S@7=e za+($cZ{eWk!^&cxho%ScI?7yWK9+DMQ_nZi$NYNyIm=WCeLa6ofCPW6Y&}*anGZLF>CTw_rA4m%C^5E+EJU@%(`Fi%|o!R zF!BcN73!zGTo~QF7|z*F7tXtB=Thp?eEf+zU7fuu^(^UkEj+7IzbEbMSHB~zIc|BZ zZ(aMi_BM5CY|+2x>%XZo;GX1R)v5LrAL4^oTzYn`*XBdi_n=LWPW_U!=3F@IlECNNK# z67!V7rsdO9&DR>nCYjc!r`rSc^i61@=1(-$rvaM37S_4^@!T=j64Po#>T<@d7^zo- ze=){upgX!_NoRC)4*DJ9wyT{ruW}bIbDy?P_D6XNULoefhnH;ao6$FP9>u43kB%;1 z@;eLTQK{Lqb)e>hGOFtY{%bvpFPu)=KTmNg=?f?~++QEh)mD5PpcS#f(XO(w z=BuIW53H2FG2y!nH-@m8!@sWh1U~vG>tf_1C*>S`-ql~lDrpDr^j+OCig|P5jV;Jb z@)>Qx*ZyJZ$DY#k349@TIy?`0(N0@+teZ4;r^)o8oiYjX!l%LeS;NA|jnGxWTJleL zLG)qCq-H_vVV}?Jp8u5f3;E-V?wa?AbLWW$ZbljP2hP|A*pye#|DE%cH3trT8AzQKbtI7OM<9QNfM#v=Jf`pS)i zP433Sqq$>uaWa`NX>DNweqge|NzUlRJM*l(Teuez)BFF2-J= z2hU2u^XH61aL#;8|B#1Ujp*3b>bwa zuQJVwo1Y(G9tvM=n(xL>ZrXiAEDvubU%YP*J@#wZ%N9nvMu(%h>nqKaao~7%Ja-SG zugoKF)2*xla7glE`dVXcX)2RPj$63Uba9@=>MzK11z9y@qzm`SgZ$5RUx-Za5C@6x z?qq%DE6oRY0kfU!?;4$d!SyR*&2X2du|CERzQh?wbm{b9GkG&|;}&nv(DjWOow^$s z{9rw0&gZ^C`sUoi-Wj~)F21{mH3*GsOXH_!Wjg#6TYu#=?LNen#U-1eq2$EBgYraX zmiQI>(A3jSAH$5ne;;NHQQnubMVd2x|C+vYS(Zm(2i!e>y`>9x92?E~^R$3@a!y2# zV=m$A>mtX@wDbr0rFj?hFj~g`A8TL}^N^iU5$|D~G4zq#ZS3`OZe}wy!4J;^v<0|!M5GSf|G7i~-%cv9{~Z0Eua*(O~dy3wiq&_hbWx1Kgf;%9B?6!6$l zHuBj{&NfGZ?0P3k0%xqK1G_}d|7#q_`$CAi@?G9=-ZC6vGi%|ZH!SmOyB)Xo}ET`5j%-KT?{;Fk8@~~qjlJ4KFLpsE~j0dG1fgc znRVGy(OI~MAaZanqRFa#lqKK(i;ngC+|3T&=SSM*WGUIfpydl4z_}W zI_q6=C9-dEedo|e>;$%ti4$`x=xgJa8P;wvVOV4Dra6r9de$&~_50<}&t2seDcv=Z zzrcX+eK^m%Tw*q3)0jE?wUaf-9B?j|aRMv(Slf4;2P0l?E^|RNmuWGb&aKhpra7YD zWj)!8i6zL{>N)V&)LhyIUZbv`yE7bsO&Hi@C_|s(I_vu~YY*5J)*i6SB~E2M0)P40 zmtmLD-cIDO^K%R5x^pC0-OoH^cppm4${EI?IIh{M!O7d$1IkvNg3ll}FUs?-Fn-O8 z&Pr@K%LM8sChV?Lb93i;b>p`!U;Y8~p}1d$b(lqF&j7^*{! z_%AZT6>EuqyLQ+Gy$u&=52+7t1lRNz&B~oen<>KGbD?|Uk%_6Cnc+-F8d`XaX^cmP z?0n=de##U4%QiU6gs;!BCp8@z1bL`;2(n|ktPgL}Wm-42sYS>RG0}1PmA*W~n*(S! zJV9^~?bt;+0gc%?uL7Ig@T6ixoA+nsCLY8cWV}xtg1<93Xx9>Uyg7`o;aJmr3u|S- zu@;_Pw+`u}Et-=|0EaXDcLKN}+LFP}D%zs^m$ob)lx&2?Y-Me2ts0)3PrF-LZ^DZ$ z%TG>r1G9qO2F$w0iN*}XPTU7ehkO$;E6+WxKi$b--xO||7hJoaU9TIYyA#V8+**dt z6*1<&B4;jNmgP*_%OB@gm6e;@GQeA7{Q>fMcV!ehHRj4N{=E_QiM!cHU~ksm!_iVv zaZjVEc=l`9eFe{Sh3R~u16;z7eE{P^_FBIdno-=}Fnf5VXo(^JDaxk<;{&ESgPqTp z8w&OhWQX^F*Hx?Y)~@pr`kr{-*t;5Yz`Q_5fO(hB_gs%IsX2{(zCWDs5w@}OOUV{t z+U7iPPxuS?vpD7j=S6SkZ=JMDo zwhTMb+Qv6w8=u=?R?cFauY0!f#+WJWdyr>kOMl-(wv7pVE8BRh)`RX|PmhlKw(%Hv zR6HmCn#zl2;EyC;o7FnJU^upM&UEp6WTNYTxdB=(JoaTi;jua1ok#PKi`!aTi4NiR z*whKYXQ74RsMN8fgZopyUZ}lbUj~%T<_OAt9eC2uT%x_N&S<+^=OMfwXzLuC+QJ-6 z;Qtop5C8rH^)@pW ze{I*H*9%^mOdq_Qj0-P~XDc-26@AMXwn9_f_^<;~FOqley8PriX!H_j>E!qG_H0E^ zPII8+%z0rQGw1ziX#yM&Efo#@*y7E|)Fg1GwG3Yw)_TLcuFbNw3?9k7x>^sbXj}TA z`W^dOU%$=I+l4}G8={7BQ!zwF{0$#B@0uqm}g62n9ynda{8<4t*|FVHme~0RC)!C@@7j6A_Q~yH#Q};R_ zXB#}6T}B%Z+cw6gE~Spk!3B-|7CUBe|DHj~H{n+o@ovjK;0pZeG>b3117H3{`QXY- z+V=58Ji+zrtw^2C`zGFr*J{n{8?D(q{O|Dz@Lj$Y|2v5~i~HE}bEoM_`ge`jKgs5e z)F+v|x_GSN!{egMg6G$~@kUq^!7vMy zkZ)F^CwD{!&A=a7asu)Zw$%ff6Rj_wUW+zkH(Qxw&hx-gFrP4inCqYBrzp?I6RoW! z;F|6+@$-axqDK`P6K(&UZ>5vSF8DTk$@o*>HcGJfVA8TI-@L)XVQ^CR3(2zdvom{+ z<|&k#HI^9MjPx6E?an`GiKhZ`HIf1K|WOjQ1K%3rFo zlo6h-4Acjg$Z5{62KF;4H<59VVy=D!o@;M~{;a?0#og8pz4OWP_zk4x!?$@}d3@8N z@_6>X^7xL;z{6|&PFM?9*9*yxeTKS*OIm%JxAPcq)k?Aa`W=B>&sCvJwuXuobVGJF=kpnVhIe&sFb3J$u0F}EyRMcz~3@l)Wd8=Fb79Faru zFJb>`{U-Kt*80ytuUKfxkX}!OBO6i(Be>)r3_PNoj(EB<~a zK3fO4<>5*}s zxw;G0-c29cJnCIMj6P8pbf>BAT)mtBVbq{M7|x&aZVvs7p2_>M*!qCAZ6{h2pGjX| zXAUM%cCi@}pUL=j*4>{AJq0JXodI#dch(Wu!>^9!P6ECIV)XF{e#b|1v#yWk_MyHL z&jhZlpU7mpUo>UGe$fv@?AH*APMoLD#<$3X>sxFc!{ZH%tKl?o1eh!`ht%6~r%#ASfrrLQOt<$3 zHGCoNw|O#ir+%pIEMtxEJ`(*x{L9pLXajxX{mG;UH5?na<-E4POnLS5WUpU-UxIb$ z+oy`*_uXjMT+VxmW{>->=@M?rrxbaia{5TqHDOq&Yy4@Ut_JAj`^Xf+;~@OyZ?GF* z1Al)}`@~`BnDO=@!mUn>t>_t^I=hR6M!v0Ti(*z!Y0Z*PqpWcO`dh!dJwVJMjC$Ut|xt!@FZ=rYCny zMQ&fnH`2pQ=8N&hbU3bc))}#}POXoFPlqLg_`bK-ftyRPb36E1)_n8aoc8j5fDS6T z^eRtY0PncJ9DikEbGF+*HLouwWStq?li{qp>XFQ#dd{OB6u{iw_=a3ZZ07TkQ3Mmo9aAofCbxZkV3Izz zsgLq6bprmS`+ELZ;X@_c_pOmw8GdR5SRZ_2?;bc=@;i5yW0#Mji^_+kr3^m^`tGlx zmNMuAXHOdjMsttS?;ZHt%10fzxB2^n;e$=H#)uDgn|!ck!~N)-LCJ;qqvkHyH`#jo z1-VTF2PYRHS4bC7JY$_d6^~Wfwb;75deH4&05M z-U*a-D4Pyr?=ITE(AqDaXWM^oT??L?bHP+|{mlt(e2Jey!vvq*@{J)q1==E*&sSOI zco+U$l6}~BZkyI8|Jn1qEuQ?BM&|01|3-Q8->5z0zXW{Ye?$Ijk02|3&XxZf#`WDR zW*Cp;zc9~zz=wnQ70Z9}EAr*PX~=1k$1($4`7d8Kwjlp~ip&#Z58A>HI~eP79qV!( z>#~h?xvn@q(Lv0yzaG!xTdn0W;tig>Xz*!A=Di|3Y({Sa`$HoEB3q?m zoEbz;Y->bbME+@8T#y&bEIjpng_%ig&KbQ8HNcX2^6>}0kTb+0Q<)XqwLXOSj-ub^ zAur-@Wasy0=J#aM_${<4{;70R4#5u?E1#H8v4Bs`rYBv?-uCyiD8$1w^2Tn zcWu(5Q|(?%hvCfUhs@`7e{}5$vVRGuhLEqbxS~0ONPj^36yT8Y{D|)u;rbD0Hs(7w z@%?eU6HR=aa%W*z|LEnsXj9kOfjvs-Q&%y)i3Y|Sg-&UIt{3~j%iz@xbc#;(Vd#M5 z8P9>=LuVy7p+D#xwDgk)(N7Yde&Ud~m35`qac}Uw>)(lff)Bi}pByyGwRLD+ZTtF3 z$@$bhje0fjter{i)FB(qCQm1NM!Fq3(I#}F3aetn(54`0{ z>}0IxIy16I>nciH+v%hBLZaA5iswB+8`mBHz43ixXvePuzrI`S z*n0``4RJ}j8olzwCFv?h?;nS3an<#aon?ct&jt7!{mwb`>m_((CXk;YKT1A)8C$BU z*4WOZpX-31rPD8PE{b&|`rL^A7IF5m`xfv0$;wA|eMvSli6i3OW1XhU>IN-2hw-Tm zgB^|WJWt(~YRAwH<1EnE1bJc3Fp0m?ZXv$u?)ks_nPf!uDfi91Z0C7|jm>um zdGbYHNqfa(RDJ%sxBJsx-%g@mOUvATMbXLCFZC&dubB3OMMq?R8&2J`L)`7ifAw3j zEByNWaW>HI(bT8+d+YnAgH5h7_UY2>!QdKmp22QWM;uc}@m!Dt%HL_sJxTnJt?-2f zW`I3Aw)W?oKf_jZGxNQgz22{2lUa<+Xy{)#b3)S&OIMHaJi<9#RQmVrwR+zF<=r7U(U?43QQ(53@UR9%0~ zPGs_e?ggK-GW-JSmp!s#*m=F()K&8Cch>OroXJ#KgZ)%~lIT<`Z=_y$R6%!!M|Gvq zoyA|Q%?Noz`ha+S8vHKiXKCtn0zA%v$EERQzo!g17HB5->ms|TzH;CwU(-1ii+ZBz z8NHF_3v+{k&3F^-n&;8J@y2vj0OJ|ZzSir?y9++dPhssh$v%zWxsAyup0RuW(;od9o7$i9f1x~cQJ`DQMNYmb(ha2hy=QTi z@l*B>UfJ!)3@^@fniAd_Ien90oTbibC4h-fWAN>qWa&)o$oS~b4O+4af0#6F)6Ys@ zE=^MxbgSeY9m-d~{PFDRW8sghHuVy6`un!u)u|Uqzhcu>spm<5*7v_>|4+0aix0ct zl28l-##?iu(=-}9TUt-WY!lRPS=XAMi6^{l3f3h^y}L zv*VC^{5kO9pPga%Qz{=l(2qONA4lxiO7KX*!a#o}Qt#8WEtvj|=R)=o8kt+2W1b1E zZwPZXo0vr{*h@q7)7NEP|B&j`W!`)UPlao zfpUVwN5DnjvZrb3wVfya3m@S{z^yvfOdBfuZ{9cQPwly#rf;af$j`{o*kq233ohNv z-_^iFRuisGgt&i6id*4RgHY(4goIAf|smhV%_RQ&{jA60P z38N#fadpFv#^{mpNO)9SGEOhJpmsI3JL!)DoSy|Z)P7=1zWxyE^uJ$$j>%l}{rJN7 zD!zoV4nGdD?_$dYzH@lz!_~*N5cr}o9SD3X09XF^O-9pVjsl_H{&q*C4koFRSfA zwrUPRkLOgh_FRU|Da2ezo;U_yWyza&LC2!N;dtRJ?Z)^n^R2JSu3F$hA!v0gG&yzv z_=gV5c?$TXgG?LkJq0^LEYP2}9SF_m^p-Y6E}xA^5+GCPmQEI}apw zD)LhMCDjHoSqeXK4KD{;r_rF^UXLx;IC zF1_inc5`Zodt0 zP3c_=@6@Ll<1}8ME+kKD!atvXja~6c|eulo?^!0}QvELQz4KeI{t)AX6hk7T--Ua@5vlhd{IA;^ME{$n#;j9e}H zDY-j}uT=t??SGqqCq=nSTzpRR_EHI5H8!ljzMaM<Cl-2%y zJ2Y$)a~m1fxFK?rxra5-^8@IZ=D7Cb{`1?-{91hS?qP^xj~hqZ*?FP3=2pHSuZ?!& zP=Fh`JBj1q!w3Axg`r>n3~UYYAp~1ucUZnJ*gD(9?`u-$BEKc+yIT)-o`sw#fhH|J ztZ!}<+oHM0jRWt)py2Nf%mlA1fx*&3J>}S#+&Gkr4uQUVbBu3Q=hbh!cfPUT@xIPN zo%YN8Qq8}^yk!FOpP`Rw$*;g*yqyR1fBL%jxgC+3$ordY*%8PC+!4fo@o$aubEJh! z-?IN}Q=|DWIYlrYLHd`Zh36xQ7X|t46LH|xtaW^XZR{6ISJ0c47bQ=AVs*q} z$-M6B)eFdXNQ(v>%P$8`{*n6BpO2YC;Zx$hK75K=y`S^R^x-tgr( zKKWuUeJ{?}n%h=|Jj1%%RA+LR{UUGiBnqyn-c5CV^jCGK?fN60P!;pV81-zW9~$Q# z^J|WdS2Gt^FbA$}j`KX!-#{N!r*z^z`25z&qvHzjA*L36(!BY6cN}uzLU>#w@KG$D z1^7_0=9(7*BbPo^ry7rNZ43G?%lcrg_S?e?(|=dKs!1(8@6)A{K?Ns`Lvj7n<+3YQ zr$*4v?ex*7Ne2TL!Cc=9F42Gtmf_5`=;L6%d5v$>zi!&U!`F=xN5|*l$9p)iZ~}AX zc<>DEWG$n|sEi3uj!&SR`ecA#uwO{Hw$5#|p+3F~9r=Ltp7IOwJbc=fT|)M*UaZU5 z12R(+Ltd`;Y49fS8XwrD3HA>ZOJF*%Xw5lIQT|(a*mzM-S$K$7S>0ggtbV$IQzVbT zf2@30kVnoaEsrcF_KYu&T!yW>SRP4ZQz|8oNH>r?k{&*?{ust7SxWNA(ttc-{y?08 zA!dr~wKfho@`(8RLD>4vLG~z~gD`lK3Cv4|c>%Xp`s+n#pDCApykc((wjJ#alX zCH}~$z?=nO*UDbMa0vdNGdB^Be8iw74Ses~Rz{@$ojDXe(R|)WS~A03jAf^MY2hzR z8EodT2=xaegqpyk=Q;?B_Qx0?ZF=IbZv=I33uzaUF^%y=2F5ejiT>L%q>eNLV zD}2Yso&djTH<$M8QU-b%GqRtIOf}KJ+<0KV-L;|ka);VXpxXeGwgk45Y?IT}XvPtj ze{%c^;3BxSgS!tiw&d?P+rnIE%*gTUz^#s>flCcKOAK79jz)7_lD87svQ4t(50JBr zca~eYTgI4lkFWH{Ut>GjfDKV=PkKrju#E*^5fdyJkJ|6n+M&%I@GS8!!E_o=*X~!H z8pGJsKh-sow0NfGq=vL?RN|Qhe%Vvtm+Ry=ZTTg61%8Q*U3O^8FG;ICwd=R}6Y84* zjv{-Bf7tuo(bd{~{xKFh@-we5{+RDz?lk7a&U~l%($Rd6H+aeK_v3q=d+DREu031v z{6rVv^XnpkK;vt#R?*nZwTRm7P2L71QkcO!wg%bKRvir+sYjdfiyg zq%ETk`KV$?QoN?7yZEm?vmHZCXDd36^y}`!u$6Ew^cl{By0+&Vb~0B5JZ7%Cw2%BE zyekoy!-VFLJ@(e)&ckJ;ss~NHc`kSoW-N1xd|vUPyM!|acAtDM>jvGcrv)An#tv~2 zYic?F3;wR?MH8`A#E{ST@OQVE(320Zak6QwMx%7c}D$yHb6Zh;V=Tw?or@LcJvmf|b-#bO$cgr`S#5hCbml|gS zaMU>4qkZG-KDBS0<}}Z*gJ*D@t&D9BdkhJ5Vc!>EEp%1qZ047L?x=07pX)dyrnQst z)@ckG|5ny(A?_%s`6~^S&9%WX}eoyVz*>1fXTxz<$!yINWjdnE<|Lo2R+1&g1u3ZDRY<22t$`yF4zyFh&5?=X71qv6~7w$j*#0~Y= zl5pk=*k1j0d^mO{XTm?XoElHcD_U06@SegcBbV!d*d6THR{Vu_)Y?QVQ}qa@fRqyb|U1LT01S!H@kM= z=RSXI{e0iriIFcF;_wX8kapH}G2f^MM>5=BGQWJRT{l+(d&z_mWQqu5va}T&;6;ljX)nt!FK}pzFecYHuR;2zO-*TJ10K!*n0z))B(pH^cC6V z=9iDL{nj}%(d6%A@BA!&RqXTB!X1K++V*v4wH>oO zoESI2v=}GVPO@gu68Rwd^Q|>b+RnGurtK54poQz&f1bsh6wm#N5_7M3F@Bv1H*M?u z32D))IrK+$$3DTwm3|ySy@KU=>ZJ6$*S0b@u32K9U;->Y8M8-(w+};y&LDX zI&~`Fb@QF%klpk5++P+>`F78*5qqT$TZVzRC7!W+%N^QVPT(iCfIZ|Gdt}l>ucN&T zd(EMauUOv3Sz@abp)Yrs3s20Aw>-h!XIp??r*$<4+AQ75@4`+JUYls2{SLZGJe&U z#=kIDq}OWCyo@rLAG`M4J6J1=;$=&u&ub1IX3r*QONmiO;>P~xjY8y02YUEM&L_~u zWMrctFYiV^7cZZOt}B>aG_v8b3VtE-C$Rpc>)y<|E9bY`lwaB)e|7YM?)_X|zFcYi zMx+lc(7Ggl0qc@6iBHH zu4BMm9gU4Ck`vp>nGjlgdV^Q|0<>kZXTt=iEC_;ljnKR6TROJNL?r z$!+3{ZVFjkb^RSY48qf)4fUyYG-rCTPhq3NR~4UBr#}9N>SDW{YcCH`*0-}Rq27C` z^LC!tbyz3WsUMNny_?&*cP(vY4%uU#r&cM(6} z5%2%M^Ivx6<<_^!(z2TyXQUyU1f6?3qvbPLj4~KJQUk;O+nX^`|u_ zoUB4ulHI2UAH`zaT>a_LD}4CA!`y4{!65s!U_XI2KNKUKxUuf6>FIFKeif#<2D|EX zd`~YUUw%Wv>lpY}i;qVd*oQQS$iCDuT=R$@;c)gSyO`I>Y5voG!Bz=gu8>EW zTn0RM4zXpCz-Qr!{ z;2ik%e3trKEKMGf`W&#Y$3I*B-Z94R?G1kcSXy}CTht=|Q_k-i6U|Mf{?4WSTY3!qxX0aw@m&DH?^=IV0c5kdc9=0>qR&3iF`F1mP$j)!+5dDb3!@4Oi z{l+iPeB~NgE3>`$2FsZ@;Xo9AE%+?7W2jB7LvAlMKPnR$=QO#vU7LD}a$1YZZz2C7 z`+ZF+P5!H-_kgn(Pv@_|CJUS&47{JmJlMH#D&zB_mGMSsoaW?guyW`9b)Ar z0{Be%oaW16UbPQXQ*rT!hV>y@uPtCy?+tv+O~K~r)3CJaK$rK| zsc?ln>ZnQ`n04!Lux%CNVS+st-DjJbC7Hz9zB(c+PqOh}B*W-kn!SDPi!Vn9&dfr7 zW-SEA>f%%lF*M!vBb;i%2V)!GIDv6G$2w{AiLxaw;_F%!+9Gt0FePt(0P9dh+ zB>9|8-xvlyA;Vs!H;#}2*T)kNQ{TUQUf=f<_xye?G3e~~jJf#x)`&Z=5$cG%a9&@V zlihDbcYYj&zR(}p)9+Cg**|L02|&_H}k8@sK$8qnOk!f$_Fzyu|e(rb$Y5T>zd2@hihP zEiC@y0_3eRJ(=;qoO79$&R7|^tS5xs@LJ9%Z7egDv4B4uGI!2kSE(OwrpPvX5^{;p zXCvF#3$k}t9}|Ci)!xaAAKSg$ z=QVBzeb%oVdEUKW!5kCU-or-fzn*&8OhX(`F;cGH9Reh zFFL1yZ_%0}e8aXQe2YSdi}9@+dDD$0qr3L1Q*ZC!4sY^AJO2Dt_qWJ|7T$jhtd8cr z%IW-L1+d@BQ~LoQTm7rt#t{4znRyFm>Bd+*8I$Vezx+{zBL+RohjAF2DD8)4za3fnLD~{+NrMy6zvo3;n0wamnAEQ+C)^P3M+TmitKSz}kmx$P z;B?VcbVS7$>jM8H?48$wU%pNe!9T0JtPf|q%lgMxkAM@RsZ*FY_s-|wd zk5AFx*X&;UIQm*K&P7>QeQR?}>K@jnWVJA5i)m#PdCcF(k_}okV!q(vr8id%NM6VP z%~i9K@)Os(%WlU1kG`nvYs1|B$iKW3*sCvL&Pb?E*|zQnj#}$2q(zTk1TS^~Uubz- zqt)rldNRoJjdp)*OzK?rt)h|8_|Q$?~Tako3&fE z&b{wky4Q+7=Q~fOzd9eP{+&$vw|1V#q)sI5k5x8_2LAt4b4~v=Cha3Xz<>2~8~qf% z#)d?94+_UVr?&rz6dm#%9UWras=s%8 zeKpu^ooeyEc|vdv;qp6ZE6m^Hul! z;anfDQhk1kJ~w<27_;M!IZb}4I+{EcHP~maW&T&o28SMcHFZn(aRT2ve18`@gCVBlsjJa9@sAjBQ}hnS z6^TI?9!8#BU2BlpsRR3fmwaUQm_#BKofSwu<)r@u`0a`lRvs`U-qA*T6U9-SV8NoSA&2iE)K? zTH6fk2wZeyc=++*ghP3BEX6aRjU0U5@*?Wb#cUja>eNu`lP;sV-j8$#&%r#~d5S*` zBrSW5+EYJ+eGJn-pTC9aU(AjvlS+O=nK9u&A!}D zelE;jl`;9-wU2u;@51lhwBdT>fdq2ZCSa(&M$L=nZ3XrEK0dnl=M-pKD|O0l;?vev z>TE!M%G5`5J|0!m-#Yp^nYMJ!CyI^sPGrSIU|b3McsFfu2zF(-$S-;`bYAh!bf2Pp z^4=LtTmkN+-`R6g@{^N*MWCKE^$17BV}j?ASAauV`V=N#c#7>481|Qu*|)TJ>Cv}> zO^Lo)JJVm>z7_Jr@DXe-E0>WU9icIf>}kNxn>mUzWJi^*zZ?BSclZ_a^aOU6l0Mte zW!>u&8e?romS4GhUDM(zh=Kf#OvNQb~PuDI#CUr4s`De`Ix!#r=m5Py8y}-Qy3*es1FgEeyYJRerWaqXv z#R6qwlt}|G@hJzn&t$^!#^`|f^^C&_lyfK-14gZk+3kOIO8##8uYUCc-#qXY&CB-; zOuj<97ockb)2>g*^VbTryX#!$Whb$UcE0QSL+YLLF1~iWlT6z}A7A1relUqP){$Nf z?lZQ+nqzDQy5Qrv=mNB7WjEii`kcvSziqny`*CD~Z%4ain^VkV#f=D2r+a>&Dy1^R z`L8k>hjdf+71y6hdIVTegaR3 zvfdZd*9^4SUwegfcF}0p`KGRN#Xf_kRy8*!uc@rLO}-T4;OQg5y%_Kp%tZ%~jjSEf z#%<osF|-NooFbZ$h96{}!T!9Dsn1*q4?#B9*kagrqQGz}@Dp#0>iiD= zvZ3G1=&zqLr!DBFK7N2_U4C65>MI)-&0WphPp?>LV_t{Avt|{LuQ$x7>GWZ03I3e!G|8D=ePww<~_` zx2t-t_Tq1d9&e+K)n(N^5$s;*tZg5`cg@Jtx}w~F3|tF1Oy9a%fWP{7{L)XY3?#U} zV10KzU5WlDkp0r+Cj#d}qMX%1eE|4YIC7}{^AF0CiY zL6g02viS6cP9VlK`F1?`3@?NhVH;kjbJ~hOVhnNBk;_z0=OGsW+ivt{!4|o5y$R3C z?Hq!fNBuAIUSl6id!ifvsLsc!Q+*O`*ggLj1$j=g=tsogch~m7Np?-&nmE-b3B@nXdC#H=`$0&jluT0XotGV!>Thb#`w%u?^0LrrwAja^|XNm*`af z9M%r!^uP~`SI*J!aq5(BmuOiU9FshnIg5EYz)bbaMZtf)yPLApu*r%)$Ol;a(Rt!M zWsnC=^~kCAyQ*WR>VF-vC=GN-cMa*@F`d8PeA}r>;%r;FJbZ>}egzs4rO!StMd8Qc zXledxV(|ZSuubtzm^t>p2^-o!9{2_7fxhLOLrcp6id$ETPp1#zzLw+A9f-eLs*NLYyMaE(z;(aRG1e)vZOK?W8SJPpP~HiYcPO96r>T_ulEH?p zwd%_b(tR`Vr`_{6{OroET_djH%#1(3np@=BEB0qzbjQ=CJJ_%5;7)Zj;?(KpJ0BXe zaC8P-&5$1(0sVmvSMQotIP;M>*EIX{PM^AjSJAWGav{nwF9mwVymWmGZs;s+cG0QH zMXwXT`bQ@B7VE`a!G095mVCN}_5BvH8inJ+mEUr2S7w39DUS48r*h8ba^^eK2fJ_x z8rOn+3XbI|m#5C?J9YKWr5-)Ls6Ra(e70#`5unE_=(|skukmQH?7}h0AGb0$p1u@g z?cK;40!O=gZ|lnkPtjS%q}C%pXIN92Mf?PdH}aE3;~dX68LM~unHV#yUV2sHQub2m z$2R)xw~?SP33Mdn>klrw)--EvMS*)2z7|@OJLYqD2((pqC+l2M7Fk~U(lNwt3DGZK zj|$PJGf<$6y<}!jAdy+rU}?Ub)z1 zl!r!X?qkD`m@2&9fQ>}-NcbrjN{$_8>3enRe)z|cHa#NMPWlj=u1fu<_zLO6m`Bm^ z*w?V(f%~d=4n8A4_y+nHeo+lNzr%c}?&w9~d(=+$rTvl_@HPV7k-u4ZNHq5h`+34~ z!P7)b)1M6b*p#7e->0ApN2;(#RYKAp5?LHHiT-c7k$2QhUr5*p+)W0x(*)?7UcB0Sc^Z#L+ zu1TFkTDC;tn&{$L{MQ``vR#}>+P!CcRO&0F_eOu39^GZj&!miO$eJ_f)qzv5g(k`8 zNBF%5FIfP6nqhz^c2|Cv=$o&zPw?HZ^wTvLvKHfCnh^?e|KDf== zE7ZZd6CLvZiw4oo9y}$AtiKT&kPhUhSuc{$O7c8-n&|E(^c>wEou|zT*7f3%s(1QE z(S`&xteB=m(3^zs{#tzooZU$s+o{9VJF8MpV^fy=C45;+dZfjjnp8LGDEX^-zGvT8 zrG7)&kbaD(YY!itdW7_+*i)s~tt2h^Ot`x*b29!2r%7`o{^GB7>0Ro7Dc)^ZXMX@L z;UYfbz=O4J*7DAQZukL+DtlYBleU10UNSap#cL-NgnWQ&uB1Q!?S#!;iy##g znMu;J1Z3%!3GL1I`8uD^nS3&xDd4?+@9**ZV;-L~pXDs?_xrr}a}Ie<#%_;%B>6D< zW9B^0jChnYBRB^u%Xty^k7h6TeFkQ&04`>qcw||_>Cm8oqx9T8;TS^JXRa&$EX#b) zEGz!3S4tq*u$6n zVe6mVebXQKaJjv41WYX)B`gsBkO@( zH!`vm9-8%Rc?mpBhHk*Y1nQeaJ?B9)%geB7*%QR-4Z-<(S#2zLAMGCGxq3heym-vTsO4-m#m$b2wgqF^#|bmF|P7KiRQW~ zdwikX?M2u88UK5cxrdtP`?!6`)Lv|x`?=ru3Fg=>v94P4jQAh-bpA~T*V)|r53V2L zdNi*G2`-O{k({YT8pW!G`8-C1MX z*M`QlioZw?%|HXv55xyPY356vdmU{WnTFn%**#?TbWy$fM(1fMFWvGh&6~v^Ow5;# zBKq(98a{Hq@B3OTcL?`1f7HiY8C&q1x$wCsc&<41#s0XW*AF$?c~$1mt4Dap^dEaz zZE2j+ov@8NWS?OlcgQvtyk#f%ZQ5s#IqZPP@PqW}j?>!B9Hu|Q%U#sHqql;6aK@pl zSGohpz_@)Y&qd$i45$@69AN-hKMQx2W%S$qqBlwPN?3crG( zbR~;Z;aIS^lzK8{`?!;V`CGtvD{@LQZ=nBllOL(Ez06Ord;2e+H2c1;d1^(8dJL3mLcXO`QdJ5_6C;%hO2stIq#MDi0(dCYj^T&Oi`ObRIzRU4#@LgOy z0KHT9GRqvZ=boM^R%P#-|A#p1`>10Mv3mVayl-F@Fv_JL^kXXUjQE3+N9FE=^iOBv z2@j%&DaU$pV_(Lhd%eEgAI*O|2Q2Lf=aM_Z*A(WO=x3LOJGq?p{W9<>_)CsOQ!`Bb z+3KK@U;1A2QFN;L(s#!`?GI?K`tw3_LOJ>dHo*F|T-cn0cQbto&VvT((B6BN=8y7e zelGAg?*;m#IY6IUG#2$q{m}T;zU`a(p}whKt%3dw&4FLir*6|Ha7~}S9`OwwJSv(gn5)Tsp zNd$O90^Sfu&%1pLXVr!9Nw8+o@pw|p&}iq)dF=DIinF9-BZ)u3ms-S^R&uVVVEQP2 zaqT5w_5OIE?l^U0_jU?D;#s0a;mnS==PqPX$?>sZiq>@LxC*v(e%(=NCRpW7FJ ztB0H}hw*1CPiub}8>RQ5Sl4`mJ8XOE??L_z!0WT{#~#T);1Gm?Y)iEpgoErIy(9iC zIc52o?VtJ@eE(R}UX}Yd+Uew5jYs3s_%v_yoxVBJrxA+>)vGh8gLTO#zI$1x@rQcx zeeWy|^5I>bZ8fxfAN-x1@3(xv_G!fKYd67H@Of^6PdGZ4ajY{VBYTN_0QpX(FDX|t zhR-pBZWM*qE9Kv$Z`ffQTd^CLf}4f-Ip|LxER~&V*H%i<5n`EnjE@W@Mp!4 z(0Z1jbSw~WKa|?#q%QMt){3qLO$B7d}DYXIg>rmr1orjn>u8h z{GW%3r;vMtt(KQlap~BMFLhx3z!2}n*#lm%%Ruwb`t8g2r}EVH1UaChJ8QQ9vs~)Ko-Lzx?S1OXC60wJ z6T1*TenE>% zY_6^a6|^rpKX3Sc9Qu}QPh+QK;0@Z(_6%}W>F>rGXd=z~rViqrY2N)hb4`B7H^}e$ zvR{6U@|mVwUsq=h=bD4Rgr!ONa{`*|eKefh zwJw|-TnQcEL-fv(sC0Yb*B3z#^7F?J;k-=RiqO`K5_oDOZ=;xx%3*#Ni-%;8)$;Kb z!+AGzF>_Y&XRJdvzLN}ll*o2%W1spccn;C8`ZtEwj{~m>@M`Ja+sEi5$+m|R^TiWB z3f+qboM7l+g4;L8$?eZKeelwp(YGhMWBC6yo{#2w8rO2J%7YDaRh&U{ehB|;r+L59 z-9=e;mU!gb=nR+APL}^Wxc?CEZ{zwD*SEN8FCxWgU#FZlXhD}QqLvQYc(xlZyW{2N;r zu#f9`Wo9qe+=cAJSXMr5^EKGF*N$o5g0JDlJDjeU;MYUT4?s^jkRNecWI^XM@G*R1 zPh)eYh|ebKh|fa*I~SL;2hHf=7%lVQhsajtFWXq`#po&*qpPS-XQLZTLSHGbTrgPA zz5zBatG){^H}B_6Ut971i(=#wWT7MWE}Zr{bSB?&4EcHDF$d4o*%0xQokqu@{pG_l zBtzSZoiK;ryyrCHI>-*~!y+HH>}1ZuW`9}LS>w*UV(~yX{fFLH#xXp^>NOGO zY>N1&#?ShJr24y@b+6YFJIVxT5g6qX_yc7FjX^%gfr0I3oIYI+uC$-8;I;XhQ_!Qw zP3yh()OPWZE%={ayd&0?L8p@~^WBf((+$meCN-0LXSBKTDBcx^uDiU^A(rYspJ30CC)=g6mU}9`)3u_0VmEJkPAKmxK zpWrVPujSnce$6<~6x(vpXPbbT*0<^1D7-y_?_KXMfo_%@O>QFm$k>IvlR?*x?&q~3 z8Tk`_x8%Hjvasq5WUFyidC*$mU z`iY;i7WoMHDKz&%Xioaj3UX$pM@WZTPFZ<48vB)$y&S&r?h?x1%F0t}KFr<J&^_c~&K0Uop1U94B`H|HYs7;~spjL+1dX$G%a|FL*ZBm`?Zsee6H+4^N8!1cQEvz$`bGP+g)<{Cb(s#j4o|nX#LkZw# z{i@O##p_I6_(0V+`8*x)|2gJO7CJxKZ+9l`#wkzdDnHeSxq3Pz`TvxaYkv$^%^%Gr z`Ii<_K7#A{Tnp)7#kO$ka`SGbJBfGxLRs@x=iX}`DW_o)`r1f;mbd@E)_}_|CH-7+ zhM^(Om>t5mHH2?#p_989|L%R#7r*Fqorx_YebHfWkTi4}^lin^yVB?Y7cy4k*P2Cq z23$pv^_Kv*wVV;UYHa;rmh}|Yul4B3;;Gfpw0uvsu3#8P7D)$@ejQUg=%4cI#E^sN z4js}RdU@CL?MSDnai81f=@J?8_lw!1(hZ8)S`M^aY+l58pYi2!&A4)L^aksXu|5Wq zllDdBr2Y2J-~D8l?1Zju0slw>c&x_ej0;xSxmIV0b6>LL3T$D)Kr-LLK>iZJ#KOTD z7@Gc|uQNP^&QOmGmz;h49`Br>IR4uh_tv5-q``rKd0;L4XOZdWelV6h0UhB=t<%2$ z6eHJFhw8eQdgRlLpdY9n^m%h8o6Z}OUU0U)M<-Z{P9U8{c#>XlJKsr< z%r^2m{?TMh8S;7-dH_BensTeKk+@BInc`7&N7Ce@1&^AVxE>7Pq+LFCB_rwnS3X~buBv|4JQ}T_V#t*ve|LIxycf$L(4N&WpR?ZsZ47yH?>; z)+&f6A&cfKZ_nm{M6vCfpatVMF7wWr%uUf+hsVAB;KSs~6XS0Ncj{l9wG7sd)%t)0 z>kMM>;nA9_j2*kM6W#ia&>MTMVURu(%%_x2W9zc{luH8nlox1E82Dm?Z$B=ACtCZl z)H$9GaIoWiLby`yA3QG(kIm#*N5i^|6z3J&H6V*vd!RX&hIj4ceesjCz<)`2K+m7% zxyi%-SLtoQ1bJoquXPZ|(C;v|dz3l6z(3b;0e(5gpO+VmJ(s4hIqJKcb~Tr0lY=0; zrHQq7h7Z_v;P8PAbl-Mz0e{PUG|&->ld3f-}bSp5(bbV@&VKp0wZFyhYotY>7Gkc}V6R z|2!mpCt30S1H3bd*H9igpYO}Z^AtnVTpoZ|>}38bMmLBKBwa``^r7YGLBs}*yB}Q@ z{RbI6?L_!}8vRH9kp%QE{Rdudd`=1I{b=Ti(S43{a^$CXn7w7;C&T*B8H3IE!mR!y zKbiEL1pIyyxw4M-mtqY>VxKXbXP|XjwQm1Y#PzW01?R|7*m05#=vMMGHIU078J*>x z&ITMrSB{`>E|tCK(^mwU6u}Roc={0a*mLBiLn@z-eJj1V82!@!oju-veE3CmsYD6C zHN2y!?HNO+0IU4m08VDDT`X`frhDkp(g)-twEC5e;p|@a>pL&KXIJf2bG@8S@oo=3 zHN@V~7vUoo4=MP_Qr2^5kDbTCe}ZS*$Q`iH6FkrBWcXd|{W$lflT~6D8h_1PCnx%m zt@?3%rhDt#r|6sXsTl96P1W;J$`6}zrF#P9drf(wJBxBR<+eH4%isf@Mr#f`gdb0@ z`B?H?ar2F-Of2Ce#lJJL z1loTmy#^jw)P8i}eZ~9`8FqFFIVxbELX)6Uf}v`uFrE7oP+ZqPFvj{OU#$QCu!*Y`WkY#fk`TGU-Refx#8r%lyFk#uJ=OMmS;%cyZ7yIYl1UI zZQQGr&f5%a6pMp1--@ndPARs<{4O@GsGgx$7JC+=KIyZu*F2q(z2Nh4uQv4S^T6q1 zaC#0`&*xC%o=I6W)5z8HIaIozp)6fec@|k{LV6}}$@4AXl7n}3DrO^|E&KXD-kHmH z8LnpjQ@)1s$GCblRqcL+vglFrU;3r!ZYJe#Q=ZOMGP)4P|Mo_>)r)agyGQYka%CjP zb}#efmnXN#he5ye*4l=kr(v0O_4-{m)@(8|VcHGQfbvmd$gDJYmduijvwTl<@GW?f z=@^s{n)UqiXVZj1RMzjl%}2HD{p6&L{WQ$SQoeMP(CyiK2FX2Kp(+kJ9){fk__6z#?bjuYr3R z?m2uf{$%X^vXN^?C7XVKmv8&O2RWntJ_JWAYXrwE>p36!xcGY=@@*V8#jtEkq02&p zT@M)=n&94!U*<_uu5xds{7X}=bk|ar-6J~tA?15axz@dzvM0kv_FrSt82+6x2*%g( zUYc)04JG7L=3~j94pp=UWs~I5J%iy^`Q3)??m&(Nye#9(r#AEw$DhdKR3g zKqm?Gn0JyNQRe2Kfg5e+=O=BNv&8@8$*lZ+<^{3W((@GA{i_hn`K|zO;rQ4=8yyMee4nO8QF<9Ag^Q-Nsf?b>B$-7 zgt3XRi^Ml&YiEFO47p`-k^#oDM~clm$%v=HS0aFugmA+BVzH$N_tSxQ)4Ur&KiHd{ zFwcGOa^iJ#M%i|Xzk2pWje8h4+gm%+Xh*i=MBel4kxF+QWlu&_xiyr3WAH!Tt)%>W z%0U=qu<=5t8h?amo5)U4eq4M`^0@!s@pDNuFN~ z9HNX{ehvIwEw!wB$OLp_=%;HZuuu%f*kIV|IMdv(b$?D>9h8IpO8esr z$^gYJi_xNNh+;Gs=lx3N(YuiWaq1{#Lu9cN1k+-DDzqUQeH$XqJi1YSwgPzU&4w66 z2C$aYw;{9^Q$CGK_tt@MYvf(p5XIKR{!iNw&Bz+r5Q(fO1M0KGHbgcvwEpAZa}@YI zm8)k%)Ve28mJKnNtF<9wlx0Jt0(>DQ9ulw{l!M;IJMt?`=Y8cwh_4?@S@PwBTyN%j z3|DJIOrtCt;s~y?Ar9mEG*{1V7=~-&wQ#GKhf(dmk9RCz*BsMt_cCw4HqVFc*$+d@ zN9X-rSCHGW;~8(y_Zq$ zI>XX~Sb4xNkVmaXsbj;81k%Q_5O1A~^hnvd7!&M*6`R zv&MNZ&% zgYOL@BXf_20{qX@ffs=f<&&$OUK9UTUQw;v$@oh0W%)Tu_=MzZk?$nF#p7R5&Q-BC zRyXHrj|ZMd1J63H@_p5CmHt}ARsM>xT*Ze{fjO6gZ#mGp^>>JGNoT0w-M?`i#q}p# z%eX3sK|IW%ypHmJ;eYV>BzeD-U+3O1ukv7U#;f60*_oC%dHiWl|Ge@OJRe8c9mG!` z)IU!rX7MMVU;PQXlW#t8fHQ+}?BVBNJYDmk9jk+W7T)wje8g&Zm_L1X5c!wqPf#Yl zH1;}{EESJSvkyPKB2A9IgYUhbI-;D}qO)YWIa^V>!OiAf))VPl-j{A5T1~JfS>Nd0 zEc-uhg-@Me-i3ej?mqsz;+u)%0`Go^{T&RQC>E@_Q0uZVJ~s+I_jck?@_$R$jj`84 zCV;;T_>&G0=bmg3tKY@Bul$AxJWW1ldq2Yb)BTdMVdeIe;1!|0*j}=)_Mj`DmwWz{ zk$g_Rh^2SDcRl$~Y-61XB|Z86x7ZgfV5=tJ_ZC-YfivaA3Rlk-d2a#FmEUaeqjS&; z>N$t!+AB)AYV)9N*;fr*Mawa+_j6VL#z!d^<>S7;rJgZL7dnpj6tfb2eTcGWV~%r= z@$V0XC-%qL-{d6Py`8)w@qA);9SzP=$!KI;QZdt%6U+U|W&GeeImVHrlJ(^Of9&mwRvRDkWr|r}4d3^Y-VT z;C^UFxHYr?z^q%5p&GN!;mF4%O6Zr-D0EbUkA)&UD-o~Ivv<;`v+O%jOrK7Z%dL6X z%^vy@V3qLKz(gEmPQPSM$bFLBG3oEifj9fdy(7H83cTaMJMF_;^D1uOUFrUux-6`N za8`cPQefXRSkao{TRZoJt2F!PWXRFhT;28u@};5WbP?IBwL`)cwCly3-}2#MqAJ3h?= z-q}~x1V1Zgr)1!L#bO|`uS>-`n)bqHyTxa*Q!-DpZi}40Ib{?36MuPUT79IQ^BLgx zdE7xO9`44umB6tSt*(JqXF;oHKui1Z-jQ4@xOzSX@_#AIrvQ)4*A1`r>z?TDl79%A zmkgEua69jwK%MnmxAW{%T*aT>qO5ywaCNx;o$F4_3x^yoIvt>prgQ zx%O~X%&<_$IPsNmYm)ooefrt>iF{f%hJugF*Dpr;wq}s?F5gy$^Am3%m)FElI14&m zM7KzzTZms<-J+P?6J`HhYxih9uV8XB^=iKE`}5t#$K!l>PrV|_deuRA!YuPHdqMnc z_l?pKGOV#pqZjn>z4T)ecyeXv1dCaF5=SS{x?+=`cPu$O;K%Zs82Cw1m*^p=7l?nv zxUYOm=~%H*N6bw7Yg&|>km5|?7=11S=c?Q2Df9t9$;Qz6_42=WS^FyDU|#_zY>2$g z1&`~p_1S!yS(Q$HPt#v>#=&G{t<49TjLf$AKui4fBTTZbg$$RNE!Tbes z{mBpg^_?f({@!((H_%t5&nPbUEOCVtFtspF0nc+;7ot1|Lm$M@<+IW`5x~j3=jg0z z;CLBxK=Y=KvHa1L$GO#%?V8%Ll-2iOzm0C@_q~R`%Pt$kdl&iNkD`1jW%0@|dbo7Z z5c`-Kx`Gx9X)Dc|j7LAknc3h2e$yhmRqOJH_n!(SC+7ClF>1+ej$f6W>>zR}n5m7mvAsN-+EgFWT~d`i3=S~5P9 zD0MAnerax@Xmg`dH?};Zfd;!9V@ABp$rk zOUmwDbSbd5aMFH5%CCHj>o2&zY}%dZK1O*T>UqR}X5ZJ|RP^Ap}tjNj8&hW)k5(U&j8#^Zv1+kMH!xA`9T;hU4LLad;qt`dfK zOII=bG5~{Od5ZY)^7@L+^|(=fKlHV~J>=;iG1l-(2aycOk^5lcZ&mnPrGH?*nD`uX zAQGT2`sxmq2VuqxgmWb5zr@)y(4_V@&g~cuDHK@HU93nbX4>P zt1HCO73A;!D>|xlH^pE#5%((87gFpW0)D!#HMBU+-5>aCo@g%bLs>c3iuaACtT=?~ zEX&`obsfr{&tqhNrAw&K<@C9b7UB_)pJeBgZvrih&=0`9@olF<$?BcHUmII3i*H-; zw}aopug%_+MRfyg*0e7_gE6;yd;z8SwRu*`ug#jyX6lR}AEzT1i`CtYU$B^NkYWvC zF3QD=3#UJ=W_FYa2y#QMumQX?^E~Qbd0NbzPEgtZ}MF8w+Go6^wsZ8$M`zm z$S+^2PhZk=@Kfq}oaaFuW4a%^j1f=qJbmK|4O%t|L0O3%XL22 zRDc#!(4qqm3(9BN*cH61Sfu20IpyC`md;TqYmeMf(Yi0s3T13?ZRHPd_xhuGUuNnY z=e~~Jt#zBP$^JI?Cb+Lqo=N#7u9LWK@tn$67qiw-XT_yiD=*tx`#LOVPlq^rI*^pu*n>Qd zV)qhjIW|T-6n(i%dxAHyXTypsrVQX0&pE8g*}bgWthadpIW0S>iL*qk4P^LRESzjw zoS6UD?G>%OKi0lq2)p2Vk52+S#Z}aA`wRLvw60mXp4z8=D?SeSJBEf>+b~4D*RJzK z$9o$;<^#`o=fyn$ZEAgIe6%ye!G^T)UX9I>J-(2+2h6-UM3uKjaeh7PGo5e5&=)3g zrg|H`;50tC)HLJ}@rTfun9f=@XRVK8|K)Mq>w#{he@H)o=bAO58pCiLrhYI4%&otq zY(HWx$bR`cM0ZjA4U6YdzaRThJ}CXo^E>)#@^%y}#_pXKv~6XJFKT=5w)g?qOX`Pm zaSHpQ*mAHx`28B2m`j$YHZhl2zhU%*X6{>g)Xe>EVr(Z6Gp?uq*_>w|)YE^?=rVf! zQPAhF46W9=M^N_UYfXVZ@asE|VN8*ufiEtdMPv8uu z81T=)JJFe*jER2Wohios8|3O+T%`m3lCp`}8=Y6{GrhR<$p?&SJqDWA-iASYx*OT5 zKIP@G13wVIE;0UY_-(22M|mdM*1MS4{z~AyE|lCk7df>*YsAorwjr|$*EIg}b@U_R z{=L_p)UI!{$kqw;wUjN}42_o3jY80=i4FQ|Gn@N{ZP{oa`ik@q;Iy3U4P3v;RdltC ztMthwT;JfTSj%OUm8WdAgd{R4dMZsyo~^woQEw)ZV`kR$kBzUbr*L$3|P8-IMH{D@)Bx(K@${FpJ5 zb1hxxlcUh<>YO)sBGH8S_}LXsa$%YC zW@gjc@pByK0<9xGZtFLnQv4wsuDtf*aNV`h#KM6na&a=c@?Cc^f7vf$#yWHD%$}E+ zZ*>eOQb$abw4PLN-a zm`p63zFQqGgiMc;gRXaPnC#>Z559ZYp6`YfW5Y*tB5R(TIrBUE>Y2IlsggZ4?hS|G zL&GN^`J?t~C@0XP_h^sYJZ!bD8>XR8__hc3T36x&d%oL@PK9pMb^QmN+}cI>X#Mxm zak>&Ud%mAV&zgikdQA;=v!4ojb^aUl>aGN5$QJgen>Lo?%fD&7lgsc;JP@aft6%=v zwLzG*F@`y`vzjw1Z~XiIM`nR}B+ynwZH?Wtttf5Dp9H+;-#pgIm7+*y% zk^MVsO^)d(aMTCgYCU;~-);Ta^6bYUooDdHliLUWa7ufOJ)Mft$WCZv$eb7M(+KvT z=+q{ht7lK!6}J+{MyFIiqn}O8Kb?2l{CBWxPFkU_O(2QYY@jFd~@IC{^8s&#Ah4Nw2m;sGmE?Ww}u);Ux{lPax!wvTNUPpvGfccPINKPJmu{82dzie~t?heP>!>J`28F;dygODyfFp4Xa)2ZxjO?sm6}|Y zbU3R@y74dm-Ge`KJa;BOMQhtI&vO~3m@sGsIlc9x)`Sf?}>NhJ|W6+ZN z?&*xxo-I5<`O%LVd0^Ul>73kTazXQLy)v?`mGEq}6=!|XYIwR}6CyVqxV8xQ;BjL# zbx2Ze3U^-xAL>&x{lNa+X#4dw`ZJOKD9OBZ-*CluF!Nt13+CdFulVH$DF2@FTfkIfRUXyre)%ty3&+vqkK-BI z5Z~OrtSdji&3OpS=^fa=+sTXe)^xCko4=n&iX3Cf_p`xoo${R7Qz%Vta|nN>bVBR1 zM1Seh97G>#iJo{e{DfTQ_c@K#;QxAZ7ut~JZ5HFD&*7Mtln zE(i;EN6uRKr<)S<&!ew;_A;fzEPc5u--y#@oi3aiX98z=NxdTG1_|?Uxe|AZZwCF`Jp$58z~Fk-SkUy zbOTrAGK#JrrhGQ#2f2QZ>m_lc?-;oT&-ZexGv&#@y`8HKf3o7{mH7U8oe+`-Tb%vV0)Bc`mpPz~5;zk#*c0b^cPw&Xrp#F(x$LOPQ9M^gu z@S?cyALt|e*!Z1oAK}UHV{#+mBkJRJ6CWGr)=}@<`TkX!{!LQ>zASL%F{`f}@tpDtlO z3>bM-j9 z6WmV`!;N1M>mqk!y6|K7D~XZgb|$=4XT$2eWc2(-=poO~!F^X8J{6+h7Kb7F9iqO= z;hC4hJBRo#jr`8QH+3d`tjt*-anMB_RUkihWL!uOnUnOdh+KI z+Ey%aU=4mi#{4Md?<1@4--US@cO`Q(k(WpMvMxEk7k^S9a@4;PS5cDRyqaZY{}AyWtb{^zYB6AGK~Z{m@!K z@s?@u1!EH$-X|TR%I!kFF|SOF*3u+%%kY)UWz$oaw+;Z?g}OG8qcY4}IExJ4H-`NC z*z3r4;TPWLh?b}$!hVdRi*3w5)gw9!(gd_^Xd*`ZP~WWP9YYu8@=;c~Tlj7=GEp`O zI)lGPX;gB5V7-3Z(0ajJ>!^bAz{-NR>8s!%U#|M_6m@MjNoe#_j#oF`X+cJ?d9vDEptxT0{A3t=I_&{IY%+|g;*E5 zE5Y0Zz25dQ|afbgHIvHy}W(O z4;xI5Ncq9@1|9qdA?9wDaUY6|+JMjLtN25szRw9+RK>miwAMQKzNh8jZ64pEGd4EU z@5sTiuJrzOGiPCwiC4v(BWB$IP9yl1oWz02<;=?%=KxAq79KL3Qz;zm05`YcUs?_Q zFJi98=!5Qwu7m^UeTKhvFlRap9Y#hc>p$<&;m4rELjGpQuKBhvb7ZN;4(%h$I@9#0 zxGbpZ?}oqM2cBp%5A!rI@8%oLw_6SwmIV=fzQK9#`1BI<*R=6nE@SrRsBvE=CZRRT zs$&b~FPk#-Nm+WJsc}5Zv&(od3#_6E>@Dov#I~WvHhgJO@EJv~(Y*|7802f4 zT=5e>Mb^v`-xjR-agnWIo7P*k6jTcQ_ zoc}>xm-})-^G5YcF03HmIrI0@a^YY3PWAkWdV=&3LGKkUEB3dI=kT^CMI+1y`J4M*dgw|2Mp=I`y;qv+~Zo zm|oZ&6_0gECdluTaCBxJO;#?Xn49syT#fUedh@(7;lRt8m)W_Ya zjdeZW|082{@XKDIaWYh^{Y0!QPb-lqIaZ?$ZT_jhqV-`zbLH-jdC%K-jI+iMcXGG#zxVK1 zPJ23REh~3T{}+2c0O3u#knW$YaryVX+>1(gHQ(;ZGd(zOyV27Nf6e!A`sIH!eW-S? z;yc}!3|~Q6_k(R{ZCS7{>c>Ugv$XBe_prWW^_)NW=X7T9>D@aGJ_CINv%D-3ea6vy z49_-tPpH2hoL`1~sUf#2&AV3w^qw^DJAt^OgTGQZuzW?dCSOl2{3)wA2l1mF%gfuR zqI*q-cQ+vCB@4O(5SB$am4!J@`YWM?C&#`_9;MDSWhBv0aZsx3FWd z{T}kiQP_XZ2+sHa9{gVFe~7+#`bntY;a(hD51TqE*`l$l|4qJr;*33b=1lr8{-yq3 z0_?4Rau)rMv)8Ef2GyDN`~OY)|1|tZcrS#%_`1h4Pu4jh{cW^gRM+$Dg03ibZ|4W_ z!z==~PUtA)Q=@F!1h`ha*2g-m!&JJ@GJoak*^|~EH$GUwdn50Num7Iw7Ov72)L-cf z!lOe>HK;G>UYwYOr!R#2iJcmKVIlWZZ*VRZc&Q|>LA)`+7^OQ;=9euKZ>fWSd$>&p z=+WTR#Cz)8r`Zpu5LPK@&+-S2xor_^zLblZ_GH*^UKy#&4a1;@Jm5O_M#lCEV=L@S z?gnqJKhHB;e{(_Ioz$(ot3tS7FptO^URJR^x+y4LsQ*$&SZW>9yogd{|K5) zZy#D8koiUzbDUW2a(LGrw6T-=doGCO7QsWVqCNRG@!J_&d>!}RNe@e~?&96(VK30% z1o%d;HMT7@tNrMVUHc($^BwvkyeDE<(_wkgmnHI{jdMf6%o zPjT!s)u;HBt-G4~q(cYc)&Wk$YpOVFV-e2+Z5SO%Z5%}#8%;gK_Hqi_Sornku;(9i zxc773Q-ADlH|J?A#3tHZ<|Kd1o}$ueWV2Up&3M$XdP&_U(x zAAPx^Rb$tDYyM(lek=3U^4T~zO3Mf4^RyqmSkWpR+UE(LE7x7$*}3Dy$C%uu7pXVs z+usL19shvr3;2o7mY~m3#URjU^d5dc){A>QN&jtG{fg`!_RXg`d)vr}ImDyjG1)n> zuB^owHo*D#Mjk)J=^(DFoP>@o_*|8fu)+zMyaeSa*t~=jph*Xq^zeOLFyA`ViBE51 zhPYys_nDjXKeHK~{jH%Hb}Z6A_J)@kK3=59mB7nJ$H$9<-y)BfH6!t|>7`-3WP$I~ zJBK>czAsjIi94SD)TI0|A3rmT;75E$-^(wk_s-yb=|zI!e9GRut8zarSn{6qnHJyz ze+SOh?z0&$pCyjp|7xCH3jM8T%}ok@v%J&uA1pE5+cj&7Z>-YMagC3OgBY5wiEWWPtR?06?7LOpOv1L`H zE@}5E^!S6_pMyQ~SChlYdLQ{l#S5ex4nU*Iq58=F;cLaa7nVD3wy|el)WL5KE$h6? z4V*ppTl7iEe#uPbWksgMa>ud8$DC!$8K;pt&UNAaGHk7d#Din$xr48uS59GmF81w> zDa_4sWYApnqGrx*EgJ*<1#k^+O?+1|5v_NG_iS{Cr>4smJ`-$v)L3UD^Ri`;@_qPi z0S>pv$0yDE%w3Z=lo^xM9GwbnIE>{pHyOLM1)H?RarQC1rT$Ba`F{Whn!B2pwq3QS zvCF?)RX*2@{}>bd$Cr(+R}K$?=Oj0T;j_e?A6eQour?evxlc{Yng#?j;@X|-M>|hS zj~7gv*n>(i)id3@io6BcVIj_>J&rzI{759JzA0Yp`0JVOq;L6q^f~n9#Qb%Bf1jp~ z6M)aT3s1_)r!vK^w}KA3mtIbPLj5uL!V2+lbj^j%`2HSp@FsE1a7B)Mqr5J*Gy)He zFxC~!LGJZ8f%~c8D8c-c-n*)<{=ss7ZH)6!aGN0R{o{kf3(EPu;FMpO#b-CknQ&1Q zd89nW4V1fqRg_rOTGlN&`0CcOt|`KG6tr*{zZaZQ7e>)J1(#lIL-Fyxvhrywt_->a1vuljGa4}ATLnkiX1$5FhZHR zHeb9-Z5)dKM(edRyN5cFlN+Ptu%hR0Y#@hK?Ma?wfy*4h#c3dqb?#t@ekJhLSl*Ms zPvbD3^-lEdq3PGYJ=Caq*R<^N0mZHj{Si}c0FR|(ja_p{Na}W2vKs`@D%bTGKZ;#D7x3AaB!R%qp%G@lu z+~I*)LAW5xa&>&$c)bTp^v!9Cxo@EULsL#Nn&IbMwMM)goXiF%vlU;VyoB-+-4E9H zVg75JHoux&YVtxSCl6(Q+@9DsDLw-4=~$H+#eTJpI}5lfXHGHK+@oQWPwm;K-uXa> zu6Ekzu(yrQN!)qMzU_;dD+|XsZ;A))fFC)BI*t45oG5e#(THg4ap<#*y>d5#YX%i#_4a!0 zBY#{v|6|B1hrG63{in5WJu8;`D11q9R34)0PeH$e-`)Hdzg!$SFgcI!ET2TbX|c4b zoE7Oe4YVh|DVi;ZW+(HVc#s!+*(X^K50c&5jE?Y5V|>oXSsXl7J$z11dF@~2yy`+c zEiA)7taydNlb1t!C3q5!cad}c81dNZen18jEUm=mwmexAFFIM1F!gj$@3X&C;uO%57gUH^{{;3&YK57 zqlM#GF1;H%436Vs#&PcykJi+0=}CrHv+t$$p*8$t=~Bb5#Vd#Tb(znv%SQ0)H1i_J zuiN0)hvoV8=>Erie$AY3JlyBkFTtxv^P3bJePNXQ;@3^n;BD~hAlGvi7gAp@{VjJ+ zhS#4p7=xmJaAFXVISKs_5?x@KQ2SWqEzdR5B^NZ+7qkZ^~9s&OhV=sjN;d%I1 z^!Ekee}oVJeGUmPr~v+Rm_HW&P4rjuZc+&NBXgc#QfJbSG0bBXPF6O+7DYzP66%qpttm~r{@;d zmlzud{pFgxess;6Ps10q9@g}qx!<$W>Dq#Q^B?$1O~0An`nG3ftV@2m%ykv*2dQpo zN_A(iJEgtM+-LlJKZa*n+b-W;VC#oAdzPWI&1J2P>gN02xzxKX)-_<@JN}|?=lk{T zHQHNph`t`4*R`%$)2^}6*BnZqt~S-C(H30$)1#ccRcGLlm{KODYd?BsCNwX$9dPt zwzBt9u!XgPKzx_Czvn@#ldNp!C=at{|HcW-A+h~$Fg z0CM7u5I@;@4Xo#re)4?lt{cPLi}CYfg8L@hF7#r6=R!-;xr}|Bx9fgm{M47hw~^y5 zRgLq=cW~Z(4c$m`{L=Wa-uMExlS7}^8GWS8*maAMCoppiA^#JEmQA><{m^b+DHo`sH{xjBY8P zTpB&H)HpnTdiG!(zV6NGvj-i@mY=?it)#h}!Co-J6Y^kM4_Vf<$pO+J5{pb5~qK&>y_2tA>$cQq28=SHWv*c7r zKkJ76Bq!ENP9qZ}CzeZ2Q(lgo0Pc*@4 z@vUZM>h>cKPq^3q zd)f!?UwB7*SV;Db(s#Z*>Op^(9MZkD$dsvhIkRfbV(vj_v!S!uU!Ytlr;^;0916;1 z**JW&gm0E;ZKjn&%0IGl$h;%@60d$|er=q zV29SG8UJ9)lOy6w4t(e|Wd8`br;#VXy^`lo^j5UWH)!RFe3SAK?%^Xvw+r?|YZ(5r z-Q(rZ)B3{to4%Tu{}bw#y(xdA;d^&CP0^VTO3a9OieSpYVG6 z5%d9;G55q1WW!Oj`V8dUF`vBv7yP(B`6S}}O#hf-UR}an4 z@2l1jk2mvE^ZPchZ04=*2Vto7!ua@FRwZhgulKb}hjP-DNyQ?AzCG=Y)whzfzp?+c zZa}ms{n4HgJ{uoj1{_N_O3CiUPSCv7{F2V6dAo>sn>TMgpA>$B;d#q?VCjF-3pH=g z`$1sdD&L2_9lAq_`Oo%v{wewPJ-^$p&776KfgiC$J}K$4RbM&V(*v=4O&q}2GaPIw zbcp^GdtEjyjT`yjg#C2lviQI*Y=tZFOX<9(=a_TyL$d$Do0n`mE2n(b!g`SB{gR)- zdL~m(5B5Y4xnc4Vo{4`;>tF>J)}uC_h@QCX+KTola88g@6TPA#S9Uu774~ghj9wNe z_aXLv&H@ECQS?saPd;{w{2|B9)3LQ*mw}%jM^U}ffmOG3r0+3q3;)gFSpHSPN3a=W zd>ZT9=%l~knXv)TiIi7sbV=%z+-h2SnSswp|5cr@AJvV}kBHrk)Q|qbctf++XZn1k znb=gGkFfUA@Dau}3YZ*LgpbI7W#bLEAn(OTBIN&}JA(5GUc3R^#G$RsM3XCE=&z7I zJ-?N=MqM-+^job*)&_mQX8}LUf8@84>{pxuKUH35SDfN)bZTRRd;TkC&UABBW$!>ikS5r@DY>;Coa3f_@%<|JY&cD z{3{FpYR^`*ZlsUbAm>Jdv&=!G+cWxZW}x+L${Ehb zi?Dm{e=cnHU$S$4*R`j#zeqd3qHfWbWR!dig)(Gvk-m&K zb#QL2U&m>F9g=g(YbmT_CHKIyiA7a;WfO}!Byc|wxc^Pc!TGhEG1xI(DcnNO#(zPa zDi{w}%tre;N@nHb;l!U516SJd=UJ-`IX7qx8$UD<<2O+ zv)0$|;_SU(WFmVu#A}@y@q)N^u{9HM+7X|&aU!c%s(y6X7G&YZ27buGje!_^CCDeG{@CTG|LLZ8Sa+Xa8gqzBR>bs-dT1ZAmsu@4TEbR>$VCP7b>nxh$Leih%Ap zgzlNf&lkqd-r&c&FQqKF{0TXqMGgx7_k$O~E`&`Z*y;It?n!t4CH7jeJ|Ih4q?0OM zD0>_J)FOQ~gzX}oH-Wxz>pR4;u>p--xfPiO-^<6bQzhcqsSE2GdOHJ?)0rt+H%$!`K5mY$a=kjXf_we=QwL$@(F;o$CoDN`O*~H5N{J-`WfR9PyI3W zb*jgU!GDW;$}MXCKDeSS;!iWD1CL^DSh(faP%!@lx0%3AZR3A8b&aM?+2`o>8=qhf z59{?c!@RmIoIL$m;=AmxBKp{lP2US&TSz}FpO!sc$Vboc+jtGRp*Ac})qTo_r_QGw z73~3kt*x-I@?qbp@%@hb!hy=qQP;2dpJFTv=)3TiP`)7e4qfq?J#^1n?VAK$bRX#C zvOhm3H-A&OReU!N4TPW#&GXsdb2f8)jx(;GJ+si6hxOM)n3y{_+zEfRedAsZ8?iIP zyd6A<_4eRNIV28#v%yLHmv0Q;*CgiX;LzInncW-4o?FI_WAtSkJRx-O0@Ke;W69z0 z^N}Lx$tn0sH+ywWq8}mVZz{mIQ}m;a_A<0L$8Rr6dl}lB1)Xw(U4=N1du`MO%-)-^soC7cWmQ0WuhvKEXI@ zbw;3{cPSh)f0)}fWP-QOM{9)b z{w>w+ZSe5~Fw?wx8a&cozAnLx{XRM`gICjL{yuHyBHWh_WO5(n|1x_xJ#OsWGp_aK z>8rpY1npo$w3s!Q^kqtsHJ9DgZ`WKZ_aut!cj&)ebD1KZQEbhnUDJ@NsGB*1xh;NY z*EBfrH?6sxjBXh-Yc937N|l>pO@qd&y#-IfS92!0m!qyDuNzqFUg0>=={qfNZIF(f zK(ApvknGSG{#MbtfiX(I=)eY8XUbLXJ(RUBT5xwMmx2@eZhk#u3i;gTt!Hep>lw*X zYIG7YlM9z3mIM8p^^7sf>Z`^(i{Dmq@0CBI_Wq6bl%Hp07i$-#ziI8F-glf>&V}w} zPw!s#prKC(ADC#=(x>)!D1%=}uG-v5@L=|JF!KW%T}ZA;6r5D<&pt5t{+gi2;JyyT zWZ!XLhn4UZv(|~e3ol#$!d{mjbaM9*JKl3W8tY?yI@KI}3OX&M`53;OW@z+!>b1GI z&CqExxx*g(tI@kXKke>iPZ&DA>$~2Z7M;d`n`D;y^3gob_WVY;p22hZDEyWHdf2^VW|B`=v zi}u7n9Dj`p{KKrbvHW8V^y%@BfPC}!I@p_h3u`@|FW;o=NWMM&56ZU~I(wmfyA#=4 zOuo&7FYHaerLeze!ov#revJF+fXqw7OESENTrztX8eS5Rc{hE>quCdMU6!$y^V^%u zYYWJ{V~WVU#5>5mL~)tdA({92@0F(6@8XZT4_)h2Xg2Q4Jn3D9Mz{$$HNI>4D z1M)6jMBd3~BYF2n>VAfDDSG`o^ep?quE%z!2IU>T82m283yr)p=ao-!a;tnDom_h( z_e>vsxtI0j-o@xY??&!XcWxE-C3QYYeYsV@RqJVQMqUh{4~pl{`m@tMV}B>Nm9^PB zuuVNW9=Wg4`92+&l7DGEhhER1{-E80uC@nlr;tM<=otGjxTnzOZ+mia3vgQse8mq0 z>&q#>Wy)3VC6u)mQS$H`l%?}Z_ASx47JKqgSnIA4dAi>J8@3gTP%guYc||01nrLw>cf9x#p#KQ&&TTm3DEyea&H_=iGwvmO;+m2BHE z@RD7-0YCotsJn)E>jr!W34DfAu2?kCK+Jb7dzdy6=T&{thyTUo?KL#w&#cMJ4CB+( z-0i{FFTbW@Iw53>wJ$=*mNsNkif_y4(_;2MsQG$*E{txLrf=HsNO`o1*+poxoW8AM zJ^EGjO?^6mT(?yPc6S_qbaP;z?WufQPyfV!yYWdx{QVGQE7mf;?t7Mr0PSK=Es8lm}A`y>z-?n%}&*`%-tWuQ)JdqY#7l`(PZbC5B<|KFS`W!L6DLfsy%R=OJ~ z7kfwh7T>z4KGy)g^ZWeZ^H~QBgL}P|+~WB2s?^AEWzUS4O-$URF)N9|pRc!-n&3ElzFF4!Z?qxsA`}4#v zzOroSM)E+RQO6C^r1EiE;S~wwoa5_}%<(SyPtE-G_ju-cPJS&*qr8)YXUMOS{|>tC zDi*sFEsN&GS9dRa)c7*={~+-E2K`n$`%~WI9r!|cU~aB~ep@TK+%b9C-|QHWpDAW-n%RCj;*KO z@5{@)BUxtfT0n=-0aw`*h5JXvi_ju#L>uqpUE43^APb-J6={4kXiq*O!Numk6F2Ty z6*)9XT(rZ9)p+N@fVZpQL5dwKe$n;4^Nc>#x02lV7s+=b|GgJ^pxCE)ad2I=*0wEF zz7sLHFupO-y8P3gWye`jIBLdIS7j z{L;jE$sO2Ko+`LTAvbh~H(xO|n|E#i7DPk^W4xE}d> zft>R*|40tT#DQ5Be%oI>wOuy*B;uHg{Suqa$A0PmaO{^H-mUl*B!4p4l<4albruhP zj*Y97A4D8e`h{JmWAlUBBGR9RWpTt|K1clgph?aQt=Ah0kMD0L=Apd)$&`+ z2aRsj8VzXEtRYohn-5`4mY>&uHhmYK4IKDha5#o}H=g~Pg!ggt{>7~Qe2ulZqPLpG z!)qswi*P2RnFLU;2H|r{u zKj1K~ThYHF(Bwj=c;0@5y!!}v%;yh)N3Db3BY%K={zIYLRAK%A`TXShnOuFFKhQ+( zpv@nEuDrZ7_DLWP+m+8tqg~A%<%y@6KQ=FIyYg|sC;KMOxRiB=5nw#|Ch1urvoDnN zE6Kggi$?F*SS$yy5;$mo2FoYJBg8AjCz5|=Zvn}NzYXt+68oFCCyMyT{{hxow`X9< znmMgmG<1gE*Uh?tIp8f#p2%c!6Fs;VU$2_+*Ue3a79_u#kj+}R7-7$@N$e41*Dba| z=Z68;2y!8~ZZV6VEVyc|Kx9(PTQ>l`2(BBHH_ZJF${U8aDsPxIPG;SrV#5ZmX5FZb&U%Q!m#KA8*e4Uew^eUEk%^Kym@Qukqz=kn- z$6BA(>XpswMN#PqwDvZ^kdq*&XB{YQNYUkacO~i}qH(IS~6z)23vM z?Ste?f_XGThdcuRB5g;Q8#|VdHhbY2+9Zafoh~l0|1^J!?S&Wh z_rlARkBqxcXI^3Vwa5qk7`lIawzrp@_Nh|bRldtt@HMQTWyY89H{;5sW;&hQ$QhI$ z@_d*@p`8=Q-tz4n_{}_H`=p7{d-2h5f1I*x0b|=x*7}Ea*qE|c5=S}fWwRK2Wu@Yc za^D8^_G%QqERKeJoJ}g&w~#!IJg&YP*%Mc+*DH#vX5UUvzu(*U zPiITWM!(*((G9N70ar*)Z1n2I6@Q8BPXKT z$h~#Ycnx#mna`0!h5TFY)b#h7^=dUnPgo9bna4gbl956A7bPANflsfakGzv#x7LKc zq;+eOf5CNY#8Nyy9VLeb-D<6PHZT&OUJjp*Px02Rr4JjqZY>Lai%+MV;dN^>iHk%= zIWu(5gXF#Dw)A%CefRr0bA|X@Xmlsmb0H5jrU+{qoq+CiJNBoMmz)V`<~w?m!8dx- zBk(@MeOYLAjAs2W0^@FEWHA_rxNl@3IqrEF`)l|G;{^AYBMW0wN5Z%sc_SF712BFb zxs@O%Lw1ja^K{@m9XL<&VVU54!Bwzq0+s{NmZ8tr&&hrBCl#%FZ$In+eGe0upFxKg zzNQ#lRk^2wtFwH(okm$XNV11dru+ahCFH}-fv-r1Fz}+>pt`8@cpqme)^)xcoHfb5 zDuOfZ4ZUq(XomLP6A#f^z$WIKX+4u)Mss<4c4++{Xist{3oNxCV|9#p5j@HA?6Z)`=|2beWAyT6^!=5< z<4-RPtv`Xjr#2a%%SP>uE!$A}B@Sb+RBVwp3VE&V!|gm%pRx;ClL&7XzOoBrT^-y% z6@DxqAaKc_pJx1kjOmh>hGtqi=>~?k@&40%zpZCz#>addZ{)vXL%-*G$!kM1E}?9{ zsV_^+zmad&q7zI_**%C>t;umudcy7boXe}$XpfCUOZ251KUe3Q!+i-+Z!_Nk`N$2g8Y6^>DP?Y5t_ltu3y_*O!-v7Fg69KAq!v)cQAY^ygu1Ctlb zH#P35+`rq5waz_>@-wDfc5MRl91ljPJ##6mOgae^X9h=1}n( z#*JyM~{m$58Hriv~&Kjj>vnm ztps1qg{R>i*1xa0z}~u@>2JkWKkwJ8bvByM(o5k{9XbO}{vpW}2RlXeV?%W)7BKYb zQSFn71=tvXVadTjP_ePIlKN=I?mAqBRqsyNuew&m!NcL!ZTiV_(A97g6qA7D|@G@3*XLng4~4x)2=|1W1}9vD@1_WwHx3W}nbJ)qnH)Ecd=ngmf=CIP{HfryG) zCd3`BBDg}!1aPVNR??;})RqaZxoV4=sBvQgR;|?*1^2d25>zy8UDz@KI=|2N+__eV14o_p?Dp7ZSIIp>T=P6r>XpKjkcVrt~|@QwCYBW_&%?_|aJ(bnv-uidw- z&MNuSGgeP!bdSiCI@ZA0ukf~=YmHriO%jeSUxse+O#~j)K^$~1XA2a@M*V5-{Ln84 ziOv~&48CHa6G}G;fb*Z=|EWUcsAc%NFBmE;e>eZH@v%;wB$@Xx|*2-_Au;&f9XN;rQ`VPPWX9z{br@?IN58_ zzxn!2Zg+^Z^qU3b$N!qF(LTYk{ORobanxl&ml5C}{mkw6JG6Z?`KC?e_?7tKZ{t~b z`zPMrqi^6FI?MAlp6}&(FUA&T4m2;(&(nNR__OrgOO*3zWQ_kkx=siD#n*K{0G?WF zk!*0~!^>uUD90uqWiY-{#vH=7jzOE^$6;_TV8Qcw#!pQd-Fds(tleBidoxF}w_un0 zo=vScN!Cc-yS{zyUjwhrK89oQHzoHpdwO=zpS*Hxe#+r1Te+C=s$X*%qi}xl0TX+h z@U725Ud#c$P4Fbiefcc&`3uS~20t0Wnw9*8P4veaWmQD^4HSpk;Dr_EyCC@W`V=8W%iGyh&%PTz`{$Cy)hgM89j*`20sQI*h%n{YM`GgHRg33VH9=lOLhK z{x_Oui*MGEA5O~`FN++?S~u%#n;C1p4q^U>qJ>yo}zMRyY z1lgynvw*jd|1Nu~qwwYH(|C0h-W*Hg)iKF!`mvQd{XVKM)*vS3j2Vqk=Q zw=&!P18WZMv*S-Yw7(r6#YWBMb7`kvT5pdYyzBh~>(b=yr3;~F<8#q@odv10)c@x; zVj}RlFuufQe7%0(8DAo7?jR_11e?vJR_l5B=Dy!|dcgHD$kI4|xES!4ZIj}4mX+u{ z65S0SvEB)yWnuECWGe z7)gVF1o$rl#^6p$eu6t~`nD0- z`}+>>4{sa1wA1L!raZc9%R|^AiLWLZp0b0zUB4E6q5EqMq@ME_qeq7lFC2}&kY#SG zMp`X@C7&^*=9V!e?4Z^1A^Dl@MbY!L-Z<97E1zH8g^y1@9}7M_f_9_u5#iWOY^1}` zd74JjpF!xnz|PF4{PP}vs{NSzwwTX5;g_O)pVpGVN_T%``p!n73;BM|w^#?N%kXpB zbv9WNBQ_xp z9YjA!8eUfWfqOr@cv;|sWNRC`*vqsp-stm?Kl3boQT*mo(t?lVtq&u+FD@qqBkmSY z!N?{pJ!b~6i~U0|%5%117xnYwuy(6=K8)hv)30bx@=R;X^5f=*;OmUp$H`C8&q8L; zQ$fFbHTDKC=XNJsU#IUj_P6kB5%r12t#Zp|uuVN-t&sC&#en6ZvgTcNJjx2*^4m`%t-6hm3)qO})#i(9IVXuZ&^)Q!sg&y^{d3VLJSAH@m(orY zx{Pmgb-*Ze8QCTsu)rC|_v*tq>L_8}wZ1iny2SSvk|&;~{0qsKtW|$BPk&|(h0B_! z!zt&UgD}j=r#^>g;fVgy&joOO35rE`bv)^IvaNhxc^rBkd=a?=j&eV{;3Hj6Iyk!C zQt5i>dR`U&V_(mc{w)2jX(Tk`>7(e%MjtgY9bf+L_-yDXWC7p#`rmZ)zh}^G+L6gy zfsL>KwIi1`PT5*pulMeR1g?=I`}DsUuni$21k-HxYTUM3vgv;j^0U#bO}^ywR>t3+ zq5qBifh(hZ{cqjzefl3hgr&vfwGXwpyNUHSU;k5l3AjM~1~SRhYr%(p>uq7imB`Tl z;>cO`!Dh`(`rjyIP!a8HJ3#kO~xK-kqai=6^!uu8X`bT`S;(cM(n3<#0ecA!bY7?#o!OQXByZk8cQAcv>pyn8K zJRW=#ehD{6ftwGE>x%*0cZ{niNvF|1T*>%wCFj|DcZk6XJOBnYi#=XhYlg84Pbb`OaM}?E_{pZEb2R!${KQ*84lHP98dCohe z|83F*&Rw4V#Q;va#(rFu7PT3J*m(~-q7sF*el?mWFjd5%N zR>a*QgG-$KfV1n1D>U)O(p8jy5%e$lZ1@f15Z*VzCwx7<3Eo#r8I5NXzd>|o|6LG0 zD~L`mniZ^*w13@OS$yH>(fEwk;@@1W`8P3(k-~<0==G()3~YoJ67f%6ITn!|`&4o) z-?;-={Ab$AbLuH`Iq+J*uXIPrzxkvKO&b3n>DPg=Z_CA~-@*>)C?Hmu`D)_V=M@^G z=v%aX5B=KJwkmRd@kUN#xG-f~txdPBs)=0)dA3z6_I*>IZMD?DZ>XNNT-jFV%YXd; zVOz!EKbf}G6MuGXE1fCq&r2=y(vBS~{pC3M8i21q{;1#!?+c~bK)1(4tIb`x z>^peN*F}rEZPL<3lbo#+d((}bsKIBDU0*Lr>7rMH6T9l`=x6g>{pVud`S|MNYAyXd z0GzmmcQ*V$^ioVZy|3|i`}Z|Oo@-kab;sBD^)*6TbaR;3SKG5KeBDs*()H%av?aY+ ze6#|8m-Obj=u^J@EW*|Z?M81N$C_X{>utT1vGM&1&nu{})PsG;f3ZnwiLcJ4_b4uU z4*q3$QNrdf75LNJo6)!7M+u8}*>s{X{6+G)l=emAN-u>s74ocawf?o1e&X*p{>+kB zIcFHYA{i0=OR_a{Uc^HlhXxdL_u0+vytw){`aktbj~1W1f%JPOUEs_m{U+&WXovM< z1CM1MEPP(@?M~NUYs;2=SNy2NxrFcB^T-RGI@01HT62|cF@tBFgL5Ijtsd{0PTJjL zRN$OLT5FfST``qst#6*iuWVG=7pIf1Ae~L$p9LS&yuC)hDuLN1><8JCuB}txjOW|I zrk+w~9O->Y`?%!W87tt;;uDfTH!$}2ZfuJ)X-hmK_OCwMBFvqL;;jc$xBBrA{m_}) zL7s=u)^Wh^$NZj0y|M*X(MBgRm(>w>-7fY@vW7hhtv($~2HWJx<{WPob;s7Yv?DqW zlh)Y$ah^$C>2}J4-r9!jlzRFhKBD#&Pv_%@WRXw1!jVzn$R(zpQhaQ~oKK)T;XpQ6 z@9)8S9`(8Q&NIfJJqrEAkEwJ0+5zrA&nc@z=T0u*j<5;vQA>AsS#2+PeT!6%``o3K1plmIC ze-pT_aotV2UtRcFqiOX^UfJZu()67eeF`zgz~brPPGL9eXfBr|>=LIH z(OHk!E~^>a40K1uD=LO)4dY(GvwyyLfPBRe#WLcws(`Q7>Do^t=9)D+#c8#l+83u4 zJHw43it|f+LfgUo>3s2e*7X!a6a_E*^TpqU9}@#y!I)BVnK7AhZb5$(E-ax;fVD#L zme;X?ByXa}N!QAEPP`FYDGeUXL0h)HHnw*T{wBWB8nNgkn%1UZD<8V+Ut_+{Qkr=oob!+9riY0chA0@yGJ#TwPo^i<~u8Xvg00= zfBK7L%S_78p!@{NpUAoz>qfKD!;pFT&IkA+d^|rGJTLkpS*d*K-a{E%yZqKRHtCI3 ziQvjfiTE34eS9VQ<4UtW9xiHV+A}icNN~*exoa;9>#ei*A`a@iq?zN{u>;QUjS}a@ z{1S_GelPXb7`(aN#T$z?zL*Y5Idk!51m7sWPd2TOH|u~M^>$mt>aD}qIEOg< zb--{Ad{lb>-=X>G=G>)1r)v4>iJXVsSg*&9!$*t$q`4Km%vino4ISMxX1wg_qqXK+ zYj&w=b}c*j9NA zybqUIt>*oJ$%&DIWxUAv=jLDU^6V(Q3cO0;BzR@ky-XYneV1J#y+r(XfJqmzM{l?j ziSHs#pS8v*-;M>Heatw* zX*?$k&-suus^!{#bkH-ObuV zka1?yk1h1EY`PVAE1SvSdGtj{@fhq_fepPbcC5 zN#x!(=*+L*uRA~-gJ|$v+K`{q=%>_ozeyK3hmig)X`@%v$$u$cpXc29C(1MDck(XA z{QI_sc$(l;LY>-kJ&ZratOtDh`@oN1Ea`6IEMmdl`pnfi^lcP7u#ECEOSdwj1=~e=YJCz&qjPyU3LQ@dc7A7JD0fxl)P#08P!_GH`k6FVpzbCVb^*f1Iq) zxGrZ*o#>8|*BWc$I%ElDJ5J%e)=!eH-(UmDrm;RrwiKcxiI&5A5jR9x(XOk*5+4R% z@#WLnyLR3adLvn`GJmB0L44OSC^ALgcJPghr-jbl9-JEat$00I{u=||LT4$@XTO)M z_yE{#0WZZv&>_ow`VVt4tef^C3TN#gVW;J?Z zC*L+v#_!kPdH*-%F+M*}@gsuEEc)~hGrxJxWu)CTfnw)k(xv3L!;f0bd(NjLugQFu z=UhlyYg@hWf+V~^I$?6wz~<+{xeM@RMc`jM$ir4TDuhlDfrp)|*hTc!=RR^{uFN~u zo-E#}-5H)NvpyHDxUwvW-%BtcmZY-Iw9T0v=)-TrgF9H;4qDcdE69%_OY`on#wK(5 zrfg?m)uwkoT^-@svo?42{;%k2&t2)N3cF7{v=)9S87Vn23^*vQGZn>i2GO30!^CE= zc-LzBoaYQxx+__E2jy;NE`n)uaXn?O^X5C0hJ)9Tf3=q%&zN)JcV-;vz0AGhd;UO- zO^nzci#t4*lBe|r?a#V_Z_e2b-qkav>;91(qp=)r<~z^XfZvb!rAn=z__3(BP#;EP8_fw{zZ$sdyUV>dl#seq0S_FPG^|l5O~z>yZoS zDs6$`)>+n#2OcmUeQ3b#RX4YTXVUE?7u>TBUwJf^JLA32(7DvcrrbT9SK&7gGuGGm z{&T)h^6g3Jd6faHe3<-Xm7zBLB~zq_H0?}Q)Q?2p25+SAEzim8*8RJmB7X-^23pA4 zp6Y044}iYS<6G5L%bg>^_<;@G@Qlp5HV~WVw;9|`o$9~8-)R-J5kY6$$Q?1RotA6P ztJc|G{`!>Q)RQ}~O!ioB?trpH?w)0`uQpz7wH7RlXYaqg$OX^2%GrN5zpRz>aM ztRtZxbmbP8buvcv``1bCC&3>l`F9aEFFccXvg-<*V#YF;an*Mo2#+mrT6k7nG0Up( z>rhOz-u;YvV(^kMJlX>GI`d$}XvO!TGY{17Fei$ABiL@BeZj+TXEp6E$SLfOFu&@@ zf`12^uY#Yettf59uMV|^Iltm2Y>gXyxr5| z3o+Kd*7L3r{D`2}k2uqs{RKQg<^4VqmzszzY#$e1SU;`_nWVmU(PzJ}9|MDT!Rz_( zrVh?&H~Obl+|b2cs&(Np4a>O)V!n0%vOhxC9mrh4<`TZC_sfQg4J_Nudv^|g#QV*| ztn%f1qU*DN&D0qyZm9S0^cl(~zDZW(!Pf+zUhI?fdHNmi)92}A>iZ3StePA7MaPa+ z-`d}aEsOUI9CJUsT)JERV4WG7=UfAiy&qlWe*77Yz~FhlS@%`4^(yGZz>u<<%K$WJ zK}(`TtGMdsFSu)J9rU6$?*lh(gtiXm8;$jtO|Fd<^vXZVeXQ-!$w|zy=)$Kj&8=um zco6z`viv{I=~QH*?67L;L|2&odcdj~${1CzU!RXt>cf#%K3O z=({}ZP1PZM(>QAN{YLZ)z6U3kR>zAQn%H}xcSkYjdy#Kw zdqc8f4zw-XXlj>%eI1on>w^!rutqI4t+bRd9G+9 zCp0#)msN2;@iEBxv7ub6+-<+4AwV4}Ka}!S#Pk|}AL*d>phQbJ``G$sbFuYxV`qhF zqw#?HWrB4lJbD1-e41z?tvtO`eLIn#Vem6de28hwE^Vmw-fh*pLwHBu4FBOw^*Q)E zbnbxQ<>Qg+>40AdwoiCAypJF2*qdPL4fWM4eOEqKlOKWJJlK9j{!`?G-%E+pEDCwJ z!v4rMBYU#&o%wbMR0Z?8*M+(J5xKO;)4 zdH6_Rr(fzsH);+4kU8Is50mj#$IBb4JUHJ^U3W0<%>GN?_4|K}-~U)i>bsxwUUq}v zBpBU99g=6s+}yW!&I>f}oS-w9b6CR*I2vCNpVF4|xf7^v0Ow>VmUduS5Ir(6YY$>B z_9*K`mTln9H2HgFn{5!fIhVj?7Ow$ItK*(S~wyM3+29`^;)IyPK!SIk*|+zEwzT#p80F&!si&Ojn-|mA&iKsUWc-^k^x*V84KZL7 zPxGb4d5+}t*{~7%Z4)orN}C;PavC1^?J0?B*%$Ddt@{mbe(SY?jqQ||e&O3I?R?Wg z?63AjXg+_1|D&EV{`-2~6KAP27*l!7QKFr-I{8|{)c+bV(s&qmi^iPbw8vZonG4y$0sLIyv@wM>M&KU6ui2S#CVOYbne3h3ne5e^$*wU6@R>gF z@@a|40h+(Qw!^d?Jd^!I(9j}ef6*(%!fMV+4IfPT00h4<>z%?c`S7jyq{Kh|Ft9P2 z2IDAY;^-JX;KKGflbSbkMjO6~r8c|~`YCh$6Qw5R_NdqUuP?`02eZ=rHrP!j)@bKE z$!o>tR-^k)fNmz@hsXbso7*7$S2!sB-!?I9#m@8CvAVM+hVLb_z6kc4aP&rS_Dpcp z;3u+6d;dFF54j8e(ZTwa{2*cU!mlW^fpdNYllU5RYGOt{BX+nR{)-NXUNju~wc0*K zSB($W{1iH;?@Ypz3Y}x|b4cIP8MES5f4vFa34Xl=9+^&a8k^0&VtcmRA3e)HxCox6 z{^@xvb*T?A=EX{zKVaT3b~g;Isr_^3LZ9#o$?@6WCJi1&wg1=Z!`FaiC8~&%VIEWX zs5&>(-=;LYZenihkxl;GHi%zSX8i%!8{W9C?|aW9$pl`rf<9&|7dUg;ewuL$0Jw&X?Rn<@vT0D?PlOXU4IviagLFm zk&nzvPJ{0oNz~;uto~$RW6z?ThHVezG<4zT(H;Tq6;S{0TJ7F3p?+&@gXz1eWAKU1 z@}+#jw_Qt40{@V$=Wy2AvpJ2z?UU)Rp;hlbfhO)g3>+a{BG23>5bxyNf8giu?T7%s zklEY8{$IwcJsqlZ0%^rA>bnr>kVzLiKOp_z@IC?#V#kze9qOcnJHKIkZR^X-X-!l0$KR4K4L=dIF>Y;6qwuK<`Uv8G zm`gjdaU1z{{gyiGjrd>cZ$}0SrsAD@^ZX>wgZRCK@`g8XwrawZA#RcU8uA5?BzXR{ z$6Qm#Z(pyRYoV4nxp&s4eB>L5u&Y-TRz#F}r3y+NRPW*2q{6Rdwqf7p> zd?yLdKl4?W*GcA|1`gF6;NpH8u0HArXTDr z#s^djes-{LA&CFxEXu{;n+5o9d^)p$v*=9mEtxoZ5IA-L`3AqZ-$AlKvAU9%!joV= z`Zsz|jCJ%&DJR*aKmYu$+-rQhnLXEL-%gGr-=o$qb-u7!O<|doGaBauu=YC*%6v+UpMs6+NvwG z$`@d-bYSz#PQUjOo%^*%^RgdLY+nA;T>b_$Z^x&Wz>l^tl-)lcX1!Ftw~x>-Lus-B zojhUJxNH8|{QdDMykj2jMTfWW*LAQLrs7e~NeL0NeIw&SE-7B|1$4~FxmHErx^!`B z&q^HL-#E>cA)Beo_lFy~#2TLH%g;0Pb%J{biR|&Gm=}%t?kgrV-#4>wygio=Z0=<| zt7q3p~hp zTW&GBRbn%B`D2U0JJ22bjW>!OCfo4_Z>;yt%s#(8)V1)8?Bfjqv)#?FHPIb!w)u@! z^Nu;WkNvH7#{A}A+Be<_j5jnbeZ0gDdE>o|@vfim?iVrh`;EJ1VdsKdoENDzfse60 zZe@JcKVtmIx=r$tlU_)=3Yw5UXF3a`5PPOGH~8>j?* z*0+PI(7%Fdc2SUL={Pz&&7T|TIkn7n2YP^Hf#$XsyXr6KyMlpYV7Ah?7p~uVPvKk_ zC;Tx8A41m}9VwCgcu=#SAB8TIANO?*tzWW^c}RR&=-x$HkdUd}*SePcr8|ZrNp4%W=Yo2hL7ZubQ6tA@3rG z^^93)d?m$B)hTBt#;W{xdd9fAlh6a3ixlGjnb9=|oz8)X&&eyW-9c+2kqQ8SZSQk4Jzz?+NZ{a!R-p zW-O9j$@BM0;ZBHri+tgZ*1Y}o?|VLBJj}1)Vck0^0dBP2ja}yBI=ImmV2pzEc<$AW zT&H*h%bbI21tRZgjaE3GIDhZvAi9U>sxZ~h5@##*=Fm^UbUSP73Gne5eAfNuPX-?)--MGn;N*7KW+{t*l&oywT)oflAK18BXD_gCGiCE} z7Gx`Z_=fcq>0Y;@M+mRKFwcd~LY}qWqqvC$q{~QKjN^mrcHX03!Qx%gMn9zA?~wM} z5I-?`8D{`===@LG>6+l_|8;IG!QJ4cbyUxo9Uq_A9Hzc4XGm`z?sS2(lKWS9x}NoY z=GgE8_LDz9ura`#DgHFYLzuH#hK+j%mRrfC5pL_bww`wBLy^r$|Xx>70x6HDzp$eS)%y@@8_n6;8=U4hQd}bK- zODX*>ah~JMd*63^H?YhPabE%Ok0P%G=MAhQ9u7P=;H%e~Y&>^>b12WBd+$e+_P@WC z@7Hi9VC_-Zrr=*OxM!u&1$}D^AZL4kKRV$`KjtiU0seYmS_tkb)^E#HDm1_A*Z6$4z~Epl7z^v6aZAi90MVs!KQ-#j&NxSn~;5<(HO9O{ur31x%xd_KXoP6i+lVbJK~4js4~AdxEc`DAe}4$f&Ve7yC4D^U8q$KpuJcpk2-jyYM@M@wJ{zBo?DhU-iygtg zhO&oxWw*qWt%?O0#k1&Iw6QnOeRgJ{a}hBu?Z^`0ZhS(Yt}1xeq8BzcCR-2Z8|hYU z^go~HLwBj8#FR5j}XRVn!ik*9?qlV`l;-_i)=&|UFfnz2oq>~mt-=_zL!JSfkGI4l-^prUGAloT0 zW=i5w>>2ID37}_6=H;MkK0scqz}Gc73ld%Px8&L61=vd^{FJW#(2KMIFOdxq%J1(R z2!GGh*O4*4jD^^G3@tQC|ji1xr#jLSfVlMTj@Hb z^sajLp$*3#*+C3vJ#w-j%^s;oRyLvk`#M__x_FSl++TraPdgYbdS-Za$xy`=!Y;vj;ekfiTdp}tj0}m@z_D|W%?nhb4s@NOJ%5zh6 z?(z$t4~sT0=IsAtmkn&JSd(l$ka88IMYrMsLE$fAgyo9C_9)k z;sJ+}R*ckM^hvP!tyd;U{&Aj;@G9S4<<+x>^dC%qffMucHLoG>&REIc_zw9ZiXFA} zEM@-`{J# zFL8cD+SSPmon@r=GBAMtN$;fXf8NJgWAsyf5}cyXCo6Nv|D1fmI~sJ?3uDk+_+|CK z(D2jS_+I0^h2H~dYZ1Sb_^s!6i5XLg^Hb6-rXQuwJkrmSRzJ7E!whVOx^)XS5#+Y! z=#R8}c5AZrccu>Z|MT5iQwRDz=?0T_;qvDn?;b8;c;@=QB*z?N>KWji&$l%^mwM0V z@H}^Ga?Aw=9&UZl|Cjn&{+t}s>wQ0&@5_1KYMwb4A01u%SMvT#`e^o*Jdo3n1HI{7 zr1zi&@otqn)+@Kxe9K+gyD-~R~ zLHj?MKr$Ht_agEnO}S-W7ZO6@0h+HrXmz?=<5paoXtb{=Dz;TC(+zpMSY9u&ocU>XZ6+Rw_k%xvP1m!48;Jt z=TijCnPb8`$>YvT6(hlZEpIL3uh4?dq|n;$mf_aYR^lR5&s_Kswm0XGo!yJQlRB5e zhDJ12#o&+Nyl9)X5AmsvOCxQ6V;xvJnRs~QU}P zH#iYVgJVSfrhK-27BTiAD2^=??s0fk{8FuZx$&{WCDEC`7DfGSo54kY?r5X!m%uzs z{w8qR&ku_?;yY==7AEG%kq)T&6n+G`)1w`o7d>ie@XjjszQBV%n3Ql{8rax0F)~GC z&L<{o+k{Y}h#1~DV~TlkGjYZgwy?W_^{cFx$5}&F`50rDZkSFZRioT7c2Fnw+**8T zYmGe@D`l_7z~)YTp2lC8i#>rhoJ^ z+q(em@9w;frjf+EfHO9IE@xh|e$Rfjb&M;VHmATf0o=0AX%u|2SXZq4mN*P(npj$+ zZ_Niz-}TZrk-pue1Dx-N{$$d5&K%O$nDlVx8q&gzo6K{*b0yERiQk#!#uc1Ox(=G$ z0G+w_;_lsCmpXf6Vz1?$kHR`l%L%}66)^|jy8jJwd?sP6V3T39nhz} zf2b`|;GRb-`K>c3M8`4je3a$r3b6yV9;LWpV(7VxPWxZ~fZPx*Hqo|ZZgSwj=EKZ5 zik#yZ$9^X5(rzWsDtm~@!xzZ+M|pW>PlJbxvw5$%65sOYEAHW26L{(SkgCATAm8VK zvzjv>XEkSGgR^-~3GavVJ_5b_?<3H=`+m4Hl=t)D=bhk`_G$PsF^6xez?F8dJ=&68 z3LWG)1NcVxxw}5?5D#VzeRuCS^FEAEG@trMP;dD@R?G67g6Z#9lUV@KJ!tE59#x-YMpzaY}p|_V`^!~hhZ!W%?8m)-Y1_nQ+$s$ z&Hnj!-8NJCw5fa7j889HUA20LKQP<7cH+q5=rq~h)e>hU{1+b--6$;{B0lpk%z>_$r*$J_^~N_w!zKDV!24?&W!Z(s%Q#xQ}SsST&|F?Mru( zJT2nS^~V%BcTirjKDYDxEWfw%yOA~)^Q*J57xLR}+T{E%(u%{De3Bn=9=|W~dlSE_ z`ITJKUh@UW$jAnFuep(%=1d9BYbCD2;=Rt_izvo|*zV%$)C4 zzsqS!Ic-lzc9MRx-@+wjD8VLqnohmVg5H! zk1yw`I}t~JKt?VN)5i7%gPTX+U#)fTrPHd9%RrWE??sF?f9Z|0u*>hmKf?Ho9pd+$ z@#ze!maX8q=w&QA-==jZHTRqoN*stxXU%nK5WkT>mZZj(cFto5F*NO7zd{B3R~}El zv=*m+eVEp-5%kL{R=@C3^F9p!SHDi6UnRuKscqRug00^-!8JS>y^20-&BV{Q>9a-t z_QT2Nn`qknM46vB?Pls0wfJPWu-=<(ogoJOt_RN}X>CVnTlv}Kd2|mWw^REF#BYqv zGVjet6_uR4uKh)Q@nROwb7gJ~3z2Ju>ofbUz^DXJH%vUu&MzcQ@z3eo;&wZTO zRdCYBmD7NA9k?R+7*a=^3NfCB59uw2`?k;iD-iU+O=mJKBT-jd+J?2l+zs{ zEj~1Ze4Dg*>2HWj>36ox8m)J@=fwyo&Y>OYIjy#g4cMi&+%qxN5BXV-r#`p0-psi*!@P3{3mx0T?VqzgcitDt)>FZK_Ei`hkEP+5@Y{kHpzE$g*Ik)f z(+v-6sG7u`3+UJBF`d$zg3obQ`1>a{Z-zdtLBy&c+jr4>cOyURu`9He76Z>SX`=&M zWOq7o74NFhrEDvdsIZ`kEZ+xMr^rS>5n!8*eq#H&v}++_zbE*z-tslSqJfu4Z&IH2 z)Vu3+EB&)6KLQ7T&pXll@AwVTFWu=V-#BaT&e87EuKQ?w8Gci?8+vRbpj@-|=@hOdV9bbX4F0};OW z<$z#(wwV*+shJbeq{ebK=?2nM`Mr|gv-p+1eFneR^DCJnS`r<7iGRuPb&r-p#MFi; zGm*0I@mtOBa(+Ynis$^0UzC8Nas0;kJ&xZ$@S6$G#>aCSpCDiM-%*rVM_T><4!`0H z8~W)VD~kMake zAByeU;O|$pk=q;Y8r)1>D;LK`s;-rF@sSPhQU1Nk6O7HFSS9&s;>TFTO$}_`O6=6; zb$ju*ck{;O`!s)c&%VtY?izyshC4UGL+$B|AZv&*{w7E~{IU3(WGD3Chd3Kww){E^ z*kAY-YcC5%Sl=YzQ>RX{YAyiIO7~(5?~OcI&bxWs;n4Bg@=}!#FC5Vme}8%Dc+0v% zcOD{tYJR!tC+lR32Xph5%*iQT5{%5~2}0W=Y4dKyukTE@+TaZ`u2uD^E`6)|{JJ`J zy62`GUyVI;#>vf{b53mTy_#5Y#+x`llo&%_)c-^1yY79!?pqr;^906J8>TfIZ6*UTI6vzhZ}OF7HclR;s8a|ZV}=v|*pZd+EH&JR_2 z`2{YcyzJ8uyubnn^T>;GMpL%-wm>(Q+BwKdO!vQIZ817Bd-*RY|LjQg-l10cefwJF z$(;P|5NExpj+4E9#t!qohqvYIA4-fLu&~>XRrj9EnLjhZm1@uLI}=>VrGF#2D`w7( z!JeE!=;t|o`g%AA`oM>F0rs0@aOhC#J;d!-rk_t^fBFzBahMOQLx5EpUdCuE42%i| zi?aT8)Z&j59zR`1n_mASd=ovgf7y1M__8A@hg@8BoRwHrJ*da`m-@Q9>oaxvLFSku z$lRK1j8D?&X{q==c+gAF4{Vf8FWI>DQs(AUVzGYAI);%?CC)eG#W~}mg*;cs8Rq&s+i{?(BwUsCpSFOR)km5t=de$ZTT&SXuLGcY=^vGV3tC%WJt^sjCFfJNP% z?~AwRc6U9pytLZN-8&aJgk?_xhw37$+!|yZ6=J_6^U~HSd}H3GGH>y{`_Eg57@}vv zp&L!V^PKa+n>8j~>cr?9`fyo@^W0P>!5wcOns+%)8}GC?Mm(sBbLbnc00ti?TWT1u zd%nnUXJuNMAZ2c+3~`e!b19=eKp(F=XWc5?+*SH zLlpI3eHVU1;aHS7_z_lqw}stl?2se47n?Z4=!eOgSEz3>a)i4Zjr^##f(=2tq(L~W zIf}q1{)k;sg1i!+K8P`kH#e9zN}TJxHf;Q}>GhAmo)JH_{!1I0bG5OOHiT1_cOD`0 zk%<0NYs2hmq|GZlIA7wyiE))xakkJ81xwDw-%LF^lVmIXQU7$Vh;*ORz5a=B_Y@BAdulEVcNN`usl6zTIv5 zjZW|L!uqtc`h&FfXX@3tiEr|&b;xr1eT*4fp7R=c-+Jj+NDGhtMww6P&z{KlSD_`v zGD%0+fIcIeOm^;GPvLEy>!sy_sLnZf;pUl zj)M=iW(@6J51-$LF2i|c-yC6EHNHO7f}R#(uhnXPt3zWO0+H&(1pNB=_K}r=Z!Q`X zy7@HDq^cWWofV334$T1TjJyx(dM4~I|3x17Vm%Sg2|RHPenUNv#KwritFA+z@p*I< zUKA(qh9P}wudao!iJ0jSXSv9(JK@0ziHR50Bqp6mJbq|KVl}aQCRR%}7`T~^ zm*UaV?_@)Yw~Md)_t^O3dx*R1(I=O#U|os%T>2SpNS|bW*y}Yh;p&w`chM``FEe`O zQtb1kMz4&bcU~KrGQMqKqx^5XYf~^r_OHxe88UEwf^*@7&o|(|834Zt!izuQj`}d? zki>7U?O~m^8yc^mFUOS!h zJ>`#GL%L3Te$eMTZoZN6aZd^B6ASUB*zlYgR;k(Z!oG)`Qco{(+KD>X<)B*f`VhxzpfsLc{$l9@^BIr=7NLSIW z&LdmSp1cU@~$aKBiQRPd@VoBowvdn@NiMa(%;w=R2*yoaHOSFNE9pE94a-%Z?& z$Add_a~d8c-Xp^K$o^Qj!HdP;p1;_IjdU651FJZr>foq<$LlT2#Djq`F6Gcz`4LH* z^QDyU*L4`_o%5bctq(}1Ti58Eh#Yg~tazB#`EF+ZW1ML;f;p^*2VL-0b@PlO?Bfy0 zEY@_jrhp!?cI@X95+Cqeyx@ccdimOI*yPye=B$Xb3$51rMWN>LoR!&BjGe@};9rgc zuK4w=8|U?)Z>M4x;YDrO(hb#vk(Yznw+O7Opg&)amEK;3&ZM&wwRcT(J-|ALxtiA7 z4*smzku0y_TXeUzfk&$o5%8Y5>bCIh2d=Ed1;C%>LtUc!1L)FPTBYL{It9l_mAHnQP?GIq? zZE#QgFwDLI?HBfSUw;mE&U@Y1!IPNJPUcek3FbogM=y2HC(Ra*5Wxp3UJ(U%`t;$U z4T)#jKZ30--cU<>f8_2gp1r-YoMQ!#&TMxfYbUakn)sW>Tojx;IWda$6ZE&WTCa`* zkL39Sxm#8DdARGPZg?y25;1(n@}J$z{G9@Q z$d_^h=@9sIk$L9KQr2~B?hj4c8!2>y3-hRu?@h+hXs zwcq95IydI@J>*-j+ecvG`ZehzJktW6?EeQAnlIg(VtpT&a7Lu``VhZ93`OIDUoCc% z_SZ;%Gw)8FOuUvWlft~KdxpJL$z(+%eW;{O@!TPl*Lp!Yd3E&fSkihQCM`erLHMXd z>lXKcf5Nlh=6$3WfC47_GN zI%oaMXC)T?=z_!=?66ox&zMH1%JAxf5NGvV24C`c!B_CcSh-apJkr@x+J`0@)O_YM z7mdWX*=h3GMm|T!_t#UE7fIt61_$65lKEP@>m>dqxDXo5pfmX-ljsie%k!>J4*-7F zsq~Yv7`cZXt+jsf6~*|OSbq4Z&N)(CpW-V*r&+DF3q#GF#F&g{?{x<{NBcCZMtHyX z>G%uafhF8E!+27(&Uo5nJ3{*nar$9v?>Tya(N(BNHh0xr_$@qY#vtpPz!dywyf25J zt4w>1Ra22izca=aO?!?qPnj@`5F?mP{=_PFbKdbp=pn7&7XAJR{0gPb4K$O8RkM!5 zdRXAt^MC<9M`X5WuxkRm*yyLZo_?CUi+&n|pQr1m0r;#9oh|}q3xJ=04to{lbY8CX z(_7F@bNO3k<<6=n)>8UuZ5?y$ox@(sK3)I3Tze6E3HoVlu~oB&6>1yJpUz=d{HFBN zD7?o%FZT-h%=ZH)p|y7AKUjVq^MeoXM0BEAjE{WZmfyy6RCuRyFP`U}Jw?3kRj$1+ zx=D~um3fZyzo|z&IOl4&%tp!#BHckfhG%%^Q&lmR9gKf?9k>nbdy%i;iSa!}fIqNL z;SsPm@tQvU$3_3AbIu>Qs@Rl`tbJ>pbI0ebmCUdb2e%GvT*%yM4P@gPefOX)WDYy| zZX0Fow7Ip(4_^ol1o~*i3V^StSuHOJCTX;zwk^tr)4mV$y>&qv95$xGithza#ijI; zw$i?{_|E2R00S5Fd7}@Y&(A=n%8x$+{cvJ#Rqw>Sb9?J2U=(yQ%w0>lE9BmJ}INCJ7 z4@aBQa5NloaWq`ND~<+eS2!B8`f#)z-WVETRrqqZUHEs|St&f7dGW4zdIQfX98AO0 znV0tA=}n|P98B%U4gSc*!5z$J1bo|`frHF(3J00vemEFA-;K`}4hr|=U%R!%#XZfp zfB&xVZsZBVyJ7wC&Vu)pLIasNW>2H{G6DMo`MC9B&LiTT%B1stJFQJy_(_bi>d?8G;WRo3LkEga zkk9odYzn=z1Frt0cg!bpKF`?*-+ve1&PLg&wEI4MHFK;{)-hiv-wNzXe_?bJ=>aR) zcN^!AI8gUoH2a{2Jo?lPti|W+>9cQR)zjyyT$j(+rsda?A7l*T>s4v_ludLHui*Mb z-1{K&2y0%``zSe?5~?V z7aoGyQZHXRmFmBfXTdNWOIGe-+R1ZnBQM9KhdYZ&pGCUb^9jtC9|0VTUr!7f^X>Tq z%wBpUU*R9)jeRL!z`4D_AG+sPbEZ+5kC!=?m6*vI;{`3bn5;wKhq&70ru zkN&Uio|L`ag-2Q~V>*%*A3@vFkE+I>mzeWE?%ffyCct}GtLs7*RZTdLbAny@q%#^< zz-NW)8hab`CwlO8irVwwkr}$dHu$A`ep!k0n&a*ljGmiC?>ezRUWO+3r$LK6pT2%$ z=BCs+kh%G9_#-;VqnvQz2s7vT&VD>EH~#5TXCKn;KKfzKUZnr3eCZkAatOL*tY zR?%+!Ec}R?7wHK9J|l6}W5mmIj*s#C3)hh0GvsfAf9g!EmKkP0bK4;7>YyjX>(R>s zfi&Mpz}?sB(?Xt*}&B?u+%b#Wq-i!sG#>G1g-1205W$=hN zaq^ZmnU}_Cq2}}Xt@_@X3E}P^?)30> zl2udB-8WTT(@g#*;VAc|5TseLe}ri_TP4jYE2+Any%UcQMvFFS9TGmSX5bq2@#Y@lyEo7TQJ*{U<+ z)V6fEQz$Ea?G97E)cJiF+!qnI7WDs%NZMkIv~Z zJml~U*dhZ3TdkWsi%u{2OJ@zDw>{U_OJCiN&Tum@S3d-+OE21aPe0fq1D~zx&xdUAgE>yoEpwcRgD0u6pdTz?EYd^5 zkN4LJ?!J^ep*`92PizAB+>YVSm!#hVZaTOBmXy!;mStV+d+XxeIloO-xMz6`cZ3sv zCvP70{FUElpGsEfJ`~Bb4|rDGsKHtM1foUXPq2mgA!dkjgPcE8PV_s3?}j~v&zL(q zG}pd<(nUE_2kQcBC|hB^D>3uDif7@=0VZ#l^8(K!OuEQAdprTGHKNAUjlyifJP@X-?I7WyE(GWUHj zuV;Dl`d%8WG^S^0Q}^**_n+qVnZ9|wJFSl|^PT$eZ+NNZ^;mCSUrlR6_3K_1e~jty z)H}g*um{h7P>;K}zSQ}GwC-F~{hyJ3o-}@ivG^6ne#zV)=)v_<+7dh~;m^xxr^xGr z&Ir-B@AIwJ^7-~AzP;&VzTHNCdO!57`tgNe3aqL=nU*-KImhtCFl!xE>&}Db3Y=5P z6W-d$`>Jj?Z!&p;bA)|hnY_9QJ6QgOaY0u;{$KqIHft+0>6hfA?_1c8Z(#^?>+);P z?w;A7U&q*&AX%8wr=U-C=$7}XFO-%aB0oggOdf8Lm(Ih7Fh=2U=%@X8_*QuMI0Nfp z&U|3~Ik3*e)gW-q9J!0x!Dx0y8IuCVm#yn5s*{2!pn+KOnzVcLd zIC=L$x0;*b250h|^XQBA)eCOZNKZ3;EOMrj*4}6zmn_qdBIh*nk0XBzGH^38T)clz zx17P7t>BGx!wHm={yc}eML$|c&V*l_b^ccNkjIFxhtDka^uV>;m+{S`+`BQTwv?C= zbV_u=39RkcMGG2o1B;9D%AQsN+Mv7jG9|&7rK|Tuh$$YbQAKC~!!B zKh(VA{7>Fh@y>7aJ^J5h-jzD*d3OTuRL9$-Cwu8Xlh)o${~PsD-${4#^EBp4_*Ff5 z8~I-FkX+M_2pR8v;{7Q7Ci-rd1LZ3qs30=Lq?Qw&dfyW+WZwClrOZN1Dl zJLmmAwf?O0xBFsia-B}r`IE_go0B(K3B@yO&no_`7S@!P>i&Th#O77o-)&&+^6Ox9 zP=nT9y4K`2L|I?3;)gc)vEW@3*i--UzRg>g3~BCIv|n@bHY>r#wU)?`yd}CHcn-X9 z0eD@{x^x8n;(7d6@vCWzcy89bzxmlA*zv?*A8{4?<3BmAdD9K7iDFwpGi}M_V8Z72 zNv$uUleEp?Z1@PaN-WKGh>@SveF?*?8sgiRD!#qV+us#OA2R#(jnB8pS%@D^dbQ%W zyUt;MAGW#;jJxRTTIM-^zT%>Jhwnd%Z*|dr=oRq%Hs~%+`7OMQvwmW;Z>Bg>m9VgR zhJ`|j<1fd~_x1!YLsmvk(VB|Rlb3Bj+zF$55liT-!p=RGvOVzWNE)w=z-!~^%TZvI zqz^uCj-rRLK0|DAVYl`WCiyOoA2UR|{7*!J@iF3II?we=&J2(9USo?~+kZby5Fe!O zl~5hgvzZTIqy0a@fm1!7c)l}oP8xjZM=sB`=vanN`F7opt(xnwIV*l_`rCFBHnrv1 zb@aF2`I}+%rbOD9!WLs-ZKq=bF}J{8a(K&v{hGtSXWu>Jm%J3LeLK7f7_^_lxnq>u zfqzBo%hT$JQN!j?-9D^TZ-_BQs6%BW3&Rt7DmO!avI{?u|1J&Y$h<@d8!Fp=Uh9PZ zaxaD-)QvmnYtyF9F!otyyi%Wk?rjr;5NFLuzCz)AXo#`1mnt@^gM5oIwC~gN%md(0 zojs)C1bF^K@On&*d}YMqX(H7t|{PGwthrHRttW}wfG_3^9AAuHB^No zQ{Dis;-h|_j7)+*`SB7v=ed0pZ5mpXf8NmF-q7D*Lw};fD0t`d9mTGSZ*AgF`-x-F z+wjek%sqNOE`ZZ*_2B6a<~|*N;;fd2!Cz*am!bce$C9@Q{Xwkjsjx)4mMN$*&pnGV0R3VB7fXg{Qqkc{5J@C&yB* zZKl<*4IC#1ZRwmJu}(=Gqj}HziR_gZ#0#Op1@J%Zd4KC*H-24lbo5z!Q@Sm9T5w+2 z#F^C+M`zBUC-$S3*r0e_Zo_o=XyC?Ud-fovXWK}tVHInX+S_t2?Q1Umy)8}b19_PK zJtn&r_=?72__lO*n$G-fdgr{vvAm0(+cT!=<d+dqc1LCvdlQw?gNERNsVoDm1r0fIqGm}SFoy=Wz@W_&rjh)_h za~hAdv-n}e$9kzNotH)VwvR`aItgf{2s#M@C&MF|N1sOqfmi#%;*q7!^~nF@k-@5S zm-ia4yU|3Ew2Y_Xn2*|J(4j zpJ&qe|4E-oT6EaK-I21_iB(&=4S7s^OVJ&^E}vhWDEupY0=NoSeg&=hxbo(Otf}Ql zZfcJ=_sY^gKNjH|?6!P(@@8P9_sr)zp~nX{Lf@$|8ro$oNb{#So5GoqDaHJX-)%u| z{G4&?ThaD;^mQ9LlXS4d$k*EU67Xa}!0N6dCh;)l&W+97t9x{b8=G0rI>TY!+IQK| zoT)jiea{Hw%!1dLweKp$7_s&}K0ur%`sqbxt+79DyMqsa5 zfdK1`d$6C4^-tmv%c|!O{`F(>gAYE#~VoYL<4CyDbUJw8x+?O`cD#?O`+7;a4pZexMlSgk3@R=gwS z_q)TyW9r;k$qmVU&G~!GeK@V}Vfr2#V72VH`jqBuaTjsy-;dD`GI>ylbw6LGrq=e5 zt6QEJ*x2||QgKP|2nXXYx_+}r4mA9t{ARlIXPC1};{?y73%*F&jrGqp`%Bc9zZsYe zcNFgyH|c=$6zTt}PcYs`DfhmqyU2Nnv}_{abQ5s8=`ydb<>YTSWrjKTlYWbQBZKf& z-pli`%#;7z$g|GS&>B_)>3hw01FeoVBWWfK|}A_GM|F?nZ}G%&hdk>!{;x>htGL^s4;=k5OLwYys^9=UrsE_A=f= z{tN7fnMZuK)?2^h(XtEadg}PpI_tFFCiswaD_=ICrzPxs z_$KF>Kiiuuzk`0B4cz1SD}$R>*2lWZ0J4yF7iaOQn%{R-L-6Hgdr zEZQ%R{+rq_KLpT8tcm?9ZOzF-?ncvaD4N5a za=>8=xSI}(@X&O*Tj2B{cgG@Y0+jW2RA24}fL$$oV+Z}8;*C-1cE%x}vJVg8yY5c9 z8@|N-Ifllbqs+UERrlz@Giq$cB|n2!T(#SrO**pR&6aUth*UrM@;{mV+vB7G_LI_cyrE8+T2bB&yp{p;)F z|9*_~8Gxy8hdn?aE1^}<=SgRyN%4Xg%ov9`3mD^Fz~R&LjBlxICiC^o z1ujirM!mA*RPQ6E{BUOu<#jjpY<_=X;Mu=_@1^&Txt9Ma)2CQK9hpAGeT6HuHJ!R0 zQ@5*&Zk5ahUdFb6EZM3v2E?1CM_otSAMZ`1g?HCqJ{rl}^U>F~($^3^l8(WrHg|zzx9ZM@b3%#SS2$N1 zIF6=&g}_p40DfJnXLMRUA$+DY@SmQ+IMVByLtO`&xe7S{fM@vfvSU2wr?TcR`x!hf zQ{QJ2-~TRcNO#g7zR;zwB$Hq7ocA*4ptFXSYjK7}z=>GLG&ETS4Vwnj-Z|cWOK4cM zwF!Q)bKYuWvrAvCm!8a-fWhY`B_3=Z*oZE$68n0k*)tUy(aFij7~$ zoEO0(w9fTB{82t}wYLL3WO**NdEx+K>h<(?6JtF^b-nVc_!4r*jh&k4kc5^KSn4A`Hx ze`?kI8o1Shd#We+{nHaqg2Une=^2CnWA=3mIqL`cC%rFvA-<%A){~JLYNNn8pZ<-w z@t|vCWmXM7yss-JjBR-2huC=3)w&|kFzof}L=N>$#`n~D_2A~{$WR-)>+A?|z9R&dmwY7wlY}m(zBWv0co0Ilq|>54l#hi+fIp&Y#tKtJWM=C3V4GLGn;mFmNWUOK9iTQS@Y5v z!t110XN*UC=p$))5yohdC!dt@2eO|g-DkDaJA*3X#knv~=rEi+1?;S}Jc~T}7#{NW zoKAor2v&cC$44^ox|Th)KAr~GPG|o=XV-%BBQK0s<`{o5{?Izt*4I3q2fbvDF?)uWIwz=oh!}CGl`Aruy=d{yrzNt6Ld<%Ee`Ar;O zQ3rfF2A>w+3&NKz__KR9PKopR*_@dNd<_k=e@Hxe9{m$fZlzBj)v$+r%*4bG9)$<< zykh342Fv5icM?md_L9JSJMZutmFfKFaIW2;a*KJd*#9o%X6GW#UaiY%Snv?*a-(}H zw<5o$pN)@+_W^hWQV{e+>MO;lJ6o z=%nUsZFJx#$y(Pa>{G^~v1wdqFsA!9B#nJF+~7Xv4KPm!g8v8c+zBk@JCRH|LV6GI z2-UiAbK=)=cxLce_9cV=Gx42itz;uS)2x>O$5E`GSb;t|w*t^Ddq3p=GWvB<$N(}Q1eLozLB%~ z&PEo0G3rG2gS$TC0DVf$34IFkU03d2=1zzb;wDvhdcD?hE}mDT>j*yrqo+U@CC>6D zqbHSxPVP?|`bPLv^`~S-6rD!vgs(xruC6=Wd4;s@S(mNfPP*Bo^PHDS`*(@HK>EM& zIN`YPdpL4lJSECHhxGiBZ};7~yLxT1^-=258R=nQ67+Ofqa#eTTEy2x$Jy?tZig4m z!QK-N98Me33**2@&pFh!8d)v8kem;3woe$oxd|8E%IuUl#te&JmF*(g~vSCE+9M_>vx=f$LY6VB6<}yWskdqh%!o9L;&!mKf7deCIi)+gkI(v|o|3+i$^~Sb>XK-e%d=hql*|c^ndzsIpjPNw? zcIFuU%+h)e=N^W^C)tYHBl<6Vl^=?Cjjab~gZ5X}CMu!dD9%_35I?81oq_%WWrRZI{ zs_`-&A1U{Li(}8c$KGMX-`S5y}zKI@2 zn(>x8Kjpit&G<^3d8Aty-%IDB*F=*B#;QZ*1>XX`d5SV&`t=WfMbnDo2%)PQezwo# zez+8YKW!XC>^kx$u&;FEJZB5~nE2WQ^tJBZ$tF)@J^Vpvo;lwL4n?UGS-#8O_`v?~ zI{4Ihk4FXJQJdgV<2@cV9v-y`9@PPlnv+vsD!#0{f~=v;XWCx%k;HU~fBC%2@@)?0 zMlq$>(`C5@@YGwa2KD{BUcV$~)i>z^7BbD3Sw_whpW*YcF21n_O-ktA>m!%Dyia_r zi*Li|1ev%VBMu|Q%NYMR@XK%-zY8ILSoQ_3STQ5G#jzyelO z+y@hd?+dSE4cvD!GSs#NUy=IX&9_(ao&1459;(klJEvh8x}bbVlH(nelmE@|AMZ~0 z0CsHP2ymNvY;aw^yv^WO;~UA=bl!Zk$G^}Sm)>K>U+BC=eb<;V#+ZvvUFvi#*|Yh6-gj}X zrs9=FlQw5uNY~`u>|8+zXUfs zw-3kcTx2(VPv1UGS;6rx>esVkNPT!q&WZM`t&#?vJ5>kWsZQ~I)oDQ!htZ!efPvap z%wH|8_^I3^@MYE9ciMoOZlCpI>~3`u(~)>4$&ci+qh*_ml5SKCd3qzAkY!_9Xh>llJ$} z2Z?zISpWWo{2+taCu4p6lXVNwYo+Hz*h8XwV|;(v+02j5Qjg<{%e1YpPYgFP+zF@RvR50elAX2byQjwivIqPvFjaP;V7`RxJDpndex`2dsVS zvIiC0D1N7yKWk5`)w(UztohQur*_tbR&gfK8=OgHu@*7x#_M{*)VCe@r(^)KxRo`b zY>1Oc)one{Zt+}<~ZDx-;uq1w^Mr$HL{6!;xuV^}U z^O&A(w5k608ryxC6Y5R2NJg4CHDXi56V;~t{+*MNY1@;noyQQ@0`7M5ogFZ1OlyN_ z`?G=vvvy6HKR~l81MK=_7W~9U4l0JBif?V`!1DHA+7|O+DV~S*V7|Z3`~CvTMX19s z7oiTf9KL$W&GO1krCgZ#_RB$!UOCQ9rd+L8E&(syjt=<= z4Yg3aIs*Z1Q(G-tCPL@?e4TsGLZlduvMw_RfK&&#=xwYo+20_%&_Y_Ys?jjM#TuS~Iuvk{@w6bNjZDYh%0~ z;zgEz<2qA4WLM5%j`8%zj9qyM^6v@0fi4R27rHRHWz4H13vXNAVs0HK{)gOHM#+rH+c-n!z>zD*qBoKu znUVT)zCOu(wPqx^=zMC?+@rMh8J-{Ef6A0qcn|X2WS%2lisxI*bG7$BJkK}Jqdn!P zemHGccuj@2s=ROU?DG9e{_6~uS+mIrxX_&~omcRAQ?ceJuq%aU@r(Rblk%{iX5L-slk(ZVjI(?z8Rwoz8;lR7w!Zy=({n%I|L$!%XJsVktjy`n zUP4|0{s{R-?`6+XUed_!RnSx8`A+>Be4AvE4daA(%7Mn*keqNOqmQG%&|Ko2TWDkB z%UA=_oRxoY8S4`+dKDXGec{ftlbrgs=)kq)Si&zIcZb&E;Th#(7Wg@hJ>|kvcCIcw zl{t+zCnQK6X6<}A=Yf}L|I{e24qHcODJhRI%es_*rV{rjk|*sl9=$82FVn|xuRAe3 z`YrTBzd7gQd?$iaX9D6C^KIYv21Y02moabcn-$%e zwKi-XQ>I)`Y!vfM&W+-$8E~7}&uQ=EteWZcshEwY#p&v#s4LX z8j-Dndy@Lu;b)Rh=AZSK3+0|{Mi=QUpcZmki(#mH_C}xMm@{8;w5M}%o!!NCZSuwfOFS!JBS;EW1BmQVw*dH*yie}JI3}q4PNa$ zg!uEPFC5UnY_J4$$y%=IyX7)6{zG(`fG*Acd-~24#Vj&KF^fzPvv8coF_KFYb#EH& zLw5_7O>oET{=U;Z|G4^GBjZWZ$B#Mh+tN>xezMUBcLWn_{U~P^5;v8N=#p<+4C55J zu$r545%O0JYjw!?9L$~BqKy>i$Uuh$-h&Qv=~=RO%T0{63%vfkg}UIfm_BsQ&9w{J zO9cL;Uz8g!8(ebx$D-RJo|MhJiSpv{C9zdX*@4dR(s5C8_1l&qv(x+`Yl5>q;>|lB z9I{&Xt2H1?T88&bQ;w-@g$CqFd?>aOa_J5FcS7@ZB-6+zEX8MO;G#6+XMhmnhR1?qCe^V;?o|Mth&9JbboAX&6Pl%cv(? z>$Vs^3uiDGnam#FMsPcq+&%5LJ0duTVR`5b2GOMheeJ;JQU8?z9SUaTM^{O9dwFGn_&mOa2QJ}R{5JvqTa9j;SEuLFyv-A zI_QjEhde~xlT?NuawR;O=Pbx?72T;tS$77%Z(iX}Eu95d0`X)+xvk z;a2BB-iJQ6Hpo|)Ptx4+Q)y(l)^R0Ucd>qc7qJn|^`V#Y?X%Cv4#Q7Ux%kb_Up#2_ zonY}%U~$P+iB_LR#(56#KFH9Ef4A`-)-BZLp{A_d>*4naJcoJOwx=Az9oM+C)voC9 zNX8)Bs+D+4*k-zg{9?g1{dB(l43po@9nR2t4xd%DEEVYz;s0A)sU)W6jkAFor z_w-Gh`Nr&JW&Kd^-X{iR%O&$1av)T$oM!1H)lVJaw5yE-u}l4qo!m1mA$jx@KZc%g z@PmJ%cwN-{A#*;AIe&>9%ze?|P0*h9noNWiwfFNuXZc!7gXae{DA-uIg<&SX5X`hj z(?#7x+-d7YKiRq#rp4bRB&Rk7<3&!zHfg+^O%FZXuJtDH_E-sAi5Aq~I^Lz}PqyIK zz|q2aiPkF&uKaT|*I^GNgL}1%&JOO?O5^uAu57Qt-AVa?#B1K9E_Vpji{2D#`8a<& z&?nkkDcK`f|Ch!DtR)`=8_iE+c?v&SH0Gr9Q#G!|jLYyjIi%uqo$sJ_9q{v2=yMj| zhvh&W-)OJDh4*gBOxpAPNdJEDd7>@KL=T+xIe@lY@<$u6g=H6=D7wO~7fq$Gaa5+? zifJW@=iA@OnA5(Vu{+!I(~5N@u^sLZ9cA`f`MGfZI1<4))K-GF9O&8jN5I47H#+Ig z3xL@N&F}eOe)1_@=6(lo6+b1g@2rgySv_ljZIWPqoFmiEHfkVG8anD{cPf_sf3=M! zAom&%!Zunnuz!dC=L~h48!H3b2%FLg^^LCW*vdM53foBQ&SAUkgVvl|=yP2(xOZTp; zuXdhwF23%C=!HH-%UVN}U14O2jWr-kWRo1Kco4EXj9cv=UxDmcf$XsR$E^%mjtmja z&j8<+XT>v@Wb*A#TN(-Ri0ZaM3-2)o*?r$)d^+=H3g7&Zaf)sQ7bAb+1?Bi^9?Pkx z^@m#OE#f{a@#u4=4fg-@?p(fAztSDo2C}1x`pAT)c(6{BJ*fXWjbfCMhx6^KZ@(39 zYyDL6u9#oa*m!?R72sp`*Tef8v=15hH2Lr$ZjQbOK4yQth0pt+CXSA5m5o^}BcEdI zvS}=?wbQ{O!0b9ut)7Is8uWIfZgNR=uka;60^i+>M+mFI<|ji(lny zfm6Xf&b|%XhQ3!jYI|Z)8!ha!=xd|ew4wXR)y~!}`SyR9Iga(-Cr|QTo;BY2%+KIG zSks8H&j*>)6u~yqnudHE<>#7xlbpk(_*1xk=I=%I(Q`AXuW>6M+t$^%h%$9_IMx2tyNE8|q{q=y>); zzCw&RY2q`B2E=D{hl0y^l^<(h%C|Z@I8F@C#^ZE0m)_rvkDxlWw0jTwsTj7I5Uex6 z+6~RaWgcnr7E1ZBDlZlHN)g`zC&X%W56viV6tNTOc!wO)>`LwZ^J6u=p;%4%L6`M5 zl7n5`xAJ!BV~QWct@Pf64r533Ov_x|SN1FH64vyNck5V(0-id%;(hu}?zHh7fBju! zNbbtFpMuQI;42$kht`&A&voiQM*B%<$HoPd(2WbdWTCZ~o9IY?+L;oYBzUry;eUWH zb3Ei6?A~wtx#ptD3f^~KqkMDrQa;6)kQ3&d>vhr9$}NdKB|B`4_ck%Rk9~%7{J@dE zbD&|hn|#cv*SjhAa2^-$M91mJ#8c!Vjvdlk#~9xpduFTr6Su`tE>VFd#m7!0(Xp5~ zlBH880zW}3UpNH20y+`=JJ&^6j=8LvxS8qbcHQ zT8nI8{_3-ZK2sr@PchFP@{Jt&w69d;L81{4red60qe$&`$72XTjX%YHeM6678 zWUpOB+(~1TeH?pyAY7cgDGT88DlvD}6>by2MdR6oeQV*MF$u35u}5v0a4XpS4jYvE zxl|Q-!^odBeyEk{F5l$jZ-B#wSM&AD$jhvYo!C4PevH$%@~TdNuH<(+#F6{SaqR9n zi-xS;=HqL!o9LOA4#@)g$)#BjIPo}V%5vJBpFFWy?O|IPpG@svN!y7UKfhOf$ZxGX zi&&|2;Heko>aO&4L(qr!)D_5G`mk$T>Lckm_=1DI5n7Mod+BHKQ2Yy*;H@rDMEJ zJb%VKmwT`C?C0&4dmDKEi76lJ{jyMA;cWws(px{JOmO=&b*wymf;~;C-{xzcxt8;x zfWOuzWb57vO=MW-orrAeI^Vnz%iE^rufT96MuP0am~>C zbnyOl%99~D7##3j$#aV-FO?G+#5*?-@7%zdGJd?%nb6#U?=zKnXNvY^lZrkxUg+A- zMkg^Q}A7oVenZlp_r=K8&YaL{#U_z{78eFc>!KD z9^Y4~^gc_O?xv96atY7MPm#_2_I-oNqaEpO!8WU>{O$YBXq7$n9rJ#$_x2rwThCSb z9cQ%q@kY)^rtFhJneriR-p)+Qlm|j`3uR-x1i!<2_awz`kS|I0#fcv*eTY`xCeKGY zatmV?4Qyj<8rMxhTgTAW56$yvZ!*sx4vR7`Mm^uR7-Qfvj^CnJfA1r962G6rj{g$= z)*8kTjhdKf!C$g5(ZleOULp>)9N)=5m-gmDJnD&Az8$RZ!*u*<#wwd>@(Zk8A5h&d zE}D88dm26P6n#t2PJoWG^UIojn{kYn$7cNO{~-5()ne*w`dp&*2mJ3T;wkxK;v4yZ zf~B?T7Ew>I(|D#Dm=Q05_jV}O0q?2Z6tcFM$71kACwf`3ZX5NdeT8RYHQV?`IwZ|H zrrzzo)G3rJ-#m?drSj~hzTc<%&S_4&+W7eYL|5x~roorpiSPUJC=JhMo>Yu&u=g~+ z#BI#)U0^92y^81XyySBUzCUL!I&Vks>|9kYpCv(=@GYMp%^HK`w9&!jRmYq@eI5hu zDP(73NGGSzZFixI*C5A?eDq`D8)V0aV_{PQT>CUR*t?Z+`>|g3;q&}ZAVW3pMt*DF zk1@7iArsS2=BHX2r!lWFcmdAX>9>QIZPv^Z6rOcU<-p`rZr|T-c6M>`F`6dG66nkXTL!GHf`g&3G6wK%PHUqZV@#xw57GUbI z_kANaL;~AIFqRH0wjX3WyvN*>YkB|K*sXi=H5Xmqe}0Nl`s=KfUe$f<>7|bL(w2fp zF)Th|;9TK-gmIooKYu&UKY!Z5$H((}@%iP%niUrbVj}AmceXK+r=_!qdxZNF&lUIO zs4r_Dz}LzZxMel;4}4Pislsb^j&JX_T;$aM7F)LJbI>aExCz@AJz?zJ46sU5W`C#k zyGY-~P7ls0#^00-c>|c0#o#k!=x*f4to!ZR+*RHw=k5hZqYU4i&-vW6UC=GGol7Us zo7g7S7MG7E->s89smahdl8i%lD;ob28s}Xu6}ES#`}Y=P#Q!I-zVC7u4f0k#WCJ#h zy{__gqvEq?=l^<%#VF5fOYv(=d-IvLlUK3!)F4K;qReA(0F2SP{A z8RV2l7}u@7UUDK%E_SQ*5@+30??B+JdOBlN=e_NMW~`o<9Ippn%4bU#@n?ed_pc(W zfXP%VYXm>yuwnh{G0S&f9+&+^V)6+Pvpe^p8z80+@@3Rjzi1@_QQp zWye{$r1D~!BwewWF^)!tSs&+R=2A=D4V+sd9i=$CX!2BWE}BFKPfqC*jEIe&L`79Js(p@UZY*L3{cweAqJ1m#UJ!JA=C7)jhN;IAylx+cL=4HRxg+ zXCQyBJ`>`d47{@kns6(Cf4?{b=j8*7pFC*e3}Y6IiLEtphWmyyhfthh-2P5Mhr}E| z&Y-(4BL_Ps&QN>le->wWH0V=thPh>06B_E(P4wdo)g%2lLql0)MC)$=`FYUm$lZPrU&=8^NcM1Hf1KQas+uVdvNRcKM(G4NgSQ zF?_N{;2O@!?j%o0b&|p}b<#z=nIf++^L(Ns@fl}I=BY$Sa)xiqG^xJk(9mbgBu(5U zGTGQO$Y9~Og|mQu39f&^dY{&?!*pYPhEja3F^QfYz|PUQq_f4d=4>a~YwV#A?Zs15 zP2O)MvS-nC{cWLP^ea93Mb1V_kEmX$JzvRyj+~e9HJ~H;^`cF|RJ))p=O zp7^KmRl^y%;t7>)43){>IGQ#jn}1Dtjy?_VQ19pb*4X_$JU&0Yq%!y^YQ7;B#qV#L z=fU3dJa01J;~$9s9vs~IEPmj&2hV7Y&69o^>h%P3eBF$Z@gR4fLT5RhZL%A9DA)3L24sI(q}SE5}?oQ5%ay|KR0n>Tk!U*oIAR<*H<;m2=k5xRQEmPyMWc z#^#6m@#*+rL&x)IcTEu;UljUQd{EDC#Vf2YES-9`V1PX>Su9$PI`95d>nj@Xw)6IH zmF#nFJvXT2Li{@=mWu0 zu+ki>8RJomQ82SGJiKVkA7#Auo$8I}y^&49x~^^m#y9%Tj!U?R6!lxny*B#J@0)X3=vO)A>bK_{_P8)t%~Ngs zGvJ}W;Oj~jX4qd_@JD6y|2}X0QSB>Jzp_cxr-jjG^Zih>Hl7AAlJ$+yt?C#%E3m<3 zXSu|`PJ}PgtmB7esMe{i{M5NirF^o_2v5+b=+e@t#;}yR%eJ|fe0R-HzU7Jh&N4^o zulpF&7CqxL+4YSWd!Du-bM|mA@-}3SvG9XipWeYD9PEzqX$ zraY?We$Zzh$Sx3#o(+9jn?Zh$%B}67_t(JR(tTD}7`le1-lkl1kYvnuypp+T{J?Fi z2Ddh^!4_V1MyrFp4zD$d1}*J9Bv3uP9jG}vMg)t$;g6=SfjBUcR`1y&w4-S`nLy#@EX{SohGk{^{|?OHlxn< zxBW$sEw;aLL4Qlhsh&qp^`;k`X05j<*E&m|%C83g9ls^7$kGuw=#X8~$$Hg`&^EU7{Yji`+IKIv}te*Y-!TEOOp9-$x=PKEv@NM48rO=#Q?CD}S zE(pP~x+33R!FSR-g5MjAZGs(Bpz~|Tpj()?uX{No4Ed&*x#n~OxkX`mtKeI$$^4Ue z@P)uj@4A7tX!ae-E~ZQ}TkTz;aR;=XAV)sq`?l)Rm02FK z<4N`#kI$>^jHl54-}CK1rTr}SlI>%bVm`pu{b3&*#fzU8eU`A%g^%qM`)u?au~dB@ z`1e~}E0}}jt$SY1w;yR>G}!y7 zU;&N1T*R9VC2(xNuY#`R1L!Q26GO700KW#lw8vkuvizzct$FgZ=Ce1a@9Y59Nf!=k{rHIJ$~xAB z6>rFrdl*O8UB?mO&_+Fy*H zQUAh?4V)v-dIWb#G%RW85xmI%Y~wtFSHDkNf@f!M-oR7uRJInFT|$14eA4AS&u5Z&gDJ;ypyA~jku>BP1qN051n%bByUScBZ4HAwX* zd8qZq>3m=A=-%TQy$$FEx2(?=!!OJwIL}*k;+(U;lDt*HyJ5)0Ar?`3TcPTTp z_#5tj3TU)0UDF(Q2bnlV8@fdF_7d-2f=;(WzggA;q|>^#M4DwQagRas>^q{XQ_-Gj zVHhf3Z#>`5pW(xu_~zsn`Tab4@zBC~|2M5wz5@6=8T_5Bee66h=6SKo!|i>X-^h>k zE7Fkx@8_La<+<1(;WbFR2Yq7B#xpy@R zU2BiG@}@Rpk0-EUWMe@l6zJJpJU)Z$sH?O7&pA*7}?T!W75b2$(987hnRiO zfoxHpj9^}iY!S@$PWd#%F4mtM$QH@<`}wV0=&*cAjR?z^(Sdv!-A}%Vx5M%UnfHG? z_a9j%`J!|G8v^;VRA+zjycGG8=0E3l4>RcH1BOxFI>b@Vx@AZJ#rT}hce zfBkm<*__L+a@&q_hlDTtcN04HVP^#LroGkJE~&$tb*8w^itzLOqbA>9Hk53be12%_ z)>Zqp>RhGyfy@z&@51+z{o=A_u6)NddjTH+H-hIN?fGNA$lrGbi*3jb-34aggMVmj zgxDm**E8Wm!Rg$Yd+wP>-4uU5Ur%aoypelbSF^5+>=3_N+3DLR{`oauMIYaY3{7xO zUFDt&&DlxE9O2sz3q!WUx-x9|@z9g89njtI_hM{^9JU#Xw(Uh?8{Ad%s@hq~KGn*v zT#|c-y{fW7UZ2-zgD9tyG1gyh+9@~fETWwre1Ci%&W~_j{Tz9cf=MTPE>2D+T60^- z**OJYdN^_so8T_!q#gTBd+}w@II?|M15AjdmCFvojY5Cc_?cjGYH2*qg_k77rL zR||1G%F@tJDm3mC;}-6V@ovV0{gy79yGig(0x!XMJa{|jQ2bM1Ejmo?$hTQo+jbl9 zo4Vl%>7@ODho4Vb;SCmVQ+_h=7CnisL>pVMJ(f_8{kUHCqw;1}@Vp|h9~*95Wb{S4 zpL{QEKc=GwFOMB)?Z?hZzI=ZZ`QACvw;!KJ zzPpEUZWr=B#s9&`_rv+iJA?b|M`9(C@mtFVO@09Tu@?Qkg}6y(uroz@JLAjBeEShv z9t=OahdS++XN!4S{2b=v!+?wBaG%R_?4X&wifyqTG+Q{> z!k8XB)8Fru+>>uJ`hc7_jq4`h{4h4>c%5yAy{YfZozt;5XZF?}?Atw-eq!*3%idJg zc_5dcG8`Q(K3TM6QIC8;Z2tB0FZ0hf>5sp~27gXJ`@byE&t?7eb4IonbP=}y|4;Zs z|GMaB;jb3oP4>U=ml*BiFUkLX;V;b?EdE|ap9)Sf?EjO&-@3BVKK`KFy8|4gUeC8_ z&C%i^UC_-ljh+tUp%y$So)N>pxB6M_?^{RD>}`PVktKzAJhH^x=`tNWG@zro_toHG z@shJy%12`G`BKc;%rdTc{Iio8Xk`+nhLIzn;yM()Ei}b_k#Fex++R~`eyTlzG zc(_Kg4!mc`bMC@sxjq4nk^ih%RTsMTYTh~IWX7nc+$QLg^_Nj5R`Nvco_jhOgKPl1 z*Q=9p5Kn6R&BlDY?2TT0FYOnXZLyo@Hz<=$a7)1^xMl6Fl*JkMYy8(b{5#b9&FlGg z#g~jdfDYV>ZuI>R&KH;%_5F|e(dH9wi>`J#D^q-w+j3T`&g~Se(z|`zMlv+1b7bJ5 z-_q_gw0RnH6u#t_$Q~oU{x0}^ZO5fq)?~JI;-OM*J`Z9E>d zk)@4Aw4t#-O4*7M?VU;)Ja95H?Brk54$q5uUi=IH*_5B`*D>WaJPTI;Ans&s9sLi- zWh#-WvT=lO`BT8NLpBb&$mDDS(~cXE{TX~A$K=XZdg)L2I#aM;HCpQtzMmubr>a>e z3hVQ-k=?9o)H|&CjKhpyqE9Exh%%NN}~50 z=?gxbY-z8Nz9Ot~UGy<>cE6tJi0$W0`OReQ@y32&ZAbc8`k$O#?kp~?{|%2IR}Ehy zQ`ZH#it0zQVFme$D-OA!H_JMz<{F-7lKpaP2C=>iY#jIF&E?3z%gGmy#1b9T4|1+< zAy+U0ZHX6L#;>{U;EXC4`$1zgeIk362ikZh_6qIGhO~Vo1xwDi(7xn99E)889GNqF z-9~oHuanNzeqrS$UQqkEDednbu)Q~dor@Gy4-cRZ6@ zeB)cSt&6INQHQ=s1U8bTl^DN~dxiKJa!=<|^_}G?IjHjo0(zlO#kbltr;W$5jzvGa zp)CwLb_P zK80*Q1%Awo?U|;1Ham&u0Jm3N^^Xs+oqTxVQ+O3lX{#_s+RA0nvbVXthMpE!irY9=mth>-#rQN% z^?v~|E6qXwU#Gt1cl4Oy_d4gOW}P>$bJZ{4yDHMgBPLj3fT1c9zn{$X}eBo5fm8aXZtUvE5E(|8_2=o%e~m`~ll%4Q+fm zh#|HRL!9=dMC!KYSi%eom4v0lMPWwsFD6;ppZ{x>l zA4mdwAxUgQ?In(4?)VB({I2Qc%erIfy53iaO+CO^>w+;pz!=2~6Bzq-i{d@eq4?^f zh>bA640-$hm`8cL=qGucKjtJckSiFUe|Bz_@!886gYF!)HctxQs?>N#(2g6@X>JHc zDP&Cg@4ju2iekT;wFB_!}AfwKJB>vSiip3e}AEV zp$o+=r}2$w`&4LCboxHB^&-lNhczi4Ci!DzR1nW>B%W#3*@^2sfUglV>*1y2VK$!m z0JtFTX4bLDBA(f_uXv_>z8JW&c5DpXy4dKzwO>5*QsSAr7{`6IrTfB_&(I%#HyHdW zpP>(brSImB1?!C#e=R{gx)^_1@);D5F2-M+^6^?@q%VuVTI8C=Uy`*UgFpU<@z;Qy zksj#6E_4`!;+eWPRx#=Oi92@@r^An%B7LL0hVf-p-L=YVfPRw!E;7H$x2*`_13Rf+ zuu^IMb{>y4WceANVl27<=od(?>Y2Ifpew zmvLzQQ2C|f;n~RV^YtxXbrrAdr;ntEs&6M3j{3##8mWIU?=Ik-jah#3+@>J0Hl z(fRIwoYi^-<2aK3Z9MUR>Bro25ybMIC01aL(}^4IyAEbx1X_E*!UZ0q8_FXLUq z*WB5Pix#(A%eUXBU7cxYV~)a+jX7@dpH0kBXF|kj=NtUD??1(};FjTgV-p$sD4Y*Q zJdB*Ma85@Vayz_^x*2~}Jkbz$>Zc+HlIWA2T5H#u);azH~Fm?1Iv|@RPtw`sqdf%O20L@AD$;JBKyUvQy7BdEQnBB^{^Za^!q?oqRcZ zYdQKsF-z(G*i3()iR`-u?dN07P`N@5XSzK%yTj*_D-V(+B;XI)j-k3iEIo^VAvW?od2A#vaSX=+0QkuZl6w!d!y0 z?jqbXbjpF;%Y;3VpzaiOyX`MQecF~SScqxUUO|r0UM>cFE(YGa@XdPX$Oo$QK8oy8 zuD%~b8Wr3}Q0a9+6N>4|ekm1GQyzbcx!8HgZi=C|Hh~+>(U!ZEr)F@RM)ADYkq;L`uigc2 zG?wQFJ5MGRTMfe;Sjb-G-FwPuYxt(qp|PZj#`3LC3>=GFVl1`V*D%4KPmFKE_V4~B z=Hmb-*>&OhG|)ySz+w7$-G4 zY3kWri_GwTIaJ$`>&U?M_)6=Iuar2fIexP{`|8_+i4 zx@+dWS>$^}sJkeXW06;WrgE$BWvqX69nX?u8#z}NyX;lX;pfOx$+|dew32mJuBqOI zzst8-xweV=*W=GvSU5f8>jDSm!X$_niZ-JB*EqDUA~_)$@jmVA_rc^qevY~p7J`qx zkLOrqo@gRW3z-Vv|BT;abay}aOa?X@yVlwCT{=WVN&F!3ko12l)MiTbO`JlyAq#x{ zyn~TmH}!1UHrh);pXssi5xhSdcog{mcjTGD&p%~8^TE4vRwY~IpWn!DzE>k{f;sAgBIv@4duLT>MXVwL+3htuy)Z6*C*}w~(hz&j?lxH?0lxK#`M-J=l z!~C_C2h2VwhqZ-#A2%c`U1X(8-nMMMi1N+$^LgVDBYS9%M0zM1D&r}=)N*5^e(S5Tg$?FjnB;9KYEBcCT! zOP)kIGjv9827MHH44ui^(j@qCozB!Jb`pmV%a94{oKf8lzhjH8?}2}s=i-;?yINuu zarA`F(|0PXYiiKjitXq;{VC{@B)p+~&-+hdUHBkps>UN-pC;E+vi}9(S;N|VF@2+F z+IFz+a1(R54q6oM$_;!*d&dXxQCr9ItUaW%+m7OSInPJ(|4vgj#ygDX{mpYIS-RE0MmfW**@tq5PhWv8T1n0@ z`2~_`qS@7ar}_UKzecoTXwmK~k_ww9c&OXEieIoETbDbW=6Lfhr6OK#e+5*Xj8E6H+FJ{ZJQC~hIEwLET`U}AUC|je>S<{ zinW6SFYYRq!u~(@;WJ{ z)2?ZQy-c!$buYE#i)c>!`yOSjLUcDT#7i^4>CODscyzw^_?x1uAD}(0DKz5q*McLv zrl2_~u59a8Quo==?}PaLa`0^@`lk5XCxUlbw_9%0-aqF)J zbzEYCs?$i_YUZap5#*Z2_Z{jO+VFF8*X#ZS2R(ZXGT;p6Y2xd__qBX4_=Nk=UDmSw z8zg&qXZ!vv<#x0E72ArX1V1iAtcS+}?>9V<-%x`SQhv4BsI?D(? z_HD|jiN7y%A|~fAo*2@sc&lKTL{3VE>TGoRtSNH%TKHb;xN+(O$JsYP1DW^pQ&n#( z^%U2!e|wiaYxYgqyqpwu#zTLKeJLkdYYO$yo6CAdB!ji@Avck;y3qZ~(Vy##?v5zlh;6eQA5S_Z4xAi(yxm22UF{C;y4oFe$Eg2j zu+yT)U6M;U{rAx)@Qu^NO4Wb-xeIdh@blDf-C6t*&rd)T8rOBmRq3m@(EF+@y{fS$ z55ShCzQ)!-eoL|J%^-U_8E>Y@C;g!Nv6j<5cKU+N?BSk&^trj}E1l*}#-C*D*N-Xk zPn~M+#j5b;f0TP@Z}R=qByxTvHoLWtlTmCTsVn5vkT|5s>zJm;3ft?~ckgY;lcY?CU;O-yEICG9Jwn_tIm93H( z-rrWa78?s&#q3SF8r>BmFDVnURYWiM5c8@y#Lts1hGmR7Xs(jS*_-|S<2nn`!N=4b z@t?8fE4(QAlk$UPd*&u4q}Q5K{26~KeOPnDN_Y05-|+XFXg+(FyyWwc^rOxBp*@E+ zui`PJ@Cm|g{{@~9U2Mf34wsuVE+~JK@-Y5m@8;{3Tc~lq!8^sYB!9(IR)09$LlEeX z4e>yKaCUh?e>gm+&@a*-UC02K4B*~iG$-#>NOaD zZIt&7`n{KZal6ok6R9s8te{M?>?QhR&s;k)(cIOI9Bi_BV;!`iwP3+}?~9->}{OXckgow zzLKn!t^QToz8@K;v+z2}w@HQKJSp1KUEd||k*h16$CRY}b!f2|?wN$4*+L9SZA)Hu zz>|vik3m*;a%RLc_<++{@A~hvo%(AToAQzr*U_8P*0K#dn>11hM<0`9B3ce~7UKHpEy*9XH}q&Y1DzSxMlAPu3y0 z|CVuQLiCaWuP!mwb^LyXU>`u3d_J`YZnFQshxXS)#Wa zIVCvm0r$d>{OCsJsyVxSx05x8@#X$Lhwoy4WNBOSrWb!`ykh;>3w!uov)W(FUjm&x z%imcMr?Q21rUS1S@QO^~%tzq06+64mDf@X#dD(qeV0-EA2D{f%{i$!;A9s`2H!^qV z*2MC#y*li^ip%W2iXwkCg&(SQlH#_`p2*mlr)?|C{A^oug0{ARtEKqhwf{sm09(x~ z705E+k&8`n+EgYO$7cEPJ%{-VzFGXV@yL?shDIO8wj#JzF*eO1Ya{-Lgb^1;G zwZu3*-o-<6j)&%aaWGEeBLz7@d_?>3q?ekML+gx48m_MU*tuIzWxi|p1Xz^12i=EUF<&A;0yIny`Vsk8TPKK{%5HlU9j*Z z(Y0t=wB5kn_JwZ}a|+)ixD!m@XdMAwSacfymGAO-WUugcC%=WeJv@hL;Zw-`2HrW$ zWy_EutuJ6BS=w=kf2P6LmLX>ra%$7U7yFvT18VoL*>+@q)6keqSB+X`fo>x5#=j?RA}R?OUcu&J$_lD?4q(q4JVESGgL z$yn8U1f8IA$?!Dm8IoNm5evEqzOGj69{kAGh+|)jNu2>7Rd>&|`9K$Gsd1)5B4 z^l9?D;rB!P_#*Wi|GoV4I5PQEY*s6iQvp4TUN`XG&)2B*zK`yed~Enr-pI!bi{ztV zToM-K)(Xy|#qGc}$sNOz_ku$MbGA5XV9vGJmTw52$OBs*QA`AXUU|OAkwQ6gMCUNI ziC%P{yJ)5z`)?$ksH(L_hI^Mq3^hJ)7sC`ulV6C-oF&cAkAwgzkgRR!1>G4L#~yFxpwFTojbSG?fyVGoFoyT|{VvbanZnnuRqkwyvjpX`7nO6T zch@t{O_Zge!vuUCr_9<^Iy>LmR9X5N$DG5q1@vxg3v72|TQp)@oD2U+KS&2=xT`^O zeH1$I8u~~eS4Xd@>sx2gx&S&!`yJJ`=AwA7=JI0j`$xg=mxABV2ETvCZ)XVfSC2f} zucyYDBc6S?rU71Xo}e6iWKiJ$&BD))2L9iSz~|F`+L;x^^0`;$dHlgzd_TeCLf~Ox z)x?-ZcmG454+PI^d48V0MLYNK?C>nTsX2u8=21T)*O5BXPv62XG&UP$+bI(~#QVyN z7Jocc;Exq+AEyjlbO`RU3mwLuLib5dL(zy(LvzjUKcE=hSQ{?4$jE8Giq349LWz1aV0;Gg} zkCFeA2>U&0Qo%$*_+s%S@NmS)9a1@6VlVk5AlBzA^*pf|5H}p{mUZ% zXC3~JcR04-KKvinK>scO=UMhEh5esVcliF#rO@SC{%VT+pH9}X`~07B{Gams4uv1B z4a*upTd~jbfAN2k`|y8;#XsEt>G}}=C&L;01^?%hg5lWi+e-L9g7GW(Jc68BsC@YuoC{?A9?`Ia4E-*0chi69_dHA7$jDXVGsS*SI^_3!;RIhk%kRmszrKXu zvmU=^eX-xuIoYYVyd^zi{GKg`H@DozIi)KG`aS>pdT@vI#6G|0(B3}3Cq{fc?Dvo} zRnqT4&hFFiiR&GsmcNg;H z+`#Vx0e@d>kyy^QbHAQmm{|mpR0Y9Xa z-y(nJL;V(Te#`Rz|NWLaU?#rGPWWKH68ywdo1lB^w^%y(30~`F>=K?4zmXeU%rb?BDTQ zdeDRNTXylk*l&4{GST0kOq;|#bUrmS)~#}UmoHN;UVclzvHkp5P`S5--|`Q3!P_6o zL;pA5#n`U$UCyB&jp3zW4Aysff!|@@Wz+5MY>PL^Zuu?`1-{EB#%X<*%0cwcX8OGC*NfkbaXZSqTkkseU}XD zw$^u1+nUR&U@or(zwZcsZw!8~41Vi;0w?fY5`pjH;JZWu-z5c~{yV-);`RQ%%hSNa z!pizCU#3s%yDZ@OSM*)VU-@pj&tGXEzd*96kuv!!f`R-Mt%1m2d9dKGEML2xvedun zuk566$x-<$i6Vbx2k)%^Ay_(J^YsW)eoB&e;vJQL0^33~OP*7~UpYA_OTUtzsvJFy zM>cdPXMp^f-yh_^h}KiciC-M=w_8Vj@#F0we?|EwVSmMad7!_N;k;k#ujuSw>#xLk z7N722@>t=VPOUj>jmECeY$k6k1CMSYj>ma}x%|?DTW1mjaEWz}CkN~u+26zp+0*D< zhmWMauewWO5IV>H*1MgQ#X|AXm_vLNes@^w(V0&v);Bim+(!9XG@9Gl%W2^5)GCmN#dYmlIPS=UoMzrz6gk+&%c~!P-;;SV|7{-bW0A@gzd! z36(R34bWe&_5#C0ZfLBo#=6L9yOBBYT`qZTPtAS7ToVg>Y83y>f*)wA;J-psx%BnS zk6g11bSwM#N#q4*faEgdm6J1<`v_~8>Ho(5<6Cpqm`k1m_*ux_p@p+&Yo>KMP;P_CW(1Mn5%5y2=kLwowhc>4AX+KN5XGfnWYK09@C zv2QSE#v~cFl{^Z`$5aP2DE=~ek|Vp5pZ597%rB!2 zKbzwAp819B5r8JvkXzIPPA^(-=&s{law{e4LnyZY2kzv*^&D8y`e}E_>IijpPNIdciD^@R4|PP#m%fBdDsHb8m@g2G z_s#M0vfAFuD=z4b&qr>3n=?C@hr^zX2IjQcml>SLdpdaHe66dT+@ymNy^Vt-1I|iO zJWhJ&edNy$#{2%I+DACX>t+1p_q;Zazg@5I*UH&BO*;E{7c{B0y^9}r+B=tVf8bT3 zg=lwUn`B0H_x|*eCXb_%`vcuTM+k0i)aj_^9IH~cf8qgngK;}6&S>pi%egtw@pAsl z*VTP-$sj-B^~asIKf*i3@Nrt4wzqEPJe3g5Wh9qr=Ph8GT__%jbSI&0llQQty!ov; z@KV_jFMnP|>tB}+S*>+i$(pz35O;n8It=k6ZRJvTQO3H4a3ox;Q=E)F1=vddxhmiz zduAfHqN299b|LdE!eM5P)3%X&J4K5+Co9Y|CYSj~{dq?8sk14cI({#FC!CTy%Xc^6 zQ>W8C(~8?qJZ*VroHr`qo!Acc7V+I4qZ=x{Rmdpi{CUS z%3qY+3&Ax>d4@bB{Bh&^Sy_;dA`6b@{!DVsT>f-EjFULBS@}7#Yd--WNlwI&WBTvV zW(vKM)iZe@G2x56tDVd%3+y^+KNjj&?_KP_QhQ!vl$X*)T9?!Pxh30TjW9d6^gD<3 zs#5XEG(NQGrBr)Kd~e;$QR-br-?1iC>YalRojt$wJ6CN&+oirsvNvD8X)Hvu$hDk9 zc`4l+i_;eJp%|v=n7>9=ygnuz?OpO4vqq+Uh7XWe*kx#Ow6~7ux6E_IyPs#}JBjD- z<=M|6igq>raJ@Cxdxu$H8r}dsooGhKaRq>ft(UNi}cEU$G z4@o=}<{$Bv?t&`h*hAZ4amjyi! zemb%TayB4xK;<(=K-YmT*Sk&hCtBWw&XSys9Hez%?!Qg&w;R2L{L$WtS;sQY-JF$8 z9p$A;H|oAQ**n)Thf8{(6W%%CMe$qJv$80*!OvGrl<}_J&#Oy-%VfK7Hpcriw%num zLXFrNnN_~7@*XEY2sCK1L>Rwp`}Bk4c{BELd?Opt*j3Q-yV$&`NApue z%d@~&xV_2WHD|G}jL=>J8!#JcFVW(+H&pGRbDw2AzcV~C%KHJ&-wybtjc0#dF5*4O zv(^vA&)?(uH^K9FdA4T*KFYIjuR0I&teDG($%gx=r!xWd%^IFxH_v0eyLjGf?yRcz z?&Mkbo28$wiSBpU*`u3XF1 zLY)n$Jo_PD*LhB^^A+x!21n*S@;!A8dOW0;T*(sRrb+tP%s1-Ox&KUfWt?}@BIFcp zt6hEXTr$uO$`D)4gxbr{9(hh}@@tKqi+#vGsiwMMuWt4#hjaV5XZ!}_$5YrW&{r38 zxBS6)I^II2i02ij88Ft%$iqgi%6{x&yxOO*=PGO@#<~4yr#-Sf(K?;nn_AY;#6 z{~NHMq3O}=UqaV($d|Hxp>I00r>T^#beWgV923v^{#}(fpE=1c6im$iW^#fJtl+)Op!`RHMxw78M*;xLap5mR4LMvZ0bT`hIr`#2} z6PwD&Q|^aM1@!qAx@GHuBU-x_uoj{Bz+&rx=kPm`Yo?C$L$O}Ck@7vznq;ZsW|EUe zrqZvKsgkcBW`8X(Z9EII^zppzkKzB%Il+t(71No5NxWUMjao)qU zl`zlff1W>S`Wfe~;WdF?4cBP z=tj3spGr39TZ==%ssNWc;Mw4-+7ta~9-q^gp&iZT?`AHQ-o=z@oxh-S{|)*Ot%Ys$ zYT%t*#ilImJPu+0Kbf5b}jIYBTo&Sk*{;{GiTy!r!H4MsZ;%h>+sWg+jXdu#v@ynejpwILopIi@$tHJxvU{8E zeIovJX`gIqhfjB$H@qLbE;VgboBMDjJC#F}{7t^S2Rh6_<9XmLo{KR)Gq<5LILbjj zKCz)!oqF-*Kj~j}GL&1{DqZ8=>a?8?JQmiRj*aBUGcM%!CgL>P!L@Vj-g`FVyUaxw zXg@wWelqP|J<~bg#6#okA9l`hrZ~VhqIeg5rGA3G<{QNsV#s`K!0ydAkSmAY%5K62 zL}z7JhV%$JOEij3er-43#fX_Y=~cS($AKVzDm;1YV=jojA<+}w##}OpK(O}^~qz110d6$;J@Mz<3q8a za>X7N0uy2nS=LP48`(Fr1R6c((!$-->NAOrlmG_XY4d-!}0!V5qTa z?N@t*pXIy@jp1?nb=NynQz3ntf+u1rd_HX0p7WfX@1sS%JC8(HyqB-pfi4#BU(nbm z8;gAnqbtD0JBFUCz2$uC^yX{S=KBlIZoP|dt;~{aQa^%&WPs$WNu{nD<*6RBWN$K%NeLcQ`anGRs<{8AV=a)CHxq8Uz*gekF-YY-TdbGK#aESLZ zb!OAIVrfZyO6AbU_%FYs9Gg;W29wR$Mt0lywZj=C1{R!^IG3{=1cRf=+w$QuvUw8c zQmo({iY*7RkC3|pmOIPWUVwd&6V8CuvA~JD9?cnTbBb8GHjjMfo3=J(8&{FF5sYo?v{ST;%k=JlK|*`S#msbE27Vg}0LDcg*uR z?^d3_A3Wd0^KPE4E-Ix%te%!Gw=`1CSQX1P_Jh$8$aG@4f4XsqIYW0<(5Bkc_a8(P z8$4i@9uDFe`F1GfAS;Glv>OI;pK0k7D7W0!#mQSd5chcTa#x9)}EA!8Q zjMeAccTz|2-VPs0S1bo_o8hNe33=c7cVg|deLZb&mOOyRVj&q7Lq;WuQEXl~y!9c| z7iY>-U+Yn-ukvqGUaXgj=V|%pE@M~1o39Tu_R^lYXW;iX z0K+EviointnQX5l>y}!}F1FWXe`pOm%Y8wqlbxy7&X%ne!PXMIqe%B*4k>Do%)Ic+0(^(OA`JWJ)HRj_E8f4k$$wlW4^sq;28%!m|UX$8aiKt zTpIdT9@xZ1=WG3Ia-4a@o#@XuzgXVf#hM509E@(cvvEX({m}SxONmh+#}_OfvfAX) z1J{d=+I!FMmN8cBb<3NkpKH*U*bvSUvOl?(;d$0lfx&cauu0fllURpqWX(svlUFsjmzabG(Ge?|SJ`R#_r?gFF4a^hcs4ZL+eW0-O-cHJOvzmMV1(H6Nm zUb=;x=%R7Nd^q&$-x-4Kgxr#?sr9s$b$&cY@v_7^v-hcE6gZ3rI8=->4PGq{)8Moi zwhm|A2!9r5+gCDga3$PrVZ6dwW+`jc;3{HpH_H3hB7eP3ywE*)?>$?XhsKo*%^?Xa z)9k$(ckjTprR0+X;gliPESuLsmbXd%{fzQ z&cw4cXJ~eVXm%23%h~zcxfkYLVdq`tr9<<6oO$m#ATnT|Yr2p*Gon-aGg+A?Ns8>vTsWQeV+NaHT zw&(lkZScT0Rksw(<$GATx0FXr{7`;tg8mc_|4->H{o5jXyW_*@ZC(iO=UIAV48`;o z`$(Ov)RnK}P`8FL z7#TuYIzLc`IPb&HAsS3UgYu6qU>~>gnx5*Bo{f4(9EPvOT?5unYhT8_6TrjjYsvMn z&enQPgYJ{&{EsKe`8+a+C5TTS=ePK9|Dddu-)Hh%tdn*II%%rW_2njx_q1X=@ULR- zih()ALZmM$zLLnDe?`8H@!Z)UorvDGdU}+Jp^f#vqi?aF-Shl!M)S?Zv)E_KH^11e zu@3QWW-P7f54nJWDHD7v0bo=gEF0U-J#dWbNb4$QF%V{uT0bgJKBI%uA7- z)!wtLpPM}JoAT`!qED^9wec(2k?$HEKE%6{zJF-u8u2dYc`5Kydj&mNU!U7{mCuJU zV)`x2TQrZ3-eB+FXuKXAqYp&)G1eqR_fH|G!g4kl!nb5lDkKY2$imoJPMhwhl-;r& z97A`nWzdb1vs=%@uQIZAkhdMUJOW&V3(42FJ_TODP4kg^iGP2xRbzXZI9hT0?&-)F ztyxh2n~D#83VNlDq{>5M$wilFa$Q8yIJg0N(Jk#-0NQf70(cKJ0(5=Oxrxz;EJy zHczvQd$YQ@H>&~oranrJRj9ut{q=y)1oZY-@>-=U(+vhb9cvCmP6sv+@CjmRGCFUae zbKP=3PPPl4>cu{jPc1pF@Aa)>WR*r9j`HdlulD4G*RubFJt+StE&m1@bKqHLTE5>p zcBw=CUUS!ux zO09cMRm=oEWOE7Hn1k`Hki(Ztt}+(YQG1Huf(@>#|v?+CL71nydOX>wim@6w-|X|WnwAfCE3lfPv_g!hj70Wm>5a9=SU)l<}mI{<|kUM{Lb;Lz6i-+ z2N|3`*WcgYi~VvG<15w&@+C*W7Zx^_E_NTZ^m-(=uD$om6rIFiA%{Vr=EvWsPFvMy$9;t0IaNvsh5ymLE! za*Aw~WWMx(1p{W!2H{#Qe8F)v%UlU79oRXiC zCLdnw3$bPYYI`ft9g^v*7$^O|_9tw2trI40!LEX?k>ds113BISyw^LNN3T6mg3)%) zXW5N>>|y@-1=zf|&^G&<Q2P0sWVaBl4f7yH2_AI;jK z)=usGl2gBo_@A*;zu0G|y2J?^v9IpptSRX!`3hk_Ar-P=QffP78noJ?jGs{`ubY~5KN18EDpuWy;%-(_xNWPh3Mp^8;bZ87| z#?XU3>r}`NA9GD3=UqtFTuol4&go~pcR^)r*%H`1Fwihk+yj=$yaNq(06JNC6m2cc`~qxb=JfqfRm55Shs^)Scq9g5Mx z@LMpZ2HD+==^VzCWgO_;1lQR8tK&%__k%B>);u0iAB{6!1z2F4R{$_wW&YCPv- zUkfkFSxQ}G;zxbD5csD)159O$YAqf*I1jid=M2naN`KmE<4*f#-7~oh`Vx*7$UX#S z%5C}?YXaJnvV-5+YpJ}xA5-=X^BnOydEOkzJn@Uw5$))OUGTeX4Ds1TM&^z4+NpmM z{I?4@IPha-h!;ig;zfPCm2bt9X9wSXhwr#kh5oC&hj_l2=P2*zBIDG~o#@2K9}}$( zI4EO0VOjPVzE~j3)=S^SIeS1hTp-KV%Z_{TAkIz?)*!7cI|2JREXyPlBu^yAv^Q_< z5x)PPIbonLl(>Pjh@f5BVJ9PNwRUEGCx^RDRc^|_jp)ferLRnOVCKZW-?0<1Nft&| zyR|*jk|91zg6CvH_gjwh-T)4pfoWJ4N>^GrXl2-Sfjr#I9KtsJyF2>JQGKhr#or5; z;qU&!cji7>aI%sysQ+TQYVaAfAAYCu-=JTLvC(_Sa)v*>S{O^zA{6{V3^5;3wN}1ixkb-2xpM zc^uG89dp;2#+E)j>?YC2>46R!8Q4O_difDEM|^bR6W2ngrcLsh*q89GXwmYFJ!4HU z+!^30Y**c`{sOzIIe@3tv(mAGt@uXmiI>85rFcpD>UzG@{e59N*~z!k`4%_UW|3WR z?{>juwD&S&-_O9P%=1a#gY#20Z`+2oNu)1*8;ZOxY_R;wVXbyO z_I$=-V8NNof`iV^)c$Aj@UOvv{Jt*WtKZJ;eZHT3h-Cq-SvXmkYwTwSu(4y&JC#ob zKQnkIUrRoL#wa++NBbJKaP9wN?akxks_Os$Gn2L{i?ooWNf*sb7j_kB+EPI~NlPur z+6IwDI%(PbfFhef%g5dn1O(9pf`x*gPFd6$MXMxg)X#?rAj+m;6-4c1X+h!ww56G} zWq!}sx%W(Nr$N4-&*S$;9&>ZN;)Kz6(9L+zYLACA_}rdQo_tq=aX(2f`dKztm~X`!(sfS9iS`F_cJmX` zd*obfB41B9es?N1ENwcxZ6Y_%@xnIvAj~t;4;qVfp^Fo!AJO~WQ}(ia@EYGZds1;g z`GOjke`XgsvCvvE!y~|(8_VzPyfQI!7-eNVt53(<>QC@!eCnq=fXTrtI&b@$xA-Z_ z9iH{Qle41S1!sDwuD+Fw9ZX-M|7hqh*?0UUdT0#&%sYZZV{>o_27Rybe~&)Ha;4aX zWYgit!6<&SV*n3T$hg{Q<=c7CGuB*~<=_@yyb{=<>R`U zj?}H1@60U8w0Kfbi3@l6L`Ls=k4?%8*8)myO|@Q_k7;T7n_IfbMK|& z{$lHl&K$%0y?7_uI$fc0+=aQt<*aLN(7NW)=NzA(0UTtL zrT>E7CoZ-j9^8)+=e*s>;j**HPa^k1w$$J{@=$?Iev@q4oyA#hBcwQQSN@mQU34zH`b}cHsNbXSEp&)4{k|(Q z&v3rh)SU(S(C=$^iq=jZMEg7A(9Y7bG7}|!sI`YIa^{8XKKLr1tK__QYhSVkb*stO zVPksiBa)4o8!h{10{3wEXUZq}-u-W)rsGt2G8P@2lcmkv?Y=#frA_a4*+UaD&ydU2 z3Z8|x?eK(nUt^N}FCF>o>!NLM@$BB~PF1~Uf-jC;GNJa}{H69&5z~GoeS2F9d&q<2 z;FqEA#nb9T@O&S5-r-rkuFmZiOzJNN?p*sZ^ih)a1JQMGs{GCB%)9)GR`QiaV{`LK z`IkP74gsgEU$?8Qw2ds~CbYg|lrK`AuzpbwawFffIU3|Efa@4CF5mcnyM7#lMlobc zXWTnq$gSOLoxudT3w9md{WHT0gfhff6G&)e7_b04z4i2v2T;FV7ZKihlG(PiDvCN}iDIkt1n z3`?`h%rSiPIi8)|DR!axN;XxktrN){MIEgl$WL|kBy*}K8I^p>)_d}8@j=AGG9!Rx zjcsFeCeHuT+ogI&--q?gFKinVGF8-nG^ii$Q#!}_oDbQ$ejIAApuZgW7)ej1ZCyV; z^&T--=|t7lyfwuC`&oTBA+w$5{q6IV%vPQ&0zLUQ&j<1Bc;N4$euM|74;^eb(x0#U znHP~e>3_`=&tliQc}+V0U2wVtommRA^jZ~T-40%_pe?=M#{a^F`jV`#pgc_DWt4^e zo=c#!=HX9Re_&!J%NUO1xt2W$`kPLk&<*Ud-nDZ0eoMtEwC`W%spu?~!X4#loxS$h zf&Lwry65{C?)$!Pnt#V-BF{nLj&`7_`!;bac)b`?%MusLq9@Ve!{;;1GmWoM?-%oYS${$KZ$TVK@}3NRpVapy zdQ5BJ=#}m>!HaUSbVuS~neIre$h^c{Alq;EI})*@<|1#*Pg)aw1>XT3Q`BAbnJ53P zor5owzg8@#?|kgjd-}sU*7uV1{a5g=m~L{RX+N61en$7lBu-#>_~Ae#m_!6 zP*|h&^)tc6T=q9={iBxqM9f0s{){;u;9xytMyD0`3zL79@50a4`IdexZTLQv-dbX7 z!JU`2W8de_%LOOfHKnUcVr=m#y7Q7dMToH-bP0QCfX54Ppt}&9ZWkU5IaqfpcQHhp z6mX`X?b(cH<-CRH=E(zHoLl)z>a9H}*pCpRZDIu4(q0kYw3qkT7kvh}-3CpE&h}}l z`Q4`}HUhYmj0o;g(|ww52kt*X(?p1-^p(#Yy{F#g?tu0+pB#bCoC}Z(!IA@(9Aofq zB)=5j?heM342>O}bS4?Q9W$}|t9XAW{Rux`35{7e%7(tn>bp=sw3AQHCeH=l;asBD zvhSUwH6+G2A+v4V*z~MR{rq9cuiJM7f8?7PyKH5()o6L!&#O>-DdJ%s<=N1F$)wSm zZ)K)~wTM_Sza}S|MxB4Hv#(>&#_F8Vy_GZeH!ahcW7y}_t+{41IM=bz`C9Z1B7tIL_qv06SM!WIoHY&IJ=~m+*Wp&!zArru#GzOgiuGEM!Y}NXl23 z&$I5A>~Z(M?{hle~@fslJ)ukh{Zmj?BhrjlKU}v~%}Ko(d0%C(Yjr?Oy~3S{v0} zl3wxt@cBcr@crTRu>*fi@kpRA#HA7m3c+}#KH zEPcn}ZP}mebXFJt$F8}0a6368tH`0zcRFW#J^W_xSgNU+Jx958@PY1wd>DNbL&kKb zLCr^4Yn)(aNhd0&D2Lx6xIRU^vYJ?IHl%ORKio+m-BFeC&j6^(Y(T%>&lvRmLp=YF zeXh=Ac+T=Xo^fj4Jj#|&%sfDO!amnz*7NL_S7rW-=htlc@coc?Q`Vq|osr@S4SU zQ(4o^-eT$6Tx3|!dJ*YVaK7AhE@hk=V>$HH`d9c4%$e}YdcH5!i(mbce_!n{EzTy; zcU9&j+BuW|t&a8MvfYZy3I<~m`7fY1{z7}wAq~{k8u$h9!4v3V2?YkoLah{)`ybCyWPNew#I^OAj+3OnTfz;9csNaAe zB*Wyh9(n}t#QU>|5&XfnTalSUy%VXYIc+Mq*PPZfO?Q2;Uza(}`(k;U=CjkNb2>Pd z%$4$}VSm5yA$wME3yu_hsca5yZlgWrwCIk5N5J=t6n7@%{CgArM7zS*T;A)RMbTez z6txriy0`e7w1cjii>{ihxq@eVzvJ^ftInzXDpxn|aaI@lKiB8q)8)?z3v5|}GXI{( z=s=D;AAzl7DRn)b1*2eda0)N3y+^2H26k^xWl7FnRt!VuBG#7CCU?`=a}m`h&*AYb zw0QRUrHfo8>g~ZV;+4NbhYas#Ft>hAU`2CAKlKGfidi!`;ZT35Bz4l>E7L5sJ3?!T06n`cESSi zBG`^W{&tfG@6gtIXwwOA$VQN@Po~&=TzWeG>Wmu@_#ZomzCvORG=KKeT{7 z0rXwB+_yVwMH}u(+JgUk!-^{go6ygXL`T^>5UyBx#h~K174uE|RXUd_MZoPYMMAt^5^KPIa-6ncKlh$p3IG4 zPo_fpJr!jRJJb3{8=QZ%ZF#hH`}KR_A5F+;{vGy@oGm>eGwQRxEiE1RM{H^OE!ySu znfJ(Pz8kwT8!FGLFTRU0hh~HO`LJ8^Nqaxv#LO(lq&)Q+c(ew+Xl}xmjyaz>CfwZk}ZtS0Kx0kvA@$xjH1v;u~;Q{2rX`;TtM0!9?@?7G!wnb;)pb=3eq5 zd>PjL-+p{p<&Sf2mSP;5TSxSV>wQ^ue!XPXBW8=+*hyXl%NaUtns-4FKIcbz|6liBjEz0#Lm zT;A3MTw#A08OZklo7O>OFH{nb0k+-SByKY$5rp zvJEr`SzUu4rnyLZUh|Q3z2>3Yx(kiiV;i1ezS{&%iuM?Gh~gH#jA{D$#Q%R+m^1W; zMd@p>H6-hECSnJ@R|n_+_;5tf5O(Cn0Xv{bq1uBjbI(7i5QZ< z4l~KF!zc&*6R&emjPS6_Ut<9G`PeS4F;rw8rj5haU}tS0F0+BS%!UWan+n@l2Z9@CXZ1i6otcAu zgAcu62>Le)7qRgRhO(@s5o=nk_+;N5W73D>cgs%oxF6c`1M_L$9ShSl!1II5spRlk zoLXF(pMC8n5Jhl_1X1L=0SXRh%O^)sJ&{{Eiss5M6=6#W|Kh(?0y(+$d9b z7IBV8qLXZ#LoxRn=$ZU(p*<1MB}r@}7m96o#n?tgrjK?X$43%f67LPu#qvHhQ6Ib0 zWdU@VKh(qd<)w7VR{L~WO>AR;^WImiTrv1bV5q6)Od{I90{QAf?>b#jV7?hCj!{2( zIF9iU^dF96R1U<%5A4y>-j`LOIEL&B>5o{IAIH%8qV$LEigx;AGdeK)VZ|{tuW=t3 zaSXw=FMRpp2zhBa{1UB2%8z_~f*+$ejqymotz?e$;}VsbYj|F4b!T75uCB!oh2MyVDVFt`3UcS#rrAzChfQ)mVbM%FrEFxUnfv5 zeicr8uSj$%J}TJ8Q$8_x{t(ZCM>zN%I7nF>+_d()lx?K!z@ndjA zbG>2=?0v&dxDdNkyt6BSqnGj9+yi1_$}i{z5B^;qJ|6x>c^v$0U@YRPI@;Vqd(uhw z(?)5GVF!H+M~X3Qqn_r&@3RJn&Yz3UpL;#;B}+4ji|EV?%CDvTTAfGeVh?Zm&o=h( z51u3RALX~1U&SaS^U{OGIK(DDZeV$VyWdvfizFy3#v#zB#W)1d8i(L_W4R1C)TY|A zF^8_*+f!MVdn{agNuFJMhG&ge<8))z-j_|tY>pT}EEGqTU76Tcu(Bzf>Z~#gbCAOk zBi13@C#Jp z+xsM@k&CcAH@5XaVh2woYFiciAU4wSU}8cmagmlA3~?;>+H`Qvnc^U`d48EQ(6+%( zeA}|z+oyFdWm>ya>_mQy)+n@AR(QQUoqug?dh?pS)BQ`?SGJs7?hDBak*zU~JFoXM zZx0e*QJnl6*eS}($}+#K+nYRS=AKWq=uXmTrk_~$5NosFn}SV1j7>3Z&M1GojJVA+ z+=)GS3UL8o*bZFy8QnT3Rlarme)6@VnY;N;-ze`QGNnE*Uz+^#=cY0j{*yUL>-lzn zATeOIdkH?V8&kM#-LufopYXS|Y~n!fBb*zB-5wA8zz>>y)e$kn1uk zvtn;@w2#_l>6)90AAp`Ot&2a$9bi=hTd~hp>}QmZf7y9upXEIKGl$l*wy|}8&LoLe zS^MqEqqMKyT!u^^+8_Na`#H}X>Z)MQ=6l(9SI!=OKZ-U+(MAvNul#EHAqE>~WLy4O z8&6tyfO$J*pv469b`SgTV$AtDavXh{)MSqNb3@wEWyePDh6l&`#?faz_K9%0FZbjK zhwbp5=$)%IjsIZnLv@oM4%%mZ^k~}G`Db&mwYOv69fJ()z%G~x9rs6`3^_u=JG^c8 zePQdhERXHiI+{I?T7R3442sXO|FkaGvYGj^!A!C1aOc<9xLOOoLyO_=N%;>=_jrr@ z@MXcn0sjsUI#aZYc~m%#Z7t01;k&7{6K?CdpdFoWDIVsWTg$`ivGa6S&35KV@y>K? ztp54n5Wds7SeH^?JiHuVLp&*bHvRqNy!dhvd}-ht;ZwXS+zX!%ZL_{q_Y;h56JxaB z^+kL?3Y{AP56?A4+q^-1sXIQM-m!5}TKI3IuOxAsNF%&iot>S;->*H^yd5Qv=M8MM zaq1{8D;%80T7$-|HG-3QK9*nMOtLJzJ&3I+d9I>7 zF1qiW|AO}V$F4K?u-^ZZ)Q6A(Vvgd$UjqKM3H^9Uj>2 zew&P?o3_Nq6Zw@q%w_zw+1P;SZ2nbftQ}>3QV(AqL|=wE?xCQ*<9q4M`JuAC^c>RJ zvi%&Lww6^sZD|Eh-ATRvabwc^tKHs0M?YtsJ3TMn*oX4e>xFi;r+Vf5pUwI8+&u6A z@5~X*f6T{`1ZPF_t1)PuS~@?++9)!hm|C~;H~PxXPhjulwhe zq2u#S#1QoUd&ua~wBJPDY}`Ax^MD)0uZ~H1u2XkAusX4JTS7l}; zkMcSfK}+S*WLYmv-m>rz&B^!%vuuC(NX$ES-ZD0?z;ufD8a`y|?0bA%_ddZKz#P_j zH2A4mbzDCADX;TL+E!kS@Xi(qV?Pd(7`ccY+A>Qs!w!ZD##^$5?MQa zl-VOT=iv*mNXgG zdg}D6wW3bwc>y%f8R#KBRu^;`V@-1S9#uZmM2`Ylc^i?*@8H%qXozU0*U!@?UnY94-a7i)atYt3mU#@RmL=)UvH+XUAZ zo;&!h_zrD_a0>0Ltmi^yIhBEDVywlOj6sf5tgVc6KT8sQDw=$U_T}R~1TOUd-S+>Q zOq&0d`>Q$cyF9;XpQ|$W^Q>HJ(egE0Hq5KXVx!x={cjdJR`Jf+-`4K-rnXv}oApR* zb0?>^%GMrwELvQTB=^hO)#A0|?l9@4&M78cgH6$h6|lGvSphSWC+y z%NwH=1I^5@Ca}ektIn;^?r_??mUc95jkWTb(`-A>&h=ruBD6L-uZ(rgBe5AQjQ-l_ z^^8?`nol0vE5LCKa7sSZzmo@KRxw9x&MGStR`y*k7-x`6HqH|dgLm0KPR6Z#$3EKH z1P^0(JU{P(@;1q+z0TS8<=(mIIjInE&j2$UG23XS?rW=xgT-Vs|b65V*DV&_$*7oW8X6@yjI7{<+u_ zGDp@M8;8gd+inI9=PNY>M|=i48(4d1CpshKn@?rW4)%pTSGozf>!7*rD=&pVhCh{} zE%UA)=Sk64YMbWis?2{&_WliCbI>*NF;l1ZwO{%^)&c2Zk;9Z#~2a zH$wmK%jf3T+8IGE+HUq0`Dp8i(byJ@OUWxeh@x{2fg1QMmvVT+Q^t<{Joj@x<{P0K+LuoSyr5OBXL^qD9#rq{+^m? z8q1;Q!Ti-m%8T*$O~knkva`8t%%OeQ*N+l^e}g%76LIc7;!@cEHZQHVZ1jMQzr%As zgpa)=?L4 z%=E1plkNwmMfiY<(?a~pEa5dTBB)la!;)0gXA82b`QCqQRI_7*WD!d zBdxnN6JwFwYu&9Gzrd}##fXVN0-q%K9ckT7crn1BbvNyC*1Fr9tc{5V335>-7d2r% zVIKTZKx@`&+fN1uKE3A;WkYK<$>Lf~Wu~9F_?ZE%@r$&EW@T4vdsfy;WOtNZLz_QT zFP&H-w@K~{uykgv=4te>;JY5Vtr5MbyNvT5rK7Lr{~ULPDc17c{TWZNZm|j8-(_K* zboouh(Y+v!{!{eOf#|I#&{f*M;@>$nh1kl3O#gC!jrzLJN88Nae!gHIzUwsg!Mez% z$z#*Eh5G1U^Xc^FPbc#7zqLO|IPN9ZzX>^<9Ppsv=q1*_QEea((z(~sMh|$`+JSVg z)_cR>_pd3ZU6bECXv6iRcF2jXF0c-8P;njLrnResao$`U=gn(Zs4Oz+@`H=@ZeIKM zpx)Pu^}fDVXHTndtq=6G5BVSDrS-GNU+V+JzB!*LF_$@H?xoZ#U4K}{dvwxVbkbbq zy;ApD>Rx*u&(ir_#HV?GE$^?@{a0>n;4Hp#>jA>uu9g2?^mpaw9*#V1t1xzd$YcAO zj!NX$BVHciZYtu?8_qMIY+aT(rIYnE&7qf>-+gXqJ$5AX_-QvJOzR!5EE`;w7}u$F zuvK3*=~eK_Yw)H1zYYHt+oAI+%ABo}iki;VYTsbnB|g-en2xTX?t)8B&M#badj7b& zv-1rLmgbN8Le$zad?&l5IL{=b*i_gK+bR^d^6j}@D<8AIr24!IoR0Kv>RqZI$wbhv z31SqAr^j{_I{jKG$5n8Q(+m`Rc^@J$ya2^PvjvC4gq~^%7f%_wl{;^{5}kPMonc+UC7e zn5BN@A8Gvh?u-Bjx?|h`S?Vu zLO#)B(iQkb%FUdHKV&{(8lQn5mIeM$Ju%uD#6YXyonz4*y_}h~6aAKg=J3zkHTXjh zVNVIpnL*y8VnYe?KDI)i%?>Lw+|Scvvc71^wu-DO99(maBBP-v-~2# zdJ^lirEu2DFRC-U`9;?Or||V>a;2uy&S?B1?Zve|3N~*TR>A4|iQL?fpGuz%$m{%5 zS^Gv_Yfa?s^TsAtJoHi1xEy&+c#&4*>6D6BmJiN9)zAAwo*qg@BM<#k@fG+dg|D4O zX20^0VVTV$vmWa)*M(wCp7IbWTXDc}y#!?*-(DG#caLvHFDvinkYRcMav<+VBkzlr z=4W3N$orvt%6kgmWh6gCdT-ZC--m-<*4_oKV$Mm7=LY0N@~E7X+lZaWHp&sRaPwu5 zbF$(6a!z`%@na?PWr}jS_ex%y7#oxDfkAz$W0 zdCKrq*oWPpZ=JsJ?W2#icCGUke`{HJo8;w#aDbn*;RbAM#eJNO-L&E=YhRn){H0NW zeLZS7`#L*rB_33nuoTUz{8>))_QWBgc-?g#e-TWno@1nmH;5zItbzmDPKIZez!ce}_ z!ce|aWo8q$RzJ4&E^K-6Pcq~y^^TU)!-}4 z+m41>OLsJsJ=R2ilJte>7$v3~vw3I#o{l>Aj6SU2D>|BS(g}O|Ny?EP$xrHH9oE$P zbYxFxk&an(uIQME|G(4m&=NW>Evp=m>{!1S{r*pAq4kvalbcdHhW(`Ze0x+tM^o{B zbYy>fK*wAEk92GzreCTHauvJNam6(&1{+2h94xe(&y;#7R{NOe+HQ^7xDc_ z_DX{L2eDUL-p5{P3G9__{Htyg`K9Qkz8AM(4p$X_V>UEK9%{VsmPepe6uDi+(1PhcXu=R1CbdClfKK3|w6Il2z| z94z|aH^}b4azFg{Ah)Oo|3N;6)<0{p`@_DB_CX!?T%l3l%P(@@pEttyS5sHErueOQ zCAL1k%scph>ZgD5BFc!tsSbWlBi}neO7WHRX}i>y_=(DZC+th41w%<6ua@*7+rPA} z@hYROz3wO9t4}#!Utc>mfYIdpwSfMd|Dp3OOZ}6(Xv4jiFX()cn?uja z!E%1d?bLUE$+rX(w9%hik8^8q=F9j-#?&cpYv4<_zM{1{?Sp<4drtfOQp6nMtkW6z zulXZpR)qNlKC&H3oQdY53$O7F$Bi03l5)#wpv%r5wBYh3{x3%g7)2*X`?gFe1WdpV_mU^eRef# z>e+9>7|)HS*IrPT)|%pk1otHYzX|qzF;lx}xGu_W@6W zHUCl^Hk1Fz+|Z&mtj|^&?cE+Q;K9bB$Z>ah^Vrx2NUt?rZaS-0?!Ldv@yRZnvg*C^}L6c+Sz~ZKbr+`ltGMn$AoDZd584|d^g>Hw}v{86$-P$_4c48>yNilZwfG9$ggbLzd%>zy1d4( zV2u5vFk9z&Rx`d*n6ttkd@TA^j$N3aaK$<7l}6V=w{7IZIJ(6|H@m-Ad9nVT3cPOs;-`|WqjR~ z|0iW%;aR-ABzS*0{~yn@KjsDEwYTE2s9nGQ7W8_Q??kiYe#5wgznP=CSDCh#1-MiG z>(8kxTs4AI#f7fq_otNQ_&ztr|2_wtN%HRS(TaKp|BUq=)BY;($3o@!N$f2edCfLP zx#Mm18Rl=%@uH>WZPV-+CuQaWqt?acAJ68QJp7Kg?f(-pM+NZfn^}~JAHD|6FWC3P zI^uWmfpkQSa}DD5U1eq(-=4;^#*)n!W@q>>dL?zZBr8l79UBn#zpw z-7cd1%%EMz-#?&F@ptkq_OS5&7T%wr_W9q^t3)?Uqy5iP&ns!??w}o`JQm&wU!q-} zc~5KFZ({@BOSzlt{Q2&eHXawA@7&y$AfKN#y36YEW25Ls*63Q=_MV?#k8KpIOLS%< zrjESPmY0LITBpCEai{FCsKFKsueq@vJbNts3!g-RHLNS2y0*Mc`&|5-2F?SqIT}yc zxLOqd`#$<~eMvv-UQ*_dM#XG2*J|zz&$nI7q3-`K;E_I0O)$I7i(Q->y`DK-`g|Vk z#qe$L%k4P|^|a}}uV+4T<<-b{5AlS!IW>PDdj*wa)W94(6@N8Drg_xr z4tIYXw&b7a@0Y$@bZVW#;SAZ(T_D9d5Si%Af+r{U;8gIprzR!xp94?t&X2TmXAEn~ z6EiOmSMc}9)mWYBpBY0=>;BC9z@!`&?U7T?le0abX}*j1HQ*o~Dvzridtp0c)EwJ$ zV8UPH1vh3Ib7O^cLQQ6BGU}h9LtPVs+W}~H%JNC(3KKBs**mCj=4D`_cT*?NRgBzCx=QONi?Q#L%631`sg4V>uIt}MEd;*@C$T!*( z@+$n`=Dwy6xjkhyHpZ7=Pnl?!2M;$AXL#kELdOE;jwCsJDwF&+GA{V0h->&pdy=hv zAUra!SL^;K*(Cd)7j27BS3KGUZQ$?cBGhj}kBO##lkTGr;|4o^_So_$l^QDNP1K>eww-`1Z_$GHo5Qm z?Y+j`@zlrcJhh2$#9Lv$ih&F7DEN|J174kuO2KE%$j>~*AFxT^3BlNnKD2yv;-@)( z$d6GZsgoy`ntiV@%Z+8%tn#)ifaQL^mCpVP^bzjlueg4mrL8U0lb`zq$~8XuuSZKp zmq%J_C=+gPrww=3gy`bFSB_*4ZEBywI_*jLXK|kbe)a-e7Nbo0hobjc*8?x>_1-@U zjo3CFkMIq4SEKrMeQLjk>gsRT%3=L3y}k{7>BrYiW?8lA*omE~F?relP&vbHXwE{H)FRGIiC*>-O7<%=7$zhkdTh{DJ5H z;(34IPJ$1?#@$f%Y{(>SXkAP=2S*1yPF)A5+6%+_w{yzdeq!6?emm;PR+qi{bDrQ=%joRF zmFSzw=?koWQQoio$tw0wI$8b(^n%A`i7y=9oj>^#eAz3}5tjb~TSa*F7?;oIZhiMj zYlph=Z1QuWHb85wscdj(#W^0Z`;(JL*tM1Ej6wAOC2%-C_HB3H7A88s%dhCxMch9IY^tXi zz(=Kv-$##(fsdRXaXQZ83LCQLA!}C+>k{vXR;?FB7}ry@n}Yvx?+xegAwTeKRpwb} z{WkB#!%vCsp z_N*-FYM$+WRh7Fo$MGE2pSxE6sOUd$U0!DQS#m~eU}HttKTwug_nt|!M=r1X$qSdV z--|dv@)XmKp0Z~KNxwz4cAnd-Rq}4k)K+w6cRV-R=8NZU9hbJ{z$)E)=gTI2C++pz zM4PwL=C@4#t}&*4Bl|0N?l%uqpcik(1+na;8VA6WY1h=IsGF4wm<5qPxbM4a@VZBWG;|xYjf!NR(q5t%a;=D z*P6z^lSiR;Jf1ba=A^+EX3vA_V!PclhBl>Ng0}bN+mXhpF{bk}~^O|px#m-zcOQ{*RVf6?^GocB$Ao%NCZHoh!2fR(TQ`FX3KQp$;r z4ov4r& z2+mHkdm#dzN}cHMW3aNpe(p)Mxe3`#vG1Vz7boM7nYW+4Ms)U`ckK%2ln=x%VQ=8d zB<)7*-iUj6Udeq;+7}_-wLA$=J6+&-`z&CW+;)-6AQ^S?DfwNyx5*PzsMh{;&9ls` z`6Qd44qy_z@*_mY-y?sye->uH^yA^XJNnO7ewp|D4al$;8nefklc$+>#XUyx_h->E zghvlNa_)Egi05>1=6G&-0zTPu-LhxCX@6X8mGqUPEo|u)d{@@Hs)F^dBU{hM7MZ}_ zFTt1%@k}-foj7OfUFNZo_$-kana@%UKJ7=OJLhVTw2t9XKBC^E|6~ZJBruszaqg$x z!{^7lUEImfD|;2H-aE+f>SdhrM5%J&PTrJh|i1 zYsnHCVnY;p(fV}>>i)=E{OIR6PcQI)wXPA4WsA5mnU(lm zRxf`Ad^2}1Et@j1pdvA}pn@|V$qm&1I-_x^?qNrFC%#6`A#r=`#}+%rgBRrEuW0`> zanPG&!%WINjc?Ha{_OmK{&)Jm0X)WtOYNjij@)+pJ@$-j5YbgFgj z%hNgmx>vS?cOp5f^Znt)l*ma+D3V3)idoN*%@%N~lc)+0Tk{$&?=8wwpq z!?Svhp%?K7i+6mBR*|*XReX0Cec1Y;u}WuW|C4ouvay-1!Tj(#{mCZFalR<;gFM&M zhhjW8z&Fwd^5tHDzbtPtPhcB&YfslGes91ok&jm!+S4`4=nSvZha%Wt=!GIq&xJ;`WevoQl&d$7Jl9B++`mg%cVk?sKK#(I9CL2SCeGyzpBu6tc*HL6UVe_BSJuQi zV6w#wF@awEhZr`oZ0TOkRjK7Se12X^=jCHV^agPQ?Ge;DYqH0}af3MJGvL=;N!*}` zb3$xB8TMVy#SNAY#|^R<1aX5e?;bZ;Prr)K2$xybCEPh{dF(CWFSWfe%VQk!c|HeC zz5(y*&QXgC?vIq-()YUS%i-gG^qcM+y`OuZ`tN5S8Mv-0hac}>m==9S=hH)Tz4)*k zJvmSQ1!qAtk2AMw>|y^R{+&YO-#8aZ^Zr$Qt8X;_OJ8Vx>pk%;e7}U4`P0;EJ2#R3 zJHNUoej;tX+GgVj-4W_4mY{Ytch{a?-ljHW-^#X?jVm3x4ZW)N-=JMrSMObak{f3e zR{@Xe{>8$;eVE9|k-%XXlk(O+#`Adl%>92nSJ>yu%)vbC9IgIiOnwH>{pj3{wv8zn zmBoUxXKfkhfAjwb&*3$h1E}ZsU7Z=n^PBd2?)sz6eS$XqJHAI{%K86yyvN7rmX9I- zdlTb~9{pMLNKNJkr*Qurd?3F$$^0W1a9RQZ|7Hj#E!sEKAQj4)`LM?_qCjE z+qs)|n7{JHHugggi9YE6lSldf*FMNwDu&E4x9B`{#dbC`5B!zb>1K3(jU9)-r>Kvy zyh6Dm<_=<~hl9LC>G@WqKpAz{KZ>Qz*xr7z}%) zihFXKiJ?g*H5Yi(f<3wHWz(MAGUQr0qMN{HYO23KkNpz(k7ZU*HLYB3byhYW)>$Lx zUdOfXHPF$y;@(^IHP1yI9qhgR0yx**O48NYkggsBuW0XWsjlt^K7ao$wg>xe_R!bZ zv(nc(d*VOHIj_Zj5#O%Cmq>7?r+9WUZR;Gb69PUEKHh--%Ya35qimfw;DZGIgcq6* zJm!PcvE(XXYe=VP-jck}`7-~LAEx;A4|E7dY?Sgek#PP$EKP#|r$8`S0 zwlgMUXyXf3MkiW1+)2Dwa(IR^S`+3d#CVzjPIA=(-i&gcs;h=-|N$o*CA-N16nw{UvgV2 zuU?7$VGi@{w~=f&Z?^BVjO5RGb$QI`63%F6)Y#&N%hHT|HbDr=IuK#2t4}Hu=w! zt0DdqUnY+5eWHEo)7faLk25~zLgc8Z&#-$sdnwByCq2ZuBp)WWAkPMz{OY$N>BRD8<(bL0>_39CuTh2_ zVegRa*^hMt@TB|LoXs#6JuI7HOTgFX@ZG=EHo4|qQFM5a%YK`EAF=$nB;d!NQP0ms znPB@oN%14_D_ELuFEq+O8)ANwkJb_Jnw#5YTfE8l7B=!i1lvyhqO9t5t39U@uvCytNuHdi)-~Q9aeSc;Z`q84&DaGx_shZ&j90eab#}bb%)zV+m}5;{VkUO= zOmyc#rbBX_`m3)`y)x|jze=A@$vlgE{EPWnV>um|E~1Tnfhn+McY{f=^apT-VcN`i z1lKa)+6)c^TX?)0tHae2+86G{Uk>kj*CCuTmc_h}81METeB%GXzp#1@Su*$tM)S;k z=I#d0A)}Ae`6g_8Ivx25+9+LD8V%2BJ!>=TS-D_6YZpABb_9#?Cm0UnTerXcpAqb+ z(Ej!r;7N1oL>pACh>ne-^Y$DwEtdx zL4!-6!S`s})!EyY@4ml%Idx!WS~+#OV0r{jFw0H1FZ@p<#w z|DsIoZ{s`BQhoka-$Ki-$);Vlr0iPV4SMxSge|FvRKLh-hQT`3eXYt)ShdcZ{i#NWP zewGZZ2XB6^u^$iEh8`15#?ek#Z%SvX{{HAD>B;Hr%MiYAb!`VaNBv2EsO}i*{s0(k zJ0*QP8EmG1$zUyG#`d*m3DiTEUiNphkGb_b$CtNxlgz9g^f|OVk-q~x?Rx-sZ_>}| z=Ly_JW7v=J%il6bFz3EnuxAT4@N4;jJp^&u7BBR$=S+GJ`z>Gpihs5s_FJCv zj#lXL-?Xd!v9XY?BO5cuo(|ceqn7w~Xpa2>g7Xp9J~cKsj$X|JAzdiHJ**Fh@Xw^1 zOyakR;6`=yo!V7B)pzw&XFPRg@%u;USkLd-=lU?s1rK5VE$Gf|`1z`U zpXIxYpVfxmN!~6Y#vpmxxtujBa;x^X@-QWH0p-o$KyfxFYt7)Hi5T=w&5c1lJ2_WZ&u7e^6Zg$IXI^&_18lD>p{!Q*gW8h7~#b&f{g z6!lVJTzbc8!+NQSdoy&NQ2~7ZoL|ZBc<`Y91mk+X*KZd1?^CSqRmIR7)pv)1*Otv0RSK?YLTz|MwGVgK6v z>=rd9i~)J`vRctdsy`Saf5uT$3VXc*u*p8dGh zH*Z4Yrk{F?dy#<{bA*kpo1t!e#h{qJB>xlAQryC5DUkr z-LUfhcVyLEciximRWJpG|)5 z6O?B|`jOUSP^*|3cpB>Kvc!sidl)i*e>z?Q~)>oS#&CGx=G2^ZORLQ{->e4idj6XRP)v>XEO7Z8|r} zJzcd2o68huE_qwW zeRle;xy=8rn>x7=eR9x;|BLwM|Gdo;c4JOWw6dXicNgD^AC*UN=wXT(O|bWHD-TDx z=7LN9q0TBABIYiCa1;A`zs5VwMPc}VBv^UxV9x}wKQ}_%`}K~PLUS2zsO|J&5x0G=-5*XgPs^8b4N&#~`)Gr0Ud|8E9Q30pSG#$7kh=L{{%6~Ed%-#@=v z`3K*jOlMf{OFqTasExnx;j_GszIz>C%FWSzioaL;@psuxb=dj+)eFX34Q0Y3)6U%`wutnHg)^ zAEo_7Nd6PZe}Wu$x2B0+?nXZnqp0@R-?KB7>-_u;%vB@BWDNT=UXrc}!JGnS=9dxA zYR#3q9NdcHnVGv*K4sU$9WESx&Hz`!QF8lm%+750V|Kmh;hE5>7v1zQw7T<8iF6w< z$d*+O>fyZ0Sz1?S4&hlgkNg3BHzWAY&pDc8%VI&@ocS2?i-v_z&dyHS_rN2kK)Y0NQ_M2f{FitTV zc(s>#PWk|Sw+FAF6WidSeBWO^Ha!y`cQb2BN#dr`6|xcfs~4p=6X#3XJ*iRd z;P&4sU(dbE(U#hA@02&^-kEW`zf-QGdzWN?sq|MbeXHMDzS{7{eZgN0on6w0UyqZ{fWHn(DlZ;{x2fG29jOFZcz!ctZWCKlS^Dtv@mI zP3pbLb6Dmj-;SpR>t}dBlQNCj!K5(@-_jxCpF!4eoc>7oK125^d>)*928x~)xB_8-v1?I12)?ij05%^MXg?y=h5rYZw%`qi7znZpK^J%#O zx=T-C-*-0{=GEB5)-vo-=?jNvjl%=K&lh&A(Y-sCmjc|*P`iO{)?ScYS$U?9^|DKa z^U(ORoDZS11C#Kr;LW{RXn%qF|8C4L(wA?a`}V58|2C4rkL;AKDjC`q?6rt1Mv6{> z_Kn!+o#gtp+)La?Ietm^c^i`Jg45IfUI{;U z$=A~c+{z9=23y|R+_Q}IkhQx_5Lc%Sd$)>g?%QTrf4xOEwS2UF_}iPmz4!}k>lQ=o zB?s*-FU!tmEi#F%T*-anUPw+o+LaAj%y)%evPHW%4{CK_Yxgj3*TQFO`M!CEX}tSO z4R)=XYcJSY%jcV-etGPsvl7Q$ytm%2U*Tn(}0* zJW0979GoEDr2HP2s~ew-9nCz}rx-83wdi@#-u{`(I$I+Np0+|i<$omEk1W{R_NDIt z*AD)>#}Ah!8B+us)8I?pWA{O0YjWhcr@xcD(L5p}! zZT4&V^(m zhfE~i$Hs#nNAxq13%h@L*v1TUJhOFn?jAU~yzQ@6SC7g3nmE1k>E!z>|7bIM^5>Lo zmYmqK3AXH~L7CzWvhOxmj7dMFvWkW2tSw_bm9p2+^-A8TNDBI?D zf;P3sTCpkByDO-tedx*wQ`sFsS&A|@2Ww7pwxD=Jd|}|nBSO4!E%i(JVOxi{cqQd$ z{wt9_t1OY%JQA*>_u5;dwL^_lXXReO`g=celI$(iy-WE^)X_JN$7GlIvN*}Ydtm_Y z7ip&hp447V<$X9gy_)!#bmcot{Y@6w${iJA{g^lvu z{)2O};M9A;w->YMsTgONsXsTC!x^j7Ik$sL$(-;a85E9$8{z9y;NWy{LF}UXDt@&e zT)vs&iLxb*d^|@i1-fG7q`uQ^RYsTetX*cgiW2Zcb-KX|NOK1Pd?sGO^|Ku@g$%(_8U`PS? zX~5k-d0|?2ExwEFz8~zWzm___{nlRG|0UnXBz*f#c2DiT<}$??wP&laYAkouhf)&DEOY6QTdny*fvv_&$qWv|}=Nc4I#ZrYttn#^~e$!PY~0{NM%tz94L@ zdh#T6MveIAM|+tzt$)gnOJc`q-_tzq8=g+?W*0HlVm>di%z40E1#*5jLoOJc$I(k2ypk5ubY&j z&OGvtdN}J&x#Y6*>Xn~Gc_FA{->)*A!tr|E^(l89dqC^qZr@SWSktEQf3mXk2-=a{z-7o`FzDO1>puL!hE&{+>-&r;c|xMotKgmt-ig+6&i1)wU!UF{c`K!G^L=|#xo^O%Sakxs z-9si$M;0|!t@q?+*g2udcOEnrpSF=xV?y>Qbnm>oVz><2+xYff)x%}t7xl*(dif~) zbmwHl+QjOCShiv4Q0%(Zw1E#}^K@48y<~kVw(51*s?o9V5WJNQbe&g*uEWpK+V?}u zi%Gsk*DP*ofCqy%lC-e}UXy?Ch4eaO;Cw6P))4!ZjUVFK80~tz8_6z5QeBiT{lVMH4)Sv(tJ_xojhd-a)MAIXHwWwHaT{;bM;iD%6RvY9UC*|)Jd z>x;2n$p62y?4CgE%8}_cBHrkmAPhS6Dr{sI?*Il{nbsM*L`d-%fLS#EAv3r_R5@7S@%jb+Ni!($P> z?`D7Rx1ojNrcKOyuAauHF>CBiyeq;F4h6q*o<{_wlUDf6a39Q@Cve_5F{|uH z2Irsyi*qkJi8A)eUA!or$F|?bI`W@`v7G{Z_XfC8y!0yIkQ^!Aklk9?W3O+5yqjk0 z1CYnaJS*HE4V*elM|wk}PQq|6{fL;GLgHJPY zaE{}X9neqj zpXB`<-aDR%a!0M@iNv&GY;h;J5?}leb;S?SP<`1Gwtj9_vA+01^?yoz+3lsY@QAOi z(s-ej@on)9+7I84edgfog_k7Lzd;tX_l3BFm4o{OIk<qO6pAs)f)+?s`nq% zJ0MhVq<-%W_*C`JrT+ckbC6$S&#|n^)Hkr-0shill6bz*emU=ThVM3b@y_2D?DOfyG~<`^`K{{=ZC} zy?AzUZ#NDP*^wO~S?N1I+Ln!&S&qL%U#%%PUF+5r9G^LT8v!2mr9PV(gM5b*$*bSY z^GwQp+hcO(6kzxaFw|4FfcJv=Ll(Y@%p%@BWS>W6j^p{yJiGbE&99nobcVKgamon1 z{P5F-4$V{2%kKV>&DztDIHYwGzYnH9Z0}#}Cs*T!#N<|+3lrFTHunBlwAJ0q==`@W z+{gGEbTH>qbFScuoX@#TLEnN;u$5C+ z{RzfzuwLNa@1P!bNii=TyTs=y`lz?Kk#gNx8N;VQ zhHT%jFfQ4}cM@OdDKm%4Kh(F!2W>Rzp5fewTQ~84g72E;kKvDW?PKb6-i~5#^2ui4 zgB$#+QhzK;tPH(0?7zq^p6uVDsdE9Pf5LjFnV4HVWN$*pd_85Q>&?S9yMMGP0VaBlZce+|4osyqPRxqC7j;8E?DHt^TZ!5wSR)h*buEq)HyoYwgF>^XDKUyEJ+ zL4E!idG$EwZ{h=IkyFXtLZNdzbRPx$XV1N|=TKndtmOWhdk*4UQ})D(x2K{%tbDN- zQ?ezQnuATE{Xq%dLA#a)ucoyb+HJyCXr;^p=eLuWp}Y{uq?KW0Qu6UbvlexH_J5M3tgwu$Mu(fHs90de6)SiGZ&S&NhfQreUY}D@2NLBmRtzN zJAlihZgDQ7UhY8n8Mqt2Pd@Lzf%&`u=9KdMKLF+g@vI`ut4`bv<}m@xm2>y>Ck?sd z4%UlCfHgJMhqVn@rw6buKp$JaKjO^%I@U%%#QdVMhWURTYnMsZp>*!sJaWXE;Qy=P z|DO{(6aS0Hmq1g|OK@ur(VpVfub+xenUtAWA8k`!zhdqQ)(iDb4*6Kl+$r3(1CNtk z=S_%}`lc=8Eq;e*Y?yA{2PB(7XF|o0Kiw&{6d%2r zwfz~yX_O;bYliRU=whxrkQh&l^~ms@h!M)Q?{YnOh}9Ca)HAt~I)m*I_FZPlk9&lD zmx;r7znh~T9jtjz_HvfFO?M({pQ`ReeDFQ&V)iSUN>jIzd^^SPQuvuYD^?E9<6N5r zbH`L-dy3aC<(xQwkNBwF_J}tH`z>P?ONMgA{gz8Y`zrL&dK92Xs+K*&+6Nok{f-{u0zN&sYl*dTd)HDQcOdF6(|XZEcbRh6Vrs0v z50?AZTGzoJhW+|IE6#_{IU~0`OqVeMUB>K27q<`ggXp3=OTULtF1+EhTexA6YzYtA2(?JiyNRrJ>HDAOG-eOrM)*elde-sY7- zovWxL8C87Ya-MZBrQmoNI5ghmLxuK;Ba0`)7`f_C(+ z`swBTk8@p}JGlRq_r2GfPTgzsS=FOG?P=DXHoey;I)6pojqK$)u(+4!#~-UoBjT8;4*U^LHbt*$cj!l$Bbnpbkq7CLSP-qJf|G~cR?LyB#DeeF4vT}vB@ zm;5#!4cbUPSLk?5StM{=b?zZp~8#n+tYT$Vbd! zYo$WASBn2j+l80gef>Kjqq)xa534fU$L*88hWVfeI5gim8?6UeeBZDtGta_Ojc-_$ zi2%zn0W5!f`u_+EK3)+P=CCjuu&?~DQW?rxoRe)+Y! z7t~O$Iqp7wh2LjsLpj2Feu`)1lUW;+b3C+mcOfwwe6$w%Xr<@V`e#{3Gwyua`&pAH zJ)d?NaWLur_2`+I$f(X!-2#v5ELE+;Ir|oR?PjaU_K{B$n__0Yi=66ygH_Q910M5@ z^=;5^hcgce?u+*GeVZ6_yy&iVzc5eb$kn(5-ub!p0je`?_{iuPe1K}ZuC@rbs4L&e>lACLmJ#Hc}g#xgw0 z{I4~Ts>~(eJ#34*b5|X1h$(f8CcD}A#F(7@Z_m2r9#z@<)1jFG&xLIzHh*qTYZo?w zVh-2AVcY@SuYS$$V%&kezm>B82**NoQGB`IT zGQpo)*TH)Up4TzACi!KrW#@tXZ8W1Vjt6sV-%RMs9td}C%*C=j$cITVr@r5Lvme8U zaWv;1lJ*vGQOg{beBbkCE9`l*ujF^w{aqgOCjNML9Gk|@ojN~)K9yf5pL`x|jWP|) zne&Ib{CyWi-Rt3hDyLO-bl&XV;6-#)K7i8>r7X0POaw1myq)mak~llF)7xY9;GkEtd_zb(#KhRV)(hJ8yI6} zbEzK#pLPUmP4}P6UhQe}V=7r|8k>#)hhp5#$lmGTr;9a6c=)+yHX_8DG^QT#@IQ=4&k@d));ufxt>^g{JZr79 zXSsjQ?w4uD+B(YlI&Am%CDdI8_gKxUU|r~-o^%s56-DY z=4ChQZUpuH+XcQor%nDYvphK^w?~l5_XyOF3!4U!*1PA!Gq!CW7-`%~KO3ZDJk z-Kxy#!07Ltsmv_qxwMTv$6v$UqyF4%;9cqB>GPsCC+7^>Zw9_s)DOS9OJ$ykUe?1r z*9AXnjWt@r*C$XXhp!_3H1JB2_dle4tuK1mW#Z!~d|bci>^;t4fqtFDH1j5ib$jrC zlCrG_43{M-Q@)Yn8gb_FEfY+>c9ee}>zj%rP#=A7^HQ+sJEeCc*f7hm1 zN5edogGaN-gOhXR*&R%rD_PEYfwUEdWee}*@V&q}mGy)@`iB1El`{ID z6}0&xZN95#@f>Tfz3`X#t|3@^H71e2Vhg;-w~Ey^^Bd#W(NyajrF2!!>pXN~5BK7z zp2iYqOirIY!+WQHd!e=V1RL7fRc7qEk92P@F`z2^sRVIC&Gpi~noo`f-{KF&4+nv{ zMtO4hv#X*t1K9(mmn$-EO(>7ev<$i^mo+z^wTXb%%b@kEz!f9rrgc{3Gic93j`f-y z^P{ahWh2N&qpde=?0C{ZJ$qDTFX?`F2iD^VF&{-vk#a?*3a^R>OX9?0D{)=z(_HkL787Uc5Vk zoCt>hkGD6EkE*)=|L-JW5mAsNthSi}1jVJT5)iFr5*F>^hCy7~W&&vaRJ&MLz?K_8 zZL5BpR9e*bQzoFbGaqgFSWweinSi2gwMMM9wN_>Vs5RP(vSb2ue$Usr_e^dkgZlY= z`~CefkGXT_-m|>-_xrrh`!o#h;R%gHV_h8BW1#W6=;=o6+(qm$$nywmI1Nq@k6;tE z-i&@1kF1418V50c=)=m~m_t9zXD{RKCLSXg-39z4&#_}VoxS8Zh|Z`FBpT}$T@d@u zA|r47jkm^M2mi-_k?6|x?W`DZiX#uyj@sS~91Hu66LYij%F;dYb}uFxo7OxV+pUpy zMgKt?tpz=#TrOlmehmg$kY#Qr_p2pvzlHk^ElaR#-Uryt^ix12bocsjr!_zLmZz#|SjkIs+;#zb=%{#d%T6Y&te!v(Gg|i?$ zZVSMp@r_*FsgJvJq}w&u6|_-|-jcOF^@Zp2tbNAVEYM>Fn2HwTJSRA+PJ^WvE0Zqb znX}c8FPlqP3p29W9bxif^qlxc^2>3E|00iScwTut@aXgGEi?I~rK~x?FL_u2(^ic= zL@g!RxbJ;(fLUh{T;tf9Jllg4$H}@!k>euyiZ0h!*JA%S0Be&+itLT}IA{O|u>yQb z9$+gs8~Mt+D|xqyyyP})&+P+dvj)R zyAURY^A_(dbw+lki4PngMk?7O8T1E(`^scLaKGby@Z$i-do`~Dn8cAEqRG3UBjsF5 zUkV1h(C6Kz?egS5xRx(0JZU}TO~t@jgLuWgTgcy}|WIM10e@95$8Fz3T)j8D_=M>Ph!X7PC&V7>~b8 zlaKSCxhIrmO&NI zs;Ls}`$^XMH?wESx8K_BnOEj{dSZI%b+_q5c^ZU zs9>u4%Yv!?)4fj+tCHRcQD3=mToJ}K*B_VS(8K|o6bDp}Dzw*RZd&XXdK zE)eJ1GmSHjI8Q1Fmkc(G-&jRA~2ByfqF!*(Rz79*r`n-B@Nt+k*(QkOMjM&9x#O=keg4Jut zqx;B*05#2cUwR?J^Y~tKjwc3}-k+=1b36Nt z_woGxr?ygOGQQO$hdoNW8H@IdS2-1(X>2TqGwedNFF!d<+(~?xRvf>yd{X(9xm782 zYhhl~8hlJQAgf$oRvlcjsh6CxeJTIoRPg>D-=W`{ScZ{3UTpZZ<}XBhYDcLJ$(#t! z$v?F?IJo4o{Cp~qo8CH;*6e#=uW?9DDIVo8C++8zZNoF!Yl!n$dz0tPo{)#(cRR*y zB^906A$2Ka2l2q{h*LQe6}go`Mnw3Q&#!i6EC1d2HrPzq65IJ-Hl^Y{@`q!;X`m+9p zJp=Ixe;-LjavO3~wt; zhq42dbt zpZfB7Mtl;9A7ygZeh&?4PlfGE?U?_mAEEsJQopZReqU|$W%w<6=UScP^tvdgF5b{AVQrqNitxCZ! z9;`MST*U*pj{Cf$=T)oC$`0{B%O47075!xM_kokz63^>-Jtthmz>Dqw_yf5*vxg`M zL%)98VqmB_1jp`TYpMT6`ZIPd?R}2+6i4sjzuy@ClMECLPe9M^DR)dve)C{w1ABy; zT;lhk+iSBOT-OpOoN+99r^uBm*V(mjV07_=zzqB6{AkK)F8}j_t{KP5A1O~R{g#th z`mIpn0`!%B_ruo{jIKKp`t{|i;IvHbJJ17r1ES+)GnOZ3Rm{lF{Q8{i?6c-(Yd=?? zO%j7w+=%!3>>o;Lp5@|KOS=|+<;kI<>mvV+y-UyQEPHor6yBCR33Cqap=3XHps7D& zY20zn@a(JSi2s4RSOE4h_%qBn)vtJ<&$xX2p*Px#>Wx%cU%f#)H=_gJ26xgM(f5qr zXg7L;=cPCP^R$wc?z_2a_1hs{1CHwdIdYYB?^W*E{Om2*(aO($l5gc_i&wC%+qL$u zTwu#1vYQWVF7e}d-Z_i1wQs(YGZu$HCodhA*h8-N0_0#l`Oo{&Vh z*YL;JJ^qLda?gNP9$Y$_bHIqn3SXbZmuiDYt|zu({qQz;1YfFk5zpCs_)@Jkiu(}* zxA$te7vkQH@Rz+8;$EJ=oC!Vrb@U9wTQmQBNw)U9`s`Nn*~MRB{H8)$CjZOG5lhGN zk8BL);1VxaS^7ceI{CTE#x4?VlgFSKhv&aw69sdXpMSf@Uoko?bw+a={B-W822g(8 zu7P+wU93+ln{2M~jSG767IOFu%3E{rRcx;EBH|{C*hh#h{=9G-gCA_JvS>`SbsD*c z-4_sl_W8#V?*#N>v2hfWC27uzmaGfPxjr(4`D)&p^DyQtxJSEse02P2PftL|d1WVF%4A=seK5-8HNUhmluSpN1W5G~#dQNs|ZqJJvxJ zyLb#5P7}9KAAey_i}KW^TV3SBLgdD1KcDznWLXG&1Zi|Nc48PfiAL-FeB#B>=wf2y zqEXSI*7dj0Zebp2Ep0QF&Nk%WL~NX>$?NT#M;b-$7t15fum&EjLWhUOd?UkLY#wQt zdFSwPiNDv8U)D+W>*$^dRt;8uC0n}C(@`xM`Y&Lf@M-Ga?hh+hXe zC;TdpR5>xiqi{R}9H(CPaQrguss_Ads?G1N-Ekha#F%7DwU^(mHGYTj2#0B8N*ysQ z>5aehy@>j>$_rggZmHS3NAf?+mW9r(}68^vD59^jdRywRuiTtVLGMxNb9{zx!yv>*3a^XZj0dXO;{=7uT< zTF-r&+|cND<+yz39_^WvZ;ou3mgOCrxAk9J|75}q-qt+DjIf|^g73L_eLBB~ZwV@lP!r#h++ebWR8*=mnWSrG&>#>W( z!<+b)%^O;YZcq8TJ?`oDv*Br@+oPqP-J9xd_bx?;uY^XW*Jop&OCMavy`WA=b1%5Y zkuJ&W>va+Qg1kK(_Vx8E=}%{LkiJeU?pcA-cU?m+dc(jt$9`WxrPstk0x1oLmK1mEHE-3#=z?Z23QjKUol^7eKS`l^(mvLHP>UAtATewPlvmD^z?4lLmp>LMotjV)V}x4v}fa) znZ-Anc&76q;+cvihJoGxZ9KCLxohK@HS}xanJ(9gXU6$HR6JAp3^txw?dO|?iDw4$ z8Wqp%hBhqkgx}7szaAJ=Axjm@j0a+w(Slg!z4-KsWjg=LtvC2Ub{iS~KKYC-=)A&M zW(ps0I{noU%lt25nKzJgc(tL8o?N^;z>Q>LW&t&W%=mi8C?DnCPvHkI7mqx@BDr|a zOvc9woO!#2J+<9q5; z+WoQ0m5AUwORn8Q+#*V>uMwGHXbjlxWo^#*aj{8~UG25;!OaG)z*8|ahnzs|skOGs zre)MQxV3*Gd*^_}i)L+)`X9$T*`MHRfnAw8QuM{l|N87;AI6CCEzFFD)N>ajxmjHP3r%q_a-gKoH}K3g9xF?p~K@y%GFZonUJdaD`|QMCcuH}5`I~Wk1;xbT1?Kzkn>^S zZQ&XQ)_vrAe7ceEqN{bM^^N7kkS$u1SI(XK)AeHd)LNy+cmvnUm-FqD_7(WS!Tl3K z`^4HNrSMvzZL$fwU-~UX+&B!6m>hlIHW@sw$2O6TQz$E6g1)uCNwH_;fA978WP3T_ z^SW!GWoy%fejK3rm{0S*O>+dg*^A}%^K6=!NAEV4C!0q3kAlNd(0m*kEwpK58%GR{ zj_sk*!Nl{N^SpT8=j*fAk9Jx&kZWjcm|`&p)@cu=&#k=tP&SM+xYru#`oHIGn06yi zut73g-8mWv~d4+WcIJdl1D`vg2$ z9!Mic3V5L10Sgi?|x44{TdpBwQF+FvvfCW0ln-R;Y+rS_<9p`W9cqRJt)u5@$8#ez`ntb@z4GA z)@rZ9hm(DS?3R6F_G@6@wAa3mebb1(Ewpc3pk+%f@`zdhlAbIz6D2jTym?5)kFk;!z7m)zTvbEt1HIOPn&g>vB!|NNqfjh_862V*uUMLk<4Pf z!ND#mAqH4`7N6s(7s%RxWYo2job@hie3IGN673_WOV*C;B&WDe^{h`rUPaL}vYmc} zU1oVr`aTxWKQVs00i6t8WYgrxss9+Uk?y4f65~fwCtNf#^i29Fqt0P%x5L_P=>yU1 zTK0`!hEK2&+w8;$vKqd1&_|`%W8CX>!{m5!rYZe5E50?Hcv9PGGr{yYlDKVxjq_}@mS6^=j3y<+2U1g08)bnMV6iqWc$lE!~Gu(#uX z8`pK4U%Nc)m9OtD%Uxl!bqld$Rd0`)z9A43fGn9HVUDR%eUJUQzE5@XdU2o+#*>%T zjHeI1#Gw5y^0hLXL&VeFt!sH-b5^crYN~g3Rd7!YYXI3A=yNyER097(7(}tL_kp{( z*03i;O-;WR=sG?Yo*U!shbm!hNqpdvn;Z}5k~q4A-`VTNqT~FUkKD^Ts*lb(X&T!p zgpQNlU~SHj!@4;&6T+-nNnS|?#Nb)Gz98LpaEZsOx>tqYsk{wCTc10VJw#sYGv+vT zSFpx|k6LZpxoRkR!Nk+?8JdVwG z59fx}9Y-Iw|L07<)JLT+$>`IVM~HbSwueudjJV_=@gB88>RNIpcF`WWcc!@)=AOg< z+Ap6<=j!78U(d5Kt`(P@h>v1w)U%c?n|mxD(T@Iek#FL0@pj6`pLiSCvi2}KnPNPa z$EQ)Ry@GK?7?;bOEWRbfqRidSh4GCj>}U86c#wWx(|@#~XVs44H{0P`!Sa3|_L;BY z=g_ZhFY~o%tCw$7k^C|D=lU=aoGo0OZGGVqd$k8H4%Zeg@xKW!$T;-A;NqZLHD1qt@!&ibi=49bu@{&S(($0?&BPsYROBzuXnB7+=E|x_ba&#zhr*V zy}1qeQ0>moW++#_DdG$y3znFK^&`hy8Ucfv=UzT1(Ur}Ig>FP?_ z3c_zQcoD5A4lEk1q7M_V0pGp-szcicYex6B4{B*MXdevXT)RWr`?bifII_#y2ajSO zgxFgWVXf2&*a!1J;>q_I-ywKgwgGXK_G#D#S~u5PR){_9BY0;Y&t#CB73hqJpZkzO zb|M>E?e9i@hnybYJmlb;ldIhgul^X?+7B%DfluMQWpp%KGr-BVP@jmHUbY2&Qp0-u z2|i70EnM*{(Y2l*Pt7Xvy5c!6A(PVq{!K$yF8?nf2fvW7rQc!!+{M6M3SU6*iR`2H zG5VlTH!8L%-I#(;^qhfRfo`lt{#)I+8^2dPrgho~c>}7uw9nrU5Y&x~^8~kZog}(g~6$FJg-o!XOT8MuPu1V+>97^&`GVd@MG}Fi$_8 zcB-czWB7UT51}7TE^1lN!8JIQaWKR-);V+-_Gs6QjppR9SS{X+eTUupDblyCf? zPURY3OuJS#X?&`KA=y~Y{eN)%AB?vRS@j~VJ&D4X)n zSd;8W&luVNSK3jm`V;0oB9+byFJ+GKN_H4jS*wHC?MZVfT ze73wiW-Y9jJofEv&G850;Y0YfmrTYtGcty??O!v#{qQQXt#y6C{zksZ-pr8Bfp@Ko@ARx z1M*k8)8U@r(Y6Qqiw}YPU8i*{@HHD1Xt5M*gxV-|)oCQ#|>bVvjz2lOH4aD(aua(Lb^GlfUS-Uh)?oSMv9wAa8IF zIkism_p{vpLWcc5;8*fjFn^N&?!$){Kgy^7BXITn;aT0gfrsP!^y7fp<>9eo7#bK&zsI!vP@^D=>XkH+7Zym*v# zqBEGUXnzCOvdv|)J;b$Q;_@+m!S$!PM$fFPE%4vEi2VosH^mb6561T)7B6~O!#vP4 z>x>^qjf|(Ep?8gaT9Le)b}uu1jAA~clRx11*ZGY+T_-!cg?Fu;{Sb2PY5uc1D2YE? zOb3O~L3NyWXYrao+4J9m`p5cjt@Ia!$?wd#DwEf6|DW{rTjtRSETw0*aII$r+u!s1 zr{G0=p#4pPo%F+H1?@>cqigaJoHRaUSnI z%X{)61yAcQh1tvP`;o{F&yRH9w*FGTPS$XZzqC<4=Ucft(T3^@YW;7|_E7VajJw&N zQyX(K`Ul*tq_3d<@%Z2KIqp8i(?0`vW)kC)y|55CNdG7&M)WkE`=hxZgzL5ZcfC&& z(oLF&{n&aR`TXy%7mpX#dj5dnRnhjR-s-J?`kz}&|2$>lg=>%%aqR7Y{#hsfj>x7B z_yZljO{@Ib;aoT3_h@b|*V03ycxMg!iXy+iBzq+P>Aa*hrWP*sX3OW9{dZB_lUxGl zkvr#R%j5$NY;BM%)uU}Yg*UE(_p$jw6BB45{Aev&**W4n8Cv3||h!jqq(zhbhvnV5fgP)}@4 zJhzg5+vr2~wP@{B?49lAx*}Q4_1DbxsN~69d-)f`lON;S^W}$|*xT{^CKfY7cr&qy zwILI8$$_^f@Fuxv*MBqhPHPp<+wo`Wqpgys-(VayjN=)u?SEEg59HpL`Cs=155;gk z13bl-k}V5-*f}{*UWzB;|B}2Mo-CuUcX`I@i7Is<~ zz1YWlt#2Q|1{IGxHufD3HHTQ!RnEd9cz_n_FJ%PQpLUuB6UW*>7 za!SqFUJmwg$phrSVT;d#Ha2R_3!PINu#dUd=`z+D-#%Un&yDB2vKp;<`S!6pY~++` z?Bo2J7j$9uXAF3G_Oa?il5fI!F2dtp@Ov}9@pY`7&mgXnW`4R?h{G^CvJl=8AKo7U z-pcRNn!!Kd=c~;1@MI^~hr$DSTxQ?Bu@`_pYwhc_FFLb$k;xlOeTen-@V{w&y(O>@ zI>dUH%^Qqzt-Qe)->mBvt%v9a*4HQcxp8UM*Qb#qwyk88*#|8dWY^c<1P`M5*c-X^ z=K-fGKX=d#tgVL&*4BT3-x63`U#ET0MvuME+Bz}QIyYeFpfj^!Y<^^p*$4eQ)|51^ zR~W-@7?b478_2sGmMrSh{aM@>9aKv;j4LtcqbjF4xEJ~w@N3uG-}G_*RqkDH=GA-c zJ;6O>dz0_4w98*n`wsH(X81*V)8tRV=RIrltP^2_E4HiiiteApeqm~j3VzB*{3YZ0 z6+E`x&qq|urf^OE|8Ni7nKgOwEZ1gDUia;KlXxk;Gw&xf$xqO|DEGYern1iT4$n_m z&3%_^ja__Z;qwq<(YXG~w{(Wxe`f4;;OFISd;7|yD-_?6j?g}`rT=38AhxFJLH!&b z$0cTgzBT)trOUC)+iTN@HRH>_<2YlRTlkKo`DvY+%zbpzwOgIUwX}mRK}{&y z`;wDgLeAU9LF`XCvhud*@lM?l$eN8uI=f=f$41U@$`H3daCtP*J*Osdfc~`yY|)!u zJKA$In6m(BzbVar{Au{Y*AaKv$eArIv~vJCumALp{@45Fol#Dm9lvVBW%+2`T>ZMd zr~PtjBlao28JnJw3^epXPByxrUAcDXg(jUlWb3~^qc#|G4f||%Bil6BZe-u$K~6S{ zUR>0lG5BM$;~C65nxCD6o)6Ab<2_+&&v?_&Qi$3_Mh_o-eqIl6n(XOe$xQa~p$FZq zACr9JcWMg11Mwnw&DirdF+Rs%1HsQQF(vk8gu>~|o_9|&DC2vcl8K=XXgE{>U^AY?;0l&#VsxfD5Rx;)rne&U} zRoHR=hHVm@_7M zCf>Ar_yk|=FZrP7MAw#XRIh6EV;39xew(!$*$g)o?!#lRksH|K^keooiPmlczS<)r zT08r7)?|&m;_Nc^zNp=jN6*PBe)RieIkSkoZL>~|FRgcC(6rvWo%2Y7Jar-Rs~5k- zj%=RAK1AiIu3&7ALv9Upf<48a#L8rC_!Gu{`ng~qz<&yuN#3B_+tb)n#$QT@nj6sV z6F=_Nf|8t*%^+Pan8`j4!m~O}J__|@3+21Ua3nk;c^Ie9__&_>v*EFQam>D{^%daH z<=K?KM(;Ad82+L9e~CC=;W!%^r^a{SV*^&o&L75D(mY>mES=yy7MOdCw$tFIu+0{~ z&DUvj0c~mx=~4RjVsOO&xc1IyDNjDc^(V|TmC0Xlt=#sYyfN}ratS(+&XJ9DAJ3i5 zbzEcFmz$z7MYEo7W5(p~v-lCuJ;rmySDWtp{4A3T)QEo89y8geJ$uah`DYdM>vdLv z?Lg4f_NVQACF zioy=Egm{UbSw`MrC;KXXeB+|7qZosD^qY(+Mox%$lXdSV?S0fa==x8*YW5mo;mz>IA=#=#inl39zNTT#;P%x@#14j z=KNga<-TOEv!DE1$sF`ni1rM9`n9y;@QPPUi#-U~xgX7WwEQmDALrWYd2Cl|dnvEZ z(?{PWUqbpQ#o1{&{?pz(jkDt#r*$Vja0l;etUAx3gZ+D}O}oRBuW(_Gf~p8JQM8!;d;^%dIk_ZOaHYI&ZN?ZsW4lY zeBJ6w#;xlL&e~dEM$HacM0ZgAmo=0B<7Vrp<; z#}(GG=^)<4{ESX^v7e9~tqsgq`Y=o#J$_S@OK}><)QZ*rlHo=+vW{kJ)!4Dvw%Ryv zM(woxE0=Fa`&aCH*8y`qE1O?+Zhq&B^S6ir^_hZ1!rEYgdW5AY<_%$Lb z@D)<;<*IF;PpU8WNTk4xbhpl*(zr*TKn&Ac1bgVO zR;;J-R0sQ?cnosTUw1V!VJUJfeiCa~*qE%{Hq{PrHiU?UJDg=TnOgA6paHE<{SALx zHdTBkxItzH@zdbNjhpOwR;f#zI>l86N&xN4!FpUxR|($ zuQS23uQSV&gMhR2m*%|fcxpECtbHz>e{Mw5;kjOVFk0H&_^3N)0(g`Cq?(WFH)sRc zTFtxR=_vG8!h9N-<0-@_EGBDGMKX%D`ChB+-uG6MFB`JZw_6o{eSU>oPu@J};;fj|N1VxRyepq60==@1zREel>!X&sy0zka2R)8#{U>tmKm9q^y=-LMq}1!V zDZ+=&Igkud?$Pzg6|H|y$2S*mWq9u}-m~~TyorOge$;`}(|y_IJg!(ubu%4CW$c>Z8t{N6>pMRG5&pIF*-1M~&In7rZ_ zlrIyw9~0f-57~K8x8AD@jciUaj~ia_&TCi9TRxC%7xDTX%;jx!&H3M4zr(c|8+8t8 zOZs(PZEB*a#j9~0$GB`Cc~~)S&Ecm$ylfwW*@=EX*U+}=83;a-8I*F!P|lMnTvG9 z`jxDadHi0PJQ285@LRduL7EUf%=c;GnZFVzr9Z({JRzG%yzo)p-SIx}J?_6}$DnsL zE{%~ju_<-rO=~?%{C)$m6!|d35Ao|i(L56!vIF^66ONiQJ2J!+LcFgv9ohe10}i#& zLTaPd)+&;>jq}a}iTygaA$yQ@G4N?@ZTM_A*UINs%xM?bajvCrb-u{66TG!!`6Rcq zKD8#)^@xGPRVG(uoqWR;)MZ#fY)|Kl&+yL`x92_I%p46qph3Y$`=<)=*T{c4=;8?e zTX|tL5u-1M8ojRpKSOiyjgc*k?>b~c3osI|+E@|s%PfBC`U{v_VcQKpZM;tVg6k&c zu6aJfJa?NpmnWauX5>sV)t&3Zvnk?NA@(?F55_59$L{fCTUuMuJ^j`g!-{G7zn$UE zhB3#NtW;ivL)@ z=?uYNLW9?2419X$9>V`_Uwa|1pT$#Y)=VW2lh8;#HPhg^doE*xpL)rv7=2lJ5~CmO zH_wj^o7@{)WpX!TyN9tg7L2XYADhnFt2DI4Jh+y8Jc{3f*WrxG@IUvi=6bqQay9FW zb&ZPkgM$*rZu#_P|DE@s3BlXpdC3FOjUA`xCWb!0MSc)@aY4N5%yr9u_RRG{9=sQx zQJdEy$AWnMf`Kh_MYbq+;S`>c?80u@`Z_ry=W(rhyv6^IaILv*JfM3cldp46>rFa8 zButEGI{s7}-_os`Uj!PpbNn20v~w@zzu^35@!xdfPi@$OdN=sqr}*y(KS%O(uI0<= zlUrW){J|xm#K9RltD^*a#MYcBWu0E@GG*l4+L{xr%Usi+C95NQ)t-11TTHdb%z6xU zC-#<>X)T8Oo`bbEV`@%x-8LlAMy(0ep7;U&x#UK_SB(v0YD^sA*O*X#S$1t{^H-Sv z{UskI_ayN+NT$(`?*vz^k!`7*?>L?@?ECkkH9?+t;ETN%sxkkb>_4>?Y@=98X(60VD8 z`;}exu1g)mbS?2lXef#vJCU{VA29Y7?eF8vwNtT0N{Dmn?CKD(5pGj=_qIdQ^tJCx zjHSR9aqkYCy*3mp@}ued3igzE2#-79TR{v?PcS)dN`L})%sh>vEJEh zmM`NxlfK1SU)|=;5nU_SaB+w;2!U%(Fb1~oA)9`At@3I(yI^;&?hA8rX0N>9-NW(ieK+uq%R6ED{>1-^y_3G6ukRb4?yNt!#H+pW-UYS9dS{ln+dimk_1b$pD?uh1lbWV!jG3N9d?d9RhyrSnTrlHy*{gbbaI4m(1c1-1(2Keo&LW-@z=QDZPIJ~@x+7ODem-s2fmMP_RuMcRir-)Eb2K+uC6wbzIAXSPM&&(+L(L3hVROF)ANu6pH&PR`U&(0owa7p z#r`R{7cU8nsf1_d6?rBAr#NupET==#aumN^@GnNs4lygyvv639rsF4hK2eUjSlq@- z;6vy-{Y&apGAH86S7-3CG{?fZq`6m%`~mmuwVj>K;sd04N48x$>a1_oUO(bq=6|!M zGODu!{TV!e^8j^N%Ak)9V)_}@^?^_Cu|W44$15Y9$?DGmHtElIP1Sh7?ep+eJFw15 zHl=|#{~Mgg(D5GpvCH7Q9sCzsco8@)>x{8Jwan52F_Ljy*F(2j@3HjD@2ks3Mi<9t zI9`o0(FV`d%y#OQyU}T3K0JG68}ul@Bt?G_mwNtuPT5ABd6rWxIqHuon?uFw_|^0S+|j%RUInUFFGH1GFMmFwsQq=Bz_ae z_S1NFvo4z9TY5}!oMYd}t#YsK8!KA#6{8pO{DvLbx&i#Fj`;WK`+COFfWEYPIJ4P1 zPeJ$-es;oVV?J4D&OMz!1Ri6o5n``9!L#I3dRA{89D~2MLl-e{XXwk%Yg7(P92_a8 zFFCgzc_%%bJ9lWJZ6fFXAnzn+MDt^4GZx@A+RQrQ3CRe_HQKkdOWiIb*Q%h4g{3v! zvTqiaU({Vg9%i9zblHDYGaP!Y_3Vt#%~36t3yu9{Y?O|DZ-D`Usf{tj$b*%qpCB^#$ULcNp+a#Pbcz!P6W?*ntyCAIMG zz5ZIm`s+pA$oIPR5@ap5P8fasVcv;gCwE{U$<=he)Z80s?mg(=d(hk)Veb9RzqiKRD^1?Z?;mZ+O|CP)`z5!J zIV`bS&y4wWqJlAMEI;D+cg^+D$-B7L{&U^`0oT`Y{nAUsYU23fjQ{6m{9}^hzs!%E z*4ud|^P_01_%8Hju3G0{IqYwVfwK@iEZ!09jV)7gK_8tEgU1_&upTdbl6w$>Kk-RB zWy@fj=k4_n{2O9jqGO0VXF6-C!c&C&fsQJEL-%py>2z`gI&!P$WDaf|R_ip5-XQx4 zIlT5C=WCA!@v|OXDtQoj$AR9)Bo~ZeJ$oGSJos0-D2`1~$fFMWLNsAy!@QvhXW;DY z+>Z`esr9)u^cxSz+&D5fjg6~VwrE#!Ve~P5_ZP%IO&;?TJ@&ceUKT%Mt%3ijWHqpT z&d1|+;C=TW!5eUvtrUJFH$^#pmB{?%{`1H2{JG}&P;vs-F>`%%avawenrrqAL0?t; z7JXTru*AGynjFRb6L@X}-xWTd)o;0;r{5;iMrCpczst-!&;j&xIKOv7PuH0L`z4i6 zhHp4Ra>Bq1+fi`-$^_&o@Vdb~=h4tY<|NvYe2l)7o3dvU^~!1ci`Q<>!h60>;D$X;UMk`*ng1Hl;>dRFs%5!lG@agb;IeZ4k~cg8@^YU3m` zj#5L*FQd0Kjyp6jUsnA9-01y6nKhAT9AbbwnWu87V&LC9Kdmx(Ej%AVzwYF|wT~m{ z*f!RoZhnv$2V=A2s?=C$UpOr1+Rlab=_b~vn>Kl|wWdSW1f2V){j0*nJfvfc-GIzX zu|8kV?=aUfu4Qkn##c9az1RUA=mxFz1#K$H$`;m>wVsp3zOv_}n)Mc93yXf8tIi^~ z#ZPLl<)`vVMkO!)sENx>N}Wg^K)~J)Gv7Gz>XKQn&7O6!BlAGJQ{+?2;ZF~xou;}x{C=iyxSh4gzF z*IN4@%$}nTFE-rnc(LK8dgas;6TXF9fGxy_iAyytAg67!v;3Z&(2i*4Ah_HKpIDsj zFYRacDEy3ZL$5kJCsAF7KX*7bgY@iegE_A+l$5PMz|5^OIg>GbUe{)g72g9n#e3QG zrkq(v-GgUVsN{2$fpz0W3(>p@k-lA$V*0+h=)Y0@zxwB z6Z;3@i)Hj79?-SR_2u{@uQ86X>oYFk3;R5*gm7Q z`L%JS#&+yjP)f|V6#3szc~OZ?{X>aefAPo0T;kYdapq%T5NAG7d`;Ppdw_xBP7X2m zG&Yv(blH!Rm0^5z$x88mY^bwdd1vukqFvL=on8HCgIpKmXB0lq+SLZVKlvDHo(s2C zT~mbz+rMyN;`m>p|F6*>&!(^R`cGfOH@IDH;-8`9{lH}}*Tzm3Efb^aCWbEBQG6;& zyw+hJnR>|!UdKJLg)rq3?gurN&1uk!CSH_`E0Vs4^k_1De( zo@9PC$T7{)(s2#4tby3iKA!oAp*w2EaIJi}QRa6=^0Qnk_N=(tHw>MkQ_zdExG%kU za*q6=0$j$}t0WqIbbQH5;lL?zsvF5;nm&MhM(#t?>m;i>kh8v=S|>R*j`b`nrySb+ zqx2{5i}!%gB zCJ%7^Ept64ndSO^;3vCek8c;rXZ?G(+8CbP#sBLKd@Gax;97E6v5cqqU-Q3?cWM}4 z7j)7EZQk|woMMly%Eh;IBDxUm*x#ZX(Mfke-ic0l4xD>6Z?qpD`*dCHw`Y5{De-{F z3HYY)x_B!3U%3tHTVsgOziffWKj!iAk^Y>8(>BH|TrD&AIG>z*kNNkMx1l<|l2Z|M ztZZ$?Xt&ay>AONXG9{f+&a7&Iek0`Z9r4%wtI|AQMO?ssY(ANC$yj@sq_s%plw}4u z)iL0ryfSL{Wk=zgKg^s|%lYCXoyoJG-@obxbd*cq+9MJ}FXc*xcRJLCNMoaqB&Vv2 zy?>#@@t^rNV;D9dCn*j%bO-(~vRbxF$HAUF5%l4P z%YdzN2c0OsF}}ea*2XP?Zg;ogBR0ZXY=SdgQadIZAg|bf7#|2czJXWA_ukp9Rn5_@)p@w!u}2~SDm)Z z+2HaYB{z>8J7A^DbM}9i|0TQh-YER|LR^mGoT?YwJ-;+tzWS0on73r`cwlfp*Y|?! z71+tkkuj1ph3C#~!k1UBQRHd%vI6gAJVQ=Plb5Go*8C}Cqs?&?UTjX1!3piEO?&>_ z@!Pz-kVC=qkyku;MuGVU!865P);v7-&h3?#c(D)93iO#^YGEZPYu#NSaHmB|@?pK)r7XiRtW zzv{Qn<$T~cd=uP@8;2%S1-zuO1!0qBFSTH*HSguX)YE~(lY3ZKE(50GRne){8RAvx z!1s{Bo;{Ha@mrRM`TR0(y zl0Vqq@P%kjd=kvt>o^u#BzG}08rgwezUp7pK%LY#PKHc1&pE_7j@(WzHhXi3Z<$&| z=|N7mgEnNVIpn%XW~Inoh@uC6h}>$EPN05VRpZh(#?kJ1y#SvtkZ*NWKA``RzDeX5iF2Dp-Znw8AkJiBAC!YkijQ?RI4{&pb0<307B1+QIkMm0 z9P8JSAO}%8-|Bbidwyqc9P8wHfO}cz7-WX(fJxu)Dz%#!)W57!B?IwH#;W~tVZTwemvJ=G5fphct=@`+2pWTBz{0JXG z9A(f~s@?Ypaz71E-xa`58a^+aXCW+O*x1rT;`4n=`$L-}lY_xa2Y6K6!ut6g;If4H z#BTo2qT?F*-{P#1|3c82a1svSqz1Vh1}E$tKt_#9o`W4LT1zoj(UOI~=!oChMFIG8 zFB>OE>HXlJ0VYx4FFFwpEMHlh!0I1khZNL6dPK2eYVGOW$GZEkYhFh%?NFFa_z-^%9GkZ zBYF?YP0@QBw)P*{XJu(8eloBHzH#6rA1ubVp>g&lEuwFYSut_Jw3^?$%ymWbWUg0p zZRmq~MQujkdUZ|DMaBun=>wkr5q#YP(jB9c<9RRRw-Mp`Ca$aaCh3H+kHmH>PoB=$ zLj_|G(MARxx|{t-8gopxG~*5PZRetSXzUI)R3RQ*VhnS^L%7Ua*SZ9lH2|}p(C_K^ zC4y5e*LB>_un$f-KIe0-`3qm7<=DI4d?afe)!aw6N}v7{-jhDPjdy19PKf8f&9&zH z2LFB8T#rod@1*gi{CAXJseSNW*xiB!I$^|7K8)H- z`y-PZc;+SU8=T_{W=wpuU$f&xvs)SCOFU=K>#ZmEMK*uod9&6A3&m@*Yl*cijP`Gy z-{hZB;X1p>)imeL)^gtLim20k=bz_y&2Q>`M#Uq+?_;KQ89xq_M?#}Gfnrf$dnW&f+c zmnb^4=y|h$$39oSbPU}cCC|5!_sw1+o=4uy2@&&fi<~!miVp*=9eoIVH_3+y{S5yF zyPy_)&p40$AJ`O2i3>YV6YGUv7wCLpH{_j3a-QU?f4(qw#_2x3-+tA{H}}Asi5tez zJImC*IbZnn9(?aUs|Vj#)Mvl%=jQ%T@!dtN`u_>O(;mJve{<&?{{Iuczw!b2zWM0l z__`3+x*^se=| z5#5vu7eD`?ffxlm(V8l9euE1ytM0*r&!GoSA+JGt2bimY~*sGTTW5&Ac#PNN{?~W@z{zmkR#_tw6zrl|Gn~XnNm*)%qzYzceM*lOGpeaLsYF-<-P^kU^~9N8eBgg%W=5+$agXAS-M z_55T5TN+x!yHVmn(gl;TeMCdbKWt>4I>X^2>~3^#uex>U-#&Y<3dik+4}FHixmCr_ zaA+_#uUDtK5P86~c?4;;oBW5)MITCjWLW0BwfISx(OIGT%#?-mdE-IA01{(pLo z!-K3>OhG3Y8Y{4Y_p&yZ3e=nK-iMuqu9N=54))?Y=$)s5jhDyno#Sv9ZT^Nf<-f|V z!PYY}Mf;k?2TlBcBmc{mxr1x%YqGW760BXcFlWKT`VTG8R0tp6p5tKKOZj$i8W_v2 zjPorz(m4)~(5~(OS<`Q2@*CXyCw)E5JfyS#VEXMj$HDc_aq#HUtG}7%yas!YgBv)< zA?%;yuz_{p|Lr*r=P(}2>sj_GtYKV@jH?d~F?Tx`#Yz+-Hn!qs*@|P5_x|2nL)JMC z&9tFs)y@z3eKq_mSl;KuUNucW9)L|IaE`+y?$7mMBEF8e?CS%bsaL&vLqWKNxo6>$ z;_QaFJ>SAV$Kh)}TpWBCjThVGL!aYdWzQG?K>ooY&T&{yZ0lmqaj21eB2H%PDeBA0 zhO+f#N23E3FEjsn{to%?p1)Jhf8woT=QzB9-un{oiB@-Vy&u?}?!&bOxQeEy^MA0W z>RJ=G@M@~gB&S1hY@OrqBJY2MXNUNB_@hsY&vAbU_bpz>bAK#-WQ2dy_vqvnp7|#C z2l8&(af;3{1J3&B5MXZU>Pp&@-VyvYpYy?sd{EV}Qk>;M`q;y@@NGYbieL3P?+Jdh zyeOLe12$jKUijg(V)nvQKU2JHEVX^kd~+sJ$jecG7X2rphU zkJt|5>7~OM(+BIYioUg1_Ysp_{gLA5EJTQr*mD-TSWtVU1Dyhorwk6Fpx& z*d9CSqA>B@Zvc}FIqk3fD7rd6nnO&V|PlA^@H|oUlUDV?Ej^oceozT z_#%u?daRslJ*V;hj^FRW3&P1M<{dBQ@euFXwiNqF`Tsq@{ad*X^39p>vex-sVmDg9 zC?-QUi7&)6em$VLcqZ$uH>{#fFMeK;T*>vNwDIO1Z;TC$Q8-0s6s4SAvAN-KXYDA(VcWC@!`g!2=B>d!VdSx7;3VK!{6F?b^Pl1l#bPEdIB(Qmj3P0UJGrmA z2H1@2QpP75U}7es+tZLqg=2OYv-aMwVF=uoBs;30DSY6LDtr~<9prhwqx%u~Rq>7| zN0zK4##gO(ME8QRuJ=K|ih)U|9SYy`-w)pp1n~Wik8fgK3yF1|ZSn1tdH8;(H@*)L zkJC7Qj*Ve(jgD|^&J;A|g8xIFA)Ff0gX=EhAr{wH)o0K7H{$viz~@l7{u%%MTW}p6 z=*7ogb?0n^r#}p?cVg=Z*NSZw;`%e-TCuG{T;CMHwTJJXdPkolPG##IZSU`Fh*3Lo z{#e#kz(L7O@^^i_z#FX@c;MMT9eaFl(4HO`~0vF&9~WDB2f%jU0k6Z2cn9 z#d(6gq1B4y*<5#WZJuKd{0aEv81|SG4_t>WyDlFOjGfRY9{3t|zXPrRo%amkT|Kph6c4gC4)e*|KgTnUJddV5yhZ-v&N&~vX&&n5Io|c)yWYsp zTZj#AamO~_%=dlqvCS*^UJ)B>YJFyxm#}x$t3?z%C;gZ^oy7DZPByo6U?NBU&ubSD z=Vo23o?0!cF}jx=IMty}f6S?S0Nize1LaxPU~{~Jy|(~)9CoxO=;as1s7XjomR%L? z=V$MjsC;jC>kI7NEF*RTZkwkQ7jUY`*)a8yIirXg#OC~8@@5?N89Ygw_vp-Y+EM(Z z;_36VXAdvdPQOlUg1Uu)I?JXV=8(eXVt>o?1L>2xOS>}U_Jp0(8DVg;m`{3~dxmoD z>KW(l)4Uqmr}FH}{(RJT#WUxd{~x4IO5q$-Locj7ABA(6;bg-fV}B&=e4hU0bF0>& zr62j}9t~9{mH%sL%&Sp-tf{fM5O_Jj^8#qe;@{+JxQ8`2fdA*m^x)sFo5}wzx?Ob;ghmoAKat~T-O*2mM799fh1tNx(!+DV!|#Qb zly6tX+}&X_x*ck*2@YXuEXBcjE%HTn!%oID0=W&{Cu0Y4>zC1=_SI-yE4W_Kr?%lt z_SVek4zb5iyln9g4zua8UTwoQ+1%vAIZsUZ(Rs=f7>8tMi2P33gX;HR#2~NZ+VsJ` z5A7|!nf~s}<8`sYYm{7v9=w+Mc%@D(*<~K0k0GCc8^cEA4Qr@-xw5wjE9PlqN4IFq%9 zuAcp*I^g`W|*Jw zypg;f;=Oen!87yg#lHWd@MDS? zg~1cGMt@JOQOl1Fj3W)ridI)V1zkX=9pq+;Ru6}!irE;$;MYPO(}<2ab@YIhUo!I= z{f%4Ku%ER<=V#w~kC$J-z6E?087Ub0qYOE`+cy@WoO35krncS4~G$v%x z4(e;xYfQjYW7;v|%tXw{j8L*;0ku58*FW)3;)grG$NvkWtvl>{%;o&xd(6dKr}y65 zekXjup5Zj_Zl^A+sRPRU=g{^x_LEJB+j^b1+@n1}?04-opPRXthSKHHZJzsGta0_vtaqJgNzBeYd`Xzpn+WnOP%It&|lV`#^>D-!9~ zSaiYy_;w+AYSPgQ(b4nAqNkmbnB1Kb)9jgnifzCG6iIFI@U7#Cyk#=$ls><$3s| z34eK=6CULGP_JdMdN0t`#eQ?S81inX;d=Jqi{zsGVe>4UC4;$B! z{~+LPzpNO0_rB>hQaZyLN6;v-zVBDGAIh(2Ij*lApUwM)i@Sb~EhAYc`6W4K{e=g(kH3)TPlMwEf5H6_{zB~E&L!~pZDu$AK`*==&I=r9oFdC9%k+LE&MMNTj2e+ioS8`I5|EMa{lr* znXiuqVY}Jb=;uGgyuKTp7yj=D%_}}SFt4&t_nO!7fq9(*jEc?c;lR9ZD>APr_F4n; zGV3P3FL%@vy?r_Hm;95UUv@4sK=Aqr?f=TZ{t?$|OMCBCM@MU-^4sv&*mK(BuXV_e z8-mRlutC_zKBXW1Sl{iP&5R-7yB*YjzCR@2&808vyWM8r!*}ZlzK8FoHAnlN_1&)K z-JtKLoTS3}eT;jBe$|QG%N6);idE>{pzo&o8^J#3`u%m_yM2=J6t=5#CagaZci( zp>KGk;|*{B<1+YT*&BKXUcwI@$2>C3L3uA~V*%}QUa|2v9tgCT{(EkN=%AYCet<7A zcf03H{1Dk}W3};;zWd8u`nK}krElzy^$Xx>tw}F{r+a*fL5Zs>Jzv7`wa?Gim)MQ} z(2u_5OXzwJJQw1(#w7nnW4ewSu<~#I$78~8%Z~|u436o{4;a(%z?j+@(=hX!d?8@@ zj4u~-CY<1{dr$fI7BJ++wBlXD1CssIy`H0SI=gj@Pe3PKdK4I z`Dw)0QTx z9eG2{FHdvK%hab(?e~3Ss54Igf*<2vr<~y&^U!(mh2x*WdW9YTvz)0_IQ}sAijBX~ zAAk6$p;M-?-k>#2of9wmwB!GY#(%iR@6|y_`L&pzVElW?p(%uWn*0&;;yU>!8%sE& z9$!N59vIDDrodd|%$50?GXf4{o-5w&zfwLd70bzW`tq0Q$**P*~3wFu{I z71Et(b`12o+^6x8T&ulz`EABS&Vu7av$L^VwEifYPr;6?gFM;5bz$E%ZOom%$=et) z>`5;NM{5_Fvz>34Ikb>38Jw^C&z|{)xh6MeL%nh@ITPN%*Pm~g^=9>1qWO-~d@J(v z{lPzT8=j>v7rqn!Jq#^XM)@c=#OH~_pedL2VAZZr8+t$P)744h3u>~z#WUnxYF)vc zbKStZHiza(aJ!y91V^n0Ox88er-5y;=UaJRc(AhF;DI?<_yY%E(=(Rin5W=ZjUMsx zdpOHi_~JRyj6Qb%ij70|m4};+JT!6;7_5OW8kEPwb>xbfd0AM?{k$v`?*O-l;Y$NE zep{G5hFuZvue`#Zaax#V@QJITLD7$;HPKJZ&{{=uE@SV-lgK^slAXRU2VPiUXWX~gE%C~ikgj{Ti|&ZvHd zb#ldOawQdJo$q>b658Me`66lX8+l9XQZ?NT*w&&4{TI3YqC8EkK`)3Vq-RgThl%ly z;Zv(0(MO7rR%<^4dho`8Zj7S~ozfoNs67X<0PV*lSFrmpgzt2Q^&WGE^~mIS;NzWP zJ)Auv_6+Nh$$Qx|D_N%8v=@n!(qEpB=*!e{xE}pOpZWXrnGF*UOa-1z@ho~sG@94j zE@KsKiLR74r!%fCou*hT7Ysc*n`vbCDgC-0Azu2<0?ux{jQkXP)+xAHC;6aruxrV! zjzkAEN8uOgkrc5$Cw6#qZF+oj!!YU~lzXwe!hY4?jo2yskVV3m@;R=8Pc(*A(2Kpl z?A@G~3xYp6)nSd*$MHVaWNzU(GrsVV&Hbovqu50maQ-v*W6&9VwRJdlTpg~zYOY5nKg#vx zT#E*3qh(r;BmOfYdHYf9+1;6|c7XZK{C^%}5I>#3wQ61|#{MJVwuD>^?Qv2*#U}U& z9?j=dq?l)6KE*NQQ>0jT|EZr(u`Q5K(Sq%mV%>eC*4^Pz#aC9d9!o7KlTQ)nyPwnd zTx?jOmq2 z(5UrnN+>T z?=JkFLcdR^zsBy|fyP*%wC0;7Kr!@If`Qq@XcV;zbQf}`#uX_LC+mJD&;O^$CGFEG)G3CR;J;1aU;LrpQ^2dv-j*Hvd)_xPnD2R<0jlvF&vV@y zz42fRO;Rpd@Ox{qFbKZ57YmG%;X1)2Ad#>glG-A%*zQMaT=Wk!DXMNj4-?`-j zpT8Acy-tqHe;`|q3yp35HfvA=`98SBF}m$??r(7hHDAW}ec_|cS|f3gKfi_IZwCg_O_#%jeg{;uG{#1 zW#*{n?Gr~POk14A^Ij6M2sZ=9)$=IztR`2CG&PD5Y2 zSM#Z=NW6DJC7)VK(l4zZjSTp*Y6YU(>#E=T<_p^2 z(^gV>+lG=6z0Tjbf_xI>(uQ||my1oN_SBZ%RsXiF4Dw3!KJr@R$3|+}{q>wgSLfV> z&H+{J&onW&^iuFitZm;T_)p4>Sk5=~4AZyrJ&*6(_^#*sdwgTZrSIgM+_dy6zQ4rx zkNCcl@6~)?!1r3dFXj7wz8CQQUwjkO4l{4T>TlSZEn6-E*4UHGPjDCuZcfphz=iBa zhZu+E@yvPbrD5-(@Fm=VGjql)_-Ycqge&1}--o~#Hbj#H?@G?rBKt$J+U!i(kqfXR z19nv$yDAm8oby-w@b<+a&LQ4-Yu4!SXR~*i~gRUeN zo!=)wj6K^hpE|F+qrEKX@j3OS<()N0V{@|4-(h_%jjRU7`TFE#rFGq9uO*vJ_3R7|zc?!^ zxRrtf)otAkjqOIxzeilS8#?PozwLp}_Cia0i9f5(>K@^?bU^Z&na+l`WzocRXGCWk zXVWZY+=FhSPi%~lH!kVIF3Q`*4)|FD9~3*=AkG;Dh0oSZzZf`#I@9Ro684&Vc0r|Y z7gYAL3nb%Y>y)r>ydGPp20jl%y90(OU(o5?;pd(y*Wg&>j#D1Z9(Gj81p}~mrgK(x z8?m`6**BaO;Zy zr|Vr?xX$odAG+qel?XP^=dU>*930*0%qC|69JqX@JC&x5D!!HHDZW+yuKPLg1pHk- z1DUt*&;ag2;K1d>bDiUD4llNpaL~v{I5^J71Gb65L)+IpJWK~CZC~a5D{vw_gs=AT z!1rO`U=pAD&|z0bn78l{rd{FT4eCn@7f)aZzVS89n{zJ)tRDSsV%h`ykxvevKYbB! zahz)5LwRPw|K1?yBEmevj8EhK@)sFT0WFVZPW0ET_b<9J(nUNmt96KhyK?zHenyQr z(Sd9}J$Ed!RQtv*mrRBKqc0yYIEr4}*9VQ&IP2X&pDz4kS0}MOFoUx@Uuc*n!kt_Y9(QHGxlbyi$@QqB}1=TG+ zXCribu~YpTu+^HB7w^JP!lzF2|2LpL_CIGE=|2|Wff#U)GA}C|3+b){IUv~>_T}Op z_99r>So0EgX#gIQC$W+q{)&|_58m$v&cDDerH!p;0SECwe6C|+?slH35_Cri=fE-d zzp^eXSf%PrEUW1huB`inB-r%m#*)csyQ_L>6~my zSbBxJ;oJ{%zhj2?yW#Tlv+a8Si`+ZczxVh#+28B^FK}<3f3M{H>=y1tb+6vPH+pWi zjeBveS~|lOBv%W7cfTot7DQ6aW8cV&wbW^?xA_v z2e}v4y(|5Df0~#58TZ_axp#qo@8NmbwcJZz#Jx-Xd%v2O{R#J?y0^f;cgw}uySW#i zN58|*Gh@NGYEo|coqGR5?r&8c@-azspSbxQ-2eZ0d-M3H>U;nH%me}|xR8YqXmbYC zDrzedf~b{AK*U`kim10tz^=CUeiauK@8txwwY9a0L~*N`xKwj)ZDUQUX;mibwXJr+ z-MW;S1hF;lfMx$-W_r82SHurnK>9=vz>DgY_{c?j1!#UD?VpS}d0Z!$idDXxPpE}z)nuzg#27yQoiSZE}h z0tX6lE_EzFk7o<1NPIQn?++$JMO{kq|{I;(yqw7#;Ac9Er* z!50EN0_S#%*%bDjJOtWA$D9g2Ze3G>UOLgeVQ=s3LdozTXRiVLZJVxhnkKrE!=G@L z!W?pIc582rPe1J2QOE~skM#I}BYmWFh^`%t6MVIhiG|-}YP|N);}?~Vvs7D>wJN=R zPx($~GZ}w<7Juy1(yeL3=+@|jr(*{Py7f6B@7{x1+im5sWYHlxsLAZJpd$9xPJ)3x5v4aZtCB9SMy7swv zp6eFVUb#6_)99~{FUAY|)2^j1$EHcUru;hQLgbAr7P zN77Yna48kyJMfZhigW42Zw{p$`D0R?w`GTTl?|_Q*t`4ky{+tqfH(6_1MsT$`AsAI z=1FXIYwp18#t^^Rz`ew=9=~Y}@tbb$C%+0k`TV94ej|UdrF%ZzH$wNn()Y)3&!_Q5 zXx!yq>S*ryG~Nh}-@`py_k0>}gvOKHbB^Mk&x0DHXJv2WUV08=ETHcj^*#3k-qZ+h zYSQ;da?hvvMrdCCi1h4%+0NH$;a8&R68DC&{yr_U42|XK8T!gvGk2$fID2n?%-ZjT zES1jr9emTNy(eE+0lry2+&Pa1dBK_U;D!T_NV4pXI%F8y>Z3GyROl=D%~$Ku0!ZsI>KbGy?qAD-3qQ%-&oH7UY?io|6TvR z{kY!7T=(JsF8)jBk$#wdGsijY`0KdNko#oOr}Jj6<`2B{6n^BVu<_qy9dwqD`VP+a zk&STjm}rZ2U9KiVAL6}%ZYld#a#gtmpQl^Kq`L#Ju+0=5XLU+H{2Be*@OSaRJJddU zLmFNoy&=al$qwCn&A+#mduA<=C6e(ka=(l33-^d#{oAbXTr=A@3gYJMv)}k9=prIM=ckYl+kMaDI5eN5prQ?By&9 z_=)s6@ft_)M6X09JnQhCgAYc}s?hsNfng%_JfStlANe=6P4%P&Xw z5}x6Yo*u@v)c7$iEu0VL?Kv{pZDMY!SvC9raIJWe@Lc2hA-`Yew_xynuC)e&gU&}4 zyc)Upq=8q3t9SmB-+JD2Z*JCX^Uf4=|1$r+7rUM8iViR0-a&kuf^L#8@;-1nk2q(_ z@BceImtS(@Z$AUpz@vwAk8=yJu2O7a%ikY@2yNh{e z4>Rs5?&(}dxIUHt$MXMV{-0o;O?FS<`UtMQeKjY!$Ke-BuFF*i>#H$atXHtU*V4Z9 z&o=rj=DI3UdC@_6Kj*c#Ucoq5JqmyOUaoV_4z;V?EN@TsztFb)toD7L{;zf(q8-U~ z)%{6d&P*$2|5E7#lilmbdHa`27RDII+x)K`?<`WCiEwB=*H`e}dGwdWzm%XZOnWfE zlk$5o%!2N>@J=wFU>+yZ1~%&)Y}Pr888f)l0WNI}@F;_xA-;7OxFpyeO&`*Q9yMz| zq<7uo$K0LHT$f@EOBmBa`lId3Y5VeHXuFzkk+CC=Z#?7EH~RJ{zMBi({t&utgl=Qd z?X`SgNXriQ6c2yvG%Ncdwz08k@X1^FiHJ>$X3hQ#Z=qk~&$!`FtOIu89PGk5S|5G; z3^w2-=EeQXxqtb^=Kd7-f4ILl_oZ7t&b8{Kgv$-UU*~N-#DD!3{Ik5HwJTxV>-{N7^R;rP)7& zeKhdFC`LQTd~>a`KYu?5WMtKhP^WV(C4a(Z@Dg>Cw&d zRS(Q7YHr=rs|D}HmlL_lYOlin$$oQO`z7$Yr}i$r&LMaIP;BUnfpIJ6L)Vh;{u;7u z2|jGa?|0w_+7z`ud>21Tniw5=t-A$(b@bs=(f7*SDWjt;Tcl^6$DYK+=z1%>_rHgK z<&)6+y+@s8-rv`MKY<_4ywAK;>)pCHbs>}KyExvSQoldgt6lxeuc`ijJk_e#m=5Dz z-Pg6oGdZ=?JU^w{tFd@w`A|%9Q@9)DwcHnRJPXtVsuY4U^Rk2cTnNg7}F3Ti+m zV#m?1^ac5$(BbMc=v}%_Pg0)~-J5>{PLoTlbLL|BZZmT>)oF7hh73cjy&^pg4FnC_4m8IcF(hRh*K*cL331$#_Z?g$7gn} z{_A~;&zSY{e2yK;MHsDI1Y-TFF|ojT`ujlgW(#f9ITKA>XbQShA~d!HW3%m{u^Ab| zxEhIl-^jSsuVO+PXD}9xOR=KDaomZFYU3}K9@ku#9M{~(IvoSJ zRlQ>taxSy>^PcEVX6)pjR}W%)#eG{Pj{i6g-tNFo)i{}xp?BwPY-;W=qTL(!jJ8Op zzmD@8lNDC|;QJ@EpTd3RYo@Vv)z{nXahAdN9>p(dll#yMT|*0oUJ}>=#2>m3He;-G zM>F1&3csh8qIYlWx(MILp|wo-`#$gcN#^?!cRN15e}z-x(_s)k;sU}Fd zc8#l7z>B?Hk>%L^wu$|ZTn7~Q>qVC1e_4i4whcL@`tk()w8|P@U;ZU{LZZamM?m%E zRgt0k^2YJRQK}Rdn0!&gmxk&^QrM8H7jcNej93Q*-e?S}FW*A0yz0vj#SYp$+1p1T zLCwet;I=7Rum6CxCZ66E$d8qh^{io{Wa(fsUt_*>FrKd!ne1+%HfuBSzgvVu z@OR>gorZtoTiZhJ{?~zDVZF#^_~ual44Ae0e z@hF|)_cGTh=r|c2s1ZFJ$$jabqS4i?^P60EF&D|Fv(5c-_Y&^^#sAJJ8knti)ZSC( zd5QZyo`1@xF((O zTj+@iW8YnStLQDsSc9>rU(D4!sT#a#AFnX}h#F}5Yo@J%#Z4?Lo;{R29%E0$%bMq-&s>c@ zQ-loAd1hB}?qVBoJ5GI+jA{QGvQz8Si_M%VIlf)?XABwJ`vkHdo|z-gJgaC-i+G%~ zpH-b%QN;a9H+S0j_V+FC95=x`EMsFulAE+4-DCx4Hvyvzya~{c!--7Z#YD zyib{Hx+hn?lV|cz+2D51Bghc?v3qj(b1f6|FylghT7(}|@@Tg?fe#OD$PrKGyftsE z!}KY}D*tgF*V2rgSf+f5i=+R>q-R)G*G@qEGdgr2a(uhUiLibu-^c#y!g% zB;(?D=Q<~{ZaL^Eyg$Md-1`IX*wnV0c@)@_ZQ#+{^cmF6h{nK=CY|3{M?YWS+aCG~ z>Swxy8^G!Z%v0kcugJjo0>=JD55A_h)wGeEW$^Y|`sgrooai?2-s8OYD*Kb=@ny~U z_Qhj|@TKj&T#fRFh>JG)I!aTZqr5^ps$W;#x@R|`8xwz5F7qYSVd(7gT&}oX=ab66 zoXfFK7CNwWU*`a;zGo4>4$k>&L+6!#Y42~8iFUbFNB-hWQBPK$4ln@@l|1`Ie^hegaGlwoblFn(9r<+3u zNdgD>-VDtz$^24`B?2r0IzyLG{x10-W&MIfnp#CG#OEydTm+du0G#PBzqdoueR<;HmIz>OF$n>DE6n#0Nz8!wkZgv|sMZlA3JL{BkekX8ofZ4}u_G;gMGCC^# zjI`)RH7CD{5w=o8TvTPPHWK(6NvwO_C>j zJ&ZnggcqYyZnk8JZ15S-!Pdh)S+aHB(Ab$@HYFG{|8;v5!0B$+pNGzY2_b5{j zWMTVG`vv=gflC4WzQ^8Df?ot!c(p{-QfMCrY-#AGxfR`PlwV5}VO?!%iBePct*H*d zuY~mv;P*RZNn*SQKeeg&p5T{(-#*A5IXd@8@Dseii#!g17qso+z4F-8z7ICReaEt} z0ZQDH;gO=VWC)*~$+FL7OIuE|g5`t#OCyr=H_&3ZDSDX3AI0*}u5YayFNaxkd9QLZRFziS0FxWd#L74=)(%hwuVepQ&`WM58V7u>-RU@hE*#JewMUb~EUk>EqF3z}bK9Nk4^>LR{`4!e0`OSf5#!_tUB;3;tIy1J7=>8spb2*>X;aY37 z%qr@)xz_r>w!vG2_pXOa*>Yoh#3E%1ed0<&MuC2=!wr7FEcFrnz9UPQQ zm0wD-XQVhsni>BHV` z_$1OIyirU>xbtt|O~6~VHrne+dY|Sq9h`i|;3xFYbrW#>Hnf=j3_7a=jwyJZ<`u}i zR1`fJTodeMN6NQdN?ZD^J*W!TWj*~iF=ov}czy|O3fIlrtU>QtvuFFy8B-B$Jjwqs zPtcnG47?EiY2DAH{VcR9-u4OqPvHM{{-4Hw@!5~KzSUe$a^L4#v6I3zI01M;|9M}x z_;OIMBpprTlD;P0?M&#k4IioWHPzQje~%@WWRExmVSl3kgv5> z{n9FA^uyGeNhi4sA4$N+rI(~b@*oXgPlV(Od_HSYOO&L4)e~9wotsrn(Lm8y)*kz6 z!$>tn6Wz_=uH*Y~UlC6zl*7~xy@WiIy%Nah41LwoSBg0(SJkd~rN+zyTi?iJY83+A zRsQQBckjt)-QbhxjJ4#1I`a3R+r+46tvd#N--k^aI62hKNUvx^HX@s!mCjZR&V8RX z5?!pTw6ZgIao*+ryPtPC71=ryJLFXS*}cE^Y=7-%pmo6qvGE>icU8Ar1AM&N-Qxyx z=Z`*R}{PMI8%Szz*ehjA2+O=FtR*kqH5=E_*ZCFZ)^oxpW?yu;hB zaQEan@eaP5=#JsKux-uzFxu94J-qkn1}|Q#_20p@>PGbK0M}=7eFU%-{n=cHbpZP# zPreu&_UnzAkFNua?zg#?4zK|`K1Hpr)<%2A2K6KdnSM&$>v!hXtA?u3_NoJSUuFym z_=DAxJc!PrXVN)u#aAI7kP7LL z3Hs9W-_c(i@KIgbPTJJ?N79X61g?5d{;9&}nx_RF{)u<~jpvHxNf+4{-YZ?w!X~WX zc@^~e3b8oZRB3XHOVH&QS9id>67Z_BiPRv&Uy`BwN$&4JCJrJKv&h6g{NKt~^v=JW z=>EpSe?5jAB4~a#u+8=_Xy1lROM#Px_*)15rX^#6nS9@pp`Ws!d>``EYqQkQT-)|Y zi~RPHDc}h5uAX@{axJ~E@cZ}pUVT6Lo1N>WPd#q_bKWBVO`QneOCHqneI4I3x4hhA zZrGyU-u1$jr_>K{K2rTKwqR{Pl)VKk$*1mW;n^u0@K5r;5El0`?#IlxW$t|55k0AI zPaX}$U)7dmQDD2P&L`)~P1#AgHRJdj-`>iama=}*HCI!wvKsyDM#jGZyZ-J8=ME}I zyaoP_Zr-JRbX7lfX}Mq@@Ba9*A^U>0=$0IqNL(AI3b^UnlFE-sp)c}&HoJ1TK9Is+ z7C}$6!JS#)PHF^Qv=&|RRqn@;M}aO8FXCNz<4C>%{B@o3T_}e{JViVqsO1S_G#cCX z$KY4Mj`6HNt;m&KH}b^5ZjyYtid9 z&s@PgXgwU};xLxvz5_K0d>^?rd*e5n+;0Ly_=tFJLt_>_}J_{evK}O1JOv@$#hG}pG zSY(s%!VJIRJ0UlZEUIZ@uE1dZ@?|hB5*L=Rgwd4_evcsBB z{Fyy9wEx7PHejC~E?n?(Jd)Jens><8)R=yZjcV#9wJzk@Yiv%Gu|e}1$LX}I^HvO8 zKJcCk*Vz|>=aue4o>$}Vl&vVesFt||dQpbC#Cd)c&oA+x_q;pwyn+22j^z2bd6w^& z@u}YPC4j??=%$RbTXlZGGw)|~c;B0MiMzS|)Adz6OH<=Q8~Hi$ zebzxg;QMTjcEfX(PY8Wtkzgf0(PhRy#r-2=SH6<$<)^q-?9}3&s;-^u^-UButZXUI`=ANsN-7^R39ZfM9r=H50VdG9=~pr50JrC&>&D3? zDcewh+vpcz+IM0~egqo?eM;0$)TQft@0|p@A6KNOB~N40=WM8j>%TXbzb@l8v7N zM@!z$8Gm)^pMKn4ILf{x;*rZ(o0@;-W=T(y58_;YEA}D%^K7ma4?Bzh-X0p2?qaUf z<~iqoaIO40$(vKS7M%;n!uXYd_JlLRy#(|pJPPAba+>BZ|5%y3`aml?snS`rUt~;+ z*7rBGIS1IH<95XMou4(h0<7NPJO_Nz)p2MjN{y^&NVH@@Lua91_7MZ?y{o7>bCqIY zW$qcDMp~??1G5J%gU2!^;kkpa-5P7nu=Z^|2N-rIps~VrXtN~~O59b9>&Yy7@&(}k z7kAg=dbzg>8tlWD(_2Kp)99DDwRFwiAB<^#1KF9EKeQ3RBTm0{$e&u|Pos1}a595G zM)ERqyeEHB*p^vheDTnl^Ig`aPv(+U{4b|*`T8_-$)@>6xFtF(oKp|{BK;pcL#7oz zi|Lv8;dLjqn{{LSnQsyo0p98>ds0C^=sSfpaVqbg0gZa}Hl%mdp$Ay3-FL8W#REQp z_9sJAn)4+6r(ew@^K;%qE}gG6-ou(TXA#xsj&Q-HVh#x!xyAWv_M+F8PH zU@}VA7jV6Vd2*eAfAq~`eehdluELK+U!SmNduFfW(Z5REzImK+u`ALNA5DI72-bq9 zjs9l7-|K|-%wqP|q5ljpGT$+t?vEm7FS;XAFFS-7g;W*394vFb>w{FTk`AesO$5 znp=2X^gGYW>io=d-rIx!-Mk}x zX9B-#+Ff4P9#159dB|aOWjS6#J>3)hV+S|XsgX?c_y_9*+ zyDj6wv_Z@V4Kg?LxyzAhobwzU-G^%j+?#*2 z%jB$B*bi~x^JFVKk9o@GPRhqlE?12p%$(xYuRWfJVo%P9a&6My{nfb8scPj`qG=3=V1Tn%BH3)){rH zzA#}8^P7Kd?G?#^T)p0#iQOQdZ8$EJ-^-slCyEc+ZO(D_S_$TSu0LmVul$^g{W-_E zmr#w?`L+M+IsXV)|396xXeF5QgY0>4=F42`n6u^^uc*D^V0=O0`N{_^8NUo%60BgL z=J&b&?{0o;Kb|Gz9Y|JEFHrw6zZW0sEP4t3BNc*s3b@A^gW5r--RK~bfsbE1v2U~B zdm-}tUeiapTj%$&-S6XAzYm=UqdvCM$3J)mo;6wIh%BegTK?)%HJrmfx>?U9M_%dh zbgIvKPh-`4f8o7XX|LokXVEMCU#U6x|K+pLeZ>pH=fxWT_(Jq$=;JKbP<{z}PixjX zaP>0A^$EELYoZhTu_5Xc_)wi$@`Wjm;pyLjd{2P032YGbm!=pwHOd=I?qhPCo0M;( z-*NT^VV><}RoIif+atLS%=QJ3lmq4f+dH{0-=E}79Nj?vPT9kO&e+2mw9UpI8E7k=I3%j4OVqp^Zh(iB@+DH0OkLLyTm|ouY`PSFnzQf&(09Hs`p#Ow&a=hw(d73a z`~7|5y&wF-TR+tW2}f*lM}#9~z)$lEaKxX}uy)~PcaL+)k~e;cf#3)+Y)U}Ij?L%n7ae@v^c$<@?;RN^TKa{JdPf0O^C zta$eU{B5u}7Yv6 zC~MHGoO>VdM9ZS%GJGZzc&Fs8T)xc*IkWaz;z3`#pE@gaBz#fR1A333BV}ms^3A!L zk!VgbL3|+K$0m0ry>IhAma(gz`z)LlUw9RMEd5C|MC_?av8N}Y+vlOBeC+8oY#TrJ z^h7B3^gZ$#R}{paQlAlf3i5qY#GY!vW$D1d-m!7`z4Cqb`Be~mQfzr>Z@8_%xElU- zQy=^P@JGSSbZ)R@oM`_Jet$MRO5B@x z{srC@4YSW$r}nN3=r`7ztKW}j5g)JZSD-uQB3w?QCj`8<5&K`ZN{YSz0$%&Md=?oY zKKn@lpS=@3TD0K%^GvO*WMeG3pULt2DY&+l@vM7c2#;p6$BEz~_^n_rKSOtwd|Ac2 z!ae+o#>SOzf6On5tI)p2+5>*WH=czT=zJUe1!eAHzF+)quJa_?kUUbmK~9Q;j?sob zW#;F{qtfspwE6Bnv=b%qrK+V`?z;L@}hz7(3kUc-oP9h(YGdMa z^%vxO9)})(Phwj0eEwg}-f+^5kXIWm&J!SKrb#(7rhX0^+uPgLtF2Q^XJGvv?enRH zTegpt&Gn6KpGN#meD)ajL)E!O)`9R{>W|Xc9#MQ?2A7Cktnq8X?kD$c9{8?&)HnAb zE>6C*_EB4l&Z#vr`*$YxGxaj3gUfmT7eAocf<_`moHPDuvB}d2>-@vxF5a1-mmoiv zB7<%6yGsAD)Wnz$qjpNX`%-vZu>a-;as?98tol^wT+`dAd)t8@=Xd0{-;IoDB`*IC z=Vb)&*^UkPF@F{CcOz%0CDFVau}j1Ym9Kd;c&7fzNoZ0&t=b#M`$wN0r-qRHs@KN0 zZ=hz*j1fIlF|hAaw-vmv`!VIFO*uJh|DcZZP^3eax|QU@h`tjCO3xh9LlWpxapv|C zxF!8J8Ao3U`OXvgs#54Jx9yGI35@nvv6@M|%?tc|bG3EgwJmx}Ff zk2u`h5UuEsa9&VSe7lrC@--C8QNA92+NKrAwVA)FWv_X3cE*=mvL`X8DEXB025n^9 zs9(ghPtLSDuL0H@l*>BHs=qoU+ql=Cr1r7V&#PF5F26tD)>7*zdI@qXoSB|{D+RWa zZx^!;0SuM^18j&{(iy~mQ_Nqy??0J;&9R>Ssx`TgHPM<`N9`Vqz685@F?b&|>+1}7ye6ueHpj|_+wzsd=aiM*+O5k0h z0qIN;zOmT%xscyl^!qAv7d#7bAw?cdAuc3X_XkILae*3Q6R8lcq=YN@a|51WY*e2w z{Bc)t%O#s~$|ZTOjc;O`yjYZEU(eq?8PWpX{41Uj&@AVx8+vU8Z@!n#)o+*nFFx|f zS%#1N1iy*+$j70YS@97EpGTOF+yoz~!S{G0a#%cJ6tJ2{ea4FOj>}Hwd%>mWiq!+H zd~2Ztug&Y!MgHDxMZD|()*9LY0IV2;U``dslKLESHDcGmB4cTV&Y51UnU9drR z0lE9K3tHuCKxc2&-fi&l(eRc7`P*cTzJPe2(Wm=}xuviXf^&Z#LN5~DrQglXx^4C9 zfd`Q{PvajD|4FmH!u?$;lY_aupu~) z_TfBw7@SkGQ$lcV!~QxD-QR)stE~V1IlMjC+k$gWaAvP>!FdyKcCe8*3C{c^xxoCTFMi9SyuW7i|T8v<-g!+-BalfuZwMu4^;v!CHP8;rp|g z|4Yao;hFGPakwaaUB06$w?|sUtCdHp{Oqp-uPUDh+4=o~&mK&L&O+Nvz1^GmSs#_} zhJM70Y|ho{Tfd;aj=r>~)dKz(o~z}Z!F%>#3>-JSD1wh3ny}$THhe>IMz!5bZJW+E zZO2yA*;3|gQ)=79&(;ob_AB!BCh8y$0cW)St-QC*ta-V6JJ(sR|BfCOe=OJaeemWf zbP4S63N2ybNZDIQybfN91#k2dHwo2R|($?P$JSs2xK6;*G z^t|uiTCILL*Y%(6-uO&S7w5Xl|8&wzxq8vSN4q@TT6(o)O6t#^UR?`ZbgqQ%+1&H= z>Z1PCpFF*K4fhjVOF!(vHj-_`twH<|sBwMMyuS}oymq*!)2YSVYjp;GvxdFpdqhc^G^kR-lVH__3ZK@r`=!Wnkgzw~R^7 z?u5@J=tyg%d!c8KH0CONQ_^L`H%nQ|K!;{du61gDK&m!E*`vsAQ@QBWJ*krE*>$hl2*MH+W+_!@q$n0In`zJJyVNGSH6!x!i zy+B)AX{U$pKH~qb)gC-Vb!Xd^S*Ogn@UdF2N-#r3cTLmB95qtug`b?Z+uZlvP60B;# zE5(zer>@9NlU~x;zANwVYQ+3l3 z-jy8o`0FDE9|QQGj7~1RSTP0qfrnPZV;k||#%?~x?8n`!oDkp;_wi?D8TK{ri6GQ}n_`1*2|4csHiUOWaTy?}+(H_}Ts#_RWF|5|{`4B&M&_fbcvaP+m zW#yv_*M1JpwcrO}ZuxODFYQ-~54qf(jx8;?1!K-J2i0B_j=c|GM=fy4Y3 z^KO7|4s(>Q9=2hFSa%@DB%5sFOkp{udk*nmPv4C8+gwYIE#rP_tK?X@djS3l$+09j zBc0Ren@{K*`EtLmjb{b$POI}6WCHeIzB?nhICE@|1SH)aQu>K1DU;03h z_iw)Uaq$K0#cln$t{WJ)^^uYL8+{!&U&DFpTO{6gDQ8-3dHnT3 z!(Z`tcliG94*9#~+m7Q~mA`u_!Zb46-~DG}BU}cq*5JoioL2ts9RB3{$sG{?Sp{DX z{M|Y9oz#)!Ea01JMYcDfW8ccP_EI{EJ(a1=Gyd+A@t2;93<_YBSXoPKV-ov#PI9#` zN)P&i`YPF6o1L_3sII8=(jolYhdDX_9`NuMfQ)!y}> zN8Srxn&SJ|<&%<+Jp=zzt=qt2#%pWzKPrH=SiR1k6b?Y>(RB7RRgmf=z1dbJaPFD zJb#D%kouy0?vjb}XW(~-o|OlZ##XKPCh{W0izPGSGq^|mIWI?uJ;x8<-8Y}$-fQ%& ze6Mr^IZ40-zCKKk7q2lm?&}&Ed^M>A`++ci?7xk&|8gt#YM*N4t$gvG{U=@Fu6ZGO zd;SRWcEymqm2BF-!2U}uuc(=`ySz1g?h@dV{BGcfCpJipqt@d#V6yW&Bg@;=8SHO8 z#^|{lEpmC#7dFSXD4U_u+d;&VPc=oEx2UxQ_oP|?51LrmPUm~<_3Dzxj z9BauMsJ11#(ATAZu_zlo2^>K$+`^oKhR_D0sk=zQ2-Ky5;*T zty8?%$>WE5=a!tqTIHgZ{n+C5+6(3}(de_rk6>g0zM7_B@5=-BCFbexeYpldlz8c1 z`7a*78{Hzur$94jM!k9#)$>i%dm%VD;6wtQQ2V7mFMJ8negfLJcs5e~5;<&&qZnC( zES(<6o69~aZkf%q4DD!40Ul&%s{woN75a$Ke{erS|F!5S)z9FI;G4|TUfiXT_Zy$~ ze0??WPUVv;Z+0fvvVY`Q;wXCpn>W`HM}a@4{WwZ4h@F-BcjLd{y(@U)EJNW+tel!$ESvow9LQF?-jtlTTs2}kq{8pWP#1aDD zL>y(~$Z?dVgSCoJ!Ka;(;wZG;yP7x(ym<+0xcR5VQQ*zJtB1!?Ze|_h;J^*cH)&ZW z4)EH$krwIFiSAsN_)RUmC*TtSj}Y$2=Kb!+#VrqS%5|N?d>d)Q=9~b*hqz0}Q|Pqb z`Hs?2CcB$gcrh2{6|4nbsrz!X2m4NFm;Uw165woLHaylcSNOSpO#AhBd2=wami5QC zKW^|=XKNAvV}4&U_*&^s;rhE=@AZQ8*((N4E{wxG>e*q2#!VcCeOrrutL zrSALq7YCWonRj~ob=NTdur74~del+KTjgI#m&#qRm&x0UqED%2>3Dcf4nBB4`DSr+ zeA$WGXDWyP+~Qu*s^tT9iWB0CKi}7<9_O1lz87onikfrL6C^w2zjz&f71)hiz#SVq zcnf%wVy_HuAK)pj?kCW#B-7`EyL!Hwx$k68SZ{yuV)wW5nF4$12M=*Q-mK4Lx0CB< zxnId#1t-;p3GW3z8`v4VdpOti9{r|)muE{2ojnpmp7+s4p^S6bS1ryQDp-H%(-wJ^ zR!C<<-kUv4R_#5cgQwB4B;&S$o0s8V&5)C(z29FW_MFCltowqC*6I+giC{t7?Pgvj zZX@Hk(4XUfaeWon(&-K(E|A!J(siZc{k~3@d>~gZo$fl`*#dw0joO0dE$rbKc~9Ce z3cI*NwzmaMU(Y=BTrd^hbuoq_#;}Dk>7IU%=C`h=GR7U?r{vY`8V|JpIPlFt^P(5Q zJ8Ua#h4&d-;STs4&xDVGUU4SvzR$huJ^0I3H)9IMsIh&Mu}x*n*r-hbKgdKp8}(b; zi(8iL%uQ^d9mU}l8>(;3$sXyxJmiBEEbP$w*sRZPYl>e{d&8f@__kqBWZ@e&`0`E0 zmimqHRqQslIAi;jV4#@d1;iB5&nL1rikJ6ZKpr~J3S)`~GtPj<1&c9;x5&2gY}I># zmvAcmqg4I-{Xs&DqyUmAB57#|7M~GjT>C(nTt&ZrX%oH+8^5jmIX&1! z24At`@K<)6(sslS1I=PI4eh>T4c`)t*2 z_8Dh0HIJlk+u-dwVmd4N|1vx*4Lk$8I~|3mQd86hE!@RB;C%PoQCIc%zT8^520N{f z|8-W;o<-PZDe_HLFwQ$iS=Hdoj5xYoLcbZ04L@H@{Zw*K3xABxo-B2b8dMH&xf_Q! zi;vnna$UFIo#&$+;WM1tI5(=9^#dmPu>lja$3-#(rzHJpFAMK{%QCkFxe|pp2DMXh zZ0jnKl&MnCz!=_eb9E=H1@HagXaaOA%H zVe*4Xet0psr;Hy=zb7$2t;1IKH;*tTGuItn-h<{U_y}IgCs)3k#;Tn17Yu$+bob!i zOnWReB?Q zlV{0ox#}$A*4_t#@n5iq1(PIpqIh2=yl;?e=;cLe$lt3q z3Hf`QytOHD>+CY)@2y}RhQXHDLL>PoHvw0{z+3mBGYEn`NR>M*|8?oYdD#v0KOTCP zy?bTI$Gbr>ZF0+Wen+eC<6XgZA3m+Cuz9=i@#@<{*`Eb_qeEw5Xg)eeWs>i2O~VI` zzm=RT?MJ$e{KaX^F?e5X$=5pV^mzM=&_LhwUOw{y_}i1Sy?o|F@jt8G;G0%z?s~{a z_40*_+;y8i_2jFK4}tF#$1w0@JZsmIgZa2ulbRxr_r_n=X4evnG;$C>V-lX9J8dZE z*CIwe3cdJzeDv1hfr~FICK=z$+rL(8 zAicO#JeM_9J0PmSRC_C2kxxvXiD9ADw1cuu0i^BalhSQWCd z%H5CPn~wswD&w=F_8{-GqP~wg)Io!4e=|0f^keyD4gBy|nYo+VzHpxJJo0>(48}&t z^L6n3GRF(2ewjLaljn=yo;+XCm2!PG&Iyb;b(qzqbqa7<_YEHVdB6CrIs(6y_5#tF z)&I$VjZgVA^4D7M$u{&5Z~eSHw*;}sAkWR>T6&6P9Xx_K7xgOm7VQXs4X!eG;s0U( z$Qk{?;4C)l-@pOo_|7dN?-$)dc=LKF$9FF0FC>INA-cMl>r!%j1yj+L=;T;nBi=7R z@j1}fIm?dAHm<(h_)UnLhVoA<{ruC)Vfm-*8#K(H6eG`fnrsSiu}ZdFQ2$4suj=NM zM>4Gb&(HJChzH;|X~l06o9g*Z)~NoE>ow$~rKSz9n+x)Mljs{k-P~h}A-UrG7Bee1pa-t&R8$$7WdRx2mD8UZpKD=935Z%iPlr(5C*&m|5S(k zQ=1v@aNqd?!;jjSpAEf@+6`7r7a^RiD;@Adk@GU;J`6}qEmp_X!&uC-cNBR`*#rdm?7dKm}uQWGQH!k|+hs7=8fr5QK zFwof)>gOK#hhVQ9`8!RHb-6q3?MRDkIS1dl;IBOEKJuoIHSn*z=$d?P@in(jq)p}D zzR8&p&q7~84(^+r8SzV=?a6+{>a&G!?_qrL4|1kW+3ab~mlvOHWp4KWczl-mHCd*P zkG+nc%+;Gc0~p(H)iz_0f8b);5+6Q=HSqSc@bYm_;J4P|Li4=bJ&xadF@{$1YWGhL z)xy2Y^HJo@9>CuRTo>BJU*(%Zn|K!Y_{P+^sU8mcm;-&xIg2IDLL_7_@!(Ojb|z`!!!T1pnWAcw*ov=4VoOf?vq-V+;bR{;}rfTq~B?6IKuBd}{kuFgHi`f%E)_zizR=CIdp zH+yM4_foXznV0^{x@}Xj^?*fvoegZwxBgxWX?Uvn?eDdaASbH~*gsERRDymS{)^Xj zfuGV1(!{Qob3a&*IP0Ofl-8tybFX5=dK8=DEG%?|Qun9$FmGi1$mk}?XxSR*SWPR? zKYOmY%*bnMhC}jXWO+@TZJ0c1K%R^k{{goS@a6T-sns9F-zJN?`>0>9PhXNJ8x-eY zuKD;6x=5?!HS)X|SpvP8x}2CVPfT47dPPu|^DMff_>9dtOP>_0PGn+#Be@MZ*6Sv4 zD8RvVf38zDRTcc-nJ_PO&eFWlIZIycSsZ_Y{I=GoIr(OrV(6pD0<+hI`l@2BgFTl= zS#`*Od4mn)jXT5(10RS(yfB6BG?)HrIbZ3&@f}>e`m%vS1&d8RyYO-3P@jN726ga2d%R ze6ah`UZ3JF@VGb3{D;RLWYgNj6}{RA%l&w-frmC>Q!PhtsM)9dI^`*%f0~$miu$lb z)aq7k*NylkYtI8^!S0@ZrD)IErh0GHflhM2 ze#egWdAehd1Jx-HwC-4+W}k#Y8c(8g1T?Nb4ITkg!9P5Pm!j5nt@JCpmA^paPjKGX zTI`nwXk0#qo;N%iZ-B-d-tg>!oAABrJP7g7*v@&+Uu6|N({N?vwz*@i2f)XA{(sm5 z{h2Yqcdj~T-oeYjtNl27|%J3 zPhZ_i)r{mfPeo=MrByvLK&6DcP|+gLq=VPj1oOHAg9){7GXKE2AeIABinc; zT{m1Ws2C^w{)4B$)z9MhkG&PaA3iWUJZI%@smAfIw+-=p)u|QoYWywvnAF|gwW)E_ z{cwAdf7r@RS06M#8^d=P>?Iewz0UW8q8k?#wLAFvjQ(SC{UgRVX2BarV`IHZzIR|_ zeGmGUjTMEi_^8l`*US4)kieyhYX`SP>qN4~WdWV;Q0%eQtl z@-4-FkzRbElzekfX1c8DV)XUxCFmHegM2(^p!-YaAmg%ybtm8%{4}V`dD6rL#IqGo zo2z&l>#2B}!3*po-Akj-27W4sYtK&=?YFu1^p5%2^U$dRUsZ6=_^Zgv-i$xn@nw7o zv4w!1P29sNZ*CJk1FNd{IA5?}Y-io-$+E@d(W@>;^ZO_M#KQNGbwhQV=6uK!cN6bv zzhS|qkN;KBj>c}rS70vwK9UE>VKADFYhX{n%`mVg8IIz#JC1U_f;-00}6PlEO%+{@>Y zSzg`K#S^UT7RJ}kymYNOnQ>qb)k^Pk#xyVYZS;lUOD(lb0jw=+qT%^Zy*pIb_V>{D z^T9KG@*8Dyc`_xao&4%`Uo~-(h3ILikB4gQp5WaW z<5At#zl1NbA=|I<{1@=0&;JE{S&w1x9ig780iJd-F(<+I48fOc!Pkt#gYU*Ld_TAy z9d2I(-wy1}jaI^g@4pwoH~1d-b^zZF;M)OwJBH#=yTkWyv^@fRJG?lQ2j36=u{(Sl z7*80!!rd5fjDe@&dOjPSCD4E4e(Y3qbzSQY#Vj8Pct?u&0^1}J{p^~)(ZlG`tM!Y3 z7ivc`T(FluD*O*>`r7b`%HE8C+qIU}wGIBETE16-dALvPoX*TXLvS`cBR#RX6ga~( zZW!VNLp6pO+A_6#d?%ja;aj(frwa}mSD@2*`d-A1%#U}sQL|K1I%K;9u#wGBb~yVY z9V$Q7=yqarizX{Cp89V2R*wP3x0C;-oaQ99yn}AohOSAzBD^-@mOZd@y>fz*2jBNx=@+*<{k@A7@m3FR)PU&}IgGamVVYM zd!S)Y>{4V&ur4X#0=@;}{QC_O>*(UynFG15k;a{3PE}*98MDCoH2ug&lnAvYyu!C( zY8(Sxm5rl#q6H2$YM)YQvz3}~tz+9Lt44nQ8enerZm`Px)9~kMtWhK$?_NHZc^ve3 zWo@xF8$I&E7&u%~U)O%ggtF__M9cc`L|$L9Kl@zL_N(aj8cQv9g!-tmCid6D%M_qhqXo8KD8$~yTCO8Up5V~M9@r%n%a3QvFky^*a)T3?vZ zFj!S191`AG;8B`=Or!K~K^u}W6=QC$bdXDb1XmmB%f^nhcI9TN9|vAl#T+>^!L0kw zh1*(p&QP%NSw$Y1x7)hg*M2!` zUxW;q%G$5=_n|FZFTqCZ@p5|xG#Jb-^Zq(erNCg%~qnK`ThRlmXT;c zd{21aa5#O0+7j-k@sFw<(*}AlI5Oc4+W9=#DrfXQ<|bW5bH0ab@%?J%;MEOQx=HTk z$XKf1Z?5oeM5>E!ta z1KSe!8XvAbin+-@6QdSFG}$qWFIe{D|q{D;DoC@zFK>5AQA7NKRLk?7@<=22=Qr zd5`$jS%V3#>rDK7id)+1@sZ?d=&8~X@H0&1|Hymeo;BET3jCNg(%!g%91#9m)YEiN zv8thwydNV44-t=!@P1f_ZDfD6IrO2LLJJvo3q0y;=-uLHHgF7dgYY-8I(RSdN;g>S zznfa($&14FBekA?+raIevserANfxrtAG+M~v%DH0^|g{~eC)f8FGfvH0{Gkl-s(I% z2fmU$20trvX{|&4hz}z_=0vTUZsceT-WJGA9=TcaF6thGt~3CB>?B_xjZFZ~eK;Q8`VHCi))Z`d@9Z$GL*T=WFyBA+ zMOqwc83*1vo^RvXqoHfj75lE$s}J^6t`|)?hu}jIZlZs$A?LsbpH6NtIYb>n&CqDh zmk)9;_JEHE`nL3JKhFq$P}Y1t{aSp#Ty_%AlrLPz7*$)k>lWi1GyL2;2YFI+o9!%O z-V?5PJK)8WhRJvF^IfZ-F*4o;)@#urptJs3{3SMg;40+(8h!`42#x3=CKmx4Gn|Wn zt_7`5z9@16cv1zP>3X5(J6fZ?uuk)G5fY~l&qau!r=Z__$X;~$T!h<*U8MSQMnAEc z?`^~+3~fPo4(o3DG9G!JZxSX_|du^SXOa zCf7BZe#Wte8QQeqQPUjhEac%bM&;t)NzTK3VAKkJ`~*Fq4&R7H-|~%cuRr}3KJNV9 zHW3qB+YP6Q`-t8P?S?JT#hvJDnos2RdT74P(EN>Ggyt7`G_N^zQyX{z{6jR9ppJJd z?;Cyx-)k5=D?5NbZ67=^+h+Va@3SP%p1^!#gDdjC><^CE2g(0ZVd@*iw-bJC=?U=q zvk&Cm5bcQ8t)uBbbT2NQg8ZjQz{mZ1$~I~cE#8CnKdkkxsiUlre|<)R+8yZ7oLe67 zU4Ca%;#JIBFpq6MH)~zHpnd8waiaC7^{%7;9{DEtr-4yxvNo*JR?ndQP=w8DgbM^c3ZjN;u z#k-OfXXDd|%sj*F>#uPuHlT6;lCkJa60Lob+JzeEEctw{3%+maL$BfcK;B5!ETA3f zRkD?kB@^Hi*~U8f8T+U~FV7~yZK{ufRhheq{xz>R_^&*W*Z4oc|EcJ+=(PTs_mi3< zF^|{h{!!eb{sag4t0bFaJS%)(a$y_qR$-s1|A4O4w;d(N{V&A7xF7$^kWVtresr4m zZyAH9+kdt^(bzk9Py0#foBO$LV_ZFq#j|rJx%Y8Tdc=FoM=?^#=)1TlJ75p&RA_S8 zp6bwLwg(?|_pftoxk>FBZ9VO`e9y!G^aq)kCi$*)*@;ibNB zndU5V$_HwM%fasy^>*mzCa*|q0c}#}gP#B&j>UT^pZ{3gPtb?PeJOnh@RcnU$X~(u zHeh_8KgRF!p7tXV-~Be%{alNm#J7CK@Dsxa9~t5)+7C!PMYKQ>SEuBI)pSDk*IObj z!Zn9`8hfyI8monVuW<(VG*0 zNC|x7)?0QOoe%$xkpU_8W)9EANj|C{@#(QopNTxS>k)^bmAlM}h;bmTfaxL3sYKVY1O7kD;a6S`JYU~^g) zy1;sHlW!HjQM-!UXsjl*{^e>v*$U8@x?XDH=1kCU-Er1_7j{F3q2gqw+=of3%*9&(a7NF=17ZVa24OkHu!C;2iMGB zbM-Iqjn*i>GgqU&Z|8e*zf2B+YK#PzM&3#D?LUBJfmw-)$(#avgoYq*}lwQ#b9_cfn$`Q7EurIPDy+!x;J|D*i>yz!OrT`4$o zBJb&cn*Um>ANnwU%7>ZO7X81;*Z-RW{XfEU@ofF=T0Pt!Y$4<1E0~SkQT>B_1o8*k z2NL)8Z7Iq4cMn3RWqq;xo?T3yd}OSZeGr|b0iDK-9i46(ZLAYH`X3x8FYnJ*lKMd{izMzA`-GIBj^v}<$+CX_&B^vIZHjXWuZ$(>S<$c zswRT2raZE#Z9{>XT8Z;P!N4*%u*ps#$}^p$O-ZON6tjT&qG ztb#$BxbNwB8+9>~OqON__gbMtt75&(h^;ZBdok_hKKkIAwz!QwWA@5_Y z>~Fv>NB}R390B=Q@BD&Q-2+dOkM%cA&`%6_xb=gFSb3HuNpyD{3ws zZ&l;_>?nCHBMnt`tNG%zakeQIr0KSqs9 zR{rg(qVfxR=sW4#*a`X({v_#3eqQb8db#XQa9jB^mKA-*B7dez`7`9G@&Cj4e)w|W zJ9{CQt5SA9e*5WZ_7;P`KF~;eS?*i-A=R$IA?10YpTszaKs;0W+6TN7Kitwez!S7? zH-P(sM=(ch8l%g8k#{8<;x_V)Sa#%t-TlLwOV~fGxu~50&o2r2ho3%RcNhiw>}UCh z6Ub46LmySmR$rofWY3HSY9LfwC3|z#9X=nV)T8@vi+HEW->h`V^YRT=ReFaKuO>fd`dy7bc#WKyZd28?&!IHZSo=gCZJ z)|jqf3>u%tVDB8#F;k{Sj(!-=aqw8_UE)P`Tu}$U zUdzX=brest&h_%2HbJL0`i5ko@a8buRPL18pU(AX%`y01`BQ2`xp&H640tMfmST^{ z<1d-B#x(E8MwoZw5#Ap2M>F@&>WjTKI&EZCK&xf+!@jp0>k>1XW$RyEL5;eNpKD+1 z!XENe(bb=G{5W7I{P`Vd<4*Fq%-Ftba+jOr<rXFjtf38;h4UbM{Wt3Vb(LSy$bv zv94pR!Po@f@Y=^&d*RuCFb<1xMBk~)Mv0N!1D{#O{s1ZVpT6rC)Ry9JKi~I790ng+ z;rk*QeE);;*b*=1>RV;UQ1@iUhyO|R2<<%=BNu)iJmOCNG^T%NOl^!M@JqnI6*n7k zFPIFv@JrxC5AO&3yodK|(aW`OujZyXs6M7^dA$7!;G{Lbztz+A59PjoXa2)7G<7fc zGyf6qKEm9uaPQ)`@(^V|B)Q(iHETX(>p)W(`Vh`P`KE{0!n<_QXp?vH5qMRQ%^wqmQ9I3~Je;dxd+%QJ~8wEKns2?82%LWqVl}&1m2kc zZSQAwy@xD!&{Va!7c+&mK|J~j+orit>_|it>}df$e;+aOk;@Ben2DrJU8PAY_POf z^K&ZnFFag9n~EjIfirR$-Yqz?x0g?2ia{$61v|P!x#q&_M(|zub0+z%4Zv4&sBObg zPH620&qm#kF@Hk;4dmd*oMW25;OE2I?0@_<<|PruX&0_(gJgw72<8+UTQ=TK;F=kF;FI zweVrf9n@lQeGqh*W`BRvhexm2t)Bdh05j>ubH_$6w1L6gaquMm3+{q>tf`Kue29!A>zwWJW%0NA1D!N*Xq0y-QGcGudZUeAs@SP zD5f&6I`*mQh4077O^9%IDe~zI;gQAJr3WEnyuAu1xu^B!)?W(FC(pCGXfF>3M>hL8 z=yMb0i!JRZugc^`I3Iht(R=jeOunD}ajq+XujfZWjvm5(tiV^b>N(n%ZfKq8)nf*5 z3u@*Q%p+ZEb*^UI3FZ^bC4mjH+q%?1??t8k+5_%NbbHxOfNWA0whcxTE_d@4T0 z8?gKF;g^HEt<;G+=&Q1U)|AUn32uMcs(+aNkNh$*JZz#QYtRc$>VMECYtC9sR6Xn> z#mwG%#Q07gQ0@$CS)Byc8^4|h~mA@@Nf?GMq;q;jPV{)QQmd39ZjQ#IO0Ljo8gdV=bh?T4-<@V~zRe2itiX^v3(| z{&-s$Zwh^+aJ)%u)*b98GE!e&ZE2-D{=2)(ob6fAJmXFIeoxIeVfbaGd*shJ*ALzx zoDH4}XT9fT?%_PQk7r)MhJ2{+)Pf)BBPwRw$O6LyW`ZYc;_KccXF|SwM}2`OckrF? zB+YMNm8TtG)va#>8}Hn$Lvi7^iMQ7AZk^A&>UcM>@viV=7KLy~ALPM(J8@Kht@hJe z1w4v*7#@{kzna>&ay6nM@lTCC^SsVSob0aKnCtoxa#_B|ZTR(%re@QHPf50lH^t!7 zgMTN_@$K9!`H;3DKlI(f*xTaCZ}Ckd?`!>qLmG$hNca=r&i8kCxD#hT=ql{Siw|-Z zX)J2z-%Q`$9x*S_);IZ`1jmHi%lRJxp2}yB`?`Urf0wy`R1D&C!fmA>r2Lrai537;1x*vBXVFWiHrMW1Z~7Od2PtA9QWrO&Cl7B_mcJJvPOHUefWTdt}fc2 ztg-mG6~m8tx#@4RdlmhC$h8x~J4blO`}T{TE^otYQ=Hi;f8u4le;4mdK0Z!8lJ><4 z^f&3!$TfN>!IYWenuz*p-fy;b^w><8i368b;Q zTvxjFT>sr%N8E4wG?Zk`JU&+94&av(pB1eI`j7amr~g#C^ZEV}_BGX5zXi;NH*>jn zA#I9(*ZXZc@GDQJn&S5PZHjl-K9{R$@y9ZQ@0z*(3jfbF_sZNuxjuz!kH<`MPu}k3 zis0Lw-oRRl4m%I_Xkek~f0A1SFH=5~O$KyX}jN+@G0|4 z&)!g5jlUEg;6s6jO@1`jr9I!+H%t;-u12_|89;4?LR2Dmg~15Y=# z`DvT8T_?N0r)`Zz^Sqe8l%rP<&b&xl33!8a8QGNB`<;>#7Bq+clFv_V;5|ckBiP1f zT(qli4sPCkZV|?OuiyU|<`v9CICwkl3J+ES6YX^oe)a&rS29nH^#YzBz_)8yTPLI! zI^f4hI$Z{T%f;k@JkR&`^*h%8mNwMSQrhw2JX74WxSmd%ti?uP_Cdfm8W`_tf4r~l zWF7f^1>XyHr!wA!eD_a&OQz`WYTgO1^?%puM~CH`i{CYZhcWCy)%naiCY~*7->Gvj zuy5oWD03UuTFuvAho2W)-U9w<+4j8O#{U++Eu6D*#y=B+d^6Yt@dGPnn?+Nn#1^;{R+qpi;+#D}ytdH2>c-FXcoGn^$6Tb0f9Y@1(ss!4oG0-wel(;o}qUoO}oHqB0(ukQSB=>)IPzTvIO^GV`0fp!Yb^hlvonv6tE&6|nIsLR zY_&<7ZrVv(7Ap$UHl?6;l9o-j$2Kgo*qgQ}foq<&$;(ZZl{C#{Qk%*cg{WcEZ_b6J>PSVejh;} zFYtRA^KJ4!+8)~*ALzP$Qklx7&qe7Yh7H=nJQjS(z#Y!;{kJz|1Hpx;!fJHE`L^d$z|!Q#rnOxJ2Ie)?@p*-}Tsjv|o&Mi=T3wua?DsEzq8w z6Y;64v5mty))*I5jvs7et*i}O)7tQi@xgQ7v+LLXc_ZXV zc_H0t9l$UK(U^miVH{c7%n?`k9<((r-1qVXK5$!P{B4ZCUo^@ZVKe()a$~HXDdJqT zmDIX^gbuPQ!zYYmGh{`~#w7B;XRaP&aQ%6VA?U9reVc3r^pA9z$xdy*|4-E& zBud#aXTtGm%$^-zUHT^KPvYDn@Rsiz4s0{QHc#D{Je&( zq4_!-oB|F6AMTcF_z~>~x^7}|jZ*m69f-5PzoSla0N)UMpe}s~`3~0Zqd%SZo2R^s z?@wSZ;o8~Sa2;dA(qQduty?=ImQD`B$lBQ>;g}p9eU*0X9D;R_4NZ*Kt%LMZcbj|9 z`U5zB+nqV~F=+1z_b#vlH&~ho*GM$~6yNtzCn}HP@TI#`&&eYzi_mqliCXkOlyR-P zgJ+cZydr({?K`bL@mW*z;Ncc{*zqqH=IqA5iuXAFZ7IXQ@QJm5M)acF3;pnqH-2x2 zmD7U%2Cda23uCO$`VoHj;T;p&P!_-b2RT#e;UE9`h3Z=2&cgJ4;IbUJ{2jQ6o_|i> z)LRi4?Ft)%td6mkv#YH4n0pNP7UhV+A7d=u5tKvc^}N%*;5hLLjh(S7=3iECINKnq zKW=19@7I=cAc{IJqji-JwRdvH=+Cgb)RuvM9886Gr+W@yTra_Y-^Mo!@NUu-#MPv8 z#>2Zw^73l`1HK^!K;DeKx4upKp|vWt03KET4DfEA2|usErns8+9-_T{*kfOMcBNO% z9+~j$O0AD93eT>TK8dr(-WxTxL3g9dj@AD9??NjEd8YjCd;W`f-zYOzc6f~U8P+SM zFP|oE-GO~0+AD>98{?4-XYPwHg4UukydV4t4%%0*v1G%2_2itdZ6Z%rWeLjad9Qq+ zEPLrY$)jzh+~-*|axFBdJ@w$RTfg0URE|4TeQ>PtHIs+n@M1C_YHv#J-`>XA)hCSL zWt_$+IXVUWO3wPgw+Fc2&-}+H*t=Pc&J5vj9&qs4d#L`jZ>|DZ=&S+tbv>|nW_zLM zMCjPtY1i7;>Rfj5zsnIl0J*GO2qz!!L=IK*ei{C#>M0j1IJ+y@d*SZmy_J4}<2cDT z@qIsQDaYeS_7gKqat2Hb->bZyJsXT^an}p64(^GY8`9pmKsStx*#~wOKHS~*bJ}!g zI*0~!j_YjjaABC|r8Vqr;7c~PY@qF&dp6C~42qr-%>OvxX6yJq$2>x0lZQXeof3s7SykDN&tG%$UHudt&<5QcipO7j% zL{2(#pn~!-Wuve*{eMIbw$Zy*?F4cn% zr5O1d_B1W1G4CX?br;leZrfb;?o7q5x(olD@AQpq&BL#1O1W=yXOgRaZB6P9+R(RZ zr;&cMoby=68HcK$`};{Y&wjhsq-iU8o$2Ph%BPmHhv~_yse2c>2CVaDm+}t!DYSkd z<>)6F(vjBHDTV|cB?Nrt)KVYwvO#8@K`>x=>?lEIcWiYqg;CpbF8FbP20)0n#TkY>e2JXoi z3SWU&`Obh}qJlbi%i6Pr!XEbg?H%;DwQ>w{WzV!xy@M9z^QY~Z%6@_GzJk4bt?BWu z<&LxPEYOx8vdGEd}ojBr^@ue`Rv=kJ|8$gk$(j^w$M*~D63lN2N*Bj zNxkewe58$u-hpZRrnas$`NA5L-@2T&zj0=6utr%sXpU!H&(4AKjM=ZInCPdj4f2vr z93Ke#Te!kOzggz3`N2za+xL>{j@nOa?d_8lg zeb;~0*yiE-_3X6?`)RvG>!-DY>Z=}@%%lC%K7nPCet_j}{bk5m)4X#F@r8hW9GT~6 zD{knY_wwbS>tZ={ozIZt`W)q%2(B{V%41J!R=8s91=eP~w!nW5_Ir{m2;LIt@htDH zY`&AVfqCWo&a|-Ziw%-PuSotzzg1p%;wOB&p!~Oq6@ia@GdfXyN#Di0?L3O`5Pt&y z-akfkS)8)$G16s|tu62Zx=i+evS(;s>0DWV?-u>MOI@-*m``0g|2*f3(jWfV9MQ^Y z&|&Tp8&e)^dx$fX7mjN0UtQInn^A?_oSJ^+Ta51vGbevzVmEm+d^h`9z>T9BpEICE zGm6Px#+}@<4HnS8UHgOwWALhEZv8W-*tS-9Uat_U0gl9{nR7HMF`WmEB{nR1W=d33cBlKA9y)*vc3DPVA~K?5eINd^2=3`&lQY zOKqz=kW&U4K8kO#9mioOcHy&ZXp+4UkGIFF{lx>Txzq5)z;19hi1KK%s}sHNt^A{n zN66>?Ho8nXT#BQ9lV{~9D&OoHo*Q{KFUC5!`)`i?j^XQxF|jXf+s5NkuL`fwgw|L# z)6QOuX$*gotM48UU&Cudry2Ai`jaxr)@&4=IO@Y`?1hp`AB z#sWV49pzr6+@susZy%>T8{y|H{ETetew6ZLq&!J^lJehD9*?vWSNoJdL3tulo}fGt zw`(pIwt}-=cL`xE_(G9r%%=?eSie3>!&*bzm5yuEe}Wg~GyL;HG`P`|o-Fp?#i^euC$ueP%t4 z=iBY`9_iPyAzoW(@|)rFKFVK5uDrI8bK%b9UMO2bR^4T{g8wc2U&jB%{P*~O9{=Uf zpUv|{7S46)GkE@-eU7D1<9S*5+{|-;i^=KF@T_xVg!_|to)xgzZ^8U4c&GnzO?kbJgZ-?pe^Boler6HFwQhb9Ox7 z=I!RJyA(C%#~9H@=@(Nk4ZV8h1T(@EI5>( zp*6|7{#b4IswRANnqqwDsc7u4^W4C&sN$ei)u-)fSPriZy z)|Vb;@_!({WbI(pZP>kTjJn)ImA|wBe6gP=ls6kBZx)y__6!`>O=nF*-pn+o56>LS zU7)Aovmk?)ond-ioh&*zTBq-Hd>QPWz1R{3GO z;-itcOo6tmEp61|6XG91A7_&rAUPx*aoaV4Zpc1gXc(OKnbduI`imXyIl7C|+LO@M zM`=U(3X+jAz8lZnwI&y(H|dNS)Kjdhp8p!hCd*5)^auI<4rB1K4F<5Ywyqqp5qxX} z54%AzuT$(e$xAxlWHV&$zuRIFlP2Uh&fAr(+%2dkXW0 zRxe3y+qgJo?cKXZ;vA3d2;}B4IQ|Rmed3$M5brL?p536eF6`O0*t2V~XSJTNw$zrr zhCZA<+kRaj^DBY-0K+!0ez<-lTa}{>3o1vutbG)UvZ> zU(1F*;cU|^d%KA<&+XiU^&PvnN_#9`CLa43doEZXvU{u6v$yJ1=rWH^HPG`B!1h&m z;FaUCU9i^%*&8GqUADOFb=m6W=+)Wmwa{EneiP%-I>Z3anac`2`O|_iZpF^~6@6rx zC-R0f9!BmkZ6V(JGv-$cbN?#SJ%F8T>vLXaZPiS1};Uvu06uEeu$p4v~W7)sC8_^rql@4Z5Ut5*ZxihrZ9 zaNq3*e%3x8>qzFwTMgS)J=J%*bu_=lzq19`);&|!?^!;^`aSF658+n&N$_$$lW^|7 zfAtIGw=tir=o@|E@IMS6YzCh<(r(NwF2<^4nb-mHOMW)g7C` z_v^9~XPm$`fjv{QTW@0w7S60?Mdzq-i{7RO@%*(-$xqt7gtmWRC0Y_4iC#26!9;Tt z95yqCp}T@PzP{At*AY7st-baU>{(!=zI7M#YWn_{`W~1??U5S#E3}SDUBkEgLtp-N z|GsSbJmYh+<#NU}mo|Dnmq>jTnWZ@0r-@5?`_-<|dbei+eQ1`GKWj|y1nNkCNw$9k zUs!g(;w!{8^j$ql#4rduG(G4?gWRDsReL6054bZylu%otV@i6K3O+bj0HWU zoQ`*aso=KbLgEWwV0_1zp0?FNtZ@NrNo}0@rL~Ozx(0gy*%!O?!l8IL2g?`C;X-1K zam5fByVj-pmnUpow7!M-8gX{T@#=~Fsa$6|s*c*7I~H5=D<4RCp)IfWJoqdbk)cUs zDE$>>XxyN0@NFM~|NTh0PkH83=uc$jdfs`FcOLJ2-nDWLhmFs{^O+Ml7ps!J={zIb zFCbs;@)ecM!!4`}W=}A49Tm;PxzW^HV&+sL|AU;`iRtCQz(ZyU ze?IZ=EIg9FZs*NG9i7oOQb+c6oLG7m{_Lbq0vtWWdX;3K2kzGcgXN(OxE>fR1V#;e zo4hMq2%NIe`VnKX{gA!iqYcGQ#FY3)a-)VEJL!c|9#(uM73$m8?>~8dJ3I!qPET*4-D%2g#uV^CwTg4!f#b z@>VfH*&u}*O}=46b%(V>ZiI$TH*<2>%hI`p{l=%>`h9grt|G|ERvo8%a}}&%kxwv{ zn5kmdf<=M&wu>F-EPXc)`^RdXHL!QyAokc+DSO9Y|BSTNhR$yzwje#OwXL0NINR|+ z)9u=vJuE!br5|BENZ)CXqT0-azyEH3PqO*cCsNnJN;D=|shuJG55daGc_-rq!;Qd6 zFch4GGr>wQlx&?3%zi{ax*u6S>FdaXG2l&f^g8q)Te$wm%n@5q^7bX!p4iX**t*_b zh3*TS)yU<=T(7yB#|x(Er@m0&OTCGrrKqBt~QzwBgmW7K_}F|J~mTZlI6(UrpfOFL4uhX_&8&Av0%Yo_I-U~V!Lbu(fzB?rnNOT9kq*`GR%L8^g8{C-ivkw zx>okg5VnkHbx&lMwP9uic7*Jgui3GUPb+@(7uE&h$lw38G(9QZznnFPg;njh|E{{j zKgrC^pZ}TE7a5~$Y1yfgWg4ew<{|E_*BE`)l4YYTCC|!^6}$Qs#_{SQ`1*|VOCKbc z)y|8%2C=bqCZ)5nZ^y=70lZ&9zrK3NajAo`D_tA! zO@=bQDKO5dX+`=VT7yKzcm}Hi4_XPe$Y5Pm4e=zlBy9p-ZPv>ihW_BQ} zg+s{=`2|jH?Q8p(nr;Q|;yvZl4P3%`F#H~1{bvvB%T%T>;kWh{NnT#WbDFvpv@02J zV6st~@>AYLeTeP+maf&e(qHm5q`y>_>@D<2KIjZZ=|bJpDE*jS9?;tlf$b)6 zkwC6vpK(9&!u+etgZwGQ>tgJy);HHPCe_=`A4vqhW7KaWJpHGxu%C zoGTpd!Q=C3S3LfAJNH<6F2DEW+3E0Ck>wh<@FCheLFWer{+vCxAh(ZsTXY!ub6xW1 zR)>4%<2TT0>%;-fp^0ojTlohw_hW=#xRFCN;8 z+5aKth^=^W89H>lsWxt;UGeLG)7Fu|S+w;*aJBNZL`vW0h33-k6234CCO5A=b>htAJEfpI&SI{R-kaCd#Uc?d>!9HH&@VaBl;+H~JK ze7sijt@~~Z-)+YJ5N-sINqjH6BX{GzsR8Kv2l!pN8&68fHXeY!4SS~ycpL}8_ z`VyN=d!#lY6ZBmJ`cnCJTAS7$u}#Q`_{XFlC#T_1=vCQFdgo(*>0NH6;6aRm zzEnOyUC!(3QM-TM80(Nc@aCdND@VqVkj}=x5Kq1Y-0V1zANsw7yf%IF0_B!Q$h$^P zcPTz4IVU}JdMK}srS6OH^lOZx91LGAfuZ1DgS_5+*Pg`~fZ+I>A&sFnJ%{#QqCKZ4 z-J0p^v@?iaQvZ^}ZmslA#!*Mkv$Kb-y-Yl6^2QRI7`yFL@ZI~5GghP%jZd_qv6hbW zzZs`&P^TMT#|}|mw`?ZqN#R`cNyH+sj)4!>Or_T@1s~F9iE1-N1OP{G-$1kFB(SB6N$-Y|%o@{(9oQM0y;Yj@nPqNSdrG3@9YaC;? z>>c75&5Y04tb(=1Ih%F`Z^7Bwzq;3|k@8#r8rY3r1J^dz3=AG1mLWetGFa=$#1w8Q z+GoTT;#U@WBqK|8f#&RFmSo>F#^Pj&>_m-GFw$Cy)A1!it4^`}Hpa%4&S$+!G^8`FoXm1MUND(JU1zHZC(c&U9EBUz5neV} z`y^)VhEr)%JpUr!inhgfjxILK?}9E~!@m;_M6+r)+EymCb!0CrR9lQMAL2lI_EVI} z4v>6VSw?3#I12}Y^@i;MJ`Vz)8rKHKrMbQW{>8&iPly&YpLm4d;xS~~9;RC`-30!B zKuq4klJBM0;_#lM?N@+zl;^~64nNqhU9w*_erH$6hJB58rLU(OD?k~W>~@+7>KCEw1? zbOrDPBJ_ zk^dt76Zd>uZL0mI?A%@2-Gcm7JVf$N@ZS&ki(WVJz5kQKT(#xq=lI6W@o3r>js+XR zY!G^JFmrQuaB=!r@I9RG6qktJ>#V$`8uICFjy-eMT9NWRF3!3S(Lo*n%$+8;!AN#%KMI zLjk(#xeuxS$&}n#8-$=W(Y1c^`X>T&+ zXS5!bCr;mWD{Fc>zslO@tluofF7F#}n(G+byb0(%;%gI$O}g)i`RsOXW(>T#m{1Jc zqm6OA$h_WN9cynR7gh1R?I%~KcAh^vwQY|*Qg`FWD&M{zJSg{_T%M;@=PLGU`C(kJ zTyBfUp0-jOgFGvnC-`;NES+CqDp^0G{3Y@^U0qnm!HjE zmhNX*qs=gH`5o~wra8l$w=z!3I7^dg25|z)@)_zX_r;6&Bp&73gJW~Mus5PPFz)Vc z!+b9f=^)OWg#T|s&$Po?msNI6JNY(oZ~9$Lxx*82vmzdemj!qPe>yX`A6@|#YfUEJ zuDr8G?tt4Ln_XjOpF@MjsdJxnrko*1UURT;GKN^k#Pr|DT~i(CtyceCdp3uSHgnH$Z2!)e1Z2rp{~Xt_$A&A#-V4OPdWb^JM6i3L5!92 zf2ps1>Ee|q!tr2C)IH9#bdkpS2+!ZL&vofOp0D6}M_Z5^r**+!i0*EWwM*W&@Ge?* zHoxb?JJbKrm|sRt;-m1B&MY+KINCD{DRXBQo(Qch5BIT&?^`107W!|FoLlJZ)|ib+ z?0RNlBjd90=bSx9Gn^9*yeFh@2!RCR|vXAwRP_kXN)`@?>O9Da>& zb*7-k$9b2`g?)6~`#|25)_d(fI+Yp9o}+FczkX@=s&1b`&IxsN2Cv&Ewt#byJmU4i zK2?(*A15vr@<9SWC<#4kU0!z2IDF1di`S90*iLA_9vEJPzwbN#VSkxu#OK@XQzQ%A zKCnl^oX48<6wc;W{4Oh=oGxBv9ifVR0{ZHwuk+!R_^6?IrDM^Vu#}O*9?&!6%O}a* z)cB47zPr#SeY-sxdVd)2x3cdt3tZl>UfcvSKy!~9$$*;lAE<9(i+)2tZE$CzG=UHB zxFL?-vOL3{i$3nfTLccZx3lzJC+|MVJN5lwh?@XECHvLEK~1=a#_p8?p3mdMv;bep zC3Fx3{hISslyNHOaextZFdV!vTsQ}iuZH6`nd=b>Kim%uAi z-<})iFCJnYLVX(eH@eSFu+iTDagF7PD)s`7oGUGQ75x;hAC;2b+E@lG=EW^|a^dv+*j z&pUv94xBZe<*e6CgkLk@ua@z4FkWz5)Y0HI--e&E3*Bpfw3XeDTfY1s@FRI{DvUkP z30rmTfN+SM6E0syhRJqyykPg5B|l{E`I!ms3^Wmo;+Xw%#-HBaQt2;l1;^4w(f-}} z!NQMlA^0eMp9SBs>jJn=2Y)-2(*XW*+-o5{j$dHU-1!dlCOosZ+TvMl2+wOMFNKL< zcT$K8pZ)d2zzF-t?%zzTZptrN5!@4I!2KseJRMPjr+##o@N_!kVH_4ef1ynHIRyNu zo!^G-bpE~2T;%@{4sFEu1%poji|;c=(ak>MtFrnuz{x6Nk4@fe+t?w zn78$iV2_^iFiXc?KgwUcFXMLlUOHQRqkijaPsrc>Sh$xM8!SPaOPH5pN*U~;PU^&w ztIzC9+%&XFC0n=i{nno~=EZy3E7^xExftHfLTlPL`k_{IX_fYkV(-$X>_)d=av{9D zRr~Frac2WU`}Uk_)z`ef!y2Z~`y}#Fa)iF0@~Pt^BTMHO!}qkd(jTfj4r6YE^qn;( z(5dXh6#ct>n2#{GKHAN3FEaA@sXp3ldoR%O-zV-b9j$(S?jCrVXN~7Ztq1VDTfgK| zs^16bx3~%y|kfU=%`_}ap?M`O~ zx*?D$;sNpPM$`PI38wjB&i1hJ|C5me zhI~k5`p%OLXCIh%-k5=2KxSxftIkQVXX0U>7in5~2gEsMekZVP{59OqLj8&OUDobu zI4b{3__eiiqRp+CMsCH5%F~8d)GQg!vBniY#LT%LUV)~IZ9>z%_;l=RKAL=$z;{v~ z8-Eh$0rtN&x6P35m45yWWJF#iksEQ&41JC{WFqC@Jnw%Lm{XP*9oV^9%CdGZ zR$bah|HxjF-jVKbGFd*{dnX z^?w8V@Sn~1GUg_`Vd6cD@(Y;Xn}@PTmT$j~KUal+3oU~qGZ<%2MBnA!kUNv)td-u7 z`1^`OO!wjJMH6h^q`K8MbwuGiY&WcE;#Guh97 zVC$Lk|>n53;{^2ehjkN%>fcuVm*Tt7n>?mS`U2LHHuHGi(1qCQrU} z#ZV&BPJ(u>0te;ddj_Axt`kDn6F3K4_J0O^$M&M18sfX?295DNd|>2Zacs!L-cis^ zoOT}|eronIdC5yBr+FXd-cL^J+&anjP4uxHId>?yP`kgUyoGxO;Mp#Gc+TmW&RKjj zbWiltO9I;{EDz*SAAETt<<|pS$yI9`AXh(X+nC?ZH z)1-58tbXKf)5C3f0GC1DX`I@Nw-eg9b?H%7XG%Z!UB1%FOCNu_0vd|L6HB=_S^449 z_#eF=IRl>H)qDl`gQf@Jz2=$dSp%-7nX197CN@4;#a|0|8SOtd!10g9RxGLF?juGmLO z&Lm>o-08ezIKgw1^}8mf*WuSH-#!k{+3$$4TOJ};UUESBu+ZrRRi+pZje^2?)5#u0MHZ}bfeK*%%j7+TC z4jdE{l+E{T+xDdN7kIy#XT$gA%^;R3+DyJt=#dznOewI@#BU2m;}UJ}^g($A9NEy&i-qPK7!t=^IzddkjI zw%QcSUy8SgZnZ{k{!-|<65M9tvjDdv`yU#y2foJGO8H9bCuR8xdqDGRgMY0|+Rpt# z5uOw*;s=sbT~RX_r+k?6EBzl88X6d%=J5o&$J?)J&17gl5z0dLB{e6Ig}(wWn}PYA zXB}nlcSws`?Q(}js%!L@0)FlP-hq%&7uHuQj{ z|Hl6bw9-T6K1bABq-jc{pON;Pc0vvnD`OV-@HqbQIOaeM|bZIVF1UlNcNSu+b~#)1uYB_mc-%i}+Uv9YardRpsaKx7Wa|Oo zQnFP#y_}Afem#yn*EQ-J+FGT)nUm-w2c0|xo%DU2^Q56Ebk%%x)qLe#6zKE7VxQOE zGCicHbD<~C($jUfOr{JxUIzbN77w21^F059JS#3-*UH+RWZp*P68OPJyTN=F`wm*q z{EW3AWKxp*Z6x<4uO+X%Uln>Zmrc;7*6LSHurd0sCPR!qJabaEj}OeR$A<-<^o1Qm ztnD$rV-A-whs$R2tlTu=wST4Q{WI_FyjLcA71wm*_9ElfI$Y_zNy@N%bS|*)fWI-< z-STP5N?{$to_Xtu>JIJKEPa>5zj~E-kCu5?AMw3jqRzqKDTZ#${6Tjf)TITNAJ{q8 zrSE1AS1~V7GQOuUPwzT;C;Lb1{|Vrz^R}RG&MVfLudFEmgCN#anO45ePvA${dy0F; zkHlx8jXv&JR9spysB6({n~+_q4g=(EAhQ71$EMi>Q*3qdRY`Y)q zTeIc?bmxt%8T;6`qBG9BdFP%_ndWbObLY*%x6fT98O4n_&p~}|WiDESNPL*`h|Qd- z;QTc7v0|xaA~8*L^w;+_`L~abb!aU``plybyUr2X3|<9x^+D)DWM&Pri}ytvoOivK zv(BD4IgvjN8QIC1SasaXqBABvVrAXLx*lR(9mC>n`Iy>E9VaI71ID_8b0%(MZHhVd zR_HF3NV`7m$|q3FTjxbC;+)E9+~+7ApWvP$>K5%P>gF?iuW>y{U%=JERAWn)JEN z_v`sU%+!h=M4uD5Z%Z_q3GtBOT-1#4p!lkz$3c8_`uquNS;B$ZS_;34UL1~#bHyIl zT(rLA=8=Pj;>Z?f6UPm6!q=hCVi|qrmGhyPmf~4juTZQ@aW0o*;6-S~V~lFkdnd3_ z)uwqzvG`c}e(Znc88qQHuVRflA-}rBo~{QjD%ZJ%!fEF_h2~p7#(hHUm%8t~rqmDc zvo9Yvnfq5K4_4s+eD6To!uFatI^Y%gsUEmTCk=K&7anUFaq?2C{KWjL_B3;1#6OI0 z+WXN>r(Q^m3*96gDP2lD&)&hhl(PYUjJ|yF%>sL&rlk8BvuKBVRhn0ECcr9e_PxQm z=FvoZb{^29VJ-_8v%Blc%|mCabU@4Nz}2R4&BNvm@`#|#()+QF1;?&^#T0D&_&1Hf z16tcHrr_GYpSs{+WZvLf^Y-jq6Z7LSGv`9&p5~=HILXcH(K#P4zFg>5+~OZR%LjR) zl`}sm)12?53>rm#jof>w{q~A!F9MIj8d*RKjy4=UB!LmUFxW=C1v=aySuiam@##3v zqU#gv@0#>fe(OGp0s31`f8qz71w72}Gw`Eh*dXG;dM zIlBrODVmaz#cMoqBtX_|Rv!qT8X_%$UGVT)@6i+4q{ibY4AjKPx+1u*Rl%lvp6P)>>k`U96d{ zeHs2$+*fhnrsT|B){4K5y_5kT&OgnF_pN_AA^kXhMJZnDS(|$EH^F+AWP@-t1l+|> z{y5IE#is^l*q;lBli2ft{aKqHU`{{1B8c(($aH+e4fTQlzM%AsR z2O|D+rYi8^JGWzh;&TWN4~2Aa3uFEY5Azy=d ze3#_wInS-TCD=DRKK&Rl+cXfa*H%`vKh+oO@ZK%V%VJ*|zPXYM_JHy$ z2avV0U6uPa4SVyN+lYtu2foV6aJ>IXy+*x9X9D+T!+kKor?-{+V0`fjv{;-wxItcV zo=D+_R^sTdj)v#C59Uqmo#Z(DD|EAmOq9--O|Z8eQ*B!Q;Uu1aadALLvdizLPwC86 z8<7jVd#J<)7oTnCUJ*M62YdQY0(-&M04Kw}E5zCC9W3VpSFe<>kwp#<;%V`AA9y&M zx=HGKv@81gF#QYudJgs<)T9q$%GAU57sX2Wd2wKSGGnqf>1X*3Y-Dpp;qxqZMpA3j9m;9aT7OOY zGHlc17R88TLR<8G3FC3}DB0~}AO9Iz^RYi4_&UBCFrI?_sodG@eA7GxjTNv7u|GD* zj?x*tap0pp=L59WkL)yzrGmZY`tQbLuv^4Wf&Do#eMd5|KWz^08SqI&CQvu;ogUcP zTO#%+vaB~-2InoTrS3SRGL>cA3C`-yHqq|~%v?7{=2;vEbL@5H*$91SB`3*~kRHrX z?$!wDGh8Di?->977S;=abv{0Ns6n(;YEOyooess$>k?jNPkx!$ssRVW(F42KloJNy ztQqC-W1LNS5jLf0;yG+ejc3kVg`VF9cI5`q+$8Ku#$e|ZCx=qJpuQZ9jmHj^%-iR1 z)9mQ$Jm}xeyA&Rpukr%H)l;sH=Isp?c8jfh#9KB0#87A(f~zcNY|DQ>1o%X43c(^+ zKmDy;KaJ8^a>0l!u{J_x|MuMYz(zRk@jxH_H)EEqI*E4AjEw(9TV9v0pcoOU-;M!x37|(;yiP7b;Ui%Pvo)g0~fBEJgsqY7Cdr% z9JV6Qg9iQ780N6Lcxn!MOAsrJ#S#th+2UBtUwp@Z2Qg>!333B?r#iXA51)5B&zGVv z4eRR_*qgGQmtsR`{qx6+LFZ+lJ1&rIk|kE7|4C$88@A?xa6P^cJ7rx3YhmQZJA65u zibp->-vUlsUM*OEh~If~R|9(jTk28b?y7$za8SN$EAz@?ejE&G`5~ZP@m0^uLt; z>lsrgXK`X5mt6~1JVt)bH=zT;--8w{>_h(~qZmH0_p#mNp9r?{Pg2y+aX()?;(I_} zbr&+<8|nK~$g>L>#}?Z2%E0d+#cl9m7GvY+zw&~P*%<3MlY22mw}QW7?HO{5rcOj} zO+#MMc1sQAlz~s3e@uKlmTE0jq*{5eb{c3S9wS!=9AxP`fcq5IJ|-Yf0=OrM)9+w? zdB^L8o;ZE=FwSjn7kVzH{qHh%<;~kNzAuM+jr|kUSAWwPzkJUuZOF#UK2c~s1YBrs zN_64YsjFD0PI6DC{J~OM%#l0M44yjZTRvq6Z8hUlN+y)^DTS{fra9UAgSw~D`Av#N zvKDF2l~Vt?%P+NhCreD_U-?mq5b!_bCg+Dh&#{Vq5!9cv@{^=ph(GGV{SdxP%P zd|G&a9`7^odG;TH?#!S&{C^aB^vy%e4S#CwZvGT7jQUeo{yNr?Wv|9o{HYW8=AxCC z4k^woU48&Ctf22JutRGZZwq#P9si{_bNoGbYrunjk8#%svTP&pevE( z>QC5lPf33ezeKX3=IL0+XvQVE@+|ADTX|OO`KYf!ALuQud8}d%S}*wHH+I~t@7FQM znZ)*kwUw)Gk-r45%!gOz&*fQnY-*g*F(#lh(E>i+E_ZASwtsu1x+4aRw607$m(k8; z$tzMtQ3@?LjbYR#^|JUwg)Y{z1ZxSWmNiLBg$U#7b)zj#4# z=gRH0wSzV!hu&M+^RL$fINx+1_85GiHCPWo=376=tp~_olYOlAuECyu1o?45$-2NJ zW@KF;r~Eo^|8|`XgZ;eLc(dAbtM^Q8BYx`E2xb#EEszgy?dW6RJ7iY@+xi~jKl7ni z`DdS9wbSMUWtIf~+GVR*LqHBCn(<-q^L%2_arkF|`O4qP5OapdiZFx6dY{LB&zAUV zT1WV6B3MTN#`*8kj>D@5UuN-preb6GC&OpNK|7JDRrqSk!^_}r`~teuS^+j_v6j-5D^CIk*JlzKcyq0vSu7Jz z5)-uNeaA~=W^%TLd$BHX&nGzZL9)~ND!azUe`oy`(S~p?Kkh`uK=UKFFJRmFaP^yBG(HAK1Q${1|-lr~8*zv_sEN zpY!zhZ`tQpG2%Hx^R})&Hf3HbbX(mN#P+%r+auQ3rMn&FH|3S1Lk@G0qr(|xuN0cc z!{3sh#7kzy`28ldnIR_4Jc@c%u=lWMWOsF5S)y0H1KS(fNB#Kvzz=k|kq-JE^KrD` zMR>>q9+G>>BZ_{krFlya*7uv3zLtIz2G1OL$<@gJ!Z_>b}fA5$IqkN9uOW1k+bfh=X5F0bOUSt z9+>=yCFtIr*c6qaAGH%5uU}*?48uurb1`M@!@MO06v}IkVE$71pGQNeSJt9y5mo} zTeO-R>o2yxUiQHD9S`FdvR_%{whS5;{cfZDXa5M+zkK#Xzpwunu73$PZvD&of674s z=hpvg#nwTeTUf9@VEsSr+hBc)Im-W&y-<(;ACLHdIuq!#z(RB>`{zaEg#JJEhgioi zc&9lZ3$ElB*065nLFd!PvOnSk^BLiA8ot4Cw5{(ir_K@ZLIQlNP6c&FgCEtA48M-& z^|t+*bnlnR!=!!9>pI4L25>(En>H9nP5NEl{XDF@g*Eb@Q2$lRG`62nF27ZB>Jog8 zXnZTGH{M$r=nAcytph%Z-x8Mt=88Fek?)q-=ke*!^NjDdoBy|I9RA-x`8?%U$>09J z`hUuwMIIJy4CG)C6MG~Q6MIBHD(8xz;}eW)6F%`2#)hxhr8PFKx8W;x=?r4G-ey>X z|CfFuc5rmPO@3mz^|luHZU4|ujIOtJA}^=m8`dMAuubt zvdel~4%~v{ce3z}%U4zYkQe6BX`RjHtD={W#m4r37s|9?jjd}vJjEK@+CKj8vc?ui z7bNy*p9wsSA)gnTI1xCB$Nh2mdGPd7p5ypx8FCbxLc8!4d`acECU@HW)~;}U%<9nH z*T&8ojsaVb_KSMSpd*oS3urqAf1Qs!y@<7~*YN{H;~UA-@_F9H&x7aNI4@+VFYxmo ziM%(wlkd~X`?q;7ed+u>=}G73&1G)#Bag(7RBn^g5qF3E_Rz2DNN34s`y%_!r=jn2 z#5P)xKax!^@m_S5rmpBJ@Y#YKusbQ!I@%M^Xz4ndatrFiHne|2dMNiha&GBcePA=# zH8o_g^~pTxeCVwRGx=oXB{-jKbm)_5EXwanhJKmgD*IUWv&NUu+^F;Ne~zrF{gAOp z23!`-;W+A)uB$08S3Z}<5gkJ^@VPc*fd%U>c1=y|Yrtj$i)I~-*cLZ2KerzCA7Njc z&?9H7KXi!p$n)N=iy;^7SWe~L>paW<(%wg{i@X&J>>Xjc zr|@3qEGLhEcOvpm^ntyy*03L=ns20EI`hzBn#M! zqkQ>k{FmJ!nPGFAk)`NSoBMDpyo8*xy1Q*vV!p>8_09(l&9~CeRqSKB3S0OQY?_^n zWf6AOG%MpiJDja&?<3Ei?!;k#yiZ%%Fh=C_jgLN+FKp+=xA&0isPWIH4L=TDV7oT) zKPEizUiCCrH_wa6XHlO+#AIrzgP^TNx95}0IRQRuB^RL&(T3r^Px|Z?9CF*q!D1{$ z-eWAu38p(4)=eNU;KklV1aAponI%RXkI+k8erlv0zOiv+oo&7iI?|a$S>Tw%XP#Eo zHfS=9!(-4%ZM0Dz(rX)S^vj+n5AiJG4!JR$$;;Wf=A!TCbX%*7AKmLV@n^9b&3 znrdP4xe#vW^GzH$JbY!a2RJ!v_c_V7A8+6ncpwIRqGt!?>WK~TJqG&IM)2dD5+C|~ zc$H~y;jiO78|N(A2b%wB#22!_z)Z*YW6nD70C+!@1r`Q6mA&IdVB}Grfu^@$%a+@3 z>GAGa`bfGEt*1(_Y7JYoBU;-Jzg9eC*mq1Eb*;{5 zA`f@%Rrsi)J@LXwPWz(aD&4h!?LeF>f0gK+xm5wbMXY&?H=;an2YlVneZ8W|AO=^L z-cHjPJ^58vWBIMZi*TIWs329`aNjB%y~F!%Y>*w1ENJs6+4K;yIP z1GM!L->7^KzMJ}bp~#PSyf(sH&xLiQ58U1qwYh=)ang_azJ=Vh(~0SckGu%od(eFx zy>yY{ND-X)!U;MPJ7NPdLiE+dS@!G|@1XXVAFA%iQdeyy-zqd{zkzgOH{^SRTSRhPE{3UqI`^ANd2_PX2uw-4vC7)Bjj#SdX3*zHg=EnR#kEE`8zANdc8k<|ZjA$$_-6_r0^IG6RTUsZSX)%uIwoZWmi&lGdM zk+_HWXA$iP=kEI)-)xDL#gJFp|D`(hJio!SrEB6RDsy}^hjJ$$`>!{>D;Q`0^@(2L z>$X1?=6;^{f{EUp%{$Sf-l@(RVf&&t*WUhN{Ri#M-^9q?GwYXRIP zSFf~Vn3`4}i$XZ5{q14BhE zg)P8AdBwk`fBhfD{InjR@wG4y(X?n&xEGve^IJ5&1K&Y*QgHt%{14xX$6B!Q+u*MZ z?;H#ayyEy~Qphv$=L!w?(U1Jh_g4PO+E=ot-UY5Y`$qPa@@kYDxGl7+qz|JumEtDK zTMWifTYM)QD#1JXM>?A%%i35ByQ~6#YC+Yi!FZ-=_*?iv%YaW)sGpVrAA8OqI_X08 zcUFu>C!j-a3w6SNU$nV{7M{q2<_z^MEh8(X2R!5if8F>4Yi;fi^GZhKNK$fy_fa4D zy_M^23{~wULVH2&WbN4={u=B$?pTqpVyCYar>(Q9RXTkYS8^mi(nTF!|P8G;Q#n9Y2O*!f+ z_9{Dl5^=R0K8x&g*=MrJmDh#5<-DoDb_Z`Cm+hXw4w8G=mA@k`(@d)F=4Q3?CHaOtcNUvK9}n5WawDs z7eP~fj1e)93qSf(0pA?I;y9xTS0{|a#}&7%T5OP^Vt9`d%G6Y`{-UFMS? z@(eN*Toz#fKJxJ~S;8PYXnz-8%Y3-KZ=%0gai%BH#}9yuj#Cq< z3qxGpN1O${mKLnNNZ+3NrjJH^Pn~nsk6$76UHdvSnkv@E%w z>Cv}uf_wR|=1}w~-+PR`lC}rP^|Nyr40u>`;G8J@oQm{C*jvh}&1g?z0Dp4bgL@GS z^R5Nf%D-3s&ljnCjeQ=U)}DoP_^mw)ny+jEm3d*=J+_SV`Y1ayEbFvooZ~{-sbSeo zt{&t6jLI0dbhq@@iTn=EGU2YZ-Oe%z=tpx{NWEM6M)E>(B8%N98F3C}eay?`mz7#Sw@|cvCuerqoOkvbF6Uefo$o6+%l;8f$2n6)I!bixBNLu^qhRS({fpkc z*9#3TjHi+3_a2XR2ww4b3Jv-;@mj&=Eq{vlb9w(vIBxMr1<%TD976BRc|B+|OMTbw zC++)+^xM4u9nVp?Ed_4%$RG!|`uqso`i2TU1AG(s3zg|ZSqIdZeD<+>hY`~N)^X-= zN7(*Byic$P#J$UqTP4}0@oOv^YbIA{_&`{e65YK*0mwal@smkvo_?p-s?P$(Y$9} zaBwHI;J<7PA2%-M2`_;pmQp)qgt>-`|!XdfHwAjM2%TO9LwWDW4s*%!*?8*>zrQu{#fSeS1* z%ygdvEOaJroHhH~?@8nrl6&CJ#Qi91tjozQHo#SDm+Oeh`Q(5{&&EYoH8;_wY?c>T zM|jvi6KCOBHmBkZ8+l&9GjJ@<8#v|@H5UH?PKnil|K6K`5AfxTwYqfXZ-s_zvNJJr!$Vf;Y&)EoWgTp&tenu z?lb%j=%XTi63=S)e*5i2Ycm{2ne2@~m(wJ;5BDA}-1 z*Gum&FVXkECT{sIc+tJ5Jt52;ZJuez#Cd(RpRur-kRHSHKf`gy8Hv{c zbwSa+lgKTx)ChFF>UbM1M8Ej;$mY~ifr zLBtl;dW>S^(K6OltsOTDnATo&5a;R=O}RMNI%r3DQtm^PMw=x6 zxR1#&r^)oIH9)l|`uPZB$vLUab%Q&vT=K|gKC&AUZv=DlnNt?OB=DPdJ;z*U8ztFuVA~=uXQ^~ePbkO2 z*j{~N*Ynml69;;Q@oDV$@;@2MuEsxUy@GQFD1QMNCLcHZOrasoSRGF~9U(YgLb+&J zxOeoL0QVm8m}GCPBSS7o6t1n<`;PZ@ZgW}wXKX|8hU-uLsE-1D&F24R#w#1Y>e0ZS z21X6r(Us-CIhk+712N$JXTH-JB_}a1;m7+qKZf^h=q1PhmHc+}7PZUteiAfy zi`J{5d-wO=%HX_s8~=m<47m)lzhj2@D{C{(hK7H7DYNH7IQ=S~BDTW1A9r97V|kXC zpS8!(A@;6V@+2INfUjNeN@B+<&hvZLAf?+C_6-bdaM(+(FZ>KEH|z;`ssv@#&f1a zHl$C@J3^Qm5pVv&JkU!&{_KKJo{E`9>vkL4CNG zMM?AopnF%WC6f;@-%%7JLrzugV8lhtDkmzh6LR9%kmedkO1M5n9R6 z&(@XPfBh9`Hd5|Wo?~6T4_=6aCnvk&@L^_ua(Ss=E}oa*U3MXGow>U&t8=!+cQ-Ls zc+TE&=M}-8cQ4>a|k;~_*n;>3+G#Z z(dK6n<6diVdeEYL{pe$?-0wS7Ft1J5GY0snH+$v?%;6{U!~DhaWwOhy54b^RT57J! zkFaf#OOZW|-^X^|IF=%b8OXY`NsmFNp{H(@l@&u6vGTcjL>?(L8^T zt)Dw{SNh8>gg$vE8ax~NOH3uk0sWQEbsO}jIh4*=@r`^%_vSKziSAX zihd-M=YNp<<&Xh_`9|lN5k{M`6gR$eENFc{VO;iUyJxezUGyCAelGB*xp6X zeaXV0E`0@U1$KL7`ZAtHm!dV%m>pvYT__LCi^y&d+3nz@u?lX2ld~sWdzaB(H*H&3 zkHi($Hu-hdw~>xkT*1Y71#kI^g7*&MQD;ZKwfi{mi^LD^d%@hn%HoUu^z9pbD?EIc z@7tiOKxfvb3zwMu)m_ycl2!g#a?b}O$7;BjdcV|y|EcaMr@Pv)sm?-wtwJ9Z&>i@R z8|tMy&@TZEEkyss1{aM@3@3iCeZ5oDpFn1kJH^;W?mcP)AN<*z{&C2pa`Y#<6V5e< zc_F>6U=E6t><6CuEdFZKGihJBB|DL=pMXC!E{*5Y_I*vdin>7zLw9E*%lW;{wo{qz zpHbPKTVC1z_&wDfi7{rbWZ)L)`ty9-icHmWhP8D&KH?UNS!g`pCbnZ`5q{|%tixTU zwKuK7v0ky7^@{5SbNbR8gcHqUuI-b12C#oWXP@iRf8qJdJd1uD?u6SsxG(Z0c4bud zsh)7HwkL(~d5bv-$5Ux5+K&3Iqs)#qyjS>K#->~cJEy=eM5YG$9)F>or+GJ!)rISY#^45ev&UG+tcQzV*8uX=Hr=TgLQ7n7U}nwv9YbK18+M&N48ED{5oFL zxw{&x>`mo`S{OjT^5=*6v-ajf_+X*QXQ7SkF(Y)XeOv15N&1m3BpWn_KQ^%Dn3T$M z$DseuA%-~1%-MwQ^g|t)V7xy1?p@JR#Ma3$HXmEb<&)-)XHVbQ#^FwEw^gCt)W+Jq z-rtB0mF<=LsA>K#Hj@`=$D^HOik!=n zhu^I;dp%;!rDMpJ$jP{J46zgIuuphbTzAMazQ6{nOaET5xL$?hu~?>KBc-48WBEgNqk zJdofVcHwOY-<%fWR5_r-)DvzKjywxHlPkldoie zx#B*1!$bX?x9c;nZ2izY&K7-IevNoo_Po#hlKA+K0AIfpPt5sI%9D}uB>0o=Qmi}? zDNj&tC@*L4C=OW8R`$Tjh)pv&h^r?*+Ae?cWq7=tO%o5+7>e|i)%dZi%h@dn%FEd; zS!}Fwc9Frxa_iQLH3=Wm>p}j*|5|%SxJ|NN9mVZ^*nA#qy28hBJcz9dzQTjxE|_P+ zI|O}=*V-ku+^bui+Pr3uR4Z$Ao31~a=VMaA*)vt?%PE_O?9;mXB|IN(pQolT;yGCR zot(aa=Q)%QpkMyM7zWO?`FLr6%I>ycBBcMoKA$vbScenc_wTn?YBk^X?{_?T^%ZH> zjqE%`BcfT&;ZMvd$Q7X!>WlI`+uRDM)g9?YvQ z-N^47?E9MZr+Ai4p!my?JS#Skt*o+VNcSTf8}u!7+>c)q#M?)u2i8=l4psS@qf+Ex4FamT;HO_sHH<(w*h`zEpagLxJmsxRb4m+~luNBJqDP00u4LtaR} z%MJWT27Elj{gTYBcTxE5`Qperw%e?pG7|pXAO^E_=+wFVXvL_=K+9=FfyVH9365IPy~Ulbo}m zb`I_)ZmQpV4b4jcJM28W9+IH{EcXJay}Rgp1#@i#F1J1u)ZfaSEPSw|1gj?ADYou# z&=lf8aeB#tn`mQ|eP(To@!i1hfxV7TeS|W>+wseTz*sR_2YZJL@s{u!Gy|o_N)cKmSr6!=0WlQCt|CcH%2M10jR)^hXrWtH@cmUf>`+sC}DW-Ql zag9E7xZ*?3w(5g^vjY{ft-7|qywJuNWmgGycF)cFiolM#o&SLy)ulL7U`I_zUrw93 zBLh3ClUR3PN1?y5qxK@6WG0z8+eBv(+aXDxL(rs&$OG(v-g3H5IbXWRm8hIbFv6JG!%F0rgw3`KFo4gC~-I;_ZjcP3|Ol>?64aj7NEs z<@BTUeik_s#G$4lXBIpchYqrPnI7d&=h;6f{S&WT@SJ=a<<3sjdvrg(R+r1ul6}&N z4Ym(-;bEg?h!@JX@UV$ID+8vaA0sbKxEy94(?VG1p&NaRK9p_KWw33;iyg=xmz(lu z+RVTcaq`;bFAZ6`oRppd9Mngq0y;tVl(P>F^Rx4?b`&u-+9oE=IS94kK7)_7tDWE7 zSKUz-XZWY(aHc&A<=~m1zU&3%PD-Z;cG5MnCEi>4q_rR9)2wu$_rpG3Xf!a!c-u;m7jYyGP$h#w%|c>mWH zXpFn@wk+A*KN~u2cbQc#9_Zm;m9w7{tl`IySr(V%Y+F1cOBWEM;QX!O7IMN(iTu*} zf*QZ_`g9fsvBn|xEYoNp+bJ3$zXR>Hg|A=228ZX} z0QVewgpOpKIraxht|(?VkKfmdzo3zivhUL0cl<7Q@x+PY3y+sjrw7>d+V3W&Kg@T3 zvCo|UrMcVZ3F#R;2XS4_|K|BbTV9*~AkVUao$V%>r1o4qYCd!&xcgfR4J!YUs~hSq z>8v5-!4~j6%(zdXjzNxnB>XN*Y+Amp@TPb2ebk=X%Hlujf4d#aG3*KFpY{EKPpW#&Ly1jo~}U1BYWPOXG*MH`3qU;5X1!0bbmB5_X=U9v5wS&{aIb z)6jXZ=Bjy;v)iSdUCsMqJN^mjCm5G(Y|;MXJZqo%_8oV_7=ZIIVC9>!UNjQRMtg8fXg3ANs-_^V{C_AxDo*O!NUy&PUovYsJ% zs@!JzkJDZKMXBl_>Oyyph+BW_}H}*V%AXnhf z_SSpL-Txizx03B}JZBPK8D~J$XKnD)}$xmbIK>oAW!T)n&>*k(d1hxmev{IwV1Eb$$Y>^_o>{y>NiMF z)C~H>(7!>9O|jg#&S{9?$OA{>J1e86ggF`^Of!{BpA#L_FuymL8+jIMm1l7~@PX$x zl;&C7>#=W_HUvLnR2$k3^cOcJs@qMXru}2Uu&?iI(?= z59MzyJU57m=i#$f-5bSz$=mK>{T2M^yyA7_`n<{dLsLm!ae}ha^NRh$z$bBvw@wbu z?MPxL2q%sfgqtjO(fqv<`FdoHYTr8UTz$v^x(>61B(WQpCBga z_OxifOGRqOM~JsF#!TGIsmDIDc)>1u4mx=bpH#li%(15qcYeq;m&#JfY58{euWOa} zb0K(;9sDeIl5iEjHo@6W69zj!pz{zW5B?XnQXGG8BL1F<$Ylep}Hzr}NyD_*|WI6n z#&!93wYLp>!ZPQ6;Ibe7(=Fg~i`M7iM=l4K;wROJZ(%Ka1iR{{Me{nU$e**HsyTng z!R3g=4K6ORJq#}8!$RvdW#BOC!(r6muq<(ii$e=LE8?@O=p&PYr{(81v;VhnsTh#z z4)BGVmq5oU$7bSeV&^PC!81zD#}B|c@XX0D(L;>9sE4LB(z3n!BKX#aGF2XB=rD& z;S1R$yR3UJ7v=ozV;joJlS(!yN4r;Zpl$h@>gQwR+FJMj54m2>wdiFqV+-OpjzHcr zM`IIHlYyOXwOq?Po(yRvhihbrJvApomd(wn0(X^ z!Y$sojm}`q8tcv{iW*0Jnr%LY{+^>AGx8IR|CN>1#necH%#$)d7}#8t7AB%1_h$@4wParva#Y*GAZd>rwp z^r;L5UXiVxi zf*dz^#O6+;??Tpb)GvlJ)$nJ;Cj%r;BFHtxS(4xYdnjku1uX0{WK9n^$Bt`Af7OBW zEa2RipJZc03jUrB$i+m!+rHXAnfQ*zs(CoRMoD5I`1!Nw1>IV(wJNiWHZFJ9=%kRp zTBGwE_q;VacOysV=jl>x*IsLMcEd;NrbwS(A{@TtK=5S!AIiK-=u zy>?ZlvC&Bx=@H?Y05PV_Z?f6cFK(9N>PJ_jbEjZM7wp82NC_^})L|55%oxTMw` zne&NPYrX}T-EH3OpO9>wiyXCC59F7vx|c$xneQFD=#%_<@^hfaTH5h!9sP!ZwHKoi zZ)i=0>>crl>Wib`27VYHz~-M<#MuedHps6?&xaSzho*>6v>kNNk@JQ+@#pzt!Y%eG z#8BB2dR|qyrHwNbTUS{v|7>w=923$4_*>azRMo0 z=Pj)4m6s=eWY%>nZiL@m^EP&I5*{k&Y@Zna@3}F2uV=p};inY*RL-7rk3(O^w*$6T zWCHcF*e}dSYj{rhxNErjQk%qLOq+sFmc9DfSG4A>gNNVw8FQtd9R1LC%LeMO)wkf{ z?=uL^dHkTcsfNmjo6Vu**9@P28{F!9|F@zu@7t8d8k^8i9e3USsT9yAeQk4g2X zGr%`qLQH~j`+deVu#O^ICbQq<@7!+((dTc7`zXHP$m3^n@xW$ez-sKe&!9Q^Ip?2! zu945iKlQ;m1)Oc@u!(m=sS7g&vyq4J+A`uaVSF6g?`s1(Nck_(N?W_}SC!YSBXvofDjB z?4rkhiN2vdy`#CNeEXHyW`8sAdlvP{^hHd)`f2N{%r0!_G7Cy#n+#A05jcTqW2&oE^emIA4R#7DYQ&VPiyD z1G}O&+Og*cR_3kI);eO(uV8!Z97K)32b&BuyPLmZw4u4DIJ?8tmZPU8V*Bl0U}Y+p zYYTH%>|bpi#Jd$|hvOR4p4SGm-IKNRX4dWo&$epR{#EB&HQxK#rGr$nlaswRGT~<8 z4krG@zUktx0KRK<i$#zoC{2F|7`l~vEI01MKy{)~n3)%zMDvw%{sKke=qfOP5 zdG=l%?FKFEY@SmW-4f$_MlN{GM|UVuP$nF~*>rscOMeM-w+E z?rpA*Qh%k1y7Qele2TsFZ2V55?V03~&69QJrrEcp)~V%&CUWx(T2{-lV)6sr)4mgy zYrBNGZ~N>!8~e`wwrVy5iL}N@yKAnjqCc3x}~0R&$fdUyW+7 zJc9fc>+)YDZy&>EDqFOugZZ@V1(qJ}nNy3-jCm7#A?ediNpw>XT^MosBXWR8gY4CB z^gc9*uOhvvoR;v@MV+B&@O#9gMf0*rR3jO5{d(auC_j$>-#NJF7AZhrnO#HR0c1I{hJQ zNVKQ)NzjZ zXn*e}#+ITcMRNF#anL&Shz@QzNo!@$5#Y2%G-wgVXt_A_IXHstM6xN{HeZj&x%`kwh27t=1nIxR6NEWZsbrD(`EcQ{$c!? z7;AQP{k&uzThYWRY4skv4@ zAjPlZ6N2a8xpwT@(TR6+_e&FRajn{lH~9Un`~9n2A7x-aD)BPcI$KOKFhMO!?BEf1 zmO(p`Kb{N>zD?ZAI4+s%jlTt4jAgAbGV zr+z+cB4#~~{%mNy+$w5+-aQXYF{;B|KKy{Qz>4@Q4-{P);=bX-u)~L0@#Iv854W(- zyFJaS*}^{WF@6W23yOQ}q2NGk zqV{T;%G$9?&ZpQ0-@bSedN-bJmd&>fo(*6d6Bsn>h2Tr&?fZUSkA2_UhC63LeCtwhOWce3CxX;)8U2eMeuVxu<@9j( z9<^H;b3bclXFv4$26R{u+3nR81TFNF&NRc$YMsyiL)0s7#RjYf=c>ouip|$LKiq;m zym}t%5+B3<)qEOjYdadj^)PTPJ5oHUH7BXv@hB1jY+Xh{x|EA`;t%EYg%@N#w9!5u_stBF#W>Jyu-U~ir1J!0fo_Q@B|Ty?OhMuZG^1LGxX_D>{mz^Yh!cwFcmz zQ>h&y28ez}_m3BE9BNf{D!&$mw}PT!H>VvG4fBn`4||#EjQS>M5qS4FOM5glBwZLo zZ>#O^9%k&)++0NmtC2B5V6HYUX0N8$fmX)sTf_eO+lmLocb|v-%^v!#jA>i(toYGJ zUiMFPJRin4j$qUt2xpgJy@jZN!>9}C;ih*X1W%9$!ndPU^zi2p(To}SQ z>!1huAktS_D}LwdqQ*}AkJy*Jb$+AFI=>k)&L@DD#J^rGMJ4pa-?}&8=hfI}eBT1! zZVus#W~Ui`+AM!{F8rc(e%2jY=U1AjA_mfgyim=R*H#lUqY}NWwQ8Tvw=$DN6SSvx zstl}HTguptUZjnYTz_ij=D@Yog=>_1>+{YzuV{cKTz#~^OLxToY*Wm z(H~yWdbTmZSvboM9}@rWqeYD#KTLDK&rm0J2-gM&PK{B$;I29&;ZE=`LH2DjeY3ya zSp2-g!iL{ISkxHd%-OEO(@nhhMCP`Nvnpdl@K1zK-`c^)2V?JP9W!eO@tZbluS06X z&Dufjb!dZM^{M_Ir=R|ut22(ji%g#-i4QJuJd>UGaood`!CrX5eq|MO`bB(g`k~C&6!+ zxMd7F*$w{WgWo~_ZOlRb!6xWA3*HWodFL43y0RblBnNI=P5o@E_C~vHWtZj#{c0>9 zQ6mr@WOds!j9;=Z@H%!5-vW=tz+>?+z7bDp{e|q&I~e~Go(pzies%9=?j32Kmn2rY zaJ!WMu`#A#V@%mW8(c5udhu2R-_pb)zB!reH(eZzN^C!y|kV*8kv9YY{7%$4b>S zLc7w}S=M6C{)LZcTeFjg(WfUrB)7go``-WRSNFzo&y0&YCE;l*a}>^mudjeF@zDv~ zyM?xH`vp1Se`P0)rY1nL&V$3Nj79pv+n+cH?Roi}?9zU5#m2Hr`^U3Oi{ewM?+D=E zMf?A0auoR z_+?+qKbO4m*MS*%1HH;V=YBK3LOpRzXU`RTQbW@TP8{r6y^j>G5 zP-23aI%>ltuiwV5?bR3SaSE_YbT+o01%Qp_uernT&6`Ab!JS!^KNP4 zZeXQv8(H6Xv$@ybK{!Sj0F3Gb5bDoN~_j+PS`nd!tF185&^k8Ike(K3cu4!u13MFY#0FQq z>6+Ep^VDng1@E?lrpMDqK@+r-KS&nn3^{O0&81Tx>eN4U*E&GwEly47@C17tnmNg4hCgyT1^zJWdc(}M0sNX= zo$P8K4~ed0{D1Gkj&2C!GsL*3^LH(L;QNTRS+3n~VM987j!66(UnqdRF*H`#;S8`Qx&&Q*Ho%pFR{Y zx-|20QM?1c`t?g$Q_1|CIBlufD@VHaVY9x{nR{Prm26}&eP*s>Jf1y7zZv`!vrj$o zj`kq-pR?AhBykINV{%AG1>?$%6L_^~ea~meLgm$M(VM%MrY#!z*wG2+Vq;teze!e| z&Gi&>JtA=i*Vl6v?6vOy-{AjrHO~m#rA_Hbnc7BBRc=> z$+`Tgkyqrq-FVyNhKnC@^QZZ;GB~+Gx=k_rYTl7uEj<&Utjc-QBV$GLYFp!6LEGNCs{?rF0r%S?t|fcJ zyf6CIIwQ?(5AUlsQ2l9rpVz0xAU{RVd(jR&?ZL&-Q>BT2&Ls}ZH-<)CdvEwD_zG^F z!-2>yeWThy{p#5--RrmLLvtDFj!ibI?kQHdulCm_U;GR7`Hs}^hDXRNZnB4&z1Mz< zEEovykV{^>MthI&&T^acK;e1SPn6w$hB+^yleI~b$DSOXo3-K>lNVDx&5j2K#kbu% zIIjI)=EIjka>&XJenuYI?0<2NRde(J;%sOPiZ?7Jdt=Za48^4_S1TE>*{)rSYvS=F{VrR+e7i0z#vy{E{+B{#rgqqw4ajVFZ?)8sQVb6(pP z)qS&WQ|+qF(N|SFwczA{EZ_K$f$Fb4btd-rl1RrYay$6XW*?Cg$w|}(iLEm((SvYz z2K#JT0dnf#JBA(=z5~QvPsEngI|lE-M{p6&<*$2X_6B7UI zt9{wj7ogkLhR|)`Djm`sf#@<(w*=A&)2*6?=%L}KBj=Iji+p-0g*>->bZG`{4X_Xc5ejY!OT7#oc7`F)u*V@#v7cJW+o?4E;fgx?(kcN%|)bKUEF zbE?z((4D~pe%>l{zdg~!AJ$rZ@B%@nwTOhotjC|dteR3J1Qxju__C;?&{Ez2=?_tn?8FW{!czp59 z&J_8Cxm*Vinb~P`jbC1^7)2ZLK%K316F$0NiL8*nVa{W1BQ{7}zSo(oI!ntr(|l%U z2%fQlsi)6vU>d1%^5T^p+oN>?YO!~&XefWU**7AYz4^Fc(HH=;H8voe051+;J*~F{a1Bm$RROar@ z<%83_@z3s5o-<#j2B8VPUpLhm{~9A7`nT61i|QD=&ij`APkx|&6MVW2o>hI=R&=5E zR8frUrk@idZOv9(_*xh}LY$gd0J)8|oA9Ih^Ug20-T}?YABZlw+{r5u=aRp!IKf z@X9DKR9r;8)K@E*}T% zlJ6M*GAH*$1D@=Y+?x+Qc(QLMa1w1u2HuLjrMz6Z=y~WY-?_rGdgPZB-`);gyi8pW z_E{q0*-OOE7ks^k#;%9fNov5+l03I~jDL$0)vr@jOllPqaN&jkOLo#g1Z`5m*F zZ@wM0!L@@5A1Z2ec(6F}IopV~d(G{BX+1A53^ z&O>+Pt_vrP|HvGi4ro8rmAg%U%hrr{;dB~sIsiB=MSiB)+fi_;ByTA=%>_=C( zsgk?gpDKQ2pM(Q}(NX*@4IFr72wWRDl@Ex20DOYL>cheV#&2ISFg^yk`z67ud{+E} zGGrTiE%u@VuQKFQwM$F&z+f%cW1x}rw8Dn0v7y*Qr>Uq>I=`7``EacRuAd^?K7*cR zXFf(g?1etwYvMicoz=YaY#;BWT^z0C`LB7dT*e)_T*e(M-vK`_pG92=QyOsG;3)r&VZSVGn$c?lqH*)*RxyF_#OBfpgn5FNu zT6T;*Abuv_s*fFGzY*UGZKdxFw}?*ed?s7-ExtKwL$=1O8MznPvT9&F!I-uUm}T;$ z>Td^QTFm@Dv7kp5-snf`&xU9>qhFzT8kb2+HnS7uBU%D^#=DDocX66`=ko6O+`D(IoM`OB zQPM6;;tABM z?Ra1?@q~lP`&gMm;tBE%rw~)nzKp3QR?Qh+EMc+ZTh=L-@WXI?l41#bKOcQ@$y-h= zVJSZD<0qrb88`YY=ii~v_8U*QB$G9^e)87d@r2;F6i;yK=Bjy5YjJ}2^{#ISUxA-z z)Gf~oLtRTeVct=0JmEO2Mr+Gt zcXbu^OK6S}+Lo_fs(8YcjvrLwufMcLx7+iOrNjUfvy~ro67`ptV1NAVJJz})H+L?pBT8a;R6Kx2_M^j_mpElKA8F7U5-23IRP8`7- z7rGgHmmJA;_zA=jmb!6-6Kf+K7vm4&2bmax+WRFjgr)y2h9G>)E&vw7_3hB8=;R+q zm>9xlUkssM`{xlu*t`*2ni#_7?f4=lh7jwHA^i4iBbPQOdB@0*a79DiRHyD~B6`4y zd-k=DlCwv)!Dk;a1cOf#Ly!-o7{ai`pP(DX55v$+(&rl{k(D;J=?h)DNw2QXd>Oh) z-cQa2zo#5~Va#myZfB0Nx6+qZXXZWW#1`b=UHoh46??{vg&4Q7?<&YeJZRM{!d_YQ zpoycmECx@qlfuMiEchVk;|qL5@kP$Qk6`zOf5tuyLF@Eu@vf(=J85}<*R@4~a zUGcBy?+19l&Q|T`$i(?i^yZ)BPfa|bUhxC`&H5@}X2y$MmUVLr<@gd?3#vM|4z290 zyv?dno+NyaHPPaC@THC~n_{lwugEP`nJJIX$c$lriu27u->Xg_!gI^VTjF;c*vKyx zT#`@X*Ydq|e*dfHWYRY&A5I;|iox-YRqUri8zX`yEo% z**f5WcwG|w5XbRgoGM_iUT~j92W9aG)vxmD1^hWVd-|rXEHw-MxzB3eKuvnvS=c?q z1Xc63;ePEGV6}hr6ZT8Mj~z`cBVU%OR*U``RJXQ~*mBtCqk-p45S*C#qoXzdAnP`? z$5CL!X=cC5G1zKpYys7CXzjr^=AT0T`C%ACKE?38Js4VyM{^NPY~$Oa%RD&tPh@ut zj&EORW!3=8ZM3(Y_8z$f-228wdl~!teb>v{H^UqBr5uXlFRCNye>(h5-Bsv=3p1CC zj>sb^))M(mM@0mhj$(V4_p9UF#mdeXZ)87h@Q;mP=zIfXp9hTufYD6OU5p~XI%!Mo zuSRxAXOt3GlI*$LjVpO_i#CYeQd2OyryL9-2PJ1c=lUA!@R>aC6)&h)ykG}-@nQx|(ca_LdK-;*^%d5nO-3&iwG$7k*@>-{ ze2w}8o=jBSHHxm3Oq3n+w8m7} zQ^rPq2t9-MzT~26vQ;A~y6RV0)!DC@J-yF`f1}7mWSZn)XvDd0ym>@o%ul-KeG{Q_HY_fWPGC9?s&CE_mFXv*fOS&VlosIgh@#_k67ziIvmF z{pdI8kJOKyx?att5Lt8svOziN(C%|GtNC8|RQtc@z1*Bfch7mA`;Kt_0Ppzc9J<4* zSpu#*Z>Jq}-Ss~G7e+56eX=?U?(=bD>_En)dH1{R3{w-UcxER#ukSJUN^mKC;my6W z5PYAdxerUU+|zsRLFR7zaME;(RkM=uEkQnNd_Vb|@!3AwL9bDF?BGOlxD&anvCVSF zC3yJ9RY@N~-}ga%PyXP&yL#Iqv8B$~!_PbQ+Q_g>>N(|)%M#BKQ&z3*8fbP6aRbFy ze!;b3wspi;v>wwYUb{LMukG)~4X6cjV~b`z&Ol@XvUfExdE`NR8d;=xZEQdB+8A}c zeZ^~|7m=6n;IxQ&LlUEziRl_wJ{}QJv%cOuXXKAf4sJgZ!eRd2T#ZL8?P-*Y^5ey ze!67vJbYq&&_vjY+14v&yOla+`RsmOLHwqd3?{eJJ8pZLt22n_Jx1JiQtkYX1C1YB zmN*UkZt9ZnJUTI(>%VgC$FZhYRuxAg_^?XCOp@ZAKy6;E^U?Te?OFBMM{zI(*e zxUV=-lw5=Gt$131HMd?oEjZVSr^WDndc@NL=s4nO+scaK8iV3#TZxe>o^~5?_ibgY zgCNF`D)R7*{#0BZf9Z5^6)XndG$5Vs9b>f6M{QoX% z*8Mp6_pSSBA&uzoj+yTwYhE6?|opfUD6&@-E-Iq7Bi-4W|G8 z#$S7eennTe8yPZ!`Hf8chI@PWYK+6p|4;J2>f#l1jT7&VncDr^SL#gP6fx!<_{v|R zzczSNYjL&{YgX+0AEwQKIkTvhwI5s2kE>`)F^a9|!dBMR|ABYZ?xVSOofxWO!N#wF z_f0&QTxh+%r4O~e9T}il@H?gtXPme3{4ApvM<#COTKRx0?}M+A6OyNbxoo`~dA6Kq z?e}MEv}PzGn-M%)*o?oO4ZoqgtrMUdAFV=nnF#dTMV-)S(-tvgbp4gICBIqshq+_< z+c(IqFU(F};DfzzDcEamd=9ZW1F>p{Sy-z zL&l6}SYjLTsjq9U#ASBT*Z#((dFou$G(NldMKOUf$nA3cd(l}_UA9L4{JB+jwZ`-w z?@q{rlSijocaVZ+)W%{zte_pWb&Q_#EKM!O8K*mVNLp5N`h4Uh^wW56pi#I47tO`= zm!vPzfZE$9yOB0tF?1d<_FL-$t7ZENhn_#>xv|++%!0n5wFTjpRfe|86944c6!TqK zqMhp-4BpEUA8>uSd%cb8FY}IQT|Sr-w_+_nzUQeA6gA418nd70RXmqpifsXZ5rdd& zWu`FywgC>Uh<8{kWB4YKw_b^A$&OPqwJ+gI4Ap#6N2_^a_n%l{M#q|K~K; zDudS`^iapTRsZ^+5VbC?;C?6b(L23ph+K0%ZFWJwyTJW5hIYDPyA7STigpCoZ4bcz zz;vU=jJ`dUb+*Za13mWIue*Z%U6|*i=;49iB`=Q6V+GhR1AG$;apIx@YP`WWazDo( zLB+p(dLRZ(TS0UZv8j3BLitCX8T$b~Sbt(+DZbyf(8_FGS=9Ieuu%*w5a_Or3Iy;I z;r(sA=iq&yp`ojoi)cvqCkP*TxuBVbUPdS8@!sD%v%{}Km+Spgc=vu_E}w5B*PhJx z#Lou++zke?G2Xp@p_uKE&CbophMKwb!S>&jHz11V8|FT3C{SV=}_L30Kc{0J1 z7m^ifTW8hu^^V7n8kci^WLe^9+WdgA7r3;o^M1we_X0!t|Nr2bm%Ea$l24b;7l_jp1F65v=g5rVFVMf}?K0Z;#&<5yRBxSh$94tJv`4Y{eko%SkMDD7UGJ*B zCZijMC+@+ARPAvPJJZ5nuzrXx!M;i9f33~K9_h@ehP)^-!PQ~oX-oLjoHPctDLYN@ zoKJt=KJAjDbNOF#^eMi1iuXn`2i=d~&sj;_kG-xlHVO=%>bc~Aeh=pNHgdKD)59B7 zCw?pS;5*3W-oo!D^0(~uvUUyi;N)>PFXs$$or~eD%i)YClf$*lo}^k|qMGq+_5l74 zjAtJ@DDJNde~2|4st2xc_ZN#@Wz~G#-|@-A-{Y6uo%R8i|G8M}RLJkODc8B{fOycY zoi;hj8Yf42ZjW4NVSA7oTGcyyxy}x*JCNtcpKGnV7~e~|PSZ{yxlZzvXAm0?2&O&S zDQmY*?Agv<+Sz+C>s>3Yb<^B-EafGsX=YEXnz<#^dym8SX1vEM|IBzbhmL<87@vSY zw+kP86*+~|uP1llv$bq&t$h6!@x>t{#38-?>7U-|9U7Vl(Y)9_D_MdI6E z@t$fXY`rIbch}TL;P)gor%v8_SmI&cQ~oi?dyFaf9%IS`&$iYX_^XDQytQgJx}dG# zRZi}@j@XIO<;0%yb>m8O{6$M=WKJY^z52^m^CAzIv{kz3>iNUuHf+Wu+q17dagww^;j2ySEWH9T_l>T|3~+Sf*BqMQ66 zJXV4akYaxrn|9q=iF)GL^~AB)QZG@z9hf<>>;cpsA8*!OJPhtF`uGlhEpeWD;yi1e z+N+9&CiItd@b;g2brbuCv-oE%aqXMnwVUZ*xdiFETe#lj#urr=EV&T=0`X<9{@aT$ zDxc6-d>OvzGrkO;n0Q;Dx;wsH$+Z_>P7-I!5?>5n+%vx1M0`#0Htnsm9lt8&#h9lN zXCTJ-FZ93m+Sz{ZtX%!Kzb;sL+9!c!j6I?EhlhL|+yb0DJPhDl#d#c>nz{ctv(78U zUpmXBD}2EmUCDRS8K!=kx)nU^@Wq+aC-kPR@bsQ>=3U@x24m^?akosXdna4-5;X7O zShB;zvFdS!U+W9tml$D>d{NVW@C(oMiQkZm-^y7&{LbvguXKpP@0mUE8+Gx!?Ezo@ zfLxJqy9nHFdw}@SJ^uWGvu~8n4L=Foq&P?Qi{kYPA6^?~?Ok!i{{gS>;LAu}{9p0f zbaZdLTF3Xq>t68m2kc7eu;(Hck>vVAt{;F_YT1)d{-(imj(->Rf!{JWA6V8S zAJ`XuwJ%t&`~Z0DGe6+r7duY*A>{`up;__o7S&r*3#j}6wd{TG3kLsc49X8^k1XW} zESGn+PgaWjkoJHq*Ls~y)~wfg9vr3K`r`PV>BH|xzFnKs1v7knOZ^CY6nnbBoHNXL zqJ7|3JZpFfKK1kNHpc7KjHJi*#&7JaJ@MPIWKqWigVWK8)4=JC=322^NAJ$$UWl>E z|Cq-0SaV&L2y?Ak{GWmUpMih*JvVW!vq8(r6GWHPcE}b>4q`9iT)t$qi~rGm;=jPl zm%!hLfq%>7OZvAz?A69?FAi{rLuLoP4`SHc$K~MU58#hqfxGuH_`I)4Z!asICV_N4W4>z;z|p;;jIC zhW~@-De}?Vs2hKM8g}-rPE59qIPrGk#NsuN4@114*89Yiw-ZD7lir68OuXNHU;BG1 zMs*?mgy=^xu>lWJ|KFxH0Jp9@LEmHJD}SOq=vlm{{HJm!*Ymy?b7`TS_Fu^#tL^w1 zbEhtA?Ivu%ZPB7k1EtdGmUo zwxug7m`~VezlUYN6EpVUo7*QKS%+5M)&B9c|E_79_QZG8^9wIUY701Tqn2MeqA7wgbNjY` zUdY@-fvw=}&uM*MILM3RUd6pAW7xv`Mdd&U-; z^QGjo-N(22?Z2cx^TzQ!_x#`M+gtMcMbG@j>zDbc-`(_^r7eFP_^aGg`~Do;p@Io8 z8w*U*E=~TO_Pv;`;%!^_W?XK)!YwORGr15rECmkUdk^uR7jG5Mcrn&e-d)f4hvmM% zdF6pFydTNsEN)p@;Iw7dGH72nWc?Im{gj*ep6kV2FJ8vAw-;L0xiy*-`503hmY634duT_uTa~RES&qM_pN^S)jn(1OB5hC z6+2UmMr+lo_+P&KJZhh0Q&k0>|HI^#3z4-q5x=44=#@hJx3R>LQ zt8@R-1MKQ~)L|y^@2Vo>IP>oKhO6&$d^%wAs=n8Efq~9m9NwHYUu022u|i8RFlucp zi61ma`viY$G{3qpz`W)-M++V<12AcCO>;kXfF^p3=!yaQy9p6wl)UKYzIP>54 zj}QH~Q{%e}yI$iHPJnT9WDGUJz{-o81jzaL`!w*P)@wO(us{0}%m+SE{Pzo#<=yV_ z{w{tQaoFYTJE$>h52O{FD}A) }{%rr2|1eBB7_-opOWGMW89*RDBa7ItBPz0t8R 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�pEu7+lMiwIqPZ?fexK|A^}l(5>pz%l@GZ*J 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�NAdTgAM*W1=kE*d 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%0DaDja`dAYReYA*~V}Az6&>< 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%0AV;9Fxyj!)Fa>2nS6ZsZv| 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 z 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 M{HOHw(on6$)0+tQL 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

    qb9)!LZiI%et%V`dd>`JHhK4t_mBQ` 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

    This is another paragraph, with link.