From 7205ab11dd86f92cdca47faa19bdca58cfcfe0fb Mon Sep 17 00:00:00 2001 From: Sakshi Patidar Date: Sat, 23 May 2026 20:30:02 +0530 Subject: [PATCH 1/3] Add intelliaide RCA skill with vendored Python dependencies --- intelliaide/Config/config.json.template | 24 + intelliaide/Config/json_config.json | 39 + intelliaide/Config/log_config.json | 50 + intelliaide/Config/yaml_processing.yaml | 176 + .../MUST_GATHER_DOCUMENTATION_README.md | 113 + intelliaide/DataSource/MUST_GATHER_INDEX.md | 110 + .../DataSource/MUST_GATHER_ROUTING_GUIDE.md | 209 + .../DataSource/MUST_GATHER_STRUCTURE.md | 110 + .../Machine-learning/ML_LOG_CLASSIFICATION.py | 2491 ++++ .../ML_YAML_CLASSIFICATION.py | 1210 ++ intelliaide/Main-program/agent_prompts.py | 432 + intelliaide/Main-program/data_analyzer.py | 2184 +++ intelliaide/Main-program/llm_rca_agent.py | 601 + .../Main-program/must_gather_file_selector.py | 198 + .../Main-program/root_cause_analyzer_yaml.py | 377 + intelliaide/SKILL.md | 402 + intelliaide/analyze_data.py | 203 + intelliaide/app_paths.py | 102 + intelliaide/extract_cluster.py | 220 + intelliaide/perform_rca.py | 214 + intelliaide/requirements.txt | 32 + intelliaide/select_files.py | 110 + ...821__mypyc.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 433312 bytes ...fi_backend.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 348808 bytes intelliaide/vendor/_yaml/__init__.py | 33 + intelliaide/vendor/bin/csv2ods | 229 + intelliaide/vendor/bin/idna | 8 + intelliaide/vendor/bin/mailodf | 95 + intelliaide/vendor/bin/normalizer | 8 + intelliaide/vendor/bin/odf2mht | 72 + intelliaide/vendor/bin/odf2xhtml | 59 + intelliaide/vendor/bin/odf2xml | 81 + intelliaide/vendor/bin/odfimgimport | 190 + intelliaide/vendor/bin/odflint | 216 + intelliaide/vendor/bin/odfmeta | 266 + intelliaide/vendor/bin/odfoutline | 144 + intelliaide/vendor/bin/odfuserfield | 101 + intelliaide/vendor/bin/xml2odf | 241 + .../cachetools-4.2.1.dist-info/INSTALLER | 1 + .../vendor/cachetools-4.2.1.dist-info/LICENSE | 20 + .../cachetools-4.2.1.dist-info/METADATA | 129 + .../vendor/cachetools-4.2.1.dist-info/RECORD | 28 + .../vendor/cachetools-4.2.1.dist-info/WHEEL | 5 + .../cachetools-4.2.1.dist-info/top_level.txt | 1 + intelliaide/vendor/cachetools/__init__.py | 24 + intelliaide/vendor/cachetools/cache.py | 117 + intelliaide/vendor/cachetools/decorators.py | 88 + intelliaide/vendor/cachetools/fifo.py | 31 + intelliaide/vendor/cachetools/func.py | 176 + intelliaide/vendor/cachetools/keys.py | 52 + intelliaide/vendor/cachetools/lfu.py | 34 + intelliaide/vendor/cachetools/lru.py | 40 + intelliaide/vendor/cachetools/mru.py | 40 + intelliaide/vendor/cachetools/rr.py | 34 + intelliaide/vendor/cachetools/ttl.py | 208 + .../certifi-2026.5.20.dist-info/INSTALLER | 1 + .../certifi-2026.5.20.dist-info/METADATA | 78 + .../vendor/certifi-2026.5.20.dist-info/RECORD | 14 + .../vendor/certifi-2026.5.20.dist-info/WHEEL | 5 + .../licenses/LICENSE | 20 + .../certifi-2026.5.20.dist-info/top_level.txt | 1 + intelliaide/vendor/certifi/__init__.py | 4 + intelliaide/vendor/certifi/__main__.py | 12 + intelliaide/vendor/certifi/cacert.pem | 3892 +++++ intelliaide/vendor/certifi/core.py | 83 + intelliaide/vendor/certifi/py.typed | 0 .../vendor/cffi-2.0.0.dist-info/INSTALLER | 1 + .../vendor/cffi-2.0.0.dist-info/METADATA | 68 + .../vendor/cffi-2.0.0.dist-info/RECORD | 49 + intelliaide/vendor/cffi-2.0.0.dist-info/WHEEL | 6 + .../cffi-2.0.0.dist-info/entry_points.txt | 2 + .../cffi-2.0.0.dist-info/licenses/AUTHORS | 8 + .../cffi-2.0.0.dist-info/licenses/LICENSE | 23 + .../vendor/cffi-2.0.0.dist-info/top_level.txt | 2 + intelliaide/vendor/cffi/__init__.py | 14 + intelliaide/vendor/cffi/_cffi_errors.h | 149 + intelliaide/vendor/cffi/_cffi_include.h | 389 + intelliaide/vendor/cffi/_embedding.h | 550 + intelliaide/vendor/cffi/_imp_emulation.py | 83 + .../vendor/cffi/_shimmed_dist_utils.py | 45 + intelliaide/vendor/cffi/api.py | 967 ++ intelliaide/vendor/cffi/backend_ctypes.py | 1121 ++ intelliaide/vendor/cffi/cffi_opcode.py | 187 + intelliaide/vendor/cffi/commontypes.py | 82 + intelliaide/vendor/cffi/cparser.py | 1015 ++ intelliaide/vendor/cffi/error.py | 31 + intelliaide/vendor/cffi/ffiplatform.py | 113 + intelliaide/vendor/cffi/lock.py | 30 + intelliaide/vendor/cffi/model.py | 618 + intelliaide/vendor/cffi/parse_c_type.h | 181 + intelliaide/vendor/cffi/pkgconfig.py | 121 + intelliaide/vendor/cffi/recompiler.py | 1598 +++ intelliaide/vendor/cffi/setuptools_ext.py | 229 + intelliaide/vendor/cffi/vengine_cpy.py | 1087 ++ intelliaide/vendor/cffi/vengine_gen.py | 679 + intelliaide/vendor/cffi/verifier.py | 306 + .../INSTALLER | 1 + .../METADATA | 808 ++ .../charset_normalizer-3.4.7.dist-info/RECORD | 36 + .../charset_normalizer-3.4.7.dist-info/WHEEL | 7 + .../entry_points.txt | 2 + .../licenses/LICENSE | 21 + .../top_level.txt | 2 + .../vendor/charset_normalizer/__init__.py | 48 + .../vendor/charset_normalizer/__main__.py | 6 + intelliaide/vendor/charset_normalizer/api.py | 988 ++ .../cd.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 15912 bytes intelliaide/vendor/charset_normalizer/cd.py | 454 + .../vendor/charset_normalizer/cli/__init__.py | 8 + .../vendor/charset_normalizer/cli/__main__.py | 362 + .../vendor/charset_normalizer/constant.py | 2050 +++ .../vendor/charset_normalizer/legacy.py | 79 + .../md.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 15912 bytes intelliaide/vendor/charset_normalizer/md.py | 936 ++ .../vendor/charset_normalizer/models.py | 369 + .../vendor/charset_normalizer/py.typed | 0 .../vendor/charset_normalizer/utils.py | 422 + .../vendor/charset_normalizer/version.py | 8 + .../cryptography-48.0.0.dist-info/INSTALLER | 1 + .../cryptography-48.0.0.dist-info/METADATA | 110 + .../cryptography-48.0.0.dist-info/RECORD | 195 + .../cryptography-48.0.0.dist-info/WHEEL | 5 + .../licenses/LICENSE | 3 + .../licenses/LICENSE.APACHE | 202 + .../licenses/LICENSE.BSD | 27 + .../sboms/cryptography-rust.cyclonedx.json | 1362 ++ .../sboms/sbom.json | 43 + intelliaide/vendor/cryptography/__about__.py | 17 + intelliaide/vendor/cryptography/__init__.py | 13 + intelliaide/vendor/cryptography/exceptions.py | 52 + intelliaide/vendor/cryptography/fernet.py | 224 + .../vendor/cryptography/hazmat/__init__.py | 13 + .../vendor/cryptography/hazmat/_oid.py | 356 + .../cryptography/hazmat/asn1/__init__.py | 43 + .../vendor/cryptography/hazmat/asn1/asn1.py | 419 + .../cryptography/hazmat/backends/__init__.py | 13 + .../hazmat/backends/openssl/__init__.py | 9 + .../hazmat/backends/openssl/backend.py | 312 + .../cryptography/hazmat/bindings/__init__.py | 3 + .../hazmat/bindings/_rust.abi3.so | Bin 0 -> 13844864 bytes .../hazmat/bindings/_rust/__init__.pyi | 67 + .../hazmat/bindings/_rust/_openssl.pyi | 8 + .../hazmat/bindings/_rust/asn1.pyi | 7 + .../bindings/_rust/declarative_asn1.pyi | 127 + .../hazmat/bindings/_rust/exceptions.pyi | 17 + .../hazmat/bindings/_rust/ocsp.pyi | 117 + .../bindings/_rust/openssl/__init__.pyi | 80 + .../hazmat/bindings/_rust/openssl/aead.pyi | 189 + .../hazmat/bindings/_rust/openssl/ciphers.pyi | 38 + .../hazmat/bindings/_rust/openssl/cmac.pyi | 18 + .../hazmat/bindings/_rust/openssl/dh.pyi | 51 + .../hazmat/bindings/_rust/openssl/dsa.pyi | 41 + .../hazmat/bindings/_rust/openssl/ec.pyi | 52 + .../hazmat/bindings/_rust/openssl/ed25519.pyi | 13 + .../hazmat/bindings/_rust/openssl/ed448.pyi | 13 + .../hazmat/bindings/_rust/openssl/hashes.pyi | 30 + .../hazmat/bindings/_rust/openssl/hmac.pyi | 22 + .../hazmat/bindings/_rust/openssl/hpke.pyi | 108 + .../hazmat/bindings/_rust/openssl/kdf.pyi | 205 + .../hazmat/bindings/_rust/openssl/keys.pyi | 34 + .../hazmat/bindings/_rust/openssl/mldsa.pyi | 23 + .../hazmat/bindings/_rust/openssl/mlkem.pyi | 18 + .../bindings/_rust/openssl/poly1305.pyi | 15 + .../hazmat/bindings/_rust/openssl/rsa.pyi | 55 + .../hazmat/bindings/_rust/openssl/x25519.pyi | 13 + .../hazmat/bindings/_rust/openssl/x448.pyi | 13 + .../hazmat/bindings/_rust/pkcs12.pyi | 52 + .../hazmat/bindings/_rust/pkcs7.pyi | 50 + .../hazmat/bindings/_rust/test_support.pyi | 23 + .../hazmat/bindings/_rust/x509.pyi | 312 + .../hazmat/bindings/openssl/__init__.py | 3 + .../hazmat/bindings/openssl/_conditional.py | 199 + .../hazmat/bindings/openssl/binding.py | 122 + .../cryptography/hazmat/decrepit/__init__.py | 5 + .../hazmat/decrepit/ciphers/__init__.py | 5 + .../hazmat/decrepit/ciphers/algorithms.py | 142 + .../hazmat/decrepit/ciphers/modes.py | 53 + .../hazmat/primitives/__init__.py | 3 + .../hazmat/primitives/_asymmetric.py | 19 + .../hazmat/primitives/_cipheralgorithm.py | 60 + .../cryptography/hazmat/primitives/_modes.py | 105 + .../hazmat/primitives/_serialization.py | 136 + .../hazmat/primitives/asymmetric/__init__.py | 3 + .../hazmat/primitives/asymmetric/dh.py | 159 + .../hazmat/primitives/asymmetric/dsa.py | 179 + .../hazmat/primitives/asymmetric/ec.py | 369 + .../hazmat/primitives/asymmetric/ed25519.py | 116 + .../hazmat/primitives/asymmetric/ed448.py | 143 + .../hazmat/primitives/asymmetric/mldsa.py | 441 + .../hazmat/primitives/asymmetric/mlkem.py | 278 + .../hazmat/primitives/asymmetric/padding.py | 111 + .../hazmat/primitives/asymmetric/rsa.py | 295 + .../hazmat/primitives/asymmetric/types.py | 123 + .../hazmat/primitives/asymmetric/utils.py | 28 + .../hazmat/primitives/asymmetric/x25519.py | 134 + .../hazmat/primitives/asymmetric/x448.py | 137 + .../hazmat/primitives/ciphers/__init__.py | 27 + .../hazmat/primitives/ciphers/aead.py | 23 + .../hazmat/primitives/ciphers/algorithms.py | 138 + .../hazmat/primitives/ciphers/base.py | 146 + .../hazmat/primitives/ciphers/modes.py | 192 + .../cryptography/hazmat/primitives/cmac.py | 10 + .../hazmat/primitives/constant_time.py | 14 + .../cryptography/hazmat/primitives/hashes.py | 246 + .../cryptography/hazmat/primitives/hmac.py | 13 + .../cryptography/hazmat/primitives/hpke.py | 27 + .../hazmat/primitives/kdf/__init__.py | 32 + .../hazmat/primitives/kdf/argon2.py | 17 + .../hazmat/primitives/kdf/concatkdf.py | 16 + .../hazmat/primitives/kdf/hkdf.py | 16 + .../hazmat/primitives/kdf/kbkdf.py | 26 + .../hazmat/primitives/kdf/pbkdf2.py | 13 + .../hazmat/primitives/kdf/scrypt.py | 19 + .../hazmat/primitives/kdf/x963kdf.py | 13 + .../cryptography/hazmat/primitives/keywrap.py | 180 + .../cryptography/hazmat/primitives/padding.py | 69 + .../hazmat/primitives/poly1305.py | 11 + .../primitives/serialization/__init__.py | 65 + .../hazmat/primitives/serialization/base.py | 14 + .../hazmat/primitives/serialization/pkcs12.py | 176 + .../hazmat/primitives/serialization/pkcs7.py | 412 + .../hazmat/primitives/serialization/ssh.py | 1621 +++ .../hazmat/primitives/twofactor/__init__.py | 9 + .../hazmat/primitives/twofactor/hotp.py | 101 + .../hazmat/primitives/twofactor/totp.py | 56 + intelliaide/vendor/cryptography/py.typed | 0 intelliaide/vendor/cryptography/utils.py | 135 + .../vendor/cryptography/x509/__init__.py | 271 + intelliaide/vendor/cryptography/x509/base.py | 773 + .../x509/certificate_transparency.py | 35 + .../vendor/cryptography/x509/extensions.py | 2533 ++++ .../vendor/cryptography/x509/general_name.py | 281 + intelliaide/vendor/cryptography/x509/name.py | 482 + intelliaide/vendor/cryptography/x509/ocsp.py | 379 + intelliaide/vendor/cryptography/x509/oid.py | 37 + .../vendor/cryptography/x509/verification.py | 34 + .../defusedxml-0.7.1.dist-info/INSTALLER | 1 + .../vendor/defusedxml-0.7.1.dist-info/LICENSE | 49 + .../defusedxml-0.7.1.dist-info/METADATA | 978 ++ .../vendor/defusedxml-0.7.1.dist-info/RECORD | 28 + .../vendor/defusedxml-0.7.1.dist-info/WHEEL | 6 + .../defusedxml-0.7.1.dist-info/top_level.txt | 1 + intelliaide/vendor/defusedxml/ElementTree.py | 154 + intelliaide/vendor/defusedxml/__init__.py | 67 + intelliaide/vendor/defusedxml/cElementTree.py | 62 + intelliaide/vendor/defusedxml/common.py | 129 + intelliaide/vendor/defusedxml/expatbuilder.py | 107 + intelliaide/vendor/defusedxml/expatreader.py | 61 + intelliaide/vendor/defusedxml/lxml.py | 153 + intelliaide/vendor/defusedxml/minidom.py | 63 + intelliaide/vendor/defusedxml/pulldom.py | 41 + intelliaide/vendor/defusedxml/sax.py | 60 + intelliaide/vendor/defusedxml/xmlrpc.py | 153 + intelliaide/vendor/docx/__init__.py | 65 + intelliaide/vendor/docx/api.py | 37 + intelliaide/vendor/docx/blkcntnr.py | 101 + intelliaide/vendor/docx/comments.py | 163 + intelliaide/vendor/docx/dml/__init__.py | 0 intelliaide/vendor/docx/dml/color.py | 112 + intelliaide/vendor/docx/document.py | 265 + intelliaide/vendor/docx/drawing/__init__.py | 59 + intelliaide/vendor/docx/enum/__init__.py | 0 intelliaide/vendor/docx/enum/base.py | 150 + intelliaide/vendor/docx/enum/dml.py | 103 + intelliaide/vendor/docx/enum/section.py | 86 + intelliaide/vendor/docx/enum/shape.py | 19 + intelliaide/vendor/docx/enum/style.py | 452 + intelliaide/vendor/docx/enum/table.py | 136 + intelliaide/vendor/docx/enum/text.py | 367 + intelliaide/vendor/docx/exceptions.py | 18 + intelliaide/vendor/docx/image/__init__.py | 23 + intelliaide/vendor/docx/image/bmp.py | 43 + intelliaide/vendor/docx/image/constants.py | 172 + intelliaide/vendor/docx/image/exceptions.py | 13 + intelliaide/vendor/docx/image/gif.py | 38 + intelliaide/vendor/docx/image/helpers.py | 86 + intelliaide/vendor/docx/image/image.py | 234 + intelliaide/vendor/docx/image/jpeg.py | 425 + intelliaide/vendor/docx/image/png.py | 253 + intelliaide/vendor/docx/image/tiff.py | 289 + intelliaide/vendor/docx/opc/__init__.py | 0 intelliaide/vendor/docx/opc/constants.py | 306 + intelliaide/vendor/docx/opc/coreprops.py | 142 + intelliaide/vendor/docx/opc/exceptions.py | 12 + intelliaide/vendor/docx/opc/oxml.py | 247 + intelliaide/vendor/docx/opc/package.py | 219 + intelliaide/vendor/docx/opc/packuri.py | 109 + intelliaide/vendor/docx/opc/part.py | 247 + intelliaide/vendor/docx/opc/parts/__init__.py | 0 .../vendor/docx/opc/parts/coreprops.py | 48 + intelliaide/vendor/docx/opc/phys_pkg.py | 119 + intelliaide/vendor/docx/opc/pkgreader.py | 254 + intelliaide/vendor/docx/opc/pkgwriter.py | 115 + intelliaide/vendor/docx/opc/rel.py | 153 + intelliaide/vendor/docx/opc/shared.py | 31 + intelliaide/vendor/docx/opc/spec.py | 24 + intelliaide/vendor/docx/oxml/__init__.py | 251 + intelliaide/vendor/docx/oxml/comments.py | 124 + intelliaide/vendor/docx/oxml/coreprops.py | 298 + intelliaide/vendor/docx/oxml/document.py | 88 + intelliaide/vendor/docx/oxml/drawing.py | 11 + intelliaide/vendor/docx/oxml/exceptions.py | 10 + intelliaide/vendor/docx/oxml/ns.py | 109 + intelliaide/vendor/docx/oxml/numbering.py | 109 + intelliaide/vendor/docx/oxml/parser.py | 62 + intelliaide/vendor/docx/oxml/section.py | 537 + intelliaide/vendor/docx/oxml/settings.py | 138 + intelliaide/vendor/docx/oxml/shape.py | 299 + intelliaide/vendor/docx/oxml/shared.py | 52 + intelliaide/vendor/docx/oxml/simpletypes.py | 434 + intelliaide/vendor/docx/oxml/styles.py | 320 + intelliaide/vendor/docx/oxml/table.py | 977 ++ intelliaide/vendor/docx/oxml/text/__init__.py | 0 intelliaide/vendor/docx/oxml/text/font.py | 331 + .../vendor/docx/oxml/text/hyperlink.py | 45 + .../vendor/docx/oxml/text/pagebreak.py | 278 + .../vendor/docx/oxml/text/paragraph.py | 106 + intelliaide/vendor/docx/oxml/text/parfmt.py | 392 + intelliaide/vendor/docx/oxml/text/run.py | 307 + intelliaide/vendor/docx/oxml/xmlchemy.py | 696 + intelliaide/vendor/docx/package.py | 110 + intelliaide/vendor/docx/parts/__init__.py | 0 intelliaide/vendor/docx/parts/comments.py | 51 + intelliaide/vendor/docx/parts/document.py | 169 + intelliaide/vendor/docx/parts/hdrftr.py | 53 + intelliaide/vendor/docx/parts/image.py | 80 + intelliaide/vendor/docx/parts/numbering.py | 32 + intelliaide/vendor/docx/parts/settings.py | 50 + intelliaide/vendor/docx/parts/story.py | 95 + intelliaide/vendor/docx/parts/styles.py | 42 + intelliaide/vendor/docx/py.typed | 0 intelliaide/vendor/docx/section.py | 479 + intelliaide/vendor/docx/settings.py | 35 + intelliaide/vendor/docx/shape.py | 103 + intelliaide/vendor/docx/shared.py | 382 + intelliaide/vendor/docx/styles/__init__.py | 40 + intelliaide/vendor/docx/styles/latent.py | 198 + intelliaide/vendor/docx/styles/style.py | 254 + intelliaide/vendor/docx/styles/styles.py | 136 + intelliaide/vendor/docx/table.py | 537 + .../docx/templates/default-comments.xml | 12 + .../default-docx-template/[Content_Types].xml | 17 + .../default-docx-template/_rels/.rels | 7 + .../customXml/_rels/item1.xml.rels | 4 + .../default-docx-template/customXml/item1.xml | 2 + .../customXml/itemProps1.xml | 6 + .../default-docx-template/docProps/app.xml | 36 + .../default-docx-template/docProps/core.xml | 13 + .../docProps/thumbnail.jpeg | Bin 0 -> 8324 bytes .../word/_rels/document.xml.rels | 11 + .../default-docx-template/word/document.xml | 11 + .../default-docx-template/word/fontTable.xml | 61 + .../default-docx-template/word/numbering.xml | 201 + .../default-docx-template/word/settings.xml | 53 + .../default-docx-template/word/styles.xml | 11844 ++++++++++++++++ .../word/stylesWithEffects.xml | 11800 +++++++++++++++ .../word/theme/theme1.xml | 318 + .../word/webSettings.xml | 5 + .../vendor/docx/templates/default-footer.xml | 27 + .../vendor/docx/templates/default-header.xml | 27 + .../docx/templates/default-settings.xml | 26 + .../vendor/docx/templates/default-styles.xml | 190 + .../vendor/docx/templates/default.docx | Bin 0 -> 38116 bytes intelliaide/vendor/docx/text/__init__.py | 0 intelliaide/vendor/docx/text/font.py | 428 + intelliaide/vendor/docx/text/hyperlink.py | 121 + intelliaide/vendor/docx/text/pagebreak.py | 104 + intelliaide/vendor/docx/text/paragraph.py | 173 + intelliaide/vendor/docx/text/parfmt.py | 286 + intelliaide/vendor/docx/text/run.py | 257 + intelliaide/vendor/docx/text/tabstops.py | 123 + intelliaide/vendor/docx/types.py | 34 + .../vendor/drain3-0.9.11.dist-info/INSTALLER | 1 + .../vendor/drain3-0.9.11.dist-info/METADATA | 517 + .../vendor/drain3-0.9.11.dist-info/RECORD | 29 + .../vendor/drain3-0.9.11.dist-info/REQUESTED | 0 .../vendor/drain3-0.9.11.dist-info/WHEEL | 5 + .../licenses/LICENSE.txt | 22 + .../drain3-0.9.11.dist-info/top_level.txt | 1 + intelliaide/vendor/drain3/__init__.py | 2 + intelliaide/vendor/drain3/drain.py | 421 + intelliaide/vendor/drain3/file_persistence.py | 20 + .../vendor/drain3/kafka_persistence.py | 37 + intelliaide/vendor/drain3/masking.py | 80 + .../drain3/memory_buffer_persistence.py | 14 + .../vendor/drain3/persistence_handler.py | 14 + .../vendor/drain3/redis_persistence.py | 26 + intelliaide/vendor/drain3/simple_profiler.py | 151 + intelliaide/vendor/drain3/template_miner.py | 314 + .../vendor/drain3/template_miner_config.py | 78 + intelliaide/vendor/google/auth/__init__.py | 34 + .../google/auth/_agent_identity_utils.py | 317 + intelliaide/vendor/google/auth/_cache.py | 64 + intelliaide/vendor/google/auth/_cloud_sdk.py | 153 + .../vendor/google/auth/_credentials_async.py | 171 + .../vendor/google/auth/_credentials_base.py | 75 + intelliaide/vendor/google/auth/_default.py | 748 + .../vendor/google/auth/_default_async.py | 288 + .../google/auth/_exponential_backoff.py | 164 + intelliaide/vendor/google/auth/_helpers.py | 534 + intelliaide/vendor/google/auth/_jwt_async.py | 164 + .../vendor/google/auth/_oauth2client.py | 167 + .../vendor/google/auth/_refresh_worker.py | 109 + .../auth/_regional_access_boundary_utils.py | 386 + .../google/auth/_service_account_info.py | 80 + .../vendor/google/auth/aio/__init__.py | 25 + .../vendor/google/auth/aio/_helpers.py | 62 + .../vendor/google/auth/aio/credentials.py | 143 + .../google/auth/aio/transport/__init__.py | 144 + .../google/auth/aio/transport/aiohttp.py | 205 + .../vendor/google/auth/aio/transport/mtls.py | 197 + .../google/auth/aio/transport/sessions.py | 576 + intelliaide/vendor/google/auth/api_key.py | 76 + intelliaide/vendor/google/auth/app_engine.py | 179 + intelliaide/vendor/google/auth/aws.py | 863 ++ .../google/auth/compute_engine/__init__.py | 22 + .../google/auth/compute_engine/_metadata.py | 504 + .../google/auth/compute_engine/_mtls.py | 162 + .../google/auth/compute_engine/credentials.py | 567 + intelliaide/vendor/google/auth/credentials.py | 786 + .../vendor/google/auth/crypt/__init__.py | 96 + .../google/auth/crypt/_cryptography_rsa.py | 151 + .../vendor/google/auth/crypt/_helpers.py | 0 .../vendor/google/auth/crypt/_python_rsa.py | 199 + intelliaide/vendor/google/auth/crypt/base.py | 127 + intelliaide/vendor/google/auth/crypt/es.py | 221 + intelliaide/vendor/google/auth/crypt/es256.py | 45 + intelliaide/vendor/google/auth/crypt/rsa.py | 132 + intelliaide/vendor/google/auth/downscoped.py | 512 + .../vendor/google/auth/environment_vars.py | 131 + intelliaide/vendor/google/auth/exceptions.py | 108 + .../vendor/google/auth/external_account.py | 745 + .../auth/external_account_authorized_user.py | 472 + intelliaide/vendor/google/auth/iam.py | 143 + .../vendor/google/auth/identity_pool.py | 574 + .../google/auth/impersonated_credentials.py | 713 + intelliaide/vendor/google/auth/jwt.py | 877 ++ intelliaide/vendor/google/auth/metrics.py | 156 + intelliaide/vendor/google/auth/pluggable.py | 445 + intelliaide/vendor/google/auth/py.typed | 2 + .../vendor/google/auth/transport/__init__.py | 104 + .../auth/transport/_aiohttp_requests.py | 396 + .../auth/transport/_custom_tls_signer.py | 283 + .../google/auth/transport/_http_client.py | 114 + .../google/auth/transport/_mtls_helper.py | 531 + .../google/auth/transport/_requests_base.py | 53 + .../vendor/google/auth/transport/grpc.py | 337 + .../vendor/google/auth/transport/mtls.py | 142 + .../vendor/google/auth/transport/requests.py | 634 + .../vendor/google/auth/transport/urllib3.py | 493 + intelliaide/vendor/google/auth/version.py | 15 + intelliaide/vendor/google/oauth2/__init__.py | 15 + intelliaide/vendor/google/oauth2/_client.py | 649 + .../vendor/google/oauth2/_client_async.py | 290 + .../google/oauth2/_credentials_async.py | 118 + .../vendor/google/oauth2/_id_token_async.py | 287 + .../vendor/google/oauth2/_reauth_async.py | 330 + .../google/oauth2/_service_account_async.py | 147 + .../vendor/google/oauth2/challenges.py | 281 + .../vendor/google/oauth2/credentials.py | 640 + .../vendor/google/oauth2/gdch_credentials.py | 251 + intelliaide/vendor/google/oauth2/id_token.py | 373 + intelliaide/vendor/google/oauth2/py.typed | 2 + intelliaide/vendor/google/oauth2/reauth.py | 373 + .../vendor/google/oauth2/service_account.py | 882 ++ intelliaide/vendor/google/oauth2/sts.py | 201 + intelliaide/vendor/google/oauth2/utils.py | 168 + .../vendor/google/oauth2/webauthn_handler.py | 82 + .../google/oauth2/webauthn_handler_factory.py | 16 + .../vendor/google/oauth2/webauthn_types.py | 156 + .../google_auth-2.53.0.dist-info/INSTALLER | 1 + .../google_auth-2.53.0.dist-info/METADATA | 165 + .../google_auth-2.53.0.dist-info/RECORD | 165 + .../google_auth-2.53.0.dist-info/REQUESTED | 0 .../vendor/google_auth-2.53.0.dist-info/WHEEL | 5 + .../licenses/LICENSE | 201 + .../top_level.txt | 1 + .../vendor/idna-3.16.dist-info/INSTALLER | 1 + .../vendor/idna-3.16.dist-info/METADATA | 164 + intelliaide/vendor/idna-3.16.dist-info/RECORD | 28 + intelliaide/vendor/idna-3.16.dist-info/WHEEL | 4 + .../idna-3.16.dist-info/entry_points.txt | 3 + .../idna-3.16.dist-info/licenses/LICENSE.md | 31 + intelliaide/vendor/idna/__init__.py | 45 + intelliaide/vendor/idna/__main__.py | 6 + intelliaide/vendor/idna/cli.py | 128 + intelliaide/vendor/idna/codec.py | 159 + intelliaide/vendor/idna/compat.py | 41 + intelliaide/vendor/idna/core.py | 605 + intelliaide/vendor/idna/idnadata.py | 4366 ++++++ intelliaide/vendor/idna/intranges.py | 55 + intelliaide/vendor/idna/package_data.py | 1 + intelliaide/vendor/idna/py.typed | 0 intelliaide/vendor/idna/uts46data.py | 8383 +++++++++++ .../jsonpickle-1.5.1.dist-info/INSTALLER | 1 + .../vendor/jsonpickle-1.5.1.dist-info/LICENSE | 29 + .../jsonpickle-1.5.1.dist-info/METADATA | 179 + .../vendor/jsonpickle-1.5.1.dist-info/RECORD | 30 + .../vendor/jsonpickle-1.5.1.dist-info/WHEEL | 6 + .../jsonpickle-1.5.1.dist-info/top_level.txt | 1 + intelliaide/vendor/jsonpickle/__init__.py | 85 + intelliaide/vendor/jsonpickle/backend.py | 294 + intelliaide/vendor/jsonpickle/compat.py | 39 + intelliaide/vendor/jsonpickle/ext/__init__.py | 0 intelliaide/vendor/jsonpickle/ext/numpy.py | 337 + intelliaide/vendor/jsonpickle/ext/pandas.py | 235 + intelliaide/vendor/jsonpickle/handlers.py | 294 + intelliaide/vendor/jsonpickle/pickler.py | 758 + intelliaide/vendor/jsonpickle/tags.py | 52 + intelliaide/vendor/jsonpickle/unpickler.py | 782 + intelliaide/vendor/jsonpickle/util.py | 585 + intelliaide/vendor/jsonpickle/version.py | 21 + .../vendor/lxml-6.1.1.dist-info/INSTALLER | 1 + .../vendor/lxml-6.1.1.dist-info/METADATA | 92 + .../vendor/lxml-6.1.1.dist-info/RECORD | 204 + intelliaide/vendor/lxml-6.1.1.dist-info/WHEEL | 6 + .../lxml-6.1.1.dist-info/licenses/LICENSE.txt | 31 + .../licenses/LICENSES.txt | 29 + .../vendor/lxml-6.1.1.dist-info/top_level.txt | 1 + intelliaide/vendor/lxml/ElementInclude.py | 244 + intelliaide/vendor/lxml/__init__.py | 22 + ...lementpath.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 209096 bytes intelliaide/vendor/lxml/_elementpath.py | 343 + intelliaide/vendor/lxml/apihelpers.pxi | 1819 +++ .../builder.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 120880 bytes intelliaide/vendor/lxml/builder.py | 243 + intelliaide/vendor/lxml/classlookup.pxi | 580 + intelliaide/vendor/lxml/cleanup.pxi | 215 + intelliaide/vendor/lxml/cssselect.py | 101 + intelliaide/vendor/lxml/debug.pxi | 36 + intelliaide/vendor/lxml/docloader.pxi | 179 + intelliaide/vendor/lxml/doctestcompare.py | 488 + intelliaide/vendor/lxml/dtd.pxi | 479 + .../etree.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 5276528 bytes intelliaide/vendor/lxml/etree.h | 244 + intelliaide/vendor/lxml/etree.pyx | 3858 +++++ intelliaide/vendor/lxml/etree_api.h | 214 + intelliaide/vendor/lxml/extensions.pxi | 838 ++ intelliaide/vendor/lxml/html/ElementSoup.py | 10 + intelliaide/vendor/lxml/html/__init__.py | 1927 +++ intelliaide/vendor/lxml/html/_diffcommand.py | 86 + .../_difflib.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 533400 bytes intelliaide/vendor/lxml/html/_difflib.py | 2106 +++ intelliaide/vendor/lxml/html/_html5builder.py | 100 + intelliaide/vendor/lxml/html/_setmixin.py | 56 + intelliaide/vendor/lxml/html/builder.py | 173 + intelliaide/vendor/lxml/html/clean.py | 21 + intelliaide/vendor/lxml/html/defs.py | 153 + .../html/diff.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 361400 bytes intelliaide/vendor/lxml/html/diff.py | 972 ++ intelliaide/vendor/lxml/html/formfill.py | 299 + intelliaide/vendor/lxml/html/html5parser.py | 260 + intelliaide/vendor/lxml/html/soupparser.py | 314 + intelliaide/vendor/lxml/html/usedoctest.py | 13 + intelliaide/vendor/lxml/includes/__init__.pxd | 0 intelliaide/vendor/lxml/includes/__init__.py | 0 intelliaide/vendor/lxml/includes/c14n.pxd | 25 + intelliaide/vendor/lxml/includes/config.pxd | 3 + intelliaide/vendor/lxml/includes/dtdvalid.pxd | 18 + intelliaide/vendor/lxml/includes/etree_defs.h | 390 + .../vendor/lxml/includes/etreepublic.pxd | 237 + .../vendor/lxml/includes/extlibs/__init__.py | 0 .../vendor/lxml/includes/extlibs/libcharset.h | 45 + .../lxml/includes/extlibs/localcharset.h | 137 + .../vendor/lxml/includes/extlibs/zconf.h | 551 + .../vendor/lxml/includes/extlibs/zlib.h | 2057 +++ .../vendor/lxml/includes/htmlparser.pxd | 56 + .../vendor/lxml/includes/libexslt/__init__.py | 0 .../vendor/lxml/includes/libexslt/exslt.h | 108 + .../lxml/includes/libexslt/exsltconfig.h | 70 + .../lxml/includes/libexslt/exsltexports.h | 63 + .../vendor/lxml/includes/libxml/HTMLparser.h | 339 + .../vendor/lxml/includes/libxml/HTMLtree.h | 148 + intelliaide/vendor/lxml/includes/libxml/SAX.h | 18 + .../vendor/lxml/includes/libxml/SAX2.h | 170 + .../vendor/lxml/includes/libxml/__init__.py | 0 .../vendor/lxml/includes/libxml/c14n.h | 115 + .../vendor/lxml/includes/libxml/catalog.h | 183 + .../vendor/lxml/includes/libxml/chvalid.h | 230 + .../vendor/lxml/includes/libxml/debugXML.h | 79 + .../vendor/lxml/includes/libxml/dict.h | 82 + .../vendor/lxml/includes/libxml/encoding.h | 307 + .../vendor/lxml/includes/libxml/entities.h | 147 + .../vendor/lxml/includes/libxml/globals.h | 25 + .../vendor/lxml/includes/libxml/hash.h | 251 + .../vendor/lxml/includes/libxml/list.h | 137 + .../vendor/lxml/includes/libxml/nanoftp.h | 16 + .../vendor/lxml/includes/libxml/nanohttp.h | 98 + .../vendor/lxml/includes/libxml/parser.h | 1633 +++ .../lxml/includes/libxml/parserInternals.h | 591 + .../vendor/lxml/includes/libxml/relaxng.h | 224 + .../lxml/includes/libxml/schemasInternals.h | 959 ++ .../vendor/lxml/includes/libxml/schematron.h | 143 + .../vendor/lxml/includes/libxml/threads.h | 81 + .../vendor/lxml/includes/libxml/tree.h | 1326 ++ intelliaide/vendor/lxml/includes/libxml/uri.h | 106 + .../vendor/lxml/includes/libxml/valid.h | 482 + .../vendor/lxml/includes/libxml/xinclude.h | 141 + .../vendor/lxml/includes/libxml/xlink.h | 193 + .../vendor/lxml/includes/libxml/xmlIO.h | 419 + .../vendor/lxml/includes/libxml/xmlautomata.h | 163 + .../vendor/lxml/includes/libxml/xmlerror.h | 962 ++ .../vendor/lxml/includes/libxml/xmlexports.h | 96 + .../vendor/lxml/includes/libxml/xmlmemory.h | 188 + .../vendor/lxml/includes/libxml/xmlmodule.h | 61 + .../vendor/lxml/includes/libxml/xmlreader.h | 444 + .../vendor/lxml/includes/libxml/xmlregexp.h | 116 + .../vendor/lxml/includes/libxml/xmlsave.h | 111 + .../vendor/lxml/includes/libxml/xmlschemas.h | 254 + .../lxml/includes/libxml/xmlschemastypes.h | 152 + .../vendor/lxml/includes/libxml/xmlstring.h | 140 + .../vendor/lxml/includes/libxml/xmlunicode.h | 15 + .../vendor/lxml/includes/libxml/xmlversion.h | 332 + .../vendor/lxml/includes/libxml/xmlwriter.h | 489 + .../vendor/lxml/includes/libxml/xpath.h | 569 + .../lxml/includes/libxml/xpathInternals.h | 639 + .../vendor/lxml/includes/libxml/xpointer.h | 48 + .../vendor/lxml/includes/libxslt/__init__.py | 0 .../vendor/lxml/includes/libxslt/attributes.h | 39 + .../vendor/lxml/includes/libxslt/documents.h | 93 + .../vendor/lxml/includes/libxslt/extensions.h | 262 + .../vendor/lxml/includes/libxslt/extra.h | 72 + .../vendor/lxml/includes/libxslt/functions.h | 78 + .../vendor/lxml/includes/libxslt/imports.h | 75 + .../vendor/lxml/includes/libxslt/keys.h | 53 + .../vendor/lxml/includes/libxslt/namespaces.h | 68 + .../lxml/includes/libxslt/numbersInternals.h | 73 + .../vendor/lxml/includes/libxslt/pattern.h | 84 + .../vendor/lxml/includes/libxslt/preproc.h | 43 + .../vendor/lxml/includes/libxslt/security.h | 104 + .../vendor/lxml/includes/libxslt/templates.h | 77 + .../vendor/lxml/includes/libxslt/transform.h | 207 + .../vendor/lxml/includes/libxslt/variables.h | 118 + .../vendor/lxml/includes/libxslt/xslt.h | 110 + .../lxml/includes/libxslt/xsltInternals.h | 1995 +++ .../vendor/lxml/includes/libxslt/xsltconfig.h | 146 + .../lxml/includes/libxslt/xsltexports.h | 64 + .../vendor/lxml/includes/libxslt/xsltlocale.h | 44 + .../vendor/lxml/includes/libxslt/xsltutils.h | 343 + .../vendor/lxml/includes/lxml-version.h | 3 + intelliaide/vendor/lxml/includes/relaxng.pxd | 64 + .../vendor/lxml/includes/schematron.pxd | 34 + intelliaide/vendor/lxml/includes/tree.pxd | 492 + intelliaide/vendor/lxml/includes/uri.pxd | 5 + intelliaide/vendor/lxml/includes/xinclude.pxd | 22 + intelliaide/vendor/lxml/includes/xmlerror.pxd | 860 ++ .../vendor/lxml/includes/xmlparser.pxd | 318 + .../vendor/lxml/includes/xmlschema.pxd | 35 + intelliaide/vendor/lxml/includes/xpath.pxd | 136 + intelliaide/vendor/lxml/includes/xslt.pxd | 190 + .../vendor/lxml/isoschematron/__init__.py | 348 + .../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 + intelliaide/vendor/lxml/iterparse.pxi | 443 + intelliaide/vendor/lxml/lxml.etree.h | 244 + intelliaide/vendor/lxml/lxml.etree_api.h | 214 + intelliaide/vendor/lxml/nsclasses.pxi | 281 + .../objectify.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 2916760 bytes intelliaide/vendor/lxml/objectify.pyx | 2149 +++ intelliaide/vendor/lxml/objectpath.pxi | 332 + intelliaide/vendor/lxml/parser.pxi | 2084 +++ intelliaide/vendor/lxml/parsertarget.pxi | 180 + intelliaide/vendor/lxml/proxy.pxi | 624 + intelliaide/vendor/lxml/public-api.pxi | 178 + intelliaide/vendor/lxml/pyclasslookup.py | 3 + intelliaide/vendor/lxml/readonlytree.pxi | 565 + intelliaide/vendor/lxml/relaxng.pxi | 165 + .../lxml/sax.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 182096 bytes intelliaide/vendor/lxml/sax.py | 285 + intelliaide/vendor/lxml/saxparser.pxi | 875 ++ intelliaide/vendor/lxml/schematron.pxi | 173 + intelliaide/vendor/lxml/serializer.pxi | 1849 +++ intelliaide/vendor/lxml/usedoctest.py | 13 + intelliaide/vendor/lxml/xinclude.pxi | 67 + intelliaide/vendor/lxml/xmlerror.pxi | 1666 +++ intelliaide/vendor/lxml/xmlid.pxi | 179 + intelliaide/vendor/lxml/xmlschema.pxi | 215 + intelliaide/vendor/lxml/xpath.pxi | 487 + intelliaide/vendor/lxml/xslt.pxi | 959 ++ intelliaide/vendor/lxml/xsltext.pxi | 242 + intelliaide/vendor/odf/__init__.py | 19 + intelliaide/vendor/odf/anim.py | 61 + intelliaide/vendor/odf/attrconverters.py | 1614 +++ intelliaide/vendor/odf/chart.py | 96 + intelliaide/vendor/odf/config.py | 39 + intelliaide/vendor/odf/dc.py | 72 + intelliaide/vendor/odf/dr3d.py | 45 + intelliaide/vendor/odf/draw.py | 188 + intelliaide/vendor/odf/easyliststyle.py | 105 + intelliaide/vendor/odf/element.py | 600 + intelliaide/vendor/odf/elementtypes.py | 325 + intelliaide/vendor/odf/form.py | 115 + intelliaide/vendor/odf/grammar.py | 9197 ++++++++++++ intelliaide/vendor/odf/load.py | 116 + intelliaide/vendor/odf/manifest.py | 43 + intelliaide/vendor/odf/math.py | 30 + intelliaide/vendor/odf/meta.py | 67 + intelliaide/vendor/odf/namespaces.py | 111 + intelliaide/vendor/odf/number.py | 104 + intelliaide/vendor/odf/odf2moinmoin.py | 579 + intelliaide/vendor/odf/odf2xhtml.py | 1617 +++ intelliaide/vendor/odf/odfmanifest.py | 121 + intelliaide/vendor/odf/office.py | 107 + intelliaide/vendor/odf/opendocument.py | 1030 ++ intelliaide/vendor/odf/presentation.py | 86 + intelliaide/vendor/odf/script.py | 30 + intelliaide/vendor/odf/style.py | 154 + intelliaide/vendor/odf/svg.py | 56 + intelliaide/vendor/odf/table.py | 321 + intelliaide/vendor/odf/teletype.py | 137 + intelliaide/vendor/odf/text.py | 573 + intelliaide/vendor/odf/thumbnail.py | 80 + intelliaide/vendor/odf/userfield.py | 180 + intelliaide/vendor/odf/xforms.py | 34 + .../vendor/odfpy-1.4.1.dist-info/INSTALLER | 1 + .../vendor/odfpy-1.4.1.dist-info/METADATA | 66 + .../vendor/odfpy-1.4.1.dist-info/RECORD | 96 + .../vendor/odfpy-1.4.1.dist-info/REQUESTED | 0 .../vendor/odfpy-1.4.1.dist-info/WHEEL | 6 + .../odfpy-1.4.1.dist-info/top_level.txt | 1 + .../vendor/pyasn1-0.6.3.dist-info/INSTALLER | 1 + .../vendor/pyasn1-0.6.3.dist-info/METADATA | 228 + .../vendor/pyasn1-0.6.3.dist-info/RECORD | 71 + .../vendor/pyasn1-0.6.3.dist-info/WHEEL | 5 + .../licenses/LICENSE.rst | 24 + .../pyasn1-0.6.3.dist-info/top_level.txt | 1 + .../vendor/pyasn1-0.6.3.dist-info/zip-safe | 1 + intelliaide/vendor/pyasn1/__init__.py | 2 + intelliaide/vendor/pyasn1/codec/__init__.py | 1 + .../vendor/pyasn1/codec/ber/__init__.py | 1 + .../vendor/pyasn1/codec/ber/decoder.py | 2225 +++ .../vendor/pyasn1/codec/ber/encoder.py | 954 ++ intelliaide/vendor/pyasn1/codec/ber/eoo.py | 28 + .../vendor/pyasn1/codec/cer/__init__.py | 1 + .../vendor/pyasn1/codec/cer/decoder.py | 149 + .../vendor/pyasn1/codec/cer/encoder.py | 331 + .../vendor/pyasn1/codec/der/__init__.py | 1 + .../vendor/pyasn1/codec/der/decoder.py | 120 + .../vendor/pyasn1/codec/der/encoder.py | 126 + .../vendor/pyasn1/codec/native/__init__.py | 1 + .../vendor/pyasn1/codec/native/decoder.py | 244 + .../vendor/pyasn1/codec/native/encoder.py | 285 + intelliaide/vendor/pyasn1/codec/streaming.py | 234 + intelliaide/vendor/pyasn1/compat/__init__.py | 4 + intelliaide/vendor/pyasn1/compat/integer.py | 13 + intelliaide/vendor/pyasn1/debug.py | 146 + intelliaide/vendor/pyasn1/error.py | 116 + intelliaide/vendor/pyasn1/type/__init__.py | 1 + intelliaide/vendor/pyasn1/type/base.py | 699 + intelliaide/vendor/pyasn1/type/char.py | 288 + intelliaide/vendor/pyasn1/type/constraint.py | 751 + intelliaide/vendor/pyasn1/type/error.py | 11 + intelliaide/vendor/pyasn1/type/namedtype.py | 550 + intelliaide/vendor/pyasn1/type/namedval.py | 192 + intelliaide/vendor/pyasn1/type/opentype.py | 104 + intelliaide/vendor/pyasn1/type/tag.py | 335 + intelliaide/vendor/pyasn1/type/tagmap.py | 96 + intelliaide/vendor/pyasn1/type/univ.py | 3327 +++++ intelliaide/vendor/pyasn1/type/useful.py | 190 + .../pyasn1_modules-0.4.2.dist-info/INSTALLER | 1 + .../pyasn1_modules-0.4.2.dist-info/METADATA | 73 + .../pyasn1_modules-0.4.2.dist-info/RECORD | 271 + .../pyasn1_modules-0.4.2.dist-info/WHEEL | 5 + .../licenses/LICENSE.txt | 24 + .../top_level.txt | 1 + .../pyasn1_modules-0.4.2.dist-info/zip-safe | 1 + intelliaide/vendor/pyasn1_modules/__init__.py | 2 + intelliaide/vendor/pyasn1_modules/pem.py | 58 + intelliaide/vendor/pyasn1_modules/rfc1155.py | 96 + intelliaide/vendor/pyasn1_modules/rfc1157.py | 126 + intelliaide/vendor/pyasn1_modules/rfc1901.py | 22 + intelliaide/vendor/pyasn1_modules/rfc1902.py | 129 + intelliaide/vendor/pyasn1_modules/rfc1905.py | 135 + intelliaide/vendor/pyasn1_modules/rfc2251.py | 563 + intelliaide/vendor/pyasn1_modules/rfc2314.py | 48 + intelliaide/vendor/pyasn1_modules/rfc2315.py | 294 + intelliaide/vendor/pyasn1_modules/rfc2437.py | 69 + intelliaide/vendor/pyasn1_modules/rfc2459.py | 1339 ++ intelliaide/vendor/pyasn1_modules/rfc2511.py | 258 + intelliaide/vendor/pyasn1_modules/rfc2560.py | 225 + intelliaide/vendor/pyasn1_modules/rfc2631.py | 37 + intelliaide/vendor/pyasn1_modules/rfc2634.py | 336 + intelliaide/vendor/pyasn1_modules/rfc2876.py | 56 + intelliaide/vendor/pyasn1_modules/rfc2985.py | 588 + intelliaide/vendor/pyasn1_modules/rfc2986.py | 75 + intelliaide/vendor/pyasn1_modules/rfc3058.py | 42 + intelliaide/vendor/pyasn1_modules/rfc3114.py | 77 + intelliaide/vendor/pyasn1_modules/rfc3125.py | 469 + intelliaide/vendor/pyasn1_modules/rfc3161.py | 142 + intelliaide/vendor/pyasn1_modules/rfc3274.py | 59 + intelliaide/vendor/pyasn1_modules/rfc3279.py | 260 + intelliaide/vendor/pyasn1_modules/rfc3280.py | 1543 ++ intelliaide/vendor/pyasn1_modules/rfc3281.py | 331 + intelliaide/vendor/pyasn1_modules/rfc3370.py | 146 + intelliaide/vendor/pyasn1_modules/rfc3412.py | 53 + intelliaide/vendor/pyasn1_modules/rfc3414.py | 28 + intelliaide/vendor/pyasn1_modules/rfc3447.py | 45 + intelliaide/vendor/pyasn1_modules/rfc3537.py | 34 + intelliaide/vendor/pyasn1_modules/rfc3560.py | 74 + intelliaide/vendor/pyasn1_modules/rfc3565.py | 57 + intelliaide/vendor/pyasn1_modules/rfc3657.py | 66 + intelliaide/vendor/pyasn1_modules/rfc3709.py | 207 + intelliaide/vendor/pyasn1_modules/rfc3739.py | 203 + intelliaide/vendor/pyasn1_modules/rfc3770.py | 75 + intelliaide/vendor/pyasn1_modules/rfc3779.py | 137 + intelliaide/vendor/pyasn1_modules/rfc3820.py | 65 + intelliaide/vendor/pyasn1_modules/rfc3852.py | 706 + intelliaide/vendor/pyasn1_modules/rfc4010.py | 58 + intelliaide/vendor/pyasn1_modules/rfc4043.py | 43 + intelliaide/vendor/pyasn1_modules/rfc4055.py | 258 + intelliaide/vendor/pyasn1_modules/rfc4073.py | 59 + intelliaide/vendor/pyasn1_modules/rfc4108.py | 350 + intelliaide/vendor/pyasn1_modules/rfc4210.py | 803 ++ intelliaide/vendor/pyasn1_modules/rfc4211.py | 396 + intelliaide/vendor/pyasn1_modules/rfc4334.py | 75 + intelliaide/vendor/pyasn1_modules/rfc4357.py | 477 + intelliaide/vendor/pyasn1_modules/rfc4387.py | 23 + intelliaide/vendor/pyasn1_modules/rfc4476.py | 93 + intelliaide/vendor/pyasn1_modules/rfc4490.py | 113 + intelliaide/vendor/pyasn1_modules/rfc4491.py | 44 + intelliaide/vendor/pyasn1_modules/rfc4683.py | 72 + intelliaide/vendor/pyasn1_modules/rfc4985.py | 49 + intelliaide/vendor/pyasn1_modules/rfc5035.py | 199 + intelliaide/vendor/pyasn1_modules/rfc5083.py | 52 + intelliaide/vendor/pyasn1_modules/rfc5084.py | 97 + intelliaide/vendor/pyasn1_modules/rfc5126.py | 577 + intelliaide/vendor/pyasn1_modules/rfc5208.py | 56 + intelliaide/vendor/pyasn1_modules/rfc5275.py | 404 + intelliaide/vendor/pyasn1_modules/rfc5280.py | 1658 +++ intelliaide/vendor/pyasn1_modules/rfc5480.py | 190 + intelliaide/vendor/pyasn1_modules/rfc5636.py | 113 + intelliaide/vendor/pyasn1_modules/rfc5639.py | 49 + intelliaide/vendor/pyasn1_modules/rfc5649.py | 33 + intelliaide/vendor/pyasn1_modules/rfc5652.py | 761 + intelliaide/vendor/pyasn1_modules/rfc5697.py | 70 + intelliaide/vendor/pyasn1_modules/rfc5751.py | 124 + intelliaide/vendor/pyasn1_modules/rfc5752.py | 49 + intelliaide/vendor/pyasn1_modules/rfc5753.py | 157 + intelliaide/vendor/pyasn1_modules/rfc5755.py | 398 + intelliaide/vendor/pyasn1_modules/rfc5913.py | 44 + intelliaide/vendor/pyasn1_modules/rfc5914.py | 119 + intelliaide/vendor/pyasn1_modules/rfc5915.py | 32 + intelliaide/vendor/pyasn1_modules/rfc5916.py | 35 + intelliaide/vendor/pyasn1_modules/rfc5917.py | 55 + intelliaide/vendor/pyasn1_modules/rfc5924.py | 19 + intelliaide/vendor/pyasn1_modules/rfc5934.py | 786 + intelliaide/vendor/pyasn1_modules/rfc5940.py | 59 + intelliaide/vendor/pyasn1_modules/rfc5958.py | 98 + intelliaide/vendor/pyasn1_modules/rfc5990.py | 237 + intelliaide/vendor/pyasn1_modules/rfc6010.py | 88 + intelliaide/vendor/pyasn1_modules/rfc6019.py | 45 + intelliaide/vendor/pyasn1_modules/rfc6031.py | 469 + intelliaide/vendor/pyasn1_modules/rfc6032.py | 68 + intelliaide/vendor/pyasn1_modules/rfc6120.py | 43 + intelliaide/vendor/pyasn1_modules/rfc6170.py | 17 + intelliaide/vendor/pyasn1_modules/rfc6187.py | 22 + intelliaide/vendor/pyasn1_modules/rfc6210.py | 42 + intelliaide/vendor/pyasn1_modules/rfc6211.py | 72 + intelliaide/vendor/pyasn1_modules/rfc6402.py | 628 + intelliaide/vendor/pyasn1_modules/rfc6482.py | 74 + intelliaide/vendor/pyasn1_modules/rfc6486.py | 68 + intelliaide/vendor/pyasn1_modules/rfc6487.py | 22 + intelliaide/vendor/pyasn1_modules/rfc6664.py | 147 + intelliaide/vendor/pyasn1_modules/rfc6955.py | 108 + intelliaide/vendor/pyasn1_modules/rfc6960.py | 223 + intelliaide/vendor/pyasn1_modules/rfc7030.py | 66 + intelliaide/vendor/pyasn1_modules/rfc7191.py | 261 + intelliaide/vendor/pyasn1_modules/rfc7229.py | 29 + intelliaide/vendor/pyasn1_modules/rfc7292.py | 357 + intelliaide/vendor/pyasn1_modules/rfc7296.py | 32 + intelliaide/vendor/pyasn1_modules/rfc7508.py | 90 + intelliaide/vendor/pyasn1_modules/rfc7585.py | 50 + intelliaide/vendor/pyasn1_modules/rfc7633.py | 38 + intelliaide/vendor/pyasn1_modules/rfc7773.py | 52 + intelliaide/vendor/pyasn1_modules/rfc7894.py | 92 + intelliaide/vendor/pyasn1_modules/rfc7906.py | 736 + intelliaide/vendor/pyasn1_modules/rfc7914.py | 49 + intelliaide/vendor/pyasn1_modules/rfc8017.py | 153 + intelliaide/vendor/pyasn1_modules/rfc8018.py | 260 + intelliaide/vendor/pyasn1_modules/rfc8103.py | 36 + intelliaide/vendor/pyasn1_modules/rfc8209.py | 20 + intelliaide/vendor/pyasn1_modules/rfc8226.py | 149 + intelliaide/vendor/pyasn1_modules/rfc8358.py | 50 + intelliaide/vendor/pyasn1_modules/rfc8360.py | 44 + intelliaide/vendor/pyasn1_modules/rfc8398.py | 52 + intelliaide/vendor/pyasn1_modules/rfc8410.py | 43 + intelliaide/vendor/pyasn1_modules/rfc8418.py | 36 + intelliaide/vendor/pyasn1_modules/rfc8419.py | 68 + intelliaide/vendor/pyasn1_modules/rfc8479.py | 45 + intelliaide/vendor/pyasn1_modules/rfc8494.py | 80 + intelliaide/vendor/pyasn1_modules/rfc8520.py | 63 + intelliaide/vendor/pyasn1_modules/rfc8619.py | 45 + intelliaide/vendor/pyasn1_modules/rfc8649.py | 40 + intelliaide/vendor/pyasn1_modules/rfc8692.py | 79 + intelliaide/vendor/pyasn1_modules/rfc8696.py | 104 + intelliaide/vendor/pyasn1_modules/rfc8702.py | 105 + intelliaide/vendor/pyasn1_modules/rfc8708.py | 41 + intelliaide/vendor/pyasn1_modules/rfc8769.py | 21 + .../vendor/pycparser-3.0.dist-info/INSTALLER | 1 + .../vendor/pycparser-3.0.dist-info/METADATA | 244 + .../vendor/pycparser-3.0.dist-info/RECORD | 21 + .../vendor/pycparser-3.0.dist-info/WHEEL | 5 + .../pycparser-3.0.dist-info/licenses/LICENSE | 27 + .../pycparser-3.0.dist-info/top_level.txt | 1 + intelliaide/vendor/pycparser/__init__.py | 99 + intelliaide/vendor/pycparser/_ast_gen.py | 355 + intelliaide/vendor/pycparser/_c_ast.cfg | 195 + .../vendor/pycparser/ast_transforms.py | 174 + intelliaide/vendor/pycparser/c_ast.py | 1341 ++ intelliaide/vendor/pycparser/c_generator.py | 573 + intelliaide/vendor/pycparser/c_lexer.py | 706 + intelliaide/vendor/pycparser/c_parser.py | 2376 ++++ .../python_docx-1.2.0.dist-info/INSTALLER | 1 + .../python_docx-1.2.0.dist-info/METADATA | 58 + .../vendor/python_docx-1.2.0.dist-info/RECORD | 221 + .../python_docx-1.2.0.dist-info/REQUESTED | 0 .../vendor/python_docx-1.2.0.dist-info/WHEEL | 5 + .../licenses/LICENSE | 20 + .../python_docx-1.2.0.dist-info/top_level.txt | 1 + .../vendor/pyyaml-6.0.3.dist-info/INSTALLER | 1 + .../vendor/pyyaml-6.0.3.dist-info/METADATA | 59 + .../vendor/pyyaml-6.0.3.dist-info/RECORD | 44 + .../vendor/pyyaml-6.0.3.dist-info/REQUESTED | 0 .../vendor/pyyaml-6.0.3.dist-info/WHEEL | 7 + .../pyyaml-6.0.3.dist-info/licenses/LICENSE | 20 + .../pyyaml-6.0.3.dist-info/top_level.txt | 2 + .../requests-2.34.2.dist-info/INSTALLER | 1 + .../vendor/requests-2.34.2.dist-info/METADATA | 120 + .../vendor/requests-2.34.2.dist-info/RECORD | 47 + .../requests-2.34.2.dist-info/REQUESTED | 0 .../vendor/requests-2.34.2.dist-info/WHEEL | 5 + .../licenses/LICENSE | 175 + .../requests-2.34.2.dist-info/licenses/NOTICE | 2 + .../requests-2.34.2.dist-info/top_level.txt | 1 + intelliaide/vendor/requests/__init__.py | 219 + intelliaide/vendor/requests/__version__.py | 14 + .../vendor/requests/_internal_utils.py | 51 + intelliaide/vendor/requests/_types.py | 183 + intelliaide/vendor/requests/adapters.py | 748 + intelliaide/vendor/requests/api.py | 180 + intelliaide/vendor/requests/auth.py | 354 + intelliaide/vendor/requests/certs.py | 18 + intelliaide/vendor/requests/compat.py | 113 + intelliaide/vendor/requests/cookies.py | 625 + intelliaide/vendor/requests/exceptions.py | 162 + intelliaide/vendor/requests/help.py | 134 + intelliaide/vendor/requests/hooks.py | 48 + intelliaide/vendor/requests/models.py | 1180 ++ intelliaide/vendor/requests/packages.py | 23 + intelliaide/vendor/requests/py.typed | 0 intelliaide/vendor/requests/sessions.py | 920 ++ intelliaide/vendor/requests/status_codes.py | 128 + intelliaide/vendor/requests/structures.py | 130 + intelliaide/vendor/requests/utils.py | 1155 ++ intelliaide/vendor/share/man/man1/csv2ods.1 | 270 + intelliaide/vendor/share/man/man1/mailodf.1 | 232 + intelliaide/vendor/share/man/man1/odf2mht.1 | 239 + intelliaide/vendor/share/man/man1/odf2xhtml.1 | 221 + intelliaide/vendor/share/man/man1/odf2xml.1 | 231 + .../vendor/share/man/man1/odfimgimport.1 | 227 + intelliaide/vendor/share/man/man1/odflint.1 | 217 + intelliaide/vendor/share/man/man1/odfmeta.1 | 277 + .../vendor/share/man/man1/odfoutline.1 | 213 + .../vendor/share/man/man1/odfuserfield.1 | 267 + intelliaide/vendor/share/man/man1/xml2odf.1 | 235 + .../INSTALLER | 1 + .../METADATA | 72 + .../typing_extensions-4.15.0.dist-info/RECORD | 7 + .../typing_extensions-4.15.0.dist-info/WHEEL | 4 + .../licenses/LICENSE | 279 + intelliaide/vendor/typing_extensions.py | 4317 ++++++ .../vendor/urllib3-2.7.0.dist-info/INSTALLER | 1 + .../vendor/urllib3-2.7.0.dist-info/METADATA | 163 + .../vendor/urllib3-2.7.0.dist-info/RECORD | 79 + .../vendor/urllib3-2.7.0.dist-info/WHEEL | 4 + .../licenses/LICENSE.txt | 21 + intelliaide/vendor/urllib3/__init__.py | 211 + .../vendor/urllib3/_base_connection.py | 167 + intelliaide/vendor/urllib3/_collections.py | 486 + .../vendor/urllib3/_request_methods.py | 278 + intelliaide/vendor/urllib3/_version.py | 24 + intelliaide/vendor/urllib3/connection.py | 1099 ++ intelliaide/vendor/urllib3/connectionpool.py | 1191 ++ .../vendor/urllib3/contrib/__init__.py | 0 .../urllib3/contrib/emscripten/__init__.py | 17 + .../urllib3/contrib/emscripten/connection.py | 260 + .../emscripten/emscripten_fetch_worker.js | 110 + .../urllib3/contrib/emscripten/fetch.py | 726 + .../urllib3/contrib/emscripten/request.py | 22 + .../urllib3/contrib/emscripten/response.py | 281 + .../vendor/urllib3/contrib/pyopenssl.py | 563 + intelliaide/vendor/urllib3/contrib/socks.py | 228 + intelliaide/vendor/urllib3/exceptions.py | 335 + intelliaide/vendor/urllib3/fields.py | 341 + intelliaide/vendor/urllib3/filepost.py | 89 + intelliaide/vendor/urllib3/http2/__init__.py | 53 + .../vendor/urllib3/http2/connection.py | 356 + intelliaide/vendor/urllib3/http2/probe.py | 87 + intelliaide/vendor/urllib3/poolmanager.py | 653 + intelliaide/vendor/urllib3/py.typed | 2 + intelliaide/vendor/urllib3/response.py | 1493 ++ intelliaide/vendor/urllib3/util/__init__.py | 42 + intelliaide/vendor/urllib3/util/connection.py | 137 + intelliaide/vendor/urllib3/util/proxy.py | 43 + intelliaide/vendor/urllib3/util/request.py | 263 + intelliaide/vendor/urllib3/util/response.py | 101 + intelliaide/vendor/urllib3/util/retry.py | 557 + intelliaide/vendor/urllib3/util/ssl_.py | 477 + .../vendor/urllib3/util/ssl_match_hostname.py | 153 + .../vendor/urllib3/util/ssltransport.py | 271 + intelliaide/vendor/urllib3/util/timeout.py | 275 + intelliaide/vendor/urllib3/util/url.py | 469 + intelliaide/vendor/urllib3/util/util.py | 42 + intelliaide/vendor/urllib3/util/wait.py | 124 + intelliaide/vendor/yaml/__init__.py | 390 + .../_yaml.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 2679264 bytes intelliaide/vendor/yaml/composer.py | 139 + intelliaide/vendor/yaml/constructor.py | 748 + intelliaide/vendor/yaml/cyaml.py | 101 + intelliaide/vendor/yaml/dumper.py | 62 + intelliaide/vendor/yaml/emitter.py | 1137 ++ intelliaide/vendor/yaml/error.py | 75 + intelliaide/vendor/yaml/events.py | 86 + intelliaide/vendor/yaml/loader.py | 63 + intelliaide/vendor/yaml/nodes.py | 49 + intelliaide/vendor/yaml/parser.py | 589 + intelliaide/vendor/yaml/reader.py | 185 + intelliaide/vendor/yaml/representer.py | 389 + intelliaide/vendor/yaml/resolver.py | 227 + intelliaide/vendor/yaml/scanner.py | 1435 ++ intelliaide/vendor/yaml/serializer.py | 111 + intelliaide/vendor/yaml/tokens.py | 104 + 1039 files changed, 288517 insertions(+) create mode 100644 intelliaide/Config/config.json.template create mode 100644 intelliaide/Config/json_config.json create mode 100644 intelliaide/Config/log_config.json create mode 100644 intelliaide/Config/yaml_processing.yaml create mode 100644 intelliaide/DataSource/MUST_GATHER_DOCUMENTATION_README.md create mode 100644 intelliaide/DataSource/MUST_GATHER_INDEX.md create mode 100644 intelliaide/DataSource/MUST_GATHER_ROUTING_GUIDE.md create mode 100644 intelliaide/DataSource/MUST_GATHER_STRUCTURE.md create mode 100644 intelliaide/Machine-learning/ML_LOG_CLASSIFICATION.py create mode 100644 intelliaide/Machine-learning/ML_YAML_CLASSIFICATION.py create mode 100644 intelliaide/Main-program/agent_prompts.py create mode 100644 intelliaide/Main-program/data_analyzer.py create mode 100644 intelliaide/Main-program/llm_rca_agent.py create mode 100644 intelliaide/Main-program/must_gather_file_selector.py create mode 100644 intelliaide/Main-program/root_cause_analyzer_yaml.py create mode 100644 intelliaide/SKILL.md create mode 100644 intelliaide/analyze_data.py create mode 100644 intelliaide/app_paths.py create mode 100644 intelliaide/extract_cluster.py create mode 100644 intelliaide/perform_rca.py create mode 100644 intelliaide/requirements.txt create mode 100644 intelliaide/select_files.py create mode 100755 intelliaide/vendor/81d243bd2c585b0f4821__mypyc.cpython-312-x86_64-linux-gnu.so create mode 100755 intelliaide/vendor/_cffi_backend.cpython-312-x86_64-linux-gnu.so create mode 100644 intelliaide/vendor/_yaml/__init__.py create mode 100755 intelliaide/vendor/bin/csv2ods create mode 100755 intelliaide/vendor/bin/idna create mode 100755 intelliaide/vendor/bin/mailodf create mode 100755 intelliaide/vendor/bin/normalizer create mode 100755 intelliaide/vendor/bin/odf2mht create mode 100755 intelliaide/vendor/bin/odf2xhtml create mode 100755 intelliaide/vendor/bin/odf2xml create mode 100755 intelliaide/vendor/bin/odfimgimport create mode 100755 intelliaide/vendor/bin/odflint create mode 100755 intelliaide/vendor/bin/odfmeta create mode 100755 intelliaide/vendor/bin/odfoutline create mode 100755 intelliaide/vendor/bin/odfuserfield create mode 100755 intelliaide/vendor/bin/xml2odf create mode 100644 intelliaide/vendor/cachetools-4.2.1.dist-info/INSTALLER create mode 100644 intelliaide/vendor/cachetools-4.2.1.dist-info/LICENSE create mode 100644 intelliaide/vendor/cachetools-4.2.1.dist-info/METADATA create mode 100644 intelliaide/vendor/cachetools-4.2.1.dist-info/RECORD create mode 100644 intelliaide/vendor/cachetools-4.2.1.dist-info/WHEEL create mode 100644 intelliaide/vendor/cachetools-4.2.1.dist-info/top_level.txt create mode 100644 intelliaide/vendor/cachetools/__init__.py create mode 100644 intelliaide/vendor/cachetools/cache.py create mode 100644 intelliaide/vendor/cachetools/decorators.py create mode 100644 intelliaide/vendor/cachetools/fifo.py create mode 100644 intelliaide/vendor/cachetools/func.py create mode 100644 intelliaide/vendor/cachetools/keys.py create mode 100644 intelliaide/vendor/cachetools/lfu.py create mode 100644 intelliaide/vendor/cachetools/lru.py create mode 100644 intelliaide/vendor/cachetools/mru.py create mode 100644 intelliaide/vendor/cachetools/rr.py create mode 100644 intelliaide/vendor/cachetools/ttl.py create mode 100644 intelliaide/vendor/certifi-2026.5.20.dist-info/INSTALLER create mode 100644 intelliaide/vendor/certifi-2026.5.20.dist-info/METADATA create mode 100644 intelliaide/vendor/certifi-2026.5.20.dist-info/RECORD create mode 100644 intelliaide/vendor/certifi-2026.5.20.dist-info/WHEEL create mode 100644 intelliaide/vendor/certifi-2026.5.20.dist-info/licenses/LICENSE create mode 100644 intelliaide/vendor/certifi-2026.5.20.dist-info/top_level.txt create mode 100644 intelliaide/vendor/certifi/__init__.py create mode 100644 intelliaide/vendor/certifi/__main__.py create mode 100644 intelliaide/vendor/certifi/cacert.pem create mode 100644 intelliaide/vendor/certifi/core.py create mode 100644 intelliaide/vendor/certifi/py.typed create mode 100644 intelliaide/vendor/cffi-2.0.0.dist-info/INSTALLER create mode 100644 intelliaide/vendor/cffi-2.0.0.dist-info/METADATA create mode 100644 intelliaide/vendor/cffi-2.0.0.dist-info/RECORD create mode 100644 intelliaide/vendor/cffi-2.0.0.dist-info/WHEEL create mode 100644 intelliaide/vendor/cffi-2.0.0.dist-info/entry_points.txt create mode 100644 intelliaide/vendor/cffi-2.0.0.dist-info/licenses/AUTHORS create mode 100644 intelliaide/vendor/cffi-2.0.0.dist-info/licenses/LICENSE create mode 100644 intelliaide/vendor/cffi-2.0.0.dist-info/top_level.txt create mode 100644 intelliaide/vendor/cffi/__init__.py create mode 100644 intelliaide/vendor/cffi/_cffi_errors.h create mode 100644 intelliaide/vendor/cffi/_cffi_include.h create mode 100644 intelliaide/vendor/cffi/_embedding.h create mode 100644 intelliaide/vendor/cffi/_imp_emulation.py create mode 100644 intelliaide/vendor/cffi/_shimmed_dist_utils.py create mode 100644 intelliaide/vendor/cffi/api.py create mode 100644 intelliaide/vendor/cffi/backend_ctypes.py create mode 100644 intelliaide/vendor/cffi/cffi_opcode.py create mode 100644 intelliaide/vendor/cffi/commontypes.py create mode 100644 intelliaide/vendor/cffi/cparser.py create mode 100644 intelliaide/vendor/cffi/error.py create mode 100644 intelliaide/vendor/cffi/ffiplatform.py create mode 100644 intelliaide/vendor/cffi/lock.py create mode 100644 intelliaide/vendor/cffi/model.py create mode 100644 intelliaide/vendor/cffi/parse_c_type.h create mode 100644 intelliaide/vendor/cffi/pkgconfig.py create mode 100644 intelliaide/vendor/cffi/recompiler.py create mode 100644 intelliaide/vendor/cffi/setuptools_ext.py create mode 100644 intelliaide/vendor/cffi/vengine_cpy.py create mode 100644 intelliaide/vendor/cffi/vengine_gen.py create mode 100644 intelliaide/vendor/cffi/verifier.py create mode 100644 intelliaide/vendor/charset_normalizer-3.4.7.dist-info/INSTALLER create mode 100644 intelliaide/vendor/charset_normalizer-3.4.7.dist-info/METADATA create mode 100644 intelliaide/vendor/charset_normalizer-3.4.7.dist-info/RECORD create mode 100644 intelliaide/vendor/charset_normalizer-3.4.7.dist-info/WHEEL create mode 100644 intelliaide/vendor/charset_normalizer-3.4.7.dist-info/entry_points.txt create mode 100644 intelliaide/vendor/charset_normalizer-3.4.7.dist-info/licenses/LICENSE create mode 100644 intelliaide/vendor/charset_normalizer-3.4.7.dist-info/top_level.txt create mode 100644 intelliaide/vendor/charset_normalizer/__init__.py create mode 100644 intelliaide/vendor/charset_normalizer/__main__.py create mode 100644 intelliaide/vendor/charset_normalizer/api.py create mode 100755 intelliaide/vendor/charset_normalizer/cd.cpython-312-x86_64-linux-gnu.so create mode 100644 intelliaide/vendor/charset_normalizer/cd.py create mode 100644 intelliaide/vendor/charset_normalizer/cli/__init__.py create mode 100644 intelliaide/vendor/charset_normalizer/cli/__main__.py create mode 100644 intelliaide/vendor/charset_normalizer/constant.py create mode 100644 intelliaide/vendor/charset_normalizer/legacy.py create mode 100755 intelliaide/vendor/charset_normalizer/md.cpython-312-x86_64-linux-gnu.so create mode 100644 intelliaide/vendor/charset_normalizer/md.py create mode 100644 intelliaide/vendor/charset_normalizer/models.py create mode 100644 intelliaide/vendor/charset_normalizer/py.typed create mode 100644 intelliaide/vendor/charset_normalizer/utils.py create mode 100644 intelliaide/vendor/charset_normalizer/version.py create mode 100644 intelliaide/vendor/cryptography-48.0.0.dist-info/INSTALLER create mode 100644 intelliaide/vendor/cryptography-48.0.0.dist-info/METADATA create mode 100644 intelliaide/vendor/cryptography-48.0.0.dist-info/RECORD create mode 100644 intelliaide/vendor/cryptography-48.0.0.dist-info/WHEEL create mode 100644 intelliaide/vendor/cryptography-48.0.0.dist-info/licenses/LICENSE create mode 100644 intelliaide/vendor/cryptography-48.0.0.dist-info/licenses/LICENSE.APACHE create mode 100644 intelliaide/vendor/cryptography-48.0.0.dist-info/licenses/LICENSE.BSD create mode 100644 intelliaide/vendor/cryptography-48.0.0.dist-info/sboms/cryptography-rust.cyclonedx.json create mode 100644 intelliaide/vendor/cryptography-48.0.0.dist-info/sboms/sbom.json create mode 100644 intelliaide/vendor/cryptography/__about__.py create mode 100644 intelliaide/vendor/cryptography/__init__.py create mode 100644 intelliaide/vendor/cryptography/exceptions.py create mode 100644 intelliaide/vendor/cryptography/fernet.py create mode 100644 intelliaide/vendor/cryptography/hazmat/__init__.py create mode 100644 intelliaide/vendor/cryptography/hazmat/_oid.py create mode 100644 intelliaide/vendor/cryptography/hazmat/asn1/__init__.py create mode 100644 intelliaide/vendor/cryptography/hazmat/asn1/asn1.py create mode 100644 intelliaide/vendor/cryptography/hazmat/backends/__init__.py create mode 100644 intelliaide/vendor/cryptography/hazmat/backends/openssl/__init__.py create mode 100644 intelliaide/vendor/cryptography/hazmat/backends/openssl/backend.py create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/__init__.py create mode 100755 intelliaide/vendor/cryptography/hazmat/bindings/_rust.abi3.so create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/__init__.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/_openssl.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/asn1.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/declarative_asn1.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/exceptions.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/ocsp.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/aead.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/dh.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/ec.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/hpke.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/keys.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/mldsa.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/mlkem.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/x448.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/pkcs12.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/pkcs7.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/test_support.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/_rust/x509.pyi create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/openssl/__init__.py create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/openssl/_conditional.py create mode 100644 intelliaide/vendor/cryptography/hazmat/bindings/openssl/binding.py create mode 100644 intelliaide/vendor/cryptography/hazmat/decrepit/__init__.py create mode 100644 intelliaide/vendor/cryptography/hazmat/decrepit/ciphers/__init__.py create mode 100644 intelliaide/vendor/cryptography/hazmat/decrepit/ciphers/algorithms.py create mode 100644 intelliaide/vendor/cryptography/hazmat/decrepit/ciphers/modes.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/__init__.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/_asymmetric.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/_cipheralgorithm.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/_modes.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/_serialization.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/__init__.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/dh.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/dsa.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/ec.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/ed25519.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/ed448.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/mldsa.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/mlkem.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/padding.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/rsa.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/types.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/utils.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/x25519.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/x448.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/ciphers/__init__.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/ciphers/aead.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/ciphers/algorithms.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/ciphers/base.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/ciphers/modes.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/cmac.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/constant_time.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/hashes.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/hmac.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/hpke.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/kdf/__init__.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/kdf/argon2.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/kdf/concatkdf.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/kdf/hkdf.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/kdf/kbkdf.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/kdf/pbkdf2.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/kdf/scrypt.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/kdf/x963kdf.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/keywrap.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/padding.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/poly1305.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/serialization/__init__.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/serialization/base.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/serialization/pkcs12.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/serialization/pkcs7.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/serialization/ssh.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/twofactor/__init__.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/twofactor/hotp.py create mode 100644 intelliaide/vendor/cryptography/hazmat/primitives/twofactor/totp.py create mode 100644 intelliaide/vendor/cryptography/py.typed create mode 100644 intelliaide/vendor/cryptography/utils.py create mode 100644 intelliaide/vendor/cryptography/x509/__init__.py create mode 100644 intelliaide/vendor/cryptography/x509/base.py create mode 100644 intelliaide/vendor/cryptography/x509/certificate_transparency.py create mode 100644 intelliaide/vendor/cryptography/x509/extensions.py create mode 100644 intelliaide/vendor/cryptography/x509/general_name.py create mode 100644 intelliaide/vendor/cryptography/x509/name.py create mode 100644 intelliaide/vendor/cryptography/x509/ocsp.py create mode 100644 intelliaide/vendor/cryptography/x509/oid.py create mode 100644 intelliaide/vendor/cryptography/x509/verification.py create mode 100644 intelliaide/vendor/defusedxml-0.7.1.dist-info/INSTALLER create mode 100644 intelliaide/vendor/defusedxml-0.7.1.dist-info/LICENSE create mode 100644 intelliaide/vendor/defusedxml-0.7.1.dist-info/METADATA create mode 100644 intelliaide/vendor/defusedxml-0.7.1.dist-info/RECORD create mode 100644 intelliaide/vendor/defusedxml-0.7.1.dist-info/WHEEL create mode 100644 intelliaide/vendor/defusedxml-0.7.1.dist-info/top_level.txt create mode 100644 intelliaide/vendor/defusedxml/ElementTree.py create mode 100644 intelliaide/vendor/defusedxml/__init__.py create mode 100644 intelliaide/vendor/defusedxml/cElementTree.py create mode 100644 intelliaide/vendor/defusedxml/common.py create mode 100644 intelliaide/vendor/defusedxml/expatbuilder.py create mode 100644 intelliaide/vendor/defusedxml/expatreader.py create mode 100644 intelliaide/vendor/defusedxml/lxml.py create mode 100644 intelliaide/vendor/defusedxml/minidom.py create mode 100644 intelliaide/vendor/defusedxml/pulldom.py create mode 100644 intelliaide/vendor/defusedxml/sax.py create mode 100644 intelliaide/vendor/defusedxml/xmlrpc.py create mode 100644 intelliaide/vendor/docx/__init__.py create mode 100644 intelliaide/vendor/docx/api.py create mode 100644 intelliaide/vendor/docx/blkcntnr.py create mode 100644 intelliaide/vendor/docx/comments.py create mode 100644 intelliaide/vendor/docx/dml/__init__.py create mode 100644 intelliaide/vendor/docx/dml/color.py create mode 100644 intelliaide/vendor/docx/document.py create mode 100644 intelliaide/vendor/docx/drawing/__init__.py create mode 100644 intelliaide/vendor/docx/enum/__init__.py create mode 100644 intelliaide/vendor/docx/enum/base.py create mode 100644 intelliaide/vendor/docx/enum/dml.py create mode 100644 intelliaide/vendor/docx/enum/section.py create mode 100644 intelliaide/vendor/docx/enum/shape.py create mode 100644 intelliaide/vendor/docx/enum/style.py create mode 100644 intelliaide/vendor/docx/enum/table.py create mode 100644 intelliaide/vendor/docx/enum/text.py create mode 100644 intelliaide/vendor/docx/exceptions.py create mode 100644 intelliaide/vendor/docx/image/__init__.py create mode 100644 intelliaide/vendor/docx/image/bmp.py create mode 100644 intelliaide/vendor/docx/image/constants.py create mode 100644 intelliaide/vendor/docx/image/exceptions.py create mode 100644 intelliaide/vendor/docx/image/gif.py create mode 100644 intelliaide/vendor/docx/image/helpers.py create mode 100644 intelliaide/vendor/docx/image/image.py create mode 100644 intelliaide/vendor/docx/image/jpeg.py create mode 100644 intelliaide/vendor/docx/image/png.py create mode 100644 intelliaide/vendor/docx/image/tiff.py create mode 100644 intelliaide/vendor/docx/opc/__init__.py create mode 100644 intelliaide/vendor/docx/opc/constants.py create mode 100644 intelliaide/vendor/docx/opc/coreprops.py create mode 100644 intelliaide/vendor/docx/opc/exceptions.py create mode 100644 intelliaide/vendor/docx/opc/oxml.py create mode 100644 intelliaide/vendor/docx/opc/package.py create mode 100644 intelliaide/vendor/docx/opc/packuri.py create mode 100644 intelliaide/vendor/docx/opc/part.py create mode 100644 intelliaide/vendor/docx/opc/parts/__init__.py create mode 100644 intelliaide/vendor/docx/opc/parts/coreprops.py create mode 100644 intelliaide/vendor/docx/opc/phys_pkg.py create mode 100644 intelliaide/vendor/docx/opc/pkgreader.py create mode 100644 intelliaide/vendor/docx/opc/pkgwriter.py create mode 100644 intelliaide/vendor/docx/opc/rel.py create mode 100644 intelliaide/vendor/docx/opc/shared.py create mode 100644 intelliaide/vendor/docx/opc/spec.py create mode 100644 intelliaide/vendor/docx/oxml/__init__.py create mode 100644 intelliaide/vendor/docx/oxml/comments.py create mode 100644 intelliaide/vendor/docx/oxml/coreprops.py create mode 100644 intelliaide/vendor/docx/oxml/document.py create mode 100644 intelliaide/vendor/docx/oxml/drawing.py create mode 100644 intelliaide/vendor/docx/oxml/exceptions.py create mode 100644 intelliaide/vendor/docx/oxml/ns.py create mode 100644 intelliaide/vendor/docx/oxml/numbering.py create mode 100644 intelliaide/vendor/docx/oxml/parser.py create mode 100644 intelliaide/vendor/docx/oxml/section.py create mode 100644 intelliaide/vendor/docx/oxml/settings.py create mode 100644 intelliaide/vendor/docx/oxml/shape.py create mode 100644 intelliaide/vendor/docx/oxml/shared.py create mode 100644 intelliaide/vendor/docx/oxml/simpletypes.py create mode 100644 intelliaide/vendor/docx/oxml/styles.py create mode 100644 intelliaide/vendor/docx/oxml/table.py create mode 100644 intelliaide/vendor/docx/oxml/text/__init__.py create mode 100644 intelliaide/vendor/docx/oxml/text/font.py create mode 100644 intelliaide/vendor/docx/oxml/text/hyperlink.py create mode 100644 intelliaide/vendor/docx/oxml/text/pagebreak.py create mode 100644 intelliaide/vendor/docx/oxml/text/paragraph.py create mode 100644 intelliaide/vendor/docx/oxml/text/parfmt.py create mode 100644 intelliaide/vendor/docx/oxml/text/run.py create mode 100644 intelliaide/vendor/docx/oxml/xmlchemy.py create mode 100644 intelliaide/vendor/docx/package.py create mode 100644 intelliaide/vendor/docx/parts/__init__.py create mode 100644 intelliaide/vendor/docx/parts/comments.py create mode 100644 intelliaide/vendor/docx/parts/document.py create mode 100644 intelliaide/vendor/docx/parts/hdrftr.py create mode 100644 intelliaide/vendor/docx/parts/image.py create mode 100644 intelliaide/vendor/docx/parts/numbering.py create mode 100644 intelliaide/vendor/docx/parts/settings.py create mode 100644 intelliaide/vendor/docx/parts/story.py create mode 100644 intelliaide/vendor/docx/parts/styles.py create mode 100644 intelliaide/vendor/docx/py.typed create mode 100644 intelliaide/vendor/docx/section.py create mode 100644 intelliaide/vendor/docx/settings.py create mode 100644 intelliaide/vendor/docx/shape.py create mode 100644 intelliaide/vendor/docx/shared.py create mode 100644 intelliaide/vendor/docx/styles/__init__.py create mode 100644 intelliaide/vendor/docx/styles/latent.py create mode 100644 intelliaide/vendor/docx/styles/style.py create mode 100644 intelliaide/vendor/docx/styles/styles.py create mode 100644 intelliaide/vendor/docx/table.py create mode 100644 intelliaide/vendor/docx/templates/default-comments.xml create mode 100644 intelliaide/vendor/docx/templates/default-docx-template/[Content_Types].xml create mode 100644 intelliaide/vendor/docx/templates/default-docx-template/_rels/.rels create mode 100644 intelliaide/vendor/docx/templates/default-docx-template/customXml/_rels/item1.xml.rels create mode 100644 intelliaide/vendor/docx/templates/default-docx-template/customXml/item1.xml create mode 100644 intelliaide/vendor/docx/templates/default-docx-template/customXml/itemProps1.xml create mode 100644 intelliaide/vendor/docx/templates/default-docx-template/docProps/app.xml create mode 100644 intelliaide/vendor/docx/templates/default-docx-template/docProps/core.xml create mode 100644 intelliaide/vendor/docx/templates/default-docx-template/docProps/thumbnail.jpeg create mode 100644 intelliaide/vendor/docx/templates/default-docx-template/word/_rels/document.xml.rels create mode 100644 intelliaide/vendor/docx/templates/default-docx-template/word/document.xml create mode 100644 intelliaide/vendor/docx/templates/default-docx-template/word/fontTable.xml create mode 100644 intelliaide/vendor/docx/templates/default-docx-template/word/numbering.xml create mode 100644 intelliaide/vendor/docx/templates/default-docx-template/word/settings.xml create mode 100644 intelliaide/vendor/docx/templates/default-docx-template/word/styles.xml create mode 100644 intelliaide/vendor/docx/templates/default-docx-template/word/stylesWithEffects.xml create mode 100644 intelliaide/vendor/docx/templates/default-docx-template/word/theme/theme1.xml create mode 100644 intelliaide/vendor/docx/templates/default-docx-template/word/webSettings.xml create mode 100644 intelliaide/vendor/docx/templates/default-footer.xml create mode 100644 intelliaide/vendor/docx/templates/default-header.xml create mode 100644 intelliaide/vendor/docx/templates/default-settings.xml create mode 100644 intelliaide/vendor/docx/templates/default-styles.xml create mode 100644 intelliaide/vendor/docx/templates/default.docx create mode 100644 intelliaide/vendor/docx/text/__init__.py create mode 100644 intelliaide/vendor/docx/text/font.py create mode 100644 intelliaide/vendor/docx/text/hyperlink.py create mode 100644 intelliaide/vendor/docx/text/pagebreak.py create mode 100644 intelliaide/vendor/docx/text/paragraph.py create mode 100644 intelliaide/vendor/docx/text/parfmt.py create mode 100644 intelliaide/vendor/docx/text/run.py create mode 100644 intelliaide/vendor/docx/text/tabstops.py create mode 100644 intelliaide/vendor/docx/types.py create mode 100644 intelliaide/vendor/drain3-0.9.11.dist-info/INSTALLER create mode 100644 intelliaide/vendor/drain3-0.9.11.dist-info/METADATA create mode 100644 intelliaide/vendor/drain3-0.9.11.dist-info/RECORD create mode 100644 intelliaide/vendor/drain3-0.9.11.dist-info/REQUESTED create mode 100644 intelliaide/vendor/drain3-0.9.11.dist-info/WHEEL create mode 100644 intelliaide/vendor/drain3-0.9.11.dist-info/licenses/LICENSE.txt create mode 100644 intelliaide/vendor/drain3-0.9.11.dist-info/top_level.txt create mode 100644 intelliaide/vendor/drain3/__init__.py create mode 100644 intelliaide/vendor/drain3/drain.py create mode 100644 intelliaide/vendor/drain3/file_persistence.py create mode 100644 intelliaide/vendor/drain3/kafka_persistence.py create mode 100644 intelliaide/vendor/drain3/masking.py create mode 100644 intelliaide/vendor/drain3/memory_buffer_persistence.py create mode 100644 intelliaide/vendor/drain3/persistence_handler.py create mode 100644 intelliaide/vendor/drain3/redis_persistence.py create mode 100644 intelliaide/vendor/drain3/simple_profiler.py create mode 100644 intelliaide/vendor/drain3/template_miner.py create mode 100644 intelliaide/vendor/drain3/template_miner_config.py create mode 100644 intelliaide/vendor/google/auth/__init__.py create mode 100644 intelliaide/vendor/google/auth/_agent_identity_utils.py create mode 100644 intelliaide/vendor/google/auth/_cache.py create mode 100644 intelliaide/vendor/google/auth/_cloud_sdk.py create mode 100644 intelliaide/vendor/google/auth/_credentials_async.py create mode 100644 intelliaide/vendor/google/auth/_credentials_base.py create mode 100644 intelliaide/vendor/google/auth/_default.py create mode 100644 intelliaide/vendor/google/auth/_default_async.py create mode 100644 intelliaide/vendor/google/auth/_exponential_backoff.py create mode 100644 intelliaide/vendor/google/auth/_helpers.py create mode 100644 intelliaide/vendor/google/auth/_jwt_async.py create mode 100644 intelliaide/vendor/google/auth/_oauth2client.py create mode 100644 intelliaide/vendor/google/auth/_refresh_worker.py create mode 100644 intelliaide/vendor/google/auth/_regional_access_boundary_utils.py create mode 100644 intelliaide/vendor/google/auth/_service_account_info.py create mode 100644 intelliaide/vendor/google/auth/aio/__init__.py create mode 100644 intelliaide/vendor/google/auth/aio/_helpers.py create mode 100644 intelliaide/vendor/google/auth/aio/credentials.py create mode 100644 intelliaide/vendor/google/auth/aio/transport/__init__.py create mode 100644 intelliaide/vendor/google/auth/aio/transport/aiohttp.py create mode 100644 intelliaide/vendor/google/auth/aio/transport/mtls.py create mode 100644 intelliaide/vendor/google/auth/aio/transport/sessions.py create mode 100644 intelliaide/vendor/google/auth/api_key.py create mode 100644 intelliaide/vendor/google/auth/app_engine.py create mode 100644 intelliaide/vendor/google/auth/aws.py create mode 100644 intelliaide/vendor/google/auth/compute_engine/__init__.py create mode 100644 intelliaide/vendor/google/auth/compute_engine/_metadata.py create mode 100644 intelliaide/vendor/google/auth/compute_engine/_mtls.py create mode 100644 intelliaide/vendor/google/auth/compute_engine/credentials.py create mode 100644 intelliaide/vendor/google/auth/credentials.py create mode 100644 intelliaide/vendor/google/auth/crypt/__init__.py create mode 100644 intelliaide/vendor/google/auth/crypt/_cryptography_rsa.py create mode 100644 intelliaide/vendor/google/auth/crypt/_helpers.py create mode 100644 intelliaide/vendor/google/auth/crypt/_python_rsa.py create mode 100644 intelliaide/vendor/google/auth/crypt/base.py create mode 100644 intelliaide/vendor/google/auth/crypt/es.py create mode 100644 intelliaide/vendor/google/auth/crypt/es256.py create mode 100644 intelliaide/vendor/google/auth/crypt/rsa.py create mode 100644 intelliaide/vendor/google/auth/downscoped.py create mode 100644 intelliaide/vendor/google/auth/environment_vars.py create mode 100644 intelliaide/vendor/google/auth/exceptions.py create mode 100644 intelliaide/vendor/google/auth/external_account.py create mode 100644 intelliaide/vendor/google/auth/external_account_authorized_user.py create mode 100644 intelliaide/vendor/google/auth/iam.py create mode 100644 intelliaide/vendor/google/auth/identity_pool.py create mode 100644 intelliaide/vendor/google/auth/impersonated_credentials.py create mode 100644 intelliaide/vendor/google/auth/jwt.py create mode 100644 intelliaide/vendor/google/auth/metrics.py create mode 100644 intelliaide/vendor/google/auth/pluggable.py create mode 100644 intelliaide/vendor/google/auth/py.typed create mode 100644 intelliaide/vendor/google/auth/transport/__init__.py create mode 100644 intelliaide/vendor/google/auth/transport/_aiohttp_requests.py create mode 100644 intelliaide/vendor/google/auth/transport/_custom_tls_signer.py create mode 100644 intelliaide/vendor/google/auth/transport/_http_client.py create mode 100644 intelliaide/vendor/google/auth/transport/_mtls_helper.py create mode 100644 intelliaide/vendor/google/auth/transport/_requests_base.py create mode 100644 intelliaide/vendor/google/auth/transport/grpc.py create mode 100644 intelliaide/vendor/google/auth/transport/mtls.py create mode 100644 intelliaide/vendor/google/auth/transport/requests.py create mode 100644 intelliaide/vendor/google/auth/transport/urllib3.py create mode 100644 intelliaide/vendor/google/auth/version.py create mode 100644 intelliaide/vendor/google/oauth2/__init__.py create mode 100644 intelliaide/vendor/google/oauth2/_client.py create mode 100644 intelliaide/vendor/google/oauth2/_client_async.py create mode 100644 intelliaide/vendor/google/oauth2/_credentials_async.py create mode 100644 intelliaide/vendor/google/oauth2/_id_token_async.py create mode 100644 intelliaide/vendor/google/oauth2/_reauth_async.py create mode 100644 intelliaide/vendor/google/oauth2/_service_account_async.py create mode 100644 intelliaide/vendor/google/oauth2/challenges.py create mode 100644 intelliaide/vendor/google/oauth2/credentials.py create mode 100644 intelliaide/vendor/google/oauth2/gdch_credentials.py create mode 100644 intelliaide/vendor/google/oauth2/id_token.py create mode 100644 intelliaide/vendor/google/oauth2/py.typed create mode 100644 intelliaide/vendor/google/oauth2/reauth.py create mode 100644 intelliaide/vendor/google/oauth2/service_account.py create mode 100644 intelliaide/vendor/google/oauth2/sts.py create mode 100644 intelliaide/vendor/google/oauth2/utils.py create mode 100644 intelliaide/vendor/google/oauth2/webauthn_handler.py create mode 100644 intelliaide/vendor/google/oauth2/webauthn_handler_factory.py create mode 100644 intelliaide/vendor/google/oauth2/webauthn_types.py create mode 100644 intelliaide/vendor/google_auth-2.53.0.dist-info/INSTALLER create mode 100644 intelliaide/vendor/google_auth-2.53.0.dist-info/METADATA create mode 100644 intelliaide/vendor/google_auth-2.53.0.dist-info/RECORD create mode 100644 intelliaide/vendor/google_auth-2.53.0.dist-info/REQUESTED create mode 100644 intelliaide/vendor/google_auth-2.53.0.dist-info/WHEEL create mode 100644 intelliaide/vendor/google_auth-2.53.0.dist-info/licenses/LICENSE create mode 100644 intelliaide/vendor/google_auth-2.53.0.dist-info/top_level.txt create mode 100644 intelliaide/vendor/idna-3.16.dist-info/INSTALLER create mode 100644 intelliaide/vendor/idna-3.16.dist-info/METADATA create mode 100644 intelliaide/vendor/idna-3.16.dist-info/RECORD create mode 100644 intelliaide/vendor/idna-3.16.dist-info/WHEEL create mode 100644 intelliaide/vendor/idna-3.16.dist-info/entry_points.txt create mode 100644 intelliaide/vendor/idna-3.16.dist-info/licenses/LICENSE.md create mode 100644 intelliaide/vendor/idna/__init__.py create mode 100644 intelliaide/vendor/idna/__main__.py create mode 100644 intelliaide/vendor/idna/cli.py create mode 100644 intelliaide/vendor/idna/codec.py create mode 100644 intelliaide/vendor/idna/compat.py create mode 100644 intelliaide/vendor/idna/core.py create mode 100644 intelliaide/vendor/idna/idnadata.py create mode 100644 intelliaide/vendor/idna/intranges.py create mode 100644 intelliaide/vendor/idna/package_data.py create mode 100644 intelliaide/vendor/idna/py.typed create mode 100644 intelliaide/vendor/idna/uts46data.py create mode 100644 intelliaide/vendor/jsonpickle-1.5.1.dist-info/INSTALLER create mode 100644 intelliaide/vendor/jsonpickle-1.5.1.dist-info/LICENSE create mode 100644 intelliaide/vendor/jsonpickle-1.5.1.dist-info/METADATA create mode 100644 intelliaide/vendor/jsonpickle-1.5.1.dist-info/RECORD create mode 100644 intelliaide/vendor/jsonpickle-1.5.1.dist-info/WHEEL create mode 100644 intelliaide/vendor/jsonpickle-1.5.1.dist-info/top_level.txt create mode 100644 intelliaide/vendor/jsonpickle/__init__.py create mode 100644 intelliaide/vendor/jsonpickle/backend.py create mode 100644 intelliaide/vendor/jsonpickle/compat.py create mode 100644 intelliaide/vendor/jsonpickle/ext/__init__.py create mode 100644 intelliaide/vendor/jsonpickle/ext/numpy.py create mode 100644 intelliaide/vendor/jsonpickle/ext/pandas.py create mode 100644 intelliaide/vendor/jsonpickle/handlers.py create mode 100644 intelliaide/vendor/jsonpickle/pickler.py create mode 100644 intelliaide/vendor/jsonpickle/tags.py create mode 100644 intelliaide/vendor/jsonpickle/unpickler.py create mode 100644 intelliaide/vendor/jsonpickle/util.py create mode 100644 intelliaide/vendor/jsonpickle/version.py create mode 100644 intelliaide/vendor/lxml-6.1.1.dist-info/INSTALLER create mode 100644 intelliaide/vendor/lxml-6.1.1.dist-info/METADATA create mode 100644 intelliaide/vendor/lxml-6.1.1.dist-info/RECORD create mode 100644 intelliaide/vendor/lxml-6.1.1.dist-info/WHEEL create mode 100644 intelliaide/vendor/lxml-6.1.1.dist-info/licenses/LICENSE.txt create mode 100644 intelliaide/vendor/lxml-6.1.1.dist-info/licenses/LICENSES.txt create mode 100644 intelliaide/vendor/lxml-6.1.1.dist-info/top_level.txt create mode 100644 intelliaide/vendor/lxml/ElementInclude.py create mode 100644 intelliaide/vendor/lxml/__init__.py create mode 100755 intelliaide/vendor/lxml/_elementpath.cpython-312-x86_64-linux-gnu.so create mode 100644 intelliaide/vendor/lxml/_elementpath.py create mode 100644 intelliaide/vendor/lxml/apihelpers.pxi create mode 100755 intelliaide/vendor/lxml/builder.cpython-312-x86_64-linux-gnu.so create mode 100644 intelliaide/vendor/lxml/builder.py create mode 100644 intelliaide/vendor/lxml/classlookup.pxi create mode 100644 intelliaide/vendor/lxml/cleanup.pxi create mode 100644 intelliaide/vendor/lxml/cssselect.py create mode 100644 intelliaide/vendor/lxml/debug.pxi create mode 100644 intelliaide/vendor/lxml/docloader.pxi create mode 100644 intelliaide/vendor/lxml/doctestcompare.py create mode 100644 intelliaide/vendor/lxml/dtd.pxi create mode 100755 intelliaide/vendor/lxml/etree.cpython-312-x86_64-linux-gnu.so create mode 100644 intelliaide/vendor/lxml/etree.h create mode 100644 intelliaide/vendor/lxml/etree.pyx create mode 100644 intelliaide/vendor/lxml/etree_api.h create mode 100644 intelliaide/vendor/lxml/extensions.pxi create mode 100644 intelliaide/vendor/lxml/html/ElementSoup.py create mode 100644 intelliaide/vendor/lxml/html/__init__.py create mode 100644 intelliaide/vendor/lxml/html/_diffcommand.py create mode 100755 intelliaide/vendor/lxml/html/_difflib.cpython-312-x86_64-linux-gnu.so create mode 100644 intelliaide/vendor/lxml/html/_difflib.py create mode 100644 intelliaide/vendor/lxml/html/_html5builder.py create mode 100644 intelliaide/vendor/lxml/html/_setmixin.py create mode 100644 intelliaide/vendor/lxml/html/builder.py create mode 100644 intelliaide/vendor/lxml/html/clean.py create mode 100644 intelliaide/vendor/lxml/html/defs.py create mode 100755 intelliaide/vendor/lxml/html/diff.cpython-312-x86_64-linux-gnu.so create mode 100644 intelliaide/vendor/lxml/html/diff.py create mode 100644 intelliaide/vendor/lxml/html/formfill.py create mode 100644 intelliaide/vendor/lxml/html/html5parser.py create mode 100644 intelliaide/vendor/lxml/html/soupparser.py create mode 100644 intelliaide/vendor/lxml/html/usedoctest.py create mode 100644 intelliaide/vendor/lxml/includes/__init__.pxd create mode 100644 intelliaide/vendor/lxml/includes/__init__.py create mode 100644 intelliaide/vendor/lxml/includes/c14n.pxd create mode 100644 intelliaide/vendor/lxml/includes/config.pxd create mode 100644 intelliaide/vendor/lxml/includes/dtdvalid.pxd create mode 100644 intelliaide/vendor/lxml/includes/etree_defs.h create mode 100644 intelliaide/vendor/lxml/includes/etreepublic.pxd create mode 100644 intelliaide/vendor/lxml/includes/extlibs/__init__.py create mode 100644 intelliaide/vendor/lxml/includes/extlibs/libcharset.h create mode 100644 intelliaide/vendor/lxml/includes/extlibs/localcharset.h create mode 100644 intelliaide/vendor/lxml/includes/extlibs/zconf.h create mode 100644 intelliaide/vendor/lxml/includes/extlibs/zlib.h create mode 100644 intelliaide/vendor/lxml/includes/htmlparser.pxd create mode 100644 intelliaide/vendor/lxml/includes/libexslt/__init__.py create mode 100644 intelliaide/vendor/lxml/includes/libexslt/exslt.h create mode 100644 intelliaide/vendor/lxml/includes/libexslt/exsltconfig.h create mode 100644 intelliaide/vendor/lxml/includes/libexslt/exsltexports.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/HTMLparser.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/HTMLtree.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/SAX.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/SAX2.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/__init__.py create mode 100644 intelliaide/vendor/lxml/includes/libxml/c14n.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/catalog.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/chvalid.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/debugXML.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/dict.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/encoding.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/entities.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/globals.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/hash.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/list.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/nanoftp.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/nanohttp.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/parser.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/parserInternals.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/relaxng.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/schemasInternals.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/schematron.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/threads.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/tree.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/uri.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/valid.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xinclude.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xlink.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xmlIO.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xmlautomata.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xmlerror.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xmlexports.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xmlmemory.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xmlmodule.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xmlreader.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xmlregexp.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xmlsave.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xmlschemas.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xmlschemastypes.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xmlstring.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xmlunicode.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xmlversion.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xmlwriter.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xpath.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xpathInternals.h create mode 100644 intelliaide/vendor/lxml/includes/libxml/xpointer.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/__init__.py create mode 100644 intelliaide/vendor/lxml/includes/libxslt/attributes.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/documents.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/extensions.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/extra.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/functions.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/imports.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/keys.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/namespaces.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/numbersInternals.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/pattern.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/preproc.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/security.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/templates.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/transform.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/variables.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/xslt.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/xsltInternals.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/xsltconfig.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/xsltexports.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/xsltlocale.h create mode 100644 intelliaide/vendor/lxml/includes/libxslt/xsltutils.h create mode 100644 intelliaide/vendor/lxml/includes/lxml-version.h create mode 100644 intelliaide/vendor/lxml/includes/relaxng.pxd create mode 100644 intelliaide/vendor/lxml/includes/schematron.pxd create mode 100644 intelliaide/vendor/lxml/includes/tree.pxd create mode 100644 intelliaide/vendor/lxml/includes/uri.pxd create mode 100644 intelliaide/vendor/lxml/includes/xinclude.pxd create mode 100644 intelliaide/vendor/lxml/includes/xmlerror.pxd create mode 100644 intelliaide/vendor/lxml/includes/xmlparser.pxd create mode 100644 intelliaide/vendor/lxml/includes/xmlschema.pxd create mode 100644 intelliaide/vendor/lxml/includes/xpath.pxd create mode 100644 intelliaide/vendor/lxml/includes/xslt.pxd create mode 100644 intelliaide/vendor/lxml/isoschematron/__init__.py create mode 100644 intelliaide/vendor/lxml/isoschematron/resources/rng/iso-schematron.rng create mode 100644 intelliaide/vendor/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl create mode 100644 intelliaide/vendor/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl create mode 100644 intelliaide/vendor/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl create mode 100644 intelliaide/vendor/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl create mode 100644 intelliaide/vendor/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl create mode 100644 intelliaide/vendor/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl create mode 100644 intelliaide/vendor/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl create mode 100644 intelliaide/vendor/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt create mode 100644 intelliaide/vendor/lxml/iterparse.pxi create mode 100644 intelliaide/vendor/lxml/lxml.etree.h create mode 100644 intelliaide/vendor/lxml/lxml.etree_api.h create mode 100644 intelliaide/vendor/lxml/nsclasses.pxi create mode 100755 intelliaide/vendor/lxml/objectify.cpython-312-x86_64-linux-gnu.so create mode 100644 intelliaide/vendor/lxml/objectify.pyx create mode 100644 intelliaide/vendor/lxml/objectpath.pxi create mode 100644 intelliaide/vendor/lxml/parser.pxi create mode 100644 intelliaide/vendor/lxml/parsertarget.pxi create mode 100644 intelliaide/vendor/lxml/proxy.pxi create mode 100644 intelliaide/vendor/lxml/public-api.pxi create mode 100644 intelliaide/vendor/lxml/pyclasslookup.py create mode 100644 intelliaide/vendor/lxml/readonlytree.pxi create mode 100644 intelliaide/vendor/lxml/relaxng.pxi create mode 100755 intelliaide/vendor/lxml/sax.cpython-312-x86_64-linux-gnu.so create mode 100644 intelliaide/vendor/lxml/sax.py create mode 100644 intelliaide/vendor/lxml/saxparser.pxi create mode 100644 intelliaide/vendor/lxml/schematron.pxi create mode 100644 intelliaide/vendor/lxml/serializer.pxi create mode 100644 intelliaide/vendor/lxml/usedoctest.py create mode 100644 intelliaide/vendor/lxml/xinclude.pxi create mode 100644 intelliaide/vendor/lxml/xmlerror.pxi create mode 100644 intelliaide/vendor/lxml/xmlid.pxi create mode 100644 intelliaide/vendor/lxml/xmlschema.pxi create mode 100644 intelliaide/vendor/lxml/xpath.pxi create mode 100644 intelliaide/vendor/lxml/xslt.pxi create mode 100644 intelliaide/vendor/lxml/xsltext.pxi create mode 100644 intelliaide/vendor/odf/__init__.py create mode 100644 intelliaide/vendor/odf/anim.py create mode 100644 intelliaide/vendor/odf/attrconverters.py create mode 100644 intelliaide/vendor/odf/chart.py create mode 100644 intelliaide/vendor/odf/config.py create mode 100644 intelliaide/vendor/odf/dc.py create mode 100644 intelliaide/vendor/odf/dr3d.py create mode 100644 intelliaide/vendor/odf/draw.py create mode 100644 intelliaide/vendor/odf/easyliststyle.py create mode 100644 intelliaide/vendor/odf/element.py create mode 100644 intelliaide/vendor/odf/elementtypes.py create mode 100644 intelliaide/vendor/odf/form.py create mode 100644 intelliaide/vendor/odf/grammar.py create mode 100644 intelliaide/vendor/odf/load.py create mode 100644 intelliaide/vendor/odf/manifest.py create mode 100644 intelliaide/vendor/odf/math.py create mode 100644 intelliaide/vendor/odf/meta.py create mode 100644 intelliaide/vendor/odf/namespaces.py create mode 100644 intelliaide/vendor/odf/number.py create mode 100644 intelliaide/vendor/odf/odf2moinmoin.py create mode 100644 intelliaide/vendor/odf/odf2xhtml.py create mode 100644 intelliaide/vendor/odf/odfmanifest.py create mode 100644 intelliaide/vendor/odf/office.py create mode 100644 intelliaide/vendor/odf/opendocument.py create mode 100644 intelliaide/vendor/odf/presentation.py create mode 100644 intelliaide/vendor/odf/script.py create mode 100644 intelliaide/vendor/odf/style.py create mode 100644 intelliaide/vendor/odf/svg.py create mode 100644 intelliaide/vendor/odf/table.py create mode 100644 intelliaide/vendor/odf/teletype.py create mode 100644 intelliaide/vendor/odf/text.py create mode 100644 intelliaide/vendor/odf/thumbnail.py create mode 100644 intelliaide/vendor/odf/userfield.py create mode 100644 intelliaide/vendor/odf/xforms.py create mode 100644 intelliaide/vendor/odfpy-1.4.1.dist-info/INSTALLER create mode 100644 intelliaide/vendor/odfpy-1.4.1.dist-info/METADATA create mode 100644 intelliaide/vendor/odfpy-1.4.1.dist-info/RECORD create mode 100644 intelliaide/vendor/odfpy-1.4.1.dist-info/REQUESTED create mode 100644 intelliaide/vendor/odfpy-1.4.1.dist-info/WHEEL create mode 100644 intelliaide/vendor/odfpy-1.4.1.dist-info/top_level.txt create mode 100644 intelliaide/vendor/pyasn1-0.6.3.dist-info/INSTALLER create mode 100644 intelliaide/vendor/pyasn1-0.6.3.dist-info/METADATA create mode 100644 intelliaide/vendor/pyasn1-0.6.3.dist-info/RECORD create mode 100644 intelliaide/vendor/pyasn1-0.6.3.dist-info/WHEEL create mode 100644 intelliaide/vendor/pyasn1-0.6.3.dist-info/licenses/LICENSE.rst create mode 100644 intelliaide/vendor/pyasn1-0.6.3.dist-info/top_level.txt create mode 100644 intelliaide/vendor/pyasn1-0.6.3.dist-info/zip-safe create mode 100644 intelliaide/vendor/pyasn1/__init__.py create mode 100644 intelliaide/vendor/pyasn1/codec/__init__.py create mode 100644 intelliaide/vendor/pyasn1/codec/ber/__init__.py create mode 100644 intelliaide/vendor/pyasn1/codec/ber/decoder.py create mode 100644 intelliaide/vendor/pyasn1/codec/ber/encoder.py create mode 100644 intelliaide/vendor/pyasn1/codec/ber/eoo.py create mode 100644 intelliaide/vendor/pyasn1/codec/cer/__init__.py create mode 100644 intelliaide/vendor/pyasn1/codec/cer/decoder.py create mode 100644 intelliaide/vendor/pyasn1/codec/cer/encoder.py create mode 100644 intelliaide/vendor/pyasn1/codec/der/__init__.py create mode 100644 intelliaide/vendor/pyasn1/codec/der/decoder.py create mode 100644 intelliaide/vendor/pyasn1/codec/der/encoder.py create mode 100644 intelliaide/vendor/pyasn1/codec/native/__init__.py create mode 100644 intelliaide/vendor/pyasn1/codec/native/decoder.py create mode 100644 intelliaide/vendor/pyasn1/codec/native/encoder.py create mode 100644 intelliaide/vendor/pyasn1/codec/streaming.py create mode 100644 intelliaide/vendor/pyasn1/compat/__init__.py create mode 100644 intelliaide/vendor/pyasn1/compat/integer.py create mode 100644 intelliaide/vendor/pyasn1/debug.py create mode 100644 intelliaide/vendor/pyasn1/error.py create mode 100644 intelliaide/vendor/pyasn1/type/__init__.py create mode 100644 intelliaide/vendor/pyasn1/type/base.py create mode 100644 intelliaide/vendor/pyasn1/type/char.py create mode 100644 intelliaide/vendor/pyasn1/type/constraint.py create mode 100644 intelliaide/vendor/pyasn1/type/error.py create mode 100644 intelliaide/vendor/pyasn1/type/namedtype.py create mode 100644 intelliaide/vendor/pyasn1/type/namedval.py create mode 100644 intelliaide/vendor/pyasn1/type/opentype.py create mode 100644 intelliaide/vendor/pyasn1/type/tag.py create mode 100644 intelliaide/vendor/pyasn1/type/tagmap.py create mode 100644 intelliaide/vendor/pyasn1/type/univ.py create mode 100644 intelliaide/vendor/pyasn1/type/useful.py create mode 100644 intelliaide/vendor/pyasn1_modules-0.4.2.dist-info/INSTALLER create mode 100644 intelliaide/vendor/pyasn1_modules-0.4.2.dist-info/METADATA create mode 100644 intelliaide/vendor/pyasn1_modules-0.4.2.dist-info/RECORD create mode 100644 intelliaide/vendor/pyasn1_modules-0.4.2.dist-info/WHEEL create mode 100644 intelliaide/vendor/pyasn1_modules-0.4.2.dist-info/licenses/LICENSE.txt create mode 100644 intelliaide/vendor/pyasn1_modules-0.4.2.dist-info/top_level.txt create mode 100644 intelliaide/vendor/pyasn1_modules-0.4.2.dist-info/zip-safe create mode 100644 intelliaide/vendor/pyasn1_modules/__init__.py create mode 100644 intelliaide/vendor/pyasn1_modules/pem.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc1155.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc1157.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc1901.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc1902.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc1905.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc2251.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc2314.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc2315.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc2437.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc2459.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc2511.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc2560.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc2631.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc2634.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc2876.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc2985.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc2986.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3058.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3114.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3125.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3161.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3274.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3279.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3280.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3281.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3370.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3412.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3414.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3447.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3537.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3560.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3565.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3657.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3709.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3739.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3770.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3779.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3820.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc3852.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc4010.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc4043.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc4055.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc4073.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc4108.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc4210.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc4211.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc4334.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc4357.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc4387.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc4476.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc4490.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc4491.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc4683.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc4985.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5035.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5083.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5084.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5126.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5208.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5275.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5280.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5480.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5636.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5639.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5649.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5652.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5697.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5751.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5752.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5753.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5755.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5913.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5914.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5915.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5916.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5917.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5924.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5934.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5940.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5958.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc5990.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc6010.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc6019.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc6031.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc6032.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc6120.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc6170.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc6187.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc6210.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc6211.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc6402.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc6482.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc6486.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc6487.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc6664.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc6955.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc6960.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc7030.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc7191.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc7229.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc7292.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc7296.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc7508.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc7585.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc7633.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc7773.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc7894.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc7906.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc7914.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8017.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8018.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8103.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8209.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8226.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8358.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8360.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8398.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8410.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8418.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8419.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8479.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8494.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8520.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8619.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8649.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8692.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8696.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8702.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8708.py create mode 100644 intelliaide/vendor/pyasn1_modules/rfc8769.py create mode 100644 intelliaide/vendor/pycparser-3.0.dist-info/INSTALLER create mode 100644 intelliaide/vendor/pycparser-3.0.dist-info/METADATA create mode 100644 intelliaide/vendor/pycparser-3.0.dist-info/RECORD create mode 100644 intelliaide/vendor/pycparser-3.0.dist-info/WHEEL create mode 100644 intelliaide/vendor/pycparser-3.0.dist-info/licenses/LICENSE create mode 100644 intelliaide/vendor/pycparser-3.0.dist-info/top_level.txt create mode 100644 intelliaide/vendor/pycparser/__init__.py create mode 100644 intelliaide/vendor/pycparser/_ast_gen.py create mode 100644 intelliaide/vendor/pycparser/_c_ast.cfg create mode 100644 intelliaide/vendor/pycparser/ast_transforms.py create mode 100644 intelliaide/vendor/pycparser/c_ast.py create mode 100644 intelliaide/vendor/pycparser/c_generator.py create mode 100644 intelliaide/vendor/pycparser/c_lexer.py create mode 100644 intelliaide/vendor/pycparser/c_parser.py create mode 100644 intelliaide/vendor/python_docx-1.2.0.dist-info/INSTALLER create mode 100644 intelliaide/vendor/python_docx-1.2.0.dist-info/METADATA create mode 100644 intelliaide/vendor/python_docx-1.2.0.dist-info/RECORD create mode 100644 intelliaide/vendor/python_docx-1.2.0.dist-info/REQUESTED create mode 100644 intelliaide/vendor/python_docx-1.2.0.dist-info/WHEEL create mode 100644 intelliaide/vendor/python_docx-1.2.0.dist-info/licenses/LICENSE create mode 100644 intelliaide/vendor/python_docx-1.2.0.dist-info/top_level.txt create mode 100644 intelliaide/vendor/pyyaml-6.0.3.dist-info/INSTALLER create mode 100644 intelliaide/vendor/pyyaml-6.0.3.dist-info/METADATA create mode 100644 intelliaide/vendor/pyyaml-6.0.3.dist-info/RECORD create mode 100644 intelliaide/vendor/pyyaml-6.0.3.dist-info/REQUESTED create mode 100644 intelliaide/vendor/pyyaml-6.0.3.dist-info/WHEEL create mode 100644 intelliaide/vendor/pyyaml-6.0.3.dist-info/licenses/LICENSE create mode 100644 intelliaide/vendor/pyyaml-6.0.3.dist-info/top_level.txt create mode 100644 intelliaide/vendor/requests-2.34.2.dist-info/INSTALLER create mode 100644 intelliaide/vendor/requests-2.34.2.dist-info/METADATA create mode 100644 intelliaide/vendor/requests-2.34.2.dist-info/RECORD create mode 100644 intelliaide/vendor/requests-2.34.2.dist-info/REQUESTED create mode 100644 intelliaide/vendor/requests-2.34.2.dist-info/WHEEL create mode 100644 intelliaide/vendor/requests-2.34.2.dist-info/licenses/LICENSE create mode 100644 intelliaide/vendor/requests-2.34.2.dist-info/licenses/NOTICE create mode 100644 intelliaide/vendor/requests-2.34.2.dist-info/top_level.txt create mode 100644 intelliaide/vendor/requests/__init__.py create mode 100644 intelliaide/vendor/requests/__version__.py create mode 100644 intelliaide/vendor/requests/_internal_utils.py create mode 100644 intelliaide/vendor/requests/_types.py create mode 100644 intelliaide/vendor/requests/adapters.py create mode 100644 intelliaide/vendor/requests/api.py create mode 100644 intelliaide/vendor/requests/auth.py create mode 100644 intelliaide/vendor/requests/certs.py create mode 100644 intelliaide/vendor/requests/compat.py create mode 100644 intelliaide/vendor/requests/cookies.py create mode 100644 intelliaide/vendor/requests/exceptions.py create mode 100644 intelliaide/vendor/requests/help.py create mode 100644 intelliaide/vendor/requests/hooks.py create mode 100644 intelliaide/vendor/requests/models.py create mode 100644 intelliaide/vendor/requests/packages.py create mode 100644 intelliaide/vendor/requests/py.typed create mode 100644 intelliaide/vendor/requests/sessions.py create mode 100644 intelliaide/vendor/requests/status_codes.py create mode 100644 intelliaide/vendor/requests/structures.py create mode 100644 intelliaide/vendor/requests/utils.py create mode 100644 intelliaide/vendor/share/man/man1/csv2ods.1 create mode 100644 intelliaide/vendor/share/man/man1/mailodf.1 create mode 100644 intelliaide/vendor/share/man/man1/odf2mht.1 create mode 100644 intelliaide/vendor/share/man/man1/odf2xhtml.1 create mode 100644 intelliaide/vendor/share/man/man1/odf2xml.1 create mode 100644 intelliaide/vendor/share/man/man1/odfimgimport.1 create mode 100644 intelliaide/vendor/share/man/man1/odflint.1 create mode 100644 intelliaide/vendor/share/man/man1/odfmeta.1 create mode 100644 intelliaide/vendor/share/man/man1/odfoutline.1 create mode 100644 intelliaide/vendor/share/man/man1/odfuserfield.1 create mode 100644 intelliaide/vendor/share/man/man1/xml2odf.1 create mode 100644 intelliaide/vendor/typing_extensions-4.15.0.dist-info/INSTALLER create mode 100644 intelliaide/vendor/typing_extensions-4.15.0.dist-info/METADATA create mode 100644 intelliaide/vendor/typing_extensions-4.15.0.dist-info/RECORD create mode 100644 intelliaide/vendor/typing_extensions-4.15.0.dist-info/WHEEL create mode 100644 intelliaide/vendor/typing_extensions-4.15.0.dist-info/licenses/LICENSE create mode 100644 intelliaide/vendor/typing_extensions.py create mode 100644 intelliaide/vendor/urllib3-2.7.0.dist-info/INSTALLER create mode 100644 intelliaide/vendor/urllib3-2.7.0.dist-info/METADATA create mode 100644 intelliaide/vendor/urllib3-2.7.0.dist-info/RECORD create mode 100644 intelliaide/vendor/urllib3-2.7.0.dist-info/WHEEL create mode 100644 intelliaide/vendor/urllib3-2.7.0.dist-info/licenses/LICENSE.txt create mode 100644 intelliaide/vendor/urllib3/__init__.py create mode 100644 intelliaide/vendor/urllib3/_base_connection.py create mode 100644 intelliaide/vendor/urllib3/_collections.py create mode 100644 intelliaide/vendor/urllib3/_request_methods.py create mode 100644 intelliaide/vendor/urllib3/_version.py create mode 100644 intelliaide/vendor/urllib3/connection.py create mode 100644 intelliaide/vendor/urllib3/connectionpool.py create mode 100644 intelliaide/vendor/urllib3/contrib/__init__.py create mode 100644 intelliaide/vendor/urllib3/contrib/emscripten/__init__.py create mode 100644 intelliaide/vendor/urllib3/contrib/emscripten/connection.py create mode 100644 intelliaide/vendor/urllib3/contrib/emscripten/emscripten_fetch_worker.js create mode 100644 intelliaide/vendor/urllib3/contrib/emscripten/fetch.py create mode 100644 intelliaide/vendor/urllib3/contrib/emscripten/request.py create mode 100644 intelliaide/vendor/urllib3/contrib/emscripten/response.py create mode 100644 intelliaide/vendor/urllib3/contrib/pyopenssl.py create mode 100644 intelliaide/vendor/urllib3/contrib/socks.py create mode 100644 intelliaide/vendor/urllib3/exceptions.py create mode 100644 intelliaide/vendor/urllib3/fields.py create mode 100644 intelliaide/vendor/urllib3/filepost.py create mode 100644 intelliaide/vendor/urllib3/http2/__init__.py create mode 100644 intelliaide/vendor/urllib3/http2/connection.py create mode 100644 intelliaide/vendor/urllib3/http2/probe.py create mode 100644 intelliaide/vendor/urllib3/poolmanager.py create mode 100644 intelliaide/vendor/urllib3/py.typed create mode 100644 intelliaide/vendor/urllib3/response.py create mode 100644 intelliaide/vendor/urllib3/util/__init__.py create mode 100644 intelliaide/vendor/urllib3/util/connection.py create mode 100644 intelliaide/vendor/urllib3/util/proxy.py create mode 100644 intelliaide/vendor/urllib3/util/request.py create mode 100644 intelliaide/vendor/urllib3/util/response.py create mode 100644 intelliaide/vendor/urllib3/util/retry.py create mode 100644 intelliaide/vendor/urllib3/util/ssl_.py create mode 100644 intelliaide/vendor/urllib3/util/ssl_match_hostname.py create mode 100644 intelliaide/vendor/urllib3/util/ssltransport.py create mode 100644 intelliaide/vendor/urllib3/util/timeout.py create mode 100644 intelliaide/vendor/urllib3/util/url.py create mode 100644 intelliaide/vendor/urllib3/util/util.py create mode 100644 intelliaide/vendor/urllib3/util/wait.py create mode 100644 intelliaide/vendor/yaml/__init__.py create mode 100755 intelliaide/vendor/yaml/_yaml.cpython-312-x86_64-linux-gnu.so create mode 100644 intelliaide/vendor/yaml/composer.py create mode 100644 intelliaide/vendor/yaml/constructor.py create mode 100644 intelliaide/vendor/yaml/cyaml.py create mode 100644 intelliaide/vendor/yaml/dumper.py create mode 100644 intelliaide/vendor/yaml/emitter.py create mode 100644 intelliaide/vendor/yaml/error.py create mode 100644 intelliaide/vendor/yaml/events.py create mode 100644 intelliaide/vendor/yaml/loader.py create mode 100644 intelliaide/vendor/yaml/nodes.py create mode 100644 intelliaide/vendor/yaml/parser.py create mode 100644 intelliaide/vendor/yaml/reader.py create mode 100644 intelliaide/vendor/yaml/representer.py create mode 100644 intelliaide/vendor/yaml/resolver.py create mode 100644 intelliaide/vendor/yaml/scanner.py create mode 100644 intelliaide/vendor/yaml/serializer.py create mode 100644 intelliaide/vendor/yaml/tokens.py diff --git a/intelliaide/Config/config.json.template b/intelliaide/Config/config.json.template new file mode 100644 index 0000000..7dec4a7 --- /dev/null +++ b/intelliaide/Config/config.json.template @@ -0,0 +1,24 @@ +{ + "always_include_kubelet_files": false, + "must_gather_docs_dir": "DataSource", + "must_gather_base_dir": "", + "must_gather_incoming_dir": "/tmp/must-gather-incoming", + "must_gather_wait_seconds": 120, + "claude": { + "max_chunk_tokens": 80000 + }, + "agent": { + "max_iterations": 25, + "max_deepening_rounds": 3 + }, + "notes": { + "always_include_kubelet_files": "Set to true to always add kubelet_service.* and kubelet_journal.* to analysis/RCA; false to use only LLM-suggested files", + "must_gather_docs_dir": "Path to must-gather documentation directory (MUST_GATHER_*.md files). Relative paths are resolved from the project root. Default: DataSource", + "must_gather_base_dir": "Path to the must-gather root folder (namespaces/, cluster-scoped-resources/, etc.). Can be absolute or relative to project root. Overridden by the API request value when provided.", + "must_gather_incoming_dir": "Directory where oc cp deposits the must-gather data. Copy with: oc cp :. Default: /tmp/must-gather-incoming", + "must_gather_wait_seconds": "Fixed sleep in seconds before reading must-gather data. Must be long enough for oc cp to complete. Default: 120", + "max_chunk_tokens": "RCA chunking budget for large must-gathers (default 80000). Increase if the orchestrating LLM supports a larger context window.", + "max_iterations": "Maximum tool-call iterations for the ReAct agent loop (default: 25)", + "max_deepening_rounds": "Maximum deepening rounds HIGH -> MEDIUM -> LOW (default: 3)" + } +} diff --git a/intelliaide/Config/json_config.json b/intelliaide/Config/json_config.json new file mode 100644 index 0000000..a568389 --- /dev/null +++ b/intelliaide/Config/json_config.json @@ -0,0 +1,39 @@ +{ + "error_detection": { + "error_array_indicators": { + "dropped": "failed_connection", + "failed": "failure", + "error": "error", + "unhealthy": "health_issue", + "down": "unavailable", + "unreachable": "connectivity", + "degraded": "degradation", + "invalid": "validation", + "timeout": "timeout", + "rejected": "rejection", + "stale": "outdated" + }, + "error_state_values": [ + "firing", + "down", + "failed", + "error", + "unhealthy", + "degraded", + "unavailable", + "unreachable", + "critical" + ], + "state_field_names": [ + "state", + "status", + "health", + "condition" + ], + "exclude_patterns": [ + "watchdog", + "test", + "canary" + ] + } + } \ No newline at end of file diff --git a/intelliaide/Config/log_config.json b/intelliaide/Config/log_config.json new file mode 100644 index 0000000..fbed090 --- /dev/null +++ b/intelliaide/Config/log_config.json @@ -0,0 +1,50 @@ +{ + "pipeline": { + "use_chunk_pipeline": null, + "file_size_threshold_mb": 50.0 + }, + "chunk_settings": { + "chunk_size": 10000, + "parallel_chunks": true, + "chunk_workers": null, + "min_chunks_for_parallel": 3 + }, + "drain3_settings": { + "batch_size": 1000, + "similarity_threshold": 0.3, + "depth": 4, + "max_children": 100 + }, + "output": { + "output_dir": null, + "levels_to_process": ["E", "W", "I", "UNKNOWN"] + }, + "output_flags": { + "include_rare_errors": true, + "include_highfreq_errors": true, + "include_warnings": true, + "include_information": true, + "include_unknown": true, + "include_config_changes": true + }, + "frequency_settings": { + "high_freq_cumulative_threshold": 0.80, + "enable_tiered_error_output": true, + "rare_absolute_max_size": null, + "rare_max_lines_per_template": 15 + }, + "preprocessing": { + "remove_timestamps": true, + "timestamp_patterns": [ + "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z?\\s*", + "^\\d{4}-\\d{2}-\\d{2}\\s+\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?\\s*", + "^([IWE])\\d{4}\\s+\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?\\s*", + "^(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s+\\d{1,2}\\s+\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?\\s+\\S+\\s+", + "\\b\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?\\b" + ] + }, + "logging": { + "verbose": true, + "print_progress": true + } +} diff --git a/intelliaide/Config/yaml_processing.yaml b/intelliaide/Config/yaml_processing.yaml new file mode 100644 index 0000000..f633316 --- /dev/null +++ b/intelliaide/Config/yaml_processing.yaml @@ -0,0 +1,176 @@ +# config/yaml_processing.yaml + + +# CHUNKING CONFIGURATION + +chunking: + # Indentation settings + max_items_section_indent: 2 # Max indent to recognize 'items:' as list container + list_item_indent_offset: 2 # Expected indent after 'items:' + indent_tolerance: 2 # Tolerance when matching list item indents + top_level_indent: 0 # Indent that marks top-level keys + + # What triggers a new chunk + chunk_separators: + - "---" # YAML document separator + + # Keys that indicate list container (case-insensitive) + list_container_keys: + - "items" + - "objects" # Some CRDs use 'objects' + + +# CRITICAL FIELDS CONFIGURATION + +critical_fields: + # Default fields to extract when no specific config exists + default_paths: + - "metadata.name" + - "metadata.namespace" + - "status.conditions" + - "status.phase" + + # File-specific configurations + file_specific: + # Cluster operators + clusteroperators.yaml: + paths: + - "metadata.name" + - "status.conditions" + - "status.versions" + + # Cluster versions + clusterversions.yaml: + paths: + - "metadata.name" + - "status.history" + - "status.conditions" + - "status.desired.version" + + # Networking files + networks.yaml: + paths: + - "metadata.name" + - "spec.clusterNetwork" + - "spec.serviceNetwork" + - "spec.networkType" + - "status.conditions" + - "status.clusterNetworkMTU" + + ingresses.yaml: + paths: + - "metadata.name" + - "spec.domain" + - "spec.loadBalancer" + - "status.componentRoutes[].conditions" + - "status.defaultPlacement" + + events.yaml: + paths: + - "metadata.namespace" + - "type" + - "reason" + - "message" + - "count" + - "involvedObject.kind" + - "involvedObject.name" + + +# ERROR PATTERN DETECTION CONFIGURATION + +error_patterns: + # Verbose error patterns for rare anomaly detection + verbose_patterns: + - "not progressing" + - "not available" + - "not ready" + - "not healthy" + - "halted" + - "stopped" + - "paused" + - "suspended" + - "blocked" + - "broken" + - "degraded" + - "unhealthy" + - "unavailable" + - "down" + - "timeout" + - "timed out" + - "expired" + - "unable to reach" + - "cannot connect" + - "connection refused" + - "connection failed" + - "out of memory" + - "out of disk" + - "resource exhausted" + - "quota exceeded" + - "missing" + - "not found" + - "not exist" + - "does not exist" + - "denied" + - "forbidden" + - "unauthorized" + - "access denied" + - "permission denied" + - "rejected" + - "not allowed" + - "stuck" + - "hung" + - "deadlock" + - "waiting" + - "pending too long" + - "retry failed" + - "retries exhausted" + - "max retries" + + # Explicit error keywords (high priority) + explicit_keywords: + - "error" + - "failed" + - "failure" + - "exception" + - "critical" + - "fatal" + + # Field names to exclude from error detection (metadata/config, not errors) + excluded_key_patterns: + - "failure-domain" # Topology labels (AWS region/zone) + - "topology.kubernetes.io" # Kubernetes topology labels + - "node.kubernetes.io" # Node labels/annotations + - "failurepolicy" # Webhook failure policy config + +# CLASSIFICATION THRESHOLDS + +classification: + # Percentage of objects needed to be considered "common" (Majority Error) + # Objects with error patterns below this are "Error" (rare anomaly) + common_pattern_threshold: 0.30 # 30% of objects + + # Percentage needed to be considered "Majority" (normal/healthy) + majority_threshold: 0.10 # 10% frequency + + # Low frequency threshold for "Error" classification + error_threshold: 0.05 # 5% frequency + +# OUTPUT CONTROL FLAGS + +output_flags: + # Which classification categories to include in aggregated output JSON + include_errors: true # Rare pattern errors + include_majority_errors: true # High frequency errors + include_config_changes: true # Configuration changes + include_normal_reports: false # Normal/healthy objects + + # Optional: Limit instances per pattern (0 = unlimited, return all) + max_instances_per_pattern: 0 # For future use with large clusters + + # Summary information + include_summary: true # Add summary counts per file + +# Base directory configuration +base_directory: + # Path to must-gather root (leave empty to use current directory) + must_gather_path: "" # Empty = use current working directory diff --git a/intelliaide/DataSource/MUST_GATHER_DOCUMENTATION_README.md b/intelliaide/DataSource/MUST_GATHER_DOCUMENTATION_README.md new file mode 100644 index 0000000..5eca6a7 --- /dev/null +++ b/intelliaide/DataSource/MUST_GATHER_DOCUMENTATION_README.md @@ -0,0 +1,113 @@ +--- +# Must-Gather Documentation Suite + +This documentation suite provides comprehensive information about the OpenShift must-gather tool's output structure and how to use it for problem diagnosis. This guide ensures consistent LLM routing and reduces variance in file path recommendations across different models. + +## Documentation Files + +### 1. **MUST_GATHER_STRUCTURE.md** +**Purpose**: Detailed description of the directory structure and file purposes + +**Contents**: +- Complete directory tree with descriptions +- File formats and contents +- Collection process overview +- Resource types collected + +**Use When**: You need to understand what data is collected and where it's stored + +--- + +### 2. **MUST_GATHER_ROUTING_GUIDE.md** +**Purpose**: Problem-based routing guide for LLM-assisted diagnosis + +**Contents**: +- 15 problem categories with detailed mappings +- Keywords for each problem type +- Primary directories and files for each category +- Related resources cross-references +- Routing decision tree +- Quick reference table + +**Use When**: You have a problem statement and need to identify relevant files + +**Problem Categories Covered**: +1. API Server & Authentication Issues +2. Cluster Operator & Control Plane Issues +3. Networking & Connectivity Issues +4. Storage & Volume Issues +5. Node & Machine Configuration Issues +6. Pod & Container Issues +7. Performance & Resource Issues +8. Security & Audit Issues +9. Service Mesh & Istio Issues +10. Monitoring & Metrics Issues +11. Windows Node Issues +12. Platform-Specific Issues (vSphere, ARO) +13. etcd Issues +14. Storage Version Migration Issues +15. IPsec & Network Security Issues + +--- + +### 3. **MUST_GATHER_INDEX.md** +**Purpose**: Quick reference index for fast keyword-based lookups + +**Contents**: +- Directory structure quick index +- Keyword to directory mapping +- File type patterns +- Common problem patterns +- Search strategy for LLMs + +**Use When**: You need quick lookups or keyword matching + +--- + +## Standardization Rules for LLM Outputs + +### Path Format Standards + +1. **Use actual on-disk file extensions**: `.log`, `.yaml`, `.json` for uncompressed files; `.log.gz`, `.gz`, or `.tar.gz` for compressed files +2. **Wildcard substitution rules**: + - `` for actual namespace names + - `` for actual pod names + - `` for actual node names + - `*` only when multiple files of same type exist +3. **Consistent path separators**: Always use forward slashes `/` +4. **Base path convention**: All paths relative to `//` + +### Mandatory File Inclusion Rules + +1. **For pod issues**: MUST include both `current.log` AND `previous.log` from container logs +2. **For operator issues**: MUST include both pod logs AND events from the operator namespace +3. **For etcd issues**: MUST include ALL files from `etcd_info/` directory +4. **For networking issues**: MUST include both pod logs AND network connectivity checks +5. **For API server issues**: MUST include both audit logs AND pod logs AND priority/fairness data + +### Cross-Component Dependencies + +When analyzing these components, ALWAYS include related components: + +- **etcd issues** → Include API server logs and cluster operator status +- **Networking issues** → Include container runtime logs and node service logs +- **Storage issues** → Include both CSI driver logs and pod mount logs +- **Performance issues** → Include both metrics data and node-level diagnostics +- **Operator issues** → Include both operator namespace and cluster operator status + +--- + +## Key Concepts + +### Directory Organization +- **Base Path**: All data under `//` +- **Namespace-based**: Most resources organized by namespace +- **Cluster-scoped**: Cluster-level resources in `cluster-scoped-resources/` +- **Feature-specific**: Some directories only exist if features enabled + +### File Types +- **Logs**: `.log` for most logs; some compressed as `.log.gz` or `.gz` +- **Status**: `.json` - Health, status, configuration state +- **Config**: `.yaml`, `.config` - Resource definitions +- **Metrics**: `.openmetrics` - Performance and resource metrics +- **Archives**: `.tar.gz` - Compressed archives diff --git a/intelliaide/DataSource/MUST_GATHER_INDEX.md b/intelliaide/DataSource/MUST_GATHER_INDEX.md new file mode 100644 index 0000000..7d200d3 --- /dev/null +++ b/intelliaide/DataSource/MUST_GATHER_INDEX.md @@ -0,0 +1,110 @@ +--- +# Must-Gather Directory and File Index + +Quick reference index for LLM routing. Use this for fast lookups of directories and files by problem keywords. + +## Directory Structure Quick Index + +User supplies **``** (e.g. `must-gather-Prashanth-Testcase-failure`). Under it there is **one folder ``** (any name, e.g. `quay-content`). Under that folder: + +``` +/ +└── / # one child, any name (e.g. quay-content) + ├── version # Must-gather version info + ├── event-filter.html # ★ All events in searchable web UI + │ + ├── ── CLUSTER-WIDE RESOURCES ── + ├── cluster-scoped-resources/ # All cluster-level objects + │ ├── config.openshift.io/ # ★ PRIMARY: Cluster configuration + │ │ ├── clusteroperators.yaml # ★ START HERE: Operator health + │ │ ├── clusterversions.yaml # Version, upgrade status, history + │ │ └── ... + │ └── core/ # Kubernetes core resources + │ └── nodes/ # ★ Per-node YAML (status, taints, labels) + │ + ├── ── NAMESPACE RESOURCES ── + ├── namespaces// # Per-namespace data + │ ├── core/events.yaml # ★ CRITICAL: All events + │ ├── pods///logs/ + │ │ ├── current.log # ★ Active container logs + │ │ └── previous.log # ★ Crashed container logs + │ └── ... + │ + ├── host_service_logs/ # ★ Systemd service logs + │ ├── masters/kubelet_service.log + │ ├── masters/crio_service.log + │ └── workers/... + │ + ├── etcd_info/ # Etcd cluster health + │ ├── endpoint_health.json + │ ├── member_list.json + │ ├── alarm_list.json + │ └── object_count.json + │ + ├── network_logs/ # Network-specific data + │ ├── leader_ovnnb_status + │ ├── leader_ovnsb_status + │ └── ipsec/ (conditional) + │ + └── pod_network_connectivity_check/ + └── podnetworkconnectivitychecks.yaml +``` + +--- + +## Decision Matrix: Problem Type → Primary Files + +### 1. Cluster Health / Operator Issues +1. `cluster-scoped-resources/config.openshift.io/clusteroperators.yaml` +2. `cluster-scoped-resources/config.openshift.io/clusterversions.yaml` +3. `namespaces/openshift-/core/events.yaml` +4. `namespaces/openshift-/pods/*///logs/current.log` + +### 2. Pod / Container Issues +1. `namespaces//core/events.yaml` +2. `namespaces//core/pods.yaml` +3. `namespaces//pods////logs/current.log` +4. `namespaces//pods////logs/previous.log` +5. `host_service_logs/masters|workers/crio_service.log` + +### 3. Node Issues +1. `cluster-scoped-resources/core/nodes/.yaml` +2. `nodes//dmesg` +3. `host_service_logs/masters|workers/kubelet_service.log` + +### 4. Networking Issues +1. `cluster-scoped-resources/config.openshift.io/networks.yaml` +2. `namespaces/openshift-ovn-kubernetes/pods/*/logs/current.log` +3. `pod_network_connectivity_check/podnetworkconnectivitychecks.yaml` +4. `network_logs/leader_ovnnb_status`, `leader_ovnsb_status` + +### 5. Storage Issues +1. `cluster-scoped-resources/storage.k8s.io/storageclasses.yaml` +2. `namespaces//core/persistentvolumeclaims.yaml` +3. `cluster-scoped-resources/storage.k8s.io/volumeattachments/` + +### 6. API Server Issues +1. `namespaces/openshift-kube-apiserver/pods/*/logs/current.log` +2. `etcd_info/endpoint_health.json` +3. `etcd_info/alarm_list.json` + +### 7. Etcd Issues +1. `etcd_info/endpoint_health.json` +2. `etcd_info/member_list.json` +3. `etcd_info/alarm_list.json` +4. `namespaces/openshift-etcd/pods/*/logs/current.log` + +### 8. Storage Version Migration +1. `namespaces/openshift-kube-storage-version-migrator/core/events.yaml` +2. `namespaces/openshift-kube-storage-version-migrator/pods/*/logs/current.log` +3. `cluster-scoped-resources/migration.k8s.io/storageversionmigrations.yaml` + +--- + +## Mandatory Inclusion Rules + +- **Always include both current.log AND previous.log** for pod logs +- **Always include both pod logs AND events** for namespace issues +- **etcd issues**: Always include API server logs too +- **API Server issues**: Always include etcd health +- **Network issues**: Always include connectivity checks diff --git a/intelliaide/DataSource/MUST_GATHER_ROUTING_GUIDE.md b/intelliaide/DataSource/MUST_GATHER_ROUTING_GUIDE.md new file mode 100644 index 0000000..9bf81c3 --- /dev/null +++ b/intelliaide/DataSource/MUST_GATHER_ROUTING_GUIDE.md @@ -0,0 +1,209 @@ +--- +# Must-Gather Routing Guide for LLM Problem Diagnosis + +This document provides a structured mapping of problem types to relevant directories and files in the must-gather output. + +**Path convention**: All paths are under `//` + +**Path substitution rules**: +- `` = actual namespace name (e.g. `openshift-etcd`) +- `` = actual pod name +- `` = actual node name +- `*` = wildcard for any matching file/directory name + +--- + +## 1. API Server & Authentication Issues + +**Keywords**: `api server`, `apiserver`, `authentication`, `authorization`, `oauth`, `kube-apiserver`, `401`, `403`, `throttling` + +### Primary Files (MANDATORY): +- `audit_logs/kube-apiserver/-audit.log` (Conditional) +- `namespaces/openshift-kube-apiserver/pods////logs/current.log` +- `namespaces/openshift-kube-apiserver/pods////logs/previous.log` +- `namespaces/openshift-kube-apiserver/core/events.yaml` +- `namespaces/openshift-kube-apiserver/pods//kube-apiserver/kube-apiserver/api_priority_and_fairness/queues` +- `static-pods/kube-apiserver/-startup.log.gz` (compressed) +- `static-pods/kube-apiserver/-termination.log.gz` (compressed) + +### Cross-Component Dependencies: +- `etcd_info/endpoint_health.json` +- `cluster-scoped-resources/config.openshift.io/apiservers.yaml` + +--- + +## 2. Cluster Operator & Control Plane Issues + +**Keywords**: `cluster operator`, `operator`, `degraded`, `progressing`, `cluster version`, `upgrade` + +### Primary Files (MANDATORY): +- `cluster-scoped-resources/config.openshift.io/clusteroperators.yaml` +- `cluster-scoped-resources/config.openshift.io/clusterversions.yaml` +- `namespaces/openshift-cluster-version/core/events.yaml` +- `namespaces/openshift-cluster-version/pods//logs/current.log` +- `namespaces/openshift-cluster-version/pods//logs/previous.log` +- `namespaces//pods//logs/current.log` +- `namespaces//pods//logs/previous.log` +- `namespaces//core/events.yaml` + +--- + +## 3. Networking & Connectivity Issues + +**Keywords**: `network`, `connectivity`, `dns`, `ovn`, `sdn`, `OVNKubernetesResourceRetryFailure`, `bz-networking` + +### Primary Files (MANDATORY): +- `pod_network_connectivity_check/podnetworkconnectivitychecks.yaml` +- `network_logs/cluster_scale` +- `cluster-scoped-resources/config.openshift.io/networks.yaml` +- `monitoring/alertmanager/` (for OVN alerts) +- `monitoring/prometheus/` (for OVN alerts) +- `network_logs/leader_ovnnb_status` +- `network_logs/leader_ovnsb_status` +- `network_logs/ovn_kubernetes_top_pods` +- `namespaces/openshift-ovn-kubernetes/pods//logs/current.log` +- `namespaces/openshift-ovn-kubernetes/pods//logs/previous.log` +- `namespaces/openshift-ovn-kubernetes/core/events.yaml` +- `host_service_logs/masters/NetworkManager_service.log` +- `host_service_logs/workers/NetworkManager_service.log` + +--- + +## 4. Storage & Volume Issues + +**Keywords**: `storage`, `volume`, `pvc`, `pv`, `csi`, `mount`, `attach` + +### Primary Files (MANDATORY): +- `cluster-scoped-resources/storage.k8s.io/storageclasses.yaml` +- `cluster-scoped-resources/storage.k8s.io/volumeattachments/.yaml` +- `namespaces//core/persistentvolumeclaims.yaml` +- `namespaces/openshift-cluster-csi-drivers/pods//logs/current.log` +- `namespaces/openshift-cluster-csi-drivers/pods//logs/previous.log` +- `cluster-scoped-resources/storage.k8s.io/csidrivers.yaml` +- `cluster-scoped-resources/storage.k8s.io/csinodes.yaml` + +--- + +## 5. Node & Machine Configuration Issues + +**Keywords**: `node`, `machine config`, `mco`, `not ready`, `kubelet` + +### Primary Files (MANDATORY): +- `cluster-scoped-resources/core/nodes/.yaml` +- `nodes//_logs_kubelet.gz` (compressed) +- `host_service_logs/masters/kubelet_service.log` +- `host_service_logs/workers/kubelet_service.log` +- `namespaces/openshift-machine-config-operator/pods//logs/current.log` +- `cluster-scoped-resources/machineconfiguration.openshift.io/machineconfigs.yaml` +- `cluster-scoped-resources/machineconfiguration.openshift.io/machineconfigpools.yaml` + +--- + +## 6. Pod & Container Issues + +**Keywords**: `pod`, `container`, `crash`, `restart`, `pending`, `image pull`, `OOMKilled` + +### Primary Files (MANDATORY): +- `namespaces//pods////logs/current.log` +- `namespaces//pods////logs/previous.log` +- `namespaces//core/events.yaml` +- `namespaces//core/pods.yaml` +- `host_service_logs/masters/crio_service.log` +- `host_service_logs/workers/crio_service.log` + +--- + +## 7. Performance & Resource Issues + +**Keywords**: `performance`, `cpu`, `memory`, `slow`, `latency`, `high load` + +### Primary Files (MANDATORY): +- `monitoring/metrics/metrics.openmetrics` (Conditional) +- `monitoring/prometheus/status/config.json` +- `monitoring/alertmanager/status.json` +- `nodes//` (all node performance data) +- `namespaces/openshift-kube-apiserver/pods//kube-apiserver/kube-apiserver/api_priority_and_fairness/queues` +- `etcd_info/object_count.json` + +--- + +## 13. etcd Issues + +**Keywords**: `etcd`, `quorum`, `alarm`, `etcdGRPCRequestsSlow`, `NOSPACE`, `CORRUPT` + +### Primary Files (MANDATORY): +- `etcd_info/endpoint_health.json` +- `etcd_info/endpoint_status.json` +- `etcd_info/member_list.json` +- `etcd_info/alarm_list.json` +- `etcd_info/object_count.json` +- `namespaces/openshift-etcd/pods////logs/current.log` +- `namespaces/openshift-etcd/pods////logs/previous.log` +- `namespaces/openshift-etcd/core/events.yaml` +- `namespaces/openshift-etcd-operator/pods////logs/current.log` +- `namespaces/openshift-etcd-operator/pods////logs/previous.log` +- `audit_logs/etcd/-audit.log` (Conditional) + +### Cross-Component Dependencies (MANDATORY): +- All API server files from section 1 +- `monitoring/metrics/metrics.openmetrics` (for performance spikes) +- `host_service_logs/masters/kubelet_service.log` +- `cluster-scoped-resources/config.openshift.io/clusteroperators.yaml` + +--- + +## 14. Storage Version Migration Issues + +**Keywords**: `storage version migration`, `kube-storage-version-migrator`, `Available=False`, `KubeStorageVersionMigrator_Deploying` + +### Primary Files (MANDATORY): +- `cluster-scoped-resources/migration.k8s.io/storageversionmigrations.yaml` +- `namespaces/openshift-kube-storage-version-migrator/pods//logs/current.log` +- `namespaces/openshift-kube-storage-version-migrator/pods//logs/previous.log` +- `namespaces/openshift-kube-storage-version-migrator/core/events.yaml` +- `namespaces/openshift-kube-storage-version-migrator/apps/deployments.yaml` +- `namespaces/openshift-kube-storage-version-migrator/batch/jobs.yaml` +- `cluster-scoped-resources/apiregistration.k8s.io/apiservices.yaml` +- `cluster-scoped-resources/apiextensions.k8s.io/customresourcedefinitions.yaml` + +### Cross-Component Dependencies (MANDATORY): +- `cluster-scoped-resources/config.openshift.io/clusteroperators.yaml` +- `namespaces/openshift-cluster-version/core/events.yaml` +- `namespaces/openshift-kube-apiserver/pods//logs/current.log` +- `namespaces/openshift-kube-apiserver/pods//logs/previous.log` +- All `etcd_info/*.json` + +--- + +## 15. IPsec & Network Security Issues + +**Keywords**: `ipsec`, `encryption`, `libreswan`, `xfrm`, `Feature:IPsec` + +### Primary Files (MANDATORY): +- `network_logs/ipsec/status/` +- `network_logs/ipsec/trafficstatus/` +- `network_logs/ipsec/xfrm/` +- `network_logs/ipsec/_ipsec.conf` +- `network_logs/ipsec/_libreswan.log` +- `pod_network_connectivity_check/podnetworkconnectivitychecks.yaml` +- `namespaces/openshift-ovn-kubernetes/pods//logs/current.log` +- `namespaces/openshift-ovn-kubernetes/pods//logs/previous.log` +- `namespaces/openshift-network-operator/pods//logs/current.log` +- `host_service_logs/masters/NetworkManager_service.log` +- `host_service_logs/workers/NetworkManager_service.log` + +--- + +## Mandatory File Combinations + +### For any pod issue: +- **BOTH** `logs/current.log` AND `logs/previous.log` +- **BOTH** pod YAML AND namespace events + +### For any etcd issue: +- **ALL** etcd health files (endpoint_health.json, member_list.json, alarm_list.json) +- **BOTH** etcd logs AND API server logs + +### For any networking issue: +- **BOTH** network operator logs AND OVN database status +- **BOTH** pod connectivity checks AND network events diff --git a/intelliaide/DataSource/MUST_GATHER_STRUCTURE.md b/intelliaide/DataSource/MUST_GATHER_STRUCTURE.md new file mode 100644 index 0000000..f9f7ef3 --- /dev/null +++ b/intelliaide/DataSource/MUST_GATHER_STRUCTURE.md @@ -0,0 +1,110 @@ +--- +# OpenShift Must-Gather Log Structure Summary + +## Overview +The OpenShift must-gather tool collects comprehensive diagnostic information from an OpenShift cluster. The **user supplies the root folder** (e.g. `must-gather-Prashanth-Testcase-failure`). Under that root there is **one folder with any name** (e.g. `quay-content`—the name is not fixed). Under that folder are `host_service_logs/`, `namespaces/`, `cluster-scoped-resources/`, etc. + +## Base Directory Structure + +- **`/`** — The path the **user supplies** (root folder). +- **`//`** — One child folder under the root; **name can be any string**. This folder contains `version`, `audit_logs/`, `host_service_logs/`, `namespaces/`, etc. + +--- + +## Directory Structure and Purpose + +All paths below are under **`//`**. + +### 1. **`audit_logs/`** (Conditional) +- `kube-apiserver/-audit.log` — K8s API server audit logs +- `openshift-apiserver/-audit.log` — OpenShift API server audit logs +- `oauth-apiserver/-audit.log` — OAuth API server audit logs +- `etcd/-audit.log` — etcd audit logs + +### 2. **`host_service_logs/`** (Always Present) +- `masters/kubelet_service.log` — Kubelet service logs +- `masters/crio_service.log` — CRI-O container runtime logs +- `masters/machine-config-daemon-host_service.log` — MCO host service logs +- `masters/NetworkManager_service.log` — NetworkManager logs +- `workers/` — Same structure as masters/ + +### 3. **`etcd_info/`** (Always Present) +- `member_list.json` — etcd cluster member list and status +- `endpoint_status.json` — Detailed status of all etcd endpoints +- `endpoint_health.json` — Health status of all etcd endpoints +- `alarm_list.json` — List of active etcd alarms (NOSPACE, CORRUPT) +- `object_count.json` — Count of Kubernetes objects by type + +### 4. **`network_logs/`** (Always Present) +- `leader_ovnnb_status` — OVN Northbound database cluster status +- `leader_ovnsb_status` — OVN Southbound database cluster status +- `ovn_kubernetes_top_pods` — OVN-Kubernetes pod resource usage +- `cluster_scale` — Network resource counts +- `ipsec/` (Conditional) — IPsec status, traffic, xfrm data + +### 5. **`pod_network_connectivity_check/`** (Always Present) +- `podnetworkconnectivitychecks.yaml` — Network connectivity test results + +### 6. **`nodes/`** (Always Present) +- `/_logs_kubelet.gz` — Kubelet journal logs (compressed) +- `/dmesg` — Kernel messages +- `/sysinfo.log` — System info (df, ps, uptime) + +### 7. **`namespaces/`** (Always Present) +Per-namespace structure: +``` +namespaces// +├── .yaml +├── core/ +│ ├── events.yaml # ★ All events (errors, warnings) +│ ├── pods.yaml # All pod definitions & status +│ └── ... +├── apps/ +│ ├── deployments.yaml +│ └── ... +└── pods// + └── //logs/ + ├── current.log # ★ Active container logs + └── previous.log # ★ Crashed container logs +``` + +Key namespaces always collected: +- `openshift-cluster-version/` — CVO (upgrades) +- `openshift-etcd/` — etcd pods +- `openshift-kube-apiserver/` — K8s API server +- `openshift-kube-apiserver/pods/*/kube-apiserver/kube-apiserver/api_priority_and_fairness/` — API throttling +- `openshift-monitoring/` — Prometheus stack +- `openshift-ovn-kubernetes/` — OVN networking +- `openshift-machine-config-operator/` — Node config + +### 8. **`cluster-scoped-resources/`** (Always Present) +- `config.openshift.io/clusteroperators.yaml` — ★ All ClusterOperator status +- `config.openshift.io/clusterversions.yaml` — Cluster version, upgrade status +- `config.openshift.io/networks.yaml` — Network configuration +- `core/nodes/.yaml` — Individual node status +- `storage.k8s.io/storageclasses.yaml` — Storage classes +- `storage.k8s.io/volumeattachments/` — Volume attachment status +- `migration.k8s.io/storageversionmigrations.yaml` — Storage version migrations + +### 9. **`static-pods/`** (Always Present) +- `kube-apiserver/-startup.log.gz` — API server startup logs +- `kube-apiserver/-termination.log.gz` — API server termination logs + +--- + +## File Size Awareness + +| File / directory | Typical size | Notes | +|------------------|-------------|-------| +| `audit_logs/*-audit.log` | 100 MB – 1 GB+ | Parse only for auth/authz investigation | +| `monitoring/metrics/metrics.openmetrics` | 50 MB – 500 MB+ | Parse only for performance analysis | +| `nodes//_logs_kubelet.gz` | 10 MB – 100 MB+ | Decompress only for kubelet issues | + +--- + +## Notes + +- All paths are relative to `//` +- Some directories only exist if features are enabled (conditional) +- Compressed files use `.gz` extension — reference them with that extension +- Always check `events.yaml` first — human-readable errors with timestamps diff --git a/intelliaide/Machine-learning/ML_LOG_CLASSIFICATION.py b/intelliaide/Machine-learning/ML_LOG_CLASSIFICATION.py new file mode 100644 index 0000000..09c5dff --- /dev/null +++ b/intelliaide/Machine-learning/ML_LOG_CLASSIFICATION.py @@ -0,0 +1,2491 @@ +""" +Log Analysis Pipeline with Drain3 Template Mining + +This module provides production-grade log analysis using Drain3 for template extraction. + +MAIN ENTRY POINT: + analyze_logs(file_path, output_dir, config_path) -> Dict + + Returns a JSON-serializable response with: + - Generated template files (rare_errors, highfreq_errors, warnings, etc.) + - Template and line counts + - Pareto-based error frequency analysis + +FEATURES: + - Log level classification (Error, Warning, Info, Unknown) + - Configuration change detection + - Error template frequency analysis (Pareto/80-20 rule) + - Template shifting (errors found in W/I/U → Error category) + - Configurable output via log_config.json + +PROCESSING MODES: + - ENTIRE FILE: For smaller files (< threshold) + - CHUNK PIPELINE: For larger files, with parallel/sequential options + +CONFIGURATION: + All settings controlled via log_config.json: + - output_flags: Control which files to generate + - frequency_settings: Pareto threshold, sample counts + - drain3_settings: Template mining parameters + - preprocessing: Timestamp removal patterns + +Usage: + from testing_log import analyze_logs + result = analyze_logs("app.log") + print(result['files']) # Generated output files +""" + +import os +import re +import json +import time +import multiprocessing +from pathlib import Path +from typing import List, Dict, Tuple, Optional, Generator +from collections import defaultdict +from datetime import datetime +from dataclasses import dataclass, field +from concurrent.futures import ProcessPoolExecutor + +try: + from drain3 import TemplateMiner + from drain3.template_miner_config import TemplateMinerConfig + DRAIN3_AVAILABLE = True +except ImportError: + DRAIN3_AVAILABLE = False + + +# ============================================================================= +# CONFIGURATION +# ============================================================================= +CONFIG_FILE_NAME = "log_config.json" + + +@dataclass +class Drain3Config: + """Drain3 algorithm settings.""" + batch_size: int = 1000 + similarity_threshold: float = 0.3 + depth: int = 4 + max_children: int = 100 + + +@dataclass +class FrequencyConfig: + """Configuration for template frequency-based segregation (Pareto/80-20 rule). + + High-frequency templates: Templates that cumulatively cover X% of total error lines. + These are typically repetitive/known issues - show only 1 sample per template. + + Rare/Priority templates: Templates that fall outside the high-frequency threshold. + These are priority for investigation - show full detail with all lines. + + Note: All output files now include ALL log lines for each template (no sampling). + """ + # Pareto threshold: templates covering this % of lines are "high frequency" + # Used as FALLBACK when rare_max_lines_per_template is None. + high_freq_cumulative_threshold: float = 0.80 # 80% = Pareto rule + + # Enable tiered output for errors (creates separate files for high-freq vs rare) + enable_tiered_error_output: bool = True + + # Optional: absolute maximum size for a template to be considered "rare" + # If set, templates with size <= this value are always considered rare + # regardless of cumulative threshold. None = disabled. + rare_absolute_max_size: Optional[int] = None + + # Simple count-based bifurcation: templates with <= this many lines are "rare errors", + # templates with > this many lines are "high-frequency errors". + # When set (not None), this OVERRIDES the Pareto cumulative threshold. + # Default: 15. Set to None to fall back to Pareto threshold. + rare_max_lines_per_template: Optional[int] = 15 + + +@dataclass +class OutputFlagsConfig: + """Configuration for controlling which outputs to generate. + + These flags control the output files generated by analyze_logs(). + All flags default to True (generate all outputs). + """ + include_rare_errors: bool = True # Rare/priority error templates (detailed) + include_highfreq_errors: bool = True # High-frequency error templates (summary) + include_warnings: bool = True # Warning templates + include_information: bool = True # Information templates + include_unknown: bool = True # Unknown level templates + include_config_changes: bool = True # Configuration change templates + + +@dataclass +class PreprocessingConfig: + """Preprocessing settings.""" + remove_timestamps: bool = True + timestamp_patterns: List[str] = field(default_factory=lambda: [ + r'^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z?\s*', + r'^\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}(\.\d+)?\s*', + r'^([IWE])\d{4}\s+\d{2}:\d{2}:\d{2}(\.\d+)?\s*', + r'^(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+\d{1,2}\s+\d{2}:\d{2}:\d{2}(\.\d+)?\s+\S+\s+', + r'\b\d{2}:\d{2}:\d{2}(\.\d+)?\b', + ]) + + +@dataclass +class PipelineConfig: + """Configuration for the log processing pipeline.""" + # Branch selection + use_chunk_pipeline: Optional[bool] = None # None=auto, True=chunk, False=entire + file_size_threshold_mb: float = 50.0 + + # Chunk settings + chunk_size: int = 10_000 + parallel_chunks: bool = True + chunk_workers: Optional[int] = None + min_chunks_for_parallel: int = 3 + + # Output settings + output_dir: Optional[str] = None + levels_to_process: List[str] = field(default_factory=lambda: ['E', 'W', 'I', 'UNKNOWN']) + + # Sub-configs + drain3: Drain3Config = field(default_factory=Drain3Config) + preprocessing: PreprocessingConfig = field(default_factory=PreprocessingConfig) + frequency: FrequencyConfig = field(default_factory=FrequencyConfig) + output_flags: OutputFlagsConfig = field(default_factory=OutputFlagsConfig) + + # Logging + verbose: bool = True + print_progress: bool = True + + +def load_config(config_path: Optional[str] = None) -> PipelineConfig: + """ + Load configuration from JSON file. + + Search order: + 1. Explicit config_path if provided + 2. log_config.json in current working directory + 3. log_config.json in script directory + 4. Default configuration + """ + search_paths = [] + + if config_path: + search_paths.append(Path(config_path)) + + # Current working directory + search_paths.append(Path.cwd() / CONFIG_FILE_NAME) + + # Script directory + search_paths.append(Path(__file__).parent / CONFIG_FILE_NAME) + + for path in search_paths: + if path.exists(): + try: + with open(path, 'r', encoding='utf-8') as f: + config_dict = json.load(f) + print(f"[Config] Loaded configuration from: {path}") + + # Build config from dict + config = PipelineConfig() + + # Pipeline settings + pipeline = config_dict.get('pipeline', {}) + if 'use_chunk_pipeline' in pipeline: + config.use_chunk_pipeline = pipeline['use_chunk_pipeline'] + if 'file_size_threshold_mb' in pipeline: + config.file_size_threshold_mb = pipeline['file_size_threshold_mb'] + + # Chunk settings + chunk = config_dict.get('chunk_settings', {}) + if 'chunk_size' in chunk: + config.chunk_size = chunk['chunk_size'] + if 'parallel_chunks' in chunk: + config.parallel_chunks = chunk['parallel_chunks'] + if 'chunk_workers' in chunk: + config.chunk_workers = chunk['chunk_workers'] + if 'min_chunks_for_parallel' in chunk: + config.min_chunks_for_parallel = chunk['min_chunks_for_parallel'] + + # Drain3 settings + drain3 = config_dict.get('drain3_settings', {}) + if 'batch_size' in drain3: + config.drain3.batch_size = drain3['batch_size'] + if 'similarity_threshold' in drain3: + config.drain3.similarity_threshold = drain3['similarity_threshold'] + if 'depth' in drain3: + config.drain3.depth = drain3['depth'] + if 'max_children' in drain3: + config.drain3.max_children = drain3['max_children'] + + # Output settings + output = config_dict.get('output', {}) + if 'output_dir' in output: + config.output_dir = output['output_dir'] + if 'levels_to_process' in output: + config.levels_to_process = output['levels_to_process'] + + # Preprocessing settings + preproc = config_dict.get('preprocessing', {}) + if 'remove_timestamps' in preproc: + config.preprocessing.remove_timestamps = preproc['remove_timestamps'] + if 'timestamp_patterns' in preproc: + config.preprocessing.timestamp_patterns = preproc['timestamp_patterns'] + + # Logging settings + logging_cfg = config_dict.get('logging', {}) + if 'verbose' in logging_cfg: + config.verbose = logging_cfg['verbose'] + if 'print_progress' in logging_cfg: + config.print_progress = logging_cfg['print_progress'] + + # Frequency settings (Pareto/80-20 rule for error template classification) + freq = config_dict.get('frequency_settings', {}) + if 'high_freq_cumulative_threshold' in freq: + config.frequency.high_freq_cumulative_threshold = freq['high_freq_cumulative_threshold'] + if 'enable_tiered_error_output' in freq: + config.frequency.enable_tiered_error_output = freq['enable_tiered_error_output'] + if 'rare_absolute_max_size' in freq: + config.frequency.rare_absolute_max_size = freq['rare_absolute_max_size'] + if 'rare_max_lines_per_template' in freq: + config.frequency.rare_max_lines_per_template = freq['rare_max_lines_per_template'] + + # Output flags (control which outputs to generate) + output_flags = config_dict.get('output_flags', {}) + if 'include_rare_errors' in output_flags: + config.output_flags.include_rare_errors = output_flags['include_rare_errors'] + if 'include_highfreq_errors' in output_flags: + config.output_flags.include_highfreq_errors = output_flags['include_highfreq_errors'] + if 'include_warnings' in output_flags: + config.output_flags.include_warnings = output_flags['include_warnings'] + if 'include_information' in output_flags: + config.output_flags.include_information = output_flags['include_information'] + if 'include_unknown' in output_flags: + config.output_flags.include_unknown = output_flags['include_unknown'] + if 'include_config_changes' in output_flags: + config.output_flags.include_config_changes = output_flags['include_config_changes'] + + return config + + except (json.JSONDecodeError, Exception) as e: + print(f"[Config] Warning: Error loading {path}: {e}") + continue + + print("[Config] Using default configuration") + return PipelineConfig() + + +# Global config instance (loaded on first use) +_GLOBAL_CONFIG: Optional[PipelineConfig] = None + + +def get_config(config_path: Optional[str] = None, reload: bool = False) -> PipelineConfig: + """Get the global configuration instance.""" + global _GLOBAL_CONFIG + if _GLOBAL_CONFIG is None or reload: + _GLOBAL_CONFIG = load_config(config_path) + return _GLOBAL_CONFIG + + +# Default configuration (for backward compatibility) +DEFAULT_CONFIG = PipelineConfig() + + +# ============================================================================= +# TIMESTAMP PARSER +# ============================================================================= +def remove_timestamps(log_line: str, config: Optional[PipelineConfig] = None) -> str: + """ + Remove timestamp entries from a single log line. + + Uses patterns from config.preprocessing.timestamp_patterns if provided, + otherwise uses default hardcoded patterns. + """ + if not log_line.strip(): + return log_line + + config = config or get_config() + + # Check if timestamp removal is enabled + if not config.preprocessing.remove_timestamps: + return log_line + + line = log_line + + # Use configurable patterns + patterns = config.preprocessing.timestamp_patterns + + # Apply each pattern + for i, pattern in enumerate(patterns): + # Pattern at index 2 is the I/W/E + MMDD pattern, needs special replacement + if i == 2 and pattern.startswith('^([IWE])'): + line = re.sub(pattern, r'\1 ', line) + # Pattern at index 3 is systemd/journal, needs case-insensitive + elif i == 3 and 'Jan|Feb|Mar' in pattern: + line = re.sub(pattern, '', line, flags=re.IGNORECASE) + else: + line = re.sub(pattern, '', line) + + # Clean up whitespace + line = re.sub(r'\s+', ' ', line).strip() + return line + + +# ============================================================================= +# TIMESTAMP EXTRACTION FROM LOG LINES (for sampling by time) +# ============================================================================= + +# Month abbreviation -> number mapping for systemd/journal timestamps +_MONTH_MAP = { + 'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6, + 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12, +} + +# Pattern: Jan 12 14:22:56 (systemd/journal logs) +_TS_SYSTEMD = re.compile( + r'^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+(\d{1,2})\s+(\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?' +) + +# Pattern: I0112 14:22:56 or E0112 14:22:56 (Kubernetes logs) +# Format is: — e.g. I0112 means Info, Jan 12 +_TS_KUBE = re.compile( + r'^[IWEU](\d{4})\s+(\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?' +) + +# Pattern: 2024-01-12T14:22:56 (ISO timestamps) +_TS_ISO = re.compile( + r'(\d{4})-(\d{2})-(\d{2})[T\s](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?' +) + + +def extract_timestamp_from_log(log_line: str) -> Optional[str]: + """ + Extract a sortable timestamp string from a log line. + + Supported formats (checked in order): + 1. ``Jan 12 14:22:56`` – systemd / journal logs + 2. ``I0112 14:22:56`` – Kubernetes I/W/E/U prefixed logs + 3. ``2024-01-12T14:22:56`` – ISO 8601 timestamps + + Returns: + A sortable string in the form ``MMDD-HH:MM:SS.ffffff`` (for formats 1 & 2) + or ``YYYY-MM-DDTHH:MM:SS.ffffff`` (for ISO), or ``None`` if no timestamp + could be parsed. The returned string is designed for lexicographic + ordering so that ``sorted()`` produces chronological order. + """ + if not log_line: + return None + + # 1. Systemd / journal: Jan 12 14:22:56.123456 + m = _TS_SYSTEMD.match(log_line) + if m: + month = _MONTH_MAP.get(m.group(1), 0) + day = int(m.group(2)) + frac = (m.group(6) or '0').ljust(6, '0')[:6] + return f"{month:02d}{day:02d}-{m.group(3)}:{m.group(4)}:{m.group(5)}.{frac}" + + # 2. Kubernetes: E0112 14:22:56.789 + m = _TS_KUBE.match(log_line) + if m: + mmdd = m.group(1) # "MMDD" — 4 digits captured after the level char (e.g. "0112" = Jan 12) + frac = (m.group(5) or '0').ljust(6, '0')[:6] + return f"{mmdd}-{m.group(2)}:{m.group(3)}:{m.group(4)}.{frac}" + + # 3. ISO 8601: 2024-01-12T14:22:56.123Z + m = _TS_ISO.search(log_line) + if m: + frac = (m.group(7) or '0').ljust(6, '0')[:6] + return (f"{m.group(1)}-{m.group(2)}-{m.group(3)}T" + f"{m.group(4)}:{m.group(5)}:{m.group(6)}.{frac}") + + return None + + +def sample_lines_by_timestamp( + lines: List[str], + first_n: int = 3, + middle_n: int = 1, + last_n: int = 3, +) -> List[str]: + """ + Sample representative lines from a list using timestamp-based ordering. + + For a template cluster with many lines this returns a small, representative + subset that shows *when the error started* (first N), a *mid-point* + occurrence (middle N), and the *most recent* occurrences (last N). + + Algorithm: + 1. Try to parse a timestamp from each line via + :func:`extract_timestamp_from_log`. + 2. If **any** timestamps were found, sort lines by timestamp. + Otherwise, keep original order (log files are usually + chronologically ordered). + 3. Sample ``first_n + middle_n + last_n`` lines (default 7). + 4. If the cluster has fewer lines than the sample size, return all + lines (no sampling needed). + + Args: + lines: All original log lines belonging to one template cluster. + first_n: Number of earliest lines to include (default 3). + middle_n: Number of middle lines to include (default 1). + last_n: Number of latest lines to include (default 3). + + Returns: + A list of sampled original log lines (order preserved from the + sorted/original sequence). + """ + total_sample = first_n + middle_n + last_n # default 7 + + if len(lines) <= total_sample: + return list(lines) # nothing to sample — return all + + # Attempt timestamp extraction + ts_line_pairs = [] + has_timestamps = False + for line in lines: + ts = extract_timestamp_from_log(line) + ts_line_pairs.append((ts, line)) + if ts is not None: + has_timestamps = True + + # Sort by timestamp if available; otherwise keep original order + if has_timestamps: + # Lines without a timestamp get a sentinel that sorts first + ts_line_pairs.sort(key=lambda pair: pair[0] if pair[0] is not None else '') + + sorted_lines = [line for _, line in ts_line_pairs] + + # Sample indices + n = len(sorted_lines) + first_indices = list(range(0, min(first_n, n))) + last_indices = list(range(max(n - last_n, 0), n)) + mid_start = (n // 2) - (middle_n // 2) + middle_indices = list(range(mid_start, min(mid_start + middle_n, n))) + + # Merge indices, deduplicate, preserve order + seen = set() + sampled = [] + for idx in first_indices + middle_indices + last_indices: + if idx not in seen: + seen.add(idx) + sampled.append(sorted_lines[idx]) + + return sampled + + +# ============================================================================= +# LOG LEVEL PARSER +# ============================================================================= +def parse_log_level(log_line: str) -> Optional[str]: + """ + Parse log level from a log line. + + Prioritizes content-based detection (error/warning phrases) + over structural prefixes (I/W/E) because Info-level logs often contain errors. + + Returns: + 'E' for Error, 'W' for Warning, 'I' for Info, None for Unknown + """ + if not log_line.strip(): + return None + s = log_line.strip() + upper = s.upper() + + # 1) Content-based detection: Error phrases (highest priority) + error_phrases = [ + r'\bFAILURE\b', r'\bFAILED\b', r'\bstatus=1/', r'\bstatus=2/', r'\bstatus=3/', + r"exit-code", r"exit code", r"exited with", r"exited, code=", + r"failed to start", r"could not start", r"failed with result", + r'\bERROR\b', r'\bFATAL\b', r'\bCRASH', r'\bOOMKILLED\b', + r'\bTIMEOUT\b', r'\bUNREACHABLE\b', r'\bREFUSED\b', + r'connection refused', r'no such file', r'permission denied', + ] + for pat in error_phrases: + if re.search(pat, upper): + return 'E' + + # 2) Content-based detection: Warning phrases + warn_phrases = [r'\bWARN(?:ING)?\b', r'\bDEPRECATED\b', r'\bRETRY\b', r'\bBACKOFF\b'] + for pat in warn_phrases: + if re.search(pat, upper): + return 'W' + + # 3) Structural prefix: I/W/E at start of line (Kubernetes-style logs) + # Handles both original (E0112, W0112, I0112) and preprocessed (E , W , I ) formats + # After timestamp removal, "W0112 17:02:33..." becomes "W ..." + match = re.match(r'([IWEiwe])(?:\d{4}\b|\s)', s) + if match: + return match.group(1).upper() + + # 4) Bracketed level [INFO], [WARN], [ERROR] + match = re.search(r'\[(INFO|WARN|WARNING|ERROR|ERR)\]', upper) + if match: + level_str = match.group(1) + if level_str in ['INFO', 'INFORMATION']: + return 'I' + elif level_str in ['WARN', 'WARNING']: + return 'W' + elif level_str in ['ERROR', 'ERR']: + return 'E' + + # 5) Info keywords + if re.search(r'\bINFO\b', upper) or re.search(r'\bStarted\b', s): + return 'I' + + return None + + +# ============================================================================= +# DRAIN3 UTILITIES +# ============================================================================= +def create_drain3_miner(config: Optional[PipelineConfig] = None) -> 'TemplateMiner': + """Create and configure a new Drain3 TemplateMiner instance.""" + config = config or get_config() + drain_config = TemplateMinerConfig() + drain_config.sim_th = config.drain3.similarity_threshold + drain_config.depth = config.drain3.depth + drain_config.max_children = config.drain3.max_children + drain_config.profiling_enabled = False + return TemplateMiner(config=drain_config) + + +def extract_drain3_results(miner: 'TemplateMiner') -> Tuple[Dict, List[Dict]]: + """Extract cluster sizes and template list from a Drain3 miner.""" + cluster_sizes = {} + template_list = [] + + clusters = miner.drain.clusters if hasattr(miner, 'drain') else [] + + # Handle both list and dict formats + if isinstance(clusters, dict): + cluster_list = list(clusters.values()) + elif hasattr(clusters, '__iter__'): + cluster_list = list(clusters) + else: + cluster_list = [] + + for cluster in cluster_list: + try: + # Use the ACTUAL cluster_id from the LogCluster object + # This ensures consistency with miner.match() results + cid = getattr(cluster, 'cluster_id', None) + if cid is None: + continue + size = getattr(cluster, 'size', 1) + template = cluster.get_template() if hasattr(cluster, 'get_template') else str(cluster) + cluster_sizes[cid] = size + template_list.append({'id': cid, 'template': template, 'size': size}) + except Exception: + pass + + return cluster_sizes, template_list + + +def process_lines_with_drain3( + lines: List[str], + config: Optional[PipelineConfig] = None +) -> Tuple[Dict, List[Dict], List]: + """Process lines through Drain3 in batches. + + Returns: + Tuple of (cluster_sizes, template_list, event_ids) + - event_ids: List of FINAL cluster_ids for each input line + """ + if not DRAIN3_AVAILABLE or not lines: + return {}, [], [None] * len(lines) + + config = config or get_config() + batch_size = config.drain3.batch_size + + miner = create_drain3_miner(config) + + # STEP 1: Process all lines to build the clusters + for i in range(0, len(lines), batch_size): + batch = lines[i:i + batch_size] + for line in batch: + if line.strip(): + miner.add_log_message(line) + + # STEP 2: Extract final cluster results + cluster_sizes, template_list = extract_drain3_results(miner) + + # STEP 3: Re-match each line to its FINAL cluster ID + # This ensures event_ids reflect the final cluster assignments + event_ids = [] + for line in lines: + if line.strip(): + # match() returns the cluster without modifying the miner + result = miner.match(line) + if result: + event_ids.append(result.cluster_id) + else: + event_ids.append(None) + else: + event_ids.append(None) + + return cluster_sizes, template_list, event_ids + + + + +# ============================================================================= +# BRANCH 1: ENTIRE FILE PIPELINE +# ============================================================================= +def entire_file_pipeline(file_path: str, config: Optional[PipelineConfig] = None) -> Dict[str, Dict[str, List[str]]]: + """ + BRANCH 1: Process entire file at once. + + Pipeline: + 1. Read entire file into memory + 2. Process all lines through timestamp parser + 3. Categorize all lines by log level + + Best for: Smaller files (< file_size_threshold_mb) + + Args: + file_path: Path to the log file + config: Pipeline configuration (uses global config if None) + + Returns: + Dict mapping level ('E', 'W', 'I', 'UNKNOWN') to + {"preprocessed": [lines], "original": [lines]} + """ + config = config or get_config() + + try: + with open(file_path, 'r', encoding='utf-8', errors='ignore') as f: + log_content = f.read() + except Exception as e: + if config.verbose: + print(f"[EntireFile] Error reading file {file_path}: {e}") + return {} + + if not log_content.strip(): + return {} + + result = defaultdict(lambda: {"preprocessed": [], "original": []}) + for line in log_content.split('\n'): + if not line.strip(): + continue + # Step 1: Remove timestamps (using config) + preprocessed_line = remove_timestamps(line, config) + # Step 2: Categorize by log level (using config) + level = parse_log_level(preprocessed_line) + if level == 'E': + result['E']["preprocessed"].append(preprocessed_line) + result['E']["original"].append(line) + elif level == 'W': + result['W']["preprocessed"].append(preprocessed_line) + result['W']["original"].append(line) + elif level == 'I': + result['I']["preprocessed"].append(preprocessed_line) + result['I']["original"].append(line) + else: + result['UNKNOWN']["preprocessed"].append(preprocessed_line) + result['UNKNOWN']["original"].append(line) + + return dict(result) + + +# ============================================================================= +# BRANCH 2: CHUNK PIPELINE - Core Functions +# ============================================================================= +def chunk_file_reader(file_path: str, chunk_size: int) -> Generator[List[str], None, None]: + """ + Generator that reads a file in chunks. + + Yields: + List[str]: A chunk of lines (up to chunk_size lines per chunk) + """ + try: + with open(file_path, 'r', encoding='utf-8', errors='ignore') as f: + chunk = [] + for line in f: + stripped = line.rstrip('\n\r') + if stripped: + chunk.append(stripped) + if len(chunk) >= chunk_size: + yield chunk + chunk = [] + if chunk: + yield chunk + except Exception as e: + print(f"[ChunkReader] Error reading file {file_path}: {e}") + + +def process_single_chunk(chunk: List[str], config: Optional[PipelineConfig] = None) -> Dict[str, Dict[str, List[str]]]: + """ + Process a single chunk: timestamp removal + categorization. + + This function is the worker for both sequential and parallel processing. + + Args: + chunk: List of raw log lines + config: Pipeline configuration (uses global config if None) + + Returns: + Dict mapping level ('E', 'W', 'I', 'UNKNOWN') to + {"preprocessed": [lines], "original": [lines]} + """ + config = config or get_config() + categorized = defaultdict(lambda: {"preprocessed": [], "original": []}) + + for line in chunk: + # Step 1: Remove timestamps (using config) + preprocessed = remove_timestamps(line, config) + # Step 2: Categorize by log level (using config) + level = parse_log_level(preprocessed) + if level == 'E': + categorized['E']["preprocessed"].append(preprocessed) + categorized['E']["original"].append(line) + elif level == 'W': + categorized['W']["preprocessed"].append(preprocessed) + categorized['W']["original"].append(line) + elif level == 'I': + categorized['I']["preprocessed"].append(preprocessed) + categorized['I']["original"].append(line) + else: + categorized['UNKNOWN']["preprocessed"].append(preprocessed) + categorized['UNKNOWN']["original"].append(line) + + return dict(categorized) + + +def merge_chunk_results(results: List[Dict[str, Dict[str, List[str]]]]) -> Dict[str, Dict[str, List[str]]]: + """Merge categorized results from multiple chunks.""" + merged = defaultdict(lambda: {"preprocessed": [], "original": []}) + for result in results: + for level, data in result.items(): + if isinstance(data, dict) and "preprocessed" in data: + merged[level]["preprocessed"].extend(data["preprocessed"]) + merged[level]["original"].extend(data["original"]) + elif isinstance(data, list): + # Backward compat: old format without originals + merged[level]["preprocessed"].extend(data) + merged[level]["original"].extend(data) + return dict(merged) + + +# ============================================================================= +# BRANCH 2A: CHUNK PIPELINE - SEQUENTIAL +# ============================================================================= +def chunk_pipeline_sequential(file_path: str, config: Optional[PipelineConfig] = None) -> Dict[str, List[str]]: + """ + BRANCH 2A: Process file in chunks SEQUENTIALLY. + + Pipeline: + 1. Read file chunk by chunk + 2. For each chunk: + - Remove timestamps + - Categorize by log level + 3. Accumulate results + + Args: + file_path: Path to the log file + config: Pipeline configuration (uses global config if None) + + Returns: + Dict mapping level ('E', 'W', 'I', 'UNKNOWN') to list of preprocessed lines + """ + config = config or get_config() + by_level = defaultdict(list) + chunk_count = 0 + + for chunk in chunk_file_reader(file_path, config.chunk_size): + chunk_count += 1 + # Process this chunk (passing config) + chunk_result = process_single_chunk(chunk, config) + # Accumulate results + for level, lines in chunk_result.items(): + by_level[level].extend(lines) + + return dict(by_level) + + +# ============================================================================= +# BRANCH 2B: CHUNK PIPELINE - PARALLEL +# ============================================================================= +def chunk_pipeline_parallel(file_path: str, config: Optional[PipelineConfig] = None) -> Dict[str, List[str]]: + """ + BRANCH 2B: Process file chunks IN PARALLEL using multiprocessing. + + Pipeline: + 1. Read all chunks from file (sequential I/O) + 2. Process chunks in parallel (timestamp + categorization) + 3. Merge results from all chunks + + Note: For parallel processing, config is loaded fresh in each worker process. + + Args: + file_path: Path to the log file + config: Pipeline configuration (uses global config if None) + + Returns: + Dict mapping level ('E', 'W', 'I', 'UNKNOWN') to list of preprocessed lines + """ + config = config or get_config() + + # Step 1: Read all chunks into memory (I/O is sequential) + chunks = list(chunk_file_reader(file_path, config.chunk_size)) + + if not chunks: + return {} + + num_chunks = len(chunks) + + # Check if parallel is worth it + if num_chunks < config.min_chunks_for_parallel: + # Fall back to sequential for small number of chunks + return chunk_pipeline_sequential(file_path, config) + + # Determine worker count + max_workers = config.chunk_workers + if max_workers is None: + max_workers = min(multiprocessing.cpu_count(), num_chunks, 8) + + # Step 2: Process chunks in parallel + chunk_results = [] + + with ProcessPoolExecutor(max_workers=max_workers) as executor: + futures = [executor.submit(process_single_chunk, chunk) for chunk in chunks] + + # Collect results (preserves order) + for future in futures: + try: + result = future.result() + chunk_results.append(result) + except Exception as e: + print(f"[ChunkParallel] Error processing chunk: {e}") + + # Step 3: Merge all chunk results + return merge_chunk_results(chunk_results) + + +# ============================================================================= +# UNIFIED CHUNK PIPELINE (auto-selects sequential or parallel) +# ============================================================================= +def chunk_pipeline(file_path: str, config: Optional[PipelineConfig] = None) -> Dict[str, List[str]]: + """ + BRANCH 2: Process file in chunks. + + Automatically selects SEQUENTIAL or PARALLEL mode based on config.parallel_chunks. + + Args: + file_path: Path to the log file + config: Pipeline configuration (uses global config if None) + + Returns: + Dict mapping level ('E', 'W', 'I', 'UNKNOWN') to list of preprocessed lines + """ + config = config or get_config() + if config.parallel_chunks: + return chunk_pipeline_parallel(file_path, config) + else: + return chunk_pipeline_sequential(file_path, config) + + +def build_cluster_to_lines( + lines: List[str], + event_ids: List, +) -> Dict[int, List[str]]: + """Map cluster_id -> list of original log lines that belong to that cluster.""" + cluster_to_lines: Dict[int, List[str]] = defaultdict(list) + for i, line in enumerate(lines): + if i >= len(event_ids): + break + cid = event_ids[i] + if cid is not None: + cluster_to_lines[cid].append(line) + return dict(cluster_to_lines) + + +# ============================================================================= +# SAVE LOG LINES +# ============================================================================= +def save_templates_to_file( + template_list: List[Dict], + cluster_sizes: Dict, + logs: List[Tuple[str, str]], + event_ids: List, + output_dir: str, + level_suffix: str, + filename_prefix: Optional[str] = None, + cluster_to_lines: Optional[Dict[int, List[str]]] = None, + max_original_lines_per_cluster: int = 5000, +) -> str: + """ + Save the log lines for one level to a file (no templates/headers). + Also saves a companion template file listing each Drain3 template + with its cluster size, named ``__templates.txt``. + + Args: + template_list: List of template dicts + cluster_sizes: Dict of cluster_id -> size + logs: List of (file_path, line) tuples + event_ids: Event IDs from Drain3 + output_dir: Output directory + level_suffix: Level name (e.g., 'Warning', 'Information') + filename_prefix: Optional filename prefix + cluster_to_lines: Mapping of cluster_id -> original lines + max_original_lines_per_cluster: Ignored + + Returns: + Path to saved log-lines file + """ + output_path = Path(output_dir) + output_path.mkdir(parents=True, exist_ok=True) + if filename_prefix: + filename = output_path / f"{filename_prefix}_{level_suffix}.txt" + template_filename = output_path / f"{filename_prefix}_{level_suffix}_templates.txt" + else: + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") + filename = output_path / f"log_classification_{level_suffix}_{timestamp}.txt" + template_filename = output_path / f"log_classification_{level_suffix}_templates_{timestamp}.txt" + + cluster_to_lines = cluster_to_lines or {} + + # Collect all log lines from all clusters + all_lines = [] + for tmpl in template_list: + cid = tmpl['id'] + lines = cluster_to_lines.get(cid, []) + all_lines.extend(lines) + + # Write only the log lines + with open(filename, 'w', encoding='utf-8') as f: + for line in all_lines: + f.write(line + "\n") + + # ── Save companion template file ── + if template_list: + with open(template_filename, 'w', encoding='utf-8') as f: + f.write(f"# {level_suffix} Templates ({len(template_list)} templates)\n") + f.write(f"# Each template shown with cluster size (number of matching log lines)\n") + f.write("=" * 80 + "\n\n") + for i, tmpl in enumerate(template_list, 1): + cid = tmpl['id'] + size = cluster_sizes.get(cid, tmpl.get('size', len(cluster_to_lines.get(cid, [])))) + template_text = tmpl.get('template', '(unknown)') + f.write(f"Template {i} | cluster_id={cid} | lines={size}\n") + f.write(f" {template_text}\n\n") + + return str(filename) + + +# ============================================================================= +# CONFIGURATION CHANGE AND ERROR DETECTION +# ============================================================================= + +# Patterns that indicate configuration changes in OpenShift/Kubernetes logs +CONFIG_CHANGE_PATTERNS = [ + r'ObservedConfigChanged', + r'OperatorStatusChanged', + r'OperatorVersionChanged', + r'FeatureGates\s*(updated|initialized)', + r'Config\s*Drift\s*Monitor', + r'currentConfig', + r'desiredConfig', + r'ConfigMapCreated', + r'ConfigMapUpdated', + r'DeploymentUpdated', + r'DaemonSetUpdated', + r'ValidatingWebhookConfigurationUpdated', + r'MutatingWebhookConfigurationUpdated', + r'TLSConfigChanged', + r'Update\s+completed\s+for\s+config', + r'rendered-master-', + r'rendered-worker-', + r'Setting\s+node.*currentConfig', + r'MachineConfiguration\s+status', + r'Status\s+for\s+clusteroperator', + r'version.*changed', + r'ObserveTLS', + r'ObserveAPI', +] + +# Compiled regex for configuration change detection (case-insensitive) +CONFIG_CHANGE_REGEX = re.compile( + '|'.join(CONFIG_CHANGE_PATTERNS), + re.IGNORECASE +) + +# Error patterns for detecting errors in non-Error categories +ERROR_DETECTION_PATTERNS = [ + r'\bERROR\b', + r'\bFAILED\b', + r'\bFAILURE\b', + r'\bFATAL\b', + r'\bCRASH', + r'\bPANIC\b', + r'\bOOMKILLED\b', + r'\bTIMEOUT\b', + r'Unhandled\s*Error', + r'reconciliation\s*failed', + r'connection\s*refused', + r'no\s*such\s*file', + r'permission\s*denied', + r'exit[- ]code[=:\s]+[1-9]', + r'status[=:\s]+[1-9]', + r'exited\s+with\s+[1-9]', +] + +# Compiled regex for error detection (case-insensitive) +ERROR_DETECTION_REGEX = re.compile( + '|'.join(ERROR_DETECTION_PATTERNS), + re.IGNORECASE +) + + +def is_error_template(template: str) -> bool: + """Check if a template contains error indicators.""" + return bool(ERROR_DETECTION_REGEX.search(template)) + + +def is_config_change_template(template: str) -> bool: + """Check if a template represents a configuration change.""" + return bool(CONFIG_CHANGE_REGEX.search(template)) + + +def classify_templates_for_level( + level: str, + template_list: List[Dict], + cluster_to_lines: Dict[int, List[str]], + lines: List[str], + event_ids: List, +) -> Dict[str, Dict]: + """ + Classify templates from a non-Error level into: + 1. Error templates (contain error indicators) -> to be moved to Error + 2. Config change templates -> to be moved to ConfigChanges + 3. Regular templates -> stay in original level + + Works at TEMPLATE level - entire clusters (template + all lines) move together. + + Args: + level: Current level ('W', 'I', or 'UNKNOWN') + template_list: List of Drain3 templates + cluster_to_lines: Mapping of cluster_id -> original lines + lines: All lines for this level + event_ids: Event IDs from Drain3 (cluster assignments) + + Returns: + Dict with keys 'regular', 'error', 'config' each containing: + - templates: List of template dicts + - cluster_to_lines: Dict of cluster_id -> lines + - cluster_ids: Set of cluster IDs + """ + # Skip classification for Error level + if level == 'E': + return { + 'regular': { + 'templates': template_list, + 'cluster_to_lines': cluster_to_lines, + 'cluster_ids': {t['id'] for t in template_list}, + }, + 'error': {'templates': [], 'cluster_to_lines': {}, 'cluster_ids': set()}, + 'config': {'templates': [], 'cluster_to_lines': {}, 'cluster_ids': set()}, + } + + # Classify each template + regular_templates = [] + error_templates = [] + config_templates = [] + + regular_cluster_ids = set() + error_cluster_ids = set() + config_cluster_ids = set() + + for tmpl in template_list: + template_text = tmpl['template'] + cluster_id = tmpl['id'] + + # Priority: Error > Config > Regular + if is_error_template(template_text): + error_templates.append(tmpl) + error_cluster_ids.add(cluster_id) + elif is_config_change_template(template_text): + config_templates.append(tmpl) + config_cluster_ids.add(cluster_id) + else: + regular_templates.append(tmpl) + regular_cluster_ids.add(cluster_id) + + # Separate cluster_to_lines based on template classification + regular_cluster_to_lines = {} + error_cluster_to_lines = {} + config_cluster_to_lines = {} + + for cid, clines in cluster_to_lines.items(): + if cid in error_cluster_ids: + error_cluster_to_lines[cid] = clines + elif cid in config_cluster_ids: + config_cluster_to_lines[cid] = clines + elif cid in regular_cluster_ids: + regular_cluster_to_lines[cid] = clines + + return { + 'regular': { + 'templates': regular_templates, + 'cluster_to_lines': regular_cluster_to_lines, + 'cluster_ids': regular_cluster_ids, + }, + 'error': { + 'templates': error_templates, + 'cluster_to_lines': error_cluster_to_lines, + 'cluster_ids': error_cluster_ids, + }, + 'config': { + 'templates': config_templates, + 'cluster_to_lines': config_cluster_to_lines, + 'cluster_ids': config_cluster_ids, + }, + } + + +def get_lines_for_clusters( + lines: List[str], + event_ids: List, + cluster_ids: set, +) -> Tuple[List[str], List]: + """Get lines and event_ids that belong to specific clusters.""" + filtered_lines = [] + filtered_event_ids = [] + + for line, eid in zip(lines, event_ids): + if eid in cluster_ids: + filtered_lines.append(line) + filtered_event_ids.append(eid) + + return filtered_lines, filtered_event_ids + + +def merge_template_results( + results_list: List[Dict], +) -> Dict: + """ + Merge multiple template results into one. + Each result has: templates, cluster_to_lines, cluster_ids + """ + merged_templates = [] + merged_cluster_to_lines = {} + merged_cluster_ids = set() + + for result in results_list: + merged_templates.extend(result.get('templates', [])) + merged_cluster_to_lines.update(result.get('cluster_to_lines', {})) + merged_cluster_ids.update(result.get('cluster_ids', set())) + + return { + 'templates': merged_templates, + 'cluster_to_lines': merged_cluster_to_lines, + 'cluster_ids': merged_cluster_ids, + } + + +# ============================================================================= +# FREQUENCY-BASED TEMPLATE CLASSIFICATION (PARETO/80-20 RULE) +# ============================================================================= + +def classify_templates_by_frequency( + template_list: List[Dict], + cluster_to_lines: Dict[int, List[str]], + freq_config: FrequencyConfig, +) -> Dict[str, Dict]: + """ + Classify templates into high-frequency vs rare using Pareto/80-20 rule. + + High-frequency: Templates that cumulatively account for X% of total error lines. + These are repetitive/known issues - only 1 sample needed. + + Rare/Priority: Templates outside the high-frequency threshold. + These need full investigation - show all lines. + + Algorithm: + 1. Sort templates by size (descending) + 2. Cumulative sum until threshold (e.g., 80%) is reached + 3. Templates in cumulative sum = high frequency + 4. Remaining templates = rare/priority + + Args: + template_list: List of template dicts with 'id', 'size', 'template' keys + cluster_to_lines: Mapping of cluster_id -> original log lines + freq_config: Frequency configuration settings + + Returns: + Dict with keys 'high_freq' and 'rare', each containing: + - templates: List of template dicts (sorted by size desc) + - cluster_to_lines: Dict of cluster_id -> lines + - cluster_ids: Set of cluster IDs + - total_lines: Total line count for this category + - stats: Additional statistics (percentage coverage, etc.) + """ + if not template_list: + empty_result = { + 'templates': [], + 'cluster_to_lines': {}, + 'cluster_ids': set(), + 'total_lines': 0, + 'stats': {'template_count': 0, 'line_coverage_pct': 0.0}, + } + return {'high_freq': empty_result, 'rare': empty_result} + + # Sort templates by size (descending) for Pareto analysis + sorted_templates = sorted(template_list, key=lambda x: x['size'], reverse=True) + + # Calculate total lines across all templates + total_lines = sum(t['size'] for t in sorted_templates) + + if total_lines == 0: + empty_result = { + 'templates': [], + 'cluster_to_lines': {}, + 'cluster_ids': set(), + 'total_lines': 0, + 'stats': {'template_count': 0, 'line_coverage_pct': 0.0}, + } + return {'high_freq': empty_result, 'rare': empty_result} + + # Determine bifurcation strategy + use_count_based = (freq_config.rare_max_lines_per_template is not None) + count_threshold = freq_config.rare_max_lines_per_template or 15 + + high_freq_templates = [] + high_freq_cluster_ids = set() + rare_templates = [] + rare_cluster_ids = set() + + if use_count_based: + # ── COUNT-BASED: templates with > N lines = high-freq, <= N = rare ── + for tmpl in sorted_templates: + cluster_id = tmpl['id'] + template_size = tmpl['size'] + + if template_size > count_threshold: + high_freq_templates.append(tmpl) + high_freq_cluster_ids.add(cluster_id) + else: + rare_templates.append(tmpl) + rare_cluster_ids.add(cluster_id) + else: + # ── PARETO-BASED (fallback): cumulative coverage threshold ── + threshold_lines = total_lines * freq_config.high_freq_cumulative_threshold + cumulative_lines = 0 + + for tmpl in sorted_templates: + cluster_id = tmpl['id'] + template_size = tmpl['size'] + + # Check if this template should be forced into "rare" category + # based on absolute size threshold (if configured) + if (freq_config.rare_absolute_max_size is not None + and template_size <= freq_config.rare_absolute_max_size): + rare_templates.append(tmpl) + rare_cluster_ids.add(cluster_id) + continue + + # Pareto classification + if cumulative_lines < threshold_lines: + high_freq_templates.append(tmpl) + high_freq_cluster_ids.add(cluster_id) + cumulative_lines += template_size + else: + rare_templates.append(tmpl) + rare_cluster_ids.add(cluster_id) + + # Split cluster_to_lines based on classification + high_freq_cluster_to_lines = { + cid: lines for cid, lines in cluster_to_lines.items() + if cid in high_freq_cluster_ids + } + rare_cluster_to_lines = { + cid: lines for cid, lines in cluster_to_lines.items() + if cid in rare_cluster_ids + } + + # Calculate stats + high_freq_lines = sum(t['size'] for t in high_freq_templates) + rare_lines = sum(t['size'] for t in rare_templates) + + return { + 'high_freq': { + 'templates': high_freq_templates, + 'cluster_to_lines': high_freq_cluster_to_lines, + 'cluster_ids': high_freq_cluster_ids, + 'total_lines': high_freq_lines, + 'stats': { + 'template_count': len(high_freq_templates), + 'line_coverage_pct': (high_freq_lines / total_lines * 100) if total_lines > 0 else 0, + }, + }, + 'rare': { + 'templates': rare_templates, + 'cluster_to_lines': rare_cluster_to_lines, + 'cluster_ids': rare_cluster_ids, + 'total_lines': rare_lines, + 'stats': { + 'template_count': len(rare_templates), + 'line_coverage_pct': (rare_lines / total_lines * 100) if total_lines > 0 else 0, + }, + }, + } + + +def save_high_freq_summary( + template_list: List[Dict], + cluster_to_lines: Dict[int, List[str]], + output_dir: str, + level_suffix: str, + filename_prefix: Optional[str] = None, + sample_count: int = 1, +) -> str: + """ + Save sampled log lines for high-frequency error templates. + + Instead of dumping every line (which can be 10k+), this applies + **per-template sampling**: for each template cluster, pick 7 + representative lines (first 3, middle 1, last 3) ordered by + timestamp. If a template has fewer than 7 lines, all lines are + kept. + + Additionally, a companion **template file** is saved alongside the + log-lines file. It lists each template string with its cluster + size, making it easy to see which patterns dominate. + + Args: + template_list: List of high-frequency templates (sorted by size desc) + cluster_to_lines: Mapping of cluster_id -> original lines + output_dir: Output directory + level_suffix: Level name (e.g., 'Error_HighFreq') + filename_prefix: Optional filename prefix + sample_count: Ignored (kept for backward compatibility) + + Returns: + Path to the saved sampled-log-lines file + """ + output_path = Path(output_dir) + output_path.mkdir(parents=True, exist_ok=True) + + if filename_prefix: + filename = output_path / f"{filename_prefix}_highfreq_error.txt" + template_filename = output_path / f"{filename_prefix}_highfreq_error_templates.txt" + else: + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") + filename = output_path / f"log_classification_highfreq_error_{timestamp}.txt" + template_filename = output_path / f"log_classification_highfreq_error_templates_{timestamp}.txt" + + # ── Per-template sampling: first 3, middle 1, last 3 ── + all_sampled_lines = [] + for tmpl in template_list: + cid = tmpl['id'] + lines = cluster_to_lines.get(cid, []) + if not lines: + continue + sampled = sample_lines_by_timestamp(lines, first_n=3, middle_n=1, last_n=3) + all_sampled_lines.extend(sampled) + + # Write sampled log lines + with open(filename, 'w', encoding='utf-8') as f: + for line in all_sampled_lines: + f.write(line + "\n") + + # ── Save companion template file ── + with open(template_filename, 'w', encoding='utf-8') as f: + f.write(f"# High-Frequency Error Templates ({len(template_list)} templates)\n") + f.write(f"# Each template shown with cluster size (number of matching log lines)\n") + f.write("=" * 80 + "\n\n") + for i, tmpl in enumerate(template_list, 1): + cid = tmpl['id'] + size = tmpl.get('size', len(cluster_to_lines.get(cid, []))) + template_text = tmpl.get('template', '(unknown)') + f.write(f"Template {i} | cluster_id={cid} | lines={size}\n") + f.write(f" {template_text}\n\n") + + return str(filename) + + +def save_rare_priority_templates( + template_list: List[Dict], + cluster_to_lines: Dict[int, List[str]], + logs: List[Tuple[str, str]], + event_ids: List, + output_dir: str, + level_suffix: str, + filename_prefix: Optional[str] = None, + max_original_lines_per_cluster: int = 5000, +) -> str: + """ + Save only the log lines for rare/priority error templates (no templates/headers). + These are the log lines from templates outside the Pareto threshold - priority for debugging. + Also saves a companion template file listing each template with its cluster size. + + Args: + template_list: List of rare templates (sorted by size desc) + cluster_to_lines: Mapping of cluster_id -> original lines + logs: List of (file_path, line) tuples (unused) + event_ids: Event IDs from Drain3 (unused) + output_dir: Output directory + level_suffix: Level name (e.g., 'Error_Rare') + filename_prefix: Optional filename prefix + max_original_lines_per_cluster: Ignored + + Returns: + Path to saved file + """ + output_path = Path(output_dir) + output_path.mkdir(parents=True, exist_ok=True) + + if filename_prefix: + filename = output_path / f"{filename_prefix}_rare_error.txt" + template_filename = output_path / f"{filename_prefix}_rare_error_templates.txt" + else: + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") + filename = output_path / f"log_classification_rare_error_{timestamp}.txt" + template_filename = output_path / f"log_classification_rare_error_templates_{timestamp}.txt" + + # Collect all log lines from all rare clusters + all_lines = [] + for tmpl in template_list: + cid = tmpl['id'] + lines = cluster_to_lines.get(cid, []) + all_lines.extend(lines) + + # Write only the log lines + with open(filename, 'w', encoding='utf-8') as f: + for line in all_lines: + f.write(line + "\n") + + # ── Save companion template file ── + with open(template_filename, 'w', encoding='utf-8') as f: + f.write(f"# Rare/Priority Error Templates ({len(template_list)} templates)\n") + f.write(f"# Each template shown with cluster size (number of matching log lines)\n") + f.write("=" * 80 + "\n\n") + for i, tmpl in enumerate(template_list, 1): + cid = tmpl['id'] + size = tmpl.get('size', len(cluster_to_lines.get(cid, []))) + template_text = tmpl.get('template', '(unknown)') + f.write(f"Template {i} | cluster_id={cid} | lines={size}\n") + f.write(f" {template_text}\n\n") + + return str(filename) + + +# ============================================================================= +# MAIN PROCESSING FUNCTION +# ============================================================================= +def process_log_file( + file_path: str, + config: Optional[PipelineConfig] = None, + config_path: Optional[str] = None, + **overrides +) -> Dict: + """ + Main function to process a single log file. + + Configuration is loaded in the following priority: + 1. Explicit config object passed as parameter + 2. Config loaded from config_path JSON file + 3. Config loaded from log_config.json (auto-detected) + 4. Default configuration + + Override parameters (passed as **kwargs) can override config values: + - output_dir: Output directory for template files + - use_chunk_pipeline: Force branch selection (None=auto, True=chunk, False=entire) + - parallel_chunks: For CHUNK pipeline: True = parallel, False = sequential + - chunk_size: Lines per chunk + - chunk_workers: Workers for parallel chunk processing + - file_size_threshold_mb: Threshold for auto branch selection + + TWO BRANCHES: + 1. ENTIRE FILE: Loads entire file into memory, processes at once + 2. CHUNK: Reads file in chunks, processes each chunk + - SEQUENTIAL: Chunks processed one at a time + - PARALLEL: Chunks processed in parallel + + Returns: + Dict with processing results: + - file_path: Input file path + - branch_used: 'ENTIRE_FILE' or 'CHUNK_SEQUENTIAL' or 'CHUNK_PARALLEL' + - file_size_mb: File size in MB + - elapsed_ms: Processing time + - saved_files: Dict of level -> output file path + - summary: Dict of level -> {count, templates_count, path} + - config_used: Configuration file path or 'default' + - error: Error message if failed + """ + if not DRAIN3_AVAILABLE: + return { + "file_path": file_path, + "error": "drain3 not installed. pip install drain3", + } + + # Validate file exists + if not Path(file_path).exists(): + return { + "file_path": file_path, + "error": f"File not found: {file_path}", + } + + # Load configuration + if config is not None: + pass # Use provided config + elif config_path: + config = load_config(config_path) + else: + config = get_config() + + # Apply overrides from kwargs + if 'output_dir' in overrides and overrides['output_dir'] is not None: + config.output_dir = overrides['output_dir'] + if 'use_chunk_pipeline' in overrides: + config.use_chunk_pipeline = overrides['use_chunk_pipeline'] + if 'parallel_chunks' in overrides: + config.parallel_chunks = overrides['parallel_chunks'] + if 'chunk_size' in overrides: + config.chunk_size = overrides['chunk_size'] + if 'chunk_workers' in overrides: + config.chunk_workers = overrides['chunk_workers'] + if 'file_size_threshold_mb' in overrides: + config.file_size_threshold_mb = overrides['file_size_threshold_mb'] + + # Set default output directory if not specified + if config.output_dir is None: + config.output_dir = str(Path(__file__).parent / "output") + + # Get file info + try: + file_size_mb = os.path.getsize(file_path) / (1024 * 1024) + except: + file_size_mb = 0 + + # Determine which branch to use + if config.use_chunk_pipeline is None: + # Auto-select based on file size + use_chunk = file_size_mb > config.file_size_threshold_mb + else: + use_chunk = config.use_chunk_pipeline + + # Determine branch name for reporting + if use_chunk: + branch_used = "CHUNK_PARALLEL" if config.parallel_chunks else "CHUNK_SEQUENTIAL" + else: + branch_used = "ENTIRE_FILE" + + level_names = {'E': 'Error', 'W': 'Warning', 'I': 'Information', 'UNKNOWN': 'Unknown'} + stem = Path(file_path).stem or Path(file_path).name + + if config.print_progress: + print(f"\n{'='*60}") + print(f"Processing: {Path(file_path).name}") + print(f"File size: {file_size_mb:.2f} MB") + print(f"Branch: {branch_used}") + if use_chunk: + print(f"Chunk size: {config.chunk_size:,} lines") + if config.parallel_chunks: + workers = config.chunk_workers or f"auto (up to {min(multiprocessing.cpu_count(), 8)})" + print(f"Chunk workers: {workers}") + print(f"{'='*60}") + + # ========================================================================= + # STEP 1: Read and Categorize (based on branch) + # ========================================================================= + start_time = time.perf_counter() + + try: + if use_chunk: + # BRANCH 2: CHUNK PIPELINE + by_level = chunk_pipeline(file_path, config) + else: + # BRANCH 1: ENTIRE FILE PIPELINE + by_level = entire_file_pipeline(file_path, config) + except Exception as e: + return { + 'file_path': file_path, + 'error': str(e), + 'branch_used': branch_used, + 'file_size_mb': file_size_mb, + } + + categorize_time = time.perf_counter() - start_time + + if not by_level: + return { + 'file_path': file_path, + 'error': None, + 'branch_used': branch_used, + 'file_size_mb': file_size_mb, + 'saved_files': {}, + 'summary': {}, + 'elapsed_ms': categorize_time * 1000, + } + + # ========================================================================= + # STEP 2: Process with Drain3 (initial pass for all levels) + # ========================================================================= + saved_files = {} + summary = {} + level_results = {} + + # First pass: Process all levels with Drain3 + for level in config.levels_to_process: + level_data = by_level.get(level, {}) + # Support both new format {"preprocessed": [...], "original": [...]} + # and old format (plain list) + if isinstance(level_data, dict) and "preprocessed" in level_data: + preprocessed_lines = level_data["preprocessed"] + original_lines = level_data["original"] + elif isinstance(level_data, list): + preprocessed_lines = level_data + original_lines = level_data # fallback: no originals available + else: + continue + if not preprocessed_lines: + continue + + # Process with Drain3 using PREPROCESSED lines (timestamp-free, better clustering) + cluster_sizes, template_list, event_ids = process_lines_with_drain3( + preprocessed_lines, config + ) + + # Build cluster-to-lines mapping using ORIGINAL lines (with timestamps) + # so output files contain the full original log lines + cluster_to_lines = build_cluster_to_lines(original_lines, event_ids) + + level_results[level] = { + 'lines': original_lines, # original lines for output + 'preprocessed_lines': preprocessed_lines, # kept for internal use + 'template_list': template_list, + 'cluster_sizes': cluster_sizes, + 'event_ids': event_ids, + 'cluster_to_lines': cluster_to_lines, + } + + # ========================================================================= + # STEP 3: Classify templates in W/I/U -> Error templates, Config templates, Regular + # (Working at TEMPLATE level - entire clusters move together) + # ========================================================================= + classified_results = {} + error_templates_to_merge = [] # Error templates found in W/I/U + config_templates_to_merge = [] # Config templates found in W/I/U + + for level in ['W', 'I', 'UNKNOWN']: + if level not in level_results: + continue + + result = level_results[level] + template_list = result['template_list'] + cluster_to_lines = result['cluster_to_lines'] + lines = result['lines'] + event_ids = result['event_ids'] + + # Classify templates into error, config, regular + classification = classify_templates_for_level( + level, template_list, cluster_to_lines, lines, event_ids + ) + + classified_results[level] = classification + + # Collect error templates to merge into Error level + if classification['error']['templates']: + error_templates_to_merge.append({ + 'source_level': level, + **classification['error'] + }) + if config.print_progress: + error_count = sum(len(v) for v in classification['error']['cluster_to_lines'].values()) + print(f" [Shift->Error] {len(classification['error']['templates'])} templates ({error_count} lines) from {level_names.get(level, level)}") + + # Collect config templates + if classification['config']['templates']: + config_templates_to_merge.append({ + 'source_level': level, + **classification['config'] + }) + if config.print_progress: + config_count = sum(len(v) for v in classification['config']['cluster_to_lines'].values()) + print(f" [Shift->Config] {len(classification['config']['templates'])} templates ({config_count} lines) from {level_names.get(level, level)}") + + # Update level results with only regular templates + regular = classification['regular'] + regular_lines, regular_event_ids = get_lines_for_clusters( + lines, event_ids, regular['cluster_ids'] + ) + + level_results[level] = { + 'lines': regular_lines, + 'template_list': regular['templates'], + 'cluster_sizes': {t['id']: t['size'] for t in regular['templates']}, + 'event_ids': regular_event_ids, + 'cluster_to_lines': regular['cluster_to_lines'], + } + + # ========================================================================= + # STEP 4: Merge error templates from W/I/U into Error level + # (Keep Drain3 templates - no re-processing needed) + # ========================================================================= + if error_templates_to_merge: + # Get existing Error level data + existing_error = level_results.get('E', { + 'lines': [], 'template_list': [], 'cluster_sizes': {}, + 'event_ids': [], 'cluster_to_lines': {} + }) + + # Merge error templates from W/I/U + merged_error_templates = list(existing_error.get('template_list', [])) + merged_error_cluster_to_lines = dict(existing_error.get('cluster_to_lines', {})) + merged_error_lines = list(existing_error.get('lines', [])) + merged_error_event_ids = list(existing_error.get('event_ids', [])) + + for error_data in error_templates_to_merge: + merged_error_templates.extend(error_data['templates']) + merged_error_cluster_to_lines.update(error_data['cluster_to_lines']) + # Get lines for these clusters from original data + source_level = error_data['source_level'] + if source_level in classified_results: + orig_lines = by_level.get(source_level, []) + orig_result = level_results.get(source_level, {}) + # Add lines belonging to error clusters + for cid, clines in error_data['cluster_to_lines'].items(): + merged_error_lines.extend(clines) + merged_error_event_ids.extend([cid] * len(clines)) + + level_results['E'] = { + 'lines': merged_error_lines, + 'template_list': merged_error_templates, + 'cluster_sizes': {t['id']: t['size'] for t in merged_error_templates}, + 'event_ids': merged_error_event_ids, + 'cluster_to_lines': merged_error_cluster_to_lines, + } + + # ========================================================================= + # STEP 5: Save templates for each level (filtered - without error/config templates) + # For Error level: apply Pareto/80-20 frequency classification + # ========================================================================= + frequency_stats = {} # Store frequency classification stats for return + + for level in config.levels_to_process: + if level not in level_results: + continue + + result = level_results[level] + lines = result.get('lines', []) + template_list = result.get('template_list', []) + cluster_sizes = result.get('cluster_sizes', {}) + event_ids = result.get('event_ids', []) + cluster_to_lines = result.get('cluster_to_lines', {}) + + if not template_list: + continue + + level_name = level_names.get(level, level) + + # Prepare logs tuple format for save_templates_to_file + level_logs = [(file_path, line) for line in lines] + + # ===================================================================== + # SPECIAL HANDLING FOR ERROR LEVEL: Tiered Output (Pareto/80-20) + # ===================================================================== + if level == 'E' and config.frequency.enable_tiered_error_output: + # Classify error templates by frequency + freq_classification = classify_templates_by_frequency( + template_list, cluster_to_lines, config.frequency + ) + + high_freq = freq_classification['high_freq'] + rare = freq_classification['rare'] + + # Store stats for return value + frequency_stats['Error'] = { + 'high_freq': high_freq['stats'], + 'rare': rare['stats'], + 'threshold_pct': config.frequency.high_freq_cumulative_threshold * 100, + } + + saved_error_paths = {} + + # Save HIGH-FREQUENCY templates (all lines included) + if high_freq['templates']: + high_freq_path = save_high_freq_summary( + high_freq['templates'], + high_freq['cluster_to_lines'], + config.output_dir, + level_name, + filename_prefix=stem, + ) + saved_error_paths['high_freq'] = high_freq_path + + if config.print_progress: + pct = high_freq['stats']['line_coverage_pct'] + print(f" [highfreq_error] {high_freq['total_lines']:,} lines -> " + f"{len(high_freq['templates'])} templates ({pct:.1f}% coverage)") + + # Save RARE/PRIORITY templates (full detail) + if rare['templates']: + rare_logs = [(file_path, line) for cid in rare['cluster_ids'] + for line in rare['cluster_to_lines'].get(cid, [])] + rare_event_ids = [cid for cid in rare['cluster_ids'] + for _ in rare['cluster_to_lines'].get(cid, [])] + + rare_path = save_rare_priority_templates( + rare['templates'], + rare['cluster_to_lines'], + rare_logs, + rare_event_ids, + config.output_dir, + level_name, + filename_prefix=stem, + ) + saved_error_paths['rare'] = rare_path + + if config.print_progress: + pct = rare['stats']['line_coverage_pct'] + print(f" [rare_error] {rare['total_lines']:,} lines -> " + f"{len(rare['templates'])} templates ({pct:.1f}% coverage)") + + # Also save combined Error file for backward compatibility + saved_path = save_templates_to_file( + template_list, cluster_sizes, level_logs, event_ids, + config.output_dir, level_name, filename_prefix=stem, + cluster_to_lines=cluster_to_lines, + ) + saved_error_paths['combined'] = saved_path + + saved_files[level_name] = saved_error_paths + summary[level_name] = { + 'count': len(lines), + 'templates_count': len(template_list), + 'paths': saved_error_paths, + 'frequency_classification': { + 'high_freq_templates': len(high_freq['templates']), + 'high_freq_lines': high_freq['total_lines'], + 'rare_templates': len(rare['templates']), + 'rare_lines': rare['total_lines'], + 'threshold_pct': config.frequency.high_freq_cumulative_threshold * 100, + }, + } + + if config.print_progress: + print(f" [Error] {len(lines):,} logs -> {len(template_list)} templates (combined)") + + else: + # ===================================================================== + # STANDARD HANDLING FOR OTHER LEVELS (W, I, UNKNOWN) + # ===================================================================== + # Save templates with all original lines + saved_path = save_templates_to_file( + template_list, cluster_sizes, level_logs, event_ids, + config.output_dir, level_name, filename_prefix=stem, + cluster_to_lines=cluster_to_lines, + ) + + saved_files[level_name] = saved_path + summary[level_name] = { + 'count': len(lines), + 'templates_count': len(template_list), + 'path': saved_path, + } + + if config.print_progress: + print(f" [{level_name}] {len(lines):,} logs -> {len(template_list)} templates") + + # ========================================================================= + # STEP 6: Save ConfigChanges templates (from W/I/U - keep Drain3 templates) + # ========================================================================= + if config_templates_to_merge: + # Merge all config templates (keeping Drain3 structure) + merged_config = merge_template_results([ + {'templates': d['templates'], 'cluster_to_lines': d['cluster_to_lines'], 'cluster_ids': d['cluster_ids']} + for d in config_templates_to_merge + ]) + + config_template_list = merged_config['templates'] + config_cluster_to_lines = merged_config['cluster_to_lines'] + + # Get all config lines + all_config_lines = [] + config_event_ids = [] + for cid, clines in config_cluster_to_lines.items(): + all_config_lines.extend(clines) + config_event_ids.extend([cid] * len(clines)) + + config_cluster_sizes = {t['id']: t['size'] for t in config_template_list} + + # Prepare logs tuple format + config_logs = [(file_path, line) for line in all_config_lines] + + # Save config changes templates (all lines included) + config_saved_path = save_templates_to_file( + config_template_list, config_cluster_sizes, config_logs, config_event_ids, + config.output_dir, "ConfigChanges", filename_prefix=stem, + cluster_to_lines=config_cluster_to_lines, + ) + + saved_files['ConfigChanges'] = config_saved_path + source_levels_list = [d['source_level'] for d in config_templates_to_merge] + summary['ConfigChanges'] = { + 'count': len(all_config_lines), + 'templates_count': len(config_template_list), + 'path': config_saved_path, + 'source_levels': source_levels_list, + } + + if config.print_progress: + source_levels_str = ', '.join(level_names.get(l, l) for l in source_levels_list) + print(f" [ConfigChanges] {len(all_config_lines):,} logs -> {len(config_template_list)} templates (from {source_levels_str})") + + elapsed_ms = (time.perf_counter() - start_time) * 1000 + + # Calculate stats for return value + shifted_error_count = sum( + sum(len(v) for v in d['cluster_to_lines'].values()) + for d in error_templates_to_merge + ) if error_templates_to_merge else 0 + + config_by_level = { + level_names.get(d['source_level'], d['source_level']): sum(len(v) for v in d['cluster_to_lines'].values()) + for d in config_templates_to_merge + } if config_templates_to_merge else {} + + if config.print_progress: + print(f"\nCompleted in {elapsed_ms:.2f} ms") + print(f"Output: {config.output_dir}") + if shifted_error_count > 0: + print(f"Note: {shifted_error_count} lines shifted from W/I/Unknown to Error") + if frequency_stats: + err_stats = frequency_stats.get('Error', {}) + if err_stats: + hf = err_stats.get('high_freq', {}) + rare = err_stats.get('rare', {}) + print(f"Error frequency split: {hf.get('template_count', 0)} high-freq templates " + f"({hf.get('line_coverage_pct', 0):.1f}%), " + f"{rare.get('template_count', 0)} rare/priority templates " + f"({rare.get('line_coverage_pct', 0):.1f}%)") + + return { + 'file_path': file_path, + 'error': None, + 'branch_used': branch_used, + 'file_size_mb': file_size_mb, + 'elapsed_ms': elapsed_ms, + 'saved_files': saved_files, + 'summary': summary, + 'shifted_errors_count': shifted_error_count, + 'config_changes_by_level': config_by_level, + 'frequency_stats': frequency_stats, + } + + +# ============================================================================= +# AGENT INTERFACE - SINGLE POINT OF CONTACT +# ============================================================================= + +def analyze_logs( + file_path: str, + output_dir: Optional[str] = None, + config_path: Optional[str] = None, +) -> Dict: + """ + AGENT INTERFACE: Single point of contact for log analysis. + + All settings are controlled via log_config.json for consistent configuration. + + Args: + file_path: Path to the log file to analyze + output_dir: Output directory for generated files (None = use config) + config_path: Path to config JSON file (None = auto-detect) + + Returns: + Production-grade JSON response: + { + "status": "success" | "error", + "error": null | "error message", + "input": { + "file": "/path/to/input.log", + "size_mb": 12.5 + }, + "output_dir": "/path/to/output", + "elapsed_ms": 1234.56, + "files": { + "rare_errors": {"path": "...", "templates": 45, "lines": 1500}, + "highfreq_errors": {"path": "...", "templates": 5, "lines": 8500}, + "warnings": {"path": "...", "templates": 12, "lines": 340}, + "information": {"path": "...", "templates": 8, "lines": 200}, + "unknown": {"path": "...", "templates": 3, "lines": 50}, + "config_changes": {"path": "...", "templates": 7, "lines": 120} + }, + "totals": { + "templates": 80, + "lines": 10710 + }, + "error_analysis": { + "pareto_threshold": 0.80, + "highfreq": {"templates": 5, "lines": 8500, "coverage_pct": 85.0}, + "rare": {"templates": 45, "lines": 1500, "coverage_pct": 15.0} + } + } + """ + # Input validation + if not file_path: + return { + 'status': 'error', + 'error': 'file_path is required', + 'input': {'file': None, 'size_mb': 0}, + 'output_dir': None, + 'elapsed_ms': 0, + 'files': {}, + 'totals': {'templates': 0, 'lines': 0}, + 'error_analysis': None + } + + file_path = str(Path(file_path).resolve()) + + if not Path(file_path).exists(): + return { + 'status': 'error', + 'error': f'File not found: {file_path}', + 'input': {'file': file_path, 'size_mb': 0}, + 'output_dir': None, + 'elapsed_ms': 0, + 'files': {}, + 'totals': {'templates': 0, 'lines': 0}, + 'error_analysis': None + } + + if not DRAIN3_AVAILABLE: + return { + 'status': 'error', + 'error': 'drain3 library not installed. Install with: pip install drain3', + 'input': {'file': file_path, 'size_mb': 0}, + 'output_dir': None, + 'elapsed_ms': 0, + 'files': {}, + 'totals': {'templates': 0, 'lines': 0}, + 'error_analysis': None + } + + # Load configuration (all flags come from config file) + try: + config = load_config(config_path) + except Exception as e: + return { + 'status': 'error', + 'error': f'Failed to load configuration: {str(e)}', + 'input': {'file': file_path, 'size_mb': 0}, + 'output_dir': None, + 'elapsed_ms': 0, + 'files': {}, + 'totals': {'templates': 0, 'lines': 0}, + 'error_analysis': None + } + + # Apply output directory override + if output_dir: + config.output_dir = output_dir + + # Get flags from config + flags = config.output_flags + include_rare_errors = flags.include_rare_errors + include_highfreq_errors = flags.include_highfreq_errors + include_warnings = flags.include_warnings + include_information = flags.include_information + include_unknown = flags.include_unknown + include_config_changes = flags.include_config_changes + + # Determine which levels to process based on config flags + levels_needed = set() + if include_rare_errors or include_highfreq_errors: + levels_needed.add('E') + if include_warnings: + levels_needed.add('W') + if include_information: + levels_needed.add('I') + if include_unknown: + levels_needed.add('UNKNOWN') + if include_config_changes: + levels_needed.update(['W', 'I', 'UNKNOWN']) + + config.levels_to_process = list(levels_needed) if levels_needed else ['E', 'W', 'I', 'UNKNOWN'] + config.frequency.enable_tiered_error_output = include_rare_errors or include_highfreq_errors + + # Run processing with error handling + try: + result = process_log_file(file_path, config=config) + except Exception as e: + return { + 'status': 'error', + 'error': f'Processing failed: {str(e)}', + 'input': {'file': file_path, 'size_mb': 0}, + 'output_dir': config.output_dir, + 'elapsed_ms': 0, + 'files': {}, + 'totals': {'templates': 0, 'lines': 0}, + 'error_analysis': None + } + + # Error response from process_log_file + if result.get('error'): + return { + 'status': 'error', + 'error': result['error'], + 'input': {'file': file_path, 'size_mb': result.get('file_size_mb', 0)}, + 'output_dir': config.output_dir, + 'elapsed_ms': result.get('elapsed_ms', 0), + 'files': {}, + 'totals': {'templates': 0, 'lines': 0}, + 'error_analysis': None + } + + # Build file outputs + files = {} + total_templates = 0 + total_lines = 0 + + saved_files = result.get('saved_files', {}) + summary = result.get('summary', {}) + + # Error outputs (tiered) + error_data = saved_files.get('Error', {}) + error_summary = summary.get('Error', {}) + freq_class = error_summary.get('frequency_classification', {}) if isinstance(error_summary, dict) else {} + + if isinstance(error_data, dict): + if include_rare_errors and 'rare' in error_data: + t_count = freq_class.get('rare_templates', 0) + l_count = freq_class.get('rare_lines', 0) + files['rare_errors'] = {'path': error_data['rare'], 'templates': t_count, 'lines': l_count} + total_templates += t_count + total_lines += l_count + + if include_highfreq_errors and 'high_freq' in error_data: + t_count = freq_class.get('high_freq_templates', 0) + l_count = freq_class.get('high_freq_lines', 0) + files['highfreq_errors'] = {'path': error_data['high_freq'], 'templates': t_count, 'lines': l_count} + total_templates += t_count + total_lines += l_count + elif isinstance(error_data, str) and (include_rare_errors or include_highfreq_errors): + t_count = error_summary.get('templates_count', 0) + l_count = error_summary.get('count', 0) + files['errors'] = {'path': error_data, 'templates': t_count, 'lines': l_count} + total_templates += t_count + total_lines += l_count + + # Warning output + if include_warnings and 'Warning' in saved_files: + s = summary.get('Warning', {}) + t_count, l_count = s.get('templates_count', 0), s.get('count', 0) + files['warnings'] = {'path': saved_files['Warning'], 'templates': t_count, 'lines': l_count} + total_templates += t_count + total_lines += l_count + + # Information output + if include_information and 'Information' in saved_files: + s = summary.get('Information', {}) + t_count, l_count = s.get('templates_count', 0), s.get('count', 0) + files['information'] = {'path': saved_files['Information'], 'templates': t_count, 'lines': l_count} + total_templates += t_count + total_lines += l_count + + # Unknown output + if include_unknown and 'Unknown' in saved_files: + s = summary.get('Unknown', {}) + t_count, l_count = s.get('templates_count', 0), s.get('count', 0) + files['unknown'] = {'path': saved_files['Unknown'], 'templates': t_count, 'lines': l_count} + total_templates += t_count + total_lines += l_count + + # ConfigChanges output + if include_config_changes and 'ConfigChanges' in saved_files: + s = summary.get('ConfigChanges', {}) + t_count, l_count = s.get('templates_count', 0), s.get('count', 0) + files['config_changes'] = {'path': saved_files['ConfigChanges'], 'templates': t_count, 'lines': l_count} + total_templates += t_count + total_lines += l_count + + # Error analysis (Pareto stats) + error_analysis = None + freq_stats = result.get('frequency_stats', {}).get('Error', {}) + if freq_stats: + hf = freq_stats.get('high_freq', {}) + rare = freq_stats.get('rare', {}) + error_analysis = { + 'pareto_threshold': config.frequency.high_freq_cumulative_threshold, + 'highfreq': { + 'templates': hf.get('template_count', 0), + 'lines': freq_class.get('high_freq_lines', 0), + 'coverage_pct': round(hf.get('line_coverage_pct', 0), 1) + }, + 'rare': { + 'templates': rare.get('template_count', 0), + 'lines': freq_class.get('rare_lines', 0), + 'coverage_pct': round(rare.get('line_coverage_pct', 0), 1) + } + } + + return { + 'status': 'success', + 'error': None, + 'input': { + 'file': file_path, + 'size_mb': round(result.get('file_size_mb', 0), 2) + }, + 'output_dir': config.output_dir, + 'elapsed_ms': round(result.get('elapsed_ms', 0), 2), + 'files': files, + 'totals': { + 'templates': total_templates, + 'lines': total_lines + }, + 'error_analysis': error_analysis + } + + +# ============================================================================= +# UTILITY FUNCTIONS +# ============================================================================= +def get_file_info(file_path: str) -> Dict: + """Get file size and line count info.""" + try: + size_bytes = os.path.getsize(file_path) + size_mb = size_bytes / (1024 * 1024) + + with open(file_path, 'r', encoding='utf-8', errors='ignore') as f: + line_count = sum(1 for _ in f) + + return { + 'path': file_path, + 'name': Path(file_path).name, + 'size_mb': size_mb, + 'line_count': line_count, + } + except Exception as e: + return { + 'path': file_path, + 'name': Path(file_path).name, + 'size_mb': 0, + 'line_count': 0, + 'error': str(e), + } + + +def compare_branches(file_path: str, output_base: str = None) -> Dict: + """ + Compare all three processing modes on the same file. + + Runs: + 1. ENTIRE_FILE branch + 2. CHUNK_SEQUENTIAL branch + 3. CHUNK_PARALLEL branch + + Returns comparison results with timing for each. + """ + if output_base is None: + output_base = str(Path(__file__).parent / "comparison_output") + + file_info = get_file_info(file_path) + print(f"\n{'='*80}") + print(f"BRANCH COMPARISON: {file_info['name']}") + print(f"Size: {file_info['size_mb']:.2f} MB, Lines: {file_info.get('line_count', 'N/A'):,}") + print(f"{'='*80}") + + results = {} + + # 1. ENTIRE FILE branch + print("\n[1/3] Running ENTIRE_FILE branch...") + results['entire_file'] = process_log_file( + file_path, + output_dir=f"{output_base}/entire_file", + use_chunk_pipeline=False, + ) + + # 2. CHUNK SEQUENTIAL branch + print("\n[2/3] Running CHUNK_SEQUENTIAL branch...") + results['chunk_sequential'] = process_log_file( + file_path, + output_dir=f"{output_base}/chunk_sequential", + use_chunk_pipeline=True, + parallel_chunks=False, + ) + + # 3. CHUNK PARALLEL branch + print("\n[3/3] Running CHUNK_PARALLEL branch...") + results['chunk_parallel'] = process_log_file( + file_path, + output_dir=f"{output_base}/chunk_parallel", + use_chunk_pipeline=True, + parallel_chunks=True, + ) + + # Print comparison + print(f"\n{'='*80}") + print("TIMING COMPARISON") + print(f"{'='*80}") + + for name, result in results.items(): + elapsed = result.get('elapsed_ms', 0) + branch = result.get('branch_used', 'N/A') + print(f" {name:20s}: {elapsed:>10.2f} ms ({branch})") + + # Find fastest + times = {k: v.get('elapsed_ms', float('inf')) for k, v in results.items()} + fastest = min(times, key=times.get) + print(f"\n FASTEST: {fastest} ({times[fastest]:.2f} ms)") + + return { + 'file_info': file_info, + 'results': results, + 'fastest': fastest, + } + + +# ============================================================================= +# MAIN +# ============================================================================= +def main(): + """ + Main function demonstrating the pipeline. + + Usage: + python testing-log.py # Use default test file with analyze_logs + python testing-log.py file.log # Process single file with analyze_logs + python testing-log.py file.log --analyze # Use analyze_logs (default, explicit) + python testing-log.py file.log --legacy # Use legacy process_log_file + python testing-log.py file.log --compare # Compare all branches + python testing-log.py file.log --config path # Use specific config file + python testing-log.py file.log --output dir # Specify output directory + python testing-log.py file.log --chunk # Force chunk pipeline (legacy mode) + python testing-log.py file.log --entire # Force entire file pipeline (legacy mode) + python testing-log.py file.log --sequential # Force sequential chunk processing (legacy mode) + """ + import sys + import json as json_module + + script_dir = Path(__file__).parent + + # Parse arguments + args = sys.argv[1:] + + # Parse flags + analyze_mode = '--analyze' in args or '--legacy' not in args # Default to analyze mode + legacy_mode = '--legacy' in args + compare_mode = '--compare' in args + force_chunk = '--chunk' in args + force_entire = '--entire' in args + force_sequential = '--sequential' in args + + # Parse --config and --output options + config_path = None + output_dir = None + + filtered_args = [] + i = 0 + while i < len(args): + if args[i] == '--config' and i + 1 < len(args): + config_path = args[i + 1] + i += 2 + elif args[i] == '--output' and i + 1 < len(args): + output_dir = args[i + 1] + i += 2 + elif args[i] not in ['--compare', '--chunk', '--entire', '--sequential', '--analyze', '--legacy']: + filtered_args.append(args[i]) + i += 1 + else: + i += 1 + + args = filtered_args + + # Get file path + if args: + file_path = str(Path(args[0]).resolve()) + else: + # Default test files + default_files = [ + script_dir / "current.log", + script_dir / 'crio_service.log', + script_dir / "kubelet_service.log", + ] + for f in default_files: + if f.exists(): + file_path = str(f) + break + else: + print("Error: No log file found.") + print("\nUsage: python testing-log.py [OPTIONS]") + print("\nOptions:") + print(" --analyze Use analyze_logs function (default)") + print(" --legacy Use legacy process_log_file function") + print(" --config Use specific config file") + print(" --output Specify output directory") + print(" --compare Compare all branches (legacy mode)") + print(" --chunk Force chunk pipeline (legacy mode)") + print(" --entire Force entire file pipeline (legacy mode)") + print(" --sequential Force sequential chunk processing (legacy mode)") + sys.exit(1) + + # Validate file exists + if not Path(file_path).exists(): + print(f"Error: File not found: {file_path}") + sys.exit(1) + + # Check drain3 + if not DRAIN3_AVAILABLE: + print("Error: drain3 is not installed. Install with: pip install drain3") + sys.exit(1) + + # ========================================================================= + # MODE: analyze_logs (NEW - default) + # ========================================================================= + if analyze_mode and not legacy_mode and not compare_mode: + print("\n" + "=" * 60) + print("ANALYZE LOGS MODE (Agent Interface)") + print("=" * 60) + print(f"File: {file_path}") + print(f"Config: {config_path or 'auto-detect'}") + print(f"Output: {output_dir or 'auto'}") + print("=" * 60 + "\n") + + # Call analyze_logs + result = analyze_logs( + file_path=file_path, + output_dir=output_dir, + config_path=config_path, + ) + + # Print JSON result + print("\n" + "=" * 60) + print("JSON RESPONSE") + print("=" * 60) + print(json_module.dumps(result, indent=2)) + print("=" * 60) + + if result['status'] == 'error': + sys.exit(1) + + # ========================================================================= + # MODE: Legacy (process_log_file) + # ========================================================================= + else: + # Load config (will auto-detect log_config.json if config_path not specified) + config = load_config(config_path) + + # Apply command-line overrides + overrides = {} + if output_dir: + overrides['output_dir'] = output_dir + if force_chunk: + overrides['use_chunk_pipeline'] = True + if force_entire: + overrides['use_chunk_pipeline'] = False + if force_sequential: + overrides['parallel_chunks'] = False + + if compare_mode: + # Compare all branches + compare_branches(file_path) + else: + # Process with config + result = process_log_file(file_path, config=config, **overrides) + if result.get('error'): + print(f"Error: {result['error']}") + sys.exit(1) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/intelliaide/Machine-learning/ML_YAML_CLASSIFICATION.py b/intelliaide/Machine-learning/ML_YAML_CLASSIFICATION.py new file mode 100644 index 0000000..0551d1a --- /dev/null +++ b/intelliaide/Machine-learning/ML_YAML_CLASSIFICATION.py @@ -0,0 +1,1210 @@ +""" +ML YAML Classification Module + +This module receives critical fields extracted from YAML objects (as JSON) +and classifies them using Drain3-based ML algorithm. +Only critical field values are processed - no line numbers are used. +""" + +import json +import re +from typing import List, Dict, Tuple, Optional, Any +from collections import Counter, defaultdict +from datetime import datetime +from pathlib import Path +import yaml +import os + +# QUIET MODE: Check if orchestrator has enabled quiet mode +def _is_quiet(): + """Check if orchestrator has enabled quiet mode via environment variable""" + return os.environ.get('ORCHESTRATOR_QUIET', '0') == '1' + +# LOAD ERROR PATTERN CONFIGURATION FROM CONFIG FILE + +def _load_error_pattern_config() -> Dict[str, Any]: + """Load error pattern configuration from config/yaml_processing.yaml""" + config_path = Path(__file__).parent / "config" / "yaml_processing.yaml" + + # Default fallback configuration + default_config = { + "error_patterns": { + "verbose_patterns": [ + "not progressing", "not available", "not ready", "not healthy", + "halted", "stopped", "degraded", "unavailable", "down", + "timeout", "timed out", "missing", "not found", "denied", + "forbidden", "stuck", "waiting" + ], + "explicit_keywords": ["error", "failed", "failure", "exception", "critical", "fatal"], + "excluded_key_patterns": ["failure-domain", "topology.kubernetes.io", + "node.kubernetes.io", "failurepolicy"] + }, + "classification": { + "common_pattern_threshold": 0.30, + "majority_threshold": 0.10, + "error_threshold": 0.01 + } + } + + # Try to load from config file + if config_path.exists(): + try: + with open(config_path, 'r') as f: + loaded_config = yaml.safe_load(f) + if loaded_config and "error_patterns" in loaded_config: + # Merge with defaults + default_config.update(loaded_config) + except Exception as e: + if not _is_quiet(): + print(f"[Warning] Could not load error patterns from config: {e}") + print("[Warning] Using default error patterns") + + return default_config + + +# Load configuration once at module import time +_ERROR_CONFIG = _load_error_pattern_config() + +# Create convenient accessors for use throughout the module +VERBOSE_ERROR_PATTERNS = _ERROR_CONFIG.get("error_patterns", {}).get("verbose_patterns", []) +EXPLICIT_ERROR_KEYWORDS = _ERROR_CONFIG.get("error_patterns", {}).get("explicit_keywords", []) +EXCLUDED_KEY_PATTERNS = _ERROR_CONFIG.get("error_patterns", {}).get("excluded_key_patterns", []) + +def flatten_critical_fields_to_string(critical_fields_data: Dict[str, Any]) -> str: + """ + Flatten critical fields JSON structure into a string for Drain3 processing. + Recursively extracts all key-value pairs from nested JSON structure. + Line numbers are excluded - only field paths and values are used. + + Args: + critical_fields_data: Dictionary containing critical fields (nested structure) + Example: {"metadata": {"name": "authentication"}, + "status": {"conditions": [...]}} + + Returns: + Flattened string representation: "metadata.name: authentication, status.conditions.type: Degraded, ..." + """ + kv_pairs = [] + + def extract_kv_pairs(obj: Any, prefix: str = ""): + """Recursively extract key-value pairs from nested structure.""" + if isinstance(obj, dict): + # Check if this dict represents a semantic unit (type+status pair) + if _is_semantic_unit(obj): + # Combine related fields into one string + combined = _combine_semantic_fields(obj) + if combined: + kv_pairs.append(f"{prefix}: {combined}") + return # Don't recurse further + + # Normal dict processing + for key, value in obj.items(): + if key == "_line_numbers" or key.endswith("_line_numbers"): + continue + + current_path = f"{prefix}.{key}" if prefix else key + + if isinstance(value, dict): + extract_kv_pairs(value, current_path) + elif isinstance(value, list): + for idx, item in enumerate(value): + if isinstance(item, dict): + extract_kv_pairs(item, f"{current_path}[{idx}]") + else: + kv_pairs.append(f"{current_path}[{idx}]: {item}") + else: + kv_pairs.append(f"{current_path}: {value}") + + extract_kv_pairs(critical_fields_data) + return ", ".join(kv_pairs) + + +def _is_semantic_unit(obj: dict) -> bool: + """ + Check if a dict represents a semantic unit that should be combined. + Generic heuristic: If dict has 'type' + 'status' keys, it's likely a condition. + Or 'key' + 'value', 'name' + 'value', etc. + """ + keys = set(obj.keys()) - {'_line_numbers'} # Ignore metadata + + # Common patterns for semantic units: + # 1. type + status (Kubernetes conditions) + if 'type' in keys and 'status' in keys: + return True + + # 2. key + value (ConfigMaps, env vars) + if 'key' in keys and 'value' in keys: + return True + + # 3. name + value (labels, annotations) + if 'name' in keys and 'value' in keys: + return True + + return False + +def _combine_semantic_fields(obj: dict) -> str: + """ + Combine related fields into a single meaningful string. + Examples: + {"type": "Degraded", "status": "False"} → "Degraded=False" + {"key": "LOG_LEVEL", "value": "debug"} → "LOG_LEVEL=debug" + """ + # Remove metadata keys + clean_obj = {k: v for k, v in obj.items() if not k.endswith('_line_numbers')} + + # Pattern 1: type + status (most common) + if 'type' in clean_obj and 'status' in clean_obj: + type_val = clean_obj['type'] + status_val = clean_obj['status'] + # Include message/reason if present (but keep them short) + extras = [] + if 'reason' in clean_obj: + extras.append(f"reason={clean_obj['reason']}") + if 'message' in clean_obj: + # Truncate long messages + msg = str(clean_obj['message'])[:50] + extras.append(f"message={msg}") + + extra_str = f" ({', '.join(extras)})" if extras else "" + return f"{type_val}={status_val}{extra_str}" + + # Pattern 2: key + value + if 'key' in clean_obj and 'value' in clean_obj: + return f"{clean_obj['key']}={clean_obj['value']}" + + # Pattern 3: name + value + if 'name' in clean_obj and 'value' in clean_obj: + return f"{clean_obj['name']}={clean_obj['value']}" + + # Fallback: just combine all key=value pairs + pairs = [f"{k}={v}" for k, v in clean_obj.items()] + return ", ".join(pairs) + +def process_objects_with_drain3(critical_fields_list: List[Dict[str, Any]]) -> Tuple[Dict, List[Dict], Dict]: + """ + Process critical fields from multiple objects using Drain3 to extract templates. + + Args: + critical_fields_list: List of critical fields dictionaries (one per object) + Each dict contains the extracted critical fields structure + + Returns: + Tuple of (cluster_info_dict, template_list, object_to_cluster) + """ + try: + from drain3 import TemplateMiner + from drain3.template_miner_config import TemplateMinerConfig + except ImportError: + print("Error: drain3 library not installed. Please install it using: pip install drain3") + raise + + # Configure Drain3 - create config programmatically + config = TemplateMinerConfig() + config.sim_th = 0.3 # Lower threshold for key-value pairs + config.depth = 4 + config.max_children = 100 + config.profiling_enabled = False + + # Set masking patterns + config.masking = [ + {"regex_pattern": r"(?<=:\s).+", "mask_with": "VALUE"}, # Mask all values after ": " + {"regex_pattern": r"\d+", "mask_with": "NUM"}, + {"regex_pattern": r"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", "mask_with": "UUID"}, + {"regex_pattern": r"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}", "mask_with": "TIMESTAMP"}, + ] + + # Create miner with config + miner = TemplateMiner(config=config) + + # Flatten each object's critical fields to string + object_strings = [] + for critical_fields_data in critical_fields_list: + flattened = flatten_critical_fields_to_string(critical_fields_data) + object_strings.append(flattened) + + # Process each object string + cluster_sizes = {} + cluster_templates = {} + object_to_cluster = {} # Map object index to cluster_id + + for idx, obj_string in enumerate(object_strings): + if not obj_string.strip(): + continue + + # Add to Drain3 + result = miner.add_log_message(obj_string) + cluster_id = result.get("cluster_id") + + if cluster_id: + object_to_cluster[idx] = cluster_id + + # Get all clusters with their templates + clusters = miner.drain.clusters + if not isinstance(clusters, dict): + clusters = {cid: cluster for cid, cluster in enumerate(clusters)} if hasattr(clusters, '__iter__') else {} + + # Build cluster information + template_list = [] + for cluster_id, cluster in clusters.items(): + if hasattr(cluster, 'get_template') and hasattr(cluster, 'size'): + cluster_sizes[cluster_id] = cluster.size + template = cluster.get_template() + cluster_templates[cluster_id] = template + template_list.append({ + 'id': cluster_id, + 'template': template, + 'size': cluster.size + }) + else: + # Alternative access method + try: + size = cluster.size if hasattr(cluster, 'size') else 1 + template = cluster.get_template() if hasattr(cluster, 'get_template') else str(cluster) + cluster_sizes[cluster_id] = size + cluster_templates[cluster_id] = template + template_list.append({ + 'id': cluster_id, + 'template': template, + 'size': size + }) + except (AttributeError, TypeError) as e: + if not _is_quiet(): + print(f"[ML YAML] Fallback for cluster {cluster_id}: {e}") + cluster_sizes[cluster_id] = 1 + template = f"cluster_{cluster_id}" + cluster_templates[cluster_id] = template + template_list.append({ + 'id': cluster_id, + 'template': template, + 'size': 1 + }) + + return cluster_sizes, template_list, object_to_cluster + + +def extract_key_value_pairs_from_critical_fields(critical_fields_data: Dict[str, Any]) -> List[Tuple[str, str]]: + """ + Extract flat list of (key_path, value) pairs from critical fields structure. + No line numbers - only paths and values. + + Args: + critical_fields_data: Dictionary containing critical fields + + Returns: + List of (key_path, value) tuples + """ + kv_pairs = [] + + def extract_pairs(obj: Any, prefix: str = ""): + if isinstance(obj, dict): + # Check if semantic unit + if _is_semantic_unit(obj): + combined = _combine_semantic_fields(obj) + if combined: + kv_pairs.append((prefix, combined)) + return # Don't recurse + + # Normal processing + for key, value in obj.items(): + if key == "_line_numbers" or key.endswith("_line_numbers"): + continue + + current_path = f"{prefix}.{key}" if prefix else key + + if isinstance(value, dict): + extract_pairs(value, current_path) + elif isinstance(value, list): + for idx, item in enumerate(value): + if isinstance(item, dict): + extract_pairs(item, f"{current_path}[{idx}]") + else: + kv_pairs.append((f"{current_path}[{idx}]", str(item))) + else: + kv_pairs.append((current_path, str(value))) + + extract_pairs(critical_fields_data) + return kv_pairs + + +def detect_verbose_error(key: str, value: str) -> bool: + """ + Detect if a key-value pair indicates an error condition. + Uses generic linguistic patterns to detect positive vs negative contexts. + + Args: + key: The key path (e.g., "status.conditions.type") + value: The value + + Returns: + True if appears to be an error condition + """ + key_lower = key.lower() + value_lower = str(value).lower() + combined = f"{key_lower} {value_lower}" + + # Exclude known label/annotation patterns that contain error-like words but aren't errors + # Use patterns from config + excluded_key_patterns = EXCLUDED_KEY_PATTERNS + + for excluded_pattern in excluded_key_patterns: + if excluded_pattern in key_lower: + return False # Not an error, just a label/annotation name + + # Handle combined semantic values (e.g., "Degraded=False") + if '=' in value_lower: + # This is a combined field like "Degraded=False" or "Available=True" + # Split by the FIRST '=' only (in case message contains '=') + parts = value_lower.split('=', 1) + if len(parts) == 2: + field_name, field_value = parts[0].strip(), parts[1].strip() + + # Extract just the boolean part if there's extra context + # e.g., "false (reason=xyz)" → "false" + if '(' in field_value: + field_value = field_value.split('(')[0].strip() + + # Now check for error conditions based on field_name + field_value + + # 1. Degraded=True → ERROR + if field_name == 'degraded': + if field_value == 'true': + return True # Error condition + elif field_value == 'false': + return False # Healthy condition + + # 2. Available=False → ERROR + if field_name == 'available': + if field_value == 'false': + return True # Error condition + elif field_value == 'true': + return False # Healthy condition + + # 3. Ready=False → ERROR + if field_name == 'ready': + if field_value == 'false': + return True # Error condition + elif field_value == 'true': + return False # Healthy condition + + # 4. Healthy=False → ERROR + if field_name == 'healthy': + if field_value == 'false': + return True # Error condition + elif field_value == 'true': + return False # Healthy condition + + # 5. Progressing=True → MAYBE error (depends on context) + if field_name == 'progressing': + if field_value == 'true': + # Check if there's error context in the message/reason + if 'error' in value_lower or 'failed' in value_lower or 'unable' in value_lower: + return True # Error condition + # Otherwise, progressing is normal + return False + elif field_value == 'false': + return False # Not progressing is usually normal + + # 6. Failing=True → ERROR + if field_name == 'failing': + if field_value == 'true': + return True # Error condition + elif field_value == 'false': + return False # Healthy condition + + # 7. Upgradeable=False → MAYBE error (but often normal) + if field_name == 'upgradeable': + # Upgradeable=False is often normal during updates + # Only flag as error if there's explicit error context + if field_value == 'false' and ('error' in value_lower or 'failed' in value_lower): + return True + return False # Usually not an error + + # If we couldn't determine from the combined value, fall through to existing checks + + # Generic positive status words + positive_status_words = ['deployed', 'available', 'ready', 'healthy', 'running', 'active', + 'operational', 'functioning', 'working', 'completed', 'finished', + 'successful', 'successfully', 'done', 'replicas', 'replica'] + + # Generic negative status words + negative_status_words = ['unstarted', 'pending', 'waiting', 'stuck', 'hung', 'broken', + 'degraded', 'unhealthy', 'unavailable', 'down', 'halted', + 'stopped', 'paused', 'suspended', 'blocked'] + + # Negation words + negation_words = ['no', 'not', 'none', 'without', 'lack'] + + # Positive action verbs + positive_verbs = ['is', 'are', 'has', 'have', 'was', 'were'] + + # Check for explicit errors first + explicit_error_keywords = ['error', 'failed', 'failure', 'exception', 'critical', 'fatal'] + for keyword in explicit_error_keywords: + if keyword in combined: + return True + + # Check for positive status indicators with positive verbs + words = value_lower.split() + for i in range(len(words) - 1): + if words[i] in positive_verbs and any(pos_word in words[i+1] for pos_word in positive_status_words): + if i > 0 and words[i-1] in ['not', 'no']: + continue # "is not deployed" = error + return False # "is deployed" = positive, not an error + + # Check for negation + negative status word pattern + for i in range(len(words) - 1): + if words[i] in negation_words and any(neg_word in words[i+1] for neg_word in negative_status_words): + return False + + # Check for "all" + positive status + for i in range(len(words) - 1): + if words[i] == 'all' and any(pos_word in words[i+1] for pos_word in positive_status_words): + return False + + # Generic error patterns + error_patterns = [ + 'not progressing', 'not available', 'not ready', 'not healthy', + 'unable to reach', 'cannot connect', 'connection refused', 'connection failed', + 'out of memory', 'out of disk', 'resource exhausted', 'quota exceeded', + 'timeout', 'timed out', 'expired', + 'missing', 'not found', 'not exist', 'does not exist', + 'denied', 'forbidden', 'unauthorized', 'access denied', 'permission denied', + 'rejected', 'not allowed', + 'retry failed', 'retries exhausted', 'max retries', + ] + + # Check for error patterns + for pattern in error_patterns: + if pattern in value_lower: + return True + + # Check for negative status words + # BUT: Skip if value is in "key=value" format (already handled above) + if '=' not in value_lower: # Only check if NOT combined format + for neg_word in negative_status_words: + if neg_word in value_lower: + words_list = value_lower.split() + neg_index = -1 + for idx, word in enumerate(words_list): + if neg_word in word: + neg_index = idx + break + if neg_index > 0 and words_list[neg_index - 1] in negation_words: + continue # Negated, so it's positive + return True # Not negated, so it's an error + + # Check for status keys with negative values + # NOTE: "Status: False" and "Status: True" are common patterns and should NOT be treated as errors + # They are normal state indicators, not error conditions + status_keys = ['status', 'progressing', 'available', 'ready', 'healthy', 'condition'] + if any(status_key in key_lower for status_key in status_keys): + # "Status: True" is a positive indicator - never an error + if 'true' in value_lower or '1' in value_lower: + return False # "Status: True" is always positive, not an error + + # "Status: False" or "status: false" is a common pattern (e.g., "Progressing: False" means not progressing, which is normal) + # Only treat as error if combined with explicit error indicators + negative_values = ['false', '0', 'none', 'null'] + if any(neg_val in value_lower for neg_val in negative_values): + # Check if this is just a status indicator without error context + # "Status: False" alone is not an error - it's a normal state + # Only treat as error if there are additional error indicators + if 'degraded' in value_lower or 'error' in value_lower or 'failed' in value_lower: + return True + # "Status: False" without error context is NOT an error - return False + return False + + # "degraded" status is still an error indicator + if 'degraded' in value_lower: + if 'no' in value_lower: + words_list = value_lower.split() + for i in range(len(words_list) - 1): + if words_list[i] == 'no' and any(neg_word in words_list[i+1] for neg_word in negative_status_words): + return False # "no degraded" = positive + return True + + # Check for message/reason fields with error indicators + if 'message' in key_lower or 'reason' in key_lower: + error_indicators = ['unable', 'cannot', 'failed', 'error', 'issue', 'problem', + 'not working', 'not functioning', 'not responding'] + if any(indicator in value_lower for indicator in error_indicators): + return True + + return False + + +def detect_config_change(key: str, value: str) -> bool: + """ + Detect if a key-value pair indicates a configuration change. + + PRINCIPLE: Only flag changes to DESIRED STATE (spec, config, data) + NOT changes to OBSERVED STATE (status, metadata) + + Args: + key: The key path (e.g., "spec.image", "metadata.resourceVersion") + value: The value + + Returns: + True if appears to indicate a configuration change + """ + key_lower = key.lower() + value_lower = str(value).lower() + + # UNIVERSAL RULE: Config changes MUST be in user-controlled sections + # - spec.* = Desired state (Deployments, StatefulSets, etc.) + # - config.* = Configuration objects + # - data.* = ConfigMap/Secret data + # + # NOT in: + # - metadata.* = Kubernetes housekeeping (resourceVersion, uid, etc.) + # - status.* = Observed state (not desired state) + + # Extract the first section of the key path + path_parts = key_lower.split('.') + if len(path_parts) > 0: + first_section = path_parts[0] + + # EXCLUDE: metadata and status sections entirely + if first_section in ['metadata', 'status']: + return False # Housekeeping/observed state, not config + + # ONLY check for config changes in spec/config/data sections + if first_section not in ['spec', 'config', 'data']: + return False # Not a recognized config section + + # Now check for config change indicators within spec/config/data sections + + # Version/image changes (most common config changes) + if 'version' in key_lower or 'image' in key_lower: + return True + + # Resource scaling and limits + if any(indicator in key_lower for indicator in ['replicas', 'limits', 'requests', 'resources']): + return True + + # Environment variables, volumes, and mounts + if any(indicator in key_lower for indicator in ['env', 'volume', 'mount', 'secret', 'configmap']): + return True + + # Check if value contains change action verbs (e.g., "updated to version X") + change_verbs = ['update', 'change', 'modify', 'set', 'configure', 'adjust', + 'alter', 'edit', 'replace', 'switch', 'toggle', 'enable', 'disable'] + + if '=' not in value_lower: # Skip semantic values like "Available=True" + words = value_lower.split() + + for i in range(len(words)): + word = words[i] + + # Check if word contains a change verb + matched_verb = None + for verb in change_verbs: + if verb in word: + matched_verb = verb + break + + if matched_verb: + # Check for action context patterns + if i > 0 and words[i-1] in ['was', 'were', 'has', 'have', 'is', 'are', 'being', 'been']: + return True # e.g., "was updated", "has been changed" + + if i > 0 and words[i-1] == 'to': + return True # e.g., "updated to version 4.11" + + if i < len(words) - 1 and words[i+1] in ['to', 'from', 'with', 'version', 'image']: + return True # e.g., "changed to", "updated version" + + return False + +def analyze_verbose_error_patterns(critical_fields_list: List[Dict[str, Any]]) -> Dict[str, int]: + """ + Analyze all objects to find verbose error patterns and their frequencies. + + Args: + critical_fields_list: List of critical fields dictionaries (one per object) + + Returns: + Dictionary mapping verbose error patterns to their occurrence count + """ + pattern_counts = {} + + for critical_fields_data in critical_fields_list: + kv_pairs = extract_key_value_pairs_from_critical_fields(critical_fields_data) + object_patterns = set() + + for key_path, value in kv_pairs: + if detect_verbose_error(key_path, value): + key_lower = key_path.lower() + value_lower = str(value).lower() + combined = f"{key_lower} {value_lower}" + + # Use patterns from config instead of hardcoded list + verbose_error_patterns = VERBOSE_ERROR_PATTERNS + + # Find matching pattern + matched_pattern = None + + # If value is in "key=value" format, extract the actual error part + actual_value_for_matching = value_lower + if '=' in value_lower: + parts = value_lower.split('=', 1) + if len(parts) == 2: + value_part = parts[1].strip() + if '(' in value_part: + actual_value_for_matching = value_part.split('(', 1)[1].rstrip(')') + else: + actual_value_for_matching = "" + + for pattern in verbose_error_patterns: + search_string = f"{key_lower} {actual_value_for_matching}" + if pattern in search_string: + matched_pattern = pattern + break + + # Check for explicit error keywords if no pattern matched yet + if not matched_pattern: + explicit_errors = EXPLICIT_ERROR_KEYWORDS + for err in explicit_errors: + # Check in combined string (includes both key and value) + if err in combined: + matched_pattern = err + break + + # Also check for status keys with negative values + if not matched_pattern: + status_keys = ['status', 'progressing', 'available', 'ready', 'healthy', 'condition'] + negative_values = ['no', '0', 'none', 'null', 'unknown'] + + # "Status: False" is a common pattern, not an error - exclude it + if any(status_key in key_lower for status_key in status_keys): + if any(neg_val in value_lower for neg_val in negative_values): + matched_pattern = f"{key_lower}:{value_lower}" + # Only treat "false" as error if combined with other error indicators + elif 'false' in value_lower: + if 'error' in combined or 'failed' in combined: + matched_pattern = f"{key_lower}:{value_lower}_error" + # Otherwise, "Status: False" is normal - don't create error pattern + + # Also check for explicit error keywords + if not matched_pattern: + explicit_errors = ['error', 'failed', 'failure', 'exception', 'critical', 'fatal'] + for err in explicit_errors: + if err in combined: + matched_pattern = err + break + + # Use a simplified pattern if no specific match + if not matched_pattern: + # "Status: False" is a common pattern, not an error - don't mark as verbose error + # Only mark as error if combined with other error indicators + if 'false' in value_lower and any(sk in key_lower for sk in ['status', 'progressing', 'available']): + # Check if there are additional error indicators + if 'error' in combined or 'failed' in combined: + matched_pattern = f"status_false_error" + else: + # "Status: False" alone is not an error pattern - skip it + continue # Don't add this as a verbose error pattern + elif 'unknown' in value_lower: + matched_pattern = 'unknown' + else: + matched_pattern = 'other_verbose' + + object_patterns.add(matched_pattern) + + # Count each pattern once per object + for pattern in object_patterns: + pattern_counts[pattern] = pattern_counts.get(pattern, 0) + 1 + + return pattern_counts + + +def classify_objects( + critical_fields_list: List[Dict[str, Any]], + cluster_sizes: Dict, + template_list: List[Dict], + object_to_cluster: Dict[int, int], + frequency_threshold: float = 0.05 +) -> Tuple[List[Dict], Dict[str, int], Dict[str, int]]: + """ + Classify each object as 'Majority Error', 'Majority', 'CONFIG', or 'Error' based on frequency and patterns. + + Args: + critical_fields_list: List of critical fields dictionaries (one per object) + cluster_sizes: Dictionary of cluster_id -> size + template_list: List of template dictionaries + object_to_cluster: Map of object index to cluster_id + frequency_threshold: Threshold for majority (default 5% of total) + + Returns: + Tuple of (classifications, common_patterns, rare_patterns) + """ + if not cluster_sizes or not critical_fields_list: + return [], {}, {} + + total_objects = len(critical_fields_list) + total_clustered = sum(cluster_sizes.values()) + + # Step 1: Analyze verbose error patterns + pattern_counts = analyze_verbose_error_patterns(critical_fields_list) + + # Determine threshold for common patterns (from config) + common_threshold_pct = _ERROR_CONFIG.get("classification", {}).get("common_pattern_threshold", 0.30) + common_pattern_threshold = max(3, int(total_objects * common_threshold_pct)) + common_patterns = {pattern: count for pattern, count in pattern_counts.items() + if count >= common_pattern_threshold} + rare_patterns = {pattern: count for pattern, count in pattern_counts.items() + if count < common_pattern_threshold} + + if not _is_quiet(): + print(f"\nVerbose Error Pattern Analysis:") + print(f" Total objects analyzed: {total_objects}") + print(f" Common pattern threshold: {common_pattern_threshold} objects") + print(f" Common negative patterns (-> Majority Error): {len(common_patterns)}") + if common_patterns: + print(f" Examples: {', '.join(list(common_patterns.keys())[:5])}") + print(f" Rare patterns (-> Error): {len(rare_patterns)}") + if rare_patterns: + print(f" Examples: {', '.join(list(rare_patterns.keys())[:5])}") + + # Calculate frequency for each cluster + cluster_frequencies = {} + for cluster_id, size in cluster_sizes.items(): + frequency = size / total_clustered if total_clustered > 0 else 0 + cluster_frequencies[cluster_id] = frequency + + # Determine majority threshold + if cluster_frequencies: + frequencies = list(cluster_frequencies.values()) + median_freq = sorted(frequencies)[len(frequencies) // 2] if frequencies else 0 + majority_threshold = max(frequency_threshold, median_freq * 2) + else: + majority_threshold = frequency_threshold + + # Get thresholds from config (with fallbacks) + classification_config = _ERROR_CONFIG.get("classification", {}) + error_threshold = classification_config.get("error_threshold", 0.01) + # majority_threshold can be overridden if needed + config_majority_threshold = classification_config.get("majority_threshold", 0.10) + # Use the dynamic majority_threshold calculated above, but can be adjusted by config + + # Helper function to get verbose patterns in an object + def get_verbose_patterns_in_object(critical_fields_data): + """Get verbose error patterns found in an object.""" + patterns = set() + kv_pairs = extract_key_value_pairs_from_critical_fields(critical_fields_data) + + for key_path, value in kv_pairs: + if detect_verbose_error(key_path, value): + key_lower = key_path.lower() + value_lower = str(value).lower() + combined = f"{key_lower} {value_lower}" + + # Use the SAME pattern matching logic as analyze_verbose_error_patterns + verbose_error_patterns = VERBOSE_ERROR_PATTERNS + + matched_pattern = None + + # If value is in "key=value" format, extract the actual error part + actual_value_for_matching = value_lower + if '=' in value_lower: + # For "Degraded=False (message=...)", we want to check the message part, not "degraded" + # Split by '=' and only check after the first boolean value + parts = value_lower.split('=', 1) + if len(parts) == 2: + # Extract just the value part: "false (message=xyz)" + value_part = parts[1].strip() + # If there's a parenthesis (extra info), check that + if '(' in value_part: + actual_value_for_matching = value_part.split('(', 1)[1].rstrip(')') + else: + # Just the boolean value - skip pattern matching + # (already handled by detect_verbose_error) + actual_value_for_matching = "" + + # Check verbose_error_patterns FIRST (same order as analyze_verbose_error_patterns) + for pattern in verbose_error_patterns: + search_string = f"{key_lower} {actual_value_for_matching}" + if pattern in search_string: + matched_pattern = pattern + break + + # Check explicit errors SECOND if no pattern matched yet + if not matched_pattern: + explicit_errors = EXPLICIT_ERROR_KEYWORDS + for err in explicit_errors: + # Check in combined string (includes both key and value) + if err in combined: + matched_pattern = err + break + + # If still no match, check for other patterns (continue with existing code) + if not matched_pattern: + # "Status: False" is a common pattern, not an error - don't mark as verbose error + # Only mark as error if combined with other error indicators + if 'false' in value_lower and any(sk in key_lower for sk in ['status', 'progressing', 'available']): + # Check if there are additional error indicators + if 'error' in combined or 'failed' in combined: + matched_pattern = f"status_false_error" + else: + # "Status: False" alone is not an error pattern - skip it + continue # Don't add this as a verbose error pattern + elif 'unknown' in value_lower: + matched_pattern = 'unknown' + else: + matched_pattern = 'other_verbose' + + patterns.add(matched_pattern) + + return patterns + + # Helper function to check for positive indicators + def has_positive_indicators(critical_fields_data): + """Check if object has positive/healthy status indicators.""" + kv_pairs = extract_key_value_pairs_from_critical_fields(critical_fields_data) + + # Check for "FieldName=True" format first + # This handles combined semantic values like "Available=True", "Ready=True" + for key, value in kv_pairs: + value_lower = str(value).lower() + + # Check if value is in "fieldname=status" format + if '=' in value_lower: + parts = value_lower.split('=', 1) + if len(parts) == 2: + field_name = parts[0].strip() + field_value = parts[1].split()[0] if ' ' in parts[1] else parts[1] # Take first word before any extra text + + # Positive field names with True status + positive_field_names = ['available', 'ready', 'healthy', 'running', 'active', + 'deployed', 'operational', 'functioning', 'working', + 'successful', 'completed', 'succeeded', 'accepted', 'established'] + + # Negative field names with False status + negative_field_names = ['degraded', 'failed', 'error', 'failing', 'unhealthy', + 'unavailable', 'notready', 'broken', 'stuck', 'blocked', + 'progressing'] + + # Check patterns: + # "Available=True" or "Ready=True" → Positive + if any(pos in field_name for pos in positive_field_names) and field_value == 'true': + return True + + # "Degraded=False" or "Failed=False" → Positive (absence of problem) + if any(neg in field_name for neg in negative_field_names) and field_value == 'false': + return True + # Check for verb+adjective patterns (keep this as fallback) + value_lower_combined = " ".join([str(value).lower() for _, value in kv_pairs]) + + positive_status_words = ['deployed', 'available', 'ready', 'healthy', 'running', 'active', + 'operational', 'functioning', 'working', 'completed', 'finished', + 'successful', 'successfully', 'done'] + positive_verbs = ['is', 'are', 'has', 'have', 'was', 'were'] + + words = value_lower_combined.split() + for i in range(len(words) - 1): + if words[i] in positive_verbs and any(pos_word in words[i+1] for pos_word in positive_status_words): + if i > 0 and words[i-1] in ['not', 'no']: + continue + return True + + for i in range(len(words) - 1): + if words[i] == 'all' and any(pos_word in words[i+1] for pos_word in positive_status_words): + return True + + return False + + # Classify each object + classifications = [] + for idx, critical_fields_data in enumerate(critical_fields_list): + cluster_id = object_to_cluster.get(idx) + + # Extract key-value pairs for this object + kv_pairs = extract_key_value_pairs_from_critical_fields(critical_fields_data) + + # Check if object contains configuration changes + has_config_change = any(detect_config_change(key, value) for key, value in kv_pairs) + + # Check verbose error patterns + object_verbose_patterns = get_verbose_patterns_in_object(critical_fields_data) + has_common_negative = any(pattern in common_patterns for pattern in object_verbose_patterns) + has_rare_negative = any(pattern in rare_patterns for pattern in object_verbose_patterns) + + # Check for positive indicators + has_positive = has_positive_indicators(critical_fields_data) + + # Check if object has meaningful status conditions + # If no conditions exist and no error patterns, treat as config/metadata object (Majority) + has_status_conditions = any('condition' in key.lower() for key, _ in kv_pairs) + has_any_errors = bool(object_verbose_patterns) # Has any error patterns detected + + if cluster_id is None: + # Not clustered + if has_rare_negative: + classification = "Error" + elif has_common_negative: + classification = "Majority Error" + elif has_config_change: + classification = "CONFIG" + elif has_positive: + classification = "Majority" + else: + if has_any_errors: + classification = "Error" + else: + classification = "Majority" # Unique but healthy + frequency = 0.0 + template = "UNCLUSTERED" + cluster_size = 0 + else: + frequency = cluster_frequencies.get(cluster_id, 0.0) + cluster_size = cluster_sizes.get(cluster_id, 0) + + # Find template + template = None + for tmpl in template_list: + if tmpl['id'] == cluster_id: + template = tmpl['template'] + break + + # Classify based on frequency, config detection, and verbose error detection + # Priority: Rare Negative (Error) > Common Negative (Majority Error) > CONFIG > Majority (frequency/positive) > Error > Other + if has_rare_negative: + # Rare negative pattern = Error (highest priority) + classification = "Error" + elif has_common_negative: + # Common negative patterns (high frequency) = Majority Error + classification = "Majority Error" + elif has_config_change: + # Configuration change detected = CONFIG + classification = "CONFIG" + elif has_positive or (frequency >= majority_threshold or cluster_size >= (total_objects * majority_threshold)): + # Normal/healthy logs or high frequency = Majority + classification = "Majority" + elif not has_status_conditions and not has_any_errors: + # Object has no status conditions and no errors = config/metadata object + classification = "Majority" + elif frequency <= error_threshold: + if has_any_errors: + classification = "Error" + else: + classification = "Majority" + else: + classification = "Majority" # Default to Majority for medium frequency + + # Generate reason for classification (pass kv_pairs for detailed reasons) + reason = get_classification_reason( + classification, + object_verbose_patterns, + common_patterns, + rare_patterns, + frequency, + cluster_size, + has_config_change, + has_positive, + kv_pairs + ) + + classifications.append({ + 'object_index': idx, + 'critical_fields': critical_fields_data, + 'classification': classification, + 'frequency': frequency, + 'cluster_id': cluster_id, + 'cluster_size': cluster_size, + 'template': template or "UNCLUSTERED", + 'num_key_value_pairs': len(kv_pairs), + 'verbose_patterns': list(object_verbose_patterns), + 'has_config_change': has_config_change, + 'reason': reason + }) + + return classifications, common_patterns, rare_patterns + + +def get_classification_reason( + classification: str, + verbose_patterns: List[str], + common_patterns: Dict[str, int] = None, + rare_patterns: Dict[str, int] = None, + frequency: float = 0.0, + cluster_size: int = 0, + has_config_change: bool = False, + has_positive: bool = False, + kv_pairs: List[Tuple[str, str]] = None +) -> str: + """ + Get the reason for a classification. Matches the logic from cluster_yaml_with_drain3.py. + + Args: + classification: The classification result + verbose_patterns: List of verbose error patterns found + common_patterns: Dictionary of common patterns + rare_patterns: Dictionary of rare patterns + frequency: Cluster frequency + cluster_size: Cluster size + has_config_change: Whether config changes were detected + has_positive: Whether positive indicators were found + kv_pairs: List of (key, value) pairs for detailed reason generation + + Returns: + String describing the reason for classification + """ + if classification == "Error": + # Check if it's an error due to rare verbose patterns + if verbose_patterns: + rare_found = [p for p in verbose_patterns if rare_patterns and p in rare_patterns] + if rare_found: + # Show all rare patterns found, not just first 3 + patterns_str = ', '.join(rare_found) + return f"Rare patterns (anomaly): {patterns_str}" + + # Other error reasons + if cluster_size == 0: + return "Not clustered / unique pattern" + elif frequency <= 0.01: + return f"Very low frequency ({frequency:.2%})" + else: + return "Rare/unique pattern" + + elif classification == "Majority Error": + reasons = [] + if verbose_patterns: + common_found = [p for p in verbose_patterns if common_patterns and p in common_patterns] + if common_found: + # Format: "Common verbose patterns: pattern1, pattern2, pattern3" + patterns_str = ', '.join(common_found[:3]) + reasons.append(f"Common verbose patterns: {patterns_str}") + + if frequency > 0: + reasons.append(f"High frequency ({frequency:.2%})") + elif cluster_size > 1: + reasons.append(f"Cluster size: {cluster_size}") + + if reasons: + return "; ".join(reasons) + return "Common negative pattern (high frequency)" + + elif classification == "Majority": + reasons = [] + if frequency > 0: + reasons.append(f"High frequency ({frequency:.2%})") + elif cluster_size > 1: + reasons.append(f"Cluster size: {cluster_size}") + + # Check if it has positive indicators (using kv_pairs if available) + if has_positive: + reasons.append("Normal/healthy status indicators") + elif kv_pairs: + # Re-check positive indicators from kv_pairs + value_lower_combined = " ".join([str(value).lower() for _, value in kv_pairs]) + words = value_lower_combined.split() + positive_verbs = ['is', 'are', 'has', 'have'] + positive_words = ['deployed', 'available', 'ready', 'healthy', 'running', 'active'] + for i in range(len(words) - 1): + if words[i] in positive_verbs and any(pw in words[i+1] for pw in positive_words): + if i == 0 or words[i-1] not in ['not', 'no']: + reasons.append("Normal/healthy status indicators") + break + + if reasons: + return "; ".join(reasons) + return "High frequency pattern (normal/healthy)" + + elif classification == "CONFIG": + # Find which keys indicate config changes + config_change_keys = [] + if kv_pairs: + for key, value in kv_pairs: + if detect_config_change(key, value): + config_change_keys.append(key) + if config_change_keys: + return f"Configuration change detected in: {', '.join(config_change_keys[:3])}" + return "Configuration change detected (updated/modified/set)" + + else: # Other + return f"Medium frequency ({frequency:.2%})" + + +def classify_critical_fields(critical_fields_list: List[Dict[str, Any]]) -> Dict[str, Any]: + """ + Main function to classify objects based on their critical fields. + + Args: + critical_fields_list: List of critical fields dictionaries (one per object) + Each dict contains extracted critical fields (no line numbers) + + Returns: + Dict with keys: + - results: List of classification dicts, one per object/chunk. + Each result contains: object_index, classification, frequency, + cluster_id, cluster_size, template, verbose_patterns, + has_config_change, reason. + - error: None on success, error message string on failure. + """ + # Input validation + if not isinstance(critical_fields_list, list): + return {"results": [], "error": f"Input must be a list, got {type(critical_fields_list).__name__}"} + + if not critical_fields_list: + return {"results": [], "error": None} + + valid_items = [] + for i, item in enumerate(critical_fields_list): + if isinstance(item, dict): + valid_items.append(item) + else: + if not _is_quiet(): + print(f"[ML YAML] Skipping non-dict item at index {i}: {type(item).__name__}") + if not valid_items: + return {"results": [], "error": "No valid dict items in input list"} + + if not _is_quiet(): + print("Starting ML classification of critical fields...") + print(f"Processing {len(valid_items)} objects\n") + + # Step 1: Drain3 Clustering + if not _is_quiet(): + print("Processing with Drain3...") + try: + cluster_sizes, template_list, object_to_cluster = process_objects_with_drain3(valid_items) + if not _is_quiet(): + print(f"Found {len(template_list)} unique clusters") + except ImportError as e: + msg = f"drain3 not installed: {e}" + if not _is_quiet(): + print(f"[ML YAML] {msg}") + return {"results": [], "error": msg} + except Exception as e: + msg = f"Drain3 processing failed: {e}" + if not _is_quiet(): + print(f"[ML YAML] {msg}") + import traceback + traceback.print_exc() + return {"results": [], "error": msg} + + # Step 2: Classify objects + if not _is_quiet(): + print("\nClassifying objects...") + classifications, common_patterns, rare_patterns = classify_objects( + valid_items, + cluster_sizes, + template_list, + object_to_cluster + ) + + # Build clean result list + results = [] + for classification in classifications: + results.append({ + 'object_index': classification['object_index'], + 'classification': classification['classification'], + 'frequency': classification['frequency'], + 'cluster_id': classification['cluster_id'], + 'cluster_size': classification['cluster_size'], + 'template': classification['template'], + 'verbose_patterns': classification['verbose_patterns'], + 'has_config_change': classification['has_config_change'], + 'reason': classification['reason'] + }) + + return {"results": results, "error": None} diff --git a/intelliaide/Main-program/agent_prompts.py b/intelliaide/Main-program/agent_prompts.py new file mode 100644 index 0000000..c9445d2 --- /dev/null +++ b/intelliaide/Main-program/agent_prompts.py @@ -0,0 +1,432 @@ +""" +Agent Prompts for the Agentic Orchestrator + +Contains the system prompt sent to Claude at the start of every orchestrator +agent run. This is the text that tells Claude "you are an OpenShift debugging +agent, here are your tools, here is how to use them, and here is your strategy." + +Kept in its own file so English-prose tuning and Python-code changes happen in +separate files. Functionally, these could be string constants at the top of +orchestrator_agent.py and everything would work identically. +""" + +from typing import Optional + + +# --------------------------------------------------------------------------- +# 1. SYSTEM PROMPT — core identity, strategy, and constraints +# --------------------------------------------------------------------------- + +SYSTEM_PROMPT = """\ +You are an expert OpenShift / Kubernetes must-gather debuggability agent. + +Mission: given a user's problem statement and a must-gather bundle on disk, +identify the root cause by analyzing relevant files and producing an +evidence-based Root Cause Analysis (RCA) report. + +You have nine tools (no direct file-system access). + +═══════════════════════════════════════════════════════════════════════════════ +TOOLS +═══════════════════════════════════════════════════════════════════════════════ + +1. check_llm_availability + Verify LLM API is reachable; returns model_id, context_window, + max_output_tokens, rate-limit headers. + Call FIRST. If success=false → STOP (see STEP 0). + +2. select_files + Analyze problem statement against must-gather docs; returns PRIORITIZED + file list (high/medium/low), problem category, keywords, AND file + availability (found/not found) in one call. Internal LLM call. + No need to call check_file_availability after this. + +3. check_file_availability + Re-check specific file paths on disk. Only needed when re-checking + after expanding tiers — select_files already covers the initial check. + +4. analyze_yaml + ML-classify YAML files → Error, CONFIG, Majority Error, Majority objects. + Cumulative across calls. No LLM call. + Diagnostic value order: Error > CONFIG > Majority Error > Majority. + +5. analyze_logs + Drain3 template mining on log/txt files → six severity levels: + Rare Pattern Errors > Config Changes > High-Freq Errors > Warnings > + Information > Unknown. Cumulative. No LLM call. + +6. analyze_json + Dual-path JSON analysis: keyword-match for obvious errors, else + ML-classify like analyze_yaml. Merges into same error pool. + Cumulative. No LLM call. + +7. validate_token_budget + Builds the exact perform_rca prompt, estimates tokens, returns per-file + breakdown + fits:true/false. If over budget → auto-trims largest files. + Pass only problem_statement (+ previous_rca_summary for continuation). + Accumulated data is read automatically — do NOT pass it manually. + MANDATORY before every perform_rca. + +8. perform_rca + Send accumulated data + problem statement to LLM for RCA. Returns + summary, token usage, cost. Pass only problem_statement. Accumulated + data read automatically. Supports continuation via previous_rca_summary + + priority stage fields. + +═══════════════════════════════════════════════════════════════════════════════ +STEP 0 — LLM AVAILABILITY GATE +═══════════════════════════════════════════════════════════════════════════════ + +Call check_llm_availability first. + +• success=true → note model_id / context_window / max_output_tokens, proceed. +• success=false → STOP. Return a FINAL ANSWER (not a tool call): + + ## LLM Unavailable — Workflow Cannot Proceed + **Error**:
+ **What this means**: LLM API is required for file selection and RCA. + **Suggested actions**: + - Check API key in config.json + - Verify API URL is reachable + - Check verify_ssl for custom gateways + - Check API quota / rate limit + +═══════════════════════════════════════════════════════════════════════════════ +STRATEGY — INCREMENTAL DEEPENING +═══════════════════════════════════════════════════════════════════════════════ + +DATA PRIORITY ORDER (both YAML and LOG analysis): + 1. Rare Pattern Errors + Error YAML objects (highest value, smallest) + 2. Config Changes / CONFIG YAML objects (often root cause, small) + 3. High-Freq Errors / Majority Error YAML (patterns, larger) + 4. Warnings (context, medium volume) + 5. Information (background, large) + 6. Unknown (lowest value, large) + +First RCA: send only categories 1-2. Add 3 if budget allows. +Categories 4-6 are only included if budget allows. + +ROUND 1 — HIGH priority files (this is ALL you do in the orchestrator loop) + 1. check_llm_availability (STOP if fails). + 2. select_files → separate AVAILABLE files by priority (HIGH/MEDIUM/LOW) + and type (YAML/JSON/LOG). + CRITICAL: NEVER pass NOT FOUND files to any tool in later iterations. + 3. analyze_yaml / analyze_json / analyze_logs on AVAILABLE HIGH files. + 4. validate_token_budget → perform_rca. + 5. Proceed to FINAL REPORT. + +USER-DRIVEN DEEPENING (Rounds 2 & 3): + The user controls whether to add more data via the "Not Satisfactory" button. + You do NOT autonomously decide to add more rounds. After Round 1, always + proceed to FINAL REPORT. The backend handles Rounds 2 (medium) and 3 (low) + via continue_rca_with_feedback when the user requests it. + + Do NOT attempt to analyze medium or low priority files within this loop. + Do NOT attempt to self-evaluate RCA quality or loop based on confidence. + +═══════════════════════════════════════════════════════════════════════════════ +ERROR HANDLING — STRICT NO-RETRY POLICY +═══════════════════════════════════════════════════════════════════════════════ + +CRITICAL RULE: NEVER call a tool that has already returned success=false +or thrown an exception. The orchestrator blocks re-execution of failed +tools. If you attempt to call a failed tool again, you will receive an +immediate BLOCKED error and waste an iteration. + +When ANY tool returns success=false: + +• API_UNAVAILABLE / AUTH_ERROR → STOP immediately, return FINAL ANSWER + with error details and config.json troubleshooting suggestions. +• RATE_LIMITED / OVERLOADED / TIMEOUT → do NOT retry. STOP and return + partial results with whatever data you have so far. +• CONTEXT_OVERFLOW → do NOT retry. STOP and return partial RCA. +• UNKNOWN_ERROR / any other failure → do NOT retry, skip the step, + proceed with remaining workflow or return FINAL ANSWER. + +When ANY tool throws an exception (as opposed to returning success=false): + → The orchestrator will immediately terminate the agent loop. + → You will NOT get another iteration. + +Never silently swallow errors — report all failures in Analysis Coverage. + +═══════════════════════════════════════════════════════════════════════════════ +TOKEN BUDGET +═══════════════════════════════════════════════════════════════════════════════ + +If validate_token_budget reports AUTO-TRIM: + 1. Note removed vs kept files. + 2. Proceed to perform_rca (trimmed data used automatically). + +If even a single file exceeds budget after trimming → proceed to FINAL +REPORT and note the limitation. + +═══════════════════════════════════════════════════════════════════════════════ +REASONING BETWEEN TOOL CALLS +═══════════════════════════════════════════════════════════════════════════════ + +After EVERY tool result, reason about what you learned before deciding the +next action. Max 1-2 related tool calls per turn, then explicit reasoning. + +═══════════════════════════════════════════════════════════════════════════════ +PRIORITY REDISTRIBUTION +═══════════════════════════════════════════════════════════════════════════════ + +If select_files returns all files at the same priority, redistribute: + Top 2/3 → HIGH, next 1/6 → MEDIUM, remaining 1/6 → LOW. + +═══════════════════════════════════════════════════════════════════════════════ +STATE ACCUMULATION +═══════════════════════════════════════════════════════════════════════════════ + +Results accumulate across rounds (yaml_errors dict, log_error_entries list, +files_analyzed list). validate_token_budget and perform_rca read accumulated +data automatically — never pass it manually. + +═══════════════════════════════════════════════════════════════════════════════ +USER FEEDBACK +═══════════════════════════════════════════════════════════════════════════════ + +After FINAL REPORT delivery: + +1. "RCA Satisfactory" → session complete. + +2. "RCA Not Satisfactory" (no new info) → expand to next tier if available. + All tiers exhausted → exit cycle, request new observations from user. + +3. New observation from user — determine: + (a) ADDS TO / NARROWS the problem → continue current cycle with hint, + add specific files, re-run RCA. Do NOT restart from scratch. + (b) REPLACES / CONTRADICTS the problem → start new cycle from scratch. + If ambiguous, ask the user which option. + +═══════════════════════════════════════════════════════════════════════════════ +OUTPUT FORMAT — FINAL RCA REPORT +═══════════════════════════════════════════════════════════════════════════════ + +When you are ready to return the final report, produce your answer (not a tool +call) with the following structure. Use markdown formatting. + +CRITICAL: You MUST use the EXACT section headings shown below (## level) and +the EXACT sub-section headings (### level) where specified. The frontend +parses these headings programmatically — any deviation will break rendering. + +--- + +## User Reported Issue + + +## Executive Summary + + +## Chronology of Events +**: +- ****: +> + +## Primary Root Cause(s) + + - + - +2. + - +> + +## Secondary Causes / Contributing Factors + + +## Aggregated Error Patterns + | | | | + +Include ALL relevant error patterns. Do NOT use plain text or bullet lists +for this section — it MUST be a pipe-delimited table.> + +## Analysis Coverage + + +### Round 1 — HIGH Priority Files + | YAML/LOG/JSON | | + +Add a note after the table if applicable (e.g., confidence level).> + +### Round 2 — MEDIUM Priority Files + + +### Round 3 — LOW Priority Files + + +### Files Not Found in This Must-Gather + + +### Priority Tiers Analyzed + files analyzed (confidence: ) +- MEDIUM — files analyzed (confidence: ) +- LOW — not analyzed () +> + +### Key Limitation + + +## Recommendations + + +--- + +═══════════════════════════════════════════════════════════════════════════════ +CONSTRAINTS +═══════════════════════════════════════════════════════════════════════════════ + +• Max {max_iterations} tool-call iterations. Near the limit → skip to + perform_rca with current data → FINAL REPORT. +• NEVER retry a failed tool. If a tool returned success=false, do NOT + call it again. Move on to the next step or return FINAL REPORT. +• Never fabricate evidence or cite unanalyzed files. +• Non-LLM tool failure → note it, skip, continue (no retry). +• Always prioritize root causes by relevance to the USER REPORTED ISSUE. +• Always state the key cause explicitly in the Executive Summary. +""" + + +# --------------------------------------------------------------------------- +# 2. USER MESSAGE TEMPLATE — injected as the first user message +# --------------------------------------------------------------------------- + +USER_MESSAGE_TEMPLATE = """\ +I need you to analyze a must-gather bundle to diagnose the following issue. + +PROBLEM STATEMENT: +{problem_statement} + +MUST-GATHER LOCATION: + must_gather_docs_dir : {must_gather_docs_dir} + must_gather_base_dir : {must_gather_base_dir} + +Please begin by calling check_llm_availability to verify the LLM API is +reachable. If it succeeds, proceed with select_files. If it fails, stop +and report the error. +""" + + +# --------------------------------------------------------------------------- +# 3. USER OBSERVATION MESSAGE TEMPLATE — for when user provides new input +# after the initial RCA cycle +# --------------------------------------------------------------------------- + +USER_OBSERVATION_TEMPLATE = """\ +The user has provided additional input after reviewing the RCA: + +USER'S NEW INPUT: +{user_observation} + +PREVIOUS PROBLEM STATEMENT: +{original_problem_statement} + +CURRENT RCA PRIORITY STAGE: {current_priority_stage} +ROUNDS COMPLETED: {rounds_completed} of 3 + +Determine whether this input is: +(A) A continuation hint (adds to / narrows the existing investigation), or +(B) A new problem statement (replaces / contradicts the original problem). + +If (A): Continue the current cycle. Identify specific files to add based on +the user's hint, call analyze_yaml / analyze_logs on those files, merge with +existing results, and re-run perform_rca. + +If (B): Indicate that a NEW CYCLE should be started. Return a message +confirming the new problem statement and instruct the orchestrator to restart. + +If ambiguous: CONTINUE the current cycle. +""" + + +# --------------------------------------------------------------------------- +# 4. BUILDER FUNCTIONS — called by orchestrator_agent.py +# --------------------------------------------------------------------------- + +def build_system_prompt( + max_iterations: int = 25, +) -> str: + """ + Return the fully-interpolated system prompt. + + Parameters + ---------- + max_iterations : int + Hard cap on total tool-call iterations. Injected into the prompt so + Claude knows when to stop. + """ + return SYSTEM_PROMPT.format(max_iterations=max_iterations) + + +def build_user_message( + problem_statement: str, + must_gather_docs_dir: str, + must_gather_base_dir: str = "", +) -> str: + """ + Return the first user message that kicks off the agent loop. + + Parameters + ---------- + problem_statement : str + The user's problem description. + must_gather_docs_dir : str + Directory containing MUST_GATHER_*.md structure documentation files. + must_gather_base_dir : str + Root directory of the actual must-gather bundle on disk. + """ + return USER_MESSAGE_TEMPLATE.format( + problem_statement=problem_statement.strip(), + must_gather_docs_dir=must_gather_docs_dir, + must_gather_base_dir=must_gather_base_dir or "(not specified)", + ) + + +def build_user_observation_message( + user_observation: str, + original_problem_statement: str, + current_priority_stage: str = "unknown", + rounds_completed: int = 0, +) -> str: + """ + Return a user message for when the user provides feedback / new observations + after the initial RCA. + + Parameters + ---------- + user_observation : str + The user's new input / observation / comment. + original_problem_statement : str + The original problem statement from the start of the cycle. + current_priority_stage : str + Which priority tiers have been analyzed so far. + rounds_completed : int + Number of deepening rounds completed (0-3). + """ + return USER_OBSERVATION_TEMPLATE.format( + user_observation=user_observation.strip(), + original_problem_statement=original_problem_statement.strip(), + current_priority_stage=current_priority_stage, + rounds_completed=rounds_completed, + ) diff --git a/intelliaide/Main-program/data_analyzer.py b/intelliaide/Main-program/data_analyzer.py new file mode 100644 index 0000000..3f334c4 --- /dev/null +++ b/intelliaide/Main-program/data_analyzer.py @@ -0,0 +1,2184 @@ +""" +Data Analyzer Sub-Agent + +This module is called by orchestrator_agent.py to analyze must-gather files. +It extracts critical fields from YAML files and sends them to ML classifier. +""" + +import os +import sys +import json +import yaml +import re +import glob +import importlib.util +from typing import Dict, List, Any, Optional +from pathlib import Path + +# QUIET MODE: Check if orchestrator has enabled quiet mode +def _is_quiet(): + """Check if orchestrator has enabled quiet mode via environment variable""" + return os.environ.get('ORCHESTRATOR_QUIET', '0') == '1' + + +def _import_ml_module(module_name: str, symbol: str): + """ + Import a symbol from a Machine-learning module, handling both .py and .PY + extensions (Linux is case-sensitive so .PY is invisible to normal import). + """ + # 1. Try normal import first (works if .py exists on sys.path) + try: + mod = __import__(module_name, fromlist=[symbol]) + return getattr(mod, symbol) + except (ImportError, AttributeError): + pass + + # 2. Locate the .PY or .py file manually in Machine-learning/ + ml_dir = Path(__file__).resolve().parent.parent / "Machine-learning" + for ext in (".py", ".PY"): + candidate = ml_dir / f"{module_name}{ext}" + if candidate.is_file(): + spec = importlib.util.spec_from_file_location(module_name, str(candidate)) + if spec and spec.loader: + mod = importlib.util.module_from_spec(spec) + sys.modules[module_name] = mod + spec.loader.exec_module(mod) + return getattr(mod, symbol) + + raise ImportError(f"Cannot find {module_name}.py or {module_name}.PY in {ml_dir}") + + +try: + classify_critical_fields = _import_ml_module("ML_YAML_CLASSIFICATION", "classify_critical_fields") + ML_CLASSIFIER_AVAILABLE = True +except (ImportError, Exception) as e: + ML_CLASSIFIER_AVAILABLE = False + if not _is_quiet(): + print(f"[Data Analyzer] ML_YAML_CLASSIFICATION not available: {e}") + +try: + # analyze_logs is the public entry point (validates inputs, checks drain3, loads config) + analyze_logs_ml = _import_ml_module("ML_LOG_CLASSIFICATION", "analyze_logs") + ML_LOG_CLASSIFICATION_AVAILABLE = True +except (ImportError, Exception) as e: + ML_LOG_CLASSIFICATION_AVAILABLE = False + if not _is_quiet(): + print(f"[Data Analyzer] ML_LOG_CLASSIFICATION not available: {e}") + +try: + from odf.opendocument import load as load_odt + from odf.table import Table, TableRow, TableCell + from odf.text import P + ODT_AVAILABLE = True +except ImportError: + ODT_AVAILABLE = False + +# Load from config, fallback to current directory +def _get_default_base_folder(): + config_path = Path(__file__).parent.parent / "Config" / "yaml_processing.yaml" + if config_path.exists(): + try: + with open(config_path, 'r') as f: + config = yaml.safe_load(f) + if isinstance(config, dict): + configured_path = config.get('base_directory', {}).get('must_gather_path', '') + if configured_path: + return configured_path + except Exception: + pass + return os.getcwd() + +DEFAULT_BASE_FOLDER = _get_default_base_folder() + +# Path to critical fields document (uses app_paths for frozen exe) +from app_paths import get_keyfields_path, get_application_dir +KEYFIELDS_ODT_PATH = get_keyfields_path() + +# Load YAML processing configuration +def _load_yaml_processing_config(): + """Load YAML processing configuration from config/yaml_processing.yaml""" + import yaml as yaml_loader + config_path = Path(__file__).parent.parent / "Config" / "yaml_processing.yaml" + default_config = { + "chunking": { + "max_items_section_indent": 2, + "list_item_indent_offset": 2, + "indent_tolerance": 2, + "top_level_indent": 0, + "list_container_keys": ["items"] + }, + "critical_fields": { + "default_paths": ["metadata.name", "status.conditions"], + "file_specific": {}, + "pattern_matching": {} + } + } + try: + with open(config_path, 'r', encoding='utf-8') as f: + loaded = yaml_loader.safe_load(f) + if loaded: + # Merge loaded config with defaults + for key in loaded: + if key in default_config and isinstance(default_config[key], dict): + default_config[key].update(loaded[key]) + else: + default_config[key] = loaded[key] + except FileNotFoundError: + if not _is_quiet(): + print(f"[DataAnalyzer] Config not found at {config_path}, using defaults") + except Exception as e: + if not _is_quiet(): + print(f"[DataAnalyzer] Error loading config: {e}, using defaults") + return default_config + +YAML_PROCESSING_CONFIG = _load_yaml_processing_config() + +# Path-based fields for clusteroperators.yaml: use "metadata.name" to get the operator name +# (line 86, 247, etc.) without matching other "name" keys (ownerReferences.name, etc.). +# Include specific status fields - only extract what's explicitly mentioned. +# RECOMMENDED_PATHS_FOR_CLUSTEROPERATORS = ["metadata.name", "status.conditions"] + +# # Path-based fields for clusterversions.yaml: version info and status +# RECOMMENDED_PATHS_FOR_CLUSTERVERSIONS = ["metadata.name", "status.history", "status.conditions"] + + +class DataAnalyzer: + """ + Analyzes must-gather files (YAML, log, JSON). Called by the orchestrator. + """ + + def __init__(self, must_gather_base_dir: str = None): + """ + Initialize Data Analyzer. + + Parameters: + ----------- + must_gather_base_dir : str, optional + Base directory of the must-gather (or quay) collection + """ + self.must_gather_base_dir = must_gather_base_dir or "" + # Memory for storing extracted metadata + self.extracted_metadata = {} + # Critical fields are loaded per-file from docx table (not at init) + self.config = YAML_PROCESSING_CONFIG + # Transient error from last chunking operation (set by _extract_yaml_object_chunks) + self._last_chunk_error = None + + @staticmethod + def _strip_must_gather_prefix(path: str) -> str: + """Strip the leading wildcard / must-gather / quay prefix from a path. + + These prefixes represent the variable subfolder name in must-gather + collections (quay-content, must-gather.local.xxx, random hash, etc.). + """ + prefixes_to_strip = [ + "/quay*/", + "/quay*", + "/must-gather*/", + "/must-gather*", + "/must-gather/", + "/must-gather", + "/" + ] + for prefix in prefixes_to_strip: + if path.lower().startswith(prefix.lower()): + path = path[len(prefix):].lstrip("/\\") + break + return path + + @staticmethod + def _is_path_under_base(resolved: str, base_folder: str) -> bool: + """Verify that *resolved* is under *base_folder* (prevent path traversal).""" + try: + resolved_real = os.path.realpath(resolved) + base_real = os.path.realpath(base_folder) + return resolved_real.startswith(base_real + os.sep) or resolved_real == base_real + except (ValueError, OSError): + return False + + def _resolve_path(self, relative_path: str, base_folder: str) -> str: + """ + Resolve orchestrator path (e.g. /quay*/namespaces/...) to full path under base_folder. + + The wildcard prefix (/quay*/, /must-gather/, etc.) represents the variable subfolder + name in must-gather collections. This can be any name (quay-content, must-gather.local.xxx, + random hash, etc.) - NOT hardcoded to any specific value. + + User should point base_folder to either: + 1. The actual subfolder containing cluster-scoped-resources/, namespaces/, etc. + 2. The parent folder - we'll search for */path pattern using glob + + NOTE: For paths containing wildcards (e.g. pods/*/logs/current.log) + use :meth:`_resolve_path_glob` instead — it returns ALL matches. + """ + + import glob + + path = relative_path.strip() + base_folder = base_folder.rstrip("/\\") + + # Fast path: already an absolute path under base — use directly, no stripping. + if os.path.isabs(path) and self._is_path_under_base(path, base_folder): + return os.path.normpath(path) + + path = self._strip_must_gather_prefix(path) + + if not path: + return base_folder + + # Convert path separators for current OS + path_normalized = path.replace("/", os.sep) + + # Try 1: Direct join with base_folder + direct_path = os.path.normpath(os.path.join(base_folder, path_normalized)) + if os.path.exists(direct_path) and self._is_path_under_base(direct_path, base_folder): + return direct_path + + # Try 2: Search with wildcard for first subfolder + wildcard_pattern = os.path.join(base_folder, "*", path_normalized) + for m in glob.glob(wildcard_pattern): + if self._is_path_under_base(m, base_folder): + return m + + # Try 3: Search with two levels of wildcards + wildcard_pattern_2 = os.path.join(base_folder, "*", "*", path_normalized) + for m in glob.glob(wildcard_pattern_2): + if self._is_path_under_base(m, base_folder): + return m + + # Return direct path as fallback (will fail — file treated as not found) + return direct_path + + + def _resolve_path_glob(self, relative_path: str, base_folder: str) -> List[str]: + """ + Resolves paths containing wildcards by searching through nested folders. + + Handles must-gather's deep pod structure where the LLM suggests + 'pods/*/logs/current.log' but the real layout is + 'pods////logs/current.log' (any depth). + + Strategy — try four patterns in order: + 1. Direct: base/path/*/rest (single-level * as written) + 2. Deep prefix: base/**/path/*/rest (allow prefix dirs, single-level *) + 3. Deep star: base/path/**/rest (replace every * with ** for any depth) + 4. Deep both: base/**/path/**/rest (combine prefix + deep star) + """ + import re as _re + + path = relative_path.strip() + base_folder = os.path.abspath(base_folder.rstrip("/\\")) + + # Fast path: already an absolute path under base — skip stripping. + if not os.path.isabs(path) or not self._is_path_under_base(path, base_folder): + path = self._strip_must_gather_prefix(path) + if not path: + return [] + + path_normalized = path.replace("/", os.sep) + + # Build a "deep" version: replace every standalone * (not already **) with ** + # so pods/*/logs/current.log → pods/**/logs/current.log + # This matches pods//logs/current.log + deep_path = _re.sub(r'(? str: + """Replace LLM template placeholders with appropriate glob patterns. + + ```` (and variations like ````, ````) + are replaced with ``**`` so glob can match zero-or-more directory + levels — this handles layouts where the node-name directory does not + exist (e.g. ``host_service_logs/masters/kubelet_service.log`` has no + per-node subdirectory). + + All other ```` tokens are replaced with ``*`` (single + directory level). + """ + import re + path = re.sub(r'', '**', path, flags=re.IGNORECASE) + return re.sub(r'<[^>]+>', '*', path) + + def _expand_node_name_placeholder(self, path: str, base_folder: str) -> list: + """Expand ```` by scanning actual directories and matching + against :pyattr:`MUST_GATHER_NODE_NAME_RE`. + + Returns a list of concrete paths (one per matching node directory). + Falls back to glob ``**`` expansion if directory scanning yields nothing. + """ + import re as _re + placeholder_re = _re.compile(r'', _re.IGNORECASE) + m = placeholder_re.search(path) + if not m: + return [] + + prefix_raw = path[:m.start()].rstrip("/\\") + suffix_raw = path[m.end():].lstrip("/\\") + prefix_stripped = self._strip_must_gather_prefix(prefix_raw) + + # Resolve the prefix directory on disk + candidate_dirs = [] + if prefix_stripped: + direct = os.path.normpath(os.path.join(base_folder, prefix_stripped.replace("/", os.sep))) + if os.path.isdir(direct): + candidate_dirs.append(direct) + # Also try one level deeper (must-gather subfolder) + for d in glob.glob(os.path.join(base_folder, "*", prefix_stripped.replace("/", os.sep))): + if os.path.isdir(d): + candidate_dirs.append(d) + + expanded: list = [] + for parent_dir in candidate_dirs: + try: + entries = os.listdir(parent_dir) + except OSError: + continue + for entry in entries: + full_entry = os.path.join(parent_dir, entry) + if not os.path.isdir(full_entry): + continue + if self.MUST_GATHER_NODE_NAME_RE.match(entry): + if suffix_raw: + target = os.path.normpath(os.path.join(full_entry, suffix_raw.replace("/", os.sep))) + if os.path.exists(target): + expanded.append(target) + else: + expanded.append(full_entry) + + # If regex-based scan found nothing, try without the node-name segment + # (the directory level may simply not exist in this must-gather layout) + if not expanded and suffix_raw: + for parent_dir in candidate_dirs: + target = os.path.normpath(os.path.join(parent_dir, suffix_raw.replace("/", os.sep))) + if os.path.exists(target): + expanded.append(target) + + return expanded + + @staticmethod + def _path_has_wildcard(path: str) -> bool: + """Return True if the path contains glob wildcard characters or LLM placeholders.""" + return '*' in path or '?' in path or '<' in path + + def _check_file_access(self, file_paths: List[str], base_folder: str) -> Dict: + """ + Check if each file sent by the orchestrator is accessible under base_folder. + + Paths that contain wildcard characters (``*``, ``?``) are expanded via + :func:`glob.glob` so that ``namespaces/openshift-etcd/pods/*/logs/current.log`` + resolves to *all* matching pod log files. Each match is added as a + separate accessible entry (with the original wildcard path preserved so + the caller can trace where it came from). + + Returns dict with accessible, not_found, and errors lists. + """ + base_folder = base_folder or DEFAULT_BASE_FOLDER + accessible = [] + not_found = [] + errors = [] + + for raw_path in file_paths: + # Fast path: if this is already a fully-resolved absolute path that + # exists on disk (e.g. returned by a prior report_files_availability + # call and stored in agent_state), use it directly — no re-resolution. + if os.path.isabs(raw_path) and os.path.exists(raw_path) and self._is_path_under_base(raw_path, base_folder): + if os.path.isfile(raw_path): + accessible.append({"original": raw_path, "resolved": raw_path}) + else: + accessible.append({"original": raw_path, "resolved": raw_path, "note": "path is a directory"}) + continue + + # Try regex-based node-name expansion first (before generic placeholder normalization) + node_expanded = self._expand_node_name_placeholder(raw_path, base_folder) if '<' in raw_path else [] + if node_expanded: + for resolved in node_expanded: + accessible.append({"original": raw_path, "resolved": resolved, "note": "node-name expansion"}) + if not _is_quiet(): + print(f" [Node] {raw_path} -> {len(node_expanded)} file(s) found via node-name regex") + continue + + path = self._normalize_placeholders(raw_path) + try: + if self._path_has_wildcard(self._strip_must_gather_prefix(path)): + # ── Wildcard path: expand to all matching files ── + matches = self._resolve_path_glob(path, base_folder) + if matches: + for resolved in matches: + accessible.append({ + "original": path, + "resolved": resolved, + "note": "glob expansion", + }) + if not _is_quiet(): + print(f" [Glob] {path} -> {len(matches)} file(s) found") + else: + not_found.append({"original": path, "resolved": path}) + else: + # ── Concrete path (no wildcards) ── + full_path = self._resolve_path(path, base_folder) + if os.path.exists(full_path): + if os.path.isfile(full_path): + with open(full_path, "rb") as f: + f.read(1) + accessible.append({"original": path, "resolved": full_path}) + else: + accessible.append({"original": path, "resolved": full_path, "note": "path is a directory"}) + else: + not_found.append({"original": path, "resolved": full_path}) + except Exception as e: + errors.append({"original": path, "resolved": path, "error": str(e)}) + + return {"accessible": accessible, "not_found": not_found, "errors": errors} + + def _load_critical_fields(self, file_path: str) -> List[str]: + """ + Load critical field paths from config, with fallback to docx table. + + Priority: + 1. ODT/docx table (primary source of truth) + 2. File-specific config (fallback) + 3. Default paths from config + """ + file_name = os.path.basename(file_path).lower() + cf_config = self.config.get("critical_fields", {}) + + # 1. Try ODT/docx table FIRST (primary source) + docx_fields = self._load_critical_fields_from_docx(file_path) + if docx_fields: + if not _is_quiet(): + print(f"[DataAnalyzer] Using document critical fields for {file_name}: {docx_fields}") + return docx_fields + + # 2. Fallback to file-specific config + file_specific = cf_config.get("file_specific", {}) + if file_name in file_specific: + paths = file_specific[file_name].get("paths", []) + if paths: + if not _is_quiet(): + print(f"[DataAnalyzer] Using config critical fields for {file_name}: {paths}") + return paths.copy() + + # 3. Fallback to default paths + default_paths = cf_config.get("default_paths", []) + if default_paths: + if not _is_quiet(): + print(f"[DataAnalyzer] Using default critical fields for {file_name}: {default_paths}") + return default_paths.copy() + + return [] + + def _load_critical_fields_from_docx(self, file_path: str) -> List[str]: + """ + Read critical field names from keyfields_yaml_ml_input.odt table. + (Original _load_critical_fields logic moved here) + + Returns: + List of field path strings, or [] if not available / no match. + """ + if not ODT_AVAILABLE: + if not _is_quiet(): + print("[DataAnalyzer] ODT library not installed — keyfields document not applied") + return [] + + if not KEYFIELDS_ODT_PATH.exists(): + if not _is_quiet(): + print(f"[DataAnalyzer] Keyfields document not found at {KEYFIELDS_ODT_PATH}") + return [] + + def get_cell_text(cell) -> str: + """Extract text content from an ODT table cell.""" + text_parts = [] + for p in cell.getElementsByType(P): + for node in p.childNodes: + if hasattr(node, 'data'): + text_parts.append(node.data) + return ''.join(text_parts).strip() + + try: + doc = load_odt(str(KEYFIELDS_ODT_PATH)) + + file_path_normalized = file_path.strip().lower() + if file_path_normalized.startswith("/quay*/"): + file_path_normalized = file_path_normalized[7:] + elif file_path_normalized.startswith("/quay*"): + file_path_normalized = file_path_normalized[6:] + file_path_normalized = file_path_normalized.lstrip("/\\") + + file_name = os.path.basename(file_path_normalized).lower() + + fields = [] + matched_cells = None + + for table in doc.getElementsByType(Table): + for row in table.getElementsByType(TableRow): + cells = row.getElementsByType(TableCell) + if len(cells) < 2: + continue + + first_cell = get_cell_text(cells[0]) + first_cell_normalized = first_cell.lower().replace('\\','/') + + if not first_cell_normalized: + continue + + if first_cell_normalized.startswith("/quay*/"): + first_cell_normalized = first_cell_normalized[7:] + elif first_cell_normalized.startswith("/quay*"): + first_cell_normalized = first_cell_normalized[6:] + first_cell_normalized = first_cell_normalized.lstrip("/\\") + + if (file_path_normalized == first_cell_normalized or + file_path_normalized in first_cell_normalized or + first_cell_normalized in file_path_normalized or + file_name == os.path.basename(first_cell_normalized).lower() or + file_name in first_cell_normalized): + matched_cells = cells + break + + if matched_cells: + break + + if not matched_cells: + return [] # No match in docx, let caller use defaults + + for cell in matched_cells[1:]: + cell_text = get_cell_text(cell) + if not cell_text: + continue + + lines = cell_text.replace(',', '\n').replace('•', '\n').split('\n') + for line in lines: + line = line.strip() + if not line: + continue + + line = line.lstrip('•-* \t') + + if ('.' in line or '[' in line or + line.startswith('metadata.') or + line.startswith('status.') or + line.startswith('spec.') or + line.startswith('data.') or + any(keyword in line.lower() for keyword in ['name', 'status', 'type', 'message', 'reason', 'condition'])): + if line not in fields: + fields.append(line) + + fields = [f.strip() for f in fields if f and f.strip()] + return fields + + except Exception as e: + if not _is_quiet(): + print(f"[DataAnalyzer] Failed to read keyfields document: {e}") + return [] + + def _find_key_in_yaml_lines(self, lines: List[str], key_name: str) -> List[int]: + """ + Find all line numbers where a key appears in YAML lines. + Returns list of line numbers where the key is found. + """ + line_numbers = [] + for line_num, line in enumerate(lines, 1): + stripped = line.strip() + if not stripped or stripped.startswith('#'): + continue + if ':' in stripped: + key = stripped.split(':')[0].strip() + # Check if key matches (case-insensitive, or as part of path) + if key.lower() == key_name.lower() or key_name.lower() in key.lower(): + line_numbers.append(line_num) + return line_numbers + + def _extract_yaml_object_chunks(self, yaml_file_path: str) -> List[tuple]: + """ + Step 2: Extract YAML objects as chunks using the proven extraction logic. + Each list item (starting with '-') at the items level is treated as a single chunk. + + Returns: + -------- + List of (chunk_string, start_line, end_line, key_value_pairs) tuples + where key_value_pairs is List[Tuple[str, str, int]] = (path, value, line_number) + and path is the YAML path (e.g. "metadata.name") so "metadata.name" can be matched + without matching other "name" keys (e.g. metadata.ownerReferences.name). + """ + import re + + try: + with open(yaml_file_path, 'r', encoding='utf-8') as f: + yaml_content = f.read() + + lines = yaml_content.split('\n') + chunks = [] + current_chunk = [] + current_chunk_start = None + current_chunk_lines = [] + list_item_indent = None # Track the indent level of list items (e.g., under 'items:') + indent_stack = [] # [(indent, key), ...] for building YAML path (e.g. metadata.name) + + for line_num, line in enumerate(lines, start=1): + stripped = line.strip() + + # Skip empty lines + if not stripped: + if current_chunk_start is not None: + current_chunk_lines.append(line) + continue + + if stripped.startswith('#'): + if current_chunk_start is not None: + current_chunk_lines.append(line) + continue + + if stripped.startswith('---'): + # Document separator - end current chunk if any + if current_chunk_start is not None: + chunks.append(( + '\n'.join(current_chunk_lines), + current_chunk_start, + line_num - 1, + current_chunk + )) + current_chunk = [] + current_chunk_lines = [] + current_chunk_start = None + list_item_indent = None + continue + + # Calculate indentation + indent = len(line) - len(stripped) + + # Start a chunk if we haven't started one yet (for files without --- at the start) + if current_chunk_start is None: + current_chunk_start = line_num + current_chunk_lines = [] # Don't add line here, it will be added below + current_chunk = [] + indent_stack = [] + + # Check if this is a list item under 'items:' (typically starts with '- ' at indent 0 or 2) + is_list_item = stripped.startswith('-') + + # Detect if we're in the 'items:' section (only at low indent - Kubernetes list items) + # High-indent 'items:' (like in CRD schemas) should be ignored + # if indent <= 2 and ('items:' in stripped.lower() or (stripped.endswith(':') and 'items' in stripped.lower())): + chunking_cfg = self.config.get("chunking", {}) + max_indent = chunking_cfg.get("max_items_section_indent", 2) + container_keys = chunking_cfg.get("list_container_keys", ["items"]) + + if indent <= max_indent and any(k + ':' in stripped.lower() or (stripped.endswith(':') and k in stripped.lower()) for k in container_keys): + # This is the items: line, next list items will be chunks + # list_item_indent = indent + 2 # List items are typically indented 2 spaces after 'items:' + indent_offset = chunking_cfg.get("list_item_indent_offset", 2) + list_item_indent = indent + indent_offset + continue + + # Check if this is a new list item (new chunk) + if is_list_item: + # Check if this is at the list item indent level (or close to it) + # if list_item_indent is not None and abs(indent - list_item_indent) <= 2: + tolerance = chunking_cfg.get("indent_tolerance", 2) + if list_item_indent is not None and abs(indent - list_item_indent) <= tolerance: + # This is a new list item - start a new chunk + if current_chunk_start is not None: + # Save previous chunk + chunks.append(( + '\n'.join(current_chunk_lines), + current_chunk_start, + line_num - 1, + current_chunk + )) + indent_stack = [] + + # Start new chunk + current_chunk = [] + current_chunk_lines = [line] + current_chunk_start = line_num + list_item_indent = indent # Update to current list item indent + indent_stack = [] # Reset path stack for new object + else: + # This is a nested list item - continue current chunk + if current_chunk_start is not None: + current_chunk_lines.append(line) + else: + # Regular line - add to current chunk if we have one + if current_chunk_start is not None: + # Check if we've gone back to a higher level (end of current object) + if list_item_indent is not None and indent <= list_item_indent and not is_list_item: + # Check if this is a top-level key that signals end of items section + # Keys like 'kind:', 'metadata:', 'apiVersion:' at indent 0 after items + # indicate the list wrapper metadata, not part of the item + # is_top_level_key = indent == 0 and ':' in stripped and not stripped.startswith('-') + top_level_indent = chunking_cfg.get("top_level_indent", 0) + is_top_level_key = indent == top_level_indent and ':' in stripped and not stripped.startswith('-') + if is_top_level_key: + # End of chunk - this is list wrapper metadata + chunks.append(( + '\n'.join(current_chunk_lines), + current_chunk_start, + line_num - 1, + current_chunk + )) + current_chunk = [] + current_chunk_lines = [] + current_chunk_start = None + list_item_indent = None + indent_stack = [] + else: + # Continue adding to chunk + current_chunk_lines.append(line) + else: + current_chunk_lines.append(line) + + # Extract key-value pair if present (for current chunk); track YAML path + if current_chunk_start is not None: + match = re.match(r'^(\s*)([^:]+?):\s*(.*)$', line) + if match: + key = match.group(2).strip() + value = match.group(3).strip() + if not key: + continue + # Pop stack until we're at a parent of this indent + while indent_stack and indent_stack[-1][0] >= indent: + indent_stack.pop() + if value: + # Leaf key: value on same line — build path and store (path, value, line_num) + path = ".".join(k for _, k in indent_stack) + "." + key if indent_stack else key + value = value.strip('"\'') + current_chunk.append((path, value, line_num)) + else: + # Parent key (e.g. "metadata:" or "annotations:") — push for path context + indent_stack.append((indent, key)) + + # Add final chunk if exists + if current_chunk_start is not None: + chunks.append(( + '\n'.join(current_chunk_lines), + current_chunk_start, + len(lines), + current_chunk + )) + + return chunks + except Exception as e: + if not _is_quiet(): + print(f"[DataAnalyzer] YAML parse error in {yaml_file_path}: {e}") + self._last_chunk_error = str(e) + return [] + + def _get_line_numbers_for_key(self, lines: List[str], key: str, value: Any = None) -> List[int]: + """ + Find line numbers where a key appears in YAML lines. + """ + line_numbers = [] + for line_num, line in enumerate(lines, 1): + stripped = line.strip() + if not stripped or stripped.startswith('#'): + continue + if ':' in stripped: + line_key = stripped.split(':')[0].strip() + # Remove quotes if present + line_key = line_key.strip('"\'') + if line_key == key: + line_numbers.append(line_num) + return line_numbers + + def _get_nested_value(self, data: Any, path: str) -> Any: + """ + Navigate through nested dict/list structure using a path like "metadata.name" or "status.conditions[].type". + Returns the value at that path, or None if not found. + """ + if not path or not data: + return None + + parts = path.split('.') + current = data + + for part in parts: + if '[]' in part: + # Handle array notation like "conditions[]" - means all items in array + key = part.replace('[]', '') + if isinstance(current, dict) and key in current: + current = current[key] + if isinstance(current, list): + # Return the list itself for array paths + return current + else: + return None + else: + return None + elif '[' in part and ']' in part: + # Handle indexed access like "conditions[0]" + key, index_str = part.split('[', 1) + index_str = index_str.rstrip(']') + if isinstance(current, dict) and key in current: + current = current[key] + if isinstance(current, list): + try: + index = int(index_str) + if 0 <= index < len(current): + current = current[index] + else: + return None + except ValueError: + return None + else: + return None + else: + return None + else: + # Regular key access + if isinstance(current, dict) and part in current: + current = current[part] + else: + return None + + return current + + def _extract_nested_structure(self, data: Any, path: str, path_parts: List[str] = None) -> Dict[str, Any]: + """ + Extract a nested structure from data following the path, preserving hierarchy. + For paths like "status.conditions[].type", extracts the full "status.conditions" array. + Returns a nested dict structure that contains the value at the path. + """ + if path_parts is None: + path_parts = path.split('.') if path else [] + + if not path_parts: + return data if isinstance(data, dict) else {} + + part = path_parts[0] + remaining = path_parts[1:] + + if '[]' in part: + # Array notation - extract the full array structure + key = part.replace('[]', '') + if isinstance(data, dict) and key in data: + value = data[key] + if isinstance(value, list): + # If there are remaining parts (e.g., "conditions[].type"), + # we still extract the full array but could filter later + # For now, extract the full array to preserve structure + return {key: value} + else: + return {key: value} + else: + return None + else: + # Regular key + if isinstance(data, dict) and part in data: + value = data[part] + if remaining: + # Continue deeper + extracted = self._extract_nested_structure(value, None, remaining) + if extracted is not None: + return {part: extracted} + else: + # If deeper extraction failed, return what we have + return {part: value} + else: + # This is the target - return the structure containing this key + return {part: value} + else: + return None + + def _merge_dicts(self, dict1: Dict, dict2: Dict) -> Dict: + """ + Deep merge two dictionaries, combining nested structures. + """ + result = dict1.copy() + for key, value in dict2.items(): + if key in result: + if isinstance(result[key], dict) and isinstance(value, dict): + result[key] = self._merge_dicts(result[key], value) + elif isinstance(result[key], list) and isinstance(value, list): + # For lists, we might need to merge or append - for now, prefer dict2 + result[key] = value + else: + # Prefer dict2 value + result[key] = value + else: + result[key] = value + return result + + def _group_line_numbers_into_ranges(self, line_numbers: List[int]) -> List[List[int]]: + """ + Group consecutive line numbers into ranges. + Returns a list of [start, end] pairs for consecutive ranges. + + Example: + [4, 5, 8, 9, 10, 11, 12, 14, 15] -> [[4, 5], [8, 12], [14, 15]] + """ + if not line_numbers: + return [] + + sorted_lines = sorted(set(line_numbers)) + ranges = [] + start = sorted_lines[0] + end = sorted_lines[0] + + for i in range(1, len(sorted_lines)): + if sorted_lines[i] == end + 1: + # Consecutive - extend current range + end = sorted_lines[i] + else: + # Gap found - save current range and start new one + ranges.append([start, end]) + start = sorted_lines[i] + end = sorted_lines[i] + + # Add the last range + ranges.append([start, end]) + + return ranges + + def _add_line_numbers_to_structure(self, structure: Dict, key_value_pairs: List[tuple], path_prefix: str = "") -> Dict: + """ + Add line number metadata to the structure by matching paths from key_value_pairs. + Returns structure with line number ranges added at appropriate levels. + Line numbers are grouped into ranges for compact representation. + """ + # Create a mapping of paths to line numbers + path_to_lines = {} + for path, value, line_num in key_value_pairs: + if path not in path_to_lines: + path_to_lines[path] = [] + path_to_lines[path].append(line_num) + + # Find the overall line range for the structure + all_lines = [] + for path, value, line_num in key_value_pairs: + all_lines.append(line_num) + + if all_lines: + sorted_all_lines = sorted(set(all_lines)) + ranges = self._group_line_numbers_into_ranges(sorted_all_lines) + structure["_line_numbers"] = { + "min": min(sorted_all_lines), + "max": max(sorted_all_lines), + "ranges": ranges + } + + # Recursively add line numbers for nested keys + def add_lines(obj, current_path=""): + if isinstance(obj, dict): + result = {} + for key, value in obj.items(): + if key == "_line_numbers": + result[key] = value + continue + + full_path = f"{current_path}.{key}" if current_path else key + if isinstance(value, (dict, list)): + nested = add_lines(value, full_path) + result[key] = nested + else: + result[key] = value + + # Add line number if we have it for this specific path + if full_path in path_to_lines: + lines = sorted(set(path_to_lines[full_path])) + ranges = self._group_line_numbers_into_ranges(lines) + result[f"{key}_line_numbers"] = { + "min": min(lines), + "max": max(lines), + "ranges": ranges + } + return result + elif isinstance(obj, list): + return [add_lines(item, current_path) for item in obj] + else: + return obj + + return add_lines(structure) + + def _extract_critical_fields_from_chunk(self, chunk_string: str, key_value_pairs: List[tuple], critical_fields: List[str]) -> Dict[str, Any]: + """ + Extract critical fields from a YAML chunk, preserving the original nested structure. + + Parameters: + ----------- + chunk_string : str + The YAML chunk as a string + key_value_pairs : List[Tuple[str, str, int]] + List of (path, value, line_number) for line number tracking + critical_fields : List[str] + List of critical field paths to extract (e.g., ["metadata.name", "status.conditions[].type"]) + For paths like "status.conditions[].type", extracts the full "status.conditions" array. + + Returns: + -------- + Dict: Nested JSON structure preserving YAML hierarchy, with line number metadata + """ + try: + # Parse the chunk as YAML to get the full structure + # The chunk might start with '-' (list item) or be a direct dict + yaml_data = yaml.safe_load(chunk_string) + if yaml_data is None: + return {} + + # Handle case where chunk is a list item (starts with -) + # If it's a list, take the first item (the actual object) + if isinstance(yaml_data, list): + if len(yaml_data) > 0: + yaml_data = yaml_data[0] + else: + return {} + + if not isinstance(yaml_data, dict): + return {} + + # Extract structures for each critical field and merge them + merged_structure = {} + + for critical_field in critical_fields: + field = critical_field.strip() + if not field: + continue + + # Strip items[]. prefix - chunks are already individual items + if field.startswith('items[].'): + field = field[8:] # Remove 'items[].' + + # Extract ONLY the specific path mentioned in critical fields + # For "status.conditions[].type", extract only "status.conditions" (not entire "status") + # For "status", extract only "status" + if '[]' in field: + # Extract up to and including the array (e.g., "status.conditions") + parts = field.split('.') + array_part_idx = None + for i, part in enumerate(parts): + if '[]' in part: + array_part_idx = i + break + + if array_part_idx is not None: + # Extract only up to the array level, not the parent + path_up_to_array = '.'.join(parts[:array_part_idx + 1]) + extracted = self._extract_nested_structure(yaml_data, path_up_to_array) + else: + extracted = self._extract_nested_structure(yaml_data, field) + else: + # Regular path - extract only this specific path + extracted = self._extract_nested_structure(yaml_data, field) + + if extracted is not None: + merged_structure = self._merge_dicts(merged_structure, extracted) + + # If no structure was extracted, return empty + if not merged_structure: + return {} + + # Add line number metadata + structure_with_lines = self._add_line_numbers_to_structure(merged_structure, key_value_pairs) + + return structure_with_lines + except Exception as e: + return {} + + def _remove_line_numbers_from_structure(self, structure: Dict[str, Any]) -> Dict[str, Any]: + """ + Remove all line number metadata from the structure, keeping only the actual field values. + + Args: + structure: Dictionary containing critical fields with line number metadata + + Returns: + Dictionary with line numbers removed + """ + if not isinstance(structure, dict): + return structure + + result = {} + for key, value in structure.items(): + # Skip line number fields + if key == "_line_numbers" or key.endswith("_line_numbers"): + continue + + if isinstance(value, dict): + result[key] = self._remove_line_numbers_from_structure(value) + elif isinstance(value, list): + result[key] = [self._remove_line_numbers_from_structure(item) if isinstance(item, dict) else item for item in value] + else: + result[key] = value + + return result + + def _remove_timestamps_from_structure(self, structure: Dict[str, Any]) -> Dict[str, Any]: + """ + Remove all timestamp fields from the structure before passing to ML classifier. + Only verbose error patterns are needed, not timestamps. + + Args: + structure: Dictionary containing critical fields + + Returns: + Dictionary with timestamp fields removed + """ + if not isinstance(structure, dict): + return structure + + # Exact timestamp field names (case-insensitive exact match, not substring) + timestamp_keys_exact = { + 'lasttransitiontime', 'lasttransition', 'transitiontime', + 'timestamp', 'time', 'created', 'updated', 'creationtimestamp', + 'starttime', 'endtime', 'firsttimestamp', 'lasttimestamp', + 'eventtime', 'observedat', 'observedtime', + } + + # Pattern to match ISO timestamp strings (e.g., "2026-01-12T14:08:28Z") + iso_timestamp_pattern = re.compile(r'^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}') + + result = {} + for key, value in structure.items(): + # Skip timestamp fields by exact key name match (not substring) + if key.lower() in timestamp_keys_exact: + continue + + if isinstance(value, dict): + result[key] = self._remove_timestamps_from_structure(value) + elif isinstance(value, list): + filtered_list = [] + for item in value: + if isinstance(item, dict): + filtered_item = self._remove_timestamps_from_structure(item) + # Only add if the item has non-timestamp content + if filtered_item: + filtered_list.append(filtered_item) + else: + # Check if the value itself is a timestamp string + if isinstance(item, str) and iso_timestamp_pattern.match(item): + continue # Skip timestamp values + filtered_list.append(item) + if filtered_list: # Only add list if it has content after filtering + result[key] = filtered_list + else: + # Check if the value itself is a timestamp string + if isinstance(value, str) and iso_timestamp_pattern.match(value): + continue # Skip timestamp values + result[key] = value + + return result + + def _remove_alphanumeric_patterns_from_messages(self, structure: Dict[str, Any]) -> Dict[str, Any]: + """ + Remove alphanumeric patterns (version strings, commit hashes, etc.) from message fields + before sending to ML classifier. Only verbose error patterns are needed. + + Args: + structure: Dictionary containing critical fields + + Returns: + Dictionary with alphanumeric patterns removed from message fields + """ + if not isinstance(structure, dict): + return structure + + # Patterns to match and remove: + # - Version strings: "0.0.0-7d2dd62c2a73b66aa99e82c90f64ab53dd523ddf" + # - Commit hashes: long hex strings (40+ chars) + # - Version numbers: "v1.2.3", "1.2.3-abc123" + # - UUIDs: already handled, but keep pattern for completeness + + # Pattern for version strings with commit hashes: "0.0.0-" + version_commit_pattern = re.compile(r'\d+\.\d+\.\d+[-\w]*[a-f0-9]{20,}', re.IGNORECASE) + # Pattern for long hex strings (commit hashes, etc.) — 20+ hex chars + long_hex_pattern = re.compile(r'\b[a-f0-9]{20,}\b', re.IGNORECASE) + # Pattern for version numbers: "v1.2.3" or "1.2.3-abc" + version_pattern = re.compile(r'v?\d+\.\d+\.\d+[-\w]*', re.IGNORECASE) + # Pattern for build IDs: require at least one segment that is mostly + # digits/hex (e.g., "abc123-def456-789"), not plain hyphenated words + # like "kube-api-server" which are meaningful identifiers + build_id_pattern = re.compile( + r'\b[a-z0-9]{8,}[-_][a-z0-9]{4,}[-_][a-z0-9]{4,}\b', re.IGNORECASE + ) + + def clean_message_value(value: str) -> str: + """Remove alphanumeric patterns from a message string.""" + if not isinstance(value, str): + return value + + # Remove version strings with commit hashes + value = version_commit_pattern.sub('', value) + # Remove long hex strings + value = long_hex_pattern.sub('', value) + # Remove version numbers + value = version_pattern.sub('', value) + # Remove build IDs + value = build_id_pattern.sub('', value) + + # Clean up extra spaces + value = re.sub(r'\s+', ' ', value).strip() + + return value + + result = {} + for key, value in structure.items(): + key_lower = key.lower() + + # Process message fields + if 'message' in key_lower: + if isinstance(value, str): + cleaned = clean_message_value(value) + if cleaned: # Only add if there's content left after cleaning + result[key] = cleaned + # If message becomes empty after cleaning, skip it + elif isinstance(value, list): + cleaned_list = [] + for item in value: + if isinstance(item, str): + cleaned = clean_message_value(item) + if cleaned: + cleaned_list.append(cleaned) + else: + cleaned_list.append(item) + if cleaned_list: + result[key] = cleaned_list + else: + result[key] = value + elif isinstance(value, dict): + result[key] = self._remove_alphanumeric_patterns_from_messages(value) + elif isinstance(value, list): + processed_list = [] + for item in value: + if isinstance(item, dict): + processed_item = self._remove_alphanumeric_patterns_from_messages(item) + if processed_item: + processed_list.append(processed_item) + else: + processed_list.append(item) + if processed_list: + result[key] = processed_list + else: + result[key] = value + + return result + + def _extract_critical_fields_from_yaml(self, yaml_file_path: str, original_path: str = None) -> Dict[str, Any]: + """ + Extract critical fields from YAML file - process ALL objects. + Returns JSON with filename, extracted critical fields, ML classifications, and classification table. + + Parameters: + ----------- + yaml_file_path : str + Resolved full path to the YAML file + original_path : str, optional + Original path from orchestrator (relative from quay*) for table lookup + """ + file_name = os.path.basename(yaml_file_path) + result = { + 'file_name': file_name, + 'file_path': yaml_file_path, + 'objects': [], + 'classification_table': [] + } + + try: + # Step 1: Load critical fields for this specific file from docx table + file_path_for_lookup = original_path or yaml_file_path + critical_fields = self._load_critical_fields(file_path_for_lookup) + + # Step 2: Extract YAML object chunks (using proven extraction logic) + self._last_chunk_error = None + chunks = self._extract_yaml_object_chunks(yaml_file_path) + + if not chunks: + if self._last_chunk_error: + result['error'] = f"YAML parse error in {file_name}: {self._last_chunk_error}" + else: + result['error'] = f"No YAML objects found in {file_name}" + return result + + # Step 3: Process ALL chunks (all objects) + critical_fields_list = [] # For ML classifier (without line numbers) + objects_with_lines = [] # For result (with line numbers for reference) + + for idx, (chunk_string, start_line, end_line, key_value_pairs) in enumerate(chunks): + # Extract critical fields preserving YAML structure + critical_fields_data = self._extract_critical_fields_from_chunk( + chunk_string, + key_value_pairs, + critical_fields + ) + + # Remove line numbers, timestamps, and alphanumeric patterns from messages for ML classifier + # Only verbose error patterns are needed + critical_fields_clean = self._remove_line_numbers_from_structure(critical_fields_data) + critical_fields_clean = self._remove_timestamps_from_structure(critical_fields_clean) + critical_fields_clean = self._remove_alphanumeric_patterns_from_messages(critical_fields_clean) + critical_fields_list.append(critical_fields_clean) + + # Store object with line numbers for reference + object_result = { + 'object_index': idx, + 'start_line': start_line, + 'end_line': end_line, + 'key_value_pairs_count': len(key_value_pairs), + 'critical_fields': critical_fields_data + } + objects_with_lines.append(object_result) + + #result['objects'] = objects_with_lines + + filtered_critical_fields = [] + filtered_objects = [] + + for cf, obj in zip(critical_fields_list, objects_with_lines): + # Skip empty chunks (wrapper metadata) + if not cf or cf == {}: + if not _is_quiet(): + print(f" [Filter] Skipping Chunk {obj['object_index']+1} (lines {obj['start_line']}-{obj['end_line']}): Empty/wrapper metadata") + continue + + # Skip chunks with only wrapper fields (continue, resourceVersion) + keys = set(cf.keys()) if isinstance(cf, dict) else set() + if keys == {'metadata'}: + nested_keys = set(cf.get('metadata', {}).keys()) + if nested_keys <= {'continue', 'resourceVersion'}: + if not _is_quiet(): + print(f" [Filter] Skipping Chunk {obj['object_index']+1} (lines {obj['start_line']}-{obj['end_line']}): List wrapper metadata only") + continue + + filtered_critical_fields.append(cf) + filtered_objects.append(obj) + + # Replace lists with filtered versions + critical_fields_list = filtered_critical_fields + objects_with_lines = filtered_objects + + # Update result with filtered objects + result['objects'] = objects_with_lines + + # Step 4: Send to ML Classifier + if ML_CLASSIFIER_AVAILABLE and critical_fields_list: + ml_response = classify_critical_fields(critical_fields_list) + + # Handle both structured (dict) and legacy (list) returns + if isinstance(ml_response, dict): + ml_results = ml_response.get('results', []) + ml_error = ml_response.get('error') + else: + ml_results = ml_response if isinstance(ml_response, list) else [] + ml_error = None + + if ml_error: + result.setdefault('warnings', []).append(f"ML classification: {ml_error}") + if not _is_quiet(): + print(f" [ML Warning] {ml_error}") + + # Validate result count matches input + if ml_results and len(ml_results) != len(objects_with_lines): + if not _is_quiet(): + print(f" [ML Warning] Result count mismatch: expected {len(objects_with_lines)}, got {len(ml_results)}") + result.setdefault('warnings', []).append( + f"ML result count mismatch: expected {len(objects_with_lines)}, got {len(ml_results)}" + ) + + # Warn when ML returns empty for a file that had objects + if not ml_results and objects_with_lines: + warning_msg = f"ML classification returned no results for {file_name} ({len(objects_with_lines)} objects submitted)" + result.setdefault('warnings', []).append(warning_msg) + if not _is_quiet(): + print(f" [ML Warning] {warning_msg}") + + # Step 5: Create classification table + classification_table = [] + for obj_result, ml_result in zip(objects_with_lines, ml_results): + chunk_num = obj_result['object_index'] + 1 + lines = f"{obj_result['start_line']}-{obj_result['end_line']}" + classification = ml_result.get('classification', 'Unknown') + reason = ml_result.get('reason', 'No reason provided') + + classification_table.append({ + 'Chunk': chunk_num, + 'Lines': lines, + 'Classification': classification, + 'Reason': reason + }) + + result['classification_table'] = classification_table + result['ml_results'] = ml_results + + # Step 6: Collect raw critical fields for objects classified as + # Error only (not Majority Error — Majority Error represents + # common negative patterns that are widespread and less useful + # for root-cause analysis; only rare/anomalous "Error" objects + # are sent to the LLM RCA agent). + error_objects_raw = [] + for obj_result, ml_result in zip(objects_with_lines, ml_results): + if ml_result.get('classification') == 'Error': + critical_fields_no_lines = self._remove_line_numbers_from_structure(obj_result['critical_fields']) + error_objects_raw.append({ + 'object_index': obj_result['object_index'], + 'start_line': obj_result['start_line'], + 'end_line': obj_result['end_line'], + 'critical_fields': critical_fields_no_lines, + }) + result['error_objects_raw'] = error_objects_raw + else: + result['error_objects_raw'] = [] + if not ML_CLASSIFIER_AVAILABLE: + result['error'] = "ML Classifier not available" + else: + result['error'] = "No critical fields extracted" + + except Exception as e: + result['error'] = str(e) + result['error_objects_raw'] = [] + + return result + + def print_classification_table(self, classification_table: List[Dict[str, Any]], file_name: str = None): + """ + Print the ML classification table in the requested format. + + Args: + classification_table: List of dicts with keys: Chunk, Lines, Classification, Reason + file_name: Optional file name to print as header (e.g., clusterversions.yaml) + """ + if not classification_table: + return + + # Print file name header when processing multiple files + if not _is_quiet(): + if file_name: + print(f"\n--- {file_name} ---") + + # Print header + print(f"\n{'Chunk':<8} {'Lines':<15} {'Classification':<20} {'Reason':<60}") + print("-" * 100) + + # Print each row + for row in classification_table: + chunk = str(row.get('Chunk', '')) + lines = str(row.get('Lines', '')) + classification = str(row.get('Classification', '')) + reason = str(row.get('Reason', '')) + + # Handle long reasons - wrap to next line if needed + if len(reason) <= 60: + print(f"{chunk:<8} {lines:<15} {classification:<20} {reason:<60}") + else: + # First line - show first 60 chars + print(f"{chunk:<8} {lines:<15} {classification:<20} {reason[:60]}") + # Continuation lines - indent to align with Reason column (8+15+20+1 = 44 spaces before Reason) + remaining = reason[60:] + while remaining: + # Align continuation with Reason column start + print(f"{'':<44}{remaining[:60]}") + remaining = remaining[60:] + + print() + + def _is_yaml_path(self, path: str) -> bool: + """True if path looks like a YAML file.""" + p = (path or "").lower() + return p.endswith(".yaml") or p.endswith(".yml") + + def _is_log_path(self, path: str) -> bool: + """True if path looks like a log/txt file (extension or path contains logs).""" + p = (path or "").lower() + return p.endswith(".log") or p.endswith(".txt") or "/logs/" in p or "\\logs\\" in p + + def report_files_availability(self, file_paths: List[str]) -> Dict: + """ + Search which shortlisted files are available in the supplied must-gather directory + or elsewhere under root. Prints a report to terminal and returns data for UI. + Saves a full resolved_paths.json to Results/ for debuggability. + + The JSON has exactly one entry per input path so the total always adds up. + Wildcard paths show all matched physical files. Deduplicated paths are flagged + instead of silently dropped. + """ + import json as _json + base_folder = self.must_gather_base_dir or DEFAULT_BASE_FOLDER + + # ── Track seen resolved paths for deduplication across all input paths ── + seen_resolved: set = set() + + # ── Per-path records (one entry per raw input path) ── + # Each record: raw_path, normalized_path, status, resolved_paths[], note, searched_path + # status: "found" | "not_found" | "error" + # Duplicates are reported as "not_found" with a "duplicate" note. + per_path_records: List[Dict] = [] + + # Also build the legacy lists needed by the return dict and callers + found_in_supplied_dir: List[Dict] = [] + not_found_list: List[str] = [] + + for raw_path in file_paths: + # Try regex-based node-name expansion before generic placeholder normalization + if '<' in raw_path: + node_expanded = self._expand_node_name_placeholder(raw_path, base_folder) + if node_expanded: + new_matches = [] + for ne in node_expanded: + key = os.path.normpath(os.path.normcase(ne)) + if key not in seen_resolved: + seen_resolved.add(key) + new_matches.append(ne) + found_in_supplied_dir.append({"original": raw_path, "resolved": ne}) + if new_matches: + per_path_records.append({ + "raw_path": raw_path, + "status": "found", + "resolved_paths": new_matches, + "note": f"node-name regex expansion: {len(node_expanded)} file(s) matched", + }) + else: + not_found_list.append(raw_path) + per_path_records.append({ + "raw_path": raw_path, + "status": "not_found", + "resolved_paths": [], + "note": "duplicate — node-name expanded files already resolved by earlier entries", + }) + continue + + normalized = self._normalize_placeholders(raw_path) + is_wildcard = self._path_has_wildcard(self._strip_must_gather_prefix(normalized)) + + try: + if is_wildcard: + matches = self._resolve_path_glob(normalized, base_folder) + if matches: + new_matches = [] + dup_matches = [] + for m in matches: + key = os.path.normpath(os.path.normcase(m)) + if key not in seen_resolved: + seen_resolved.add(key) + new_matches.append(m) + found_in_supplied_dir.append({"original": raw_path, "resolved": m}) + else: + dup_matches.append(m) + if new_matches: + per_path_records.append({ + "raw_path": raw_path, + "normalized_path": normalized if normalized != raw_path else None, + "status": "found", + "resolved_paths": new_matches, + "duplicate_paths": dup_matches if dup_matches else None, + "note": f"glob expansion: {len(matches)} physical file(s) matched", + }) + else: + not_found_list.append(raw_path) + per_path_records.append({ + "raw_path": raw_path, + "normalized_path": normalized if normalized != raw_path else None, + "status": "not_found", + "resolved_paths": [], + "note": "duplicate — all matched files already resolved by earlier entries", + }) + else: + # Wildcard found no matches at all + not_found_list.append(raw_path) + per_path_records.append({ + "raw_path": raw_path, + "normalized_path": normalized if normalized != raw_path else None, + "status": "not_found", + "resolved_paths": [], + "note": "wildcard/placeholder pattern — 0 files matched", + "searched_pattern": normalized, + }) + else: + # Concrete (non-wildcard) path + # Fast path: already resolved absolute path under base — skip re-resolution. + if (os.path.isabs(normalized) + and self._is_path_under_base(normalized, base_folder)): + full_path = os.path.normpath(normalized) + else: + full_path = self._resolve_path(normalized, base_folder) + if os.path.exists(full_path) and os.path.isfile(full_path): + key = os.path.normpath(os.path.normcase(full_path)) + if key not in seen_resolved: + seen_resolved.add(key) + found_in_supplied_dir.append({"original": raw_path, "resolved": full_path}) + per_path_records.append({ + "raw_path": raw_path, + "status": "found", + "resolved_paths": [full_path], + "note": "direct", + }) + else: + not_found_list.append(raw_path) + per_path_records.append({ + "raw_path": raw_path, + "status": "not_found", + "resolved_paths": [], + "note": "duplicate — same physical file already resolved by an earlier entry", + }) + else: + not_found_list.append(raw_path) + per_path_records.append({ + "raw_path": raw_path, + "status": "not_found", + "resolved_paths": [], + "note": "not found", + "searched_path": full_path, + }) + except Exception as exc: + not_found_list.append(raw_path) + per_path_records.append({ + "raw_path": raw_path, + "normalized_path": normalized if normalized != raw_path else None, + "status": "error", + "resolved_paths": [], + "note": f"exception during resolution: {exc}", + }) + + # ── Summary counts (all based on per_path_records → always add up to total) ── + total_raw = len(file_paths) + total_found = sum(1 for r in per_path_records if r["status"] == "found") + total_not_found = sum(1 for r in per_path_records if r["status"] == "not_found") + total_error = sum(1 for r in per_path_records if r["status"] == "error") + total_physical = len(seen_resolved) + total_duplicate = sum(1 for r in per_path_records if "duplicate" in (r.get("note") or "").lower()) + + if not _is_quiet(): + print("\n" + "=" * 100) + print("Shortlisted files: availability in must-gather directory") + print("=" * 100) + print(f"Supplied must-gather directory: {base_folder}") + print(f"Total raw paths shortlisted : {total_raw}") + print(f" Found (unique physical) : {total_found} raw paths → {total_physical} physical file(s)") + print(f" In supplied directory : {len(found_in_supplied_dir)}") + print(f" NOT found : {total_not_found}" + + (f" (of which {total_duplicate} are duplicates of already-resolved files)" if total_duplicate else "")) + if total_error: + print(f" Errors during resolution : {total_error}") + print(f" CHECK: {total_found} + {total_not_found}" + + (f" + {total_error} errors" if total_error else "") + + f" = {total_found + total_not_found + total_error}" + + (" ✓" if total_found + total_not_found + total_error == total_raw else " ✗ MISMATCH")) + print() + for rec in per_path_records: + status = rec["status"] + raw = rec["raw_path"] + note = rec.get("note", "") + if status == "found": + paths = rec.get("resolved_paths", []) + print(f" [FOUND] {raw}") + for p in paths: + print(f" -> {p} [{note}]") + elif status == "not_found": + is_dup = "duplicate" in note.lower() + tag = "NOT FOUND (duplicate)" if is_dup else "NOT FOUND" + print(f" [{tag}] {raw}") + if is_dup: + print(f" reason: {note}") + else: + searched = rec.get("searched_path") or rec.get("searched_pattern", "") + if searched: + print(f" searched: {searched}") + elif status == "error": + print(f" [ERROR] {raw} — {note}") + print("=" * 100 + "\n") + + # ── Save resolved_paths.json (one entry per input path — always N entries for N paths) ── + try: + from app_paths import get_results_dir + out_path = get_results_dir() / "resolved_paths.json" + with open(out_path, "w", encoding="utf-8") as _f: + _json.dump({ + "base_folder": base_folder, + "total_raw_paths": total_raw, + "summary": { + "found": total_found, + "not_found": total_not_found, + "not_found_duplicates": total_duplicate, + "error": total_error, + "physical_files": total_physical, + "check": f"{total_found}+{total_not_found}" + + (f"+{total_error}(err)" if total_error else "") + + f"={total_found+total_not_found+total_error}" + + (" OK" if total_found+total_not_found+total_error == total_raw else " MISMATCH"), + }, + "entries": per_path_records, + }, _f, indent=2, ensure_ascii=False) + if not _is_quiet(): + print(f"[Availability] Full path resolution saved to: {out_path}") + except Exception as _e: + if not _is_quiet(): + print(f"[Availability] Warning: could not save resolved_paths.json: {_e}") + + # Build summary text for UI + lines = [ + f"Supplied directory: {base_folder}", + f"Total raw paths shortlisted: {total_raw}", + f" Found: {total_found} paths → {total_physical} physical files", + f" Duplicate (same file, not re-sent): {total_duplicate}", + f" Not found: {total_not_found}", + ] + return { + "base_folder": base_folder, + "total_shortlisted": total_raw, + "total_physical_files": total_physical, + "found_in_supplied_dir": found_in_supplied_dir, + "found_elsewhere": [], + "not_found": not_found_list, + "summary_text": "\n".join(lines), + } + + def analyze_files( + self, + file_paths: List[str], + file_types: List[str] = None, + progress_callback=None, + suggested_files_with_priority: Optional[List[Dict]] = None, + ) -> Dict: + """ + Analyze a list of files (YAML and log). Called by orchestrator_agent.py. + Resolves paths under base folder; files not found are skipped. + Prints all YAML and log files to analyze, grouped by priority (high/medium/low). + + Parameters: + ----------- + file_paths : List[str] + List of file paths (suggested by LLM or default) + file_types : List[str], optional + List of file types to include ('yaml', 'log', 'json'). If None, ['yaml', 'log', 'json']. + suggested_files_with_priority : List[Dict], optional + LLM suggested list with 'path' and 'priority' (high/medium/low) for printing by priority. + + Returns: + -------- + dict : Analysis results (analyzed_files, failed_files, data, summary, log_files_for_analysis, etc.) + """ + if file_types is None: + file_types = ["yaml", "log", "json"] + + # Check if files are accessible under the configured base folder + base_folder = self.must_gather_base_dir or DEFAULT_BASE_FOLDER + access_result = self._check_file_access(file_paths, base_folder) + + # Files not found at their resolved path are marked as not found. + # No parent-directory fallback search is performed. + + # Build priority map from LLM suggested list (original path -> priority) + path_to_priority = {} + if suggested_files_with_priority: + for s in suggested_files_with_priority: + p = (s.get("path") or "").strip() + if p: + path_to_priority[p] = (s.get("priority") or "medium").lower() + + # Deduplicate by resolved path so same file (e.g. kubelet from LLM + ALWAYS_INCLUDE) is processed once + def _dedupe_accessible_by_resolved(items: list) -> list: + seen = set() + out = [] + for item in items: + res = item.get("resolved", "") + key = os.path.normpath(os.path.normcase(res)) if res else res + if key and key not in seen: + seen.add(key) + out.append(item) + return out + + accessible_deduped = _dedupe_accessible_by_resolved(access_result["accessible"]) + # Create mapping: resolved_path -> original_path for table lookup + path_mapping = {item['resolved']: item['original'] for item in accessible_deduped} + + # Classify accessible items as YAML or log (only actual files, not directories) + all_resolved = [] + for item in accessible_deduped: + res = item.get("resolved", "") + orig = item.get("original", "") + if not res or item.get("note") == "path is a directory": + continue + if not os.path.isfile(res): + continue + all_resolved.append((res, orig)) + + yaml_files = [res for res, _ in all_resolved if self._is_yaml_path(res)] + # Deduplicate log files by normalized path so same file (e.g. kubelet_service from two names) is processed once + _log_seen = set() + log_files = [] + for res, _ in all_resolved: + if not self._is_log_path(res): + continue + key = os.path.normpath(os.path.normcase(os.path.abspath(res))) + if key not in _log_seen: + _log_seen.add(key) + log_files.append(res) + + # Print resolved file paths + if not _is_quiet(): + yaml_here = [(r, o) for r, o in all_resolved if self._is_yaml_path(r)] + log_here = [(r, o) for r, o in all_resolved if self._is_log_path(r)] + other_here = [(r, o) for r, o in all_resolved if not self._is_yaml_path(r) and not self._is_log_path(r)] + print("\n" + "=" * 100) + print(f"Resolved files to analyze ({len(all_resolved)} total)") + print("=" * 100) + for res, orig in yaml_here: + print(f" [YAML] {res}") + for res, orig in log_here: + print(f" [LOG] {res}") + for res, orig in other_here: + print(f" [FILE] {res}") + print("=" * 100 + "\n") + + total_yaml_bytes = 0 + yaml_file_sizes = {} + if progress_callback and (yaml_files or log_files): + try: + progress_callback("file_analysis_intent", "Intent: Load critical fields from docx, extract YAML objects, and classify each with ML (Error, Majority Error, Majority, CONFIG). Log files are listed for analysis.", None) + all_names = [os.path.basename(r) for r in yaml_files] + [os.path.basename(r) for r in log_files] + progress_callback("yaml_files_list", "Shortlisted files for analysis (YAML + log, resolved under base dir):", {"files": all_names}) + except Exception: + pass + + if yaml_files: + # Process all YAML files (clusteroperators.yaml, clusterversions.yaml, etc.) + for yaml_file in yaml_files: + file_key = os.path.basename(yaml_file) + original_path = path_mapping.get(yaml_file, yaml_file) + if progress_callback: + try: + progress_callback("yaml_processing", f"Sending to ML: {file_key}", {"file": file_key}) + except Exception: + pass + try: + sz = os.path.getsize(yaml_file) + total_yaml_bytes += sz + yaml_file_sizes[file_key] = sz + except Exception: + yaml_file_sizes[file_key] = 0 + + if not _is_quiet(): + print(f"\n[Data Analyzer] Processing: {file_key}") + metadata = self._extract_critical_fields_from_yaml(yaml_file, original_path) + + # Store in memory + self.extracted_metadata[file_key] = metadata + + # Progress: classification table for this file (with brief explanation of labels) + if progress_callback and metadata.get('classification_table'): + try: + progress_callback("classification", f"ML results for {file_key}", { + "file": file_key, + "table": metadata['classification_table'], + "explanation": "Error = rare/anomaly; Majority Error = common negative pattern; Majority = common healthy; CONFIG = config change.", + }) + except Exception: + pass + elif progress_callback and file_key: + # No table: report why + reason = "no objects found" if not metadata.get('objects') else "no critical fields extracted or no ML table" + try: + progress_callback("classification_no_output", f"No ML output for {file_key}: {reason}.", {"file": file_key, "reason": reason}) + except Exception: + pass + + # Check for errors or issues + if not _is_quiet(): + if 'error' in metadata: + print(f"\n[Warning] Error processing {file_key}: {metadata['error']}") + elif not metadata.get('objects'): + print(f"\n[Info] {file_key}: No objects found in file") + elif not metadata.get('classification_table'): + print(f"\n[Info] {file_key}: No classification table generated (may have no critical fields extracted)") + + # Print classification table for this file if available + if 'classification_table' in metadata and metadata['classification_table']: + # Print file name so user knows which file the table is for + self.print_classification_table(metadata['classification_table'], file_key) + + # Process log/txt files with ML_LOG_CLASSIFICATION (Error, Information, Warning) + # analyze_logs_ml is the public entry point: takes a single file_path, returns + # {"status", "files": {"rare_errors": {path, templates, lines}, ...}, "totals", ...} + log_processing_result = {} + if log_files and ML_LOG_CLASSIFICATION_AVAILABLE: + output_dir = str(get_application_dir() / "Results" / "log_classifications") + _level_map = { + "rare_errors": "RareError", + "highfreq_errors": "HighFreqError", + "warnings": "Warning", + "information": "Information", + "unknown": "Unknown", + "config_changes": "CONFIG", + } + all_per_file = [] + try: + for log_file in log_files: + try: + result = analyze_logs_ml(log_file, output_dir=output_dir) + if result.get("error"): + if not _is_quiet(): + print(f"[Data Analyzer] Log classification error for {os.path.basename(log_file)}: {result['error']}") + continue + saved = {} + for out_key, file_info in result.get("files", {}).items(): + level_name = _level_map.get(out_key, out_key) + if isinstance(file_info, dict) and file_info.get("path"): + saved[level_name] = file_info["path"] + all_per_file.append({"file": log_file, "saved": saved}) + if not _is_quiet(): + print(f"[Data Analyzer] Log processed: {os.path.basename(log_file)} " + f"({result.get('totals', {}).get('lines', 0)} lines, " + f"{result.get('totals', {}).get('templates', 0)} templates)") + except Exception as e: + if not _is_quiet(): + print(f"[Data Analyzer] Log classification error for {os.path.basename(log_file)}: {e}") + + log_processing_result = { + "per_file": all_per_file, + "logs_count": len(all_per_file), + "summary": {}, + } + + if not _is_quiet() and all_per_file: + print("\n" + "=" * 80) + print("LOG PROCESSING (Error, Information, Warning) — one set per log file (each file once)") + print("=" * 80) + print(f" Log files processed: {len(all_per_file)}") + for pf in all_per_file: + print(f" {pf.get('file', '')}:") + for level_name, path in (pf.get("saved") or {}).items(): + print(f" {level_name} -> {path}") + print("=" * 80 + "\n") + + if progress_callback: + try: + progress_callback("log_processing_result", "Log processing complete (Error, Information, Warning)", log_processing_result) + except Exception: + pass + except Exception as e: + if not _is_quiet(): + print(f"[Data Analyzer] Log classification error: {e}") + log_processing_result = {"error": str(e), "summary": {}, "saved_files": {}} + if progress_callback: + try: + progress_callback("log_processing_result", "Log processing failed", log_processing_result) + except Exception: + pass + elif log_files and not ML_LOG_CLASSIFICATION_AVAILABLE: + if not _is_quiet(): + print("[Data Analyzer] Log files present but ML_LOG_CLASSIFICATION not available (install drain3).") + if progress_callback: + try: + progress_callback("log_processing_result", "Log processing skipped (drain3 not installed)", {"error": "drain3 not installed", "summary": {}, "saved_files": {}}) + except Exception: + pass + + # Load output flags from config (with defaults) + DEFAULT_OUTPUT_FLAGS = { + 'include_errors': True, + 'include_majority_errors': True, + 'include_config_changes': True, + 'include_normal_reports': False, + 'include_summary': True + } + output_flags = {**DEFAULT_OUTPUT_FLAGS, **self.config.get('output_flags', {})} + + # Aggregate classified objects based on flags across all files + aggregated_results = {} + files_with_no_output = [] + all_warnings = [] + + for file_key, file_data in self.extracted_metadata.items(): + ml_results = file_data.get('ml_results', []) + objects_with_lines = file_data.get('objects', []) + + # Collect per-file warnings (ML failures, parse errors, etc.) + for w in file_data.get('warnings', []): + all_warnings.append(f"{file_key}: {w}") + + if not ml_results: + if not file_data.get('classification_table'): + file_error = file_data.get('error', '') + if 'parse error' in (file_error or '').lower(): + reason = f"YAML parse error: {file_error}" + elif not objects_with_lines: + reason = "no objects in file" + else: + reason = "no critical fields matched or ML produced no table" + files_with_no_output.append({"file": file_key, "reason": reason}) + continue + + # Filter objects based on output flags + file_classified_objects = [] + + for obj_result, ml_result in zip(objects_with_lines, ml_results): + classification = ml_result.get('classification') + + # Apply flags to determine if this object should be included + should_include = False + + if classification == 'Error' and output_flags.get('include_errors', True): + should_include = True + elif classification == 'Majority Error' and output_flags.get('include_majority_errors', True): + should_include = True + elif classification == 'CONFIG' and output_flags.get('include_config_changes', True): + should_include = True + elif classification == 'Majority' and output_flags.get('include_normal_reports', False): + should_include = True + + if should_include: + # Remove line numbers from critical fields for clean output + critical_fields_clean = self._remove_line_numbers_from_structure(obj_result['critical_fields']) + + file_classified_objects.append({ + 'object_index': obj_result['object_index'], + 'start_line': obj_result['start_line'], + 'end_line': obj_result['end_line'], + 'classification': classification, + 'reason': ml_result.get('reason', ''), + 'patterns': ml_result.get('verbose_patterns', []), + 'has_config_change': ml_result.get('has_config_change', False), + 'critical_fields': critical_fields_clean + }) + + # Add file results if any objects were included + if file_classified_objects: + file_result = { + 'objects': file_classified_objects + } + + # Add summary if enabled + if output_flags.get('include_summary', True): + summary = { + 'total_objects': len(ml_results), + 'error_count': sum(1 for ml in ml_results if ml.get('classification') == 'Error'), + 'majority_error_count': sum(1 for ml in ml_results if ml.get('classification') == 'Majority Error'), + 'config_change_count': sum(1 for ml in ml_results if ml.get('classification') == 'CONFIG'), + 'normal_count': sum(1 for ml in ml_results if ml.get('classification') == 'Majority'), + 'included_in_output': len(file_classified_objects) + } + file_result['summary'] = summary + + aggregated_results[file_key] = file_result + + if progress_callback and files_with_no_output: + try: + progress_callback("files_no_output", "Why no ML output for some files:", {"files": files_with_no_output}) + except Exception: + pass + + # Store aggregated results JSON to file + results_output_path = get_application_dir() / "errors_aggregate.json" + + # Add metadata to output + output_data = { + 'output_flags': output_flags, + 'files': aggregated_results + } + + try: + with open(results_output_path, 'w', encoding='utf-8') as f: + json.dump(output_data, f, indent=2, default=str) + except (IOError, OSError) as e: + if not _is_quiet(): + print(f"[DataAnalyzer] Failed to write {results_output_path}: {e}") + results_output_path = None + + # Build included_categories and results_text unconditionally + # (used by progress_callback and return value even in quiet mode) + included_categories = [] + if output_flags.get('include_errors', True): + included_categories.append('Error') + if output_flags.get('include_majority_errors', True): + included_categories.append('Majority Error') + if output_flags.get('include_config_changes', True): + included_categories.append('CONFIG') + if output_flags.get('include_normal_reports', False): + included_categories.append('Majority') + + results_text = json.dumps(output_data, indent=2, default=str) + + if not _is_quiet(): + print("\n" + "=" * 80) + print("YAML Classifications (filtered by output flags)") + print("=" * 80) + print(f"Included categories: {', '.join(included_categories)}") + print("=" * 80) + print(results_text) + print("=" * 80) + if results_output_path: + print(f"Written to: {results_output_path}") + else: + print("Warning: errors_aggregate.json could not be written") + + if progress_callback: + try: + progress_callback("yaml_classifications", "YAML Classifications (filtered by output flags)", { + "text": results_text, + "path": str(results_output_path) if results_output_path else None, + "included_categories": included_categories + }) + except Exception: + pass + + # Return structure expected by orchestrator + # Aggregate classification tables from ALL processed files (not just the first one) + classification_table = [] + for file_data in self.extracted_metadata.values(): + if 'classification_table' in file_data: + classification_table.extend(file_data['classification_table']) + if not classification_table: + classification_table = None + + # Log files are listed for analysis (no ML classification; available for future processing) + log_files_original = [path_mapping.get(r, r) for r in log_files] + + return { + "analyzed_files": [item['original'] for item in accessible_deduped], + "failed_files": [item['original'] for item in access_result['not_found'] + access_result['errors']], + "data": self.extracted_metadata, + "classification_table": classification_table, + "ml_classification_result": output_data, + "yaml_classifications_path": str(results_output_path) if results_output_path else None, + "output_flags": output_flags, + "included_categories": included_categories, + "total_yaml_bytes": total_yaml_bytes, + "files_with_no_output": files_with_no_output, + "warnings": all_warnings, + "log_files_for_analysis": log_files_original, + "yaml_files_processed": yaml_files, + "log_files_resolved": log_files, + "log_processing_result": log_processing_result, + "yaml_file_sizes": yaml_file_sizes, + "summary": { + "files_processed": len(yaml_files), + "log_files_for_analysis": len(log_files), + "critical_fields_extracted": sum(len(m.get('objects', [])) for m in self.extracted_metadata.values()), + }, + "errors": [item.get('error', '') for item in access_result['errors']], + "file_count": len(file_paths), + "file_types_processed": file_types, + "file_access_check": access_result, + } diff --git a/intelliaide/Main-program/llm_rca_agent.py b/intelliaide/Main-program/llm_rca_agent.py new file mode 100644 index 0000000..d939dba --- /dev/null +++ b/intelliaide/Main-program/llm_rca_agent.py @@ -0,0 +1,601 @@ +""" +RCA Agent — pure-Python data preparation helpers. + +Provides chunking, prompt building, and manifest generation for the +IntelliAide RCA pipeline. All LLM reasoning is performed by the +orchestrating agent (Lightspeed's Claude) that reads the files written +here. No HTTP calls or external credentials are needed. +""" + +import os +import re +import json +from typing import Dict, List, Any, Optional, Tuple +from pathlib import Path + + +def _remove_line_numbers_from_structure(structure: Any) -> Any: + """Remove all line number metadata from a structure (dict/list).""" + if isinstance(structure, dict): + result = {} + for key, value in structure.items(): + if key == "_line_numbers" or (isinstance(key, str) and key.endswith("_line_numbers")): + continue + result[key] = _remove_line_numbers_from_structure(value) + return result + if isinstance(structure, list): + return [_remove_line_numbers_from_structure(item) for item in structure] + return structure + + +try: + import tiktoken + TIKTOKEN_AVAILABLE = True +except ImportError: + TIKTOKEN_AVAILABLE = False + + +CHARS_PER_TOKEN: Dict[str, float] = { + "claude": 3.5, + "llama": 3.8, + "gpt-4": 3.7, + "gpt-3": 4.0, + "mistral": 3.9, +} + + +def estimate_tokens(text: str, model_id: str = "") -> int: + """Estimate token count using model-aware chars-per-token ratios.""" + if not text: + return 0 + if TIKTOKEN_AVAILABLE: + try: + encoding = tiktoken.get_encoding("cl100k_base") + return len(encoding.encode(text)) + except Exception: + pass + model_lower = (model_id or "").lower() + cpt = next((v for k, v in CHARS_PER_TOKEN.items() if k in model_lower), 3.7) + return max(1, int(len(text) / cpt)) + + +SUMMARY_MAX_CHARS = 80000 + + +def _get_folder_path(file_path: str) -> str: + """Extracts the folder path from a file string to group logical components.""" + if not file_path: + return "unknown" + p = Path(file_path) + return str(p.parent) if len(p.parts) > 1 else "root" + + +def _split_large_log_entry_tokens(entry: Dict[str, Any], max_tokens: int) -> List[Dict[str, Any]]: + """Split an oversized log entry into sub-entries at line boundaries based on tokens.""" + content = entry.get("content", "") + if estimate_tokens(content) <= max_tokens: + return [entry] + + lines = content.split("\n") + parts: List[str] = [] + current_lines: List[str] = [] + current_tokens = 0 + + for line in lines: + line_toks = estimate_tokens(line + "\n") + if current_tokens + line_toks > max_tokens and current_lines: + parts.append("\n".join(current_lines)) + current_lines = [line] + current_tokens = line_toks + else: + current_lines.append(line) + current_tokens += line_toks + + if current_lines: + parts.append("\n".join(current_lines)) + + file_name = entry.get("file", "unknown") + total = len(parts) + return [ + {**entry, "file": f"{file_name} (part {i+1}/{total})", "content": part} + for i, part in enumerate(parts) + ] + + +def load_config(config_path: str = "config.json") -> Dict: + """Load configuration from JSON file. + + Only the ``max_chunk_tokens`` and ``model_id`` fields under the ``claude`` + key are used by the pure-Python helpers in this module (for token budget + estimation). No credentials or endpoint URLs are read here. + """ + try: + from app_paths import get_config_path + path = get_config_path() if config_path == "config.json" else Path(config_path) + except ImportError: + path = Path(__file__).parent / config_path + default: Dict = {"claude": {"max_chunk_tokens": 60000, "model_id": ""}} + if not path.exists(): + return default + try: + with open(path, "r", encoding="utf-8") as f: + cfg = json.load(f) + if "claude" in cfg: + default["claude"].update(cfg["claude"]) + except Exception: + pass + return default + + +# ISO timestamp patterns +_ISO_TS = re.compile(r"(\d{4}-\d{2}-\d{2}[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?Z?)") +_LOG_TIME = re.compile(r'time="(\d{4}-\d{2}-\d{2}(?:T|\s)\d{2}:\d{2}:\d{2}(?:\.\d+)?Z?)"', re.IGNORECASE) +_LOG_TIME_CRIO = re.compile(r'time="(\d{4}-\d{2}-\d{2})\s+\.(\d+)Z"', re.IGNORECASE) +_LOG_TIME_DATE = re.compile(r'time="(\d{4}-\d{2}-\d{2})[\s.]', re.IGNORECASE) + + +def _parse_iso_like(ts_str: str) -> Optional[str]: + """Normalize to sortable ISO-like string. Returns None if unparseable.""" + if not ts_str or len(ts_str) < 19: + return None + normalized = ts_str.replace(" ", "T", 1).strip() + if "T" in normalized: + date_part, rest = normalized.split("T", 1) + rest = re.sub(r"[^\d:]", "", rest[:8]) + if len(rest) >= 6: + return f"{date_part}T{rest[:2]}:{rest[2:4]}:{rest[4:6]}" + return normalized[:19] if len(normalized) >= 19 else None + + +def _extract_timestamps_from_value(value: Any, key_path: str, out: List[Tuple[str, str, str]]) -> None: + """Recursively extract timestamp keys and ISO values from YAML-like structure.""" + if isinstance(value, dict): + for k, v in value.items(): + key_lower = k.lower() if isinstance(k, str) else "" + path = f"{key_path}.{k}" if key_path else k + if any(t in key_lower for t in ("timestamp", "time", "created", "updated", "transition", "eventtime", "observed")): + if isinstance(v, str) and _ISO_TS.search(v): + sortable = _parse_iso_like(_ISO_TS.search(v).group(1)) + if sortable: + out.append((sortable, path, v[:120])) + else: + _extract_timestamps_from_value(v, path, out) + else: + _extract_timestamps_from_value(v, path, out) + elif isinstance(value, list): + for i, item in enumerate(value): + _extract_timestamps_from_value(item, f"{key_path}[{i}]", out) + elif isinstance(value, str) and key_path and _ISO_TS.search(value): + sortable = _parse_iso_like(_ISO_TS.search(value).group(1)) + if sortable: + out.append((sortable, key_path, value[:120])) + + +def build_chronology_from_payload( + payload_yaml: Dict[str, List[Dict[str, Any]]], + log_error_entries: Optional[List[Dict[str, Any]]], +) -> List[Dict[str, str]]: + """Build a time-ordered chronology from YAML timestamps and log line timestamps.""" + events: List[Tuple[str, str, str]] = [] + + for file_name, objects in (payload_yaml or {}).items(): + for obj in objects: + cf = obj if isinstance(obj, dict) else (obj.get("critical_fields") or obj) + _extract_timestamps_from_value(cf, f"YAML:{file_name}", events) + + for entry in (log_error_entries or []): + content = entry.get("content") or "" + file_name = entry.get("file") or "log" + for line in content.split("\n"): + line = line.strip() + if not line: + continue + m = _LOG_TIME.search(line) + if m: + raw = m.group(1) + sortable = _parse_iso_like(raw.replace(" ", "T")) + if sortable: + events.append((sortable, file_name, line[:150].replace("\n", " "))) + continue + m_crio = _LOG_TIME_CRIO.search(line) + if m_crio: + date_part = m_crio.group(1) + frac = m_crio.group(2)[:9].ljust(9, "0") + sortable = f"{date_part}T00:00:00.{frac}" + events.append((sortable, file_name, line[:150].replace("\n", " "))) + continue + m2 = _LOG_TIME_DATE.search(line) + if m2: + sortable = _parse_iso_like(m2.group(1) + "T00:00:00") + if sortable: + events.append((sortable, file_name, line[:150].replace("\n", " "))) + continue + iso = _ISO_TS.match(line) + if iso: + sortable = _parse_iso_like(iso.group(1)) + if sortable: + events.append((sortable, file_name, line[:150].replace("\n", " "))) + + seen = set() + unique = [] + for sortable_ts, source, snippet in events: + key = (sortable_ts, snippet[:80]) + if key in seen: + continue + seen.add(key) + unique.append((sortable_ts, source, snippet)) + unique.sort(key=lambda x: x[0]) + + return [{"timestamp": ts, "source": src, "snippet": snip} for ts, src, snip in unique] + + +def format_chronology_block(chronology: List[Dict[str, str]], max_events: int = 150) -> str: + """Format chronology list as a clear text block for the prompt.""" + if not chronology: + return "" + if len(chronology) <= max_events: + sampled = chronology + else: + half = max_events // 2 + sampled = chronology[:half] + chronology[-half:] + lines = [] + for e in sampled: + ts = e.get("timestamp", "") + src = e.get("source", "") + snip = (e.get("snippet") or "").replace("\n", " ").strip()[:120] + lines.append(f" {ts} | {src} | {snip}") + return "\n".join(lines) + + +def prepare_payload_for_llm(ml_classification_result: Dict[str, Any]) -> Dict[str, List[Dict[str, Any]]]: + """Prepare data for LLM: normalize input format, remove line numbers, keep only YAML objects.""" + payload = {} + for file_name, file_data in (ml_classification_result or {}).items(): + if isinstance(file_data, dict) and "objects" in file_data: + objects = file_data["objects"] + elif isinstance(file_data, list): + objects = file_data + else: + continue + + yaml_objects = [] + for obj in objects: + if not isinstance(obj, dict): + continue + raw_critical_fields = obj.get("critical_fields", {}) + cleaned = _remove_line_numbers_from_structure(raw_critical_fields) + if cleaned: + yaml_objects.append(cleaned) + if yaml_objects: + payload[file_name] = yaml_objects + return payload + + +def build_rca_prompt(payload_for_llm: Dict[str, Any], problem_statement: Optional[str] = None) -> str: + """Build the full RCA user-content prompt string from the payload.""" + chronology = payload_for_llm.get("chronology") or [] + chronology_block = format_chronology_block(chronology) + payload_for_data = {k: v for k, v in payload_for_llm.items() if k != "chronology"} + data_str = json.dumps(payload_for_data, indent=2, default=str) + user_problem = (problem_statement or "").strip() or "Not specified" + + if chronology_block: + chronology_section = f""" +2. CHRONOLOGY OF EVENTS (include in your ## Chronology of Events section): +{chronology_block} + +3. AGGREGATED DATA (YAML/LOG/JSON error objects with file metadata): +""" + else: + chronology_section = """ +2. AGGREGATED DATA (YAML/LOG/JSON error objects with file metadata): +""" + + return f"""You are an expert OpenShift/Kubernetes system analyst performing root cause analysis. + +TASK: Identify the root cause(s) and state clearly: "The key cause for the user's problem is: [...]" + +SOURCES: + +1. USER REPORTED ISSUE (primary focus): +{user_problem} +{chronology_section} +{data_str} + +INSTRUCTIONS: +- Correlate the user's issue with YAML error patterns and/or log error content. +- Identify PRIMARY root cause(s) with evidence, SECONDARY contributing factors. +- Prioritize root causes by relevance to the USER REPORTED ISSUE. +- Base analysis on actual evidence only — do not fabricate. + +OUTPUT FORMAT — use these EXACT ## headings (frontend parses them programmatically): + +## User Reported Issue +## Executive Summary +## Chronology of Events +## Primary Root Cause(s) +## Secondary Causes / Contributing Factors +## Aggregated Error Patterns +(MUST be a pipe-delimited markdown table: +| Pattern | Source | Classification | Significance | +|---------|--------|----------------|--------------| +| ... | ... | ... | ... |) +## Recommendations +(MANDATORY — always include. Numbered, actionable remediation steps. + This section MUST appear last in the report.) + +Do NOT rename headings. Do NOT use plain text for Aggregated Error Patterns.""" + + + + +def chunk_payload( + yaml_errors: Dict[str, Any], + log_entries: List[Dict[str, Any]], + max_chunk_tokens: int = 80000 +) -> List[Dict[str, Any]]: + """Groups files logically by folder path, then builds chunks up to max_chunk_tokens.""" + all_items = [] + + for fkey, objs in yaml_errors.items(): + all_items.append({"folder": _get_folder_path(fkey), "type": "yaml", "file": fkey, "payload": objs}) + + for entry in log_entries: + fkey = entry.get("file", "") + all_items.append({"folder": _get_folder_path(fkey), "type": "log", "file": fkey, "payload": entry}) + + grouped_items = {} + for item in all_items: + grouped_items.setdefault(item["folder"], []).append(item) + + chunks = [] + current_chunk = {"yaml_errors": {}, "log_entries": [], "_tokens": 0} + + def close_chunk(): + nonlocal current_chunk + if current_chunk["yaml_errors"] or current_chunk["log_entries"]: + clean_chunk = {"yaml_errors": current_chunk["yaml_errors"], "log_entries": current_chunk["log_entries"]} + chunks.append(clean_chunk) + current_chunk = {"yaml_errors": {}, "log_entries": [], "_tokens": 0} + + for folder, items in grouped_items.items(): + for item in items: + item_str = json.dumps(item["payload"], indent=2, default=str) + item_tokens = estimate_tokens(item_str) + + if item_tokens > max_chunk_tokens: + if item["type"] == "log": + split_logs = _split_large_log_entry_tokens(item["payload"], max_chunk_tokens) + for sub_log in split_logs: + sub_toks = estimate_tokens(json.dumps(sub_log, indent=2, default=str)) + if current_chunk["_tokens"] + sub_toks > max_chunk_tokens: + close_chunk() + current_chunk["log_entries"].append(sub_log) + current_chunk["_tokens"] += sub_toks + elif item["type"] == "yaml": + if current_chunk["_tokens"] > 0: + close_chunk() + current_chunk["yaml_errors"][item["file"]] = item["payload"] + close_chunk() + continue + + if current_chunk["_tokens"] + item_tokens > max_chunk_tokens: + close_chunk() + + if item["type"] == "yaml": + current_chunk["yaml_errors"][item["file"]] = item["payload"] + else: + current_chunk["log_entries"].append(item["payload"]) + current_chunk["_tokens"] += item_tokens + + close_chunk() + print(f"[RCA Chunked] Produced {len(chunks)} contextual chunk(s) (Limit: {max_chunk_tokens:,} tokens)") + return chunks + + + + +def prepare_rca_chunks( + ml_classification_result: Dict[str, Any], + job_dir: str, + priority: str, + log_error_entries: Optional[List[Dict[str, Any]]] = None, + config_path: str = "config.json", +) -> Dict[str, Any]: + """Pure-Python Map phase: chunk cluster data and write formatted prompt files to disk. + + Replicates all of run_rca_chunked()'s pure-Python work — token estimation, + chunking, chronology extraction, prompt formatting — WITHOUT making any LLM + call. The resulting chunk files are ready for the orchestrating agent (Claude) + to read and reason over inline. + + Args: + ml_classification_result: Output of analyze_data.py (yaml_errors dict). + job_dir: Path to the shared IntelliAide job directory. + priority: "high" | "medium" | "low" — used in output file names. + log_error_entries: List of log error dicts from analyze_data.py (may be None). + config_path: Path to config.json (used to read max_chunk_tokens / model_id). + + Writes: + /chunk__.md — formatted RCA prompt per chunk + /rca_chunks__manifest.json + + Returns manifest dict: + { + "priority": "high", + "chunk_count": 3, + "chunk_files": [ + {"path": "/chunk_high_1.md", "estimated_tokens": 58200}, + ... + ], + "manifest_path": "/rca_chunks_high_manifest.json" + } + """ + config = load_config(config_path) + claude_config = config.get("claude", {}) + max_chunk_tokens = claude_config.get("max_chunk_tokens", 60000) + + payload_yaml = prepare_payload_for_llm(ml_classification_result) + log_entries = log_error_entries or [] + + chunks = chunk_payload( + yaml_errors=payload_yaml, + log_entries=log_entries, + max_chunk_tokens=max_chunk_tokens, + ) + + job_path = Path(job_dir) + chunk_files: List[Dict[str, Any]] = [] + + for i, chunk_data in enumerate(chunks, start=1): + chunk_yaml = chunk_data["yaml_errors"] + chunk_logs = chunk_data["log_entries"] + + chunk_llm_payload: Dict[str, Any] = {"yaml_errors": chunk_yaml} + if chunk_logs: + chunk_llm_payload["log_errors"] = chunk_logs + + chronology = build_chronology_from_payload( + chunk_yaml if isinstance(chunk_yaml, dict) else {}, chunk_logs, + ) + if chronology: + chunk_llm_payload["chronology"] = chronology + + prompt_str = build_rca_prompt(chunk_llm_payload, problem_statement=None) + estimated_toks = estimate_tokens(prompt_str) + + chunk_path = job_path / f"chunk_{priority}_{i}.md" + chunk_path.write_text(prompt_str, encoding="utf-8") + + chunk_files.append({ + "path": str(chunk_path), + "estimated_tokens": estimated_toks, + }) + + manifest = { + "priority": priority, + "chunk_count": len(chunk_files), + "chunk_files": chunk_files, + } + manifest_path = job_path / f"rca_chunks_{priority}_manifest.json" + manifest_path.write_text(json.dumps(manifest, indent=2, ensure_ascii=False)) + manifest["manifest_path"] = str(manifest_path) + + print( + f"[prepare_rca_chunks] priority={priority} chunks={len(chunk_files)} " + f"manifest={manifest_path}", + file=__import__("sys").stderr, + ) + return manifest + + +def prepare_reduce_batches( + summary_files: List[str], + job_dir: str, + level: int, + problem_statement: Optional[str] = None, + config_path: str = "config.json", +) -> Dict[str, Any]: + """Pure-Python Reduce phase: batch Claude-generated summary files by token budget. + + Replicates _hierarchical_reduce()'s token estimation and batching decisions + WITHOUT making any LLM call. The returned manifest tells the orchestrating + agent (Claude) exactly which summary files belong in each batch and where to + write its synthesis output, so Claude can execute just the reasoning step. + + Args: + summary_files: List of paths to Claude-written chunk summary files. + job_dir: Path to the shared IntelliAide job directory. + level: Reduce level (1 for first reduce, 2+ for recursive). + problem_statement: Original problem text (used for overhead estimation). + config_path: Path to config.json (max_chunk_tokens, model_id). + + Writes: + /reduce_level_manifest.json + + Returns manifest dict: + { + "level": 1, + "batch_count": 2, + "is_final": false, + "batches": [ + { + "batch_index": 0, + "summary_files": ["/chunk_summary_high_1.md", ...], + "output_file": "/reduce_level1_batch1.md" + }, + ... + ], + "manifest_path": "/reduce_level1_manifest.json" + } + + If is_final=True there is exactly one batch. The orchestrating agent should + write its synthesis to batches[0]["output_file"] and treat that as the final + RCA text. If is_final=False, the agent processes each batch, then calls + prepare_reduce_batches() again at level+1 with the output_file paths. + """ + import sys as _sys + + config = load_config(config_path) + claude_config = config.get("claude", {}) + max_chunk_tokens = claude_config.get("max_chunk_tokens", 60000) + model_id = claude_config.get("model_id", "") + + overhead = estimate_tokens(problem_statement or "", model_id) + 2000 + available_tokens = max_chunk_tokens - overhead + + summaries: List[Dict[str, Any]] = [] + for fp in summary_files: + try: + text = Path(fp).read_text(encoding="utf-8") + except Exception as e: + print(f"[prepare_reduce_batches] Warning: could not read {fp}: {e}", file=_sys.stderr) + text = "" + summaries.append({ + "file": fp, + "tokens": estimate_tokens(text, model_id), + }) + + batches: List[List[Dict[str, Any]]] = [] + current_batch: List[Dict[str, Any]] = [] + current_tokens = 0 + + for s in summaries: + if current_tokens + s["tokens"] > available_tokens and current_batch: + batches.append(current_batch) + current_batch = [s] + current_tokens = s["tokens"] + else: + current_batch.append(s) + current_tokens += s["tokens"] + + if current_batch: + batches.append(current_batch) + + job_path = Path(job_dir) + manifest_batches = [] + for i, batch in enumerate(batches): + manifest_batches.append({ + "batch_index": i, + "summary_files": [s["file"] for s in batch], + "output_file": str(job_path / f"reduce_level{level}_batch{i + 1}.md"), + }) + + manifest = { + "level": level, + "batch_count": len(batches), + "is_final": len(batches) == 1, + "batches": manifest_batches, + } + manifest_path = job_path / f"reduce_level{level}_manifest.json" + manifest_path.write_text(json.dumps(manifest, indent=2, ensure_ascii=False)) + manifest["manifest_path"] = str(manifest_path) + + print( + f"[prepare_reduce_batches] level={level} batches={len(batches)} " + f"is_final={manifest['is_final']} manifest={manifest_path}", + file=_sys.stderr, + ) + return manifest + + diff --git a/intelliaide/Main-program/must_gather_file_selector.py b/intelliaide/Main-program/must_gather_file_selector.py new file mode 100644 index 0000000..b333427 --- /dev/null +++ b/intelliaide/Main-program/must_gather_file_selector.py @@ -0,0 +1,198 @@ +""" +Must-Gather File Selector Module + +Builds file-selection prompts from must-gather structure documentation. +All LLM reasoning is performed by the orchestrating agent (Lightspeed's Claude) +that reads the prompt file written here. No HTTP calls or credentials needed. +""" + +import os +import json +from typing import Dict, List, Optional +from pathlib import Path + + +def load_config_by_name(config_file_name: Optional[str] = None) -> Dict: + """Resolve config file by name, load it, and return the full config dict.""" + if config_file_name is None: + config_file_name = "config.json" + script_dir = os.path.dirname(os.path.abspath(__file__)) + candidates = [] + if os.path.isabs(config_file_name) and os.path.isfile(config_file_name): + candidates.append(config_file_name) + else: + try: + from app_paths import get_config_dir + candidates.append(str(get_config_dir() / config_file_name)) + except ImportError: + pass + candidates.append(os.path.join(script_dir, config_file_name)) + for path in candidates: + if not path or not os.path.exists(path): + continue + try: + with open(path, "rb") as f: + raw = f.read() + text = raw.decode("utf-8-sig").strip() + if not text: + continue + return json.loads(text) + except (json.JSONDecodeError, Exception): + continue + print(f"Warning: Could not load config from {config_file_name}.") + return {} + + +def load_config(config_path: Optional[str] = None) -> Dict: + """Load configuration. Delegates to load_config_by_name.""" + return load_config_by_name(config_path) + + +def _resolve_must_gather_docs_dir() -> str: + """Resolve the must-gather docs directory from config.json, app_paths, or fallback.""" + _script_dir = os.path.dirname(os.path.abspath(__file__)) + _project_root = os.path.dirname(_script_dir) + + try: + from app_paths import get_config_path + cfg_path = str(get_config_path()) + except ImportError: + cfg_path = os.path.join(_project_root, "Config", "config.json") + if os.path.isfile(cfg_path): + try: + with open(cfg_path, "r", encoding="utf-8") as f: + cfg = json.load(f) + configured = cfg.get("must_gather_docs_dir", "") + if configured: + if not os.path.isabs(configured): + configured = os.path.join(_project_root, configured) + if os.path.isdir(configured): + return configured + except Exception: + pass + + try: + from app_paths import get_must_gather_docs_dir as _get_docs_dir + docs_dir = str(_get_docs_dir()) + if os.path.isdir(docs_dir): + return docs_dir + except ImportError: + pass + + return os.path.join(_project_root, "DataSource") + + +MUST_GATHER_DOCS_DIR_DEFAULT = _resolve_must_gather_docs_dir() + + +def load_must_gather_documentation(must_gather_docs_dir: str) -> Dict[str, str]: + """Load all must-gather structure documentation files.""" + docs = {} + doc_files = [ + 'MUST_GATHER_STRUCTURE.md', + 'MUST_GATHER_INDEX.md', + 'MUST_GATHER_ROUTING_GUIDE.md', + 'MUST_GATHER_DOCUMENTATION_README.md', + ] + docs_path = Path(must_gather_docs_dir) + if not docs_path.exists(): + raise FileNotFoundError(f"Must-gather documentation directory not found: {must_gather_docs_dir}") + for doc_file in doc_files: + doc_path = docs_path / doc_file + if doc_path.exists(): + try: + with open(doc_path, 'r', encoding='utf-8') as f: + docs[doc_file] = f.read() + except Exception as e: + print(f"Warning: Could not read {doc_file}: {e}") + else: + print(f"Warning: Documentation file not found: {doc_file}") + return docs + + +class MustGatherFileSelector: + """Builds must-gather file-selection prompts (no LLM calls).""" + + def _create_file_selection_prompt(self, problem_statement: str, docs: Dict[str, str]) -> str: + docs_context = "" + for doc_name, doc_content in docs.items(): + docs_context += f"\n\n=== {doc_name} ===\n{doc_content}\n" + return f"""You are an expert OpenShift/Kubernetes system analyst. Analyze the user's problem statement and suggest which files from a must-gather collection need to be analyzed. + +MUST-GATHER DOCUMENTATION: +{docs_context} + +USER PROBLEM STATEMENT: +{problem_statement} + +TASK: Suggest specific file paths from the must-gather collection. + +OUTPUT FORMAT — CRITICAL: Problem category line, then numbered list with [high]/[medium]/[low] priority tags. + +Problem category: +1. [high] path/to/file — reason +2. [medium] path/to/file — reason +3. [low] path/to/file — reason + +Rules: +- First line must be exactly "Problem category: " +- Each list line: number, period, space, [high] or [medium] or [low], space, path, then " — " and a short reason +- Always include both current.log and previous.log for pod logs +- Base suggestions on the must-gather structure documentation above +- Output NOTHING else. No JSON. No markdown.""" + + + +def prepare_file_selection_prompt(problem_statement: str, docs_dir: str, job_dir: str) -> Dict: + """Pure-Python alternative to MustGatherFileSelector.suggest_files(). + + Loads must-gather documentation, builds the file-selection prompt string that + the LLM would normally receive, and writes it to /file_selection_prompt.md. + Returns a manifest dict with the prompt path so the orchestrating agent (Claude) + can read the file and perform file-selection reasoning inline — no HTTP/LLM call made here. + + Args: + problem_statement: The user's problem description. + docs_dir: Path to the must-gather documentation directory. + job_dir: Path to the shared IntelliAide job directory. + + Returns: + {"prompt_path": "/file_selection_prompt.md", + "docs_dir": docs_dir, + "has_docs": True/False} + """ + try: + docs = load_must_gather_documentation(docs_dir) + except FileNotFoundError: + docs = {} + + has_docs = bool(docs) + + if has_docs: + selector = MustGatherFileSelector.__new__(MustGatherFileSelector) + prompt = selector._create_file_selection_prompt(problem_statement.strip(), docs) + else: + # No docs available — fall back to a minimal prompt that asks Claude to + # suggest standard must-gather paths for the problem. + prompt = ( + "You are an expert OpenShift/Kubernetes system analyst.\n" + "No must-gather structure documentation is available.\n\n" + f"USER PROBLEM STATEMENT:\n{problem_statement.strip()}\n\n" + "Suggest the most likely must-gather file paths for this problem using your knowledge " + "of standard OpenShift must-gather layout.\n\n" + "OUTPUT FORMAT:\nProblem category: \n" + "1. [high] path/to/file — reason\n" + "2. [medium] path/to/file — reason\n" + "3. [low] path/to/file — reason" + ) + + prompt_path = Path(job_dir) / "file_selection_prompt.md" + prompt_path.write_text(prompt, encoding="utf-8") + + return { + "prompt_path": str(prompt_path), + "docs_dir": docs_dir, + "has_docs": has_docs, + } + + diff --git a/intelliaide/Main-program/root_cause_analyzer_yaml.py b/intelliaide/Main-program/root_cause_analyzer_yaml.py new file mode 100644 index 0000000..d856a82 --- /dev/null +++ b/intelliaide/Main-program/root_cause_analyzer_yaml.py @@ -0,0 +1,377 @@ +""" +Root Cause Analyzer (YAML only) Sub-Agent + +This module performs root cause analysis on YAML data extracted by the Data Analyzer. +""" + +import json +from typing import Dict, List, Optional, Any + + +class RootCauseAnalyzerYAML: + """ + Analyzes YAML data to identify root causes of issues. + """ + + def __init__(self): + """Initialize Root Cause Analyzer""" + pass + + def analyze(self, data_analyzer_results: Dict) -> Dict: + """ + Perform root cause analysis on YAML data. + + Parameters: + ----------- + data_analyzer_results : dict + Results from Data Analyzer containing analyzed YAML files + + Returns: + -------- + dict : Root cause analysis results containing: + - root_causes: List of identified root causes + - contributing_factors: List of contributing factors + - evidence: Evidence supporting the analysis + - confidence: Confidence level of the analysis + - recommendations: Recommended actions + """ + print("\n[Root Cause Analyzer] Starting YAML root cause analysis...") + + analysis = { + 'root_causes': [], + 'contributing_factors': [], + 'evidence': [], + 'confidence': 'medium', + 'recommendations': [], + 'analysis_summary': '' + } + + # Extract YAML data + yaml_files_data = {} + for file_path, file_data in data_analyzer_results.get('data', {}).items(): + if file_data.get('file_type') == 'yaml': + yaml_files_data[file_path] = file_data + + if not yaml_files_data: + analysis['root_causes'].append({ + 'type': 'insufficient_data', + 'description': 'No YAML files were successfully analyzed', + 'severity': 'high' + }) + analysis['confidence'] = 'low' + return analysis + + print(f"[Root Cause Analyzer] Analyzing {len(yaml_files_data)} YAML files...") + + # Analyze each YAML file + for file_path, file_data in yaml_files_data.items(): + file_analysis = self._analyze_yaml_file(file_path, file_data) + + # Merge findings + if file_analysis.get('root_causes'): + analysis['root_causes'].extend(file_analysis['root_causes']) + if file_analysis.get('contributing_factors'): + analysis['contributing_factors'].extend(file_analysis['contributing_factors']) + if file_analysis.get('evidence'): + analysis['evidence'].extend(file_analysis['evidence']) + if file_analysis.get('recommendations'): + analysis['recommendations'].extend(file_analysis['recommendations']) + + # Deduplicate and prioritize + analysis = self._prioritize_findings(analysis) + + # Generate summary + analysis['analysis_summary'] = self._generate_summary(analysis) + + print(f"[Root Cause Analyzer] Analysis complete:") + print(f" - Root causes identified: {len(analysis['root_causes'])}") + print(f" - Contributing factors: {len(analysis['contributing_factors'])}") + print(f" - Evidence items: {len(analysis['evidence'])}") + + return analysis + + def _analyze_yaml_file(self, file_path: str, file_data: Dict) -> Dict: + """Analyze a single YAML file for root causes""" + findings = { + 'root_causes': [], + 'contributing_factors': [], + 'evidence': [], + 'recommendations': [] + } + + raw_data = file_data.get('raw_data', {}) + metadata = file_data.get('metadata', {}) + kind = metadata.get('kind', '') + + # Analyze based on Kubernetes resource type + if kind == 'Pod': + pod_analysis = self._analyze_pod(raw_data, file_path) + findings.update(pod_analysis) + elif kind == 'Event': + event_analysis = self._analyze_event(raw_data, file_path) + findings.update(event_analysis) + elif kind in ['Service', 'ConfigMap', 'Secret']: + config_analysis = self._analyze_config_resource(raw_data, file_path, kind) + findings.update(config_analysis) + else: + # Generic analysis + generic_analysis = self._analyze_generic(raw_data, file_path) + findings.update(generic_analysis) + + return findings + + def _analyze_pod(self, pod_data: Dict, file_path: str) -> Dict: + """Analyze Pod YAML for issues""" + findings = { + 'root_causes': [], + 'contributing_factors': [], + 'evidence': [], + 'recommendations': [] + } + + # Check pod status + status = pod_data.get('status', {}) + phase = status.get('phase', '') + + if phase not in ['Running', 'Succeeded']: + findings['root_causes'].append({ + 'type': 'pod_state', + 'description': f'Pod is in {phase} state', + 'severity': 'high', + 'file': file_path + }) + findings['evidence'].append({ + 'type': 'pod_phase', + 'value': phase, + 'file': file_path + }) + + # Check container statuses + container_statuses = status.get('containerStatuses', []) + for container_status in container_statuses: + state = container_status.get('state', {}) + + # Check for waiting state + if 'waiting' in state: + reason = state['waiting'].get('reason', '') + message = state['waiting'].get('message', '') + findings['root_causes'].append({ + 'type': 'container_waiting', + 'description': f'Container {container_status.get("name")} is waiting: {reason}', + 'details': message, + 'severity': 'high', + 'file': file_path + }) + + # Check for terminated state + if 'terminated' in state: + reason = state['terminated'].get('reason', '') + exit_code = state['terminated'].get('exitCode', 0) + if exit_code != 0: + findings['root_causes'].append({ + 'type': 'container_terminated', + 'description': f'Container {container_status.get("name")} terminated with exit code {exit_code}', + 'reason': reason, + 'severity': 'high', + 'file': file_path + }) + + # Check conditions + conditions = status.get('conditions', []) + for condition in conditions: + if condition.get('type') == 'Ready' and condition.get('status') != 'True': + findings['root_causes'].append({ + 'type': 'pod_not_ready', + 'description': 'Pod is not in Ready state', + 'reason': condition.get('reason', ''), + 'message': condition.get('message', ''), + 'severity': 'high', + 'file': file_path + }) + + # Check resource requests/limits + spec = pod_data.get('spec', {}) + containers = spec.get('containers', []) + for container in containers: + resources = container.get('resources', {}) + if not resources.get('requests') and not resources.get('limits'): + findings['contributing_factors'].append({ + 'type': 'missing_resource_limits', + 'description': f'Container {container.get("name")} has no resource requests/limits', + 'severity': 'medium', + 'file': file_path + }) + + return findings + + def _analyze_event(self, event_data: Dict, file_path: str) -> Dict: + """Analyze Event YAML for issues""" + findings = { + 'root_causes': [], + 'contributing_factors': [], + 'evidence': [], + 'recommendations': [] + } + + # Events are typically lists + if isinstance(event_data, list): + events = event_data + elif isinstance(event_data, dict) and 'items' in event_data: + events = event_data['items'] + else: + events = [event_data] + + # Analyze events + error_events = [] + warning_events = [] + + for event in events: + if isinstance(event, dict): + event_type = event.get('type', '') + reason = event.get('reason', '') + message = event.get('message', '') + + if event_type == 'Warning': + warning_events.append({ + 'reason': reason, + 'message': message, + 'count': event.get('count', 1) + }) + elif 'Error' in reason or 'Failed' in reason: + error_events.append({ + 'reason': reason, + 'message': message, + 'count': event.get('count', 1) + }) + + # Add findings + if error_events: + for error in error_events[:5]: # Top 5 errors + findings['root_causes'].append({ + 'type': 'event_error', + 'description': f'Error event: {error["reason"]}', + 'message': error['message'], + 'count': error['count'], + 'severity': 'high', + 'file': file_path + }) + + if warning_events: + for warning in warning_events[:5]: # Top 5 warnings + findings['contributing_factors'].append({ + 'type': 'event_warning', + 'description': f'Warning event: {warning["reason"]}', + 'message': warning['message'], + 'count': warning['count'], + 'severity': 'medium', + 'file': file_path + }) + + return findings + + def _analyze_config_resource(self, resource_data: Dict, file_path: str, kind: str) -> Dict: + """Analyze ConfigMap, Secret, or Service YAML""" + findings = { + 'root_causes': [], + 'contributing_factors': [], + 'evidence': [], + 'recommendations': [] + } + + # Check if resource exists + if not resource_data: + findings['contributing_factors'].append({ + 'type': 'missing_config', + 'description': f'{kind} resource is missing or empty', + 'severity': 'medium', + 'file': file_path + }) + + return findings + + def _analyze_generic(self, data: Dict, file_path: str) -> Dict: + """Generic analysis for unknown YAML types""" + findings = { + 'root_causes': [], + 'contributing_factors': [], + 'evidence': [], + 'recommendations': [] + } + + # Look for common error indicators + if isinstance(data, dict): + # Check for status fields + if 'status' in data: + status = data['status'] + if isinstance(status, dict): + # Look for error conditions + for key, value in status.items(): + if 'error' in key.lower() or 'fail' in key.lower(): + findings['evidence'].append({ + 'type': 'status_indicator', + 'key': key, + 'value': str(value), + 'file': file_path + }) + + return findings + + def _prioritize_findings(self, analysis: Dict) -> Dict: + """Deduplicate and prioritize findings""" + # Deduplicate root causes + seen_rc = {} + unique_rc = [] + for rc in analysis['root_causes']: + key = f"{rc.get('type')}_{rc.get('description', '')}" + if key not in seen_rc: + seen_rc[key] = True + unique_rc.append(rc) + + analysis['root_causes'] = unique_rc + + # Sort by severity + severity_order = {'high': 0, 'medium': 1, 'low': 2} + analysis['root_causes'].sort(key=lambda x: severity_order.get(x.get('severity', 'low'), 2)) + analysis['contributing_factors'].sort(key=lambda x: severity_order.get(x.get('severity', 'low'), 2)) + + return analysis + + def _generate_summary(self, analysis: Dict) -> str: + """Generate human-readable summary""" + summary_parts = [] + + if analysis['root_causes']: + summary_parts.append(f"Identified {len(analysis['root_causes'])} root cause(s):") + for i, rc in enumerate(analysis['root_causes'][:3], 1): # Top 3 + summary_parts.append(f" {i}. {rc.get('description', 'Unknown')}") + + if analysis['contributing_factors']: + summary_parts.append(f"\nFound {len(analysis['contributing_factors'])} contributing factor(s)") + + if analysis['recommendations']: + summary_parts.append(f"\nGenerated {len(analysis['recommendations'])} recommendation(s)") + + return '\n'.join(summary_parts) if summary_parts else "No significant findings identified." + + +def main(): + """Example usage""" + analyzer = RootCauseAnalyzerYAML() + + # Example data analyzer results + example_data = { + 'data': { + '/path/to/pod.yaml': { + 'file_type': 'yaml', + 'raw_data': {'kind': 'Pod', 'status': {'phase': 'Failed'}}, + 'metadata': {'kind': 'Pod'} + } + } + } + + result = analyzer.analyze(example_data) + print(json.dumps(result, indent=2, default=str)) + + +if __name__ == "__main__": + main() diff --git a/intelliaide/SKILL.md b/intelliaide/SKILL.md new file mode 100644 index 0000000..8997984 --- /dev/null +++ b/intelliaide/SKILL.md @@ -0,0 +1,402 @@ +# IntelliAide RCA Skills + +You are the orchestrator of the IntelliAide root-cause analysis pipeline for OpenShift clusters. +You call each IntelliAide component as a separate skill and decide what to run next based on +what each step reports. + +**Important:** All LLM reasoning in this pipeline is performed by YOU (the orchestrating agent). +The Python skill scripts handle only pure computation: token estimation, chunking, prompt +formatting, and file I/O. No script makes an independent LLM call. + +--- + +## When to use IntelliAide + +Use IntelliAide whenever the task involves any of the following: + +- Root cause analysis (RCA) of a cluster issue +- Investigating why pods are failing, crashing, or not ready +- Analysing degraded cluster components (etcd, API server, networking, storage, etc.) +- Processing AlertManager alerts, ACS findings, or user-reported problems +- Generating a structured remediation report + +--- + +## Progress Reporting to the Console + +At the **start of the pipeline** (before Step 1), derive the Proposal name and namespace from +the sandbox pod hostname, then annotate the Proposal so progress is visible in the console and +in `oc describe proposal`: + +```bash +_PROPOSAL=$(hostname | sed 's/^ls-[^-]*-analysis-//;s/^ls-analysis-//') +_NS="openshift-lightspeed" +``` + +After **each step** completes, update the progress annotation: + +```bash +oc annotate proposal "$_PROPOSAL" -n "$_NS" \ + intelliaide.io/progress="" --overwrite 2>/dev/null || true +``` + +Use these messages at each step: + +- Before Step 1: `"IntelliAide: waiting for must-gather data — copy now with oc cp"` +- After Step 1: `"IntelliAide: must-gather ready — preparing file selection"` +- After Step 2a: `"IntelliAide: file selection prompt ready — selecting files"` +- After Step 2b: `"IntelliAide: file selection complete (high=N, medium=N, low=N) — running ML analysis"` +- After Step 3: `"IntelliAide: ML analysis complete — preparing RCA chunks (high priority)"` +- After Step 4a: `"IntelliAide: RCA chunks ready (N chunks) — analyzing"` +- After Step 4b: `"IntelliAide: chunk analysis complete — batching for synthesis"` +- After Step 5: `"IntelliAide: high-priority RCA complete"` +- After medium/low passes (if run): `"IntelliAide: medium-priority RCA complete"` / `"IntelliAide: low-priority RCA complete"` +- At the very end: `"IntelliAide: pipeline complete — mapping to output schema"` + +If `oc annotate` fails, ignore it and continue — it is non-critical. + +--- + +## Step-by-Step Orchestration + +Work through the steps below **in order**. After each command, parse the JSON line printed to +stdout and decide whether to continue. + +### Step 1 — Wait for must-gather data (oc cp) + +``` +python /app/skills/intelliaide/extract_cluster.py --query "" +``` + +The script sleeps for the configured wait period so the user can copy must-gather data into the +sandbox pod with `oc cp`, then does a single readiness check. + +Capture `job_dir` and `cluster_dir` from the output JSON. If `success=false`, **stop +immediately** and return the following error JSON — do not proceed to Step 2: + +```json +{"success": false, "options": [], "error": ""} +``` + +> **CRITICAL — buffer safety rule (applies to ALL steps):** +> Never `cat`, `ls -R`, `find`, `grep -r`, or otherwise read must-gather bundle files +> directly after this step. Must-gather bundles are gigabytes of raw data. Reading any +> part of the bundle inline overflows the SDK's 1 MB message buffer and crashes the session. +> All file access is performed exclusively through the Python skill scripts in Steps 2–5, +> which chunk the data safely. The only `cat` calls permitted are: +> +> - `cat ` in Step 2b (the generated file-selection prompt — ≤ 512 KB) +> - `cat ` in Step 4b (individual chunk files — bounded by perform_rca.py) +> - `cat ` in Step 5b (bounded summaries) +> - `cat /rca_.json` in Step 6 (final report only) +> +> Do **not** deviate from this list. + +--- + +### Step 2 — Select relevant files + +#### Step 2a — Prepare the file-selection prompt (Python, no LLM) + +``` +python /app/skills/intelliaide/select_files.py --job-dir +``` + +Output JSON: + +```json +{"prompt_path": "/file_selection_prompt.md", "cluster_dir": "...", "docs_dir": "...", "has_docs": true} +``` + +#### Step 2b — Perform file selection (YOU reason inline) + +``` +cat +``` + +Read this **generated prompt file** (it contains a file-tree index, not raw must-gather data — +it is safe to cat). Then select the most relevant must-gather files for the problem, grouped +by priority (high / medium / low). Do **not** cat any of the listed must-gather files themselves. + +Write `/file_selection.json` with the following schema: + +```json +{ + "query": "", + "cluster_dir": "", + "problem_category": "", + "high": [{"original": "path/to/file", "resolved": "path/to/file", "found": true, "reason": "why high priority"}], + "medium": [...], + "low": [...] +} +``` + +Rules: + +- Include both `current.log` and `previous.log` for relevant pod log directories. +- Set `"resolved"` equal to `"original"` (path verification happens downstream). +- Set `"found": true` for all entries (downstream analyze_data.py checks actual existence). +- Aim for 5–20 high-priority files, fewer medium/low. + +--- + +### Step 3 — Analyze data with ML (Python, no LLM) + +Run for each priority tier that has files (high first, then medium/low only if needed): + +``` +python /app/skills/intelliaide/analyze_data.py --job-dir --priority high +``` + +Capture `priority`, `yaml_files`, `log_files` from output. + +--- + +### Step 4 — Map phase: prepare and analyze RCA chunks + +#### Step 4a — Prepare chunk prompt files (Python, no LLM) + +``` +python /app/skills/intelliaide/perform_rca.py --job-dir --priority high +``` + +Output JSON: + +```json +{"mode": "chunks", "priority": "high", "chunk_count": N, "manifest_path": "...", "has_medium": true, "has_low": false} +``` + +Capture `chunk_count`, `manifest_path`, `has_medium`, `has_low`. + +If `chunk_count == 0`: stop and return an error JSON — IntelliAide found no data to analyze +and cannot proceed without must-gather content: + +```json +{"success": false, "options": [], "error": "No data chunks found for priority — must-gather content may be empty or unreadable"} +``` + +#### Step 4b — Analyze each chunk (YOU reason inline) + +For each entry in `manifest["chunk_files"]`: + +``` +cat +``` + +After reading the chunk, write a concise root-cause summary (≤600 words) for this chunk to: + +``` +/chunk_summary_high_.md +``` + +where `` is the 1-based index of the chunk. Focus on: + +- Specific error patterns and their likely cause +- Key files or components implicated +- Any timestamps or chronology relevant to the problem + +Keep summaries concise — they are fed into the reduce phase. + +--- + +### Step 5 — Reduce phase: batch and synthesize (iterative until is_final) + +#### Step 5a — Prepare reduce batches (Python, no LLM) + +After ALL chunk summaries have been written, call: + +``` +python /app/skills/intelliaide/perform_rca.py \ + --job-dir \ + --priority high \ + --mode reduce \ + --level 1 \ + --summary-files /chunk_summary_high_1.md \ + /chunk_summary_high_2.md \ + ... (all chunk summary files) +``` + +Output JSON: + +```json +{"mode": "reduce", "priority": "high", "level": 1, "batch_count": N, "is_final": true/false, "manifest_path": "..."} +``` + +Step 5b — Synthesize each batch (YOU reason inline) + +For each batch in `manifest["batches"]`: + +``` +cat +``` + +Read all summaries in the batch, then write a synthesized analysis to `batch["output_file"]`. + +If `is_final=true` (only one batch): this synthesized output is the **final RCA text**. + → Skip to Step 6. + +If `is_final=false` (multiple batches): after writing all batch outputs, call Step 5a again at +the next level: + +``` +python /app/skills/intelliaide/perform_rca.py \ + --job-dir \ + --priority high \ + --mode reduce \ + --level \ + --summary-files +``` + +Repeat until `is_final=true`. + +--- + +### Step 6 — Write final RCA output + +When Step 5 is complete with `is_final=true`, the last `batch["output_file"]` contains the +final RCA text. + +``` +cat +``` + +Write `/rca_high.json`: + +```json +{ + "priority": "high", + "rca_text": "", + "cost_usd": 0, + "input_tokens": 0, + "output_tokens": 0, + "has_medium": true, + "has_low": false, + "error": null +} +``` + +Set `cost_usd`, `input_tokens`, `output_tokens` to 0 — Claude's usage is tracked at the +operator session level, not inside IntelliAide. + +--- + +### Steps 7–8 (optional) — Medium and Low priority passes + +If `has_medium=true` after the high-priority pass, repeat Steps 3–6 with `--priority medium`. +When calling analyze_data.py for medium, prefix your chunk summaries with the high-priority +RCA text as context so the analysis builds on prior findings. + +If `has_low=true` after the medium pass, repeat with `--priority low`. + +--- + +### Step 9 — Map final RCA to output schema + +Read the final `rca_.json` file: + +``` +cat /rca_.json +``` + +The `rca_text` field contains the full markdown RCA report with headings: +`## Root Cause`, `## Key Findings`, `## Recommendations`, `## Chronology`. + +Parse those sections and map them to the output schema as described in the +**Output Schema Mapping** section below. + +--- + +## Error Handling + +| Situation | What to do | +| ---------------------------------------------------------- | --------------------------------------------------------------------------- | +| `extract_cluster.py` exits non-zero | **Stop — return error JSON with the error message. Do not proceed.** | +| `select_files.py` returns no `prompt_path` | **Stop — return error JSON: file selection prompt is missing** | +| `file_selection.json` has all-zero counts | **Stop — return error JSON: no files were selected for analysis** | +| `analyze_data.py` exits non-zero | **Stop — return error JSON for this priority tier** | +| `perform_rca.py --mode chunks` returns `chunk_count=0` | **Stop — return error JSON: no data chunks to analyze** | +| Any step times out | **Stop — return error JSON noting which step timed out** | + +Never fall back to `kubectl`/`oc` commands — the IntelliAide pipeline requires must-gather data. +If any step fails, return a structured error JSON immediately: + +```json +{"success": false, "options": [], "error": ""} +``` + +--- + +## Output Schema Mapping + +After all steps complete, produce one option per major root cause identified in the final +`rca_text`. Map the RCA sections to the **standard** output fields as follows: + +| RCA section heading (in `rca_text`) | Standard output field | +| --------------------------------------------------------- | ------------------------------- | +| `## Root Cause` summary paragraph + `## Key Findings` | `diagnosis.summary` | +| `## Root Cause` / specific underlying cause | `diagnosis.rootCause` | +| Evidence quality (High/Medium/Low) | `diagnosis.confidence` | +| `## Recommendations` section (full markdown) | `proposal.description` | +| Individual remediation steps | `proposal.actions[]` | +| Risk level of remediation | `proposal.risk` | +| Whether the fix is reversible | `proposal.reversible` | +| `## Chronology` section (if present) | append to `diagnosis.summary` | + +For each option use this structure: + +```json +{ + "title": "", + "diagnosis": { + "summary": "", + "rootCause": "", + "confidence": "High | Medium | Low" + }, + "proposal": { + "description": "", + "actions": [ + {"type": "command | config | patch", "description": ""} + ], + "risk": "Low | Medium | High | Critical", + "reversible": "Reversible | Irreversible | Partial" + } +} +``` + +**Do not** produce an `rcaSummary` top-level key. All RCA content goes into +`diagnosis` and `proposal` inside each option. These fields are rendered +with markdown formatting in the console UI. + +--- + +## Final Response Format + +After completing Step 9, your **entire response** MUST be raw JSON in exactly +this shape — the operator's HTTP client requires it: + +```json +{ + "success": true, + "options": [ + { + "title": "...", + "diagnosis": { "summary": "...", "rootCause": "...", "confidence": "High | Medium | Low" }, + "proposal": { + "description": "...", + "actions": [{"type": "...", "description": "..."}], + "risk": "Low | Medium | High | Critical", + "reversible": "Reversible | Irreversible | Partial" + } + } + ] +} +``` + +Rules: + +- `success` **MUST** be `true`. +- `options` **MUST** contain at least one entry. If IntelliAide found no + anomalies, produce one option titled `"No Issues Found"` with a diagnosis + summarising what was collected and confirmed healthy, and a proposal with + `risk: "Low"` and `reversible: "Reversible"`. +- Output **raw JSON only** — no markdown fences, no prose before or after. diff --git a/intelliaide/analyze_data.py b/intelliaide/analyze_data.py new file mode 100644 index 0000000..f3902ef --- /dev/null +++ b/intelliaide/analyze_data.py @@ -0,0 +1,203 @@ +#!/usr/bin/env python3 +""" +analyze_data.py — Step 3 (per-priority pass) of IntelliAide pure-skills pipeline. + +Runs ML-based YAML classification and log template mining on the +extracted cluster files for one priority tier, then serializes both the ML +classification result and the log error entries to a JSON file so that +perform_rca.py can read them without accessing the Results/ directory. + +Usage: + python /app/skills/intelliaide/analyze_data.py --job-dir /tmp/intelliaide/ --priority high + +Reads: + /state.json (cluster_dir) + /file_selection.json (list of files for this priority) + +Writes: + /analysis_.json + +Output (stdout JSON): + { + "priority": "high", + "yaml_files": N, + "log_files": N, + "log_entries": N, + "analysis_path": "/analysis_high.json" + } +""" + +import argparse +import json +import os +import sys +from pathlib import Path + +# All IntelliAide engine code lives alongside this script in the same folder. +# At runtime (in the sandbox container) this resolves to /app/skills/intelliaide/ +_SKILL_DIR = Path(__file__).resolve().parent +for _p in ( + str(_SKILL_DIR / "vendor"), # vendored packages (drain3, scikit-learn, etc.) + str(_SKILL_DIR / "Main-program"), + str(_SKILL_DIR / "python-client"), + str(_SKILL_DIR), +): + if _p not in sys.path: + sys.path.insert(0, _p) + +from data_analyzer import DataAnalyzer # noqa: E402 +import data_analyzer as _da # noqa: E402 +import app_paths as _ap # noqa: E402 + +# The skills image volume is mounted read-only by Kubernetes. +# Redirect all IntelliAide write paths to /tmp which is always writable. +_WRITABLE_APP = Path("/tmp/intelliaide-app") +_WRITABLE_APP.mkdir(parents=True, exist_ok=True) +(Path("/tmp/intelliaide-app/Results/log_classifications")).mkdir(parents=True, exist_ok=True) + +# data_analyzer.py binds get_application_dir at import time (from app_paths import ...). +# Patch its local reference so output goes to /tmp instead of the read-only image mount. +_da.get_application_dir = lambda: _WRITABLE_APP + +# llm_rca_agent.py and data_analyzer.py use lazy `from app_paths import get_results_dir`. +# Patch the app_paths module so those lazy imports resolve to a writable path. +_ap.get_results_dir = lambda: _WRITABLE_APP / "Results" + + +def _log_pod(msg: str) -> None: + """Write a progress line directly to the container log stream (PID 1 stdout).""" + line = f"[intelliaide] {msg}\n" + try: + with open("/proc/1/fd/1", "a") as fh: + fh.write(line) + except Exception: + sys.stderr.write(line) + + +_ERROR_LEVELS = {"RareError", "HighFreqError", "Error"} + + +def _build_log_entries(log_processing_result: dict) -> list: + """Read error-level log content from per-file saved paths. + + Mirrors the logic in tools.py:execute_analyze_logs so that the resulting + list can be passed directly to run_rca_chunked / run_rca_and_summary_continued. + """ + entries = [] + for pf in log_processing_result.get("per_file", []): + source_path = pf.get("file", "") + try: + original_size = os.path.getsize(source_path) if source_path and os.path.exists(source_path) else 0 + except Exception: + original_size = 0 + + for level_name, path in (pf.get("saved") or {}).items(): + if level_name not in _ERROR_LEVELS or not path: + continue + try: + with open(path, "r", encoding="utf-8", errors="ignore") as fh: + content = fh.read() + entries.append({ + "file": os.path.basename(path), + "content": content, + "original_size": original_size, + }) + except Exception: + pass + return entries + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--job-dir", required=True) + parser.add_argument("--priority", required=True, choices=["high", "medium", "low"]) + args = parser.parse_args() + + job_dir = Path(args.job_dir) + state = json.loads((job_dir / "state.json").read_text()) + cluster_dir = state["cluster_dir"] + + file_selection = json.loads((job_dir / "file_selection.json").read_text()) + entries = file_selection.get(args.priority, []) + + # Use resolved paths where the extractor actually found the file + file_paths = [ + e["resolved"] if e.get("found") else e["original"] + for e in entries + ] + + analysis_path = str(job_dir / f"analysis_{args.priority}.json") + + # --- No-op for empty priority tier --- + if not file_paths: + print(f"[analyze_data] No {args.priority}-priority files — skipping analysis.", file=sys.stderr) + empty = { + "priority": args.priority, + "yaml_errors": {}, + "log_entries": [], + "yaml_files": 0, + "log_files": 0, + "failed_files": [], + } + Path(analysis_path).write_text(json.dumps(empty, indent=2)) + print(json.dumps({ + "priority": args.priority, + "yaml_files": 0, + "log_files": 0, + "log_entries": 0, + "analysis_path": analysis_path, + })) + return + + _log_pod(f"Step 3/4 — analyze_data priority={args.priority} files={len(file_paths)}") + print( + f"[analyze_data] Analyzing {len(file_paths)} {args.priority}-priority files " + f"under {cluster_dir}", + file=sys.stderr, + ) + + analyzer = DataAnalyzer(must_gather_base_dir=cluster_dir) + result = analyzer.analyze_files( + file_paths, + file_types=["yaml", "log", "json"], + suggested_files_with_priority=entries, + ) + + yaml_errors = result.get("ml_classification_result", {}) + log_processing_result = result.get("log_processing_result", {}) + log_entries = _build_log_entries(log_processing_result) + + yaml_count = len(result.get("yaml_files_processed", [])) + log_count = len(result.get("log_files_for_analysis", [])) + + print( + f"[analyze_data] YAML={yaml_count} log={log_count} " + f"log_entries={len(log_entries)} failed={len(result.get('failed_files', []))}", + file=sys.stderr, + ) + + analysis = { + "priority": args.priority, + "yaml_errors": yaml_errors, + "log_entries": log_entries, + "yaml_files": yaml_count, + "log_files": log_count, + "failed_files": result.get("failed_files", []), + } + Path(analysis_path).write_text(json.dumps(analysis, indent=2, default=str)) + + _log_pod( + f"Step 3/4 — analyze_data done priority={args.priority} " + f"yaml={yaml_count} logs={log_count} log_entries={len(log_entries)}" + ) + print(json.dumps({ + "priority": args.priority, + "yaml_files": yaml_count, + "log_files": log_count, + "log_entries": len(log_entries), + "analysis_path": analysis_path, + })) + + +if __name__ == "__main__": + main() diff --git a/intelliaide/app_paths.py b/intelliaide/app_paths.py new file mode 100644 index 0000000..e4e0539 --- /dev/null +++ b/intelliaide/app_paths.py @@ -0,0 +1,102 @@ +""" +Application paths for normal run vs PyInstaller frozen exe. +Layout: DataSource/, Config/, Machine-learning/, Main-program/, Chatbot/, Results/ +- When frozen: APPLICATION_DIR = folder containing the .exe. +- Config: config.json, json_config.json, agent_memory.json +- DataSource: keyfields_yaml_ml_input.docx, keyfields_json_ml_input.odt, MUST_GATHER_*.md +- Results: errors_aggregate.json, rca_summary.txt, ML output files + +When running inside the agentic-operator skills image, this file lives at: + /intelliaide/app_paths.py → container path /app/skills/intelliaide/app_paths.py + +So Path(__file__).resolve().parent == /app/skills/intelliaide/ +And Config/ == /app/skills/intelliaide/Config/ (read-only image mount) + DataSource/ == /app/skills/intelliaide/DataSource/ (read-only image mount) + Results/ is redirected to /tmp by the skill scripts at startup. +""" + +import sys +from pathlib import Path + +def _is_frozen() -> bool: + return getattr(sys, "frozen", False) + +def get_application_dir() -> Path: + """Project root (or exe dir when frozen).""" + if _is_frozen(): + return Path(sys.executable).resolve().parent + return Path(__file__).resolve().parent + +def get_resource_dir() -> Path: + """Read-only bundled resources. When frozen = sys._MEIPASS.""" + if _is_frozen(): + return Path(sys._MEIPASS) + return Path(__file__).resolve().parent + +def get_config_dir() -> Path: + """Config directory (config.json, agent_memory.json).""" + return get_application_dir() / "Config" + +def get_config_path() -> Path: + """Config file: Config/config.json (or bundled).""" + app = get_application_dir() + cfg_dir = get_config_dir() + res = get_resource_dir() + for d in (cfg_dir, app, res, res / "Config"): + p = d / "config.json" + if p.exists(): + return p + return cfg_dir / "config.json" + +def get_data_source_dir() -> Path: + """DataSource directory (keyfields, MUST_GATHER docs).""" + return get_application_dir() / "DataSource" + +def get_keyfields_path() -> Path: + """Path to keyfields_yaml_ml_input.docx (DataSource or bundled).""" + app_ds = get_data_source_dir() / "keyfields_yaml_ml_input.docx" + if app_ds.exists(): + return app_ds + res_ds = get_resource_dir() / "DataSource" / "keyfields_yaml_ml_input.docx" + if res_ds.exists(): + return res_ds + return get_resource_dir() / "keyfields_yaml_ml_input.docx" + +def get_json_keyfields_path() -> Path: + """Path to keyfields_json_ml_input.odt (DataSource or bundled).""" + app_ds = get_data_source_dir() / "keyfields_json_ml_input.odt" + if app_ds.exists(): + return app_ds + res_ds = get_resource_dir() / "DataSource" / "keyfields_json_ml_input.odt" + if res_ds.exists(): + return res_ds + return get_resource_dir() / "keyfields_json_ml_input.odt" + +def get_json_config_path() -> Path: + """JSON processing config: Config/json_config.json (or bundled).""" + cfg_dir = get_config_dir() + res = get_resource_dir() + for d in (cfg_dir, get_application_dir(), res, res / "Config"): + p = d / "json_config.json" + if p.exists(): + return p + return cfg_dir / "json_config.json" + +def get_memory_file_path() -> Path: + """Agent memory file: Config/agent_memory.json.""" + return get_config_dir() / "agent_memory.json" + +def get_must_gather_docs_dir() -> Path: + """MUST_GATHER topology docs: DataSource (MUST_GATHER_*.md).""" + return get_data_source_dir() + +def get_results_dir() -> Path: + """Results directory (errors_aggregate.json, rca_summary.txt, ML outputs). + NOTE: skill scripts redirect this to /tmp at startup since the image is read-only.""" + d = get_application_dir() / "Results" + d.mkdir(parents=True, exist_ok=True) + return d + +# Convenience +APPLICATION_DIR = get_application_dir() +RESOURCE_DIR = get_resource_dir() diff --git a/intelliaide/extract_cluster.py b/intelliaide/extract_cluster.py new file mode 100644 index 0000000..5e7d186 --- /dev/null +++ b/intelliaide/extract_cluster.py @@ -0,0 +1,220 @@ +#!/usr/bin/env python3 +""" +extract_cluster.py — Step 1 of IntelliAide pure-skills pipeline. + +Reads diagnostic data from /data/input (mounted from a PVC specified in the +Proposal's spec.dataSource.claimName) and validates it. + +The PVC mount point is /data/input; cluster_dir in state.json is the deepest +directory that serves as the logical root for downstream file resolution. +Single-child wrapper directories are unwrapped so cluster_dir lands as close +to the real data as possible. No assumptions are made about the internal +layout — downstream DataAnalyzer._resolve_path handles path expansion with +glob wildcards for any directory structure. + +The PVC must be pre-populated with diagnostic data before the Proposal is +created. The operator mounts it read-only at /data/input. + +Usage: + python /app/skills/intelliaide/extract_cluster.py --query "etcd pods not ready" + + # Reuse an existing job dir (skips validation) + python /app/skills/intelliaide/extract_cluster.py --query "..." --job-dir /tmp/intelliaide/abc123 + +Output (stdout JSON): + { + "job_id": "<8-char id>", + "job_dir": "/tmp/intelliaide/", + "cluster_dir": "/data/input/...", + "mode": "must-gather", + "success": true, + "return_code": 0 + } + +On failure the script prints JSON with success=false and exits with code 1 so +the orchestrating agent stops immediately rather than proceeding with no data. +""" + +import argparse +import json +import sys +import uuid +from pathlib import Path + +_SKILL_DIR = Path(__file__).resolve().parent +_JOB_BASE = "/tmp/intelliaide" + +_DATA_INPUT_DIR = Path("/data/input") + + +def _log_pod(msg: str) -> None: + """Write a progress line directly to the container log stream (PID 1 stdout). + + Skill scripts run as subprocesses of the Claude Code CLI whose stdout is + piped internally — it never reaches the pod log stream. Opening PID 1's + stdout directly is the only way to surface progress in `oc logs`. + Falls back silently if the file is not accessible. + """ + line = f"[intelliaide] {msg}\n" + try: + with open("/proc/1/fd/1", "a") as fh: + fh.write(line) + except Exception: + sys.stderr.write(line) + + +_SKIP_DIRS = frozenset({"lost+found"}) + +_MIN_DATA_FILES = 3 + +_MAX_UNWRAP_DEPTH = 4 + + +def _real_entries(parent: Path) -> "list[Path]": + """List children of *parent*, skipping lost+found and hidden entries.""" + try: + return sorted( + p for p in parent.iterdir() + if p.name not in _SKIP_DIRS and not p.name.startswith(".") + ) + except OSError: + return [] + + +def _unwrap_single_child_dirs(raw_dir: Path) -> Path: + """Walk single-child wrapper directories to reach the actual data root. + + Many diagnostic bundles wrap content in one or more levels of a single + subdirectory (e.g. /data/input/bundle-abc123/cluster-dump/...). This + traverses down as long as a directory has exactly one real child that is + itself a directory, stopping when the directory fans out or max depth is + reached. + """ + current = raw_dir + for _ in range(_MAX_UNWRAP_DEPTH): + children = _real_entries(current) + dirs = [c for c in children if c.is_dir()] + if len(dirs) == 1 and len(children) == 1: + current = dirs[0] + else: + break + return current + + +def _total_files(entries: "list[Path]") -> int: + """Count files across all top-level entries (dirs and regular files).""" + total = 0 + for entry in entries: + if entry.is_file(): + total += 1 + elif entry.is_dir(): + total += sum(1 for _ in entry.rglob("*") if _.is_file()) + return total + + +def _check_data_source() -> "tuple[Path, bool, str]": + """Validate /data/input and return the data root for downstream resolution. + + Checks: mount exists, is readable, is non-empty, has enough files. + Then unwraps single-child wrapper directories so cluster_dir is as close + to the real data as possible. + + Returns (cluster_dir, success, error_message). + """ + if not _DATA_INPUT_DIR.exists(): + return _DATA_INPUT_DIR, False, ( + "No data source found at /data/input. " + "Ensure spec.dataSource.claimName is set on the Proposal " + "and the PVC contains diagnostic data." + ) + + try: + list(_DATA_INPUT_DIR.iterdir()) + except OSError as exc: + return _DATA_INPUT_DIR, False, ( + f"Cannot read /data/input: {exc}. " + "Check PVC permissions and content." + ) + + real = _real_entries(_DATA_INPUT_DIR) + if not real: + return _DATA_INPUT_DIR, False, ( + "Data source at /data/input is empty (only lost+found). " + "Ensure the PVC contains diagnostic data before creating the Proposal." + ) + + total_files = _total_files(real) + if total_files < _MIN_DATA_FILES: + return _DATA_INPUT_DIR, False, ( + f"Data source at /data/input has too few files ({total_files}). " + "Ensure the PVC contains a complete diagnostic bundle." + ) + + data_root = _unwrap_single_child_dirs(_DATA_INPUT_DIR) + return data_root, True, "" + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--query", required=True, + help="Problem statement for RCA (passed through to state.json)") + parser.add_argument("--job-dir", default=None, + help="Reuse an existing job dir (skips validation, updates state.json)") + args = parser.parse_args() + + if args.job_dir: + job_dir = Path(args.job_dir) + job_id = job_dir.name + else: + job_id = str(uuid.uuid4())[:8] + job_dir = Path(_JOB_BASE) / job_id + + job_dir.mkdir(parents=True, exist_ok=True) + + mode = "must-gather" + + if args.job_dir: + cluster_dir, success, error_msg = _check_data_source() + else: + _log_pod(f"Step 1/4 — extract_cluster job_id={job_id} mode=must-gather") + print(f"[extract_cluster] job_id={job_id} mode=must-gather", file=sys.stderr) + + _log_pod("Step 1/4 — checking data source at /data/input (PVC mount)") + cluster_dir, success, error_msg = _check_data_source() + + state = { + "job_id": job_id, + "job_dir": str(job_dir), + "cluster_dir": str(cluster_dir), + "query": args.query, + "mode": mode, + } + (job_dir / "state.json").write_text(json.dumps(state, indent=2)) + + if not success: + _log_pod(f"Step 1/4 — extract_cluster FAILED: {error_msg}") + print(json.dumps({ + "job_id": job_id, + "job_dir": str(job_dir), + "cluster_dir": str(cluster_dir), + "mode": mode, + "success": False, + "return_code": 1, + "error": error_msg, + })) + sys.exit(1) + + _log_pod(f"Step 1/4 — extract_cluster done mode={mode} cluster_dir={cluster_dir}") + print(f"[extract_cluster] Data source validated: {cluster_dir}", file=sys.stderr) + print(json.dumps({ + "job_id": job_id, + "job_dir": str(job_dir), + "cluster_dir": str(cluster_dir), + "mode": mode, + "success": True, + "return_code": 0, + })) + + +if __name__ == "__main__": + main() diff --git a/intelliaide/perform_rca.py b/intelliaide/perform_rca.py new file mode 100644 index 0000000..41c41be --- /dev/null +++ b/intelliaide/perform_rca.py @@ -0,0 +1,214 @@ +#!/usr/bin/env python3 +""" +perform_rca.py — Step 4 of IntelliAide pure-skills pipeline (LLM-free). + +This script has two modes, selected with --mode: + + chunks (default) + ---------------- + Reads analyze_data.py output, runs token-aware chunking and prompt formatting + (all pure Python), writes chunk prompt files to disk, and outputs a manifest. + NO LLM call is made. After this script exits, the orchestrating agent (Claude) + must read each chunk file, reason about root cause, and write one summary file + per chunk: /chunk_summary__.md + + reduce + ------ + Reads the Claude-written summary files, estimates their token sizes, and groups + them into batches that fit within the configured token budget — exactly as + _hierarchical_reduce() did, but without calling an LLM. Outputs a reduce + manifest. After this exits, the orchestrating agent synthesises each batch and + writes . If is_final=false, the agent calls this script + again at level+1 with the batch output files as --summary-files. + +Usage: + # Chunk phase (first call per priority): + python perform_rca.py --job-dir --priority high + + # Reduce phase (after Claude writes chunk summaries): + python perform_rca.py --job-dir --priority high --mode reduce \\ + --level 1 \\ + --summary-files /chunk_summary_high_1.md \\ + /chunk_summary_high_2.md + + # Continuation pass — medium priority, building on high-priority results: + python perform_rca.py --job-dir --priority medium + python perform_rca.py --job-dir --priority medium --mode reduce \\ + --level 1 --summary-files /chunk_summary_medium_1.md ... + +Reads (chunks mode): + /state.json + /analysis_.json + /file_selection.json (to determine has_medium / has_low) + +Writes (chunks mode): + /chunk__.md + /rca_chunks__manifest.json + +Writes (reduce mode): + /reduce_level_manifest.json + +Output (chunks mode, stdout JSON): + { + "mode": "chunks", + "priority": "high", + "chunk_count": 3, + "manifest_path": "/rca_chunks_high_manifest.json", + "has_medium": true, + "has_low": false + } + +Output (reduce mode, stdout JSON): + { + "mode": "reduce", + "priority": "high", + "level": 1, + "batch_count": 2, + "is_final": false, + "manifest_path": "/reduce_level1_manifest.json" + } +""" + +import argparse +import json +import sys +from pathlib import Path + +_SKILL_DIR = Path(__file__).resolve().parent +for _p in ( + str(_SKILL_DIR / "vendor"), + str(_SKILL_DIR / "Main-program"), + str(_SKILL_DIR / "python-client"), + str(_SKILL_DIR), +): + if _p not in sys.path: + sys.path.insert(0, _p) + +from llm_rca_agent import prepare_rca_chunks, prepare_reduce_batches # noqa: E402 +from app_paths import get_config_path # noqa: E402 + + +def _log_pod(msg: str) -> None: + line = f"[intelliaide] {msg}\n" + try: + with open("/proc/1/fd/1", "a") as fh: + fh.write(line) + except Exception: + sys.stderr.write(line) + + +def _mode_chunks(args: argparse.Namespace) -> None: + job_dir = Path(args.job_dir) + state = json.loads((job_dir / "state.json").read_text()) + query = state["query"] + + analysis_file = job_dir / f"analysis_{args.priority}.json" + analysis = json.loads(analysis_file.read_text()) + yaml_errors = analysis.get("yaml_errors", {}) + log_entries = analysis.get("log_entries", []) or None + + _log_pod( + f"Step 4 — perform_rca (chunks) priority={args.priority} " + f"yaml_keys={len(yaml_errors)} " + f"log_entries={len(log_entries) if log_entries else 0}" + ) + print( + f"[perform_rca] chunks priority={args.priority} " + f"yaml_keys={len(yaml_errors)} " + f"log_entries={len(log_entries) if log_entries else 0}", + file=sys.stderr, + ) + + config_path = str(get_config_path()) + manifest = prepare_rca_chunks( + ml_classification_result=yaml_errors, + job_dir=str(job_dir), + priority=args.priority, + log_error_entries=log_entries, + config_path=config_path, + ) + + file_selection = json.loads((job_dir / "file_selection.json").read_text()) + has_medium = len(file_selection.get("medium", [])) > 0 + has_low = len(file_selection.get("low", [])) > 0 + + _log_pod( + f"Step 4 — perform_rca chunks done priority={args.priority} " + f"chunks={manifest['chunk_count']}" + ) + print(json.dumps({ + "mode": "chunks", + "priority": args.priority, + "chunk_count": manifest["chunk_count"], + "manifest_path": manifest["manifest_path"], + "has_medium": has_medium, + "has_low": has_low, + })) + + +def _mode_reduce(args: argparse.Namespace) -> None: + job_dir = Path(args.job_dir) + state = json.loads((job_dir / "state.json").read_text()) + query = state["query"] + + if not args.summary_files: + print( + json.dumps({"error": "--summary-files is required in reduce mode"}), + ) + sys.exit(1) + + _log_pod( + f"Step 5 — perform_rca (reduce) priority={args.priority} " + f"level={args.level} files={len(args.summary_files)}" + ) + print( + f"[perform_rca] reduce priority={args.priority} " + f"level={args.level} files={len(args.summary_files)}", + file=sys.stderr, + ) + + config_path = str(get_config_path()) + manifest = prepare_reduce_batches( + summary_files=args.summary_files, + job_dir=str(job_dir), + level=args.level, + problem_statement=query, + config_path=config_path, + ) + + _log_pod( + f"Step 5 — perform_rca reduce done priority={args.priority} " + f"level={args.level} batches={manifest['batch_count']} " + f"is_final={manifest['is_final']}" + ) + print(json.dumps({ + "mode": "reduce", + "priority": args.priority, + "level": args.level, + "batch_count": manifest["batch_count"], + "is_final": manifest["is_final"], + "manifest_path": manifest["manifest_path"], + })) + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--job-dir", required=True) + parser.add_argument("--priority", required=True, choices=["high", "medium", "low"]) + parser.add_argument("--mode", default="chunks", choices=["chunks", "reduce"], + help="'chunks' (default): prepare chunk prompts; " + "'reduce': batch Claude-written summaries") + parser.add_argument("--level", type=int, default=1, + help="Reduce level (1 = first reduce pass). Only used with --mode reduce.") + parser.add_argument("--summary-files", nargs="+", default=[], + help="Paths to Claude-written summary files. Only used with --mode reduce.") + args = parser.parse_args() + + if args.mode == "chunks": + _mode_chunks(args) + else: + _mode_reduce(args) + + +if __name__ == "__main__": + main() diff --git a/intelliaide/requirements.txt b/intelliaide/requirements.txt new file mode 100644 index 0000000..ae200a2 --- /dev/null +++ b/intelliaide/requirements.txt @@ -0,0 +1,32 @@ +# ============================================================================= +# IntelliAide Skills — Python Dependencies +# ============================================================================= +# Vendored into /intelliaide/vendor/ at image build time via: +# pip install --no-cache-dir --target /intelliaide/vendor -r requirements.txt +# +# Vendoring is required because the sandbox pod runs scripts with its own +# Python interpreter (from the lightspeed-agentic base image), not the UBI9 +# Python embedded in this skills image. The vendor/ directory is added to +# PYTHONPATH / sys.path by each skill script at startup so packages are found. +# +# Excludes API server / MCP server deps (fastapi, uvicorn, mcp) — those are +# only needed for the standalone GitLab deployment, not for skills execution. +# ============================================================================= + +# --- HTTP client (LLM API calls) --- +requests>=2.31.0 + +# --- YAML parsing --- +PyYAML>=6.0.0 + +# --- GCP Vertex AI authentication (gcloud token exchange) --- +google-auth>=2.20.0 + +# --- Log template mining (Drain3 ML algorithm) --- +drain3>=0.9.11 + +# --- ODT keyfields document parsing --- +odfpy>=1.4.1 + +# --- DOCX keyfields document parsing --- +python-docx>=1.0 diff --git a/intelliaide/select_files.py b/intelliaide/select_files.py new file mode 100644 index 0000000..653d9f8 --- /dev/null +++ b/intelliaide/select_files.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 +""" +select_files.py — Step 2 of IntelliAide pure-skills pipeline. + +Prepares a file-selection prompt and writes it to disk so the orchestrating +agent (Claude) can perform the file-selection reasoning inline, with no hidden +LLM call in this script. + +Usage: + python /app/skills/intelliaide/select_files.py --job-dir /tmp/intelliaide/ + +Reads: + /state.json (query + cluster_dir from extract_cluster.py) + +Writes: + /file_selection_prompt.md (formatted prompt for the orchestrator) + +Output (stdout JSON): + { + "prompt_path": "/file_selection_prompt.md", + "cluster_dir": "", + "docs_dir": "", + "has_docs": true/false + } + +After this script exits, the orchestrating agent MUST: + 1. cat + 2. Reason about which files are most relevant. + 3. Write /file_selection.json with the following schema: + { + "query": "", + "cluster_dir": "", + "problem_category": "", + "high": [{"original": "path", "resolved": "path", "found": true, "reason": "..."}], + "medium": [...], + "low": [...] + } + The "resolved" field should equal "original" when the agent cannot verify + existence on disk; the downstream analyze_data.py step handles missing files. +""" + +import argparse +import json +import sys +from pathlib import Path + +# All IntelliAide engine code lives alongside this script in the same folder. +# At runtime (in the sandbox container) this resolves to /app/skills/intelliaide/ +_SKILL_DIR = Path(__file__).resolve().parent +for _p in ( + str(_SKILL_DIR / "vendor"), # vendored packages + str(_SKILL_DIR / "Main-program"), + str(_SKILL_DIR / "python-client"), + str(_SKILL_DIR), +): + if _p not in sys.path: + sys.path.insert(0, _p) + +from must_gather_file_selector import prepare_file_selection_prompt # noqa: E402 +from app_paths import get_must_gather_docs_dir # noqa: E402 + + +def _log_pod(msg: str) -> None: + """Write a progress line directly to the container log stream (PID 1 stdout).""" + line = f"[intelliaide] {msg}\n" + try: + with open("/proc/1/fd/1", "a") as fh: + fh.write(line) + except Exception: + sys.stderr.write(line) + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--job-dir", required=True, help="Path to the shared job directory") + args = parser.parse_args() + + job_dir = Path(args.job_dir) + state = json.loads((job_dir / "state.json").read_text()) + query = state["query"] + cluster_dir = state["cluster_dir"] + docs_dir = str(get_must_gather_docs_dir()) + + _log_pod(f"Step 2/4 — select_files (prepare prompt) query={query[:60]!r}") + print(f"[select_files] query={query[:80]!r}", file=sys.stderr) + print(f"[select_files] docs_dir={docs_dir}", file=sys.stderr) + print(f"[select_files] cluster_dir={cluster_dir}", file=sys.stderr) + + result = prepare_file_selection_prompt( + problem_statement=query, + docs_dir=docs_dir, + job_dir=str(job_dir), + ) + + _log_pod( + f"Step 2/4 — select_files prompt ready " + f"has_docs={result['has_docs']} prompt={result['prompt_path']}" + ) + print(f"[select_files] prompt written to {result['prompt_path']}", file=sys.stderr) + + print(json.dumps({ + "prompt_path": result["prompt_path"], + "cluster_dir": cluster_dir, + "docs_dir": result["docs_dir"], + "has_docs": result["has_docs"], + })) + + +if __name__ == "__main__": + main() diff --git a/intelliaide/vendor/81d243bd2c585b0f4821__mypyc.cpython-312-x86_64-linux-gnu.so b/intelliaide/vendor/81d243bd2c585b0f4821__mypyc.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..83590cfe20797a86c79e0516414f52fc91b1acf1 GIT binary patch literal 433312 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 AZ~y=R literal 0 HcmV?d00001 diff --git a/intelliaide/vendor/_cffi_backend.cpython-312-x86_64-linux-gnu.so b/intelliaide/vendor/_cffi_backend.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..156ee43188df643d2639fdd256da4eb46db27dd9 GIT binary patch literal 348808 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%0Aw++4~(v&d?L<&vLhQT?V<%Ca@hS>%= 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�%m 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 VR+@(~_;1b?-v7RkV;Ro%{{WKxw(S4_ literal 0 HcmV?d00001 diff --git a/intelliaide/vendor/_yaml/__init__.py b/intelliaide/vendor/_yaml/__init__.py new file mode 100644 index 0000000..7baa8c4 --- /dev/null +++ b/intelliaide/vendor/_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/intelliaide/vendor/bin/csv2ods b/intelliaide/vendor/bin/csv2ods new file mode 100755 index 0000000..b05f085 --- /dev/null +++ b/intelliaide/vendor/bin/csv2ods @@ -0,0 +1,229 @@ +#!/opt/app-root/bin/python3.12 +# -*- coding: utf-8 -*- +# Copyright (C) 2008 Agustin Henze -> agustinhenze at gmail.com +# +# This is free software. You may redistribute it under the terms +# of the Apache license and the GNU General Public License Version +# 2 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# +# Contributor(s): +# +# Søren Roug +# +# Oct 2014: Georges Khaznadar +# - ported to Python3 +# - imlemented the missing switch -c / --encoding, with an extra +# feature for POSIX platforms which can guess encoding. + +from odf.opendocument import OpenDocumentSpreadsheet +from odf.style import Style, TextProperties, ParagraphProperties, TableColumnProperties +from odf.text import P +from odf.table import Table, TableColumn, TableRow, TableCell +from optparse import OptionParser +import sys,csv,re, os, codecs + +if sys.version_info[0]==3: unicode=str + +if sys.version_info[0]==2: + class UTF8Recoder: + """ + Iterator that reads an encoded stream and reencodes the input to UTF-8 + """ + def __init__(self, f, encoding): + self.reader = codecs.getreader(encoding)(f) + + def __iter__(self): + return self + + def next(self): + return self.reader.next().encode("utf-8") + + class UnicodeReader: + """ + A CSV reader which will iterate over lines in the CSV file "f", + which is encoded in the given encoding. + """ + + def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): + f = UTF8Recoder(f, encoding) + self.reader = csv.reader(f, dialect=dialect, **kwds) + + def next(self): + row = self.reader.next() + return [unicode(s, "utf-8") for s in row] + + def __iter__(self): + return self + + +def csvToOds( pathFileCSV, pathFileODS, tableName='table', + delimiter=',', quoting=csv.QUOTE_MINIMAL, + quotechar = '"', escapechar = None, + skipinitialspace = False, lineterminator = '\r\n', + encoding="utf-8"): + textdoc = OpenDocumentSpreadsheet() + # Create a style for the table content. One we can modify + # later in the word processor. + tablecontents = Style(name="Table Contents", family="paragraph") + tablecontents.addElement(ParagraphProperties(numberlines="false", linenumber="0")) + tablecontents.addElement(TextProperties(fontweight="bold")) + textdoc.styles.addElement(tablecontents) + + # Start the table + table = Table( name=tableName ) + + if sys.version_info[0]==3: + reader = csv.reader(open(pathFileCSV, encoding=encoding), + delimiter=delimiter, + quoting=quoting, + quotechar=quotechar, + escapechar=escapechar, + skipinitialspace=skipinitialspace, + lineterminator=lineterminator) + else: + reader = UnicodeReader(open(pathFileCSV), + encoding=encoding, + delimiter=delimiter, + quoting=quoting, + quotechar=quotechar, + escapechar=escapechar, + skipinitialspace=skipinitialspace, + lineterminator=lineterminator) + fltExp = re.compile('^\s*[-+]?\d+(\.\d+)?\s*$') + + for row in reader: + tr = TableRow() + table.addElement(tr) + for val in row: + if fltExp.match(val): + tc = TableCell(valuetype="float", value=val.strip()) + else: + tc = TableCell(valuetype="string") + tr.addElement(tc) + p = P(stylename=tablecontents,text=val) + tc.addElement(p) + + textdoc.spreadsheet.addElement(table) + textdoc.save( pathFileODS ) + +if __name__ == "__main__": + usage = "%prog -i file.csv -o file.ods -d" + parser = OptionParser(usage=usage, version="%prog 0.1") + parser.add_option('-i','--input', action='store', + dest='input', help='File input in csv') + parser.add_option('-o','--output', action='store', + dest='output', help='File output in ods') + parser.add_option('-d','--delimiter', action='store', + dest='delimiter', help='specifies a one-character string to use as the field separator. It defaults to ",".') + + parser.add_option('-c','--encoding', action='store', + dest='encoding', help='specifies the encoding the file csv. It defaults to utf-8') + + parser.add_option('-t','--table', action='store', + dest='tableName', help='The table name in the output file') + + parser.add_option('-s','--skipinitialspace', + dest='skipinitialspace', help='''specifies how to interpret whitespace which + immediately follows a delimiter. It defaults to False, which + means that whitespace immediately following a delimiter is part + of the following field.''') + + parser.add_option('-l','--lineterminator', action='store', + dest='lineterminator', help='''specifies the character sequence which should + terminate rows.''') + + parser.add_option('-q','--quoting', action='store', + dest='quoting', help='''It can take on any of the following module constants: + 0 = QUOTE_MINIMAL means only when required, for example, when a field contains either the quotechar or the delimiter + 1 = QUOTE_ALL means that quotes are always placed around fields. + 2 = QUOTE_NONNUMERIC means that quotes are always placed around fields which do not parse as integers or floating point numbers. + 3 = QUOTE_NONE means that quotes are never placed around fields. + It defaults is QUOTE_MINIMAL''') + + parser.add_option('-e','--escapechar', action='store', + dest='escapechar', help='''specifies a one-character string used to escape the delimiter when quoting is set to QUOTE_NONE.''') + + parser.add_option('-r','--quotechar', action='store', + dest='quotechar', help='''specifies a one-character string to use as the quoting character. It defaults to ".''') + + (options, args) = parser.parse_args() + + if options.input: + pathFileCSV = options.input + else: + parser.print_help() + exit( 0 ) + + if options.output: + pathFileODS = options.output + else: + parser.print_help() + exit( 0 ) + + if options.delimiter: + delimiter = options.delimiter + else: + delimiter = "," + + if options.skipinitialspace: + skipinitialspace = True + else: + skipinitialspace=False + + if options.lineterminator: + lineterminator = options.lineterminator + else: + lineterminator ="\r\n" + + if options.escapechar: + escapechar = options.escapechar + else: + escapechar=None + + if options.tableName: + tableName = options.tableName + else: + tableName = "table" + + if options.quotechar: + quotechar = options.quotechar + else: + quotechar = "\"" + + encoding = "utf-8" # default setting + ########################################################### + ## try to guess the encoding; this is implemented only with + ## POSIX platforms. Can it be improved? + output = os.popen('/usr/bin/file ' + pathFileCSV).read() + m=re.match(r'^.*: ([-a-zA-Z0-9]+) text$', output) + if m: + encoding=m.group(1) + if 'ISO-8859' in encoding: + encoding="latin-1" + else: + encoding="utf-8" + ############################################################ + # when the -c or --coding switch is used, it takes precedence + if options.encoding: + encoding = options.encoding + + csvToOds( pathFileCSV=unicode(pathFileCSV), + pathFileODS=unicode(pathFileODS), + delimiter=delimiter, skipinitialspace=skipinitialspace, + escapechar=escapechar, + lineterminator=unicode(lineterminator), + tableName=tableName, quotechar=quotechar, + encoding=encoding) + +# Local Variables: *** +# mode: python *** +# End: *** diff --git a/intelliaide/vendor/bin/idna b/intelliaide/vendor/bin/idna new file mode 100755 index 0000000..24caf23 --- /dev/null +++ b/intelliaide/vendor/bin/idna @@ -0,0 +1,8 @@ +#!/opt/app-root/bin/python3.12 +# -*- coding: utf-8 -*- +import re +import sys +from idna.cli import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/intelliaide/vendor/bin/mailodf b/intelliaide/vendor/bin/mailodf new file mode 100755 index 0000000..94801c7 --- /dev/null +++ b/intelliaide/vendor/bin/mailodf @@ -0,0 +1,95 @@ +#!/opt/app-root/bin/python3.12 +# -*- coding: utf-8 -*- +# Copyright (C) 2006 Søren Roug, European Environment Agency +# +# This is free software. You may redistribute it under the terms +# of the Apache license and the GNU General Public License Version +# 2 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# +# Contributor(s): +# +from odf.odf2xhtml import ODF2XHTML +import zipfile +import sys, os, smtplib, getopt + +from email.mime.multipart import MIMEMultipart +from email.mime.nonmultipart import MIMENonMultipart +from email.mime.text import MIMEText +from email.encoders import encode_base64 + +if sys.version_info[0]==3: unicode=str + +def usage(): + sys.stderr.write("Usage: %s [-f from] [-s subject] inputfile recipients...\n" % sys.argv[0]) + +try: + opts, args = getopt.getopt(sys.argv[1:], "f:s:", ["from=", "subject="]) +except getopt.GetoptError: + usage() + sys.exit(2) + +fromaddr = os.getlogin() + "@" + os.getenv('HOSTNAME','localhost') +subject = None +for o, a in opts: + if o in ("-f", "--from"): + fromaddr = a + if o in ("-s", "--subject"): + subject = a + +if len(args) < 2: + usage() + sys.exit(2) + +suffices = { + 'wmf':('image','x-wmf'), + 'png':('image','png'), + 'gif':('image','gif'), + 'jpg':('image','jpeg'), + 'jpeg':('image','jpeg') + } + +msg = MIMEMultipart('related',type="text/html") +msg['From'] = fromaddr +# msg['Date'] = strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()) +msg['To'] = ','.join(args[1:]) +msg.preamble = 'This is a multi-part message in MIME format.' +msg.epilogue = '' +odhandler = ODF2XHTML() +result = odhandler.odf2xhtml(unicode(args[0])) +if subject: + msg['Subject'] = subject +else: + msg['Subject'] = odhandler.title +htmlpart = MIMEText(result,'html','us-ascii') +htmlpart['Content-Location'] = 'index.html' +msg.attach(htmlpart) +z = zipfile.ZipFile(unicode(args[0])) +for file in z.namelist(): + if file[0:9] == 'Pictures/': + suffix = file[file.rfind(".")+1:] + main,sub = suffices.get(suffix,('application','octet-stream')) + img = MIMENonMultipart(main,sub) + img.set_payload(z.read(file)) + img['Content-Location'] = "" + file + encode_base64(img) + msg.attach(img) +z.close() + +server = smtplib.SMTP('localhost') +#server.set_debuglevel(1) +server.sendmail(fromaddr, args[1:], msg.as_string()) +server.quit() + + +# Local Variables: *** +# mode: python *** +# End: *** diff --git a/intelliaide/vendor/bin/normalizer b/intelliaide/vendor/bin/normalizer new file mode 100755 index 0000000..0fe3ac7 --- /dev/null +++ b/intelliaide/vendor/bin/normalizer @@ -0,0 +1,8 @@ +#!/opt/app-root/bin/python3.12 +# -*- 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/intelliaide/vendor/bin/odf2mht b/intelliaide/vendor/bin/odf2mht new file mode 100755 index 0000000..c09473e --- /dev/null +++ b/intelliaide/vendor/bin/odf2mht @@ -0,0 +1,72 @@ +#!/opt/app-root/bin/python3.12 +# -*- coding: utf-8 -*- +# Copyright (C) 2006 Søren Roug, European Environment Agency +# +# This is free software. You may redistribute it under the terms +# of the Apache license and the GNU General Public License Version +# 2 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# +# Contributor(s): +# +from __future__ import print_function +from odf.odf2xhtml import ODF2XHTML +import zipfile +import sys +#from time import gmtime, strftime + +from email.mime.multipart import MIMEMultipart +from email.mime.nonmultipart import MIMENonMultipart +from email.mime.text import MIMEText +from email import encoders + +if sys.version_info[0]==3: unicode=str + +if len(sys.argv) != 2: + sys.stderr.write("Usage: %s inputfile\n" % sys.argv[0]) + sys.exit(1) + +suffices = { + 'wmf':('image','x-wmf'), + 'png':('image','png'), + 'gif':('image','gif'), + 'jpg':('image','jpeg'), + 'jpeg':('image','jpeg') + } + +msg = MIMEMultipart('related',type="text/html") +# msg['Subject'] = 'Subject here' +# msg['From'] = '' +# msg['Date'] = strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()) +msg.preamble = 'This is a multi-part message in MIME format.' +msg.epilogue = '' +odhandler = ODF2XHTML() +result = odhandler.odf2xhtml(unicode(sys.argv[1])) +htmlpart = MIMEText(result,'html','us-ascii') +htmlpart['Content-Location'] = 'index.html' +msg.attach(htmlpart) +z = zipfile.ZipFile(sys.argv[1]) +for file in z.namelist(): + if file[0:9] == 'Pictures/': + suffix = file[file.rfind(".")+1:] + main,sub = suffices.get(suffix,('application','octet-stream')) + img = MIMENonMultipart(main,sub) + img.set_payload(z.read(file)) + img['Content-Location'] = "" + file + encoders.encode_base64(img) + msg.attach(img) +z.close() +print (msg.as_string()) + + +# Local Variables: *** +# mode: python *** +# End: *** diff --git a/intelliaide/vendor/bin/odf2xhtml b/intelliaide/vendor/bin/odf2xhtml new file mode 100755 index 0000000..74a2aef --- /dev/null +++ b/intelliaide/vendor/bin/odf2xhtml @@ -0,0 +1,59 @@ +#!/opt/app-root/bin/python3.12 +# -*- coding: utf-8 -*- +# Copyright (C) 2007 Søren Roug, European Environment Agency +# +# This is free software. You may redistribute it under the terms +# of the Apache license and the GNU General Public License Version +# 2 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# +# Contributor(s): +# +from odf.odf2xhtml import ODF2XHTML +import sys, getopt + +if sys.version_info[0]==3: unicode=str + +from io import StringIO + +def usage(): + sys.stderr.write("Usage: %s [-p] inputfile\n" % sys.argv[0]) + +try: + opts, args = getopt.getopt(sys.argv[1:], "ep", ["plain","embedable"]) +except getopt.GetoptError: + usage() + sys.exit(2) + +generatecss = True +embedable = False +for o, a in opts: + if o in ("-p", "--plain"): + generatecss = False + if o in ("-e", "--embedable"): + embedable = True + +if len(args) != 1: + usage() + sys.exit(2) + +odhandler = ODF2XHTML(generatecss, embedable) +try: + result = odhandler.odf2xhtml(unicode(args[0])) +except: + sys.stderr.write("Unable to open file %s or file is not OpenDocument\n" % args[0]) + sys.exit(1) +sys.stdout.write(result) + + +# Local Variables: *** +# mode: python *** +# End: *** diff --git a/intelliaide/vendor/bin/odf2xml b/intelliaide/vendor/bin/odf2xml new file mode 100755 index 0000000..6cb576b --- /dev/null +++ b/intelliaide/vendor/bin/odf2xml @@ -0,0 +1,81 @@ +#!/opt/app-root/bin/python3.12 +# -*- coding: utf-8 -*- +# Copyright (C) 2008 Søren Roug, European Environment Agency +# +# This is free software. You may redistribute it under the terms +# of the Apache license and the GNU General Public License Version +# 2 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# +# Contributor(s): +# +# + +# OpenDocument can be a complete office document in a single +# XML document. This script will create such a document. +import sys, getopt, base64 +from odf.opendocument import load +from odf.draw import Image, ObjectOle +from odf.style import BackgroundImage +from odf.text import ListLevelStyleImage +from odf.office import BinaryData + +if sys.version_info[0]==3: unicode=str + +def usage(): + sys.stderr.write("Usage: %s [-e] [-o outputfile] [inputfile]\n" % sys.argv[0]) + + +if __name__ == "__main__": + embedimage = False + try: + opts, args = getopt.getopt(sys.argv[1:], "o:e", ["output="]) + except getopt.GetoptError: + usage() + sys.exit(2) + + outputfile = '-' + + for o, a in opts: + if o in ("-o", "--output"): + outputfile = a + if o == '-e': + embedimage = True + + if len(args) > 1: + usage() + sys.exit(2) + if len(args) == 0: + d = load(sys.stdin) + else: + d = load(unicode(args[0])) + if embedimage: + images = d.getElementsByType(Image) + \ + d.getElementsByType(BackgroundImage) + \ + d.getElementsByType(ObjectOle) + \ + d.getElementsByType(ListLevelStyleImage) + for image in images: + href = image.getAttribute('href') + if href and href[:9] == "Pictures/": + p = d.Pictures[href] + bp = base64.encodestring(p[1]) + image.addElement(BinaryData(text=bp)) + image.removeAttribute('href') + xml = d.xml() + if outputfile == '-': + print (xml) + else: + open(outputfile,"wb").write(xml) + + +# Local Variables: *** +# mode: python *** +# End: *** diff --git a/intelliaide/vendor/bin/odfimgimport b/intelliaide/vendor/bin/odfimgimport new file mode 100755 index 0000000..ae76b6a --- /dev/null +++ b/intelliaide/vendor/bin/odfimgimport @@ -0,0 +1,190 @@ +#!/opt/app-root/bin/python3.12 +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2009 Søren Roug, European Environment Agency +# +# This is free software. You may redistribute it under the terms +# of the Apache license and the GNU General Public License Version +# 2 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# +# Contributor(s): +# +from __future__ import print_function + +import zipfile, sys, getopt, mimetypes +try: + from urllib2 import urlopen, quote, unquote +except ImportError: + from urllib.request import urlopen, quote, unquote +try: + from urlparse import urlunsplit, urlsplit +except ImportError: + from urllib.parse import urlunsplit, urlsplit +from odf.opendocument import load +from odf.draw import Image + +if sys.version_info[0]==3: unicode=str + +#sys.tracebacklimit = 0 + +# Variable to count the number of retrieval failures +failures = 0 + +# Set to one if quiet behaviour is wanted +quiet = 0 + +# If set will write every url to import +verbose = 0 + +# Dictionary with new pictures. Key is original file path +# Item is newfilename +newpictures = {} +doc = None + +def importpicture(href): + """ Add the picture to the ZIP file + Returns the new path name to the file in the zip archive + If it is unable to import, then it returns the original href + Sideeffect: add line to manifest + """ + global doc, newpictures, failures, verbose + + # Check that it is not already in the manifest + if href in doc.Pictures: return href + + image = None + if verbose: print ("Importing", href, file=sys.stderr) + if href[:7] == "http://" or href[:8] == "https://" or href[:6] == "ftp://": + # There is a bug in urlopen: It can't open urls with non-ascii unicode + # characters. Convert to UTF-8 and then use percent encoding + try: + goodhref = href.encode('ascii') + except: + o = list(urlsplit(href)) + o[2] = quote(o[2].encode('utf-8')) + goodhref = urlunsplit(o) + if goodhref in newpictures: + if verbose: print ("already imported", file=sys.stderr) + return newpictures[goodhref] # Already imported + try: + f = urlopen(goodhref.decode("utf-8")) + image = f.read() + headers = f.info() + f.close() + # Get the mimetype from the headerlines + c_t = headers['Content-Type'].split(';')[0].strip() + if c_t: mediatype = c_t.split(';')[0].strip() + if verbose: print ("OK", file=sys.stderr) + except: + failures += 1 + if verbose: print ("failed", file=sys.stderr) + return href + # Remove query string + try: href= href[:href.rindex('?')] + except: pass + try: + lastslash = href[href.rindex('/'):] + ext = lastslash[lastslash.rindex('.'):] + except: ext = mimetypes.guess_extension(mediatype) + # Everything is a simple path. + else: + goodhref = href + if href[:3] == '../': + if directory is None: + goodhref = unquote(href[3:]) + else: + goodhref = unquote(directory + href[2:]) + if goodhref in newpictures: + if verbose: print ("already imported", file=sys.stderr) + return newpictures[goodhref] # Already imported + mediatype, encoding = mimetypes.guess_type(goodhref) + if mediatype is None: + mediatype = '' + try: ext = goodhref[goodhref.rindex('.'):] + except: ext='' + else: + ext = mimetypes.guess_extension(mediatype) + try: + image = file(goodhref).read() + if verbose: print ("OK", file=sys.stderr) + except: + failures += 1 + if verbose: print ("failed", file=sys.stderr) + return href + # If we have a picture to import, the image variable contains it + # and manifestfn, ext and mediatype has a value + if image: + manifestfn = doc.addPictureFromString(image, unicode(mediatype)) + newpictures[goodhref] = manifestfn + return manifestfn + + if verbose: print ("not imported", file=sys.stderr) + return href + +def exitwithusage(exitcode=2): + """ Print out usage information and exit """ + print ("Usage: %s [-q] [-v] [-o output] [inputfile]" % sys.argv[0], file=sys.stderr) + print ("\tInputfile must be OpenDocument format", file=sys.stderr) + sys.exit(exitcode) + +outputfile = None +writefile = True + +try: + opts, args = getopt.getopt(sys.argv[1:], "qvo:") +except getopt.GetoptError: + exitwithusage() + +for o, a in opts: + if o == "-o": + outputfile = a + writefile = True + if o == "-q": + quiet = 1 + if o == "-v": + verbose = 1 + +if len(args) == 0: + try: + doc = load(sys.stdin) + directory = None + except: + print ("Couldn't open OpenDocument file", file=sys.stderr) + exitwithusage() +else: + fn = unicode(args[0]) + if not zipfile.is_zipfile(fn): + exitwithusage() + dirinx = max(fn.rfind('\\'), fn.rfind('/')) + if dirinx >= 0: directory = fn[:dirinx] + else: directory = "." + doc = load(fn) + +for image in doc.getElementsByType(Image): + href = image.getAttribute('href') + newhref = importpicture(href) + image.setAttribute('href',newhref) + +if writefile: + if outputfile is None: + doc.save(fn) + else: + doc.save(unicode(outputfile)) + + +if quiet == 0 and failures > 0: + print ("Couldn't import %d image(s)" % failures, file=sys.stderr) +sys.exit( int(failures > 0) ) + + +# Local Variables: *** +# mode: python *** +# End: *** diff --git a/intelliaide/vendor/bin/odflint b/intelliaide/vendor/bin/odflint new file mode 100755 index 0000000..aa0396b --- /dev/null +++ b/intelliaide/vendor/bin/odflint @@ -0,0 +1,216 @@ +#!/opt/app-root/bin/python3.12 +# -*- coding: utf-8 -*- +# Copyright (C) 2009 Søren Roug, European Environment Agency +# +# This is free software. You may redistribute it under the terms +# of the Apache license and the GNU General Public License Version +# 2 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# +# Contributor(s): +# +import zipfile +from xml.sax import make_parser,handler +from xml.sax.xmlreader import InputSource +import xml.sax.saxutils +import sys +from odf.opendocument import OpenDocument +from odf import element, grammar +from odf.namespaces import * +from odf.attrconverters import attrconverters, cnv_string + +from io import BytesIO + +if sys.version_info[0]==3: unicode=str + +extension_attributes = { + "OpenOffice.org" : { + (METANS,u'template'): ( + (XLINKNS,u'role'), + ), + (STYLENS,u'graphic-properties'): ( + (STYLENS,u'background-transparency'), + ), + (STYLENS,u'paragraph-properties'): ( + (TEXTNS,u'enable-numbering'), + (STYLENS,u'join-border'), + ), + (STYLENS,u'table-cell-properties'): ( + (STYLENS,u'writing-mode'), + ), + (STYLENS,u'table-row-properties'): ( + (STYLENS,u'keep-together'), + ), + }, + "KOffice" : { + (STYLENS,u'graphic-properties'): ( + (KOFFICENS,u'frame-behavior-on-new-page'), + ), + (DRAWNS,u'page'): ( + (KOFFICENS,u'name'), + ), + (PRESENTATIONNS,u'show-shape'): ( + (KOFFICENS,u'order-id'), + ), + (PRESENTATIONNS,u'hide-shape'): ( + (KOFFICENS,u'order-id'), + ), + (CHARTNS,u'legend'): ( + (KOFFICENS,u'title'), + ), + } +} + +printed_errors = [] + +def print_error(str): + if str not in printed_errors: + printed_errors.append(str) + print (str) + +def chop_arg(arg): + if len(arg) > 20: + return "%s..." % arg[0:20] + return arg + +def make_qname(tag): + return "%s:%s" % (nsdict.get(tag[0],tag[0]), tag[1]) + +def allowed_attributes(tag): + return grammar.allowed_attributes.get(tag) + + +class ODFElementHandler(handler.ContentHandler): + """ Extract headings from content.xml of an ODT file """ + def __init__(self, document): + self.doc = document + self.tagstack = [] + self.data = [] + self.currtag = None + + def characters(self, data): + self.data.append(data) + + def startElementNS(self, tag, qname, attrs): + """ Pseudo-create an element + """ + allowed_attrs = grammar.allowed_attributes.get(tag) + attrdict = {} + for (att,value) in attrs.items(): + prefix = nsdict.get(att[0],att[0]) + # Check if it is a known extension + notan_extension = True + for product, ext_attrs in extension_attributes.items(): + allowed_ext_attrs = ext_attrs.get(tag) + if allowed_ext_attrs and att in allowed_ext_attrs: + print_error("Warning: Attribute %s in element <%s> is illegal - %s extension" % ( make_qname(att), make_qname(tag), product)) + notan_extension = False + # Check if it is an allowed attribute + if notan_extension and allowed_attrs and att not in allowed_attrs: + print_error("Error: Attribute %s:%s is not allowed in element <%s>" % ( prefix, att[1], make_qname(tag))) + # Check the value + try: + convert = attrconverters.get(att, cnv_string) + convert(att, value, tag) + except ValueError as res: + print_error("Error: Bad value '%s' for attribute %s:%s in tag: <%s> - %s" % + (chop_arg(value), prefix, att[1], make_qname(tag), res)) + + self.tagstack.append(tag) + self.data = [] + # Check that the parent allows this child element + if tag not in ( (OFFICENS, 'document'), (OFFICENS, 'document-content'), (OFFICENS, 'document-styles'), + (OFFICENS, 'document-meta'), (OFFICENS, 'document-settings'), + (MANIFESTNS,'manifest')): + try: + parent = self.tagstack[-2] + allowed_children = grammar.allowed_children.get(parent) + except: + print_error("Error: This document starts with the wrong tag: <%s>" % make_qname(tag)) + allowed_children = None + if allowed_children and tag not in allowed_children: + print_error("Error: Element %s is not allowed in element %s" % ( make_qname(tag), make_qname(parent))) + # Test that all mandatory attributes have been added. + required = grammar.required_attributes.get(tag) + if required: + for r in required: + if attrs.get(r) is None: + print_error("Error: Required attribute missing: %s in <%s>" % (make_qname(r), make_qname(tag))) + + + def endElementNS(self, tag, qname): + self.currtag = self.tagstack.pop() + str = ''.join(self.data).strip() + # Check that only elements that can take text have text + # But only elements we know exist in grammar + if tag in grammar.allowed_children: + if str != '' and tag not in grammar.allows_text: + print_error("Error: %s does not allow text data" % make_qname(tag)) + self.data = [] + +class ODFDTDHandler(handler.DTDHandler): + def notationDecl(self, name, public_id, system_id): + """ Ignore DTDs """ + print_error("Warning: ODF doesn't use DOCTYPEs") + +def exitwithusage(exitcode=2): + """ print out usage information """ + sys.stderr.write("Usage: %s inputfile\n" % sys.argv[0]) + sys.stderr.write("\tInputfile must be OpenDocument format\n") + sys.exit(exitcode) + +def lint(odffile): + if not zipfile.is_zipfile(odffile): + print_error("Error: This is not a zipped file") + return + zfd = zipfile.ZipFile(odffile) + try: + mimetype = zfd.read('mimetype') + except: + mimetype='' + d = OpenDocument(unicode(mimetype)) + first = True + for zi in zfd.infolist(): + if first: + if zi.filename == 'mimetype': + if zi.compress_type != zipfile.ZIP_STORED: + print_error("Error: The 'mimetype' member must be stored - not deflated") + if zi.comment != "": + print_error("Error: The 'mimetype' member must not have extra header info") + else: + print_error("Warning: The first member in the archive should be the mimetype") + first = False + if zi.filename in ('META-INF/manifest.xml', 'content.xml', 'meta.xml', 'styles.xml', 'settings.xml'): + content = zfd.read(zi.filename) + parser = make_parser() + parser.setFeature(handler.feature_namespaces, True) + parser.setFeature(handler.feature_external_ges, False) + parser.setContentHandler(ODFElementHandler(d)) + dtdh = ODFDTDHandler() + parser.setDTDHandler(dtdh) + parser.setErrorHandler(handler.ErrorHandler()) + + inpsrc = InputSource() + if not isinstance(content, str): + content=content + inpsrc.setByteStream(BytesIO(content)) + parser.parse(inpsrc) + + +if len(sys.argv) != 2: + exitwithusage() +lint(unicode(sys.argv[1])) + + + +# Local Variables: *** +# mode: python *** +# End: *** diff --git a/intelliaide/vendor/bin/odfmeta b/intelliaide/vendor/bin/odfmeta new file mode 100755 index 0000000..b23a6d8 --- /dev/null +++ b/intelliaide/vendor/bin/odfmeta @@ -0,0 +1,266 @@ +#!/opt/app-root/bin/python3.12 +# -*- coding: utf-8 -*- +# Copyright (C) 2006-2009 Søren Roug, European Environment Agency +# +# This is free software. You may redistribute it under the terms +# of the Apache license and the GNU General Public License Version +# 2 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# +# Contributor(s): +# +import zipfile, time, sys, getopt, re +import xml.sax, xml.sax.saxutils +from odf.namespaces import TOOLSVERSION, OFFICENS, XLINKNS, DCNS, METANS +from io import BytesIO + +OUTENCODING="utf-8" + +whitespace = re.compile(r'\s+') + +fields = { +'title': (DCNS,u'title'), +'description': (DCNS,u'description'), +'subject': (DCNS,u'subject'), +'creator': (DCNS,u'creator'), +'date': (DCNS,u'date'), +'language': (DCNS,u'language'), +'generator': (METANS,u'generator'), +'initial-creator': (METANS,u'initial-creator'), +'keyword': (METANS,u'keyword'), +'editing-duration': (METANS,u'editing-duration'), +'editing-cycles': (METANS,u'editing-cycles'), +'printed-by': (METANS,u'printed-by'), +'print-date': (METANS,u'print-date'), +'creation-date': (METANS,u'creation-date'), +'user-defined': (METANS,u'user-defined'), +#'template': (METANS,u'template'), +} + +xfields = [] +Xfields = [] +addfields = {} +deletefields = {} +yieldfields = {} +showversion = None + +def exitwithusage(exitcode=2): + """ print out usage information """ + sys.stderr.write("Usage: %s [-cdlvV] [-xXaAI metafield]... [-o output] [inputfile]\n" % sys.argv[0]) + sys.stderr.write("\tInputfile must be OpenDocument format\n") + sys.exit(exitcode) + +def normalize(str): + """ + The normalize-space function returns the argument string with whitespace + normalized by stripping leading and trailing whitespace and replacing + sequences of whitespace characters by a single space. + """ + return whitespace.sub(' ', str).strip() + +class MetaCollector: + """ + The MetaCollector is a pseudo file object, that can temporarily ignore write-calls + It could probably be replaced with a StringIO object. + """ + def __init__(self): + self._content = [] + self.dowrite = True + + def write(self, str): + if self.dowrite: + self._content.append(str) + + def content(self): + return ''.join(self._content) + + +base = xml.sax.saxutils.XMLGenerator + +class odfmetaparser(base): + """ Parse a meta.xml file with an event-driven parser and replace elements. + It would probably be a cleaner approach to use a DOM based parser and + then manipulate in memory. + Small issue: Reorders elements + """ + version = 'Unknown' + + def __init__(self): + self._mimetype = '' + self.output = MetaCollector() + self._data = [] + self.seenfields = {} + base.__init__(self, self.output, OUTENCODING) + + def startElementNS(self, name, qname, attrs): + self._data = [] + field = name +# I can't modify the template until the tool replaces elements at the same +# location and not at the end +# if name == (METANS,u'template'): +# self._data = [attrs.get((XLINKNS,u'title'),'')] + if showversion and name == (OFFICENS,u'document-meta'): + if showversion == '-V': + print ("version:%s" % attrs.get((OFFICENS,u'version'),'Unknown').decode('utf-8')) + else: + print ("%s" % attrs.get((OFFICENS,u'version'),'Unknown').decode('utf-8')) + if name == (METANS,u'user-defined'): + field = attrs.get((METANS,u'name')) + if field in deletefields: + self.output.dowrite = False + elif field in yieldfields: + del addfields[field] + base.startElementNS(self, name, qname, attrs) + else: + base.startElementNS(self, name, qname, attrs) + self._tag = field + + def endElementNS(self, name, qname): + field = name + if name == (METANS,u'user-defined'): + field = self._tag + if name == (OFFICENS,u'meta'): + for k,v in addfields.items(): + if len(v) > 0: + if type(k) == type(''): + base.startElementNS(self,(METANS,u'user-defined'),None,{(METANS,u'name'):k}) + base.characters(self, v) + base.endElementNS(self, (METANS,u'user-defined'),None) + else: + base.startElementNS(self, k, None, {}) + base.characters(self, v) + base.endElementNS(self, k, None) + if name in xfields: + print ("%s" % self.data()) + if name in Xfields: + if isinstance(self._tag, tuple): + texttag = self._tag[1] + else: + texttag = self._tag + print ("%s:%s" % (texttag, self.data())) + if field in deletefields: + self.output.dowrite = True + else: + base.endElementNS(self, name, qname) + + def characters(self, content): + base.characters(self, content) + self._data.append(content) + + def meta(self): + return self.output.content() + + def data(self): + if usenormalize: + return normalize(''.join(self._data)) + else: + return ''.join(self._data) + +now = time.localtime()[:6] +outputfile = "-" +writemeta = False # Do we change any meta data? +usenormalize = False + +try: + opts, args = getopt.getopt(sys.argv[1:], "cdlvVI:A:a:o:x:X:") +except getopt.GetoptError: + exitwithusage() + +if len(opts) == 0: + opts = [ ('-l','') ] + +for o, a in opts: + if o in ('-a','-A','-I'): + writemeta = True + if a.find(":") >= 0: + k,v = a.split(":",1) + else: + k,v = (a, "") + if len(k) == 0: + exitwithusage() + k = fields.get(k,k) + addfields[k] = unicode(v,'utf-8') + if o == '-a': + yieldfields[k] = True + if o == '-I': + deletefields[k] = True + if o == '-d': + writemeta = True + addfields[(DCNS,u'date')] = "%04d-%02d-%02dT%02d:%02d:%02d" % now + deletefields[(DCNS,u'date')] = True + if o == '-c': + usenormalize = True + if o in ('-v', '-V'): + showversion = o + if o == '-l': + Xfields = fields.values() + if o == "-x": + xfields.append(fields.get(a,a)) + if o == "-X": + Xfields.append(fields.get(a,a)) + if o == "-o": + outputfile = a + +# The specification says we should change the element to our own, +# and must not export the original identifier. +if writemeta: + addfields[(METANS,u'generator')] = TOOLSVERSION + deletefields[(METANS,u'generator')] = True + +odfs = odfmetaparser() +parser = xml.sax.make_parser() +parser.setFeature(xml.sax.handler.feature_namespaces, 1) +parser.setContentHandler(odfs) + +if len(args) == 0: + zin = zipfile.ZipFile(sys.stdin,'r') +else: + if not zipfile.is_zipfile(args[0]): + exitwithusage() + zin = zipfile.ZipFile(args[0], 'r') + +try: + content = zin.read('meta.xml').decode('utf-8') +except: + sys.stderr.write("File has no meta data\n") + sys.exit(1) +parser.parse(BytesIO(content.encode('utf-8'))) + +if writemeta: + if outputfile == '-': + if sys.stdout.isatty(): + sys.stderr.write("Won't write ODF file to terminal\n") + sys.exit(1) + zout = zipfile.ZipFile(sys.stdout,"w") + else: + zout = zipfile.ZipFile(outputfile,"w") + + + + # Loop through the input zipfile and copy the content to the output until we + # get to the meta.xml. Then substitute. + for zinfo in zin.infolist(): + if zinfo.filename == "meta.xml": + # Write meta + zi = zipfile.ZipInfo("meta.xml", now) + zi.compress_type = zipfile.ZIP_DEFLATED + zout.writestr(zi,odfs.meta() ) + else: + payload = zin.read(zinfo.filename) + zout.writestr(zinfo, payload) + + zout.close() +zin.close() + + +# Local Variables: *** +# mode: python *** +# End: *** diff --git a/intelliaide/vendor/bin/odfoutline b/intelliaide/vendor/bin/odfoutline new file mode 100755 index 0000000..0c4ddc5 --- /dev/null +++ b/intelliaide/vendor/bin/odfoutline @@ -0,0 +1,144 @@ +#!/opt/app-root/bin/python3.12 +# -*- coding: utf-8 -*- +# Copyright (C) 2006 Søren Roug, European Environment Agency +# +# This is free software. You may redistribute it under the terms +# of the Apache license and the GNU General Public License Version +# 2 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# +# Contributor(s): +# +from __future__ import print_function +import zipfile +from xml.sax import make_parser,handler +from xml.sax.xmlreader import InputSource +import xml.sax.saxutils +import sys +from odf.namespaces import TEXTNS, TABLENS, DRAWNS + +try: + from cStringIO import StringIO +except ImportError: + from io import StringIO + + +def getxmlpart(odffile, xmlfile): + """ Get the content out of the ODT file""" + z = zipfile.ZipFile(odffile) + content = z.read(xmlfile) + z.close() + return content + + + +# +# Extract headings from content.xml +# +class ODTHeadingHandler(handler.ContentHandler): + """ Extract headings from content.xml of an ODT file """ + def __init__(self, eater): + self.r = eater + self.data = [] + self.level = 0 + + def characters(self, data): + self.data.append(data) + + def startElementNS(self, tag, qname, attrs): + if tag == (TEXTNS, 'h'): + self.level = 0 + for (att,value) in attrs.items(): + if att == (TEXTNS, 'outline-level'): + self.level = int(value) + self.data = [] + + def endElementNS(self, tag, qname): + if tag == (TEXTNS, 'h'): + str = ''.join(self.data) + self.data = [] + self.r.append("%d%*s%s" % (self.level, self.level, '', str)) + +class ODTSheetHandler(handler.ContentHandler): + """ Extract sheet names from content.xml of an ODS file """ + def __init__(self, eater): + self.r = eater + + def startElementNS(self, tag, qname, attrs): + if tag == (TABLENS, 'table'): + sheetname = attrs.get((TABLENS, 'name')) + if sheetname: + self.r.append(sheetname) + +class ODTSlideHandler(handler.ContentHandler): + """ Extract headings from content.xml of an ODT file """ + def __init__(self, eater): + self.r = eater + self.data = [] + self.pagenum = 0 + + def characters(self, data): + self.data.append(data) + + def startElementNS(self, tag, qname, attrs): + if tag == (DRAWNS, 'page'): + self.pagenum = self.pagenum + 1 + self.r.append("SLIDE %d: %s" % ( self.pagenum, attrs.get((DRAWNS, 'name'),''))) + if tag == (TEXTNS, 'p'): + self.data = [] + + def endElementNS(self, tag, qname): + if tag == (TEXTNS, 'p'): + str = ''.join(self.data) + self.data = [] + if len(str) > 0: + self.r.append(" " + str) + +def odtheadings(odtfile): + mimetype = getxmlpart(odtfile,'mimetype') + content = getxmlpart(odtfile,'content.xml') + lines = [] + parser = make_parser() + parser.setFeature(handler.feature_namespaces, 1) + if not isinstance(mimetype, str): + mimetype=mimetype.decode("utf-8") + if mimetype in ('application/vnd.oasis.opendocument.text', + 'application/vnd.oasis.opendocument.text-template'): + parser.setContentHandler(ODTHeadingHandler(lines)) + elif mimetype in ('application/vnd.oasis.opendocument.spreadsheet', + 'application/vnd.oasis.opendocument.spreadsheet-template'): + parser.setContentHandler(ODTSheetHandler(lines)) + elif mimetype in ('application/vnd.oasis.opendocument.presentation' + 'application/vnd.oasis.opendocument.presentation-template'): + parser.setContentHandler(ODTSlideHandler(lines)) + else: + print ("Unsupported fileformat") + sys.exit(2) + parser.setErrorHandler(handler.ErrorHandler()) + + inpsrc = InputSource() + if not isinstance(content, str): + content=content.decode("utf-8") + inpsrc.setByteStream(StringIO(content)) + parser.parse(inpsrc) + return lines + + +if __name__ == "__main__": + filler = " " + for heading in odtheadings(sys.argv[1]): + print (heading) + + + +# Local Variables: *** +# mode: python *** +# End: *** diff --git a/intelliaide/vendor/bin/odfuserfield b/intelliaide/vendor/bin/odfuserfield new file mode 100755 index 0000000..d97c5ea --- /dev/null +++ b/intelliaide/vendor/bin/odfuserfield @@ -0,0 +1,101 @@ +#!/opt/app-root/bin/python3.12 +# -*- coding: utf-8 -*- +# Copyright (C) 2006-2007 Søren Roug, European Environment Agency +# +# This is free software. You may redistribute it under the terms +# of the Apache license and the GNU General Public License Version +# 2 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# +# Contributor(s): Michael Howitz, gocept gmbh & co. kg + +import sys +import getopt + +import odf.userfield + +if sys.version_info[0]==3: unicode=str + +listfields = False +Listfields = False +xfields = [] +Xfields = [] +setfields = {} +outputfile = None +inputfile = None + + +def exitwithusage(exitcode=2): + """ print out usage information """ + sys.stderr.write("Usage: %s [-lL] [-xX metafield] [-s metafield:value]... " + "[-o output] [inputfile]\n" % sys.argv[0]) + sys.stderr.write("\tInputfile must be OpenDocument format\n") + sys.exit(exitcode) + + +try: + opts, args = getopt.getopt(sys.argv[1:], "lLs:o:x:X:") +except getopt.GetoptError: + exitwithusage() + +if len(opts) == 0: + exitwithusage() + +for o, a in opts: + if o == '-s': + if a.find(":") >= 0: + k,v = a.split(":",1) + else: + k,v = (a, "") + if len(k) == 0: + exitwithusage() + setfields[unicode(k)] = unicode(v) + if o == '-l': + listfields = True + Listfields = False + if o == '-L': + Listfields = True + listfields = False + if o == "-x": + xfields.append(unicode(a)) + if o == "-X": + Xfields.append(unicode(a)) + if o == "-o": + outputfile = unicode(a) + +if len(args) != 0: + inputfile = unicode(args[0]) + +user_fields = odf.userfield.UserFields(inputfile, outputfile) + +if xfields: + for value in user_fields.list_values(xfields): + print (value) + +if Listfields or Xfields: + if Listfields: + Xfields = None + for field_name, value_type, value in user_fields.list_fields_and_values( + Xfields): + print ("%s#%s:%s" % (field_name, value_type, value)) + +if listfields: + for value in user_fields.list_fields(): + print (value) + +if setfields: + user_fields.update(setfields) + + + +# Local Variables: *** +# mode: python *** +# End: *** diff --git a/intelliaide/vendor/bin/xml2odf b/intelliaide/vendor/bin/xml2odf new file mode 100755 index 0000000..fcc8770 --- /dev/null +++ b/intelliaide/vendor/bin/xml2odf @@ -0,0 +1,241 @@ +#!/opt/app-root/bin/python3.12 +# -*- coding: utf-8 -*- +# Copyright (C) 2006 Søren Roug, European Environment Agency +# +# This is free software. You may redistribute it under the terms +# of the Apache license and the GNU General Public License Version +# 2 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# +# Contributor(s): +# +# + +# OpenDocument can be a complete office document in a single +# XML document. This script will take such a document and create +# a package +import io +import zipfile,time, sys, getopt +import xml.sax, xml.sax.saxutils +from odf import manifest + +class SplitWriter: + def __init__(self): + self.activefiles = [] + self._content = [] + self._meta = [] + self._styles = [] + self._settings = [] + + self.files = {'content': self._content, 'meta': self._meta, + 'styles':self._styles, 'settings': self._settings } + + def write(self, str): + for f in self.activefiles: + f.append(str) + + def activate(self, filename): + file = self.files[filename] + if file not in self.activefiles: + self.activefiles.append(file) + + def deactivate(self, filename): + file = self.files[filename] + if file in self.activefiles: + self.activefiles.remove(file) + +odmimetypes = { + 'application/vnd.oasis.opendocument.text': '.odt', + 'application/vnd.oasis.opendocument.text-template': '.ott', + 'application/vnd.oasis.opendocument.graphics': '.odg', + 'application/vnd.oasis.opendocument.graphics-template': '.otg', + 'application/vnd.oasis.opendocument.presentation': '.odp', + 'application/vnd.oasis.opendocument.presentation-template': '.otp', + 'application/vnd.oasis.opendocument.spreadsheet': '.ods', + 'application/vnd.oasis.opendocument.spreadsheet-template': '.ots', + 'application/vnd.oasis.opendocument.chart': '.odc', + 'application/vnd.oasis.opendocument.chart-template': '.otc', + 'application/vnd.oasis.opendocument.image': '.odi', + 'application/vnd.oasis.opendocument.image-template': '.oti', + 'application/vnd.oasis.opendocument.formula': '.odf', + 'application/vnd.oasis.opendocument.formula-template': '.otf', + 'application/vnd.oasis.opendocument.text-master': '.odm', + 'application/vnd.oasis.opendocument.text-web': '.oth', +} + +OFFICENS = u"urn:oasis:names:tc:opendocument:xmlns:office:1.0" +base = xml.sax.saxutils.XMLGenerator + +class odfsplitter(base): + + def __init__(self): + self._mimetype = '' + self.output = SplitWriter() + self._prefixes = [] + base.__init__(self, self.output, 'utf-8') + + def startPrefixMapping(self, prefix, uri): + base.startPrefixMapping(self, prefix, uri) + self._prefixes.append('xmlns:%s="%s"' % (prefix, uri)) + + def startElementNS(self, name, qname, attrs): + if name == (OFFICENS, u"document"): + self._mimetype = attrs.get((OFFICENS, "mimetype")) + elif name == (OFFICENS, u"meta"): + self.output.activate('meta') + + elif name == (OFFICENS, u"settings"): + self.output.activate('settings') + elif name == (OFFICENS, u"scripts"): + self.output.activate('content') + elif name == (OFFICENS, u"font-face-decls"): + self.output.activate('content') + self.output.activate('styles') + elif name == (OFFICENS, u"styles"): + self.output.activate('styles') + elif name == (OFFICENS, u"automatic-styles"): + self.output.activate('content') + self.output.activate('styles') + elif name == (OFFICENS, u"master-styles"): + self.output.activate('styles') + elif name == (OFFICENS, u"body"): + self.output.activate('content') + base.startElementNS(self, name, qname, attrs) + + def endElementNS(self, name, qname): + base.endElementNS(self, name, qname) + if name == (OFFICENS, u"meta"): + self.output.deactivate('meta') + elif name == (OFFICENS, u"settings"): + self.output.deactivate('settings') + elif name == (OFFICENS, u"scripts"): + self.output.deactivate('content') + elif name == (OFFICENS, u"font-face-decls"): + self.output.deactivate('content') + self.output.deactivate('styles') + elif name == (OFFICENS, u"styles"): + self.output.deactivate('styles') + elif name == (OFFICENS, u"automatic-styles"): + self.output.deactivate('content') + self.output.deactivate('styles') + elif name == (OFFICENS, u"master-styles"): + self.output.deactivate('styles') + elif name == (OFFICENS, u"body"): + self.output.deactivate('content') + + + def content(self): + """ Return the content inside a wrapper called + """ + prefixes = ' '.join(self._prefixes) + return ''.join(['\n' % prefixes] + list(map(lambda x: x.decode("utf-8"), self.output._content)) + ['']) + + def settings(self): + prefixes = ' '.join(self._prefixes).encode('utf-8') + return ''.join( ['\n' % prefixes] + self.output._settings + ['''''']) + + def styles(self): + prefixes = ' '.join(self._prefixes) + return ''.join( ['\n' % prefixes] + list(map(lambda x: x.decode("utf-8"), self.output._styles)) + ['''''']) + + def meta(self): + prefixes = ' '.join(self._prefixes) + return ''.join( ['\n' % prefixes] + list(map(lambda x: x.decode("utf-8"), self.output._meta)) + ['''''']) + +def usage(): + sys.stderr.write("Usage: %s [-o outputfile] [-s] inputfile\n" % sys.argv[0]) + +def manifestxml(m): + """ Generates the content of the manifest.xml file """ + xml=io.StringIO() + xml.write(u"\n") + m.toXml(0,xml) + return xml.getvalue() + +try: + opts, args = getopt.getopt(sys.argv[1:], "o:s", ["output=","suffix"]) +except getopt.GetoptError: + usage() + sys.exit(2) + +outputfile = '-' +addsuffix = False + +for o, a in opts: + if o in ("-o", "--output"): + outputfile = a + if o in ("-s", "--suffix"): + addsuffix = True + +if len(args) > 1: + usage() + sys.exit(2) + +odfs = odfsplitter() +parser = xml.sax.make_parser() +parser.setFeature(xml.sax.handler.feature_namespaces, 1) +parser.setContentHandler(odfs) +if len(args) == 0: + parser.parse(sys.stdin) +else: + parser.parse(open(args[0],"r")) + +mimetype = odfs._mimetype +suffix = odmimetypes.get(mimetype,'.xxx') + +if outputfile == '-': + if sys.stdout.isatty(): + sys.stderr.write("Won't write ODF file to terminal\n") + sys.exit(1) + z = zipfile.ZipFile(sys.stdout,"w") +else: + if addsuffix: + outputfile = outputfile + suffix + z = zipfile.ZipFile(outputfile,"w") + +now = time.localtime()[:6] + +# Write mimetype +zi = zipfile.ZipInfo('mimetype', now) +zi.compress_type = zipfile.ZIP_STORED +z.writestr(zi,mimetype) + +# Write content +zi = zipfile.ZipInfo("content.xml", now) +zi.compress_type = zipfile.ZIP_DEFLATED +z.writestr(zi,odfs.content() ) +# Write styles +zi = zipfile.ZipInfo("styles.xml", now) +zi.compress_type = zipfile.ZIP_DEFLATED +z.writestr(zi,odfs.styles() ) + +# Write meta +zi = zipfile.ZipInfo("meta.xml", now) +zi.compress_type = zipfile.ZIP_DEFLATED +z.writestr(zi,odfs.meta() ) + +m = manifest.Manifest() +m.addElement(manifest.FileEntry(fullpath="/", mediatype=mimetype)) +m.addElement(manifest.FileEntry(fullpath="content.xml",mediatype="text/xml")) +m.addElement(manifest.FileEntry(fullpath="styles.xml", mediatype="text/xml")) +m.addElement(manifest.FileEntry(fullpath="meta.xml", mediatype="text/xml")) + +# Write manifest +zi = zipfile.ZipInfo("META-INF/manifest.xml", now) +zi.compress_type = zipfile.ZIP_DEFLATED +z.writestr(zi, manifestxml(m).encode("utf-8") ) +z.close() + + + +# Local Variables: *** +# mode: python *** +# End: *** diff --git a/intelliaide/vendor/cachetools-4.2.1.dist-info/INSTALLER b/intelliaide/vendor/cachetools-4.2.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/intelliaide/vendor/cachetools-4.2.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/intelliaide/vendor/cachetools-4.2.1.dist-info/LICENSE b/intelliaide/vendor/cachetools-4.2.1.dist-info/LICENSE new file mode 100644 index 0000000..0dc1864 --- /dev/null +++ b/intelliaide/vendor/cachetools-4.2.1.dist-info/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2014-2020 Thomas Kemmer + +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/intelliaide/vendor/cachetools-4.2.1.dist-info/METADATA b/intelliaide/vendor/cachetools-4.2.1.dist-info/METADATA new file mode 100644 index 0000000..2bf1110 --- /dev/null +++ b/intelliaide/vendor/cachetools-4.2.1.dist-info/METADATA @@ -0,0 +1,129 @@ +Metadata-Version: 2.1 +Name: cachetools +Version: 4.2.1 +Summary: Extensible memoizing collections and decorators +Home-page: https://github.com/tkem/cachetools/ +Author: Thomas Kemmer +Author-email: tkemmer@computer.org +License: MIT +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Other Environment +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.5 +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: Topic :: Software Development :: Libraries :: Python Modules +Requires-Python: ~=3.5 + +cachetools +======================================================================== + +.. image:: http://img.shields.io/pypi/v/cachetools + :target: https://pypi.org/project/cachetools/ + :alt: Latest PyPI version + +.. image:: https://img.shields.io/readthedocs/cachetools + :target: http://cachetools.readthedocs.io/ + :alt: Documentation build status + +.. image:: http://img.shields.io/travis/tkem/cachetools + :target: https://travis-ci.org/tkem/cachetools/ + :alt: Travis CI build status + +.. image:: http://img.shields.io/coveralls/tkem/cachetools + :target: https://coveralls.io/r/tkem/cachetools + :alt: Test coverage + +.. image:: https://img.shields.io/librariesio/sourcerank/pypi/cachetools + :target: https://libraries.io/pypi/cachetools + :alt: Libraries.io SourceRank + +.. image:: https://img.shields.io/github/license/tkem/cachetools + :target: http://raw.github.com/tkem/cachetools/master/LICENSE + :alt: License + +This module provides various memoizing collections and decorators, +including variants of the Python Standard Library's `@lru_cache`_ +function decorator. + +.. code-block:: python + + from cachetools import cached, LRUCache, TTLCache + + # speed up calculating Fibonacci numbers with dynamic programming + @cached(cache={}) + def fib(n): + return n if n < 2 else fib(n - 1) + fib(n - 2) + + # cache least recently used Python Enhancement Proposals + @cached(cache=LRUCache(maxsize=32)) + def get_pep(num): + url = 'http://www.python.org/dev/peps/pep-%04d/' % num + with urllib.request.urlopen(url) as s: + return s.read() + + # cache weather data for no longer than ten minutes + @cached(cache=TTLCache(maxsize=1024, ttl=600)) + def get_weather(place): + return owm.weather_at_place(place).get_weather() + +For the purpose of this module, a *cache* is a mutable_ mapping_ of a +fixed maximum size. When the cache is full, i.e. by adding another +item the cache would exceed its maximum size, the cache must choose +which item(s) to discard based on a suitable `cache algorithm`_. In +general, a cache's size is the total size of its items, and an item's +size is a property or function of its value, e.g. the result of +``sys.getsizeof(value)``. For the trivial but common case that each +item counts as ``1``, a cache's size is equal to the number of its +items, or ``len(cache)``. + +Multiple cache classes based on different caching algorithms are +implemented, and decorators for easily memoizing function and method +calls are provided, too. + + +Installation +------------------------------------------------------------------------ + +cachetools is available from PyPI_ and can be installed by running:: + + pip install cachetools + + +Project Resources +------------------------------------------------------------------------ + +- `Documentation`_ +- `Issue tracker`_ +- `Source code`_ +- `Change log`_ + + +License +------------------------------------------------------------------------ + +Copyright (c) 2014-2021 Thomas Kemmer. + +Licensed under the `MIT License`_. + + +.. _@lru_cache: http://docs.python.org/3/library/functools.html#functools.lru_cache +.. _mutable: http://docs.python.org/dev/glossary.html#term-mutable +.. _mapping: http://docs.python.org/dev/glossary.html#term-mapping +.. _cache algorithm: http://en.wikipedia.org/wiki/Cache_algorithms + +.. _PyPI: https://pypi.org/project/cachetools/ +.. _Documentation: https://cachetools.readthedocs.io/ +.. _Issue tracker: https://github.com/tkem/cachetools/issues/ +.. _Source code: https://github.com/tkem/cachetools/ +.. _Change log: https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst +.. _MIT License: http://raw.github.com/tkem/cachetools/master/LICENSE + + diff --git a/intelliaide/vendor/cachetools-4.2.1.dist-info/RECORD b/intelliaide/vendor/cachetools-4.2.1.dist-info/RECORD new file mode 100644 index 0000000..6503374 --- /dev/null +++ b/intelliaide/vendor/cachetools-4.2.1.dist-info/RECORD @@ -0,0 +1,28 @@ +cachetools-4.2.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +cachetools-4.2.1.dist-info/LICENSE,sha256=WjqbFSk9D0xU0ftRzw9RpxHwz1gvgKDnMwR4ZwwX9ns,1085 +cachetools-4.2.1.dist-info/METADATA,sha256=aL0ZENHXJKzi45nqyW-LcoOfSy_aHLQQ0OslNa0tlM0,4589 +cachetools-4.2.1.dist-info/RECORD,, +cachetools-4.2.1.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92 +cachetools-4.2.1.dist-info/top_level.txt,sha256=ai2FH78TGwoBcCgVfoqbzk5IQCtnDukdSs4zKuVPvDs,11 +cachetools/__init__.py,sha256=LYI0-c9iPqsMCJqnGiR1lo19xfIHy_P-m0y8esT8FM0,462 +cachetools/__pycache__/__init__.cpython-312.pyc,, +cachetools/__pycache__/cache.cpython-312.pyc,, +cachetools/__pycache__/decorators.cpython-312.pyc,, +cachetools/__pycache__/fifo.cpython-312.pyc,, +cachetools/__pycache__/func.cpython-312.pyc,, +cachetools/__pycache__/keys.cpython-312.pyc,, +cachetools/__pycache__/lfu.cpython-312.pyc,, +cachetools/__pycache__/lru.cpython-312.pyc,, +cachetools/__pycache__/mru.cpython-312.pyc,, +cachetools/__pycache__/rr.cpython-312.pyc,, +cachetools/__pycache__/ttl.cpython-312.pyc,, +cachetools/cache.py,sha256=xu3QB-lPJxzL2Ub5uvCSaDbfwWh4Q13qQ29yTnDLhh8,2894 +cachetools/decorators.py,sha256=5QXP11CRMdN6Hg8fwizWJR8gGUICXxzvDzPWRW9TCRk,2969 +cachetools/fifo.py,sha256=fepNDnzche6g7ZT599xPNRrZ5gM_Jte_U7iBHYO975s,946 +cachetools/func.py,sha256=n__zdaSj_KeXrFfLqkGMsQD-TNSbfoazanli6Yq5NAQ,4975 +cachetools/keys.py,sha256=bKwFwU15s-vKWM1lnNdcJWfyQxu7uqIcRRJNg9hUfFg,1466 +cachetools/lfu.py,sha256=UGcnNIK6so7tw1NvlCo1dLHo5YE60K40S-D9g6HOO98,1101 +cachetools/lru.py,sha256=sAxF0E8I0muYEcNHlRsDaWZ0FABk9m_v1-auHGnRV3E,1224 +cachetools/mru.py,sha256=6jZrJ1eJqxqLoqSET11KrOV9WOUSOtTEiaTCKxobLSQ,1244 +cachetools/rr.py,sha256=QEhTqOD0SqyD4oXkkU2tpQ9UWH_mmp500H4qyOck2vA,948 +cachetools/ttl.py,sha256=GAktYcF273bj0M8LCXaVxpBRuA9ga5Sn0fn6awM17gc,5800 diff --git a/intelliaide/vendor/cachetools-4.2.1.dist-info/WHEEL b/intelliaide/vendor/cachetools-4.2.1.dist-info/WHEEL new file mode 100644 index 0000000..b552003 --- /dev/null +++ b/intelliaide/vendor/cachetools-4.2.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.34.2) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/intelliaide/vendor/cachetools-4.2.1.dist-info/top_level.txt b/intelliaide/vendor/cachetools-4.2.1.dist-info/top_level.txt new file mode 100644 index 0000000..50d1408 --- /dev/null +++ b/intelliaide/vendor/cachetools-4.2.1.dist-info/top_level.txt @@ -0,0 +1 @@ +cachetools diff --git a/intelliaide/vendor/cachetools/__init__.py b/intelliaide/vendor/cachetools/__init__.py new file mode 100644 index 0000000..2e66e20 --- /dev/null +++ b/intelliaide/vendor/cachetools/__init__.py @@ -0,0 +1,24 @@ +"""Extensible memoizing collections and decorators.""" + +from .cache import Cache +from .decorators import cached, cachedmethod +from .fifo import FIFOCache +from .lfu import LFUCache +from .lru import LRUCache +from .mru import MRUCache +from .rr import RRCache +from .ttl import TTLCache + +__all__ = ( + 'Cache', + 'FIFOCache', + 'LFUCache', + 'LRUCache', + 'MRUCache', + 'RRCache', + 'TTLCache', + 'cached', + 'cachedmethod' +) + +__version__ = '4.2.1' diff --git a/intelliaide/vendor/cachetools/cache.py b/intelliaide/vendor/cachetools/cache.py new file mode 100644 index 0000000..ed3d268 --- /dev/null +++ b/intelliaide/vendor/cachetools/cache.py @@ -0,0 +1,117 @@ +from collections.abc import MutableMapping + + +class _DefaultSize(object): + + __slots__ = () + + def __getitem__(self, _): + return 1 + + def __setitem__(self, _, value): + assert value == 1 + + def pop(self, _): + return 1 + + +class Cache(MutableMapping): + """Mutable mapping to serve as a simple cache or cache base class.""" + + __marker = object() + + __size = _DefaultSize() + + def __init__(self, maxsize, getsizeof=None): + if getsizeof: + self.getsizeof = getsizeof + if self.getsizeof is not Cache.getsizeof: + self.__size = dict() + self.__data = dict() + self.__currsize = 0 + self.__maxsize = maxsize + + def __repr__(self): + return '%s(%r, maxsize=%r, currsize=%r)' % ( + self.__class__.__name__, + list(self.__data.items()), + self.__maxsize, + self.__currsize, + ) + + def __getitem__(self, key): + try: + return self.__data[key] + except KeyError: + return self.__missing__(key) + + def __setitem__(self, key, value): + maxsize = self.__maxsize + size = self.getsizeof(value) + if size > maxsize: + raise ValueError('value too large') + if key not in self.__data or self.__size[key] < size: + while self.__currsize + size > maxsize: + self.popitem() + if key in self.__data: + diffsize = size - self.__size[key] + else: + diffsize = size + self.__data[key] = value + self.__size[key] = size + self.__currsize += diffsize + + def __delitem__(self, key): + size = self.__size.pop(key) + del self.__data[key] + self.__currsize -= size + + def __contains__(self, key): + return key in self.__data + + def __missing__(self, key): + raise KeyError(key) + + def __iter__(self): + return iter(self.__data) + + def __len__(self): + return len(self.__data) + + def get(self, key, default=None): + if key in self: + return self[key] + else: + return default + + def pop(self, key, default=__marker): + if key in self: + value = self[key] + del self[key] + elif default is self.__marker: + raise KeyError(key) + else: + value = default + return value + + def setdefault(self, key, default=None): + if key in self: + value = self[key] + else: + self[key] = value = default + return value + + @property + def maxsize(self): + """The maximum size of the cache.""" + return self.__maxsize + + @property + def currsize(self): + """The current size of the cache.""" + return self.__currsize + + @staticmethod + def getsizeof(value): + """Return the size of a cache element's value.""" + return 1 diff --git a/intelliaide/vendor/cachetools/decorators.py b/intelliaide/vendor/cachetools/decorators.py new file mode 100644 index 0000000..217b9a8 --- /dev/null +++ b/intelliaide/vendor/cachetools/decorators.py @@ -0,0 +1,88 @@ +import functools + +from .keys import hashkey + + +def cached(cache, key=hashkey, lock=None): + """Decorator to wrap a function with a memoizing callable that saves + results in a cache. + + """ + def decorator(func): + if cache is None: + def wrapper(*args, **kwargs): + return func(*args, **kwargs) + elif lock is None: + def wrapper(*args, **kwargs): + k = key(*args, **kwargs) + try: + return cache[k] + except KeyError: + pass # key not found + v = func(*args, **kwargs) + try: + cache[k] = v + except ValueError: + pass # value too large + return v + else: + def wrapper(*args, **kwargs): + k = key(*args, **kwargs) + try: + with lock: + return cache[k] + except KeyError: + pass # key not found + v = func(*args, **kwargs) + # in case of a race, prefer the item already in the cache + try: + with lock: + return cache.setdefault(k, v) + except ValueError: + return v # value too large + return functools.update_wrapper(wrapper, func) + return decorator + + +def cachedmethod(cache, key=hashkey, lock=None): + """Decorator to wrap a class or instance method with a memoizing + callable that saves results in a cache. + + """ + def decorator(method): + if lock is None: + def wrapper(self, *args, **kwargs): + c = cache(self) + if c is None: + return method(self, *args, **kwargs) + k = key(*args, **kwargs) + try: + return c[k] + except KeyError: + pass # key not found + v = method(self, *args, **kwargs) + try: + c[k] = v + except ValueError: + pass # value too large + return v + else: + def wrapper(self, *args, **kwargs): + c = cache(self) + if c is None: + return method(self, *args, **kwargs) + k = key(*args, **kwargs) + try: + with lock(self): + return c[k] + except KeyError: + pass # key not found + v = method(self, *args, **kwargs) + # in case of a race, prefer the item already in the cache + try: + with lock(self): + return c.setdefault(k, v) + except ValueError: + return v # value too large + return functools.update_wrapper(wrapper, method) + return decorator diff --git a/intelliaide/vendor/cachetools/fifo.py b/intelliaide/vendor/cachetools/fifo.py new file mode 100644 index 0000000..9f254f1 --- /dev/null +++ b/intelliaide/vendor/cachetools/fifo.py @@ -0,0 +1,31 @@ +import collections + +from .cache import Cache + + +class FIFOCache(Cache): + """First In First Out (FIFO) cache implementation.""" + + def __init__(self, maxsize, getsizeof=None): + Cache.__init__(self, maxsize, getsizeof) + self.__order = collections.OrderedDict() + + def __setitem__(self, key, value, cache_setitem=Cache.__setitem__): + cache_setitem(self, key, value) + try: + self.__order.move_to_end(key) + except KeyError: + self.__order[key] = None + + def __delitem__(self, key, cache_delitem=Cache.__delitem__): + cache_delitem(self, key) + del self.__order[key] + + def popitem(self): + """Remove and return the `(key, value)` pair first inserted.""" + try: + key = next(iter(self.__order)) + except StopIteration: + raise KeyError('%s is empty' % type(self).__name__) from None + else: + return (key, self.pop(key)) diff --git a/intelliaide/vendor/cachetools/func.py b/intelliaide/vendor/cachetools/func.py new file mode 100644 index 0000000..2be517e --- /dev/null +++ b/intelliaide/vendor/cachetools/func.py @@ -0,0 +1,176 @@ +"""`functools.lru_cache` compatible memoizing function decorators.""" + +import collections +import functools +import math +import random +import time + +try: + from threading import RLock +except ImportError: # pragma: no cover + from dummy_threading import RLock + +from . import keys +from .fifo import FIFOCache +from .lfu import LFUCache +from .lru import LRUCache +from .mru import MRUCache +from .rr import RRCache +from .ttl import TTLCache + +__all__ = ('lfu_cache', 'lru_cache', 'mru_cache', 'rr_cache', 'ttl_cache') + + +_CacheInfo = collections.namedtuple('CacheInfo', [ + 'hits', 'misses', 'maxsize', 'currsize' +]) + + +class _UnboundCache(dict): + + @property + def maxsize(self): + return None + + @property + def currsize(self): + return len(self) + + +class _UnboundTTLCache(TTLCache): + def __init__(self, ttl, timer): + TTLCache.__init__(self, math.inf, ttl, timer) + + @property + def maxsize(self): + return None + + +def _cache(cache, typed): + maxsize = cache.maxsize + + def decorator(func): + key = keys.typedkey if typed else keys.hashkey + lock = RLock() + stats = [0, 0] + + def wrapper(*args, **kwargs): + k = key(*args, **kwargs) + with lock: + try: + v = cache[k] + stats[0] += 1 + return v + except KeyError: + stats[1] += 1 + v = func(*args, **kwargs) + # in case of a race, prefer the item already in the cache + try: + with lock: + return cache.setdefault(k, v) + except ValueError: + return v # value too large + + def cache_info(): + with lock: + hits, misses = stats + maxsize = cache.maxsize + currsize = cache.currsize + return _CacheInfo(hits, misses, maxsize, currsize) + + def cache_clear(): + with lock: + try: + cache.clear() + finally: + stats[:] = [0, 0] + + wrapper.cache_info = cache_info + wrapper.cache_clear = cache_clear + wrapper.cache_parameters = lambda: {'maxsize': maxsize, 'typed': typed} + functools.update_wrapper(wrapper, func) + return wrapper + return decorator + + +def fifo_cache(maxsize=128, typed=False): + """Decorator to wrap a function with a memoizing callable that saves + up to `maxsize` results based on a First In First Out (FIFO) + algorithm. + + """ + if maxsize is None: + return _cache(_UnboundCache(), typed) + elif callable(maxsize): + return _cache(FIFOCache(128), typed)(maxsize) + else: + return _cache(FIFOCache(maxsize), typed) + + +def lfu_cache(maxsize=128, typed=False): + """Decorator to wrap a function with a memoizing callable that saves + up to `maxsize` results based on a Least Frequently Used (LFU) + algorithm. + + """ + if maxsize is None: + return _cache(_UnboundCache(), typed) + elif callable(maxsize): + return _cache(LFUCache(128), typed)(maxsize) + else: + return _cache(LFUCache(maxsize), typed) + + +def lru_cache(maxsize=128, typed=False): + """Decorator to wrap a function with a memoizing callable that saves + up to `maxsize` results based on a Least Recently Used (LRU) + algorithm. + + """ + if maxsize is None: + return _cache(_UnboundCache(), typed) + elif callable(maxsize): + return _cache(LRUCache(128), typed)(maxsize) + else: + return _cache(LRUCache(maxsize), typed) + + +def mru_cache(maxsize=128, typed=False): + """Decorator to wrap a function with a memoizing callable that saves + up to `maxsize` results based on a Most Recently Used (MRU) + algorithm. + """ + if maxsize is None: + return _cache(_UnboundCache(), typed) + elif callable(maxsize): + return _cache(MRUCache(128), typed)(maxsize) + else: + return _cache(MRUCache(maxsize), typed) + + +def rr_cache(maxsize=128, choice=random.choice, typed=False): + """Decorator to wrap a function with a memoizing callable that saves + up to `maxsize` results based on a Random Replacement (RR) + algorithm. + + """ + if maxsize is None: + return _cache(_UnboundCache(), typed) + elif callable(maxsize): + return _cache(RRCache(128, choice), typed)(maxsize) + else: + return _cache(RRCache(maxsize, choice), typed) + + +def ttl_cache(maxsize=128, ttl=600, timer=time.monotonic, typed=False): + """Decorator to wrap a function with a memoizing callable that saves + up to `maxsize` results based on a Least Recently Used (LRU) + algorithm with a per-item time-to-live (TTL) value. + """ + if maxsize is None: + return _cache(_UnboundTTLCache(ttl, timer), typed) + elif callable(maxsize): + return _cache(TTLCache(128, ttl, timer), typed)(maxsize) + else: + return _cache(TTLCache(maxsize, ttl, timer), typed) diff --git a/intelliaide/vendor/cachetools/keys.py b/intelliaide/vendor/cachetools/keys.py new file mode 100644 index 0000000..355d742 --- /dev/null +++ b/intelliaide/vendor/cachetools/keys.py @@ -0,0 +1,52 @@ +"""Key functions for memoizing decorators.""" + +__all__ = ('hashkey', 'typedkey') + + +class _HashedTuple(tuple): + """A tuple that ensures that hash() will be called no more than once + per element, since cache decorators will hash the key multiple + times on a cache miss. See also _HashedSeq in the standard + library functools implementation. + + """ + + __hashvalue = None + + def __hash__(self, hash=tuple.__hash__): + hashvalue = self.__hashvalue + if hashvalue is None: + self.__hashvalue = hashvalue = hash(self) + return hashvalue + + def __add__(self, other, add=tuple.__add__): + return _HashedTuple(add(self, other)) + + def __radd__(self, other, add=tuple.__add__): + return _HashedTuple(add(other, self)) + + def __getstate__(self): + return {} + + +# used for separating keyword arguments; we do not use an object +# instance here so identity is preserved when pickling/unpickling +_kwmark = (_HashedTuple,) + + +def hashkey(*args, **kwargs): + """Return a cache key for the specified hashable arguments.""" + + if kwargs: + return _HashedTuple(args + sum(sorted(kwargs.items()), _kwmark)) + else: + return _HashedTuple(args) + + +def typedkey(*args, **kwargs): + """Return a typed cache key for the specified hashable arguments.""" + + key = hashkey(*args, **kwargs) + key += tuple(type(v) for v in args) + key += tuple(type(v) for _, v in sorted(kwargs.items())) + return key diff --git a/intelliaide/vendor/cachetools/lfu.py b/intelliaide/vendor/cachetools/lfu.py new file mode 100644 index 0000000..894a326 --- /dev/null +++ b/intelliaide/vendor/cachetools/lfu.py @@ -0,0 +1,34 @@ +import collections + +from .cache import Cache + + +class LFUCache(Cache): + """Least Frequently Used (LFU) cache implementation.""" + + def __init__(self, maxsize, getsizeof=None): + Cache.__init__(self, maxsize, getsizeof) + self.__counter = collections.Counter() + + def __getitem__(self, key, cache_getitem=Cache.__getitem__): + value = cache_getitem(self, key) + if key in self: # __missing__ may not store item + self.__counter[key] -= 1 + return value + + def __setitem__(self, key, value, cache_setitem=Cache.__setitem__): + cache_setitem(self, key, value) + self.__counter[key] -= 1 + + def __delitem__(self, key, cache_delitem=Cache.__delitem__): + cache_delitem(self, key) + del self.__counter[key] + + def popitem(self): + """Remove and return the `(key, value)` pair least frequently used.""" + try: + (key, _), = self.__counter.most_common(1) + except ValueError: + raise KeyError('%s is empty' % type(self).__name__) from None + else: + return (key, self.pop(key)) diff --git a/intelliaide/vendor/cachetools/lru.py b/intelliaide/vendor/cachetools/lru.py new file mode 100644 index 0000000..33749d1 --- /dev/null +++ b/intelliaide/vendor/cachetools/lru.py @@ -0,0 +1,40 @@ +import collections + +from .cache import Cache + + +class LRUCache(Cache): + """Least Recently Used (LRU) cache implementation.""" + + def __init__(self, maxsize, getsizeof=None): + Cache.__init__(self, maxsize, getsizeof) + self.__order = collections.OrderedDict() + + def __getitem__(self, key, cache_getitem=Cache.__getitem__): + value = cache_getitem(self, key) + if key in self: # __missing__ may not store item + self.__update(key) + return value + + def __setitem__(self, key, value, cache_setitem=Cache.__setitem__): + cache_setitem(self, key, value) + self.__update(key) + + def __delitem__(self, key, cache_delitem=Cache.__delitem__): + cache_delitem(self, key) + del self.__order[key] + + def popitem(self): + """Remove and return the `(key, value)` pair least recently used.""" + try: + key = next(iter(self.__order)) + except StopIteration: + raise KeyError('%s is empty' % type(self).__name__) from None + else: + return (key, self.pop(key)) + + def __update(self, key): + try: + self.__order.move_to_end(key) + except KeyError: + self.__order[key] = None diff --git a/intelliaide/vendor/cachetools/mru.py b/intelliaide/vendor/cachetools/mru.py new file mode 100644 index 0000000..41e2aa1 --- /dev/null +++ b/intelliaide/vendor/cachetools/mru.py @@ -0,0 +1,40 @@ +import collections + +from cachetools.cache import Cache + + +class MRUCache(Cache): + """Most Recently Used (MRU) cache implementation.""" + + def __init__(self, maxsize, getsizeof=None): + Cache.__init__(self, maxsize, getsizeof) + self.__order = collections.OrderedDict() + + def __getitem__(self, key, cache_getitem=Cache.__getitem__): + value = cache_getitem(self, key) + if key in self: # __missing__ may not store item + self.__update(key) + return value + + def __setitem__(self, key, value, cache_setitem=Cache.__setitem__): + cache_setitem(self, key, value) + self.__update(key) + + def __delitem__(self, key, cache_delitem=Cache.__delitem__): + cache_delitem(self, key) + del self.__order[key] + + def popitem(self): + """Remove and return the `(key, value)` pair most recently used.""" + try: + key = next(iter(self.__order)) + except StopIteration: + raise KeyError('%s is empty' % type(self).__name__) from None + else: + return (key, self.pop(key)) + + def __update(self, key): + try: + self.__order.move_to_end(key, last=False) + except KeyError: + self.__order[key] = None diff --git a/intelliaide/vendor/cachetools/rr.py b/intelliaide/vendor/cachetools/rr.py new file mode 100644 index 0000000..5b47e87 --- /dev/null +++ b/intelliaide/vendor/cachetools/rr.py @@ -0,0 +1,34 @@ +import random + +from .cache import Cache + + +# random.choice cannot be pickled in Python 2.7 +def _choice(seq): + return random.choice(seq) + + +class RRCache(Cache): + """Random Replacement (RR) cache implementation.""" + + def __init__(self, maxsize, choice=random.choice, getsizeof=None): + Cache.__init__(self, maxsize, getsizeof) + # TODO: use None as default, assing to self.choice directly? + if choice is random.choice: + self.__choice = _choice + else: + self.__choice = choice + + @property + def choice(self): + """The `choice` function used by the cache.""" + return self.__choice + + def popitem(self): + """Remove and return a random `(key, value)` pair.""" + try: + key = self.__choice(list(self)) + except IndexError: + raise KeyError('%s is empty' % type(self).__name__) from None + else: + return (key, self.pop(key)) diff --git a/intelliaide/vendor/cachetools/ttl.py b/intelliaide/vendor/cachetools/ttl.py new file mode 100644 index 0000000..528a085 --- /dev/null +++ b/intelliaide/vendor/cachetools/ttl.py @@ -0,0 +1,208 @@ +import collections +import time + +from .cache import Cache + + +class _Link(object): + + __slots__ = ('key', 'expire', 'next', 'prev') + + def __init__(self, key=None, expire=None): + self.key = key + self.expire = expire + + def __reduce__(self): + return _Link, (self.key, self.expire) + + def unlink(self): + next = self.next + prev = self.prev + prev.next = next + next.prev = prev + + +class _Timer(object): + + def __init__(self, timer): + self.__timer = timer + self.__nesting = 0 + + def __call__(self): + if self.__nesting == 0: + return self.__timer() + else: + return self.__time + + def __enter__(self): + if self.__nesting == 0: + self.__time = time = self.__timer() + else: + time = self.__time + self.__nesting += 1 + return time + + def __exit__(self, *exc): + self.__nesting -= 1 + + def __reduce__(self): + return _Timer, (self.__timer,) + + def __getattr__(self, name): + return getattr(self.__timer, name) + + +class TTLCache(Cache): + """LRU Cache implementation with per-item time-to-live (TTL) value.""" + + def __init__(self, maxsize, ttl, timer=time.monotonic, getsizeof=None): + Cache.__init__(self, maxsize, getsizeof) + self.__root = root = _Link() + root.prev = root.next = root + self.__links = collections.OrderedDict() + self.__timer = _Timer(timer) + self.__ttl = ttl + + def __contains__(self, key): + try: + link = self.__links[key] # no reordering + except KeyError: + return False + else: + return not (link.expire < self.__timer()) + + def __getitem__(self, key, cache_getitem=Cache.__getitem__): + try: + link = self.__getlink(key) + except KeyError: + expired = False + else: + expired = link.expire < self.__timer() + if expired: + return self.__missing__(key) + else: + return cache_getitem(self, key) + + def __setitem__(self, key, value, cache_setitem=Cache.__setitem__): + with self.__timer as time: + self.expire(time) + cache_setitem(self, key, value) + try: + link = self.__getlink(key) + except KeyError: + self.__links[key] = link = _Link(key) + else: + link.unlink() + link.expire = time + self.__ttl + link.next = root = self.__root + link.prev = prev = root.prev + prev.next = root.prev = link + + def __delitem__(self, key, cache_delitem=Cache.__delitem__): + cache_delitem(self, key) + link = self.__links.pop(key) + link.unlink() + if link.expire < self.__timer(): + raise KeyError(key) + + def __iter__(self): + root = self.__root + curr = root.next + while curr is not root: + # "freeze" time for iterator access + with self.__timer as time: + if not (curr.expire < time): + yield curr.key + curr = curr.next + + def __len__(self): + root = self.__root + curr = root.next + time = self.__timer() + count = len(self.__links) + while curr is not root and curr.expire < time: + count -= 1 + curr = curr.next + return count + + def __setstate__(self, state): + self.__dict__.update(state) + root = self.__root + root.prev = root.next = root + for link in sorted(self.__links.values(), key=lambda obj: obj.expire): + link.next = root + link.prev = prev = root.prev + prev.next = root.prev = link + self.expire(self.__timer()) + + def __repr__(self, cache_repr=Cache.__repr__): + with self.__timer as time: + self.expire(time) + return cache_repr(self) + + @property + def currsize(self): + with self.__timer as time: + self.expire(time) + return super(TTLCache, self).currsize + + @property + def timer(self): + """The timer function used by the cache.""" + return self.__timer + + @property + def ttl(self): + """The time-to-live value of the cache's items.""" + return self.__ttl + + def expire(self, time=None): + """Remove expired items from the cache.""" + if time is None: + time = self.__timer() + root = self.__root + curr = root.next + links = self.__links + cache_delitem = Cache.__delitem__ + while curr is not root and curr.expire < time: + cache_delitem(self, curr.key) + del links[curr.key] + next = curr.next + curr.unlink() + curr = next + + def clear(self): + with self.__timer as time: + self.expire(time) + Cache.clear(self) + + def get(self, *args, **kwargs): + with self.__timer: + return Cache.get(self, *args, **kwargs) + + def pop(self, *args, **kwargs): + with self.__timer: + return Cache.pop(self, *args, **kwargs) + + def setdefault(self, *args, **kwargs): + with self.__timer: + return Cache.setdefault(self, *args, **kwargs) + + def popitem(self): + """Remove and return the `(key, value)` pair least recently used that + has not already expired. + + """ + with self.__timer as time: + self.expire(time) + try: + key = next(iter(self.__links)) + except StopIteration: + raise KeyError('%s is empty' % type(self).__name__) from None + else: + return (key, self.pop(key)) + + def __getlink(self, key): + value = self.__links[key] + self.__links.move_to_end(key) + return value diff --git a/intelliaide/vendor/certifi-2026.5.20.dist-info/INSTALLER b/intelliaide/vendor/certifi-2026.5.20.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/intelliaide/vendor/certifi-2026.5.20.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/intelliaide/vendor/certifi-2026.5.20.dist-info/METADATA b/intelliaide/vendor/certifi-2026.5.20.dist-info/METADATA new file mode 100644 index 0000000..7b7bb30 --- /dev/null +++ b/intelliaide/vendor/certifi-2026.5.20.dist-info/METADATA @@ -0,0 +1,78 @@ +Metadata-Version: 2.4 +Name: certifi +Version: 2026.5.20 +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.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 :: 3.14 +Requires-Python: >=3.7 +License-File: LICENSE +Dynamic: author +Dynamic: author-email +Dynamic: classifier +Dynamic: description +Dynamic: home-page +Dynamic: license +Dynamic: license-file +Dynamic: project-url +Dynamic: requires-python +Dynamic: summary + +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/intelliaide/vendor/certifi-2026.5.20.dist-info/RECORD b/intelliaide/vendor/certifi-2026.5.20.dist-info/RECORD new file mode 100644 index 0000000..c69462d --- /dev/null +++ b/intelliaide/vendor/certifi-2026.5.20.dist-info/RECORD @@ -0,0 +1,14 @@ +certifi-2026.5.20.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +certifi-2026.5.20.dist-info/METADATA,sha256=HDiCa8lfd0TGlQFongDjoaLJOhWJiJN84y707Vwd8PY,2474 +certifi-2026.5.20.dist-info/RECORD,, +certifi-2026.5.20.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91 +certifi-2026.5.20.dist-info/licenses/LICENSE,sha256=6TcW2mucDVpKHfYP5pWzcPBpVgPSH2-D8FPkLPwQyvc,989 +certifi-2026.5.20.dist-info/top_level.txt,sha256=KMu4vUCfsjLrkPbSNdgdekS-pVJzBAJFO__nI8NF6-U,8 +certifi/__init__.py,sha256=-8ljc7w7fyi5Kyi06c1_L0lG_kD_J0FvbUTa8mEpdzQ,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=fO9UDGrzvwo8fQBwvT_XquNPiqgFtAjRwnoByK6zBd8,236095 +certifi/core.py,sha256=XFXycndG5pf37ayeF8N32HUuDafsyhkVMbO4BAPWHa0,3394 +certifi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/intelliaide/vendor/certifi-2026.5.20.dist-info/WHEEL b/intelliaide/vendor/certifi-2026.5.20.dist-info/WHEEL new file mode 100644 index 0000000..14a883f --- /dev/null +++ b/intelliaide/vendor/certifi-2026.5.20.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (82.0.1) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/intelliaide/vendor/certifi-2026.5.20.dist-info/licenses/LICENSE b/intelliaide/vendor/certifi-2026.5.20.dist-info/licenses/LICENSE new file mode 100644 index 0000000..62b076c --- /dev/null +++ b/intelliaide/vendor/certifi-2026.5.20.dist-info/licenses/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/intelliaide/vendor/certifi-2026.5.20.dist-info/top_level.txt b/intelliaide/vendor/certifi-2026.5.20.dist-info/top_level.txt new file mode 100644 index 0000000..963eac5 --- /dev/null +++ b/intelliaide/vendor/certifi-2026.5.20.dist-info/top_level.txt @@ -0,0 +1 @@ +certifi diff --git a/intelliaide/vendor/certifi/__init__.py b/intelliaide/vendor/certifi/__init__.py new file mode 100644 index 0000000..004dd55 --- /dev/null +++ b/intelliaide/vendor/certifi/__init__.py @@ -0,0 +1,4 @@ +from .core import contents, where + +__all__ = ["contents", "where"] +__version__ = "2026.05.20" diff --git a/intelliaide/vendor/certifi/__main__.py b/intelliaide/vendor/certifi/__main__.py new file mode 100644 index 0000000..8945b5d --- /dev/null +++ b/intelliaide/vendor/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/intelliaide/vendor/certifi/cacert.pem b/intelliaide/vendor/certifi/cacert.pem new file mode 100644 index 0000000..6faad41 --- /dev/null +++ b/intelliaide/vendor/certifi/cacert.pem @@ -0,0 +1,3892 @@ + +# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Label: "COMODO ECC Certification Authority" +# Serial: 41578283867086692638256921589707938090 +# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23 +# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11 +# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7 +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT +IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw +MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy +ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N +T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR +FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J +cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW +BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm +fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv +GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +# Issuer: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) +# Subject: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) +# Label: "NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny" +# Serial: 80544274841616 +# MD5 Fingerprint: c5:a1:b7:ff:73:dd:d6:d7:34:32:18:df:fc:3c:ad:88 +# SHA1 Fingerprint: 06:08:3f:59:3f:15:a1:04:a0:69:a4:6b:a9:03:d0:06:b7:97:09:91 +# SHA256 Fingerprint: 6c:61:da:c3:a2:de:f0:31:50:6b:e0:36:d2:a6:fe:40:19:94:fb:d1:3d:f9:c8:d4:66:59:92:74:c4:46:ec:98 +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQG +EwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3 +MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNl +cnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBBcmFueSAoQ2xhc3MgR29sZCkgRsWR +dGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgxMjA2MTUwODIxWjCB +pzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxOZXRM +b2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlm +aWNhdGlvbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNz +IEdvbGQpIEbFkXRhbsO6c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAxCRec75LbRTDofTjl5Bu0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrT +lF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw/HpYzY6b7cNGbIRwXdrz +AZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAkH3B5r9s5 +VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRG +ILdwfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2 +BJtr+UBdADTHLpl1neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAG +AQH/AgEEMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2M +U9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwWqZw8UQCgwBEIBaeZ5m8BiFRh +bvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTtaYtOUZcTh5m2C ++C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2F +uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2 +XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +# Issuer: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. +# Subject: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. +# Label: "Microsec e-Szigno Root CA 2009" +# Serial: 14014712776195784473 +# MD5 Fingerprint: f8:49:f4:03:bc:44:2d:83:be:48:69:7d:29:64:fc:b1 +# SHA1 Fingerprint: 89:df:74:fe:5c:f4:0f:4a:80:f9:e3:37:7d:54:da:91:e1:01:31:8e +# SHA256 Fingerprint: 3c:5f:81:fe:a5:fa:b8:2c:64:bf:a2:ea:ec:af:cd:e8:e0:77:fc:86:20:a7:ca:e5:37:16:3d:f3:6e:db:f3:78 +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD +VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0 +ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0G +CSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTAeFw0wOTA2MTYxMTMwMThaFw0y +OTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3Qx +FjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3pp +Z25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvP +kd6mJviZpWNwrZuuyjNAfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tc +cbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG0IMZfcChEhyVbUr02MelTTMuhTlAdX4U +fIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKApxn1ntxVUwOXewdI/5n7 +N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm1HxdrtbC +xkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1 ++rUCAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPM +Pcu1SCOhGnqmKrs0aDAbBgNVHREEFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqG +SIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0olZMEyL/azXm4Q5DwpL7v8u8h +mLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfXI/OMn74dseGk +ddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c +2Pm2G2JwCz02yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5t +HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Label: "GlobalSign Root CA - R3" +# Serial: 4835703278459759426209954 +# MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28 +# SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad +# SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 +MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 +RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT +gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm +KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd +QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ +XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o +LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU +RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp +jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK +6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX +mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs +Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH +WD9f +-----END CERTIFICATE----- + +# Issuer: CN=Izenpe.com O=IZENPE S.A. +# Subject: CN=Izenpe.com O=IZENPE S.A. +# Label: "Izenpe.com" +# Serial: 917563065490389241595536686991402621 +# MD5 Fingerprint: a6:b0:cd:85:80:da:5c:50:34:a3:39:90:2f:55:67:73 +# SHA1 Fingerprint: 2f:78:3d:25:52:18:a7:4a:65:39:71:b5:2c:a2:9c:45:15:6f:e9:19 +# SHA256 Fingerprint: 25:30:cc:8e:98:32:15:02:ba:d9:6f:9b:1f:ba:1b:09:9e:2d:29:9e:0f:45:48:bb:91:4f:36:3b:c0:d4:53:1f +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Label: "Go Daddy Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 +# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b +# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT +EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp +ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz +NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH +EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE +AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD +E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH +/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy +DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh +GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR +tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA +AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX +WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu +9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr +gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo +2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI +4uJEvlz36hz1 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 +# SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e +# SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs +ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw +MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj +aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp +Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg +nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 +HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N +Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN +dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 +HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G +CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU +sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 +4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg +8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 +mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Services Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2 +# SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f +# SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5 +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs +ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD +VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy +ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy +dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p +OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 +8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K +Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe +hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk +6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw +DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q +AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI +bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB +ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z +qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn +0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN +sSi6 +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Network CA" +# Serial: 279744 +# MD5 Fingerprint: d5:e9:81:40:c5:18:69:fc:46:2c:89:75:62:0f:aa:78 +# SHA1 Fingerprint: 07:e0:32:e0:20:b7:2c:3f:19:2f:06:28:a2:59:3a:19:a7:0f:06:9e +# SHA256 Fingerprint: 5c:58:46:8d:55:f5:8e:49:7e:74:39:82:d2:b5:00:10:b6:d1:65:37:4a:cf:83:a7:d4:a3:2d:b7:68:c4:40:8e +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM +MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D +ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU +cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 +WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg +Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw +IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH +UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM +TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU +BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM +kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x +AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV +HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y +sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL +I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 +J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY +VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +# Issuer: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA +# Label: "TWCA Root Certification Authority" +# Serial: 1 +# MD5 Fingerprint: aa:08:8f:f6:f9:7b:b7:f2:b1:a7:1e:9b:ea:ea:bd:79 +# SHA1 Fingerprint: cf:9e:87:6d:d3:eb:fc:42:26:97:a3:b5:a3:7a:a0:76:a9:06:23:48 +# SHA256 Fingerprint: bf:d8:8f:e1:10:1c:41:ae:3e:80:1b:f8:be:56:35:0e:e9:ba:d1:a6:b9:bd:51:5e:dc:5c:6d:5b:87:11:ac:44 +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzES +MBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFU +V0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMz +WhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJVEFJV0FO +LUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFE +AcK0HMMxQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HH +K3XLfJ+utdGdIzdjp9xCoi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeX +RfwZVzsrb+RH9JlF/h3x+JejiB03HFyP4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/z +rX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1ry+UPizgN7gr8/g+YnzAx +3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkq +hkiG9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeC +MErJk/9q56YAf4lCmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdls +XebQ79NqZp4VKIV66IIArB6nCWlWQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62D +lhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVYT0bf+215WfKEIlKuD8z7fDvn +aspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocnyYh0igzyXxfkZ +YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +# Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 +# Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 +# Label: "Security Communication RootCA2" +# Serial: 0 +# MD5 Fingerprint: 6c:39:7d:a4:0e:55:59:b2:3f:d6:41:b1:12:50:de:43 +# SHA1 Fingerprint: 5f:3b:8c:f2:f8:10:b3:7d:78:b4:ce:ec:19:19:c3:73:34:b9:c7:74 +# SHA256 Fingerprint: 51:3b:2c:ec:b8:10:d4:cd:e5:dd:85:39:1a:df:c6:c2:dd:60:d8:7b:b7:36:d2:b5:21:48:4a:a4:7a:0e:be:f6 +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl +MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe +U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX +DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy +dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj +YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV +OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr +zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM +VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ +hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO +ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw +awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs +OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 +DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF +coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc +okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8 +t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy +1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/ +SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +# Issuer: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 +# Subject: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 +# Label: "Actalis Authentication Root CA" +# Serial: 6271844772424770508 +# MD5 Fingerprint: 69:c1:0d:4f:07:a3:1b:c3:fe:56:3d:04:bc:11:f6:a6 +# SHA1 Fingerprint: f3:73:b3:87:06:5a:28:84:8a:f2:f3:4a:ce:19:2b:dd:c7:8e:9c:ac +# SHA256 Fingerprint: 55:92:60:84:ec:96:3a:64:b9:6e:2a:be:01:ce:0b:a8:6a:64:fb:fe:bc:c7:aa:b5:af:c1:55:b3:7f:d7:60:66 +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE +BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w +MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC +SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1 +ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv +UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX +4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9 +KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/ +gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb +rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ +51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F +be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe +KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F +v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn +fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7 +jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz +ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL +e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70 +jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz +WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V +SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j +pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX +X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok +fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R +K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU +ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU +LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT +LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- + +# Issuer: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 +# Subject: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 +# Label: "Buypass Class 2 Root CA" +# Serial: 2 +# MD5 Fingerprint: 46:a7:d2:fe:45:fb:64:5a:a8:59:90:9b:78:44:9b:29 +# SHA1 Fingerprint: 49:0a:75:74:de:87:0a:47:fe:58:ee:f6:c7:6b:eb:c6:0b:12:40:99 +# SHA256 Fingerprint: 9a:11:40:25:19:7c:5b:b9:5d:94:e6:3d:55:cd:43:79:08:47:b6:46:b2:3c:df:11:ad:a4:a0:0e:ff:15:fb:48 +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg +Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow +TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw +HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr +6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV +L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91 +1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx +MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ +QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB +arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr +Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi +FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS +P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN +9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP +AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz +uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h +9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t +OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo ++fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7 +KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2 +DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us +H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ +I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7 +5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h +3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz +Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA= +-----END CERTIFICATE----- + +# Issuer: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 +# Subject: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 +# Label: "Buypass Class 3 Root CA" +# Serial: 2 +# MD5 Fingerprint: 3d:3b:18:9e:2c:64:5a:e8:d5:88:ce:0e:f9:37:c2:ec +# SHA1 Fingerprint: da:fa:f7:fa:66:84:ec:06:8f:14:50:bd:c7:c2:81:a5:bc:a9:64:57 +# SHA256 Fingerprint: ed:f7:eb:bc:a2:7a:2a:38:4d:38:7b:7d:40:10:c6:66:e2:ed:b4:84:3e:4c:29:b4:ae:1d:5b:93:32:e6:b2:4d +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg +Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow +TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw +HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y +ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E +N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9 +tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX +0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c +/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X +KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY +zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS +O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D +34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP +K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3 +AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv +Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj +QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS +IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2 +HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa +O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv +033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u +dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE +kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41 +3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD +u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq +4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc= +-----END CERTIFICATE----- + +# Issuer: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Subject: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Label: "T-TeleSec GlobalRoot Class 3" +# Serial: 1 +# MD5 Fingerprint: ca:fb:40:a8:4e:39:92:8a:1d:fe:8e:2f:c4:27:ea:ef +# SHA1 Fingerprint: 55:a6:72:3e:cb:f2:ec:cd:c3:23:74:70:19:9d:2a:be:11:e3:81:d1 +# SHA256 Fingerprint: fd:73:da:d3:1c:64:4f:f1:b4:3b:ef:0c:cd:da:96:71:0b:9c:d9:87:5e:ca:7e:31:70:7a:f3:e9:6d:52:2b:bd +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN +8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ +RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 +hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 +ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM +EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 +A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy +WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ +1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 +6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT +91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p +TpPDpFQUWw== +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH +# Subject: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH +# Label: "D-TRUST Root Class 3 CA 2 2009" +# Serial: 623603 +# MD5 Fingerprint: cd:e0:25:69:8d:47:ac:9c:89:35:90:f7:fd:51:3d:2f +# SHA1 Fingerprint: 58:e8:ab:b0:36:15:33:fb:80:f7:9b:1b:6d:29:d3:ff:8d:5f:00:f0 +# SHA256 Fingerprint: 49:e7:a4:42:ac:f0:ea:62:87:05:00:54:b5:25:64:b6:50:e4:f4:9e:42:e3:48:d6:aa:38:e0:39:e9:57:b1:c1 +-----BEGIN CERTIFICATE----- +MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF +MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD +bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha +ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM +HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03 +UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42 +tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R +ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM +lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp +/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G +A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G +A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj +dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy +MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl +cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js +L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL +BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni +acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 +o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K +zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8 +PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y +Johw1+qRzT65ysCQblrGXnRl11z+o+I= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH +# Subject: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH +# Label: "D-TRUST Root Class 3 CA 2 EV 2009" +# Serial: 623604 +# MD5 Fingerprint: aa:c6:43:2c:5e:2d:cd:c4:34:c0:50:4f:11:02:4f:b6 +# SHA1 Fingerprint: 96:c9:1b:0b:95:b4:10:98:42:fa:d0:d8:22:79:fe:60:fa:b9:16:83 +# SHA256 Fingerprint: ee:c5:49:6b:98:8c:e9:86:25:b9:34:09:2e:ec:29:08:be:d0:b0:f3:16:c2:d4:73:0c:84:ea:f1:f3:d3:48:81 +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF +MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD +bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw +NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV +BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn +ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0 +3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z +qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR +p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8 +HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw +ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea +HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw +Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh +c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E +RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt +dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku +Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp +3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 +nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF +CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na +xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX +KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1 +-----END CERTIFICATE----- + +# Issuer: CN=CA Disig Root R2 O=Disig a.s. +# Subject: CN=CA Disig Root R2 O=Disig a.s. +# Label: "CA Disig Root R2" +# Serial: 10572350602393338211 +# MD5 Fingerprint: 26:01:fb:d8:27:a7:17:9a:45:54:38:1a:43:01:3b:03 +# SHA1 Fingerprint: b5:61:eb:ea:a4:de:e4:25:4b:69:1a:98:a5:57:47:c2:34:c7:d9:71 +# SHA256 Fingerprint: e2:3d:4a:03:6d:7b:70:e9:f5:95:b1:42:20:79:d2:b9:1e:df:bb:1f:b6:51:a0:63:3e:aa:8a:9d:c5:f8:07:03 +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV +BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu +MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy +MDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx +EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe +NcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH +PWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I +x2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe +QTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR +yyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO +QG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912 +H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ +QfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD +i/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs +nLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1 +rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud +DwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI +hvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM +tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf +GopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb +lvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka ++elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal +TFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i +nSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3 +gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr +G5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os +zMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x +L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL +-----END CERTIFICATE----- + +# Issuer: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV +# Subject: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV +# Label: "ACCVRAIZ1" +# Serial: 6828503384748696800 +# MD5 Fingerprint: d0:a0:5a:ee:05:b6:09:94:21:a1:7d:f1:b2:29:82:02 +# SHA1 Fingerprint: 93:05:7a:88:15:c6:4f:ce:88:2f:fa:91:16:52:28:78:bc:53:64:17 +# SHA256 Fingerprint: 9a:6e:c0:12:e1:a7:da:9d:be:34:19:4d:47:8a:d7:c0:db:18:22:fb:07:1d:f1:29:81:49:6e:d1:04:38:41:13 +-----BEGIN CERTIFICATE----- +MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE +AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw +CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ +BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND +VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb +qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY +HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo +G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA +lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr +IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/ +0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH +k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47 +4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO +m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa +cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl +uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI +KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls +ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG +AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 +VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT +VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG +CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA +cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA +QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA +7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA +cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA +QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA +czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu +aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt +aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud +DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF +BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp +D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU +JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m +AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD +vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms +tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH +7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h +I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA +h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF +d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H +pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7 +-----END CERTIFICATE----- + +# Issuer: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA +# Label: "TWCA Global Root CA" +# Serial: 3262 +# MD5 Fingerprint: f9:03:7e:cf:e6:9e:3c:73:7a:2a:90:07:69:ff:2b:96 +# SHA1 Fingerprint: 9c:bb:48:53:f6:a4:f6:d3:52:a4:e8:32:52:55:60:13:f5:ad:af:65 +# SHA256 Fingerprint: 59:76:90:07:f7:68:5d:0f:cd:50:87:2f:9f:95:d5:75:5a:5b:2b:45:7d:81:f3:69:2b:61:0a:98:67:2f:0e:1b +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcx +EjAQBgNVBAoTCVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMT +VFdDQSBHbG9iYWwgUm9vdCBDQTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5 +NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExEDAOBgNVBAsT +B1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3QgQ0EwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2CnJfF +10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz +0ALfUPZVr2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfCh +MBwqoJimFb3u/Rk28OKRQ4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbH +zIh1HrtsBv+baz4X7GGqcXzGHaL3SekVtTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc +46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1WKKD+u4ZqyPpcC1jcxkt2 +yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99sy2sbZCi +laLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYP +oA/pyJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQA +BDzfuBSO6N+pjWxnkjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcE +qYSjMq+u7msXi7Kx/mzhkIyIqJdIzshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm +4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6gcFGn90xHNcgL +1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn +LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WF +H6vPNOw/KP4M8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNo +RI2T9GRwoD2dKAXDOXC4Ynsg/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+ +nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlglPx4mI88k1HtQJAH32RjJMtOcQWh +15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryPA9gK8kxkRr05YuWW +6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3mi4TW +nsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5j +wa19hAM8EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWz +aGHQRiapIVJpLesux+t3zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmy +KwbQBM0= +-----END CERTIFICATE----- + +# Issuer: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Subject: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Label: "T-TeleSec GlobalRoot Class 2" +# Serial: 1 +# MD5 Fingerprint: 2b:9b:9e:e4:7b:6c:1f:00:72:1a:cc:c1:77:79:df:6a +# SHA1 Fingerprint: 59:0d:2d:7d:88:4f:40:2e:61:7e:a5:62:32:17:65:cf:17:d8:94:e9 +# SHA256 Fingerprint: 91:e2:f5:78:8d:58:10:eb:a7:ba:58:73:7d:e1:54:8a:8e:ca:cd:01:45:98:bc:0b:14:3e:04:1b:17:05:25:52 +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd +AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC +FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi +1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq +jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ +wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ +WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy +NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC +uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw +IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 +g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP +BSeOE6Fuwg== +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot 2011 O=Atos +# Subject: CN=Atos TrustedRoot 2011 O=Atos +# Label: "Atos TrustedRoot 2011" +# Serial: 6643877497813316402 +# MD5 Fingerprint: ae:b9:c4:32:4b:ac:7f:5d:66:cc:77:94:bb:2a:77:56 +# SHA1 Fingerprint: 2b:b1:f5:3e:55:0c:1d:c5:f1:d4:e6:b7:6a:46:4b:55:06:02:ac:21 +# SHA256 Fingerprint: f3:56:be:a2:44:b7:a9:1e:b3:5d:53:ca:9a:d7:86:4a:ce:01:8e:2d:35:d5:f8:f9:6d:df:68:a6:f4:1a:a4:74 +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UE +AwwVQXRvcyBUcnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQG +EwJERTAeFw0xMTA3MDcxNDU4MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMM +FUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMC +REUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVhTuXbyo7LjvPpvMp +Nb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr54rM +VD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+ +SZFhyBH+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ +4J7sVaE3IqKHBAUsR320HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0L +cp2AMBYHlT8oDv3FdU9T1nSatCQujgKRz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQi +eowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7Rl+lwrrw7GWzbITAPBgNV +HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZbNshMBgG +A1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3 +DQEBCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8j +vZfza1zv7v1Apt+hk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kP +DpFrdRbhIfzYJsdHt6bPWHJxfrrhTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pc +maHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D +lmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv +KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 1 G3" +# Serial: 687049649626669250736271037606554624078720034195 +# MD5 Fingerprint: a4:bc:5b:3f:fe:37:9a:fa:64:f0:e2:fa:05:3d:0b:ab +# SHA1 Fingerprint: 1b:8e:ea:57:96:29:1a:c9:39:ea:b8:0a:81:1a:73:73:c0:93:79:67 +# SHA256 Fingerprint: 8a:86:6f:d1:b2:76:b5:7e:57:8e:92:1c:65:82:8a:2b:ed:58:e9:f2:f2:88:05:41:34:b7:f1:f4:bf:c9:cc:74 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00 +MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakEPBtV +wedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWe +rNrwU8lmPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF341 +68Xfuw6cwI2H44g4hWf6Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh +4Pw5qlPafX7PGglTvF0FBM+hSo+LdoINofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXp +UhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/lg6AnhF4EwfWQvTA9xO+o +abw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV7qJZjqlc +3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/G +KubX9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSt +hfbZxbGL0eUQMk1fiyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KO +Tk0k+17kBL5yG6YnLUlamXrXXAkgt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOt +zCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZIhvcNAQELBQAD +ggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC +MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2 +cDMT/uFPpiN3GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUN +qXsCHKnQO18LwIE6PWThv6ctTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5 +YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP+V04ikkwj+3x6xn0dxoxGE1nVGwv +b2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh3jRJjehZrJ3ydlo2 +8hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fawx/k +NSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNj +ZgKAvQU6O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhp +q1467HxpvMc7hU6eFbm0FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFt +nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 2 G3" +# Serial: 390156079458959257446133169266079962026824725800 +# MD5 Fingerprint: af:0c:86:6e:bf:40:2d:7f:0b:3e:12:50:ba:12:3d:06 +# SHA1 Fingerprint: 09:3c:61:f3:8b:8b:dc:7d:55:df:75:38:02:05:00:e1:25:f5:c8:36 +# SHA256 Fingerprint: 8f:e4:fb:0a:f9:3a:4d:0d:67:db:0b:eb:b2:3e:37:c7:1b:f3:25:dc:bc:dd:24:0e:a0:4d:af:58:b4:7e:18:40 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00 +MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFhZiFf +qq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMW +n4rjyduYNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ym +c5GQYaYDFCDy54ejiK2toIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+ +O7q414AB+6XrW7PFXmAqMaCvN+ggOp+oMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1 +o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+lV0POKa2Mq1W/xPtbAd0j +IaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZoL1NesNKq +IcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz +8eQQsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43eh +vNURG3YBZwjgQQvD6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l +7ZizlWNof/k19N+IxWA1ksB8aRxhlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALG +cC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZIhvcNAQELBQAD +ggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 +AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RC +roijQ1h5fq7KpVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0Ga +W/ZZGYjeVYg3UQt4XAoeo0L9x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4n +lv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgzdWqTHBLmYF5vHX/JHyPLhGGfHoJE ++V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6XU/IyAgkwo1jwDQHV +csaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+NwmNtd +dbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNg +KCLjsZWDzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeM +HVOyToV7BjjHLPj4sHKNJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4 +WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 3 G3" +# Serial: 268090761170461462463995952157327242137089239581 +# MD5 Fingerprint: df:7d:b9:ad:54:6f:68:a1:df:89:57:03:97:43:b0:d7 +# SHA1 Fingerprint: 48:12:bd:92:3c:a8:c4:39:06:e7:30:6d:27:96:e6:a4:cf:22:2e:7d +# SHA256 Fingerprint: 88:ef:81:de:20:2e:b0:18:45:2e:43:f8:64:72:5c:ea:5f:bd:1f:c2:d9:d2:05:73:07:09:c5:d8:b8:69:0f:46 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00 +MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286IxSR +/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNu +FoM7pmRLMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXR +U7Ox7sWTaYI+FrUoRqHe6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+c +ra1AdHkrAj80//ogaX3T7mH1urPnMNA3I4ZyYUUpSFlob3emLoG+B01vr87ERROR +FHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3UVDmrJqMz6nWB2i3ND0/k +A9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f75li59wzw +eyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634Ryl +sSqiMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBp +VzgeAVuNVejH38DMdyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0Q +A4XN8f+MFrXBsj6IbGB/kE+V9/YtrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ +ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZIhvcNAQELBQAD +ggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px +KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnI +FUBhynLWcKzSt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5Wvv +oxXqA/4Ti2Tk08HS6IT7SdEQTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFg +u/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9DuDcpmvJRPpq3t/O5jrFc/ZSXPsoaP +0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGibIh6BJpsQBJFxwAYf +3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmDhPbl +8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+ +DhcI00iX0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HN +PlopNLk9hM6xZdRZkZFWdSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ +ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0 +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root G2" +# Serial: 15385348160840213938643033620894905419 +# MD5 Fingerprint: 92:38:b9:f8:63:24:82:65:2c:57:33:e6:fe:81:8f:9d +# SHA1 Fingerprint: a1:4b:48:d9:43:ee:0a:0e:40:90:4f:3c:e0:a4:c0:91:93:51:5d:3f +# SHA256 Fingerprint: 7d:05:eb:b6:82:33:9f:8c:94:51:ee:09:4e:eb:fe:fa:79:53:a1:14:ed:b2:f4:49:49:45:2f:ab:7d:2f:c1:85 +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSA +n61UQbVH35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4Htecc +biJVMWWXvdMX0h5i89vqbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9Hp +EgjAALAcKxHad3A2m67OeYfcgnDmCXRwVWmvo2ifv922ebPynXApVfSr/5Vh88lA +bx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OPYLfykqGxvYmJHzDNw6Yu +YjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+RnlTGNAgMB +AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQW +BBTOw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPI +QW5pJ6d1Ee88hjZv0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I +0jJmwYrA8y8678Dj1JGG0VDjA9tzd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4Gni +lmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAWhsI6yLETcDbYz+70CjTVW0z9 +B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0MjomZmWzwPDCv +ON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo +IhNzbM8m9Yop5w== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root G3" +# Serial: 15459312981008553731928384953135426796 +# MD5 Fingerprint: 7c:7f:65:31:0c:81:df:8d:ba:3e:99:e2:5c:ad:6e:fb +# SHA1 Fingerprint: f5:17:a2:4f:9a:48:c6:c9:f8:a2:00:26:9f:dc:0f:48:2c:ab:30:89 +# SHA256 Fingerprint: 7e:37:cb:8b:4c:47:09:0c:ab:36:55:1b:a6:f4:5d:b8:40:68:0f:ba:16:6a:95:2d:b1:00:71:7f:43:05:3f:c2 +-----BEGIN CERTIFICATE----- +MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3Qg +RzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJf +Zn4f5dwbRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17Q +RSAPWXYQ1qAk8C3eNvJsKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgFUaFNN6KDec6NHSrkhDAKBggqhkjOPQQD +AwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5FyYZ5eEJJZVrmDxxDnOOlY +JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv +6pZjamVFkpUBtA== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G2" +# Serial: 4293743540046975378534879503202253541 +# MD5 Fingerprint: e4:a6:8a:c8:54:ac:52:42:46:0a:fd:72:48:1b:2a:44 +# SHA1 Fingerprint: df:3c:24:f9:bf:d6:66:76:1b:26:80:73:fe:06:d1:cc:8d:4f:82:a4 +# SHA256 Fingerprint: cb:3c:cb:b7:60:31:e5:e0:13:8f:8d:d3:9a:23:f9:de:47:ff:c3:5e:43:c1:14:4c:ea:27:d4:6a:5a:b1:cb:5f +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH +MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI +2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx +1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ +q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz +tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ +vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV +5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY +1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 +NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG +Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 +8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe +pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G3" +# Serial: 7089244469030293291760083333884364146 +# MD5 Fingerprint: f5:5d:a4:50:a5:fb:28:7e:1e:0f:0d:cc:96:57:56:ca +# SHA1 Fingerprint: 7e:04:de:89:6a:3e:66:6d:00:e6:87:d3:3f:fa:d9:3b:e8:3d:34:9e +# SHA256 Fingerprint: 31:ad:66:48:f8:10:41:38:c7:38:f3:9e:a4:32:01:33:39:3e:3a:18:cc:02:29:6e:f9:7c:2a:c9:ef:67:31:d0 +-----BEGIN CERTIFICATE----- +MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe +Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw +EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x +IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF +K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG +fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO +Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd +BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx +AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/ +oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8 +sycX +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Trusted Root G4" +# Serial: 7451500558977370777930084869016614236 +# MD5 Fingerprint: 78:f2:fc:aa:60:1f:2f:b4:eb:c9:37:ba:53:2e:75:49 +# SHA1 Fingerprint: dd:fb:16:cd:49:31:c9:73:a2:03:7d:3f:c8:3a:4d:7d:77:5d:05:e4 +# SHA256 Fingerprint: 55:2f:7b:dc:f1:a7:af:9e:6c:e6:72:01:7f:4f:12:ab:f7:72:40:c7:8e:76:1a:c2:03:d1:d9:d2:0a:c8:99:88 +-----BEGIN CERTIFICATE----- +MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg +RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y +ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If +xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV +ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO +DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ +jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/ +CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi +EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM +fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY +uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK +chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t +9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD +ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2 +SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd ++SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc +fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa +sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N +cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N +0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie +4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI +r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1 +/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm +gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+ +-----END CERTIFICATE----- + +# Issuer: CN=COMODO RSA Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO RSA Certification Authority O=COMODO CA Limited +# Label: "COMODO RSA Certification Authority" +# Serial: 101909084537582093308941363524873193117 +# MD5 Fingerprint: 1b:31:b0:71:40:36:cc:14:36:91:ad:c4:3e:fd:ec:18 +# SHA1 Fingerprint: af:e5:d2:44:a8:d1:19:42:30:ff:47:9f:e2:f8:97:bb:cd:7a:8c:b4 +# SHA256 Fingerprint: 52:f0:e1:c4:e5:8e:c6:29:29:1b:60:31:7f:07:46:71:b8:5d:7e:a8:0d:5b:07:27:34:63:53:4b:32:b4:02:34 +-----BEGIN CERTIFICATE----- +MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB +hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV +BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5 +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT +EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR +6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X +pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC +9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV +/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf +Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z ++pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w +qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah +SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC +u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf +Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq +crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E +FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB +/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl +wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM +4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV +2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna +FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ +CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK +boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke +jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL +S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb +QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl +0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB +NVOFBkpdn627G190 +-----END CERTIFICATE----- + +# Issuer: CN=USERTrust RSA Certification Authority O=The USERTRUST Network +# Subject: CN=USERTrust RSA Certification Authority O=The USERTRUST Network +# Label: "USERTrust RSA Certification Authority" +# Serial: 2645093764781058787591871645665788717 +# MD5 Fingerprint: 1b:fe:69:d1:91:b7:19:33:a3:72:a8:0f:e1:55:e5:b5 +# SHA1 Fingerprint: 2b:8f:1b:57:33:0d:bb:a2:d0:7a:6c:51:f7:0e:e9:0d:da:b9:ad:8e +# SHA256 Fingerprint: e7:93:c9:b0:2f:d8:aa:13:e2:1c:31:22:8a:cc:b0:81:19:64:3b:74:9c:89:89:64:b1:74:6d:46:c3:d4:cb:d2 +-----BEGIN CERTIFICATE----- +MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB +iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl +cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV +BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw +MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV +BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B +3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY +tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/ +Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2 +VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT +79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6 +c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT +Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l +c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee +UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE +Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd +BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF +Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO +VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3 +ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs +8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR +iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze +Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ +XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/ +qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB +VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB +L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG +jjxDah2nGN59PRbxYvnKkKj9 +-----END CERTIFICATE----- + +# Issuer: CN=USERTrust ECC Certification Authority O=The USERTRUST Network +# Subject: CN=USERTrust ECC Certification Authority O=The USERTRUST Network +# Label: "USERTrust ECC Certification Authority" +# Serial: 123013823720199481456569720443997572134 +# MD5 Fingerprint: fa:68:bc:d9:b5:7f:ad:fd:c9:1d:06:83:28:cc:24:c1 +# SHA1 Fingerprint: d1:cb:ca:5d:b2:d5:2a:7f:69:3b:67:4d:e5:f0:5a:1d:0c:95:7d:f0 +# SHA256 Fingerprint: 4f:f4:60:d5:4b:9c:86:da:bf:bc:fc:57:12:e0:40:0d:2b:ed:3f:bc:4d:4f:bd:aa:86:e0:6a:dc:d2:a9:ad:7a +-----BEGIN CERTIFICATE----- +MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl +eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT +JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMjAx +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgT +Ck5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUg +VVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqflo +I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng +o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0G +A1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBBHU6+4WMB +zzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbW +RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 +# Label: "GlobalSign ECC Root CA - R5" +# Serial: 32785792099990507226680698011560947931244 +# MD5 Fingerprint: 9f:ad:3b:1c:02:1e:8a:ba:17:74:38:81:0c:a2:bc:08 +# SHA1 Fingerprint: 1f:24:c6:30:cd:a4:18:ef:20:69:ff:ad:4f:dd:5f:46:3a:1b:69:aa +# SHA256 Fingerprint: 17:9f:bc:14:8a:3d:d0:0f:d2:4e:a1:34:58:cc:43:bf:a7:f5:9c:81:82:d7:83:a5:13:f6:eb:ec:10:0c:89:24 +-----BEGIN CERTIFICATE----- +MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEk +MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpH +bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX +DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD +QSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6SFkc +8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8ke +hOvRnkmSh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYI +KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg +515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7yFz9SO8NdCKoCOJuxUnO +xwy8p2Fp8fc74SrL+SvzZpA3 +-----END CERTIFICATE----- + +# Issuer: CN=IdenTrust Commercial Root CA 1 O=IdenTrust +# Subject: CN=IdenTrust Commercial Root CA 1 O=IdenTrust +# Label: "IdenTrust Commercial Root CA 1" +# Serial: 13298821034946342390520003877796839426 +# MD5 Fingerprint: b3:3e:77:73:75:ee:a0:d3:e3:7e:49:63:49:59:bb:c7 +# SHA1 Fingerprint: df:71:7e:aa:4a:d9:4e:c9:55:84:99:60:2d:48:de:5f:bc:f0:3a:25 +# SHA256 Fingerprint: 5d:56:49:9b:e4:d2:e0:8b:cf:ca:d0:8a:3e:38:72:3d:50:50:3b:de:70:69:48:e4:2f:55:60:30:19:e5:28:ae +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBK +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVu +VHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQw +MTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScw +JQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ldhNlT +3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU ++ehcCuz/mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gp +S0l4PJNgiCL8mdo2yMKi1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1 +bVoE/c40yiTcdCMbXTMTEl3EASX2MN0CXZ/g1Ue9tOsbobtJSdifWwLziuQkkORi +T0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl3ZBWzvurpWCdxJ35UrCL +vYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzyNeVJSQjK +Vsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZK +dHzVWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHT +c+XvvqDtMwt0viAgxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hv +l7yTmvmcEpB4eoCHFddydJxVdHixuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5N +iGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZIhvcNAQELBQAD +ggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH +6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwt +LRvM7Kqas6pgghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93 +nAbowacYXVKV7cndJZ5t+qntozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3 ++wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmVYjzlVYA211QC//G5Xc7UI2/YRYRK +W2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUXfeu+h1sXIFRRk0pT +AwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/rokTLq +l1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG +4iZZRHUe2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZ +mUlO+KWA2yUPHGNiiskzZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A +7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H +-----END CERTIFICATE----- + +# Issuer: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust +# Subject: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust +# Label: "IdenTrust Public Sector Root CA 1" +# Serial: 13298821034946342390521976156843933698 +# MD5 Fingerprint: 37:06:a5:b0:fc:89:9d:ba:f4:6b:8c:1a:64:cd:d5:ba +# SHA1 Fingerprint: ba:29:41:60:77:98:3f:f4:f3:ef:f2:31:05:3b:2e:ea:6d:4d:45:fd +# SHA256 Fingerprint: 30:d0:89:5a:9a:44:8a:26:20:91:63:55:22:d1:f5:20:10:b5:86:7a:ca:e1:2c:78:ef:95:8f:d4:f4:38:9f:2f +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBN +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVu +VHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcN +MzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0 +MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTyP4o7 +ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGy +RBb06tD6Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlS +bdsHyo+1W/CD80/HLaXIrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF +/YTLNiCBWS2ab21ISGHKTN9T0a9SvESfqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R +3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoSmJxZZoY+rfGwyj4GD3vw +EUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFnol57plzy +9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9V +GxyhLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ +2fjXctscvG29ZV/viDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsV +WaFHVCkugyhfHMKiq3IXAAaOReyL4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gD +W/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMwDQYJKoZIhvcN +AQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj +t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHV +DRDtfULAj+7AmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9 +TaDKQGXSc3z1i9kKlT/YPyNtGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8G +lwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFtm6/n6J91eEyrRjuazr8FGF1NFTwW +mhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMxNRF4eKLg6TCMf4Df +WN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4Mhn5 ++bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJ +tshquDDIajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhA +GaQdp/lLQzfcaFpPz+vCZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv +8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c +-----END CERTIFICATE----- + +# Issuer: CN=CFCA EV ROOT O=China Financial Certification Authority +# Subject: CN=CFCA EV ROOT O=China Financial Certification Authority +# Label: "CFCA EV ROOT" +# Serial: 407555286 +# MD5 Fingerprint: 74:e1:b6:ed:26:7a:7a:44:30:33:94:ab:7b:27:81:30 +# SHA1 Fingerprint: e2:b8:29:4b:55:84:ab:6b:58:c2:90:46:6c:ac:3f:b8:39:8f:84:83 +# SHA256 Fingerprint: 5c:c3:d7:8e:4e:1d:5e:45:54:7a:04:e6:87:3e:64:f9:0c:f9:53:6d:1c:cc:2e:f8:00:f3:55:c4:c5:fd:70:fd +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD +TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y +aXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkx +MjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j +aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJP +T1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnVBU03 +sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpL +TIpTUnrD7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5 +/ZOkVIBMUtRSqy5J35DNuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp +7hZZLDRJGqgG16iI0gNyejLi6mhNbiyWZXvKWfry4t3uMCz7zEasxGPrb382KzRz +EpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7xzbh72fROdOXW3NiGUgt +hxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9fpy25IGvP +a931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqot +aK8KgWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNg +TnYGmE69g60dWIolhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfV +PKPtl8MeNPo4+QgO48BdK4PRVmrJtqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hv +cWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAfBgNVHSMEGDAWgBTj/i39KNAL +tbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd +BgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB +ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObT +ej/tUxPQ4i9qecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdL +jOztUmCypAbqTuv0axn96/Ua4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBS +ESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sGE5uPhnEFtC+NiWYzKXZUmhH4J/qy +P5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfXBDrDMlI1Dlb4pd19 +xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjnaH9d +Ci77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN +5mydLIhyPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe +/v5WOaHIz16eGWRGENoXkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+Z +AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ +5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su +-----END CERTIFICATE----- + +# Issuer: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed +# Subject: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed +# Label: "OISTE WISeKey Global Root GB CA" +# Serial: 157768595616588414422159278966750757568 +# MD5 Fingerprint: a4:eb:b9:61:28:2e:b7:2f:98:b0:35:26:90:99:51:1d +# SHA1 Fingerprint: 0f:f9:40:76:18:d3:d7:6a:4b:98:f0:a8:35:9e:0c:fd:27:ac:cc:ed +# SHA256 Fingerprint: 6b:9c:08:e8:6e:b0:f7:67:cf:ad:65:cd:98:b6:21:49:e5:49:4a:67:f5:84:5e:7b:d1:ed:01:9f:27:b8:6b:d6 +-----BEGIN CERTIFICATE----- +MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBt +MQswCQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUg +Rm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9i +YWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAwMzJaFw0zOTEyMDExNTEwMzFaMG0x +CzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBG +b3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh +bCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3 +HEokKtaXscriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGx +WuR51jIjK+FTzJlFXHtPrby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX +1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNk +u7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4oQnc/nSMbsrY9gBQHTC5P +99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvgGUpuuy9r +M2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUB +BAMCAQAwDQYJKoZIhvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrgh +cViXfa43FK8+5/ea4n32cZiZBKpDdHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5 +gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0VQreUGdNZtGn//3ZwLWoo4rO +ZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEuiHZeeevJuQHHf +aPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic +Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= +-----END CERTIFICATE----- + +# Issuer: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. +# Subject: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. +# Label: "SZAFIR ROOT CA2" +# Serial: 357043034767186914217277344587386743377558296292 +# MD5 Fingerprint: 11:64:c1:89:b0:24:b1:8c:b1:07:7e:89:9e:51:9e:99 +# SHA1 Fingerprint: e2:52:fa:95:3f:ed:db:24:60:bd:6e:28:f3:9c:cc:cf:5e:b3:3f:de +# SHA256 Fingerprint: a1:33:9d:33:28:1a:0b:56:e5:57:d3:d3:2b:1c:e7:f9:36:7e:b0:94:bd:5f:a7:2a:7e:50:04:c8:de:d7:ca:fe +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQEL +BQAwUTELMAkGA1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6 +ZW5pb3dhIFMuQS4xGDAWBgNVBAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkw +NzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJBgNVBAYTAlBMMSgwJgYDVQQKDB9L +cmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYDVQQDDA9TWkFGSVIg +Uk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5QqEvN +QLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT +3PSQ1hNKDJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw +3gAeqDRHu5rr/gsUvTaE2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr6 +3fE9biCloBK0TXC5ztdyO4mTp4CEHCdJckm1/zuVnsHMyAHs6A6KCpbns6aH5db5 +BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwiieDhZNRnvDF5YTy7ykHN +XGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsF +AAOCAQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw +8PRBEew/R40/cof5O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOG +nXkZ7/e7DDWQw4rtTw/1zBLZpD67oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCP +oky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul4+vJhaAlIDf7js4MNIThPIGy +d05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6+/NNIxuZMzSg +LvWpCz/UXeHPhJ/iGcJfitYgHuNztw== +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Network CA 2" +# Serial: 44979900017204383099463764357512596969 +# MD5 Fingerprint: 6d:46:9e:d9:25:6d:08:23:5b:5e:74:7d:1e:27:db:f2 +# SHA1 Fingerprint: d3:dd:48:3e:2b:bf:4c:05:e8:af:10:f5:fa:76:26:cf:d3:dc:30:92 +# SHA256 Fingerprint: b6:76:f2:ed:da:e8:77:5c:d3:6c:b0:f6:3c:d1:d4:60:39:61:f4:9e:62:65:ba:01:3a:2f:03:07:b6:d0:b8:04 +-----BEGIN CERTIFICATE----- +MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCB +gDELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu +QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIG +A1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQSAyMCIYDzIwMTExMDA2MDgz +OTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQTDEiMCAGA1UEChMZ +VW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3 +b3JrIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWA +DGSdhhuWZGc/IjoedQF97/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn +0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+oCgCXhVqqndwpyeI1B+twTUrWwbNWuKFB +OJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40bRr5HMNUuctHFY9rnY3lE +fktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2puTRZCr+E +Sv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1m +o130GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02i +sx7QBlrd9pPPV3WZ9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOW +OZV7bIBaTxNyxtd9KXpEulKkKtVBRgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgez +Tv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pyehizKV/Ma5ciSixqClnrDvFAS +adgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vMBhBgu4M1t15n +3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQ +F/xlhMcQSZDe28cmk4gmb3DWAl45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTf +CVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuAL55MYIR4PSFk1vtBHxgP58l1cb29 +XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMoclm2q8KMZiYcdywm +djWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tMpkT/ +WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jb +AoJnwTnbw3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksq +P/ujmv5zMnHCnsZy4YpoJ/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Ko +b7a6bINDd82Kkhehnlt4Fj1F4jNy3eFmypnTycUm/Q1oBEauttmbjL4ZvrHG8hnj +XALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLXis7VmFxWlgPF7ncGNf/P +5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7zAYspsbi +DrW5viSP +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions RootCA 2015" +# Serial: 0 +# MD5 Fingerprint: ca:ff:e2:db:03:d9:cb:4b:e9:0f:ad:84:fd:7b:18:ce +# SHA1 Fingerprint: 01:0c:06:95:a6:98:19:14:ff:bf:5f:c6:b0:b6:95:ea:29:e9:12:a6 +# SHA256 Fingerprint: a0:40:92:9a:02:ce:53:b4:ac:f4:f2:ff:c6:98:1c:e4:49:6f:75:5e:6d:45:fe:0b:2a:69:2b:cd:52:52:3f:36 +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1Ix +DzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5k +IFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMT +N0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9v +dENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAxMTIxWjCBpjELMAkG +A1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNh +ZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkx +QDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 +dGlvbnMgUm9vdENBIDIwMTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQDC+Kk/G4n8PDwEXT2QNrCROnk8ZlrvbTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA +4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+ehiGsxr/CL0BgzuNtFajT0 +AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+6PAQZe10 +4S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06C +ojXdFPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV +9Cz82XBST3i4vTwri5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrD +gfgXy5I2XdGj2HUb4Ysn6npIQf1FGQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6 +Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2fu/Z8VFRfS0myGlZYeCsargq +NhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9muiNX6hME6wGko +LfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc +Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVd +ctA4GGqd83EkVAswDQYJKoZIhvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0I +XtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+D1hYc2Ryx+hFjtyp8iY/xnmMsVMI +M4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrMd/K4kPFox/la/vot +9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+yd+2V +Z5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/ea +j8GsGsVn82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnh +X9izjFk0WaSrT2y7HxjbdavYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQ +l033DlZdwJVqwjbDG2jJ9SrcR5q+ss7FJej6A7na+RZukYT1HCjI/CbM1xyQVqdf +bzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVtJ94Cj8rDtSvK6evIIVM4 +pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGaJI7ZjnHK +e7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0 +vm9qp/UsQu0yrbYhnr68 +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions ECC RootCA 2015" +# Serial: 0 +# MD5 Fingerprint: 81:e5:b4:17:eb:c2:f5:e1:4b:0d:41:7b:49:92:fe:ef +# SHA1 Fingerprint: 9f:f1:71:8d:92:d5:9a:f3:7d:74:97:b4:bc:6f:84:68:0b:ba:b6:66 +# SHA256 Fingerprint: 44:b5:45:aa:8a:25:e6:5a:73:ca:15:dc:27:fc:36:d2:4c:1c:b9:95:3a:06:65:39:b1:15:82:dc:48:7b:48:33 +-----BEGIN CERTIFICATE----- +MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzAN +BgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl +c2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hl +bGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgRUNDIFJv +b3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEwMzcxMlowgaoxCzAJ +BgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmljIEFj +YWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5 +MUQwQgYDVQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0 +dXRpb25zIEVDQyBSb290Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKg +QehLgoRc4vgxEZmGZE4JJS+dQS8KrjVPdJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJa +jq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoKVlp8aQuqgAkkbH7BRqNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFLQi +C4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaep +lSTAGiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7Sof +TUwJCA3sS61kFyjndc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR +-----END CERTIFICATE----- + +# Issuer: CN=ISRG Root X1 O=Internet Security Research Group +# Subject: CN=ISRG Root X1 O=Internet Security Research Group +# Label: "ISRG Root X1" +# Serial: 172886928669790476064670243504169061120 +# MD5 Fingerprint: 0c:d2:f9:e0:da:17:73:e9:ed:86:4d:a5:e3:70:e7:4e +# SHA1 Fingerprint: ca:bd:2a:79:a1:07:6a:31:f2:1d:25:36:35:cb:03:9d:43:29:a5:e8 +# SHA256 Fingerprint: 96:bc:ec:06:26:49:76:f3:74:60:77:9a:cf:28:c5:a7:cf:e8:a3:c0:aa:e1:1a:8f:fc:ee:05:c0:bd:df:08:c6 +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 +WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu +ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc +h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ +0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U +A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW +T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH +B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC +B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv +KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn +OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn +jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw +qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI +rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq +hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ +3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK +NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 +ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur +TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC +jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc +oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq +4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA +mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d +emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE----- + +# Issuer: O=FNMT-RCM OU=AC RAIZ FNMT-RCM +# Subject: O=FNMT-RCM OU=AC RAIZ FNMT-RCM +# Label: "AC RAIZ FNMT-RCM" +# Serial: 485876308206448804701554682760554759 +# MD5 Fingerprint: e2:09:04:b4:d3:bd:d1:a0:14:fd:1a:d2:47:c4:57:1d +# SHA1 Fingerprint: ec:50:35:07:b2:15:c4:95:62:19:e2:a8:9a:5b:42:99:2c:4c:2c:20 +# SHA256 Fingerprint: eb:c5:57:0c:29:01:8c:4d:67:b1:aa:12:7b:af:12:f7:03:b4:61:1e:bc:17:b7:da:b5:57:38:94:17:9b:93:fa +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsx +CzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJ +WiBGTk1ULVJDTTAeFw0wODEwMjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJ +BgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBG +Tk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALpxgHpMhm5/ +yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcfqQgf +BBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAz +WHFctPVrbtQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxF +tBDXaEAUwED653cXeuYLj2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z +374jNUUeAlz+taibmSXaXvMiwzn15Cou08YfxGyqxRxqAQVKL9LFwag0Jl1mpdIC +IfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mwWsXmo8RZZUc1g16p6DUL +mbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnTtOmlcYF7 +wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peS +MKGJ47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2 +ZSysV4999AeU14ECll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMet +UqIJ5G+GR4of6ygnXYMgrwTJbFaai0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPd9xf3E6Jobd2Sn9R2gzL+H +YJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3 +LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD +nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1 +RXxlDPiyN8+sD8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYM +LVN0V2Ue1bLdI4E7pWYjJ2cJj+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf +77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrTQfv6MooqtyuGC2mDOL7Nii4LcK2N +JpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW+YJF1DngoABd15jm +fZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7Ixjp +6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp +1txyM/1d8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B +9kiABdcPUXmsEKvU7ANm5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wok +RqEIr9baRRmW1FMdW4R58MD3R++Lj8UGrp1MYp3/RgT408m2ECVAdf4WqslKYIYv +uu8wd+RU4riEmViAqhOLUTpPSPaLtrM= +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 1 O=Amazon +# Subject: CN=Amazon Root CA 1 O=Amazon +# Label: "Amazon Root CA 1" +# Serial: 143266978916655856878034712317230054538369994 +# MD5 Fingerprint: 43:c6:bf:ae:ec:fe:ad:2f:18:c6:88:68:30:fc:c8:e6 +# SHA1 Fingerprint: 8d:a7:f9:65:ec:5e:fc:37:91:0f:1c:6e:59:fd:c1:cc:6a:6e:de:16 +# SHA256 Fingerprint: 8e:cd:e6:88:4f:3d:87:b1:12:5b:a3:1a:c3:fc:b1:3d:70:16:de:7f:57:cc:90:4f:e1:cb:97:c6:ae:98:19:6e +-----BEGIN CERTIFICATE----- +MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF +ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 +b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL +MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv +b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj +ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM +9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw +IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6 +VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L +93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm +jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA +A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI +U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs +N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv +o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU +5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy +rqXRfboQnoZsG4q5WTP468SQvvG5 +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 2 O=Amazon +# Subject: CN=Amazon Root CA 2 O=Amazon +# Label: "Amazon Root CA 2" +# Serial: 143266982885963551818349160658925006970653239 +# MD5 Fingerprint: c8:e5:8d:ce:a8:42:e2:7a:c0:2a:5c:7c:9e:26:bf:66 +# SHA1 Fingerprint: 5a:8c:ef:45:d7:a6:98:59:76:7a:8c:8b:44:96:b5:78:cf:47:4b:1a +# SHA256 Fingerprint: 1b:a5:b2:aa:8c:65:40:1a:82:96:01:18:f8:0b:ec:4f:62:30:4d:83:ce:c4:71:3a:19:c3:9c:01:1e:a4:6d:b4 +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwF +ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 +b24gUm9vdCBDQSAyMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTEL +MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv +b3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK2Wny2cSkxK +gXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4kHbZ +W0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg +1dKmSYXpN+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K +8nu+NQWpEjTj82R0Yiw9AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r +2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvdfLC6HM783k81ds8P+HgfajZRRidhW+me +z/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAExkv8LV/SasrlX6avvDXbR +8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSSbtqDT6Zj +mUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz +7Mt0Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6 ++XUyo05f7O0oYtlNc/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI +0u1ufm8/0i2BWSlmy5A5lREedCf+3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB +Af8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSwDPBMMPQFWAJI/TPlUq9LhONm +UjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oAA7CXDpO8Wqj2 +LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY ++gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kS +k5Nrp+gvU5LEYFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl +7uxMMne0nxrpS10gxdr9HIcWxkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygm +btmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQgj9sAq+uEjonljYE1x2igGOpm/Hl +urR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbWaQbLU8uz/mtBzUF+ +fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoVYh63 +n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE +76KlXIx3KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H +9jVlpNMKVv/1F2Rs76giJUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT +4PsJYGw= +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 3 O=Amazon +# Subject: CN=Amazon Root CA 3 O=Amazon +# Label: "Amazon Root CA 3" +# Serial: 143266986699090766294700635381230934788665930 +# MD5 Fingerprint: a0:d4:ef:0b:f7:b5:d8:49:95:2a:ec:f5:c4:fc:81:87 +# SHA1 Fingerprint: 0d:44:dd:8c:3c:8c:1a:1a:58:75:64:81:e9:0f:2e:2a:ff:b3:d2:6e +# SHA256 Fingerprint: 18:ce:6c:fe:7b:f1:4e:60:b2:e3:47:b8:df:e8:68:cb:31:d0:2e:bb:3a:da:27:15:69:f5:03:43:b4:6d:b3:a4 +-----BEGIN CERTIFICATE----- +MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5 +MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g +Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG +A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg +Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl +ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr +ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr +BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM +YyRIHN8wfdVoOw== +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 4 O=Amazon +# Subject: CN=Amazon Root CA 4 O=Amazon +# Label: "Amazon Root CA 4" +# Serial: 143266989758080763974105200630763877849284878 +# MD5 Fingerprint: 89:bc:27:d5:eb:17:8d:06:6a:69:d5:fd:89:47:b4:cd +# SHA1 Fingerprint: f6:10:84:07:d6:f8:bb:67:98:0c:c2:e2:44:c2:eb:ae:1c:ef:63:be +# SHA256 Fingerprint: e3:5d:28:41:9e:d0:20:25:cf:a6:90:38:cd:62:39:62:45:8d:a5:c6:95:fb:de:a3:c2:2b:0b:fb:25:89:70:92 +-----BEGIN CERTIFICATE----- +MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5 +MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g +Um9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG +A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg +Q0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi +9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk +M6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB +MAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw +CkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW +1KyLa2tJElMzrdfkviT8tQp21KW8EA== +-----END CERTIFICATE----- + +# Issuer: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM +# Subject: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM +# Label: "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" +# Serial: 1 +# MD5 Fingerprint: dc:00:81:dc:69:2f:3e:2f:b0:3b:f6:3d:5a:91:8e:49 +# SHA1 Fingerprint: 31:43:64:9b:ec:ce:27:ec:ed:3a:3f:0b:8f:0d:e4:e8:91:dd:ee:ca +# SHA256 Fingerprint: 46:ed:c3:68:90:46:d5:3a:45:3f:b3:10:4a:b8:0d:ca:ec:65:8b:26:60:ea:16:29:dd:7e:86:79:90:64:87:16 +-----BEGIN CERTIFICATE----- +MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIx +GDAWBgNVBAcTD0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxp +bXNlbCB2ZSBUZWtub2xvamlrIEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0w +KwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24gTWVya2V6aSAtIEthbXUgU00xNjA0 +BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRpZmlrYXNpIC0gU3Vy +dW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYDVQQG +EwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXll +IEJpbGltc2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklU +QUsxLTArBgNVBAsTJEthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBT +TTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11IFNNIFNTTCBLb2sgU2VydGlmaWthc2kg +LSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr3UwM6q7 +a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y86Ij5iySr +LqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INr +N3wcwv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2X +YacQuFWQfw4tJzh03+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/ +iSIzL+aFCr2lqBs23tPcLG07xxO9WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4f +AJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQUZT/HiobGPN08VFw1+DrtUgxH +V8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL +BQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh +AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPf +IPP54+M638yclNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4 +lzwDGrpDxpa5RXI4s6ehlj2Re37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c +8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0jq5Rm+K37DwhuJi1/FwcJsoz7UMCf +lo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= +-----END CERTIFICATE----- + +# Issuer: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. +# Subject: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. +# Label: "GDCA TrustAUTH R5 ROOT" +# Serial: 9009899650740120186 +# MD5 Fingerprint: 63:cc:d9:3d:34:35:5c:6f:53:a3:e2:08:70:48:1f:b4 +# SHA1 Fingerprint: 0f:36:38:5b:81:1a:25:c3:9b:31:4e:83:ca:e9:34:66:70:cc:74:b4 +# SHA256 Fingerprint: bf:ff:8f:d0:44:33:48:7d:6a:8a:a6:0c:1a:29:76:7a:9f:c2:bb:b0:5e:42:0f:71:3a:13:b9:92:89:1d:38:93 +-----BEGIN CERTIFICATE----- +MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UE +BhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ +IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0 +MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVowYjELMAkGA1UEBhMCQ04xMjAwBgNV +BAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8w +HQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJj +Dp6L3TQsAlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBj +TnnEt1u9ol2x8kECK62pOqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+u +KU49tm7srsHwJ5uu4/Ts765/94Y9cnrrpftZTqfrlYwiOXnhLQiPzLyRuEH3FMEj +qcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ9Cy5WmYqsBebnh52nUpm +MUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQxXABZG12 +ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloP +zgsMR6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3Gk +L30SgLdTMEZeS1SZD2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeC +jGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4oR24qoAATILnsn8JuLwwoC8N9VKejveSswoA +HQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx9hoh49pwBiFYFIeFd3mqgnkC +AwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlRMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg +p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZm +DRd9FBUb1Ov9H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5 +COmSdI31R9KrO9b7eGZONn356ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ry +L3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd+PwyvzeG5LuOmCd+uh8W4XAR8gPf +JWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQHtZa37dG/OaG+svg +IHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBDF8Io +2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV +09tL7ECQ8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQ +XR4EzzffHqhmsYzmIGrv/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrq +T8p+ck0LcIymSLumoRT2+1hEmRSuqguTaaApJUqlyyvdimYHFngVV3Eb7PVHhPOe +MTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com Root Certification Authority RSA O=SSL Corporation +# Subject: CN=SSL.com Root Certification Authority RSA O=SSL Corporation +# Label: "SSL.com Root Certification Authority RSA" +# Serial: 8875640296558310041 +# MD5 Fingerprint: 86:69:12:c0:70:f1:ec:ac:ac:c2:d5:bc:a5:5b:a1:29 +# SHA1 Fingerprint: b7:ab:33:08:d1:ea:44:77:ba:14:80:12:5a:6f:bd:a9:36:49:0c:bb +# SHA256 Fingerprint: 85:66:6a:56:2e:e0:be:5c:e9:25:c1:d8:89:0a:6f:76:a8:7e:c1:6d:4d:7d:5f:29:ea:74:19:cf:20:12:3b:69 +-----BEGIN CERTIFICATE----- +MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE +BhMCVVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQK +DA9TU0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYwMjEyMTczOTM5WhcNNDEwMjEyMTcz +OTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv +dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv +bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2R +xFdHaxh3a3by/ZPkPQ/CFp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aX +qhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcC +C52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/geoeOy3ZExqysdBP+lSgQ3 +6YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkpk8zruFvh +/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrF +YD3ZfBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93E +JNyAKoFBbZQ+yODJgUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVc +US4cK38acijnALXRdMbX5J+tB5O2UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8 +ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi81xtZPCvM8hnIk2snYxnP/Okm ++Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4sbE6x/c+cCbqi +M+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV +HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4G +A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGV +cpNxJK1ok1iOMq8bs3AD/CUrdIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBc +Hadm47GUBwwyOabqG7B52B2ccETjit3E+ZUfijhDPwGFpUenPUayvOUiaPd7nNgs +PgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAslu1OJD7OAUN5F7kR/ +q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjqerQ0 +cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jr +a6x+3uxjMxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90I +H37hVZkLId6Tngr75qNJvTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/Y +K9f1JmzJBjSWFupwWRoyeXkLtoh/D1JIPb9s2KJELtFOt3JY04kTlf5Eq/jXixtu +nLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406ywKBjYZC6VWg3dGq2ktuf +oYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NIWuuA8ShY +Ic2wBlX7Jz9TkHCpBB5XJ7k= +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com Root Certification Authority ECC O=SSL Corporation +# Subject: CN=SSL.com Root Certification Authority ECC O=SSL Corporation +# Label: "SSL.com Root Certification Authority ECC" +# Serial: 8495723813297216424 +# MD5 Fingerprint: 2e:da:e4:39:7f:9c:8f:37:d1:70:9f:26:17:51:3a:8e +# SHA1 Fingerprint: c3:19:7c:39:24:e6:54:af:1b:c4:ab:20:95:7a:e2:c3:0e:13:02:6a +# SHA256 Fingerprint: 34:17:bb:06:cc:60:07:da:1b:96:1c:92:0b:8a:b4:ce:3f:ad:82:0e:4a:a3:0b:9a:cb:c4:a7:4e:bd:ce:bc:65 +-----BEGIN CERTIFICATE----- +MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMC +VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T +U0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNDAzWhcNNDEwMjEyMTgxNDAz +WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0 +b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNvbSBS +b290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI +7Z4INcgn64mMU1jrYor+8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPg +CemB+vNH06NjMGEwHQYDVR0OBBYEFILRhXMw5zUE044CkvvlpNHEIejNMA8GA1Ud +EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTTjgKS++Wk0cQh6M0wDgYD +VR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCWe+0F+S8T +kdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+ +gA0z5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation +# Subject: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation +# Label: "SSL.com EV Root Certification Authority RSA R2" +# Serial: 6248227494352943350 +# MD5 Fingerprint: e1:1e:31:58:1a:ae:54:53:02:f6:17:6a:11:7b:4d:95 +# SHA1 Fingerprint: 74:3a:f0:52:9b:d0:32:a0:f4:4a:83:cd:d4:ba:a9:7b:7c:2e:c4:9a +# SHA256 Fingerprint: 2e:7b:f1:6c:c2:24:85:a7:bb:e2:aa:86:96:75:07:61:b0:ae:39:be:3b:2f:e9:d0:cc:6d:4e:f7:34:91:42:5c +-----BEGIN CERTIFICATE----- +MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNV +BAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UE +CgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMB4XDTE3MDUzMTE4MTQzN1oXDTQy +MDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4G +A1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQD +DC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvq +M0fNTPl9fb69LT3w23jhhqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssuf +OePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7wcXHswxzpY6IXFJ3vG2fThVUCAtZJycxa +4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTOZw+oz12WGQvE43LrrdF9 +HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+B6KjBSYR +aZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcA +b9ZhCBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQ +Gp8hLH94t2S42Oim9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQV +PWKchjgGAGYS5Fl2WlPAApiiECtoRHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMO +pgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+SlmJuwgUHfbSguPvuUCYHBBXtSu +UDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48+qvWBkofZ6aY +MBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV +HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa4 +9QaAJadz20ZpqJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBW +s47LCp1Jjr+kxJG7ZhcFUZh1++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5 +Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nxY/hoLVUE0fKNsKTPvDxeH3jnpaAg +cLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2GguDKBAdRUNf/ktUM +79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDzOFSz +/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXt +ll9ldDz7CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEm +Kf7GUmG6sXP/wwyc5WxqlD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKK +QbNmC1r7fSOl8hqw/96bg5Qu0T/fkreRrwU7ZcegbLHNYhLDkBvjJc40vG93drEQ +w/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1hlMYegouCRw2n5H9gooi +S9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX9hwJ1C07 +mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation +# Subject: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation +# Label: "SSL.com EV Root Certification Authority ECC" +# Serial: 3182246526754555285 +# MD5 Fingerprint: 59:53:22:65:83:42:01:54:c0:ce:42:b9:5a:7c:f2:90 +# SHA1 Fingerprint: 4c:dd:51:a3:d1:f5:20:32:14:b0:c6:c5:32:23:03:91:c7:46:42:6d +# SHA256 Fingerprint: 22:a2:c1:f7:bd:ed:70:4c:c1:e7:01:b5:f4:08:c3:10:88:0f:e9:56:b5:de:2a:4a:44:f9:9c:87:3a:25:a7:c8 +-----BEGIN CERTIFICATE----- +MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMC +VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T +U0wgQ29ycG9yYXRpb24xNDAyBgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNTIzWhcNNDEwMjEyMTgx +NTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv +dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NMLmNv +bSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49 +AgEGBSuBBAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMA +VIbc/R/fALhBYlzccBYy3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1Kthku +WnBaBu2+8KGwytAJKaNjMGEwHQYDVR0OBBYEFFvKXuXe0oGqzagtZFG22XKbl+ZP +MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe5d7SgarNqC1kUbbZcpuX +5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJN+vp1RPZ +ytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZg +h5Mmm7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R6 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R6 +# Label: "GlobalSign Root CA - R6" +# Serial: 1417766617973444989252670301619537 +# MD5 Fingerprint: 4f:dd:07:e4:d4:22:64:39:1e:0c:37:42:ea:d1:c6:ae +# SHA1 Fingerprint: 80:94:64:0e:b5:a7:a1:ca:11:9c:1f:dd:d5:9f:81:02:63:a7:fb:d1 +# SHA256 Fingerprint: 2c:ab:ea:fe:37:d0:6c:a2:2a:ba:73:91:c0:03:3d:25:98:29:52:c4:53:64:73:49:76:3a:3a:b5:ad:6c:cf:69 +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEg +MB4GA1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2Jh +bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQx +MjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSNjET +MBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQssgrRI +xutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1k +ZguSgMpE3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxD +aNc9PIrFsmbVkJq3MQbFvuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJw +LnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqMPKq0pPbzlUoSB239jLKJz9CgYXfIWHSw +1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+azayOeSsJDa38O+2HBNX +k7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05OWgtH8wY2 +SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/h +bguyCLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4n +WUx2OVvq+aWh2IMP0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpY +rZxCRXluDocZXFSxZba/jJvcE+kNb7gu3GduyYsRtYQUigAZcIN5kZeR1Bonvzce +MgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNVHSMEGDAWgBSu +bAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN +nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGt +Ixg93eFyRJa0lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr61 +55wsTLxDKZmOMNOsIeDjHfrYBzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLj +vUYAGm0CuiVdjaExUd1URhxN25mW7xocBFymFe944Hn+Xds+qkxV/ZoVqW/hpvvf +cDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr3TsTjxKM4kEaSHpz +oHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB10jZp +nOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfs +pA9MRf/TuTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+v +JJUEeKgDu+6B5dpffItKoZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R +8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+tJDfLRVpOoERIyNiwmcUVhAn21klJwGW4 +5hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA= +-----END CERTIFICATE----- + +# Issuer: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed +# Subject: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed +# Label: "OISTE WISeKey Global Root GC CA" +# Serial: 44084345621038548146064804565436152554 +# MD5 Fingerprint: a9:d6:b9:2d:2f:93:64:f8:a5:69:ca:91:e9:68:07:23 +# SHA1 Fingerprint: e0:11:84:5e:34:de:be:88:81:b9:9c:f6:16:26:d1:96:1f:c3:b9:31 +# SHA256 Fingerprint: 85:60:f9:1c:36:24:da:ba:95:70:b5:fe:a0:db:e3:6f:f1:1a:83:23:be:94:86:85:4f:b3:f3:4a:55:71:19:8d +-----BEGIN CERTIFICATE----- +MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQsw +CQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91 +bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwg +Um9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRaFw00MjA1MDkwOTU4MzNaMG0xCzAJ +BgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBGb3Vu +ZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2JhbCBS +b290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4ni +eUqjFqdrVCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4W +p2OQ0jnUsYd4XxiWD1AbNTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7T +rYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0EAwMDaAAwZQIwJsdpW9zV +57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtkAjEA2zQg +Mgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 +-----END CERTIFICATE----- + +# Issuer: CN=UCA Global G2 Root O=UniTrust +# Subject: CN=UCA Global G2 Root O=UniTrust +# Label: "UCA Global G2 Root" +# Serial: 124779693093741543919145257850076631279 +# MD5 Fingerprint: 80:fe:f0:c4:4a:f0:5c:62:32:9f:1c:ba:78:a9:50:f8 +# SHA1 Fingerprint: 28:f9:78:16:19:7a:ff:18:25:18:aa:44:fe:c1:a0:ce:5c:b6:4c:8a +# SHA256 Fingerprint: 9b:ea:11:c9:76:fe:01:47:64:c1:be:56:a6:f9:14:b5:a5:60:31:7a:bd:99:88:39:33:82:e5:16:1a:a0:49:3c +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9 +MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBH +bG9iYWwgRzIgUm9vdDAeFw0xNjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0x +CzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlUcnVzdDEbMBkGA1UEAwwSVUNBIEds +b2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxeYr +b3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmToni9 +kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzm +VHqUwCoV8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/R +VogvGjqNO7uCEeBHANBSh6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDc +C/Vkw85DvG1xudLeJ1uK6NjGruFZfc8oLTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIj +tm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/R+zvWr9LesGtOxdQXGLY +D0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBeKW4bHAyv +j5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6Dl +NaBa4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6 +iIis7nCs+dwp4wwcOxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznP +O6Q0ibd5Ei9Hxeepl2n8pndntd978XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/ +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFIHEjMz15DD/pQwIX4wV +ZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo5sOASD0Ee/oj +L3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5 +1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl +1qnN3e92mI0ADs0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oU +b3n09tDh05S60FdRvScFDcH9yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LV +PtateJLbXDzz2K36uGt/xDYotgIVilQsnLAXc47QN6MUPJiVAAwpBVueSUmxX8fj +y88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHojhJi6IjMtX9Gl8Cb +EGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZkbxqg +DMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI ++Vg7RE+xygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGy +YiGqhkCyLmTTX8jjfhFnRR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bX +UB+K+wb1whnw0A== +-----END CERTIFICATE----- + +# Issuer: CN=UCA Extended Validation Root O=UniTrust +# Subject: CN=UCA Extended Validation Root O=UniTrust +# Label: "UCA Extended Validation Root" +# Serial: 106100277556486529736699587978573607008 +# MD5 Fingerprint: a1:f3:5f:43:c6:34:9b:da:bf:8c:7e:05:53:ad:96:e2 +# SHA1 Fingerprint: a3:a1:b0:6f:24:61:23:4a:e3:36:a5:c2:37:fc:a6:ff:dd:f0:d7:3a +# SHA256 Fingerprint: d4:3a:f9:b3:54:73:75:5c:96:84:fc:06:d7:d8:cb:70:ee:5c:28:e7:73:fb:29:4e:b4:1e:e7:17:22:92:4d:24 +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBH +MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBF +eHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMx +MDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNV +BAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrsiWog +D4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvS +sPGP2KxFRv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aop +O2z6+I9tTcg1367r3CTueUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dk +sHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR59mzLC52LqGj3n5qiAno8geK+LLNEOfi +c0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH0mK1lTnj8/FtDw5lhIpj +VMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KRel7sFsLz +KuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/ +TuDvB0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41G +sx2VYVdWf6/wFlthWG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs +1+lvK9JKBZP8nm9rZ/+I8U6laUpSNwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQD +fwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS3H5aBZ8eNJr34RQwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBADaN +l8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR +ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQ +VBcZEhrxH9cMaVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5 +c6sq1WnIeJEmMX3ixzDx/BR4dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp +4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb+7lsq+KePRXBOy5nAliRn+/4Qh8s +t2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOWF3sGPjLtx7dCvHaj +2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwiGpWO +vpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2C +xR9GUeOcGMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmx +cmtpzyKEC2IPrNkZAJSidjzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbM +fjKaiJUINlK73nZfdklJrX+9ZSCyycErdhh2n1ax +-----END CERTIFICATE----- + +# Issuer: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036 +# Subject: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036 +# Label: "Certigna Root CA" +# Serial: 269714418870597844693661054334862075617 +# MD5 Fingerprint: 0e:5c:30:62:27:eb:5b:bc:d7:ae:62:ba:e9:d5:df:77 +# SHA1 Fingerprint: 2d:0d:52:14:ff:9e:ad:99:24:01:74:20:47:6e:6c:85:27:27:f5:43 +# SHA256 Fingerprint: d4:8d:3d:23:ee:db:50:a4:59:e5:51:97:60:1c:27:77:4b:9d:7b:18:c9:4d:5a:05:95:11:a1:02:50:b9:31:68 +-----BEGIN CERTIFICATE----- +MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAw +WjELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAw +MiA0ODE0NjMwODEwMDAzNjEZMBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0x +MzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjdaMFoxCzAJBgNVBAYTAkZSMRIwEAYD +VQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYzMDgxMDAwMzYxGTAX +BgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sO +ty3tRQgXstmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9M +CiBtnyN6tMbaLOQdLNyzKNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPu +I9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8JXrJhFwLrN1CTivngqIkicuQstDuI7pm +TLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16XdG+RCYyKfHx9WzMfgIh +C59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq4NYKpkDf +ePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3Yz +IoejwpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWT +Co/1VTp2lc5ZmIoJlXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1k +JWumIWmbat10TWuXekG9qxf5kBdIjzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5 +hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp//TBt2dzhauH8XwIDAQABo4IB +GjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of +1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczov +L3d3d3cuY2VydGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilo +dHRwOi8vY3JsLmNlcnRpZ25hLmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYr +aHR0cDovL2NybC5kaGlteW90aXMuY29tL2NlcnRpZ25hcm9vdGNhLmNybDANBgkq +hkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOItOoldaDgvUSILSo3L +6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxPTGRG +HVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH6 +0BGM+RFq7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncB +lA2c5uk5jR+mUYyZDDl34bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdi +o2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1 +gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS6Cvu5zHbugRqh5jnxV/v +faci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaYtlu3zM63 +Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayh +jWZSaX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw +3kAP+HwV96LOPNdeE4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0= +-----END CERTIFICATE----- + +# Issuer: CN=emSign Root CA - G1 O=eMudhra Technologies Limited OU=emSign PKI +# Subject: CN=emSign Root CA - G1 O=eMudhra Technologies Limited OU=emSign PKI +# Label: "emSign Root CA - G1" +# Serial: 235931866688319308814040 +# MD5 Fingerprint: 9c:42:84:57:dd:cb:0b:a7:2e:95:ad:b6:f3:da:bc:ac +# SHA1 Fingerprint: 8a:c7:ad:8f:73:ac:4e:c1:b5:75:4d:a5:40:f4:fc:cf:7c:b5:8e:8c +# SHA256 Fingerprint: 40:f6:af:03:46:a9:9a:a1:cd:1d:55:5a:4e:9c:ce:62:c7:f9:63:46:03:ee:40:66:15:83:3d:c8:c8:d0:03:67 +-----BEGIN CERTIFICATE----- +MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYD +VQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBU +ZWNobm9sb2dpZXMgTGltaXRlZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBH +MTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgxODMwMDBaMGcxCzAJBgNVBAYTAklO +MRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVkaHJhIFRlY2hub2xv +Z2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQz +f2N4aLTNLnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO +8oG0x5ZOrRkVUkr+PHB1cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aq +d7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHWDV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhM +tTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ6DqS0hdW5TUaQBw+jSzt +Od9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrHhQIDAQAB +o0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQD +AgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31x +PaOfG1vR2vjTnGs2vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjM +wiI/aTvFthUvozXGaCocV685743QNcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6d +GNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q+Mri/Tm3R7nrft8EI6/6nAYH +6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeihU80Bv2noWgby +RQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx +iN66zB+Afko= +-----END CERTIFICATE----- + +# Issuer: CN=emSign ECC Root CA - G3 O=eMudhra Technologies Limited OU=emSign PKI +# Subject: CN=emSign ECC Root CA - G3 O=eMudhra Technologies Limited OU=emSign PKI +# Label: "emSign ECC Root CA - G3" +# Serial: 287880440101571086945156 +# MD5 Fingerprint: ce:0b:72:d1:9f:88:8e:d0:50:03:e8:e3:b8:8b:67:40 +# SHA1 Fingerprint: 30:43:fa:4f:f2:57:dc:a0:c3:80:ee:2e:58:ea:78:b2:3f:e6:bb:c1 +# SHA256 Fingerprint: 86:a1:ec:ba:08:9c:4a:8d:3b:be:27:34:c6:12:ba:34:1d:81:3e:04:3c:f9:e8:a8:62:cd:5c:57:a3:6b:be:6b +-----BEGIN CERTIFICATE----- +MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQG +EwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNo +bm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g +RzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4MTgzMDAwWjBrMQswCQYDVQQGEwJJ +TjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9s +b2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMw +djAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0 +WXTsuwYc58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xyS +fvalY8L1X44uT6EYGQIrMgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuB +zhccLikenEhjQjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggq +hkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+DCBeQyh+KTOgNG3qxrdWB +CUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7jHvrZQnD ++JbNR6iC8hZVdyR+EhCVBCyj +-----END CERTIFICATE----- + +# Issuer: CN=emSign Root CA - C1 O=eMudhra Inc OU=emSign PKI +# Subject: CN=emSign Root CA - C1 O=eMudhra Inc OU=emSign PKI +# Label: "emSign Root CA - C1" +# Serial: 825510296613316004955058 +# MD5 Fingerprint: d8:e3:5d:01:21:fa:78:5a:b0:df:ba:d2:ee:2a:5f:68 +# SHA1 Fingerprint: e7:2e:f1:df:fc:b2:09:28:cf:5d:d4:d5:67:37:b1:51:cb:86:4f:01 +# SHA256 Fingerprint: 12:56:09:aa:30:1d:a0:a2:49:b9:7a:82:39:cb:6a:34:21:6f:44:dc:ac:9f:39:54:b1:42:92:f2:e8:c8:60:8f +-----BEGIN CERTIFICATE----- +MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkG +A1UEBhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEg +SW5jMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAw +MFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln +biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNpZ24gUm9v +dCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+upufGZ +BczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZ +HdPIWoU/Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH +3DspVpNqs8FqOp099cGXOFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvH +GPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4VI5b2P/AgNBbeCsbEBEV5f6f9vtKppa+c +xSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleoomslMuoaJuvimUnzYnu3Yy1 +aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+XJGFehiq +TbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL +BQADggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87 +/kOXSTKZEhVb3xEp/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4 +kqNPEjE2NuLe/gDEo2APJ62gsIq1NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrG +YQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9wC68AivTxEDkigcxHpvOJpkT ++xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQBmIMMMAVSKeo +WXzhriKi4gp6D/piq1JM4fHfyr6DDUI= +-----END CERTIFICATE----- + +# Issuer: CN=emSign ECC Root CA - C3 O=eMudhra Inc OU=emSign PKI +# Subject: CN=emSign ECC Root CA - C3 O=eMudhra Inc OU=emSign PKI +# Label: "emSign ECC Root CA - C3" +# Serial: 582948710642506000014504 +# MD5 Fingerprint: 3e:53:b3:a3:81:ee:d7:10:f8:d3:b0:1d:17:92:f5:d5 +# SHA1 Fingerprint: b6:af:43:c2:9b:81:53:7d:f6:ef:6b:c3:1f:1f:60:15:0c:ee:48:66 +# SHA256 Fingerprint: bc:4d:80:9b:15:18:9d:78:db:3e:1d:8c:f4:f9:72:6a:79:5d:a1:64:3c:a5:f1:35:8e:1d:db:0e:dc:0d:7e:b3 +-----BEGIN CERTIFICATE----- +MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQG +EwJVUzETMBEGA1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMx +IDAeBgNVBAMTF2VtU2lnbiBFQ0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAw +MFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln +biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQDExdlbVNpZ24gRUND +IFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd6bci +MK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4Ojavti +sIGJAnB9SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0O +BBYEFPtaSNCAIEDyqOkAB2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB +Af8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQC02C8Cif22TGK6Q04ThHK1rt0c +3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwUZOR8loMRnLDRWmFLpg9J +0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ== +-----END CERTIFICATE----- + +# Issuer: CN=Hongkong Post Root CA 3 O=Hongkong Post +# Subject: CN=Hongkong Post Root CA 3 O=Hongkong Post +# Label: "Hongkong Post Root CA 3" +# Serial: 46170865288971385588281144162979347873371282084 +# MD5 Fingerprint: 11:fc:9f:bd:73:30:02:8a:fd:3f:f3:58:b9:cb:20:f0 +# SHA1 Fingerprint: 58:a2:d0:ec:20:52:81:5b:c1:f3:f8:64:02:24:4e:c2:8e:02:4b:02 +# SHA256 Fingerprint: 5a:2f:c0:3f:0c:83:b0:90:bb:fa:40:60:4b:09:88:44:6c:76:36:18:3d:f9:84:6e:17:10:1a:44:7f:b8:ef:d6 +-----BEGIN CERTIFICATE----- +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 +mpv0 +-----END CERTIFICATE----- + +# Issuer: CN=Microsoft ECC Root Certificate Authority 2017 O=Microsoft Corporation +# Subject: CN=Microsoft ECC Root Certificate Authority 2017 O=Microsoft Corporation +# Label: "Microsoft ECC Root Certificate Authority 2017" +# Serial: 136839042543790627607696632466672567020 +# MD5 Fingerprint: dd:a1:03:e6:4a:93:10:d1:bf:f0:19:42:cb:fe:ed:67 +# SHA1 Fingerprint: 99:9a:64:c3:7f:f4:7d:9f:ab:95:f1:47:69:89:14:60:ee:c4:c3:c5 +# SHA256 Fingerprint: 35:8d:f3:9d:76:4a:f9:e1:b7:66:e9:c9:72:df:35:2e:e1:5c:fa:c2:27:af:6a:d1:d7:0e:8e:4a:6e:dc:ba:02 +-----BEGIN CERTIFICATE----- +MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQsw +CQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYD +VQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIw +MTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4MjMxNjA0WjBlMQswCQYDVQQGEwJV +UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNy +b3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZR +ogPZnZH6thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYb +hGBKia/teQ87zvH2RPUBeMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBTIy5lycFIM+Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3 +FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlfXu5gKcs68tvWMoQZP3zV +L8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaReNtUjGUB +iudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M= +-----END CERTIFICATE----- + +# Issuer: CN=Microsoft RSA Root Certificate Authority 2017 O=Microsoft Corporation +# Subject: CN=Microsoft RSA Root Certificate Authority 2017 O=Microsoft Corporation +# Label: "Microsoft RSA Root Certificate Authority 2017" +# Serial: 40975477897264996090493496164228220339 +# MD5 Fingerprint: 10:ff:00:ff:cf:c9:f8:c7:7a:c0:ee:35:8e:c9:0f:47 +# SHA1 Fingerprint: 73:a5:e6:4a:3b:ff:83:16:ff:0e:dc:cc:61:8a:90:6e:4e:ae:4d:74 +# SHA256 Fingerprint: c7:41:f7:0f:4b:2a:8d:88:bf:2e:71:c1:41:22:ef:53:ef:10:eb:a0:cf:a5:e6:4c:fa:20:f4:18:85:30:73:e0 +-----BEGIN CERTIFICATE----- +MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBl +MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw +NAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIwNzE4MjMwMDIzWjBlMQswCQYDVQQG +EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1N +aWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZ +Nt9GkMml7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0 +ZdDMbRnMlfl7rEqUrQ7eS0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1 +HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw71VdyvD/IybLeS2v4I2wDwAW9lcfNcztm +gGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+dkC0zVJhUXAoP8XFWvLJ +jEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49FyGcohJUc +aDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaG +YaRSMLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6 +W6IYZVcSn2i51BVrlMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4K +UGsTuqwPN1q3ErWQgR5WrlcihtnJ0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH ++FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJClTUFLkqqNfs+avNJVgyeY+Q +W5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZC +LgLNFgVZJ8og6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OC +gMNPOsduET/m4xaRhPtthH80dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6 +tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk+ONVFT24bcMKpBLBaYVu32TxU5nh +SnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex/2kskZGT4d9Mozd2 +TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDyAmH3 +pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGR +xpl/j8nWZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiApp +GWSZI1b7rCoucL5mxAyE7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9 +dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKTc0QWbej09+CVgI+WXTik9KveCjCHk9hN +AHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D5KbvtwEwXlGjefVwaaZB +RA+GsCyRxj3qrg+E +-----END CERTIFICATE----- + +# Issuer: CN=e-Szigno Root CA 2017 O=Microsec Ltd. +# Subject: CN=e-Szigno Root CA 2017 O=Microsec Ltd. +# Label: "e-Szigno Root CA 2017" +# Serial: 411379200276854331539784714 +# MD5 Fingerprint: de:1f:f6:9e:84:ae:a7:b4:21:ce:1e:58:7d:d1:84:98 +# SHA1 Fingerprint: 89:d4:83:03:4f:9e:9a:48:80:5f:72:37:d4:a9:a6:ef:cb:7c:1f:d1 +# SHA256 Fingerprint: be:b0:0b:30:83:9b:9b:c3:2c:32:e4:44:79:05:95:06:41:f2:64:21:b1:5e:d0:89:19:8b:51:8a:e2:ea:1b:99 +-----BEGIN CERTIFICATE----- +MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNV +BAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRk +LjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJv +b3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZaFw00MjA4MjIxMjA3MDZaMHExCzAJ +BgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMg +THRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25v +IFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtv +xie+RJCxs1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+H +Wyx7xf58etqjYzBhMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBSHERUI0arBeAyxr87GyZDvvzAEwDAfBgNVHSMEGDAWgBSHERUI0arB +eAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEAtVfd14pVCzbhhkT61Nlo +jbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxOsvxyqltZ ++efcMQ== +-----END CERTIFICATE----- + +# Issuer: O=CERTSIGN SA OU=certSIGN ROOT CA G2 +# Subject: O=CERTSIGN SA OU=certSIGN ROOT CA G2 +# Label: "certSIGN Root CA G2" +# Serial: 313609486401300475190 +# MD5 Fingerprint: 8c:f1:75:8a:c6:19:cf:94:b7:f7:65:20:87:c3:97:c7 +# SHA1 Fingerprint: 26:f9:93:b4:ed:3d:28:27:b0:b9:4b:a7:e9:15:1d:a3:8d:92:e5:32 +# SHA256 Fingerprint: 65:7c:fe:2f:a7:3f:aa:38:46:25:71:f3:32:a2:36:3a:46:fc:e7:02:09:51:71:07:02:cd:fb:b6:ee:da:33:05 +-----BEGIN CERTIFICATE----- +MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNV +BAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04g +Uk9PVCBDQSBHMjAeFw0xNzAyMDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJ +BgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJ +R04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDF +dRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05N0Iw +vlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZ +uIt4ImfkabBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhp +n+Sc8CnTXPnGFiWeI8MgwT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKs +cpc/I1mbySKEwQdPzH/iV8oScLumZfNpdWO9lfsbl83kqK/20U6o2YpxJM02PbyW +xPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91QqhngLjYl/rNUssuHLoPj1P +rCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732jcZZroiF +DsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fx +DTvf95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgy +LcsUDFDYg2WD7rlcz8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6C +eWRgKRM+o/1Pcmqr4tTluCRVLERLiohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSCIS1mxteg4BXrzkwJ +d8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOBywaK8SJJ6ejq +kX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC +b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQl +qiCA2ClV9+BB/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0 +OJD7uNGzcgbJceaBxXntC6Z58hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+c +NywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5BiKDUyUM/FHE5r7iOZULJK2v0ZXk +ltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklWatKcsWMy5WHgUyIO +pwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tUSxfj +03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZk +PuXaTH4MNMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE +1LlSVHJ7liXMvGnjSG4N0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MX +QRBdJ3NghVdJIgc= +-----END CERTIFICATE----- + +# Issuer: CN=NAVER Global Root Certification Authority O=NAVER BUSINESS PLATFORM Corp. +# Subject: CN=NAVER Global Root Certification Authority O=NAVER BUSINESS PLATFORM Corp. +# Label: "NAVER Global Root Certification Authority" +# Serial: 9013692873798656336226253319739695165984492813 +# MD5 Fingerprint: c8:7e:41:f6:25:3b:f5:09:b3:17:e8:46:3d:bf:d0:9b +# SHA1 Fingerprint: 8f:6b:f2:a9:27:4a:da:14:a0:c4:f4:8e:61:27:f9:c0:1e:78:5d:d1 +# SHA256 Fingerprint: 88:f4:38:dc:f8:ff:d1:fa:8f:42:91:15:ff:e5:f8:2a:e1:e0:6e:0c:70:c3:75:fa:ad:71:7b:34:a4:9e:72:65 +-----BEGIN CERTIFICATE----- +MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEM +BQAwaTELMAkGA1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRG +T1JNIENvcnAuMTIwMAYDVQQDDClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4NDJaFw0zNzA4MTgyMzU5NTlaMGkx +CzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVTUyBQTEFURk9STSBD +b3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVA +iQqrDZBbUGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH +38dq6SZeWYp34+hInDEW+j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lE +HoSTGEq0n+USZGnQJoViAbbJAh2+g1G7XNr4rRVqmfeSVPc0W+m/6imBEtRTkZaz +kVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2aacp+yPOiNgSnABIqKYP +szuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4Yb8Obtoq +vC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHf +nZ3zVHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaG +YQ5fG8Ir4ozVu53BA0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo +0es+nPxdGoMuK8u180SdOqcXYZaicdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3a +CJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejyYhbLgGvtPe31HzClrkvJE+2K +AQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNVHQ4EFgQU0p+I +36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB +Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoN +qo0hV4/GPnrK21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatj +cu3cvuzHV+YwIHHW1xDBE1UBjCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm ++LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bxhYTeodoS76TiEJd6eN4MUZeoIUCL +hr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTgE34h5prCy8VCZLQe +lHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTHD8z7 +p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8 +piKCk5XQA76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLR +LBT/DShycpWbXgnbiUSYqqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX +5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oGI/hGoiLtk/bdmuYqh7GYVPEi92tF4+KO +dh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmgkpzNNIaRkPpkUZ3+/uul +9XXeifdy +-----END CERTIFICATE----- + +# Issuer: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS O=FNMT-RCM OU=Ceres +# Subject: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS O=FNMT-RCM OU=Ceres +# Label: "AC RAIZ FNMT-RCM SERVIDORES SEGUROS" +# Serial: 131542671362353147877283741781055151509 +# MD5 Fingerprint: 19:36:9c:52:03:2f:d2:d1:bb:23:cc:dd:1e:12:55:bb +# SHA1 Fingerprint: 62:ff:d9:9e:c0:65:0d:03:ce:75:93:d2:ed:3f:2d:32:c9:e3:e5:4a +# SHA256 Fingerprint: 55:41:53:b1:3d:2c:f9:dd:b7:53:bf:be:1a:4e:0a:e0:8d:0a:a4:18:70:58:fe:60:a2:b8:62:b2:e4:b8:7b:cb +-----BEGIN CERTIFICATE----- +MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQsw +CQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgw +FgYDVQRhDA9WQVRFUy1RMjgyNjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1S +Q00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4MTIyMDA5MzczM1oXDTQzMTIyMDA5 +MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQtUkNNMQ4wDAYDVQQL +DAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNBQyBS +QUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LH +sbI6GA60XYyzZl2hNPk2LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oK +Um8BA06Oi6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqGSM49BAMDA2kAMGYCMQCu +SuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoDzBOQn5IC +MQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJy +v+c= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign Root R46 O=GlobalSign nv-sa +# Subject: CN=GlobalSign Root R46 O=GlobalSign nv-sa +# Label: "GlobalSign Root R46" +# Serial: 1552617688466950547958867513931858518042577 +# MD5 Fingerprint: c4:14:30:e4:fa:66:43:94:2a:6a:1b:24:5f:19:d0:ef +# SHA1 Fingerprint: 53:a2:b0:4b:ca:6b:d6:45:e6:39:8a:8e:c4:0d:d2:bf:77:c3:a2:90 +# SHA256 Fingerprint: 4f:a3:12:6d:8d:3a:11:d1:c4:85:5a:4f:80:7c:ba:d6:cf:91:9d:3a:5a:88:b0:3b:ea:2c:63:72:d9:3c:40:c9 +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUA +MEYxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYD +VQQDExNHbG9iYWxTaWduIFJvb3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMy +MDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt +c2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08EsCVeJ +OaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQG +vGIFAha/r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud +316HCkD7rRlr+/fKYIje2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo +0q3v84RLHIf8E6M6cqJaESvWJ3En7YEtbWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSE +y132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvjK8Cd+RTyG/FWaha/LIWF +zXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD412lPFzYE ++cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCN +I/onccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzs +x2sZy/N78CsHpdlseVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqa +ByFrgY/bxFn63iLABJzjqls2k+g9vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC +4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEMBQADggIBAHx4 +7PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg +JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti +2kM3S+LGteWygxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIk +pnnpHs6i58FZFZ8d4kuaPp92CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRF +FRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZmOUdkLG5NrmJ7v2B0GbhWrJKsFjLt +rWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qqJZ4d16GLuc1CLgSk +ZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwyeqiv5 +u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP +4vkYxboznxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6 +N3ec592kD3ZDZopD8p/7DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3 +vouXsXgxT7PntgMTzlSdriVZzH81Xwj3QEUxeCp6 +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign Root E46 O=GlobalSign nv-sa +# Subject: CN=GlobalSign Root E46 O=GlobalSign nv-sa +# Label: "GlobalSign Root E46" +# Serial: 1552617690338932563915843282459653771421763 +# MD5 Fingerprint: b5:b8:66:ed:de:08:83:e3:c9:e2:01:34:06:ac:51:6f +# SHA1 Fingerprint: 39:b4:6c:d5:fe:80:06:eb:e2:2f:4a:bb:08:33:a0:af:db:b9:dd:84 +# SHA256 Fingerprint: cb:b9:c4:4d:84:b8:04:3e:10:50:ea:31:a6:9f:51:49:55:d7:bf:d2:e2:c6:b4:93:01:01:9a:d6:1d:9f:50:58 +-----BEGIN CERTIFICATE----- +MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYx +CzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQD +ExNHbG9iYWxTaWduIFJvb3QgRTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAw +MDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex +HDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkBjtjq +R+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGdd +yXqBPCCjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud +DgQWBBQxCpCPtsad0kRLgLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ +7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZkvLtoURMMA/cVi4RguYv/Uo7njLwcAjA8 ++RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A= +-----END CERTIFICATE----- + +# Issuer: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz +# Subject: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz +# Label: "ANF Secure Server Root CA" +# Serial: 996390341000653745 +# MD5 Fingerprint: 26:a6:44:5a:d9:af:4e:2f:b2:1d:b6:65:b0:4e:e8:96 +# SHA1 Fingerprint: 5b:6e:68:d0:cc:15:b6:a0:5f:1e:c1:5f:ae:02:fc:6b:2f:5d:6f:74 +# SHA256 Fingerprint: fb:8f:ec:75:91:69:b9:10:6b:1e:51:16:44:c6:18:c5:13:04:37:3f:6c:06:43:08:8d:8b:ef:fd:1b:99:75:99 +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +# Issuer: CN=Certum EC-384 CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Subject: CN=Certum EC-384 CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Label: "Certum EC-384 CA" +# Serial: 160250656287871593594747141429395092468 +# MD5 Fingerprint: b6:65:b3:96:60:97:12:a1:ec:4e:e1:3d:a3:c6:c9:f1 +# SHA1 Fingerprint: f3:3e:78:3c:ac:df:f4:a2:cc:ac:67:55:69:56:d7:e5:16:3c:e1:ed +# SHA256 Fingerprint: 6b:32:80:85:62:53:18:aa:50:d1:73:c9:8d:8b:da:09:d5:7e:27:41:3d:11:4c:f7:87:a0:f5:d0:6c:03:0c:f6 +-----BEGIN CERTIFICATE----- +MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQsw +CQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScw +JQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMT +EENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2MDcyNDU0WhcNNDMwMzI2MDcyNDU0 +WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBT +LkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAX +BgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATE +KI6rGFtqvm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7Tm +Fy8as10CW4kjPMIRBSqniBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68Kj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI0GZnQkdjrzife81r1HfS+8 +EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNoADBlAjADVS2m5hjEfO/J +UG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0QoSZ/6vn +nvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k= +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Root CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Root CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Root CA" +# Serial: 40870380103424195783807378461123655149 +# MD5 Fingerprint: 51:e1:c2:e7:fe:4c:84:af:59:0e:2f:f4:54:6f:ea:29 +# SHA1 Fingerprint: c8:83:44:c0:18:ae:9f:cc:f1:87:b7:8f:22:d1:c5:d7:45:84:ba:e5 +# SHA256 Fingerprint: fe:76:96:57:38:55:77:3e:37:a9:5e:7a:d4:d9:cc:96:c3:01:57:c1:5d:31:76:5b:a9:b1:57:04:e1:ae:78:fd +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +# Issuer: CN=TunTrust Root CA O=Agence Nationale de Certification Electronique +# Subject: CN=TunTrust Root CA O=Agence Nationale de Certification Electronique +# Label: "TunTrust Root CA" +# Serial: 108534058042236574382096126452369648152337120275 +# MD5 Fingerprint: 85:13:b9:90:5b:36:5c:b6:5e:b8:5a:f8:e0:31:57:b4 +# SHA1 Fingerprint: cf:e9:70:84:0f:e0:73:0f:9d:f6:0c:7f:2c:4b:ee:20:46:34:9c:bb +# SHA256 Fingerprint: 2e:44:10:2a:b5:8c:b8:54:19:45:1c:8e:19:d9:ac:f3:66:2c:af:bc:61:4b:6a:53:96:0a:30:f7:d0:e2:eb:41 +-----BEGIN CERTIFICATE----- +MIIFszCCA5ugAwIBAgIUEwLV4kBMkkaGFmddtLu7sms+/BMwDQYJKoZIhvcNAQEL +BQAwYTELMAkGA1UEBhMCVE4xNzA1BgNVBAoMLkFnZW5jZSBOYXRpb25hbGUgZGUg +Q2VydGlmaWNhdGlvbiBFbGVjdHJvbmlxdWUxGTAXBgNVBAMMEFR1blRydXN0IFJv +b3QgQ0EwHhcNMTkwNDI2MDg1NzU2WhcNNDQwNDI2MDg1NzU2WjBhMQswCQYDVQQG +EwJUTjE3MDUGA1UECgwuQWdlbmNlIE5hdGlvbmFsZSBkZSBDZXJ0aWZpY2F0aW9u +IEVsZWN0cm9uaXF1ZTEZMBcGA1UEAwwQVHVuVHJ1c3QgUm9vdCBDQTCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMPN0/y9BFPdDCA61YguBUtB9YOCfvdZ +n56eY+hz2vYGqU8ftPkLHzmMmiDQfgbU7DTZhrx1W4eI8NLZ1KMKsmwb60ksPqxd +2JQDoOw05TDENX37Jk0bbjBU2PWARZw5rZzJJQRNmpA+TkBuimvNKWfGzC3gdOgF +VwpIUPp6Q9p+7FuaDmJ2/uqdHYVy7BG7NegfJ7/Boce7SBbdVtfMTqDhuazb1YMZ +GoXRlJfXyqNlC/M4+QKu3fZnz8k/9YosRxqZbwUN/dAdgjH8KcwAWJeRTIAAHDOF +li/LQcKLEITDCSSJH7UP2dl3RxiSlGBcx5kDPP73lad9UKGAwqmDrViWVSHbhlnU +r8a83YFuB9tgYv7sEG7aaAH0gxupPqJbI9dkxt/con3YS7qC0lH4Zr8GRuR5KiY2 +eY8fTpkdso8MDhz/yV3A/ZAQprE38806JG60hZC/gLkMjNWb1sjxVj8agIl6qeIb +MlEsPvLfe/ZdeikZjuXIvTZxi11Mwh0/rViizz1wTaZQmCXcI/m4WEEIcb9PuISg +jwBUFfyRbVinljvrS5YnzWuioYasDXxU5mZMZl+QviGaAkYt5IPCgLnPSz7ofzwB +7I9ezX/SKEIBlYrilz0QIX32nRzFNKHsLA4KUiwSVXAkPcvCFDVDXSdOvsC9qnyW +5/yeYa1E0wCXAgMBAAGjYzBhMB0GA1UdDgQWBBQGmpsfU33x9aTI04Y+oXNZtPdE +ITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFAaamx9TffH1pMjThj6hc1m0 +90QhMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAqgVutt0Vyb+z +xiD2BkewhpMl0425yAA/l/VSJ4hxyXT968pk21vvHl26v9Hr7lxpuhbI87mP0zYu +QEkHDVneixCwSQXi/5E/S7fdAo74gShczNxtr18UnH1YeA32gAm56Q6XKRm4t+v4 +FstVEuTGfbvE7Pi1HE4+Z7/FXxttbUcoqgRYYdZ2vyJ/0Adqp2RT8JeNnYA/u8EH +22Wv5psymsNUk8QcCMNE+3tjEUPRahphanltkE8pjkcFwRJpadbGNjHh/PqAulxP +xOu3Mqz4dWEX1xAZufHSCe96Qp1bWgvUxpVOKs7/B9dPfhgGiPEZtdmYu65xxBzn +dFlY7wyJz4sfdZMaBBSSSFCp61cpABbjNhzI+L/wM9VBD8TMPN3pM0MBkRArHtG5 +Xc0yGYuPjCB31yLEQtyEFpslbei0VXF/sHyz03FJuc9SpAQ/3D2gu68zngowYI7b +nV2UqL1g52KAdoGDDIzMMEZJ4gzSqK/rYXHv5yJiqfdcZGyfFoxnNidF9Ql7v/YQ +CvGwjVRDjAS6oz/v4jXH+XTgbzRB0L9zZVcg+ZtnemZoJE6AZb0QmQZZ8mWvuMZH +u/2QeItBcy6vVR/cO5JyboTT0GFMDcx2V+IthSIVNg3rAZ3r2OvEhJn7wAzMMujj +d9qDRIueVSjAi1jTkD5OGwDxFa2DK5o= +-----END CERTIFICATE----- + +# Issuer: CN=HARICA TLS RSA Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Subject: CN=HARICA TLS RSA Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Label: "HARICA TLS RSA Root CA 2021" +# Serial: 76817823531813593706434026085292783742 +# MD5 Fingerprint: 65:47:9b:58:86:dd:2c:f0:fc:a2:84:1f:1e:96:c4:91 +# SHA1 Fingerprint: 02:2d:05:82:fa:88:ce:14:0c:06:79:de:7f:14:10:e9:45:d7:a5:6d +# SHA256 Fingerprint: d9:5d:0e:8e:da:79:52:5b:f9:be:b1:1b:14:d2:10:0d:32:94:98:5f:0c:62:d9:fa:bd:9c:d9:99:ec:cb:7b:1d +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBs +MQswCQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl +c2VhcmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0Eg +Um9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUzOFoXDTQ1MDIxMzEwNTUzN1owbDEL +MAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl +YXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNBIFJv +b3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569l +mwVnlskNJLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE +4VGC/6zStGndLuwRo0Xua2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uv +a9of08WRiFukiZLRgeaMOVig1mlDqa2YUlhu2wr7a89o+uOkXjpFc5gH6l8Cct4M +pbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K5FrZx40d/JiZ+yykgmvw +Kh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEvdmn8kN3b +LW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcY +AuUR0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqB +AGMUuTNe3QvboEUHGjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYq +E613TBoYm5EPWNgGVMWX+Ko/IIqmhaZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHr +W2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQCPxrvrNQKlr9qEgYRtaQQJKQ +CoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAU +X15QvWiWkKQUEapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3 +f5Z2EMVGpdAgS1D0NTsY9FVqQRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxaja +H6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxDQpSbIPDRzbLrLFPCU3hKTwSUQZqP +JzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcRj88YxeMn/ibvBZ3P +zzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5vZSt +jBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0 +/L5H9MG0qPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pT +BGIBnfHAT+7hOtSLIBD6Alfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79 +aPib8qXPMThcFarmlwDB31qlpzmq6YR/PFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YW +xw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnnkf3/W9b3raYvAwtt41dU +63ZTGI0RmLo= +-----END CERTIFICATE----- + +# Issuer: CN=HARICA TLS ECC Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Subject: CN=HARICA TLS ECC Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Label: "HARICA TLS ECC Root CA 2021" +# Serial: 137515985548005187474074462014555733966 +# MD5 Fingerprint: ae:f7:4c:e5:66:35:d1:b7:9b:8c:22:93:74:d3:4b:b0 +# SHA1 Fingerprint: bc:b0:c1:9d:e9:98:92:70:19:38:57:e9:8d:a7:b4:5d:6e:ee:01:48 +# SHA256 Fingerprint: 3f:99:cc:47:4a:cf:ce:4d:fe:d5:87:94:66:5e:47:8d:15:47:73:9f:2e:78:0f:1b:b4:ca:9b:13:30:97:d4:01 +-----BEGIN CERTIFICATE----- +MIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQsw +CQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2Vh +cmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9v +dCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoXDTQ1MDIxMzExMDEwOVowbDELMAkG +A1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj +aCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJvb3Qg +Q0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7 +KKrxcm1lAEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9Y +STHMmE5gEYd103KUkE+bECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQD +AgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAircJRQO9gcS3ujwLEXQNw +SaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/QwCZ61IygN +nxS2PFOiTAZpffpskcYqSUXm7LcT4Tps +-----END CERTIFICATE----- + +# Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 +# Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 +# Label: "Autoridad de Certificacion Firmaprofesional CIF A62634068" +# Serial: 1977337328857672817 +# MD5 Fingerprint: 4e:6e:9b:54:4c:ca:b7:fa:48:e4:90:b1:15:4b:1c:a3 +# SHA1 Fingerprint: 0b:be:c2:27:22:49:cb:39:aa:db:35:5c:53:e3:8c:ae:78:ff:b6:fe +# SHA256 Fingerprint: 57:de:05:83:ef:d2:b2:6e:03:61:da:99:da:9d:f4:64:8d:ef:7e:e8:44:1c:3b:72:8a:fa:9b:cd:e0:f9:b2:6a +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UE +BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h +cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1 +MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg +Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9 +thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM +cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG +L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i +NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h +X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b +m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy +Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja +EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T +KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF +6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh +OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1UdDgQWBBRlzeurNR4APn7VdMAc +tHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4wgZswgZgGBFUd +IAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j +b20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABC +AG8AbgBhAG4AbwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAw +ADEANzAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9m +iWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL4QjbEwj4KKE1soCzC1HA01aajTNF +Sa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDbLIpgD7dvlAceHabJ +hfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1ilI45P +Vf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZE +EAEeiGaPcjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV +1aUsIC+nmCjuRfzxuIgALI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2t +CsvMo2ebKHTEm9caPARYpoKdrcd7b/+Alun4jWq9GJAd/0kakFI3ky88Al2CdgtR +5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH9IBk9W6VULgRfhVwOEqw +f9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpfNIbnYrX9 +ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNK +GbqEZycPvEJdvSRUDewdcAZfpLz6IHxV +-----END CERTIFICATE----- + +# Issuer: CN=vTrus ECC Root CA O=iTrusChina Co.,Ltd. +# Subject: CN=vTrus ECC Root CA O=iTrusChina Co.,Ltd. +# Label: "vTrus ECC Root CA" +# Serial: 630369271402956006249506845124680065938238527194 +# MD5 Fingerprint: de:4b:c1:f5:52:8c:9b:43:e1:3e:8f:55:54:17:8d:85 +# SHA1 Fingerprint: f6:9c:db:b0:fc:f6:02:13:b6:52:32:a6:a3:91:3f:16:70:da:c3:e1 +# SHA256 Fingerprint: 30:fb:ba:2c:32:23:8e:2a:98:54:7a:f9:79:31:e5:50:42:8b:9b:3f:1c:8e:eb:66:33:dc:fa:86:c5:b2:7d:d3 +-----BEGIN CERTIFICATE----- +MIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMw +RzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAY +BgNVBAMTEXZUcnVzIEVDQyBSb290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDcz +MTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28u +LEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYwEAYHKoZIzj0CAQYF +K4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+cToL0 +v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUd +e4BdS49nTPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIw +V53dVvHH4+m4SVBrm2nDb+zDfSXkV5UTQJtS0zvzQBm8JsctBp61ezaf9SXUY2sA +AjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQLYgmRWAD5Tfs0aNoJrSEG +GJTO +-----END CERTIFICATE----- + +# Issuer: CN=vTrus Root CA O=iTrusChina Co.,Ltd. +# Subject: CN=vTrus Root CA O=iTrusChina Co.,Ltd. +# Label: "vTrus Root CA" +# Serial: 387574501246983434957692974888460947164905180485 +# MD5 Fingerprint: b8:c9:37:df:fa:6b:31:84:64:c5:ea:11:6a:1b:75:fc +# SHA1 Fingerprint: 84:1a:69:fb:f5:cd:1a:25:34:13:3d:e3:f8:fc:b8:99:d0:c9:14:b7 +# SHA256 Fingerprint: 8a:71:de:65:59:33:6f:42:6c:26:e5:38:80:d0:0d:88:a1:8d:a4:c6:a9:1f:0d:cb:61:94:e2:06:c5:c9:63:87 +-----BEGIN CERTIFICATE----- +MIIFVjCCAz6gAwIBAgIUQ+NxE9izWRRdt86M/TX9b7wFjUUwDQYJKoZIhvcNAQEL +BQAwQzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4x +FjAUBgNVBAMTDXZUcnVzIFJvb3QgQ0EwHhcNMTgwNzMxMDcyNDA1WhcNNDMwNzMx +MDcyNDA1WjBDMQswCQYDVQQGEwJDTjEcMBoGA1UEChMTaVRydXNDaGluYSBDby4s +THRkLjEWMBQGA1UEAxMNdlRydXMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAL1VfGHTuB0EYgWgrmy3cLRB6ksDXhA/kFocizuwZotsSKYc +IrrVQJLuM7IjWcmOvFjai57QGfIvWcaMY1q6n6MLsLOaXLoRuBLpDLvPbmyAhykU +AyyNJJrIZIO1aqwTLDPxn9wsYTwaP3BVm60AUn/PBLn+NvqcwBauYv6WTEN+VRS+ +GrPSbcKvdmaVayqwlHeFXgQPYh1jdfdr58tbmnDsPmcF8P4HCIDPKNsFxhQnL4Z9 +8Cfe/+Z+M0jnCx5Y0ScrUw5XSmXX+6KAYPxMvDVTAWqXcoKv8R1w6Jz1717CbMdH +flqUhSZNO7rrTOiwCcJlwp2dCZtOtZcFrPUGoPc2BX70kLJrxLT5ZOrpGgrIDajt +J8nU57O5q4IikCc9Kuh8kO+8T/3iCiSn3mUkpF3qwHYw03dQ+A0Em5Q2AXPKBlim +0zvc+gRGE1WKyURHuFE5Gi7oNOJ5y1lKCn+8pu8fA2dqWSslYpPZUxlmPCdiKYZN +pGvu/9ROutW04o5IWgAZCfEF2c6Rsffr6TlP9m8EQ5pV9T4FFL2/s1m02I4zhKOQ +UqqzApVg+QxMaPnu1RcN+HFXtSXkKe5lXa/R7jwXC1pDxaWG6iSe4gUH3DRCEpHW +OXSuTEGC2/KmSNGzm/MzqvOmwMVO9fSddmPmAsYiS8GVP1BkLFTltvA8Kc9XAgMB +AAGjQjBAMB0GA1UdDgQWBBRUYnBj8XWEQ1iO0RYgscasGrz2iTAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAKbqSSaet +8PFww+SX8J+pJdVrnjT+5hpk9jprUrIQeBqfTNqK2uwcN1LgQkv7bHbKJAs5EhWd +nxEt/Hlk3ODg9d3gV8mlsnZwUKT+twpw1aA08XXXTUm6EdGz2OyC/+sOxL9kLX1j +bhd47F18iMjrjld22VkE+rxSH0Ws8HqA7Oxvdq6R2xCOBNyS36D25q5J08FsEhvM +Kar5CKXiNxTKsbhm7xqC5PD48acWabfbqWE8n/Uxy+QARsIvdLGx14HuqCaVvIiv +TDUHKgLKeBRtRytAVunLKmChZwOgzoy8sHJnxDHO2zTlJQNgJXtxmOTAGytfdELS +S8VZCAeHvsXDf+eW2eHcKJfWjwXj9ZtOyh1QRwVTsMo554WgicEFOwE30z9J4nfr +I8iIZjs9OXYhRvHsXyO466JmdXTBQPfYaJqT4i2pLr0cox7IdMakLXogqzu4sEb9 +b91fUlV1YvCXoHzXOP0l382gmxDPi7g4Xl7FtKYCNqEeXxzP4padKar9mK5S4fNB +UvupLnKWnyfjqnN9+BojZns7q2WwMgFLFT49ok8MKzWixtlnEjUwzXYuFrOZnk1P +Ti07NEPhmg4NpGaXutIcSkwsKouLgU9xGqndXHt7CMUADTdA43x7VF8vhV929ven +sBxXVsFy6K2ir40zSbofitzmdHxghm+Hl3s= +-----END CERTIFICATE----- + +# Issuer: CN=ISRG Root X2 O=Internet Security Research Group +# Subject: CN=ISRG Root X2 O=Internet Security Research Group +# Label: "ISRG Root X2" +# Serial: 87493402998870891108772069816698636114 +# MD5 Fingerprint: d3:9e:c4:1e:23:3c:a6:df:cf:a3:7e:6d:e0:14:e6:e5 +# SHA1 Fingerprint: bd:b1:b9:3c:d5:97:8d:45:c6:26:14:55:f8:db:95:c7:5a:d1:53:af +# SHA256 Fingerprint: 69:72:9b:8e:15:a8:6e:fc:17:7a:57:af:b7:17:1d:fc:64:ad:d2:8c:2f:ca:8c:f1:50:7e:34:45:3c:cb:14:70 +-----BEGIN CERTIFICATE----- +MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQsw +CQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gg +R3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00 +MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5ldCBT +ZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgyMHYw +EAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0HttwW ++1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9 +ItgKbppbd9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZI +zj0EAwMDaAAwZQIwe3lORlCEwkSHRhtFcP9Ymd70/aTSVaYgLXTWNLxBo1BfASdW +tL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5U6VR5CmD1/iQMVtCnwr1 +/q4AaOeMSQ+2b1tbFfLn +-----END CERTIFICATE----- + +# Issuer: CN=HiPKI Root CA - G1 O=Chunghwa Telecom Co., Ltd. +# Subject: CN=HiPKI Root CA - G1 O=Chunghwa Telecom Co., Ltd. +# Label: "HiPKI Root CA - G1" +# Serial: 60966262342023497858655262305426234976 +# MD5 Fingerprint: 69:45:df:16:65:4b:e8:68:9a:8f:76:5f:ff:80:9e:d3 +# SHA1 Fingerprint: 6a:92:e4:a8:ee:1b:ec:96:45:37:e3:29:57:49:cd:96:e3:e5:d2:60 +# SHA256 Fingerprint: f0:15:ce:3c:c2:39:bf:ef:06:4b:e9:f1:d2:c4:17:e1:a0:26:4a:0a:94:be:1f:0c:8d:12:18:64:eb:69:49:cc +-----BEGIN CERTIFICATE----- +MIIFajCCA1KgAwIBAgIQLd2szmKXlKFD6LDNdmpeYDANBgkqhkiG9w0BAQsFADBP +MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 +ZC4xGzAZBgNVBAMMEkhpUEtJIFJvb3QgQ0EgLSBHMTAeFw0xOTAyMjIwOTQ2MDRa +Fw0zNzEyMzExNTU5NTlaME8xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3 +YSBUZWxlY29tIENvLiwgTHRkLjEbMBkGA1UEAwwSSGlQS0kgUm9vdCBDQSAtIEcx +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9B5/UnMyDHPkvRN0o9Qw +qNCuS9i233VHZvR85zkEHmpwINJaR3JnVfSl6J3VHiGh8Ge6zCFovkRTv4354twv +Vcg3Px+kwJyz5HdcoEb+d/oaoDjq7Zpy3iu9lFc6uux55199QmQ5eiY29yTw1S+6 +lZgRZq2XNdZ1AYDgr/SEYYwNHl98h5ZeQa/rh+r4XfEuiAU+TCK72h8q3VJGZDnz +Qs7ZngyzsHeXZJzA9KMuH5UHsBffMNsAGJZMoYFL3QRtU6M9/Aes1MU3guvklQgZ +KILSQjqj2FPseYlgSGDIcpJQ3AOPgz+yQlda22rpEZfdhSi8MEyr48KxRURHH+CK +FgeW0iEPU8DtqX7UTuybCeyvQqww1r/REEXgphaypcXTT3OUM3ECoWqj1jOXTyFj +HluP2cFeRXF3D4FdXyGarYPM+l7WjSNfGz1BryB1ZlpK9p/7qxj3ccC2HTHsOyDr +y+K49a6SsvfhhEvyovKTmiKe0xRvNlS9H15ZFblzqMF8b3ti6RZsR1pl8w4Rm0bZ +/W3c1pzAtH2lsN0/Vm+h+fbkEkj9Bn8SV7apI09bA8PgcSojt/ewsTu8mL3WmKgM +a/aOEmem8rJY5AIJEzypuxC00jBF8ez3ABHfZfjcK0NVvxaXxA/VLGGEqnKG/uY6 +fsI/fe78LxQ+5oXdUG+3Se0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQU8ncX+l6o/vY9cdVouslGDDjYr7AwDgYDVR0PAQH/BAQDAgGGMA0GCSqG +SIb3DQEBCwUAA4ICAQBQUfB13HAE4/+qddRxosuej6ip0691x1TPOhwEmSKsxBHi +7zNKpiMdDg1H2DfHb680f0+BazVP6XKlMeJ45/dOlBhbQH3PayFUhuaVevvGyuqc +SE5XCV0vrPSltJczWNWseanMX/mF+lLFjfiRFOs6DRfQUsJ748JzjkZ4Bjgs6Fza +ZsT0pPBWGTMpWmWSBUdGSquEwx4noR8RkpkndZMPvDY7l1ePJlsMu5wP1G4wB9Tc +XzZoZjmDlicmisjEOf6aIW/Vcobpf2Lll07QJNBAsNB1CI69aO4I1258EHBGG3zg +iLKecoaZAeO/n0kZtCW+VmWuF2PlHt/o/0elv+EmBYTksMCv5wiZqAxeJoBF1Pho +L5aPruJKHJwWDBNvOIf2u8g0X5IDUXlwpt/L9ZlNec1OvFefQ05rLisY+GpzjLrF +Ne85akEez3GoorKGB1s6yeHvP2UEgEcyRHCVTjFnanRbEEV16rCf0OY1/k6fi8wr +kkVbbiVghUbN0aqwdmaTd5a+g744tiROJgvM7XpWGuDpWsZkrUx6AEhEL7lAuxM+ +vhV4nYWBSipX3tUZQ9rbyltHhoMLP7YNdnhzeSJesYAfz77RP1YQmCuVh6EfnWQU +YDksswBVLuT1sw5XxJFBAJw/6KXf6vb/yPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 +# Label: "GlobalSign ECC Root CA - R4" +# Serial: 159662223612894884239637590694 +# MD5 Fingerprint: 26:29:f8:6d:e1:88:bf:a2:65:7f:aa:c4:cd:0f:7f:fc +# SHA1 Fingerprint: 6b:a0:b0:98:e1:71:ef:5a:ad:fe:48:15:80:77:10:f4:bd:6f:0b:28 +# SHA256 Fingerprint: b0:85:d7:0b:96:4f:19:1a:73:e4:af:0d:54:ae:7a:0e:07:aa:fd:af:9b:71:dd:08:62:13:8a:b7:32:5a:24:a2 +-----BEGIN CERTIFICATE----- +MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYD +VQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2Jh +bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgw +MTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0g +UjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wWTAT +BgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkWymOx +uYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNV +HQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/ ++wpu+74zyTyjhNUwCgYIKoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147 +bmF0774BxL4YSFlhgjICICadVGNA3jdgUM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R1 O=Google Trust Services LLC +# Subject: CN=GTS Root R1 O=Google Trust Services LLC +# Label: "GTS Root R1" +# Serial: 159662320309726417404178440727 +# MD5 Fingerprint: 05:fe:d0:bf:71:a8:a3:76:63:da:01:e0:d8:52:dc:40 +# SHA1 Fingerprint: e5:8c:1c:c4:91:3b:38:63:4b:e9:10:6e:e3:ad:8e:6b:9d:d9:81:4a +# SHA256 Fingerprint: d9:47:43:2a:bd:e7:b7:fa:90:fc:2e:6b:59:10:1b:12:80:e0:e1:c7:e4:e4:0f:a3:c6:88:7f:ff:57:a7:f4:cf +-----BEGIN CERTIFICATE----- +MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQsw +CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU +MBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw +MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp +Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaMf/vo +27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7w +Cl7raKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjw +TcLCeoiKu7rPWRnWr4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0Pfybl +qAj+lug8aJRT7oM6iCsVlgmy4HqMLnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaH +szVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk9+aCEI3oncKKiPo4Zor8 +Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zqkUspzBmk +MiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92 +wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70p +aDPvOmbsB4om3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrN +VjzRlwW5y0vtOUucxD/SVRNuJLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQID +AQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQADggIBAJ+qQibb +C5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe +QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuy +h6f88/qBVRRiClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM4 +7HLwEXWdyzRSjeZ2axfG34arJ45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8J +ZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYciNuaCp+0KueIHoI17eko8cdLiA6Ef +MgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5meLMFrUKTX5hgUvYU/ +Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJFfbdT +6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ +0E6yove+7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm +2tIMPNuzjsmhDYAPexZ3FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bb +bP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3gm3c +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R3 O=Google Trust Services LLC +# Subject: CN=GTS Root R3 O=Google Trust Services LLC +# Label: "GTS Root R3" +# Serial: 159662495401136852707857743206 +# MD5 Fingerprint: 3e:e7:9d:58:02:94:46:51:94:e5:e0:22:4a:8b:e7:73 +# SHA1 Fingerprint: ed:e5:71:80:2b:c8:92:b9:5b:83:3c:d2:32:68:3f:09:cd:a0:1e:46 +# SHA256 Fingerprint: 34:d8:a7:3e:e2:08:d9:bc:db:0d:95:65:20:93:4b:4e:40:e6:94:82:59:6e:8b:6f:73:c8:42:6b:01:0a:6f:48 +-----BEGIN CERTIFICATE----- +MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYD +VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG +A1UEAxMLR1RTIFJvb3QgUjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw +WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz +IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjOPQIBBgUrgQQAIgNi +AAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout736G +jOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL2 +4CejQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBTB8Sa6oC2uhYHP0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7 +VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azTL818+FsuVbu/3ZL3pAzcMeGiAjEA/Jdm +ZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV11RZt+cRLInUue4X +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R4 O=Google Trust Services LLC +# Subject: CN=GTS Root R4 O=Google Trust Services LLC +# Label: "GTS Root R4" +# Serial: 159662532700760215368942768210 +# MD5 Fingerprint: 43:96:83:77:19:4d:76:b3:9d:65:52:e4:1d:22:a5:e8 +# SHA1 Fingerprint: 77:d3:03:67:b5:e0:0c:15:f6:0c:38:61:df:7c:e1:3b:92:46:4d:47 +# SHA256 Fingerprint: 34:9d:fa:40:58:c5:e2:63:12:3b:39:8a:e7:95:57:3c:4e:13:13:c8:3f:e6:8f:93:55:6c:d5:e8:03:1b:3c:7d +-----BEGIN CERTIFICATE----- +MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYD +VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG +A1UEAxMLR1RTIFJvb3QgUjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw +WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz +IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjOPQIBBgUrgQQAIgNi +AATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzuhXyi +QHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvR +HYqjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBSATNbrdP9JNqPV2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D +9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/Cr8deVl5c1RxYIigL9zC2L7F8AjEA8GE8 +p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh4rsUecrNIdSUtUlD +-----END CERTIFICATE----- + +# Issuer: CN=Telia Root CA v2 O=Telia Finland Oyj +# Subject: CN=Telia Root CA v2 O=Telia Finland Oyj +# Label: "Telia Root CA v2" +# Serial: 7288924052977061235122729490515358 +# MD5 Fingerprint: 0e:8f:ac:aa:82:df:85:b1:f4:dc:10:1c:fc:99:d9:48 +# SHA1 Fingerprint: b9:99:cd:d1:73:50:8a:c4:47:05:08:9c:8c:88:fb:be:a0:2b:40:cd +# SHA256 Fingerprint: 24:2b:69:74:2f:cb:1e:5b:2a:bf:98:89:8b:94:57:21:87:54:4e:5b:4d:99:11:78:65:73:62:1f:6a:74:b8:2c +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIPAWdfJ9b+euPkrL4JWwWeMA0GCSqGSIb3DQEBCwUAMEQx +CzAJBgNVBAYTAkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UE +AwwQVGVsaWEgUm9vdCBDQSB2MjAeFw0xODExMjkxMTU1NTRaFw00MzExMjkxMTU1 +NTRaMEQxCzAJBgNVBAYTAkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZ +MBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2MjCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBALLQPwe84nvQa5n44ndp586dpAO8gm2h/oFlH0wnrI4AuhZ76zBq +AMCzdGh+sq/H1WKzej9Qyow2RCRj0jbpDIX2Q3bVTKFgcmfiKDOlyzG4OiIjNLh9 +vVYiQJ3q9HsDrWj8soFPmNB06o3lfc1jw6P23pLCWBnglrvFxKk9pXSW/q/5iaq9 +lRdU2HhE8Qx3FZLgmEKnpNaqIJLNwaCzlrI6hEKNfdWV5Nbb6WLEWLN5xYzTNTOD +n3WhUidhOPFZPY5Q4L15POdslv5e2QJltI5c0BE0312/UqeBAMN/mUWZFdUXyApT +7GPzmX3MaRKGwhfwAZ6/hLzRUssbkmbOpFPlob/E2wnW5olWK8jjfN7j/4nlNW4o +6GwLI1GpJQXrSPjdscr6bAhR77cYbETKJuFzxokGgeWKrLDiKca5JLNrRBH0pUPC +TEPlcDaMtjNXepUugqD0XBCzYYP2AgWGLnwtbNwDRm41k9V6lS/eINhbfpSQBGq6 +WT0EBXWdN6IOLj3rwaRSg/7Qa9RmjtzG6RJOHSpXqhC8fF6CfaamyfItufUXJ63R +DolUK5X6wK0dmBR4M0KGCqlztft0DbcbMBnEWg4cJ7faGND/isgFuvGqHKI3t+ZI +pEYslOqodmJHixBTB0hXbOKSTbauBcvcwUpej6w9GU7C7WB1K9vBykLVAgMBAAGj +YzBhMB8GA1UdIwQYMBaAFHKs5DN5qkWH9v2sHZ7Wxy+G2CQ5MB0GA1UdDgQWBBRy +rOQzeapFh/b9rB2e1scvhtgkOTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAoDtZpwmUPjaE0n4vOaWWl/oRrfxn83EJ +8rKJhGdEr7nv7ZbsnGTbMjBvZ5qsfl+yqwE2foH65IRe0qw24GtixX1LDoJt0nZi +0f6X+J8wfBj5tFJ3gh1229MdqfDBmgC9bXXYfef6xzijnHDoRnkDry5023X4blMM +A8iZGok1GTzTyVR8qPAs5m4HeW9q4ebqkYJpCh3DflminmtGFZhb069GHWLIzoBS +SRE/yQQSwxN8PzuKlts8oB4KtItUsiRnDe+Cy748fdHif64W1lZYudogsYMVoe+K +TTJvQS8TUoKU1xrBeKJR3Stwbbca+few4GeXVtt8YVMJAygCQMez2P2ccGrGKMOF +6eLtGpOg3kuYooQ+BXcBlj37tCAPnHICehIv1aO6UXivKitEZU61/Qrowc15h2Er +3oBXRb9n8ZuRXqWk7FlIEA04x7D6w0RtBPV4UBySllva9bguulvP5fBqnUsvWHMt +Ty3EHD70sz+rFQ47GUGKpMFXEmZxTPpT41frYpUJnlTd0cI8Vzy9OK2YZLe4A5pT +VmBds9hCG1xLEooc6+t9xnppxyd/pPiL8uSUZodL6ZQHCRJ5irLrdATczvREWeAW +ysUsWNc8e89ihmpQfTU2Zqf7N+cox9jQraVplI/owd8k+BsHMYeB2F326CjYSlKA +rBPuUBQemMc= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST BR Root CA 1 2020 O=D-Trust GmbH +# Subject: CN=D-TRUST BR Root CA 1 2020 O=D-Trust GmbH +# Label: "D-TRUST BR Root CA 1 2020" +# Serial: 165870826978392376648679885835942448534 +# MD5 Fingerprint: b5:aa:4b:d5:ed:f7:e3:55:2e:8f:72:0a:f3:75:b8:ed +# SHA1 Fingerprint: 1f:5b:98:f0:e3:b5:f7:74:3c:ed:e6:b0:36:7d:32:cd:f4:09:41:67 +# SHA256 Fingerprint: e5:9a:aa:81:60:09:c2:2b:ff:5b:25:ba:d3:7d:f3:06:f0:49:79:7c:1f:81:d8:5a:b0:89:e6:57:bd:8f:00:44 +-----BEGIN CERTIFICATE----- +MIIC2zCCAmCgAwIBAgIQfMmPK4TX3+oPyWWa00tNljAKBggqhkjOPQQDAzBIMQsw +CQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRS +VVNUIEJSIFJvb3QgQ0EgMSAyMDIwMB4XDTIwMDIxMTA5NDUwMFoXDTM1MDIxMTA5 +NDQ1OVowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEiMCAG +A1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDEgMjAyMDB2MBAGByqGSM49AgEGBSuB +BAAiA2IABMbLxyjR+4T1mu9CFCDhQ2tuda38KwOE1HaTJddZO0Flax7mNCq7dPYS +zuht56vkPE4/RAiLzRZxy7+SmfSk1zxQVFKQhYN4lGdnoxwJGT11NIXe7WB9xwy0 +QVK5buXuQqOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHOREKv/ +VbNafAkl1bK6CKBrqx9tMA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6g +PKA6hjhodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2JyX3Jvb3Rf +Y2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5l +dC9DTj1ELVRSVVNUJTIwQlIlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxPPUQtVHJ1 +c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjO +PQQDAwNpADBmAjEAlJAtE/rhY/hhY+ithXhUkZy4kzg+GkHaQBZTQgjKL47xPoFW +wKrY7RjEsK70PvomAjEA8yjixtsrmfu3Ubgko6SUeho/5jbiA1czijDLgsfWFBHV +dWNbFJWcHwHP2NVypw87 +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST EV Root CA 1 2020 O=D-Trust GmbH +# Subject: CN=D-TRUST EV Root CA 1 2020 O=D-Trust GmbH +# Label: "D-TRUST EV Root CA 1 2020" +# Serial: 126288379621884218666039612629459926992 +# MD5 Fingerprint: 8c:2d:9d:70:9f:48:99:11:06:11:fb:e9:cb:30:c0:6e +# SHA1 Fingerprint: 61:db:8c:21:59:69:03:90:d8:7c:9c:12:86:54:cf:9d:3d:f4:dd:07 +# SHA256 Fingerprint: 08:17:0d:1a:a3:64:53:90:1a:2f:95:92:45:e3:47:db:0c:8d:37:ab:aa:bc:56:b8:1a:a1:00:dc:95:89:70:db +-----BEGIN CERTIFICATE----- +MIIC2zCCAmCgAwIBAgIQXwJB13qHfEwDo6yWjfv/0DAKBggqhkjOPQQDAzBIMQsw +CQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRS +VVNUIEVWIFJvb3QgQ0EgMSAyMDIwMB4XDTIwMDIxMTEwMDAwMFoXDTM1MDIxMTA5 +NTk1OVowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEiMCAG +A1UEAxMZRC1UUlVTVCBFViBSb290IENBIDEgMjAyMDB2MBAGByqGSM49AgEGBSuB +BAAiA2IABPEL3YZDIBnfl4XoIkqbz52Yv7QFJsnL46bSj8WeeHsxiamJrSc8ZRCC +/N/DnU7wMyPE0jL1HLDfMxddxfCxivnvubcUyilKwg+pf3VlSSowZ/Rk99Yad9rD +wpdhQntJraOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH8QARY3 +OqQo5FD4pPfsazK2/umLMA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6g +PKA6hjhodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2V2X3Jvb3Rf +Y2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5l +dC9DTj1ELVRSVVNUJTIwRVYlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxPPUQtVHJ1 +c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjO +PQQDAwNpADBmAjEAyjzGKnXCXnViOTYAYFqLwZOZzNnbQTs7h5kXO9XMT8oi96CA +y/m0sRtW9XLS/BnRAjEAkfcwkz8QRitxpNA7RJvAKQIFskF3UfN5Wp6OFKBOQtJb +gfM0agPnIjhQW+0ZT0MW +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert TLS ECC P384 Root G5 O=DigiCert, Inc. +# Subject: CN=DigiCert TLS ECC P384 Root G5 O=DigiCert, Inc. +# Label: "DigiCert TLS ECC P384 Root G5" +# Serial: 13129116028163249804115411775095713523 +# MD5 Fingerprint: d3:71:04:6a:43:1c:db:a6:59:e1:a8:a3:aa:c5:71:ed +# SHA1 Fingerprint: 17:f3:de:5e:9f:0f:19:e9:8e:f6:1f:32:26:6e:20:c4:07:ae:30:ee +# SHA256 Fingerprint: 01:8e:13:f0:77:25:32:cf:80:9b:d1:b1:72:81:86:72:83:fc:48:c6:e1:3b:e9:c6:98:12:85:4a:49:0c:1b:05 +-----BEGIN CERTIFICATE----- +MIICGTCCAZ+gAwIBAgIQCeCTZaz32ci5PhwLBCou8zAKBggqhkjOPQQDAzBOMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJjAkBgNVBAMTHURp +Z2lDZXJ0IFRMUyBFQ0MgUDM4NCBSb290IEc1MB4XDTIxMDExNTAwMDAwMFoXDTQ2 +MDExNDIzNTk1OVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJ +bmMuMSYwJAYDVQQDEx1EaWdpQ2VydCBUTFMgRUNDIFAzODQgUm9vdCBHNTB2MBAG +ByqGSM49AgEGBSuBBAAiA2IABMFEoc8Rl1Ca3iOCNQfN0MsYndLxf3c1TzvdlHJS +7cI7+Oz6e2tYIOyZrsn8aLN1udsJ7MgT9U7GCh1mMEy7H0cKPGEQQil8pQgO4CLp +0zVozptjn4S1mU1YoI71VOeVyaNCMEAwHQYDVR0OBBYEFMFRRVBZqz7nLFr6ICIS +B4CIfBFqMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49 +BAMDA2gAMGUCMQCJao1H5+z8blUD2WdsJk6Dxv3J+ysTvLd6jLRl0mlpYxNjOyZQ +LgGheQaRnUi/wr4CMEfDFXuxoJGZSZOoPHzoRgaLLPIxAJSdYsiJvRmEFOml+wG4 +DXZDjC5Ty3zfDBeWUA== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert TLS RSA4096 Root G5 O=DigiCert, Inc. +# Subject: CN=DigiCert TLS RSA4096 Root G5 O=DigiCert, Inc. +# Label: "DigiCert TLS RSA4096 Root G5" +# Serial: 11930366277458970227240571539258396554 +# MD5 Fingerprint: ac:fe:f7:34:96:a9:f2:b3:b4:12:4b:e4:27:41:6f:e1 +# SHA1 Fingerprint: a7:88:49:dc:5d:7c:75:8c:8c:de:39:98:56:b3:aa:d0:b2:a5:71:35 +# SHA256 Fingerprint: 37:1a:00:dc:05:33:b3:72:1a:7e:eb:40:e8:41:9e:70:79:9d:2b:0a:0f:2c:1d:80:69:31:65:f7:ce:c4:ad:75 +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCPm0eKj6ftpqMzeJ3nzPijANBgkqhkiG9w0BAQwFADBN +MQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMT +HERpZ2lDZXJ0IFRMUyBSU0E0MDk2IFJvb3QgRzUwHhcNMjEwMTE1MDAwMDAwWhcN +NDYwMTE0MjM1OTU5WjBNMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQs +IEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0MDk2IFJvb3QgRzUwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz0PTJeRGd/fxmgefM1eS87IE+ +ajWOLrfn3q/5B03PMJ3qCQuZvWxX2hhKuHisOjmopkisLnLlvevxGs3npAOpPxG0 +2C+JFvuUAT27L/gTBaF4HI4o4EXgg/RZG5Wzrn4DReW+wkL+7vI8toUTmDKdFqgp +wgscONyfMXdcvyej/Cestyu9dJsXLfKB2l2w4SMXPohKEiPQ6s+d3gMXsUJKoBZM +pG2T6T867jp8nVid9E6P/DsjyG244gXazOvswzH016cpVIDPRFtMbzCe88zdH5RD +nU1/cHAN1DrRN/BsnZvAFJNY781BOHW8EwOVfH/jXOnVDdXifBBiqmvwPXbzP6Po +sMH976pXTayGpxi0KcEsDr9kvimM2AItzVwv8n/vFfQMFawKsPHTDU9qTXeXAaDx +Zre3zu/O7Oyldcqs4+Fj97ihBMi8ez9dLRYiVu1ISf6nL3kwJZu6ay0/nTvEF+cd +Lvvyz6b84xQslpghjLSR6Rlgg/IwKwZzUNWYOwbpx4oMYIwo+FKbbuH2TbsGJJvX +KyY//SovcfXWJL5/MZ4PbeiPT02jP/816t9JXkGPhvnxd3lLG7SjXi/7RgLQZhNe +XoVPzthwiHvOAbWWl9fNff2C+MIkwcoBOU+NosEUQB+cZtUMCUbW8tDRSHZWOkPL +tgoRObqME2wGtZ7P6wIDAQABo0IwQDAdBgNVHQ4EFgQUUTMc7TZArxfTJc1paPKv +TiM+s0EwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN +AQEMBQADggIBAGCmr1tfV9qJ20tQqcQjNSH/0GEwhJG3PxDPJY7Jv0Y02cEhJhxw +GXIeo8mH/qlDZJY6yFMECrZBu8RHANmfGBg7sg7zNOok992vIGCukihfNudd5N7H +PNtQOa27PShNlnx2xlv0wdsUpasZYgcYQF+Xkdycx6u1UQ3maVNVzDl92sURVXLF +O4uJ+DQtpBflF+aZfTCIITfNMBc9uPK8qHWgQ9w+iUuQrm0D4ByjoJYJu32jtyoQ +REtGBzRj7TG5BO6jm5qu5jF49OokYTurWGT/u4cnYiWB39yhL/btp/96j1EuMPik +AdKFOV8BmZZvWltwGUb+hmA+rYAQCd05JS9Yf7vSdPD3Rh9GOUrYU9DzLjtxpdRv +/PNn5AeP3SYZ4Y1b+qOTEZvpyDrDVWiakuFSdjjo4bq9+0/V77PnSIMx8IIh47a+ +p6tv75/fTM8BuGJqIz3nCU2AG3swpMPdB380vqQmsvZB6Akd4yCYqjdP//fx4ilw +MUc/dNAUFvohigLVigmUdy7yWSiLfFCSCmZ4OIN1xLVaqBHG5cGdZlXPU8Sv13WF +qUITVuwhd4GTWgzqltlJyqEI8pc7bZsEGCREjnwB8twl2F6GmrE52/WRMmrRpnCK +ovfepEWFJqgejF0pW8hL2JpqA15w8oVPbEtoL8pU9ozaMv7Da4M/OMZ+ +-----END CERTIFICATE----- + +# Issuer: CN=Certainly Root R1 O=Certainly +# Subject: CN=Certainly Root R1 O=Certainly +# Label: "Certainly Root R1" +# Serial: 188833316161142517227353805653483829216 +# MD5 Fingerprint: 07:70:d4:3e:82:87:a0:fa:33:36:13:f4:fa:33:e7:12 +# SHA1 Fingerprint: a0:50:ee:0f:28:71:f4:27:b2:12:6d:6f:50:96:25:ba:cc:86:42:af +# SHA256 Fingerprint: 77:b8:2c:d8:64:4c:43:05:f7:ac:c5:cb:15:6b:45:67:50:04:03:3d:51:c6:0c:62:02:a8:e0:c3:34:67:d3:a0 +-----BEGIN CERTIFICATE----- +MIIFRzCCAy+gAwIBAgIRAI4P+UuQcWhlM1T01EQ5t+AwDQYJKoZIhvcNAQELBQAw +PTELMAkGA1UEBhMCVVMxEjAQBgNVBAoTCUNlcnRhaW5seTEaMBgGA1UEAxMRQ2Vy +dGFpbmx5IFJvb3QgUjEwHhcNMjEwNDAxMDAwMDAwWhcNNDYwNDAxMDAwMDAwWjA9 +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0 +YWlubHkgUm9vdCBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANA2 +1B/q3avk0bbm+yLA3RMNansiExyXPGhjZjKcA7WNpIGD2ngwEc/csiu+kr+O5MQT +vqRoTNoCaBZ0vrLdBORrKt03H2As2/X3oXyVtwxwhi7xOu9S98zTm/mLvg7fMbed +aFySpvXl8wo0tf97ouSHocavFwDvA5HtqRxOcT3Si2yJ9HiG5mpJoM610rCrm/b0 +1C7jcvk2xusVtyWMOvwlDbMicyF0yEqWYZL1LwsYpfSt4u5BvQF5+paMjRcCMLT5 +r3gajLQ2EBAHBXDQ9DGQilHFhiZ5shGIXsXwClTNSaa/ApzSRKft43jvRl5tcdF5 +cBxGX1HpyTfcX35pe0HfNEXgO4T0oYoKNp43zGJS4YkNKPl6I7ENPT2a/Z2B7yyQ +wHtETrtJ4A5KVpK8y7XdeReJkd5hiXSSqOMyhb5OhaRLWcsrxXiOcVTQAjeZjOVJ +6uBUcqQRBi8LjMFbvrWhsFNunLhgkR9Za/kt9JQKl7XsxXYDVBtlUrpMklZRNaBA +2CnbrlJ2Oy0wQJuK0EJWtLeIAaSHO1OWzaMWj/Nmqhexx2DgwUMFDO6bW2BvBlyH +Wyf5QBGenDPBt+U1VwV/J84XIIwc/PH72jEpSe31C4SnT8H2TsIonPru4K8H+zMR +eiFPCyEQtkA6qyI6BJyLm4SGcprSp6XEtHWRqSsjAgMBAAGjQjBAMA4GA1UdDwEB +/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTgqj8ljZ9EXME66C6u +d0yEPmcM9DANBgkqhkiG9w0BAQsFAAOCAgEAuVevuBLaV4OPaAszHQNTVfSVcOQr +PbA56/qJYv331hgELyE03fFo8NWWWt7CgKPBjcZq91l3rhVkz1t5BXdm6ozTaw3d +8VkswTOlMIAVRQdFGjEitpIAq5lNOo93r6kiyi9jyhXWx8bwPWz8HA2YEGGeEaIi +1wrykXprOQ4vMMM2SZ/g6Q8CRFA3lFV96p/2O7qUpUzpvD5RtOjKkjZUbVwlKNrd +rRT90+7iIgXr0PK3aBLXWopBGsaSpVo7Y0VPv+E6dyIvXL9G+VoDhRNCX8reU9di +taY1BMJH/5n9hN9czulegChB8n3nHpDYT3Y+gjwN/KUD+nsa2UUeYNrEjvn8K8l7 +lcUq/6qJ34IxD3L/DCfXCh5WAFAeDJDBlrXYFIW7pw0WwfgHJBu6haEaBQmAupVj +yTrsJZ9/nbqkRxWbRHDxakvWOF5D8xh+UG7pWijmZeZ3Gzr9Hb4DJqPb1OG7fpYn +Kx3upPvaJVQTA945xsMfTZDsjxtK0hzthZU4UHlG1sGQUDGpXJpuHfUzVounmdLy +yCwzk5Iwx06MZTMQZBf9JBeW0Y3COmor6xOLRPIh80oat3df1+2IpHLlOR+Vnb5n +wXARPbv0+Em34yaXOp/SX3z7wJl8OSngex2/DaeP0ik0biQVy96QXr8axGbqwua6 +OV+KmalBWQewLK8= +-----END CERTIFICATE----- + +# Issuer: CN=Certainly Root E1 O=Certainly +# Subject: CN=Certainly Root E1 O=Certainly +# Label: "Certainly Root E1" +# Serial: 8168531406727139161245376702891150584 +# MD5 Fingerprint: 0a:9e:ca:cd:3e:52:50:c6:36:f3:4b:a3:ed:a7:53:e9 +# SHA1 Fingerprint: f9:e1:6d:dc:01:89:cf:d5:82:45:63:3e:c5:37:7d:c2:eb:93:6f:2b +# SHA256 Fingerprint: b4:58:5f:22:e4:ac:75:6a:4e:86:12:a1:36:1c:5d:9d:03:1a:93:fd:84:fe:bb:77:8f:a3:06:8b:0f:c4:2d:c2 +-----BEGIN CERTIFICATE----- +MIIB9zCCAX2gAwIBAgIQBiUzsUcDMydc+Y2aub/M+DAKBggqhkjOPQQDAzA9MQsw +CQYDVQQGEwJVUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0YWlu +bHkgUm9vdCBFMTAeFw0yMTA0MDEwMDAwMDBaFw00NjA0MDEwMDAwMDBaMD0xCzAJ +BgNVBAYTAlVTMRIwEAYDVQQKEwlDZXJ0YWlubHkxGjAYBgNVBAMTEUNlcnRhaW5s +eSBSb290IEUxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3m/4fxzf7flHh4axpMCK ++IKXgOqPyEpeKn2IaKcBYhSRJHpcnqMXfYqGITQYUBsQ3tA3SybHGWCA6TS9YBk2 +QNYphwk8kXr2vBMj3VlOBF7PyAIcGFPBMdjaIOlEjeR2o0IwQDAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ygYy2R17ikq6+2uI1g4 +hevIIgcwCgYIKoZIzj0EAwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozm +ut6Dacpps6kFtZaSF4fC0urQe87YQVt8rgIwRt7qy12a7DLCZRawTDBcMPPaTnOG +BtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR +-----END CERTIFICATE----- + +# Issuer: CN=Security Communication ECC RootCA1 O=SECOM Trust Systems CO.,LTD. +# Subject: CN=Security Communication ECC RootCA1 O=SECOM Trust Systems CO.,LTD. +# Label: "Security Communication ECC RootCA1" +# Serial: 15446673492073852651 +# MD5 Fingerprint: 7e:43:b0:92:68:ec:05:43:4c:98:ab:5d:35:2e:7e:86 +# SHA1 Fingerprint: b8:0e:26:a9:bf:d2:b2:3b:c0:ef:46:c9:ba:c7:bb:f6:1d:0d:41:41 +# SHA256 Fingerprint: e7:4f:bd:a5:5b:d5:64:c4:73:a3:6b:44:1a:a7:99:c8:a6:8e:07:74:40:e8:28:8b:9f:a1:e5:0e:4b:ba:ca:11 +-----BEGIN CERTIFICATE----- +MIICODCCAb6gAwIBAgIJANZdm7N4gS7rMAoGCCqGSM49BAMDMGExCzAJBgNVBAYT +AkpQMSUwIwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMSswKQYD +VQQDEyJTZWN1cml0eSBDb21tdW5pY2F0aW9uIEVDQyBSb290Q0ExMB4XDTE2MDYx +NjA1MTUyOFoXDTM4MDExODA1MTUyOFowYTELMAkGA1UEBhMCSlAxJTAjBgNVBAoT +HFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKzApBgNVBAMTIlNlY3VyaXR5 +IENvbW11bmljYXRpb24gRUNDIFJvb3RDQTEwdjAQBgcqhkjOPQIBBgUrgQQAIgNi +AASkpW9gAwPDvTH00xecK4R1rOX9PVdu12O/5gSJko6BnOPpR27KkBLIE+Cnnfdl +dB9sELLo5OnvbYUymUSxXv3MdhDYW72ixvnWQuRXdtyQwjWpS4g8EkdtXP9JTxpK +ULGjQjBAMB0GA1UdDgQWBBSGHOf+LaVKiwj+KBH6vqNm+GBZLzAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjAVXUI9/Lbu +9zuxNuie9sRGKEkz0FhDKmMpzE2xtHqiuQ04pV1IKv3LsnNdo4gIxwwCMQDAqy0O +be0YottT6SXbVQjgUMzfRGEWgqtJsLKB7HOHeLRMsmIbEvoWTSVLY70eN9k= +-----END CERTIFICATE----- + +# Issuer: CN=BJCA Global Root CA1 O=BEIJING CERTIFICATE AUTHORITY +# Subject: CN=BJCA Global Root CA1 O=BEIJING CERTIFICATE AUTHORITY +# Label: "BJCA Global Root CA1" +# Serial: 113562791157148395269083148143378328608 +# MD5 Fingerprint: 42:32:99:76:43:33:36:24:35:07:82:9b:28:f9:d0:90 +# SHA1 Fingerprint: d5:ec:8d:7b:4c:ba:79:f4:e7:e8:cb:9d:6b:ae:77:83:10:03:21:6a +# SHA256 Fingerprint: f3:89:6f:88:fe:7c:0a:88:27:66:a7:fa:6a:d2:74:9f:b5:7a:7f:3e:98:fb:76:9c:1f:a7:b0:9c:2c:44:d5:ae +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIQVW9l47TZkGobCdFsPsBsIDANBgkqhkiG9w0BAQsFADBU +MQswCQYDVQQGEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRI +T1JJVFkxHTAbBgNVBAMMFEJKQ0EgR2xvYmFsIFJvb3QgQ0ExMB4XDTE5MTIxOTAz +MTYxN1oXDTQ0MTIxMjAzMTYxN1owVDELMAkGA1UEBhMCQ04xJjAkBgNVBAoMHUJF +SUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRCSkNBIEdsb2Jh +bCBSb290IENBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPFmCL3Z +xRVhy4QEQaVpN3cdwbB7+sN3SJATcmTRuHyQNZ0YeYjjlwE8R4HyDqKYDZ4/N+AZ +spDyRhySsTphzvq3Rp4Dhtczbu33RYx2N95ulpH3134rhxfVizXuhJFyV9xgw8O5 +58dnJCNPYwpj9mZ9S1WnP3hkSWkSl+BMDdMJoDIwOvqfwPKcxRIqLhy1BDPapDgR +at7GGPZHOiJBhyL8xIkoVNiMpTAK+BcWyqw3/XmnkRd4OJmtWO2y3syJfQOcs4ll +5+M7sSKGjwZteAf9kRJ/sGsciQ35uMt0WwfCyPQ10WRjeulumijWML3mG90Vr4Tq +nMfK9Q7q8l0ph49pczm+LiRvRSGsxdRpJQaDrXpIhRMsDQa4bHlW/KNnMoH1V6XK +V0Jp6VwkYe/iMBhORJhVb3rCk9gZtt58R4oRTklH2yiUAguUSiz5EtBP6DF+bHq/ +pj+bOT0CFqMYs2esWz8sgytnOYFcuX6U1WTdno9uruh8W7TXakdI136z1C2OVnZO +z2nxbkRs1CTqjSShGL+9V/6pmTW12xB3uD1IutbB5/EjPtffhZ0nPNRAvQoMvfXn +jSXWgXSHRtQpdaJCbPdzied9v3pKH9MiyRVVz99vfFXQpIsHETdfg6YmV6YBW37+ +WGgHqel62bno/1Afq8K0wM7o6v0PvY1NuLxxAgMBAAGjQjBAMB0GA1UdDgQWBBTF +7+3M2I0hxkjk49cULqcWk+WYATAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAUoKsITQfI/Ki2Pm4rzc2IInRNwPWaZ+4 +YRC6ojGYWUfo0Q0lHhVBDOAqVdVXUsv45Mdpox1NcQJeXyFFYEhcCY5JEMEE3Kli +awLwQ8hOnThJdMkycFRtwUf8jrQ2ntScvd0g1lPJGKm1Vrl2i5VnZu69mP6u775u ++2D2/VnGKhs/I0qUJDAnyIm860Qkmss9vk/Ves6OF8tiwdneHg56/0OGNFK8YT88 +X7vZdrRTvJez/opMEi4r89fO4aL/3Xtw+zuhTaRjAv04l5U/BXCga99igUOLtFkN +SoxUnMW7gZ/NfaXvCyUeOiDbHPwfmGcCCtRzRBPbUYQaVQNW4AB+dAb/OMRyHdOo +P2gxXdMJxy6MW2Pg6Nwe0uxhHvLe5e/2mXZgLR6UcnHGCyoyx5JO1UbXHfmpGQrI ++pXObSOYqgs4rZpWDW+N8TEAiMEXnM0ZNjX+VVOg4DwzX5Ze4jLp3zO7Bkqp2IRz +znfSxqxx4VyjHQy7Ct9f4qNx2No3WqB4K/TUfet27fJhcKVlmtOJNBir+3I+17Q9 +eVzYH6Eze9mCUAyTF6ps3MKCuwJXNq+YJyo5UOGwifUll35HaBC07HPKs5fRJNz2 +YqAo07WjuGS3iGJCz51TzZm+ZGiPTx4SSPfSKcOYKMryMguTjClPPGAyzQWWYezy +r/6zcCwupvI= +-----END CERTIFICATE----- + +# Issuer: CN=BJCA Global Root CA2 O=BEIJING CERTIFICATE AUTHORITY +# Subject: CN=BJCA Global Root CA2 O=BEIJING CERTIFICATE AUTHORITY +# Label: "BJCA Global Root CA2" +# Serial: 58605626836079930195615843123109055211 +# MD5 Fingerprint: 5e:0a:f6:47:5f:a6:14:e8:11:01:95:3f:4d:01:eb:3c +# SHA1 Fingerprint: f4:27:86:eb:6e:b8:6d:88:31:67:02:fb:ba:66:a4:53:00:aa:7a:a6 +# SHA256 Fingerprint: 57:4d:f6:93:1e:27:80:39:66:7b:72:0a:fd:c1:60:0f:c2:7e:b6:6d:d3:09:29:79:fb:73:85:64:87:21:28:82 +-----BEGIN CERTIFICATE----- +MIICJTCCAaugAwIBAgIQLBcIfWQqwP6FGFkGz7RK6zAKBggqhkjOPQQDAzBUMQsw +CQYDVQQGEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJ +VFkxHTAbBgNVBAMMFEJKQ0EgR2xvYmFsIFJvb3QgQ0EyMB4XDTE5MTIxOTAzMTgy +MVoXDTQ0MTIxMjAzMTgyMVowVDELMAkGA1UEBhMCQ04xJjAkBgNVBAoMHUJFSUpJ +TkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRCSkNBIEdsb2JhbCBS +b290IENBMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABJ3LgJGNU2e1uVCxA/jlSR9B +IgmwUVJY1is0j8USRhTFiy8shP8sbqjV8QnjAyEUxEM9fMEsxEtqSs3ph+B99iK+ ++kpRuDCK/eHeGBIK9ke35xe/J4rUQUyWPGCWwf0VHKNCMEAwHQYDVR0OBBYEFNJK +sVF/BvDRgh9Obl+rg/xI1LCRMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMAoGCCqGSM49BAMDA2gAMGUCMBq8W9f+qdJUDkpd0m2xQNz0Q9XSSpkZElaA +94M04TVOSG0ED1cxMDAtsaqdAzjbBgIxAMvMh1PLet8gUXOQwKhbYdDFUDn9hf7B +43j4ptZLvZuHjw/l1lOWqzzIQNph91Oj9w== +-----END CERTIFICATE----- + +# Issuer: CN=Sectigo Public Server Authentication Root E46 O=Sectigo Limited +# Subject: CN=Sectigo Public Server Authentication Root E46 O=Sectigo Limited +# Label: "Sectigo Public Server Authentication Root E46" +# Serial: 88989738453351742415770396670917916916 +# MD5 Fingerprint: 28:23:f8:b2:98:5c:37:16:3b:3e:46:13:4e:b0:b3:01 +# SHA1 Fingerprint: ec:8a:39:6c:40:f0:2e:bc:42:75:d4:9f:ab:1c:1a:5b:67:be:d2:9a +# SHA256 Fingerprint: c9:0f:26:f0:fb:1b:40:18:b2:22:27:51:9b:5c:a2:b5:3e:2c:a5:b3:be:5c:f1:8e:fe:1b:ef:47:38:0c:53:83 +-----BEGIN CERTIFICATE----- +MIICOjCCAcGgAwIBAgIQQvLM2htpN0RfFf51KBC49DAKBggqhkjOPQQDAzBfMQsw +CQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1T +ZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwHhcN +MjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5WjBfMQswCQYDVQQGEwJHQjEYMBYG +A1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBT +ZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAR2+pmpbiDt+dd34wc7qNs9Xzjoq1WmVk/WSOrsfy2qw7LFeeyZYX8QeccC +WvkEN/U0NSt3zn8gj1KjAIns1aeibVvjS5KToID1AZTc8GgHHs3u/iVStSBDHBv+ +6xnOQ6OjQjBAMB0GA1UdDgQWBBTRItpMWfFLXyY4qp3W7usNw/upYTAOBgNVHQ8B +Af8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNnADBkAjAn7qRa +qCG76UeXlImldCBteU/IvZNeWBj7LRoAasm4PdCkT0RHlAFWovgzJQxC36oCMB3q +4S6ILuH5px0CMk7yn2xVdOOurvulGu7t0vzCAxHrRVxgED1cf5kDW21USAGKcw== +-----END CERTIFICATE----- + +# Issuer: CN=Sectigo Public Server Authentication Root R46 O=Sectigo Limited +# Subject: CN=Sectigo Public Server Authentication Root R46 O=Sectigo Limited +# Label: "Sectigo Public Server Authentication Root R46" +# Serial: 156256931880233212765902055439220583700 +# MD5 Fingerprint: 32:10:09:52:00:d5:7e:6c:43:df:15:c0:b1:16:93:e5 +# SHA1 Fingerprint: ad:98:f9:f3:e4:7d:75:3b:65:d4:82:b3:a4:52:17:bb:6e:f5:e4:38 +# SHA256 Fingerprint: 7b:b6:47:a6:2a:ee:ac:88:bf:25:7a:a5:22:d0:1f:fe:a3:95:e0:ab:45:c7:3f:93:f6:56:54:ec:38:f2:5a:06 +-----BEGIN CERTIFICATE----- +MIIFijCCA3KgAwIBAgIQdY39i658BwD6qSWn4cetFDANBgkqhkiG9w0BAQwFADBf +MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQD +Ey1TZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYw +HhcNMjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5WjBfMQswCQYDVQQGEwJHQjEY +MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1Ymxp +YyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCTvtU2UnXYASOgHEdCSe5jtrch/cSV1UgrJnwUUxDa +ef0rty2k1Cz66jLdScK5vQ9IPXtamFSvnl0xdE8H/FAh3aTPaE8bEmNtJZlMKpnz +SDBh+oF8HqcIStw+KxwfGExxqjWMrfhu6DtK2eWUAtaJhBOqbchPM8xQljeSM9xf +iOefVNlI8JhD1mb9nxc4Q8UBUQvX4yMPFF1bFOdLvt30yNoDN9HWOaEhUTCDsG3X +ME6WW5HwcCSrv0WBZEMNvSE6Lzzpng3LILVCJ8zab5vuZDCQOc2TZYEhMbUjUDM3 +IuM47fgxMMxF/mL50V0yeUKH32rMVhlATc6qu/m1dkmU8Sf4kaWD5QazYw6A3OAS +VYCmO2a0OYctyPDQ0RTp5A1NDvZdV3LFOxxHVp3i1fuBYYzMTYCQNFu31xR13NgE +SJ/AwSiItOkcyqex8Va3e0lMWeUgFaiEAin6OJRpmkkGj80feRQXEgyDet4fsZfu ++Zd4KKTIRJLpfSYFplhym3kT2BFfrsU4YjRosoYwjviQYZ4ybPUHNs2iTG7sijbt +8uaZFURww3y8nDnAtOFr94MlI1fZEoDlSfB1D++N6xybVCi0ITz8fAr/73trdf+L +HaAZBav6+CuBQug4urv7qv094PPK306Xlynt8xhW6aWWrL3DkJiy4Pmi1KZHQ3xt +zwIDAQABo0IwQDAdBgNVHQ4EFgQUVnNYZJX5khqwEioEYnmhQBWIIUkwDgYDVR0P +AQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAC9c +mTz8Bl6MlC5w6tIyMY208FHVvArzZJ8HXtXBc2hkeqK5Duj5XYUtqDdFqij0lgVQ +YKlJfp/imTYpE0RHap1VIDzYm/EDMrraQKFz6oOht0SmDpkBm+S8f74TlH7Kph52 +gDY9hAaLMyZlbcp+nv4fjFg4exqDsQ+8FxG75gbMY/qB8oFM2gsQa6H61SilzwZA +Fv97fRheORKkU55+MkIQpiGRqRxOF3yEvJ+M0ejf5lG5Nkc/kLnHvALcWxxPDkjB +JYOcCj+esQMzEhonrPcibCTRAUH4WAP+JWgiH5paPHxsnnVI84HxZmduTILA7rpX +DhjvLpr3Etiga+kFpaHpaPi8TD8SHkXoUsCjvxInebnMMTzD9joiFgOgyY9mpFui +TdaBJQbpdqQACj7LzTWb4OE4y2BThihCQRxEV+ioratF4yUQvNs+ZUH7G6aXD+u5 +dHn5HrwdVw1Hr8Mvn4dGp+smWg9WY7ViYG4A++MnESLn/pmPNPW56MORcr3Ywx65 +LvKRRFHQV80MNNVIIb/bE/FmJUNS0nAiNs2fxBx1IK1jcmMGDw4nztJqDby1ORrp +0XZ60Vzk50lJLVU3aPAaOpg+VBeHVOmmJ1CJeyAvP/+/oYtKR5j/K3tJPsMpRmAY +QqszKbrAKbkTidOIijlBO8n9pu0f9GBj39ItVQGL +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com TLS RSA Root CA 2022 O=SSL Corporation +# Subject: CN=SSL.com TLS RSA Root CA 2022 O=SSL Corporation +# Label: "SSL.com TLS RSA Root CA 2022" +# Serial: 148535279242832292258835760425842727825 +# MD5 Fingerprint: d8:4e:c6:59:30:d8:fe:a0:d6:7a:5a:2c:2c:69:78:da +# SHA1 Fingerprint: ec:2c:83:40:72:af:26:95:10:ff:0e:f2:03:ee:31:70:f6:78:9d:ca +# SHA256 Fingerprint: 8f:af:7d:2e:2c:b4:70:9b:b8:e0:b3:36:66:bf:75:a5:dd:45:b5:de:48:0f:8e:a8:d4:bf:e6:be:bc:17:f2:ed +-----BEGIN CERTIFICATE----- +MIIFiTCCA3GgAwIBAgIQb77arXO9CEDii02+1PdbkTANBgkqhkiG9w0BAQsFADBO +MQswCQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQD +DBxTU0wuY29tIFRMUyBSU0EgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzQyMloX +DTQ2MDgxOTE2MzQyMVowTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jw +b3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgUlNBIFJvb3QgQ0EgMjAyMjCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANCkCXJPQIgSYT41I57u9nTP +L3tYPc48DRAokC+X94xI2KDYJbFMsBFMF3NQ0CJKY7uB0ylu1bUJPiYYf7ISf5OY +t6/wNr/y7hienDtSxUcZXXTzZGbVXcdotL8bHAajvI9AI7YexoS9UcQbOcGV0ins +S657Lb85/bRi3pZ7QcacoOAGcvvwB5cJOYF0r/c0WRFXCsJbwST0MXMwgsadugL3 +PnxEX4MN8/HdIGkWCVDi1FW24IBydm5MR7d1VVm0U3TZlMZBrViKMWYPHqIbKUBO +L9975hYsLfy/7PO0+r4Y9ptJ1O4Fbtk085zx7AGL0SDGD6C1vBdOSHtRwvzpXGk3 +R2azaPgVKPC506QVzFpPulJwoxJF3ca6TvvC0PeoUidtbnm1jPx7jMEWTO6Af77w +dr5BUxIzrlo4QqvXDz5BjXYHMtWrifZOZ9mxQnUjbvPNQrL8VfVThxc7wDNY8VLS ++YCk8OjwO4s4zKTGkH8PnP2L0aPP2oOnaclQNtVcBdIKQXTbYxE3waWglksejBYS +d66UNHsef8JmAOSqg+qKkK3ONkRN0VHpvB/zagX9wHQfJRlAUW7qglFA35u5CCoG +AtUjHBPW6dvbxrB6y3snm/vg1UYk7RBLY0ulBY+6uB0rpvqR4pJSvezrZ5dtmi2f +gTIFZzL7SAg/2SW4BCUvAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j +BBgwFoAU+y437uOEeicuzRk1sTN8/9REQrkwHQYDVR0OBBYEFPsuN+7jhHonLs0Z +NbEzfP/UREK5MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAjYlt +hEUY8U+zoO9opMAdrDC8Z2awms22qyIZZtM7QbUQnRC6cm4pJCAcAZli05bg4vsM +QtfhWsSWTVTNj8pDU/0quOr4ZcoBwq1gaAafORpR2eCNJvkLTqVTJXojpBzOCBvf +R4iyrT7gJ4eLSYwfqUdYe5byiB0YrrPRpgqU+tvT5TgKa3kSM/tKWTcWQA673vWJ +DPFs0/dRa1419dvAJuoSc06pkZCmF8NsLzjUo3KUQyxi4U5cMj29TH0ZR6LDSeeW +P4+a0zvkEdiLA9z2tmBVGKaBUfPhqBVq6+AL8BQx1rmMRTqoENjwuSfr98t67wVy +lrXEj5ZzxOhWc5y8aVFjvO9nHEMaX3cZHxj4HCUp+UmZKbaSPaKDN7EgkaibMOlq +bLQjk2UEqxHzDh1TJElTHaE/nUiSEeJ9DU/1172iWD54nR4fK/4huxoTtrEoZP2w +AgDHbICivRZQIA9ygV/MlP+7mea6kMvq+cYMwq7FGc4zoWtcu358NFcXrfA/rs3q +r5nsLFR+jM4uElZI7xc7P0peYNLcdDa8pUNjyw9bowJWCZ4kLOGGgYz+qxcs+sji +Mho6/4UIyYOf8kpIEFR3N+2ivEC+5BB09+Rbu7nzifmPQdjH5FCQNYA+HLhNkNPU +98OwoX6EyneSMSy4kLGCenROmxMmtNVQZlR4rmA= +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com TLS ECC Root CA 2022 O=SSL Corporation +# Subject: CN=SSL.com TLS ECC Root CA 2022 O=SSL Corporation +# Label: "SSL.com TLS ECC Root CA 2022" +# Serial: 26605119622390491762507526719404364228 +# MD5 Fingerprint: 99:d7:5c:f1:51:36:cc:e9:ce:d9:19:2e:77:71:56:c5 +# SHA1 Fingerprint: 9f:5f:d9:1a:54:6d:f5:0c:71:f0:ee:7a:bd:17:49:98:84:73:e2:39 +# SHA256 Fingerprint: c3:2f:fd:9f:46:f9:36:d1:6c:36:73:99:09:59:43:4b:9a:d6:0a:af:bb:9e:7c:f3:36:54:f1:44:cc:1b:a1:43 +-----BEGIN CERTIFICATE----- +MIICOjCCAcCgAwIBAgIQFAP1q/s3ixdAW+JDsqXRxDAKBggqhkjOPQQDAzBOMQsw +CQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxT +U0wuY29tIFRMUyBFQ0MgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzM0OFoXDTQ2 +MDgxOTE2MzM0N1owTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jwb3Jh +dGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgRUNDIFJvb3QgQ0EgMjAyMjB2MBAG +ByqGSM49AgEGBSuBBAAiA2IABEUpNXP6wrgjzhR9qLFNoFs27iosU8NgCTWyJGYm +acCzldZdkkAZDsalE3D07xJRKF3nzL35PIXBz5SQySvOkkJYWWf9lCcQZIxPBLFN +SeR7T5v15wj4A4j3p8OSSxlUgaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSME +GDAWgBSJjy+j6CugFFR781a4Jl9nOAuc0DAdBgNVHQ4EFgQUiY8vo+groBRUe/NW +uCZfZzgLnNAwDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2gAMGUCMFXjIlbp +15IkWE8elDIPDAI2wv2sdDJO4fscgIijzPvX6yv/N33w7deedWo1dlJF4AIxAMeN +b0Igj762TVntd00pxCAgRWSGOlDGxK0tk/UYfXLtqc/ErFc2KAhl3zx5Zn6g6g== +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot Root CA ECC TLS 2021 O=Atos +# Subject: CN=Atos TrustedRoot Root CA ECC TLS 2021 O=Atos +# Label: "Atos TrustedRoot Root CA ECC TLS 2021" +# Serial: 81873346711060652204712539181482831616 +# MD5 Fingerprint: 16:9f:ad:f1:70:ad:79:d6:ed:29:b4:d1:c5:79:70:a8 +# SHA1 Fingerprint: 9e:bc:75:10:42:b3:02:f3:81:f4:f7:30:62:d4:8f:c3:a7:51:b2:dd +# SHA256 Fingerprint: b2:fa:e5:3e:14:cc:d7:ab:92:12:06:47:01:ae:27:9c:1d:89:88:fa:cb:77:5f:a8:a0:08:91:4e:66:39:88:a8 +-----BEGIN CERTIFICATE----- +MIICFTCCAZugAwIBAgIQPZg7pmY9kGP3fiZXOATvADAKBggqhkjOPQQDAzBMMS4w +LAYDVQQDDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgRUNDIFRMUyAyMDIxMQ0w +CwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0yMTA0MjIwOTI2MjNaFw00MTA0 +MTcwOTI2MjJaMEwxLjAsBgNVBAMMJUF0b3MgVHJ1c3RlZFJvb3QgUm9vdCBDQSBF +Q0MgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRFMHYwEAYHKoZI +zj0CAQYFK4EEACIDYgAEloZYKDcKZ9Cg3iQZGeHkBQcfl+3oZIK59sRxUM6KDP/X +tXa7oWyTbIOiaG6l2b4siJVBzV3dscqDY4PMwL502eCdpO5KTlbgmClBk1IQ1SQ4 +AjJn8ZQSb+/Xxd4u/RmAo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR2 +KCXWfeBmmnoJsmo7jjPXNtNPojAOBgNVHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwMD +aAAwZQIwW5kp85wxtolrbNa9d+F851F+uDrNozZffPc8dz7kUK2o59JZDCaOMDtu +CCrCp1rIAjEAmeMM56PDr9NJLkaCI2ZdyQAUEv049OGYa3cpetskz2VAv9LcjBHo +9H1/IISpQuQo +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot Root CA RSA TLS 2021 O=Atos +# Subject: CN=Atos TrustedRoot Root CA RSA TLS 2021 O=Atos +# Label: "Atos TrustedRoot Root CA RSA TLS 2021" +# Serial: 111436099570196163832749341232207667876 +# MD5 Fingerprint: d4:d3:46:b8:9a:c0:9c:76:5d:9e:3a:c3:b9:99:31:d2 +# SHA1 Fingerprint: 18:52:3b:0d:06:37:e4:d6:3a:df:23:e4:98:fb:5b:16:fb:86:74:48 +# SHA256 Fingerprint: 81:a9:08:8e:a5:9f:b3:64:c5:48:a6:f8:55:59:09:9b:6f:04:05:ef:bf:18:e5:32:4e:c9:f4:57:ba:00:11:2f +-----BEGIN CERTIFICATE----- +MIIFZDCCA0ygAwIBAgIQU9XP5hmTC/srBRLYwiqipDANBgkqhkiG9w0BAQwFADBM +MS4wLAYDVQQDDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgUlNBIFRMUyAyMDIx +MQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0yMTA0MjIwOTIxMTBaFw00 +MTA0MTcwOTIxMDlaMEwxLjAsBgNVBAMMJUF0b3MgVHJ1c3RlZFJvb3QgUm9vdCBD +QSBSU0EgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRFMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtoAOxHm9BYx9sKOdTSJNy/BBl01Z +4NH+VoyX8te9j2y3I49f1cTYQcvyAh5x5en2XssIKl4w8i1mx4QbZFc4nXUtVsYv +Ye+W/CBGvevUez8/fEc4BKkbqlLfEzfTFRVOvV98r61jx3ncCHvVoOX3W3WsgFWZ +kmGbzSoXfduP9LVq6hdKZChmFSlsAvFr1bqjM9xaZ6cF4r9lthawEO3NUDPJcFDs +GY6wx/J0W2tExn2WuZgIWWbeKQGb9Cpt0xU6kGpn8bRrZtkh68rZYnxGEFzedUln +nkL5/nWpo63/dgpnQOPF943HhZpZnmKaau1Fh5hnstVKPNe0OwANwI8f4UDErmwh +3El+fsqyjW22v5MvoVw+j8rtgI5Y4dtXz4U2OLJxpAmMkokIiEjxQGMYsluMWuPD +0xeqqxmjLBvk1cbiZnrXghmmOxYsL3GHX0WelXOTwkKBIROW1527k2gV+p2kHYzy +geBYBr3JtuP2iV2J+axEoctr+hbxx1A9JNr3w+SH1VbxT5Aw+kUJWdo0zuATHAR8 +ANSbhqRAvNncTFd+rrcztl524WWLZt+NyteYr842mIycg5kDcPOvdO3GDjbnvezB +c6eUWsuSZIKmAMFwoW4sKeFYV+xafJlrJaSQOoD0IJ2azsct+bJLKZWD6TWNp0lI +pw9MGZHQ9b8Q4HECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU +dEmZ0f+0emhFdcN+tNzMzjkz2ggwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +DAUAA4ICAQAjQ1MkYlxt/T7Cz1UAbMVWiLkO3TriJQ2VSpfKgInuKs1l+NsW4AmS +4BjHeJi78+xCUvuppILXTdiK/ORO/auQxDh1MoSf/7OwKwIzNsAQkG8dnK/haZPs +o0UvFJ/1TCplQ3IM98P4lYsU84UgYt1UU90s3BiVaU+DR3BAM1h3Egyi61IxHkzJ +qM7F78PRreBrAwA0JrRUITWXAdxfG/F851X6LWh3e9NpzNMOa7pNdkTWwhWaJuyw +xfW70Xp0wmzNxbVe9kzmWy2B27O3Opee7c9GslA9hGCZcbUztVdF5kJHdWoOsAgM +rr3e97sPWD2PAzHoPYJQyi9eDF20l74gNAf0xBLh7tew2VktafcxBPTy+av5EzH4 +AXcOPUIjJsyacmdRIXrMPIWo6iFqO9taPKU0nprALN+AnCng33eU0aKAQv9qTFsR +0PXNor6uzFFcw9VUewyu1rkGd4Di7wcaaMxZUa1+XGdrudviB0JbuAEFWDlN5LuY +o7Ey7Nmj1m+UI/87tyll5gfp77YZ6ufCOB0yiJA8EytuzO+rdwY0d4RPcuSBhPm5 +dDTedk+SKlOxJTnbPP/lPqYO5Wue/9vsL3SD3460s6neFE3/MaNFcyT6lSnMEpcE +oji2jbDwN/zIIX8/syQbPYtuzE2wFg2WHYMfRsCbvUOZ58SWLs5fyQ== +-----END CERTIFICATE----- + +# Issuer: CN=TrustAsia Global Root CA G3 O=TrustAsia Technologies, Inc. +# Subject: CN=TrustAsia Global Root CA G3 O=TrustAsia Technologies, Inc. +# Label: "TrustAsia Global Root CA G3" +# Serial: 576386314500428537169965010905813481816650257167 +# MD5 Fingerprint: 30:42:1b:b7:bb:81:75:35:e4:16:4f:53:d2:94:de:04 +# SHA1 Fingerprint: 63:cf:b6:c1:27:2b:56:e4:88:8e:1c:23:9a:b6:2e:81:47:24:c3:c7 +# SHA256 Fingerprint: e0:d3:22:6a:eb:11:63:c2:e4:8f:f9:be:3b:50:b4:c6:43:1b:e7:bb:1e:ac:c5:c3:6b:5d:5e:c5:09:03:9a:08 +-----BEGIN CERTIFICATE----- +MIIFpTCCA42gAwIBAgIUZPYOZXdhaqs7tOqFhLuxibhxkw8wDQYJKoZIhvcNAQEM +BQAwWjELMAkGA1UEBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dp +ZXMsIEluYy4xJDAiBgNVBAMMG1RydXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHMzAe +Fw0yMTA1MjAwMjEwMTlaFw00NjA1MTkwMjEwMTlaMFoxCzAJBgNVBAYTAkNOMSUw +IwYDVQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSQwIgYDVQQDDBtU +cnVzdEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDAMYJhkuSUGwoqZdC+BqmHO1ES6nBBruL7dOoKjbmzTNyPtxNS +T1QY4SxzlZHFZjtqz6xjbYdT8PfxObegQ2OwxANdV6nnRM7EoYNl9lA+sX4WuDqK +AtCWHwDNBSHvBm3dIZwZQ0WhxeiAysKtQGIXBsaqvPPW5vxQfmZCHzyLpnl5hkA1 +nyDvP+uLRx+PjsXUjrYsyUQE49RDdT/VP68czH5GX6zfZBCK70bwkPAPLfSIC7Ep +qq+FqklYqL9joDiR5rPmd2jE+SoZhLsO4fWvieylL1AgdB4SQXMeJNnKziyhWTXA +yB1GJ2Faj/lN03J5Zh6fFZAhLf3ti1ZwA0pJPn9pMRJpxx5cynoTi+jm9WAPzJMs +hH/x/Gr8m0ed262IPfN2dTPXS6TIi/n1Q1hPy8gDVI+lhXgEGvNz8teHHUGf59gX +zhqcD0r83ERoVGjiQTz+LISGNzzNPy+i2+f3VANfWdP3kXjHi3dqFuVJhZBFcnAv +kV34PmVACxmZySYgWmjBNb9Pp1Hx2BErW+Canig7CjoKH8GB5S7wprlppYiU5msT +f9FkPz2ccEblooV7WIQn3MSAPmeamseaMQ4w7OYXQJXZRe0Blqq/DPNL0WP3E1jA +uPP6Z92bfW1K/zJMtSU7/xxnD4UiWQWRkUF3gdCFTIcQcf+eQxuulXUtgQIDAQAB +o2MwYTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEDk5PIj7zjKsK5Xf/Ih +MBY027ySMB0GA1UdDgQWBBRA5OTyI+84yrCuV3/yITAWNNu8kjAOBgNVHQ8BAf8E +BAMCAQYwDQYJKoZIhvcNAQEMBQADggIBACY7UeFNOPMyGLS0XuFlXsSUT9SnYaP4 +wM8zAQLpw6o1D/GUE3d3NZ4tVlFEbuHGLige/9rsR82XRBf34EzC4Xx8MnpmyFq2 +XFNFV1pF1AWZLy4jVe5jaN/TG3inEpQGAHUNcoTpLrxaatXeL1nHo+zSh2bbt1S1 +JKv0Q3jbSwTEb93mPmY+KfJLaHEih6D4sTNjduMNhXJEIlU/HHzp/LgV6FL6qj6j +ITk1dImmasI5+njPtqzn59ZW/yOSLlALqbUHM/Q4X6RJpstlcHboCoWASzY9M/eV +VHUl2qzEc4Jl6VL1XP04lQJqaTDFHApXB64ipCz5xUG3uOyfT0gA+QEEVcys+TIx +xHWVBqB/0Y0n3bOppHKH/lmLmnp0Ft0WpWIp6zqW3IunaFnT63eROfjXy9mPX1on +AX1daBli2MjN9LdyR75bl87yraKZk62Uy5P2EgmVtqvXO9A/EcswFi55gORngS1d +7XB4tmBZrOFdRWOPyN9yaFvqHbgB8X7754qz41SgOAngPN5C8sLtLpvzHzW2Ntjj +gKGLzZlkD8Kqq7HK9W+eQ42EVJmzbsASZthwEPEGNTNDqJwuuhQxzhB/HIbjj9LV ++Hfsm6vxL2PZQl/gZ4FkkfGXL/xuJvYz+NO1+MRiqzFRJQJ6+N1rZdVtTTDIZbpo +FGWsJwt0ivKH +-----END CERTIFICATE----- + +# Issuer: CN=TrustAsia Global Root CA G4 O=TrustAsia Technologies, Inc. +# Subject: CN=TrustAsia Global Root CA G4 O=TrustAsia Technologies, Inc. +# Label: "TrustAsia Global Root CA G4" +# Serial: 451799571007117016466790293371524403291602933463 +# MD5 Fingerprint: 54:dd:b2:d7:5f:d8:3e:ed:7c:e0:0b:2e:cc:ed:eb:eb +# SHA1 Fingerprint: 57:73:a5:61:5d:80:b2:e6:ac:38:82:fc:68:07:31:ac:9f:b5:92:5a +# SHA256 Fingerprint: be:4b:56:cb:50:56:c0:13:6a:52:6d:f4:44:50:8d:aa:36:a0:b5:4f:42:e4:ac:38:f7:2a:f4:70:e4:79:65:4c +-----BEGIN CERTIFICATE----- +MIICVTCCAdygAwIBAgIUTyNkuI6XY57GU4HBdk7LKnQV1tcwCgYIKoZIzj0EAwMw +WjELMAkGA1UEBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dpZXMs +IEluYy4xJDAiBgNVBAMMG1RydXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHNDAeFw0y +MTA1MjAwMjEwMjJaFw00NjA1MTkwMjEwMjJaMFoxCzAJBgNVBAYTAkNOMSUwIwYD +VQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSQwIgYDVQQDDBtUcnVz +dEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATx +s8045CVD5d4ZCbuBeaIVXxVjAd7Cq92zphtnS4CDr5nLrBfbK5bKfFJV4hrhPVbw +LxYI+hW8m7tH5j/uqOFMjPXTNvk4XatwmkcN4oFBButJ+bAp3TPsUKV/eSm4IJij +YzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUpbtKl86zK3+kMd6Xg1mD +pm9xy94wHQYDVR0OBBYEFKW7SpfOsyt/pDHel4NZg6ZvccveMA4GA1UdDwEB/wQE +AwIBBjAKBggqhkjOPQQDAwNnADBkAjBe8usGzEkxn0AAbbd+NvBNEU/zy4k6LHiR +UKNbwMp1JvK/kF0LgoxgKJ/GcJpo5PECMFxYDlZ2z1jD1xCMuo6u47xkdUfFVZDj +/bpV6wfEU6s3qe4hsiFbYI89MvHVI5TWWA== +-----END CERTIFICATE----- + +# Issuer: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH +# Subject: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH +# Label: "Telekom Security TLS ECC Root 2020" +# Serial: 72082518505882327255703894282316633856 +# MD5 Fingerprint: c1:ab:fe:6a:10:2c:03:8d:bc:1c:22:32:c0:85:a7:fd +# SHA1 Fingerprint: c0:f8:96:c5:a9:3b:01:06:21:07:da:18:42:48:bc:e9:9d:88:d5:ec +# SHA256 Fingerprint: 57:8a:f4:de:d0:85:3f:4e:59:98:db:4a:ea:f9:cb:ea:8d:94:5f:60:b6:20:a3:8d:1a:3c:13:b2:bc:7b:a8:e1 +-----BEGIN CERTIFICATE----- +MIICQjCCAcmgAwIBAgIQNjqWjMlcsljN0AFdxeVXADAKBggqhkjOPQQDAzBjMQsw +CQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0eSBH +bWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBFQ0MgUm9vdCAyMDIw +MB4XDTIwMDgyNTA3NDgyMFoXDTQ1MDgyNTIzNTk1OVowYzELMAkGA1UEBhMCREUx +JzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkGA1UE +AwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgRUNDIFJvb3QgMjAyMDB2MBAGByqGSM49 +AgEGBSuBBAAiA2IABM6//leov9Wq9xCazbzREaK9Z0LMkOsVGJDZos0MKiXrPk/O +tdKPD/M12kOLAoC+b1EkHQ9rK8qfwm9QMuU3ILYg/4gND21Ju9sGpIeQkpT0CdDP +f8iAC8GXs7s1J8nCG6NCMEAwHQYDVR0OBBYEFONyzG6VmUex5rNhTNHLq+O6zd6f +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cA +MGQCMHVSi7ekEE+uShCLsoRbQuHmKjYC2qBuGT8lv9pZMo7k+5Dck2TOrbRBR2Di +z6fLHgIwN0GMZt9Ba9aDAEH9L1r3ULRn0SyocddDypwnJJGDSA3PzfdUga/sf+Rn +27iQ7t0l +-----END CERTIFICATE----- + +# Issuer: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH +# Subject: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH +# Label: "Telekom Security TLS RSA Root 2023" +# Serial: 44676229530606711399881795178081572759 +# MD5 Fingerprint: bf:5b:eb:54:40:cd:48:71:c4:20:8d:7d:de:0a:42:f2 +# SHA1 Fingerprint: 54:d3:ac:b3:bd:57:56:f6:85:9d:ce:e5:c3:21:e2:d4:ad:83:d0:93 +# SHA256 Fingerprint: ef:c6:5c:ad:bb:59:ad:b6:ef:e8:4d:a2:23:11:b3:56:24:b7:1b:3b:1e:a0:da:8b:66:55:17:4e:c8:97:86:46 +-----BEGIN CERTIFICATE----- +MIIFszCCA5ugAwIBAgIQIZxULej27HF3+k7ow3BXlzANBgkqhkiG9w0BAQwFADBj +MQswCQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0 +eSBHbWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBSU0EgUm9vdCAy +MDIzMB4XDTIzMDMyODEyMTY0NVoXDTQ4MDMyNzIzNTk1OVowYzELMAkGA1UEBhMC +REUxJzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkG +A1UEAwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgUlNBIFJvb3QgMjAyMzCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAO01oYGA88tKaVvC+1GDrib94W7zgRJ9 +cUD/h3VCKSHtgVIs3xLBGYSJwb3FKNXVS2xE1kzbB5ZKVXrKNoIENqil/Cf2SfHV +cp6R+SPWcHu79ZvB7JPPGeplfohwoHP89v+1VmLhc2o0mD6CuKyVU/QBoCcHcqMA +U6DksquDOFczJZSfvkgdmOGjup5czQRxUX11eKvzWarE4GC+j4NSuHUaQTXtvPM6 +Y+mpFEXX5lLRbtLevOP1Czvm4MS9Q2QTps70mDdsipWol8hHD/BeEIvnHRz+sTug +BTNoBUGCwQMrAcjnj02r6LX2zWtEtefdi+zqJbQAIldNsLGyMcEWzv/9FIS3R/qy +8XDe24tsNlikfLMR0cN3f1+2JeANxdKz+bi4d9s3cXFH42AYTyS2dTd4uaNir73J +co4vzLuu2+QVUhkHM/tqty1LkCiCc/4YizWN26cEar7qwU02OxY2kTLvtkCJkUPg +8qKrBC7m8kwOFjQgrIfBLX7JZkcXFBGk8/ehJImr2BrIoVyxo/eMbcgByU/J7MT8 +rFEz0ciD0cmfHdRHNCk+y7AO+oMLKFjlKdw/fKifybYKu6boRhYPluV75Gp6SG12 +mAWl3G0eQh5C2hrgUve1g8Aae3g1LDj1H/1Joy7SWWO/gLCMk3PLNaaZlSJhZQNg ++y+TS/qanIA7AgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtqeX +gj10hZv3PJ+TmpV5dVKMbUcwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS2 +p5eCPXSFm/c8n5OalXl1UoxtRzANBgkqhkiG9w0BAQwFAAOCAgEAqMxhpr51nhVQ +pGv7qHBFfLp+sVr8WyP6Cnf4mHGCDG3gXkaqk/QeoMPhk9tLrbKmXauw1GLLXrtm +9S3ul0A8Yute1hTWjOKWi0FpkzXmuZlrYrShF2Y0pmtjxrlO8iLpWA1WQdH6DErw +M807u20hOq6OcrXDSvvpfeWxm4bu4uB9tPcy/SKE8YXJN3nptT+/XOR0so8RYgDd +GGah2XsjX/GO1WfoVNpbOms2b/mBsTNHM3dA+VKq3dSDz4V4mZqTuXNnQkYRIer+ +CqkbGmVps4+uFrb2S1ayLfmlyOw7YqPta9BO1UAJpB+Y1zqlklkg5LB9zVtzaL1t +xKITDmcZuI1CfmwMmm6gJC3VRRvcxAIU/oVbZZfKTpBQCHpCNfnqwmbU+AGuHrS+ +w6jv/naaoqYfRvaE7fzbzsQCzndILIyy7MMAo+wsVRjBfhnu4S/yrYObnqsZ38aK +L4x35bcF7DvB7L6Gs4a8wPfc5+pbrrLMtTWGS9DiP7bY+A4A7l3j941Y/8+LN+lj +X273CXE2whJdV/LItM3z7gLfEdxquVeEHVlNjM7IDiPCtyaaEBRx/pOyiriA8A4Q +ntOoUAw3gi/q4Iqd4Sw5/7W0cwDk90imc6y/st53BIe0o82bNSQ3+pCTE4FCxpgm +dTdmQRCsu/WU48IxK63nI1bMNSWSs1A= +-----END CERTIFICATE----- + +# Issuer: CN=TWCA CYBER Root CA O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA CYBER Root CA O=TAIWAN-CA OU=Root CA +# Label: "TWCA CYBER Root CA" +# Serial: 85076849864375384482682434040119489222 +# MD5 Fingerprint: 0b:33:a0:97:52:95:d4:a9:fd:bb:db:6e:a3:55:5b:51 +# SHA1 Fingerprint: f6:b1:1c:1a:83:38:e9:7b:db:b3:a8:c8:33:24:e0:2d:9c:7f:26:66 +# SHA256 Fingerprint: 3f:63:bb:28:14:be:17:4e:c8:b6:43:9c:f0:8d:6d:56:f0:b7:c4:05:88:3a:56:48:a3:34:42:4d:6b:3e:c5:58 +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIQQAE0jMIAAAAAAAAAATzyxjANBgkqhkiG9w0BAQwFADBQ +MQswCQYDVQQGEwJUVzESMBAGA1UEChMJVEFJV0FOLUNBMRAwDgYDVQQLEwdSb290 +IENBMRswGQYDVQQDExJUV0NBIENZQkVSIFJvb3QgQ0EwHhcNMjIxMTIyMDY1NDI5 +WhcNNDcxMTIyMTU1OTU5WjBQMQswCQYDVQQGEwJUVzESMBAGA1UEChMJVEFJV0FO +LUNBMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJUV0NBIENZQkVSIFJvb3Qg +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDG+Moe2Qkgfh1sTs6P +40czRJzHyWmqOlt47nDSkvgEs1JSHWdyKKHfi12VCv7qze33Kc7wb3+szT3vsxxF +avcokPFhV8UMxKNQXd7UtcsZyoC5dc4pztKFIuwCY8xEMCDa6pFbVuYdHNWdZsc/ +34bKS1PE2Y2yHer43CdTo0fhYcx9tbD47nORxc5zb87uEB8aBs/pJ2DFTxnk684i +JkXXYJndzk834H/nY62wuFm40AZoNWDTNq5xQwTxaWV4fPMf88oon1oglWa0zbfu +j3ikRRjpJi+NmykosaS3Om251Bw4ckVYsV7r8Cibt4LK/c/WMw+f+5eesRycnupf +Xtuq3VTpMCEobY5583WSjCb+3MX2w7DfRFlDo7YDKPYIMKoNM+HvnKkHIuNZW0CP +2oi3aQiotyMuRAlZN1vH4xfyIutuOVLF3lSnmMlLIJXcRolftBL5hSmO68gnFSDA +S9TMfAxsNAwmmyYxpjyn9tnQS6Jk/zuZQXLB4HCX8SS7K8R0IrGsayIyJNN4KsDA +oS/xUgXJP+92ZuJF2A09rZXIx4kmyA+upwMu+8Ff+iDhcK2wZSA3M2Cw1a/XDBzC +kHDXShi8fgGwsOsVHkQGzaRP6AzRwyAQ4VRlnrZR0Bp2a0JaWHY06rc3Ga4udfmW +5cFZ95RXKSWNOkyrTZpB0F8mAwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBSdhWEUfMFib5do5E83QOGt4A1WNzAd +BgNVHQ4EFgQUnYVhFHzBYm+XaORPN0DhreANVjcwDQYJKoZIhvcNAQEMBQADggIB +AGSPesRiDrWIzLjHhg6hShbNcAu3p4ULs3a2D6f/CIsLJc+o1IN1KriWiLb73y0t +tGlTITVX1olNc79pj3CjYcya2x6a4CD4bLubIp1dhDGaLIrdaqHXKGnK/nZVekZn +68xDiBaiA9a5F/gZbG0jAn/xX9AKKSM70aoK7akXJlQKTcKlTfjF/biBzysseKNn +TKkHmvPfXvt89YnNdJdhEGoHK4Fa0o635yDRIG4kqIQnoVesqlVYL9zZyvpoBJ7t +RCT5dEA7IzOrg1oYJkK2bVS1FmAwbLGg+LhBoF1JSdJlBTrq/p1hvIbZv97Tujqx +f36SNI7JAG7cmL3c7IAFrQI932XtCwP39xaEBDG6k5TY8hL4iuO/Qq+n1M0RFxbI +Qh0UqEL20kCGoE8jypZFVmAGzbdVAaYBlGX+bgUJurSkquLvWL69J1bY73NxW0Qz +8ppy6rBePm6pUlvscG21h483XjyMnM7k8M4MZ0HMzvaAq07MTFb1wWFZk7Q+ptq4 +NxKfKjLji7gh7MMrZQzvIt6IKTtM1/r+t+FHvpw+PoP7UV31aPcuIYXcv/Fa4nzX +xeSDwWrruoBa3lwtcHb4yOWHh8qgnaHlIhInD0Q9HWzq1MKLL295q39QpsQZp6F6 +t5b5wR9iWqJDB0BeJsas7a5wFsWqynKKTbDPAYsDP27X +-----END CERTIFICATE----- + +# Issuer: CN=SecureSign Root CA12 O=Cybertrust Japan Co., Ltd. +# Subject: CN=SecureSign Root CA12 O=Cybertrust Japan Co., Ltd. +# Label: "SecureSign Root CA12" +# Serial: 587887345431707215246142177076162061960426065942 +# MD5 Fingerprint: c6:89:ca:64:42:9b:62:08:49:0b:1e:7f:e9:07:3d:e8 +# SHA1 Fingerprint: 7a:22:1e:3d:de:1b:06:ac:9e:c8:47:70:16:8e:3c:e5:f7:6b:06:f4 +# SHA256 Fingerprint: 3f:03:4b:b5:70:4d:44:b2:d0:85:45:a0:20:57:de:93:eb:f3:90:5f:ce:72:1a:cb:c7:30:c0:6d:da:ee:90:4e +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUZvnHwa/swlG07VOX5uaCwysckBYwDQYJKoZIhvcNAQEL +BQAwUTELMAkGA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28u +LCBMdGQuMR0wGwYDVQQDExRTZWN1cmVTaWduIFJvb3QgQ0ExMjAeFw0yMDA0MDgw +NTM2NDZaFw00MDA0MDgwNTM2NDZaMFExCzAJBgNVBAYTAkpQMSMwIQYDVQQKExpD +eWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2VjdXJlU2lnbiBS +b290IENBMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6OcE3emhF +KxS06+QT61d1I02PJC0W6K6OyX2kVzsqdiUzg2zqMoqUm048luT9Ub+ZyZN+v/mt +p7JIKwccJ/VMvHASd6SFVLX9kHrko+RRWAPNEHl57muTH2SOa2SroxPjcf59q5zd +J1M3s6oYwlkm7Fsf0uZlfO+TvdhYXAvA42VvPMfKWeP+bl+sg779XSVOKik71gur +FzJ4pOE+lEa+Ym6b3kaosRbnhW70CEBFEaCeVESE99g2zvVQR9wsMJvuwPWW0v4J +hscGWa5Pro4RmHvzC1KqYiaqId+OJTN5lxZJjfU+1UefNzFJM3IFTQy2VYzxV4+K +h9GtxRESOaCtAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMB0GA1UdDgQWBBRXNPN0zwRL1SXm8UC2LEzZLemgrTANBgkqhkiG9w0BAQsF +AAOCAQEAPrvbFxbS8hQBICw4g0utvsqFepq2m2um4fylOqyttCg6r9cBg0krY6Ld +mmQOmFxv3Y67ilQiLUoT865AQ9tPkbeGGuwAtEGBpE/6aouIs3YIcipJQMPTw4WJ +mBClnW8Zt7vPemVV2zfrPIpyMpcemik+rY3moxtt9XUa5rBouVui7mlHJzWhhpmA +8zNL4WukJsPvdFlseqJkth5Ew1DgDzk9qTPxpfPSvWKErI4cqc1avTc7bgoitPQV +55FYxTpE05Uo2cBl6XLK0A+9H7MV2anjpEcJnuDLN/v9vZfVvhgaaaI5gdka9at/ +yOPiZwud9AzqVN/Ssq+xIvEg37xEHA== +-----END CERTIFICATE----- + +# Issuer: CN=SecureSign Root CA14 O=Cybertrust Japan Co., Ltd. +# Subject: CN=SecureSign Root CA14 O=Cybertrust Japan Co., Ltd. +# Label: "SecureSign Root CA14" +# Serial: 575790784512929437950770173562378038616896959179 +# MD5 Fingerprint: 71:0d:72:fa:92:19:65:5e:89:04:ac:16:33:f0:bc:d5 +# SHA1 Fingerprint: dd:50:c0:f7:79:b3:64:2e:74:a2:b8:9d:9f:d3:40:dd:bb:f0:f2:4f +# SHA256 Fingerprint: 4b:00:9c:10:34:49:4f:9a:b5:6b:ba:3b:a1:d6:27:31:fc:4d:20:d8:95:5a:dc:ec:10:a9:25:60:72:61:e3:38 +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIUZNtaDCBO6Ncpd8hQJ6JaJ90t8sswDQYJKoZIhvcNAQEM +BQAwUTELMAkGA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28u +LCBMdGQuMR0wGwYDVQQDExRTZWN1cmVTaWduIFJvb3QgQ0ExNDAeFw0yMDA0MDgw +NzA2MTlaFw00NTA0MDgwNzA2MTlaMFExCzAJBgNVBAYTAkpQMSMwIQYDVQQKExpD +eWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2VjdXJlU2lnbiBS +b290IENBMTQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDF0nqh1oq/ +FjHQmNE6lPxauG4iwWL3pwon71D2LrGeaBLwbCRjOfHw3xDG3rdSINVSW0KZnvOg +vlIfX8xnbacuUKLBl422+JX1sLrcneC+y9/3OPJH9aaakpUqYllQC6KxNedlsmGy +6pJxaeQp8E+BgQQ8sqVb1MWoWWd7VRxJq3qdwudzTe/NCcLEVxLbAQ4jeQkHO6Lo +/IrPj8BGJJw4J+CDnRugv3gVEOuGTgpa/d/aLIJ+7sr2KeH6caH3iGicnPCNvg9J +kdjqOvn90Ghx2+m1K06Ckm9mH+Dw3EzsytHqunQG+bOEkJTRX45zGRBdAuVwpcAQ +0BB8b8VYSbSwbprafZX1zNoCr7gsfXmPvkPx+SgojQlD+Ajda8iLLCSxjVIHvXib +y8posqTdDEx5YMaZ0ZPxMBoH064iwurO8YQJzOAUbn8/ftKChazcqRZOhaBgy/ac +18izju3Gm5h1DVXoX+WViwKkrkMpKBGk5hIwAUt1ax5mnXkvpXYvHUC0bcl9eQjs +0Wq2XSqypWa9a4X0dFbD9ed1Uigspf9mR6XU/v6eVL9lfgHWMI+lNpyiUBzuOIAB +SMbHdPTGrMNASRZhdCyvjG817XsYAFs2PJxQDcqSMxDxJklt33UkN4Ii1+iW/RVL +ApY+B3KVfqs9TC7XyvDf4Fg/LS8EmjijAQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUBpOjCl4oaTeqYR3r6/wtbyPk +86AwDQYJKoZIhvcNAQEMBQADggIBAJaAcgkGfpzMkwQWu6A6jZJOtxEaCnFxEM0E +rX+lRVAQZk5KQaID2RFPeje5S+LGjzJmdSX7684/AykmjbgWHfYfM25I5uj4V7Ib +ed87hwriZLoAymzvftAj63iP/2SbNDefNWWipAA9EiOWWF3KY4fGoweITedpdopT +zfFP7ELyk+OZpDc8h7hi2/DsHzc/N19DzFGdtfCXwreFamgLRB7lUe6TzktuhsHS +DCRZNhqfLJGP4xjblJUK7ZGqDpncllPjYYPGFrojutzdfhrGe0K22VoF3Jpf1d+4 +2kd92jjbrDnVHmtsKheMYc2xbXIBw8MgAGJoFjHVdqqGuw6qnsb58Nn4DSEC5MUo +FlkRudlpcyqSeLiSV5sI8jrlL5WwWLdrIBRtFO8KvH7YVdiI2i/6GaX7i+B/OfVy +K4XELKzvGUWSTLNhB9xNH27SgRNcmvMSZ4PPmz+Ln52kuaiWA3rF7iDeM9ovnhp6 +dB7h7sxaOgTdsxoEqBRjrLdHEoOabPXm6RUVkRqEGQ6UROcSjiVbgGcZ3GOTEAtl +Lor6CZpO2oYofaphNdgOpygau1LgePhsumywbrmHXumZNTfxPWQrqaA0k89jL9WB +365jJ6UeTo3cKXhZ+PmhIIynJkBugnLNeLLIjzwec+fBH7/PzqUqm9tEZDKgu39c +JRNItX+S +-----END CERTIFICATE----- + +# Issuer: CN=SecureSign Root CA15 O=Cybertrust Japan Co., Ltd. +# Subject: CN=SecureSign Root CA15 O=Cybertrust Japan Co., Ltd. +# Label: "SecureSign Root CA15" +# Serial: 126083514594751269499665114766174399806381178503 +# MD5 Fingerprint: 13:30:fc:c4:62:a6:a9:de:b5:c1:68:af:b5:d2:31:47 +# SHA1 Fingerprint: cb:ba:83:c8:c1:5a:5d:f1:f9:73:6f:ca:d7:ef:28:13:06:4a:07:7d +# SHA256 Fingerprint: e7:78:f0:f0:95:fe:84:37:29:cd:1a:00:82:17:9e:53:14:a9:c2:91:44:28:05:e1:fb:1d:8f:b6:b8:88:6c:3a +-----BEGIN CERTIFICATE----- +MIICIzCCAamgAwIBAgIUFhXHw9hJp75pDIqI7fBw+d23PocwCgYIKoZIzj0EAwMw +UTELMAkGA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBM +dGQuMR0wGwYDVQQDExRTZWN1cmVTaWduIFJvb3QgQ0ExNTAeFw0yMDA0MDgwODMy +NTZaFw00NTA0MDgwODMyNTZaMFExCzAJBgNVBAYTAkpQMSMwIQYDVQQKExpDeWJl +cnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2VjdXJlU2lnbiBSb290 +IENBMTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQLUHSNZDKZmbPSYAi4Io5GdCx4 +wCtELW1fHcmuS1Iggz24FG1Th2CeX2yF2wYUleDHKP+dX+Sq8bOLbe1PL0vJSpSR +ZHX+AezB2Ot6lHhWGENfa4HL9rzatAy2KZMIaY+jQjBAMA8GA1UdEwEB/wQFMAMB +Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTrQciu/NWeUUj1vYv0hyCTQSvT +9DAKBggqhkjOPQQDAwNoADBlAjEA2S6Jfl5OpBEHvVnCB96rMjhTKkZEBhd6zlHp +4P9mLQlO4E/0BdGF9jVg3PVys0Z9AjBEmEYagoUeYWmJSwdLZrWeqrqgHkHZAXQ6 +bkU6iYAZezKYVWOr62Nuk22rGwlgMU4= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST BR Root CA 2 2023 O=D-Trust GmbH +# Subject: CN=D-TRUST BR Root CA 2 2023 O=D-Trust GmbH +# Label: "D-TRUST BR Root CA 2 2023" +# Serial: 153168538924886464690566649552453098598 +# MD5 Fingerprint: e1:09:ed:d3:60:d4:56:1b:47:1f:b7:0c:5f:1b:5f:85 +# SHA1 Fingerprint: 2d:b0:70:ee:71:94:af:69:68:17:db:79:ce:58:9f:a0:6b:96:f7:87 +# SHA256 Fingerprint: 05:52:e6:f8:3f:df:65:e8:fa:96:70:e6:66:df:28:a4:e2:13:40:b5:10:cb:e5:25:66:f9:7c:4f:b9:4b:2b:d1 +-----BEGIN CERTIFICATE----- +MIIFqTCCA5GgAwIBAgIQczswBEhb2U14LnNLyaHcZjANBgkqhkiG9w0BAQ0FADBI +MQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlE +LVRSVVNUIEJSIFJvb3QgQ0EgMiAyMDIzMB4XDTIzMDUwOTA4NTYzMVoXDTM4MDUw +OTA4NTYzMFowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEi +MCAGA1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDIgMjAyMzCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBAK7/CVmRgApKaOYkP7in5Mg6CjoWzckjYaCTcfKr +i3OPoGdlYNJUa2NRb0kz4HIHE304zQaSBylSa053bATTlfrdTIzZXcFhfUvnKLNE +gXtRr90zsWh81k5M/itoucpmacTsXld/9w3HnDY25QdgrMBM6ghs7wZ8T1soegj8 +k12b9py0i4a6Ibn08OhZWiihNIQaJZG2tY/vsvmA+vk9PBFy2OMvhnbFeSzBqZCT +Rphny4NqoFAjpzv2gTng7fC5v2Xx2Mt6++9zA84A9H3X4F07ZrjcjrqDy4d2A/wl +2ecjbwb9Z/Pg/4S8R7+1FhhGaRTMBffb00msa8yr5LULQyReS2tNZ9/WtT5PeB+U +cSTq3nD88ZP+npNa5JRal1QMNXtfbO4AHyTsA7oC9Xb0n9Sa7YUsOCIvx9gvdhFP +/Wxc6PWOJ4d/GUohR5AdeY0cW/jPSoXk7bNbjb7EZChdQcRurDhaTyN0dKkSw/bS +uREVMweR2Ds3OmMwBtHFIjYoYiMQ4EbMl6zWK11kJNXuHA7e+whadSr2Y23OC0K+ +0bpwHJwh5Q8xaRfX/Aq03u2AnMuStIv13lmiWAmlY0cL4UEyNEHZmrHZqLAbWt4N +DfTisl01gLmB1IRpkQLLddCNxbU9CZEJjxShFHR5PtbJFR2kWVki3PaKRT08EtY+ +XTIvAgMBAAGjgY4wgYswDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUZ5Dw1t61 +GNVGKX5cq/ieCLxklRAwDgYDVR0PAQH/BAQDAgEGMEkGA1UdHwRCMEAwPqA8oDqG +OGh0dHA6Ly9jcmwuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3RfYnJfcm9vdF9jYV8y +XzIwMjMuY3JsMA0GCSqGSIb3DQEBDQUAA4ICAQA097N3U9swFrktpSHxQCF16+tI +FoE9c+CeJyrrd6kTpGoKWloUMz1oH4Guaf2Mn2VsNELZLdB/eBaxOqwjMa1ef67n +riv6uvw8l5VAk1/DLQOj7aRvU9f6QA4w9QAgLABMjDu0ox+2v5Eyq6+SmNMW5tTR +VFxDWy6u71cqqLRvpO8NVhTaIasgdp4D/Ca4nj8+AybmTNudX0KEPUUDAxxZiMrc +LmEkWqTqJwtzEr5SswrPMhfiHocaFpVIbVrg0M8JkiZmkdijYQ6qgYF/6FKC0ULn +4B0Y+qSFNueG4A3rvNTJ1jxD8V1Jbn6Bm2m1iWKPiFLY1/4nwSPFyysCu7Ff/vtD +hQNGvl3GyiEm/9cCnnRK3PgTFbGBVzbLZVzRHTF36SXDw7IyN9XxmAnkbWOACKsG +koHU6XCPpz+y7YaMgmo1yEJagtFSGkUPFaUA8JR7ZSdXOUPPfH/mvTWze/EZTN46 +ls/pdu4D58JDUjxqgejBWoC9EV2Ta/vH5mQ/u2kc6d0li690yVRAysuTEwrt+2aS +Ecr1wPrYg1UDfNPFIkZ1cGt5SAYqgpq/5usWDiJFAbzdNpQ0qTUmiteXue4Icr80 +knCDgKs4qllo3UCkGJCy89UDyibK79XH4I9TjvAA46jtn/mtd+ArY0+ew+43u3gJ +hJ65bvspmZDogNOfJA== +-----END CERTIFICATE----- + +# Issuer: CN=TrustAsia TLS ECC Root CA O=TrustAsia Technologies, Inc. +# Subject: CN=TrustAsia TLS ECC Root CA O=TrustAsia Technologies, Inc. +# Label: "TrustAsia TLS ECC Root CA" +# Serial: 310892014698942880364840003424242768478804666567 +# MD5 Fingerprint: 09:48:04:77:d2:fc:65:93:71:66:b1:11:95:4f:06:8c +# SHA1 Fingerprint: b5:ec:39:f3:a1:66:37:ae:c3:05:94:57:e2:be:11:be:b7:a1:7f:36 +# SHA256 Fingerprint: c0:07:6b:9e:f0:53:1f:b1:a6:56:d6:7c:4e:be:97:cd:5d:ba:a4:1e:f4:45:98:ac:c2:48:98:78:c9:2d:87:11 +-----BEGIN CERTIFICATE----- +MIICMTCCAbegAwIBAgIUNnThTXxlE8msg1UloD5Sfi9QaMcwCgYIKoZIzj0EAwMw +WDELMAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dpZXMs +IEluYy4xIjAgBgNVBAMTGVRydXN0QXNpYSBUTFMgRUNDIFJvb3QgQ0EwHhcNMjQw +NTE1MDU0MTU2WhcNNDQwNTE1MDU0MTU1WjBYMQswCQYDVQQGEwJDTjElMCMGA1UE +ChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywgSW5jLjEiMCAGA1UEAxMZVHJ1c3RB +c2lhIFRMUyBFQ0MgUm9vdCBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABLh/pVs/ +AT598IhtrimY4ZtcU5nb9wj/1WrgjstEpvDBjL1P1M7UiFPoXlfXTr4sP/MSpwDp +guMqWzJ8S5sUKZ74LYO1644xST0mYekdcouJtgq7nDM1D9rs3qlKH8kzsaNCMEAw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQULIVTu7FDzTLqnqOH/qKYqKaT6RAw +DgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2gAMGUCMFRH18MtYYZI9HlaVQ01 +L18N9mdsd0AaRuf4aFtOJx24mH1/k78ITcTaRTChD15KeAIxAKORh/IRM4PDwYqR +OkwrULG9IpRdNYlzg8WbGf60oenUoWa2AaU2+dhoYSi3dOGiMQ== +-----END CERTIFICATE----- + +# Issuer: CN=TrustAsia TLS RSA Root CA O=TrustAsia Technologies, Inc. +# Subject: CN=TrustAsia TLS RSA Root CA O=TrustAsia Technologies, Inc. +# Label: "TrustAsia TLS RSA Root CA" +# Serial: 160405846464868906657516898462547310235378010780 +# MD5 Fingerprint: 3b:9e:c3:86:0f:34:3c:6b:c5:46:c4:8e:1d:e7:19:12 +# SHA1 Fingerprint: a5:46:50:c5:62:ea:95:9a:1a:a7:04:6f:17:58:c7:29:53:3d:03:fa +# SHA256 Fingerprint: 06:c0:8d:7d:af:d8:76:97:1e:b1:12:4f:e6:7f:84:7e:c0:c7:a1:58:d3:ea:53:cb:e9:40:e2:ea:97:91:f4:c3 +-----BEGIN CERTIFICATE----- +MIIFgDCCA2igAwIBAgIUHBjYz+VTPyI1RlNUJDxsR9FcSpwwDQYJKoZIhvcNAQEM +BQAwWDELMAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dp +ZXMsIEluYy4xIjAgBgNVBAMTGVRydXN0QXNpYSBUTFMgUlNBIFJvb3QgQ0EwHhcN +MjQwNTE1MDU0MTU3WhcNNDQwNTE1MDU0MTU2WjBYMQswCQYDVQQGEwJDTjElMCMG +A1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywgSW5jLjEiMCAGA1UEAxMZVHJ1 +c3RBc2lhIFRMUyBSU0EgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC +AgoCggIBAMMWuBtqpERz5dZO9LnPWwvB0ZqB9WOwj0PBuwhaGnrhB3YmH49pVr7+ +NmDQDIPNlOrnxS1cLwUWAp4KqC/lYCZUlviYQB2srp10Zy9U+5RjmOMmSoPGlbYJ +Q1DNDX3eRA5gEk9bNb2/mThtfWza4mhzH/kxpRkQcwUqwzIZheo0qt1CHjCNP561 +HmHVb70AcnKtEj+qpklz8oYVlQwQX1Fkzv93uMltrOXVmPGZLmzjyUT5tUMnCE32 +ft5EebuyjBza00tsLtbDeLdM1aTk2tyKjg7/D8OmYCYozza/+lcK7Fs/6TAWe8Tb +xNRkoDD75f0dcZLdKY9BWN4ArTr9PXwaqLEX8E40eFgl1oUh63kd0Nyrz2I8sMeX +i9bQn9P+PN7F4/w6g3CEIR0JwqH8uyghZVNgepBtljhb//HXeltt08lwSUq6HTrQ +UNoyIBnkiz/r1RYmNzz7dZ6wB3C4FGB33PYPXFIKvF1tjVEK2sUYyJtt3LCDs3+j +TnhMmCWr8n4uIF6CFabW2I+s5c0yhsj55NqJ4js+k8UTav/H9xj8Z7XvGCxUq0DT +bE3txci3OE9kxJRMT6DNrqXGJyV1J23G2pyOsAWZ1SgRxSHUuPzHlqtKZFlhaxP8 +S8ySpg+kUb8OWJDZgoM5pl+z+m6Ss80zDoWo8SnTq1mt1tve1CuBAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFLgHkXlcBvRG/XtZylomkadFK/hT +MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQwFAAOCAgEAIZtqBSBdGBanEqT3 +Rz/NyjuujsCCztxIJXgXbODgcMTWltnZ9r96nBO7U5WS/8+S4PPFJzVXqDuiGev4 +iqME3mmL5Dw8veWv0BIb5Ylrc5tvJQJLkIKvQMKtuppgJFqBTQUYo+IzeXoLH5Pt +7DlK9RME7I10nYEKqG/odv6LTytpEoYKNDbdgptvT+Bz3Ul/KD7JO6NXBNiT2Twp +2xIQaOHEibgGIOcberyxk2GaGUARtWqFVwHxtlotJnMnlvm5P1vQiJ3koP26TpUJ +g3933FEFlJ0gcXax7PqJtZwuhfG5WyRasQmr2soaB82G39tp27RIGAAtvKLEiUUj +pQ7hRGU+isFqMB3iYPg6qocJQrmBktwliJiJ8Xw18WLK7nn4GS/+X/jbh87qqA8M +pugLoDzga5SYnH+tBuYc6kIQX+ImFTw3OffXvO645e8D7r0i+yiGNFjEWn9hongP +XvPKnbwbPKfILfanIhHKA9jnZwqKDss1jjQ52MjqjZ9k4DewbNfFj8GQYSbbJIwe +SsCI3zWQzj8C9GRh3sfIB5XeMhg6j6JCQCTl1jNdfK7vsU1P1FeQNWrcrgSXSYk0 +ly4wBOeY99sLAZDBHwo/+ML+TvrbmnNzFrwFuHnYWa8G5z9nODmxfKuU4CkUpijy +323imttUQ/hHWKNddBWcwauwxzQ= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST EV Root CA 2 2023 O=D-Trust GmbH +# Subject: CN=D-TRUST EV Root CA 2 2023 O=D-Trust GmbH +# Label: "D-TRUST EV Root CA 2 2023" +# Serial: 139766439402180512324132425437959641711 +# MD5 Fingerprint: 96:b4:78:09:f0:09:cb:77:eb:bb:1b:4d:6f:36:bc:b6 +# SHA1 Fingerprint: a5:5b:d8:47:6c:8f:19:f7:4c:f4:6d:6b:b6:c2:79:82:22:df:54:8b +# SHA256 Fingerprint: 8e:82:21:b2:e7:d4:00:78:36:a1:67:2f:0d:cc:29:9c:33:bc:07:d3:16:f1:32:fa:1a:20:6d:58:71:50:f1:ce +-----BEGIN CERTIFICATE----- +MIIFqTCCA5GgAwIBAgIQaSYJfoBLTKCnjHhiU19abzANBgkqhkiG9w0BAQ0FADBI +MQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlE +LVRSVVNUIEVWIFJvb3QgQ0EgMiAyMDIzMB4XDTIzMDUwOTA5MTAzM1oXDTM4MDUw +OTA5MTAzMlowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEi +MCAGA1UEAxMZRC1UUlVTVCBFViBSb290IENBIDIgMjAyMzCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBANiOo4mAC7JXUtypU0w3uX9jFxPvp1sjW2l1sJkK +F8GLxNuo4MwxusLyzV3pt/gdr2rElYfXR8mV2IIEUD2BCP/kPbOx1sWy/YgJ25yE +7CUXFId/MHibaljJtnMoPDT3mfd/06b4HEV8rSyMlD/YZxBTfiLNTiVR8CUkNRFe +EMbsh2aJgWi6zCudR3Mfvc2RpHJqnKIbGKBv7FD0fUDCqDDPvXPIEysQEx6Lmqg6 +lHPTGGkKSv/BAQP/eX+1SH977ugpbzZMlWGG2Pmic4ruri+W7mjNPU0oQvlFKzIb +RlUWaqZLKfm7lVa/Rh3sHZMdwGWyH6FDrlaeoLGPaxK3YG14C8qKXO0elg6DpkiV +jTujIcSuWMYAsoS0I6SWhjW42J7YrDRJmGOVxcttSEfi8i4YHtAxq9107PncjLgc +jmgjutDzUNzPZY9zOjLHfP7KgiJPvo5iR2blzYfi6NUPGJ/lBHJLRjwQ8kTCZFZx +TnXonMkmdMV9WdEKWw9t/p51HBjGGjp82A0EzM23RWV6sY+4roRIPrN6TagD4uJ+ +ARZZaBhDM7DS3LAaQzXupdqpRlyuhoFBAUp0JuyfBr/CBTdkdXgpaP3F9ev+R/nk +hbDhezGdpn9yo7nELC7MmVcOIQxFAZRl62UJxmMiCzNJkkg8/M3OsD6Onov4/knF +NXJHAgMBAAGjgY4wgYswDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUqvyREBuH +kV8Wub9PS5FeAByxMoAwDgYDVR0PAQH/BAQDAgEGMEkGA1UdHwRCMEAwPqA8oDqG +OGh0dHA6Ly9jcmwuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3RfZXZfcm9vdF9jYV8y +XzIwMjMuY3JsMA0GCSqGSIb3DQEBDQUAA4ICAQCTy6UfmRHsmg1fLBWTxj++EI14 +QvBukEdHjqOSMo1wj/Zbjb6JzkcBahsgIIlbyIIQbODnmaprxiqgYzWRaoUlrRc4 +pZt+UPJ26oUFKidBK7GB0aL2QHWpDsvxVUjY7NHss+jOFKE17MJeNRqrphYBBo7q +3C+jisosketSjl8MmxfPy3MHGcRqwnNU73xDUmPBEcrCRbH0O1P1aa4846XerOhU +t7KR/aypH/KH5BfGSah82ApB9PI+53c0BFLd6IHyTS9URZ0V4U/M5d40VxDJI3IX +cI1QcB9WbMy5/zpaT2N6w25lBx2Eof+pDGOJbbJAiDnXH3dotfyc1dZnaVuodNv8 +ifYbMvekJKZ2t0dT741Jj6m2g1qllpBFYfXeA08mD6iL8AOWsKwV0HFaanuU5nCT +2vFp4LJiTZ6P/4mdm13NRemUAiKN4DV/6PEEeXFsVIP4M7kFMhtYVRFP0OUnR3Hs +7dpn1mKmS00PaaLJvOwiS5THaJQXfuKOKD62xur1NGyfN4gHONuGcfrNlUhDbqNP +gofXNJhuS5N5YHVpD/Aa1VP6IQzCP+k/HxiMkl14p3ZnGbuy6n/pcAlWVqOwDAst +Nl7F6cTVg8uGF5csbBNvh1qvSaYd2804BC5f4ko1Di1L+KIkBI3Y4WNeApI02phh +XBxvWHZks/wCuPWdCg== +-----END CERTIFICATE----- + +# Issuer: CN=SwissSign RSA TLS Root CA 2022 - 1 O=SwissSign AG +# Subject: CN=SwissSign RSA TLS Root CA 2022 - 1 O=SwissSign AG +# Label: "SwissSign RSA TLS Root CA 2022 - 1" +# Serial: 388078645722908516278762308316089881486363258315 +# MD5 Fingerprint: 16:2e:e4:19:76:81:85:ba:8e:91:58:f1:15:ef:72:39 +# SHA1 Fingerprint: 81:34:0a:be:4c:cd:ce:cc:e7:7d:cc:8a:d4:57:e2:45:a0:77:5d:ce +# SHA256 Fingerprint: 19:31:44:f4:31:e0:fd:db:74:07:17:d4:de:92:6a:57:11:33:88:4b:43:60:d3:0e:27:29:13:cb:e6:60:ce:41 +-----BEGIN CERTIFICATE----- +MIIFkzCCA3ugAwIBAgIUQ/oMX04bgBhE79G0TzUfRPSA7cswDQYJKoZIhvcNAQEL +BQAwUTELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzErMCkGA1UE +AxMiU3dpc3NTaWduIFJTQSBUTFMgUm9vdCBDQSAyMDIyIC0gMTAeFw0yMjA2MDgx +MTA4MjJaFw00NzA2MDgxMTA4MjJaMFExCzAJBgNVBAYTAkNIMRUwEwYDVQQKEwxT +d2lzc1NpZ24gQUcxKzApBgNVBAMTIlN3aXNzU2lnbiBSU0EgVExTIFJvb3QgQ0Eg +MjAyMiAtIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDLKmjiC8NX +vDVjvHClO/OMPE5Xlm7DTjak9gLKHqquuN6orx122ro10JFwB9+zBvKK8i5VUXu7 +LCTLf5ImgKO0lPaCoaTo+nUdWfMHamFk4saMla+ju45vVs9xzF6BYQ1t8qsCLqSX +5XH8irCRIFucdFJtrhUnWXjyCcplDn/L9Ovn3KlMd/YrFgSVrpxxpT8q2kFC5zyE +EPThPYxr4iuRR1VPuFa+Rd4iUU1OKNlfGUEGjw5NBuBwQCMBauTLE5tzrE0USJIt +/m2n+IdreXXhvhCxqohAWVTXz8TQm0SzOGlkjIHRI36qOTw7D59Ke4LKa2/KIj4x +0LDQKhySio/YGZxH5D4MucLNvkEM+KRHBdvBFzA4OmnczcNpI/2aDwLOEGrOyvi5 +KaM2iYauC8BPY7kGWUleDsFpswrzd34unYyzJ5jSmY0lpx+Gs6ZUcDj8fV3oT4MM +0ZPlEuRU2j7yrTrePjxF8CgPBrnh25d7mUWe3f6VWQQvdT/TromZhqwUtKiE+shd +OxtYk8EXlFXIC+OCeYSf8wCENO7cMdWP8vpPlkwGqnj73mSiI80fPsWMvDdUDrta +clXvyFu1cvh43zcgTFeRc5JzrBh3Q4IgaezprClG5QtO+DdziZaKHG29777YtvTK +wP1H8K4LWCDFyB02rpeNUIMmJCn3nTsPBQIDAQABo2MwYTAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBRvjmKLk0Ow4UD2p8P98Q+4 +DxU4pTAdBgNVHQ4EFgQUb45ii5NDsOFA9qfD/fEPuA8VOKUwDQYJKoZIhvcNAQEL +BQADggIBAKwsKUF9+lz1GpUYvyypiqkkVHX1uECry6gkUSsYP2OprphWKwVDIqO3 +10aewCoSPY6WlkDfDDOLazeROpW7OSltwAJsipQLBwJNGD77+3v1dj2b9l4wBlgz +Hqp41eZUBDqyggmNzhYzWUUo8aWjlw5DI/0LIICQ/+Mmz7hkkeUFjxOgdg3XNwwQ +iJb0Pr6VvfHDffCjw3lHC1ySFWPtUnWK50Zpy1FVCypM9fJkT6lc/2cyjlUtMoIc +gC9qkfjLvH4YoiaoLqNTKIftV+Vlek4ASltOU8liNr3CjlvrzG4ngRhZi0Rjn9UM +ZfQpZX+RLOV/fuiJz48gy20HQhFRJjKKLjpHE7iNvUcNCfAWpO2Whi4Z2L6MOuhF +LhG6rlrnub+xzI/goP+4s9GFe3lmozm1O2bYQL7Pt2eLSMkZJVX8vY3PXtpOpvJp +zv1/THfQwUY1mFwjmwJFQ5Ra3bxHrSL+ul4vkSkphnsh3m5kt8sNjzdbowhq6/Td +Ao9QAwKxuDdollDruF/UKIqlIgyKhPBZLtU30WHlQnNYKoH3dtvi4k0NX/a3vgW0 +rk4N3hY9A4GzJl5LuEsAz/+MF7psYC0nhzck5npgL7XTgwSqT0N1osGDsieYK7EO +gLrAhV5Cud+xYJHT6xh+cHiudoO+cVrQkOPKwRYlZ0rwtnu64ZzZ +-----END CERTIFICATE----- + +# Issuer: CN=OISTE Server Root ECC G1 O=OISTE Foundation +# Subject: CN=OISTE Server Root ECC G1 O=OISTE Foundation +# Label: "OISTE Server Root ECC G1" +# Serial: 47819833811561661340092227008453318557 +# MD5 Fingerprint: 42:a7:d2:35:ae:02:92:db:19:76:08:de:2f:05:b4:d4 +# SHA1 Fingerprint: 3b:f6:8b:09:ae:2a:92:7b:ba:e3:8d:3f:11:95:d9:e6:44:0c:45:e2 +# SHA256 Fingerprint: ee:c9:97:c0:c3:0f:21:6f:7e:3b:8b:30:7d:2b:ae:42:41:2d:75:3f:c8:21:9d:af:d1:52:0b:25:72:85:0f:49 +-----BEGIN CERTIFICATE----- +MIICNTCCAbqgAwIBAgIQI/nD1jWvjyhLH/BU6n6XnTAKBggqhkjOPQQDAzBLMQsw +CQYDVQQGEwJDSDEZMBcGA1UECgwQT0lTVEUgRm91bmRhdGlvbjEhMB8GA1UEAwwY +T0lTVEUgU2VydmVyIFJvb3QgRUNDIEcxMB4XDTIzMDUzMTE0NDIyOFoXDTQ4MDUy +NDE0NDIyN1owSzELMAkGA1UEBhMCQ0gxGTAXBgNVBAoMEE9JU1RFIEZvdW5kYXRp +b24xITAfBgNVBAMMGE9JU1RFIFNlcnZlciBSb290IEVDQyBHMTB2MBAGByqGSM49 +AgEGBSuBBAAiA2IABBcv+hK8rBjzCvRE1nZCnrPoH7d5qVi2+GXROiFPqOujvqQy +cvO2Ackr/XeFblPdreqqLiWStukhEaivtUwL85Zgmjvn6hp4LrQ95SjeHIC6XG4N +2xml4z+cKrhAS93mT6NjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBQ3 +TYhlz/w9itWj8UnATgwQb0K0nDAdBgNVHQ4EFgQUN02IZc/8PYrVo/FJwE4MEG9C +tJwwDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2kAMGYCMQCpKjAd0MKfkFFR +QD6VVCHNFmb3U2wIFjnQEnx/Yxvf4zgAOdktUyBFCxxgZzFDJe0CMQCSia7pXGKD +YmH5LVerVrkR3SW+ak5KGoJr3M/TvEqzPNcum9v4KGm8ay3sMaE641c= +-----END CERTIFICATE----- + +# Issuer: CN=OISTE Server Root RSA G1 O=OISTE Foundation +# Subject: CN=OISTE Server Root RSA G1 O=OISTE Foundation +# Label: "OISTE Server Root RSA G1" +# Serial: 113845518112613905024960613408179309848 +# MD5 Fingerprint: 23:a7:9e:d4:70:b8:b9:14:57:41:8a:7e:44:59:e2:68 +# SHA1 Fingerprint: f7:00:34:25:94:88:68:31:e4:34:87:3f:70:fe:86:b3:86:9f:f0:6e +# SHA256 Fingerprint: 9a:e3:62:32:a5:18:9f:fd:db:35:3d:fd:26:52:0c:01:53:95:d2:27:77:da:c5:9d:b5:7b:98:c0:89:a6:51:e6 +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIQVaXZZ5Qoxu0M+ifdWwFNGDANBgkqhkiG9w0BAQwFADBL +MQswCQYDVQQGEwJDSDEZMBcGA1UECgwQT0lTVEUgRm91bmRhdGlvbjEhMB8GA1UE +AwwYT0lTVEUgU2VydmVyIFJvb3QgUlNBIEcxMB4XDTIzMDUzMTE0MzcxNloXDTQ4 +MDUyNDE0MzcxNVowSzELMAkGA1UEBhMCQ0gxGTAXBgNVBAoMEE9JU1RFIEZvdW5k +YXRpb24xITAfBgNVBAMMGE9JU1RFIFNlcnZlciBSb290IFJTQSBHMTCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAKqu9KuCz/vlNwvn1ZatkOhLKdxVYOPM +vLO8LZK55KN68YG0nnJyQ98/qwsmtO57Gmn7KNByXEptaZnwYx4M0rH/1ow00O7b +rEi56rAUjtgHqSSY3ekJvqgiG1k50SeH3BzN+Puz6+mTeO0Pzjd8JnduodgsIUzk +ik/HEzxux9UTl7Ko2yRpg1bTacuCErudG/L4NPKYKyqOBGf244ehHa1uzjZ0Dl4z +O8vbUZeUapU8zhhabkvG/AePLhq5SvdkNCncpo1Q4Y2LS+VIG24ugBA/5J8bZT8R +tOpXaZ+0AOuFJJkk9SGdl6r7NH8CaxWQrbueWhl/pIzY+m0o/DjH40ytas7ZTpOS +jswMZ78LS5bOZmdTaMsXEY5Z96ycG7mOaES3GK/m5Q9l3JUJsJMStR8+lKXHiHUh +sd4JJCpM4rzsTGdHwimIuQq6+cF0zowYJmXa92/GjHtoXAvuY8BeS/FOzJ8vD+Ho +mnqT8eDI278n5mUpezbgMxVz8p1rhAhoKzYHKyfMeNhqhw5HdPSqoBNdZH702xSu ++zrkL8Fl47l6QGzwBrd7KJvX4V84c5Ss2XCTLdyEr0YconosP4EmQufU2MVshGYR +i3drVByjtdgQ8K4p92cIiBdcuJd5z+orKu5YM+Vt6SmqZQENghPsJQtdLEByFSnT +kCz3GkPVavBpAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU +8snBDw1jALvsRQ5KH7WxszbNDo0wHQYDVR0OBBYEFPLJwQ8NYwC77EUOSh+1sbM2 +zQ6NMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQwFAAOCAgEANGd5sjrG5T33 +I3K5Ce+SrScfoE4KsvXaFwyihdJ+klH9FWXXXGtkFu6KRcoMQzZENdl//nk6HOjG +5D1rd9QhEOP28yBOqb6J8xycqd+8MDoX0TJD0KqKchxRKEzdNsjkLWd9kYccnbz8 +qyiWXmFcuCIzGEgWUOrKL+mlSdx/PKQZvDatkuK59EvV6wit53j+F8Bdh3foZ3dP +AGav9LEDOr4SfEE15fSmG0eLy3n31r8Xbk5l8PjaV8GUgeV6Vg27Rn9vkf195hfk +gSe7BYhW3SCl95gtkRlpMV+bMPKZrXJAlszYd2abtNUOshD+FKrDgHGdPY3ofRRs +YWSGRqbXVMW215AWRqWFyp464+YTFrYVI8ypKVL9AMb2kI5Wj4kI3Zaq5tNqqYY1 +9tVFeEJKRvwDyF7YZvZFZSS0vod7VSCd9521Kvy5YhnLbDuv0204bKt7ph6N/Ome +/msVuduCmsuY33OhkKCgxeDoAaijFJzIwZqsFVAzje18KotzlUBDJvyBpCpfOZC3 +J8tRd/iWkx7P8nd9H0aTolkelUTFLXVksNb54Dxp6gS1HAviRkRNQzuXSXERvSS2 +wq1yVAb+axj5d9spLFKebXd7Yv0PTY6YMjAwcRLWJTXjn/hvnLXrahut6hDTlhZy +BiElxky8j3C7DOReIoMt0r7+hVu05L0= +-----END CERTIFICATE----- + +# Issuer: CN=e-Szigno TLS Root CA 2023 O=Microsec Ltd. +# Subject: CN=e-Szigno TLS Root CA 2023 O=Microsec Ltd. +# Label: "e-Szigno TLS Root CA 2023" +# Serial: 71934828665710877219916191754 +# MD5 Fingerprint: 6a:e9:99:74:a5:da:5e:f1:d9:2e:f2:c8:d1:86:8b:71 +# SHA1 Fingerprint: 6f:9a:d5:d5:df:e8:2c:eb:be:37:07:ee:4f:4f:52:58:29:41:d1:fe +# SHA256 Fingerprint: b4:91:41:50:2d:00:66:3d:74:0f:2e:7e:c3:40:c5:28:00:96:26:66:12:1a:36:d0:9c:f7:dd:2b:90:38:4f:b4 +-----BEGIN CERTIFICATE----- +MIICzzCCAjGgAwIBAgINAOhvGHvWOWuYSkmYCjAKBggqhkjOPQQDBDB1MQswCQYD +VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0 +ZC4xFzAVBgNVBGEMDlZBVEhVLTIzNTg0NDk3MSIwIAYDVQQDDBllLVN6aWdubyBU +TFMgUm9vdCBDQSAyMDIzMB4XDTIzMDcxNzE0MDAwMFoXDTM4MDcxNzE0MDAwMFow +dTELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRYwFAYDVQQKDA1NaWNy +b3NlYyBMdGQuMRcwFQYDVQRhDA5WQVRIVS0yMzU4NDQ5NzEiMCAGA1UEAwwZZS1T +emlnbm8gVExTIFJvb3QgQ0EgMjAyMzCBmzAQBgcqhkjOPQIBBgUrgQQAIwOBhgAE +AGgP36J8PKp0iGEKjcJMpQEiFNT3YHdCnAo4YKGMZz6zY+n6kbCLS+Y53wLCMAFS +AL/fjO1ZrTJlqwlZULUZwmgcAOAFX9pQJhzDrAQixTpN7+lXWDajwRlTEArRzT/v +SzUaQ49CE0y5LBqcvjC2xN7cS53kpDzLLtmt3999Cd8ukv+ho2MwYTAPBgNVHRMB +Af8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUWYQCYlpGePVd3I8K +ECgj3NXW+0UwHwYDVR0jBBgwFoAUWYQCYlpGePVd3I8KECgj3NXW+0UwCgYIKoZI +zj0EAwQDgYsAMIGHAkIBLdqu9S54tma4n7Zwf2Z0z+yOfP7AAXmazlIC58PRDHpt +y7Ve7hekm9sEdu4pKeiv+62sUvTXK9Z3hBC9xdIoaDQCQTV2WnXzkoYI9bIeCvZl +C9p2x1L/Cx6AcCIwwzPbGO2E14vs7dOoY4G1VnxHx1YwlGhza9IuqbnZLBwpvQy6 +uWWL +-----END CERTIFICATE----- diff --git a/intelliaide/vendor/certifi/core.py b/intelliaide/vendor/certifi/core.py new file mode 100644 index 0000000..1c9661c --- /dev/null +++ b/intelliaide/vendor/certifi/core.py @@ -0,0 +1,83 @@ +""" +certifi.py +~~~~~~~~~~ + +This module returns the installation location of cacert.pem or its contents. +""" +import sys +import atexit + +def exit_cacert_ctx() -> 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") + +else: + + 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") diff --git a/intelliaide/vendor/certifi/py.typed b/intelliaide/vendor/certifi/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/intelliaide/vendor/cffi-2.0.0.dist-info/INSTALLER b/intelliaide/vendor/cffi-2.0.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/intelliaide/vendor/cffi-2.0.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/intelliaide/vendor/cffi-2.0.0.dist-info/METADATA b/intelliaide/vendor/cffi-2.0.0.dist-info/METADATA new file mode 100644 index 0000000..67508e5 --- /dev/null +++ b/intelliaide/vendor/cffi-2.0.0.dist-info/METADATA @@ -0,0 +1,68 @@ +Metadata-Version: 2.4 +Name: cffi +Version: 2.0.0 +Summary: Foreign Function Interface for Python calling C code. +Author: Armin Rigo, Maciej Fijalkowski +Maintainer: Matt Davis, Matt Clay, Matti Picus +License-Expression: MIT +Project-URL: Documentation, https://cffi.readthedocs.io/ +Project-URL: Changelog, https://cffi.readthedocs.io/en/latest/whatsnew.html +Project-URL: Downloads, https://github.com/python-cffi/cffi/releases +Project-URL: Contact, https://groups.google.com/forum/#!forum/python-cffi +Project-URL: Source Code, https://github.com/python-cffi/cffi +Project-URL: Issue Tracker, https://github.com/python-cffi/cffi/issues +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +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 :: 3.14 +Classifier: Programming Language :: Python :: Free Threading :: 2 - Beta +Classifier: Programming Language :: Python :: Implementation :: CPython +Requires-Python: >=3.9 +Description-Content-Type: text/markdown +License-File: LICENSE +License-File: AUTHORS +Requires-Dist: pycparser; implementation_name != "PyPy" +Dynamic: license-file + +[![GitHub Actions Status](https://github.com/python-cffi/cffi/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/python-cffi/cffi/actions/workflows/ci.yaml?query=branch%3Amain++) +[![PyPI version](https://img.shields.io/pypi/v/cffi.svg)](https://pypi.org/project/cffi) +[![Read the Docs](https://img.shields.io/badge/docs-latest-blue.svg)][Documentation] + + +CFFI +==== + +Foreign Function Interface for Python calling C code. + +Please see the [Documentation] or uncompiled in the `doc/` subdirectory. + +Download +-------- + +[Download page](https://github.com/python-cffi/cffi/releases) + +Source Code +----------- + +Source code is publicly available on +[GitHub](https://github.com/python-cffi/cffi). + +Contact +------- + +[Mailing list](https://groups.google.com/forum/#!forum/python-cffi) + +Testing/development tips +------------------------ + +After `git clone` or `wget && tar`, we will get a directory called `cffi` or `cffi-x.x.x`. we call it `repo-directory`. To run tests under CPython, run the following in the `repo-directory`: + + pip install pytest + pip install -e . # editable install of CFFI for local development + pytest src/c/ testing/ + +[Documentation]: http://cffi.readthedocs.org/ diff --git a/intelliaide/vendor/cffi-2.0.0.dist-info/RECORD b/intelliaide/vendor/cffi-2.0.0.dist-info/RECORD new file mode 100644 index 0000000..6f82298 --- /dev/null +++ b/intelliaide/vendor/cffi-2.0.0.dist-info/RECORD @@ -0,0 +1,49 @@ +_cffi_backend.cpython-312-x86_64-linux-gnu.so,sha256=AGLtw5fn9u4Cmwk3BbGlsXG7VZEvQekABMyEGuRZmcE,348808 +cffi-2.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +cffi-2.0.0.dist-info/METADATA,sha256=uYzn40F68Im8EtXHNBLZs7FoPM-OxzyYbDWsjJvhujk,2559 +cffi-2.0.0.dist-info/RECORD,, +cffi-2.0.0.dist-info/WHEEL,sha256=aSgG0F4rGPZtV0iTEIfy6dtHq6g67Lze3uLfk0vWn88,151 +cffi-2.0.0.dist-info/entry_points.txt,sha256=y6jTxnyeuLnL-XJcDv8uML3n6wyYiGRg8MTp_QGJ9Ho,75 +cffi-2.0.0.dist-info/licenses/AUTHORS,sha256=KmemC7-zN1nWfWRf8TG45ta8TK_CMtdR_Kw-2k0xTMg,208 +cffi-2.0.0.dist-info/licenses/LICENSE,sha256=W6JN3FcGf5JJrdZEw6_EGl1tw34jQz73Wdld83Cwr2M,1123 +cffi-2.0.0.dist-info/top_level.txt,sha256=rE7WR3rZfNKxWI9-jn6hsHCAl7MDkB-FmuQbxWjFehQ,19 +cffi/__init__.py,sha256=-ksBQ7MfDzVvbBlV_ftYBWAmEqfA86ljIzMxzaZeAlI,511 +cffi/__pycache__/__init__.cpython-312.pyc,, +cffi/__pycache__/_imp_emulation.cpython-312.pyc,, +cffi/__pycache__/_shimmed_dist_utils.cpython-312.pyc,, +cffi/__pycache__/api.cpython-312.pyc,, +cffi/__pycache__/backend_ctypes.cpython-312.pyc,, +cffi/__pycache__/cffi_opcode.cpython-312.pyc,, +cffi/__pycache__/commontypes.cpython-312.pyc,, +cffi/__pycache__/cparser.cpython-312.pyc,, +cffi/__pycache__/error.cpython-312.pyc,, +cffi/__pycache__/ffiplatform.cpython-312.pyc,, +cffi/__pycache__/lock.cpython-312.pyc,, +cffi/__pycache__/model.cpython-312.pyc,, +cffi/__pycache__/pkgconfig.cpython-312.pyc,, +cffi/__pycache__/recompiler.cpython-312.pyc,, +cffi/__pycache__/setuptools_ext.cpython-312.pyc,, +cffi/__pycache__/vengine_cpy.cpython-312.pyc,, +cffi/__pycache__/vengine_gen.cpython-312.pyc,, +cffi/__pycache__/verifier.cpython-312.pyc,, +cffi/_cffi_errors.h,sha256=zQXt7uR_m8gUW-fI2hJg0KoSkJFwXv8RGUkEDZ177dQ,3908 +cffi/_cffi_include.h,sha256=Exhmgm9qzHWzWivjfTe0D7Xp4rPUkVxdNuwGhMTMzbw,15055 +cffi/_embedding.h,sha256=Ai33FHblE7XSpHOCp8kPcWwN5_9BV14OvN0JVa6ITpw,18786 +cffi/_imp_emulation.py,sha256=RxREG8zAbI2RPGBww90u_5fi8sWdahpdipOoPzkp7C0,2960 +cffi/_shimmed_dist_utils.py,sha256=Bjj2wm8yZbvFvWEx5AEfmqaqZyZFhYfoyLLQHkXZuao,2230 +cffi/api.py,sha256=alBv6hZQkjpmZplBphdaRn2lPO9-CORs_M7ixabvZWI,42169 +cffi/backend_ctypes.py,sha256=h5ZIzLc6BFVXnGyc9xPqZWUS7qGy7yFSDqXe68Sa8z4,42454 +cffi/cffi_opcode.py,sha256=JDV5l0R0_OadBX_uE7xPPTYtMdmpp8I9UYd6av7aiDU,5731 +cffi/commontypes.py,sha256=7N6zPtCFlvxXMWhHV08psUjdYIK2XgsN3yo5dgua_v4,2805 +cffi/cparser.py,sha256=QUTfmlL-aO-MYR8bFGlvAUHc36OQr7XYLe0WLkGFjRo,44790 +cffi/error.py,sha256=v6xTiS4U0kvDcy4h_BDRo5v39ZQuj-IMRYLv5ETddZs,877 +cffi/ffiplatform.py,sha256=avxFjdikYGJoEtmJO7ewVmwG_VEVl6EZ_WaNhZYCqv4,3584 +cffi/lock.py,sha256=l9TTdwMIMpi6jDkJGnQgE9cvTIR7CAntIJr8EGHt3pY,747 +cffi/model.py,sha256=W30UFQZE73jL5Mx5N81YT77us2W2iJjTm0XYfnwz1cg,21797 +cffi/parse_c_type.h,sha256=OdwQfwM9ktq6vlCB43exFQmxDBtj2MBNdK8LYl15tjw,5976 +cffi/pkgconfig.py,sha256=LP1w7vmWvmKwyqLaU1Z243FOWGNQMrgMUZrvgFuOlco,4374 +cffi/recompiler.py,sha256=78J6lMEEOygXNmjN9-fOFFO3j7eW-iFxSrxfvQb54bY,65509 +cffi/setuptools_ext.py,sha256=0rCwBJ1W7FHWtiMKfNXsSST88V8UXrui5oeXFlDNLG8,9411 +cffi/vengine_cpy.py,sha256=oyQKD23kpE0aChUKA8Jg0e723foPiYzLYEdb-J0MiNs,43881 +cffi/vengine_gen.py,sha256=DUlEIrDiVin1Pnhn1sfoamnS5NLqfJcOdhRoeSNeJRg,26939 +cffi/verifier.py,sha256=oX8jpaohg2Qm3aHcznidAdvrVm5N4sQYG0a3Eo5mIl4,11182 diff --git a/intelliaide/vendor/cffi-2.0.0.dist-info/WHEEL b/intelliaide/vendor/cffi-2.0.0.dist-info/WHEEL new file mode 100644 index 0000000..e21e9f2 --- /dev/null +++ b/intelliaide/vendor/cffi-2.0.0.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: setuptools (80.9.0) +Root-Is-Purelib: false +Tag: cp312-cp312-manylinux_2_17_x86_64 +Tag: cp312-cp312-manylinux2014_x86_64 + diff --git a/intelliaide/vendor/cffi-2.0.0.dist-info/entry_points.txt b/intelliaide/vendor/cffi-2.0.0.dist-info/entry_points.txt new file mode 100644 index 0000000..4b0274f --- /dev/null +++ b/intelliaide/vendor/cffi-2.0.0.dist-info/entry_points.txt @@ -0,0 +1,2 @@ +[distutils.setup_keywords] +cffi_modules = cffi.setuptools_ext:cffi_modules diff --git a/intelliaide/vendor/cffi-2.0.0.dist-info/licenses/AUTHORS b/intelliaide/vendor/cffi-2.0.0.dist-info/licenses/AUTHORS new file mode 100644 index 0000000..370a25d --- /dev/null +++ b/intelliaide/vendor/cffi-2.0.0.dist-info/licenses/AUTHORS @@ -0,0 +1,8 @@ +This package has been mostly done by Armin Rigo with help from +Maciej Fijałkowski. The idea is heavily based (although not directly +copied) from LuaJIT ffi by Mike Pall. + + +Other contributors: + + Google Inc. diff --git a/intelliaide/vendor/cffi-2.0.0.dist-info/licenses/LICENSE b/intelliaide/vendor/cffi-2.0.0.dist-info/licenses/LICENSE new file mode 100644 index 0000000..0a1dbfb --- /dev/null +++ b/intelliaide/vendor/cffi-2.0.0.dist-info/licenses/LICENSE @@ -0,0 +1,23 @@ + +Except when otherwise stated (look for LICENSE files in directories or +information at the beginning of each file) all software and +documentation is licensed as follows: + + MIT No Attribution + + 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. + + 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/intelliaide/vendor/cffi-2.0.0.dist-info/top_level.txt b/intelliaide/vendor/cffi-2.0.0.dist-info/top_level.txt new file mode 100644 index 0000000..f645779 --- /dev/null +++ b/intelliaide/vendor/cffi-2.0.0.dist-info/top_level.txt @@ -0,0 +1,2 @@ +_cffi_backend +cffi diff --git a/intelliaide/vendor/cffi/__init__.py b/intelliaide/vendor/cffi/__init__.py new file mode 100644 index 0000000..c99ec3d --- /dev/null +++ b/intelliaide/vendor/cffi/__init__.py @@ -0,0 +1,14 @@ +__all__ = ['FFI', 'VerificationError', 'VerificationMissing', 'CDefError', + 'FFIError'] + +from .api import FFI +from .error import CDefError, FFIError, VerificationError, VerificationMissing +from .error import PkgConfigError + +__version__ = "2.0.0" +__version_info__ = (2, 0, 0) + +# The verifier module file names are based on the CRC32 of a string that +# contains the following version number. It may be older than __version__ +# if nothing is clearly incompatible. +__version_verifier_modules__ = "0.8.6" diff --git a/intelliaide/vendor/cffi/_cffi_errors.h b/intelliaide/vendor/cffi/_cffi_errors.h new file mode 100644 index 0000000..158e059 --- /dev/null +++ b/intelliaide/vendor/cffi/_cffi_errors.h @@ -0,0 +1,149 @@ +#ifndef CFFI_MESSAGEBOX +# ifdef _MSC_VER +# define CFFI_MESSAGEBOX 1 +# else +# define CFFI_MESSAGEBOX 0 +# endif +#endif + + +#if CFFI_MESSAGEBOX +/* Windows only: logic to take the Python-CFFI embedding logic + initialization errors and display them in a background thread + with MessageBox. The idea is that if the whole program closes + as a result of this problem, then likely it is already a console + program and you can read the stderr output in the console too. + If it is not a console program, then it will likely show its own + dialog to complain, or generally not abruptly close, and for this + case the background thread should stay alive. +*/ +static void *volatile _cffi_bootstrap_text; + +static PyObject *_cffi_start_error_capture(void) +{ + PyObject *result = NULL; + PyObject *x, *m, *bi; + + if (InterlockedCompareExchangePointer(&_cffi_bootstrap_text, + (void *)1, NULL) != NULL) + return (PyObject *)1; + + m = PyImport_AddModule("_cffi_error_capture"); + if (m == NULL) + goto error; + + result = PyModule_GetDict(m); + if (result == NULL) + goto error; + +#if PY_MAJOR_VERSION >= 3 + bi = PyImport_ImportModule("builtins"); +#else + bi = PyImport_ImportModule("__builtin__"); +#endif + if (bi == NULL) + goto error; + PyDict_SetItemString(result, "__builtins__", bi); + Py_DECREF(bi); + + x = PyRun_String( + "import sys\n" + "class FileLike:\n" + " def write(self, x):\n" + " try:\n" + " of.write(x)\n" + " except: pass\n" + " self.buf += x\n" + " def flush(self):\n" + " pass\n" + "fl = FileLike()\n" + "fl.buf = ''\n" + "of = sys.stderr\n" + "sys.stderr = fl\n" + "def done():\n" + " sys.stderr = of\n" + " return fl.buf\n", /* make sure the returned value stays alive */ + Py_file_input, + result, result); + Py_XDECREF(x); + + error: + if (PyErr_Occurred()) + { + PyErr_WriteUnraisable(Py_None); + PyErr_Clear(); + } + return result; +} + +#pragma comment(lib, "user32.lib") + +static DWORD WINAPI _cffi_bootstrap_dialog(LPVOID ignored) +{ + Sleep(666); /* may be interrupted if the whole process is closing */ +#if PY_MAJOR_VERSION >= 3 + MessageBoxW(NULL, (wchar_t *)_cffi_bootstrap_text, + L"Python-CFFI error", + MB_OK | MB_ICONERROR); +#else + MessageBoxA(NULL, (char *)_cffi_bootstrap_text, + "Python-CFFI error", + MB_OK | MB_ICONERROR); +#endif + _cffi_bootstrap_text = NULL; + return 0; +} + +static void _cffi_stop_error_capture(PyObject *ecap) +{ + PyObject *s; + void *text; + + if (ecap == (PyObject *)1) + return; + + if (ecap == NULL) + goto error; + + s = PyRun_String("done()", Py_eval_input, ecap, ecap); + if (s == NULL) + goto error; + + /* Show a dialog box, but in a background thread, and + never show multiple dialog boxes at once. */ +#if PY_MAJOR_VERSION >= 3 + text = PyUnicode_AsWideCharString(s, NULL); +#else + text = PyString_AsString(s); +#endif + + _cffi_bootstrap_text = text; + + if (text != NULL) + { + HANDLE h; + h = CreateThread(NULL, 0, _cffi_bootstrap_dialog, + NULL, 0, NULL); + if (h != NULL) + CloseHandle(h); + } + /* decref the string, but it should stay alive as 'fl.buf' + in the small module above. It will really be freed only if + we later get another similar error. So it's a leak of at + most one copy of the small module. That's fine for this + situation which is usually a "fatal error" anyway. */ + Py_DECREF(s); + PyErr_Clear(); + return; + + error: + _cffi_bootstrap_text = NULL; + PyErr_Clear(); +} + +#else + +static PyObject *_cffi_start_error_capture(void) { return NULL; } +static void _cffi_stop_error_capture(PyObject *ecap) { } + +#endif diff --git a/intelliaide/vendor/cffi/_cffi_include.h b/intelliaide/vendor/cffi/_cffi_include.h new file mode 100644 index 0000000..908a1d7 --- /dev/null +++ b/intelliaide/vendor/cffi/_cffi_include.h @@ -0,0 +1,389 @@ +#define _CFFI_ + +/* We try to define Py_LIMITED_API before including Python.h. + + Mess: we can only define it if Py_DEBUG, Py_TRACE_REFS and + Py_REF_DEBUG are not defined. This is a best-effort approximation: + we can learn about Py_DEBUG from pyconfig.h, but it is unclear if + the same works for the other two macros. Py_DEBUG implies them, + but not the other way around. + + The implementation is messy (issue #350): on Windows, with _MSC_VER, + we have to define Py_LIMITED_API even before including pyconfig.h. + In that case, we guess what pyconfig.h will do to the macros above, + and check our guess after the #include. + + Note that on Windows, with CPython 3.x, you need >= 3.5 and virtualenv + version >= 16.0.0. With older versions of either, you don't get a + copy of PYTHON3.DLL in the virtualenv. We can't check the version of + CPython *before* we even include pyconfig.h. ffi.set_source() puts + a ``#define _CFFI_NO_LIMITED_API'' at the start of this file if it is + running on Windows < 3.5, as an attempt at fixing it, but that's + arguably wrong because it may not be the target version of Python. + Still better than nothing I guess. As another workaround, you can + remove the definition of Py_LIMITED_API here. + + See also 'py_limited_api' in cffi/setuptools_ext.py. +*/ +#if !defined(_CFFI_USE_EMBEDDING) && !defined(Py_LIMITED_API) +# ifdef _MSC_VER +# if !defined(_DEBUG) && !defined(Py_DEBUG) && !defined(Py_TRACE_REFS) && !defined(Py_REF_DEBUG) && !defined(_CFFI_NO_LIMITED_API) +# define Py_LIMITED_API +# endif +# include + /* sanity-check: Py_LIMITED_API will cause crashes if any of these + are also defined. Normally, the Python file PC/pyconfig.h does not + cause any of these to be defined, with the exception that _DEBUG + causes Py_DEBUG. Double-check that. */ +# ifdef Py_LIMITED_API +# if defined(Py_DEBUG) +# error "pyconfig.h unexpectedly defines Py_DEBUG, but Py_LIMITED_API is set" +# endif +# if defined(Py_TRACE_REFS) +# error "pyconfig.h unexpectedly defines Py_TRACE_REFS, but Py_LIMITED_API is set" +# endif +# if defined(Py_REF_DEBUG) +# error "pyconfig.h unexpectedly defines Py_REF_DEBUG, but Py_LIMITED_API is set" +# endif +# endif +# else +# include +# if !defined(Py_DEBUG) && !defined(Py_TRACE_REFS) && !defined(Py_REF_DEBUG) && !defined(_CFFI_NO_LIMITED_API) +# define Py_LIMITED_API +# endif +# endif +#endif + +#include +#ifdef __cplusplus +extern "C" { +#endif +#include +#include "parse_c_type.h" + +/* this block of #ifs should be kept exactly identical between + c/_cffi_backend.c, cffi/vengine_cpy.py, cffi/vengine_gen.py + and cffi/_cffi_include.h */ +#if defined(_MSC_VER) +# include /* for alloca() */ +# if _MSC_VER < 1600 /* MSVC < 2010 */ + typedef __int8 int8_t; + typedef __int16 int16_t; + typedef __int32 int32_t; + typedef __int64 int64_t; + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + typedef unsigned __int64 uint64_t; + typedef __int8 int_least8_t; + typedef __int16 int_least16_t; + typedef __int32 int_least32_t; + typedef __int64 int_least64_t; + typedef unsigned __int8 uint_least8_t; + typedef unsigned __int16 uint_least16_t; + typedef unsigned __int32 uint_least32_t; + typedef unsigned __int64 uint_least64_t; + typedef __int8 int_fast8_t; + typedef __int16 int_fast16_t; + typedef __int32 int_fast32_t; + typedef __int64 int_fast64_t; + typedef unsigned __int8 uint_fast8_t; + typedef unsigned __int16 uint_fast16_t; + typedef unsigned __int32 uint_fast32_t; + typedef unsigned __int64 uint_fast64_t; + typedef __int64 intmax_t; + typedef unsigned __int64 uintmax_t; +# else +# include +# endif +# if _MSC_VER < 1800 /* MSVC < 2013 */ +# ifndef __cplusplus + typedef unsigned char _Bool; +# endif +# endif +# define _cffi_float_complex_t _Fcomplex /* include for it */ +# define _cffi_double_complex_t _Dcomplex /* include for it */ +#else +# include +# if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux) +# include +# endif +# define _cffi_float_complex_t float _Complex +# define _cffi_double_complex_t double _Complex +#endif + +#ifdef __GNUC__ +# define _CFFI_UNUSED_FN __attribute__((unused)) +#else +# define _CFFI_UNUSED_FN /* nothing */ +#endif + +#ifdef __cplusplus +# ifndef _Bool + typedef bool _Bool; /* semi-hackish: C++ has no _Bool; bool is builtin */ +# endif +#endif + +/********** CPython-specific section **********/ +#ifndef PYPY_VERSION + + +#if PY_MAJOR_VERSION >= 3 +# define PyInt_FromLong PyLong_FromLong +#endif + +#define _cffi_from_c_double PyFloat_FromDouble +#define _cffi_from_c_float PyFloat_FromDouble +#define _cffi_from_c_long PyInt_FromLong +#define _cffi_from_c_ulong PyLong_FromUnsignedLong +#define _cffi_from_c_longlong PyLong_FromLongLong +#define _cffi_from_c_ulonglong PyLong_FromUnsignedLongLong +#define _cffi_from_c__Bool PyBool_FromLong + +#define _cffi_to_c_double PyFloat_AsDouble +#define _cffi_to_c_float PyFloat_AsDouble + +#define _cffi_from_c_int(x, type) \ + (((type)-1) > 0 ? /* unsigned */ \ + (sizeof(type) < sizeof(long) ? \ + PyInt_FromLong((long)x) : \ + sizeof(type) == sizeof(long) ? \ + PyLong_FromUnsignedLong((unsigned long)x) : \ + PyLong_FromUnsignedLongLong((unsigned long long)x)) : \ + (sizeof(type) <= sizeof(long) ? \ + PyInt_FromLong((long)x) : \ + PyLong_FromLongLong((long long)x))) + +#define _cffi_to_c_int(o, type) \ + ((type)( \ + sizeof(type) == 1 ? (((type)-1) > 0 ? (type)_cffi_to_c_u8(o) \ + : (type)_cffi_to_c_i8(o)) : \ + sizeof(type) == 2 ? (((type)-1) > 0 ? (type)_cffi_to_c_u16(o) \ + : (type)_cffi_to_c_i16(o)) : \ + sizeof(type) == 4 ? (((type)-1) > 0 ? (type)_cffi_to_c_u32(o) \ + : (type)_cffi_to_c_i32(o)) : \ + sizeof(type) == 8 ? (((type)-1) > 0 ? (type)_cffi_to_c_u64(o) \ + : (type)_cffi_to_c_i64(o)) : \ + (Py_FatalError("unsupported size for type " #type), (type)0))) + +#define _cffi_to_c_i8 \ + ((int(*)(PyObject *))_cffi_exports[1]) +#define _cffi_to_c_u8 \ + ((int(*)(PyObject *))_cffi_exports[2]) +#define _cffi_to_c_i16 \ + ((int(*)(PyObject *))_cffi_exports[3]) +#define _cffi_to_c_u16 \ + ((int(*)(PyObject *))_cffi_exports[4]) +#define _cffi_to_c_i32 \ + ((int(*)(PyObject *))_cffi_exports[5]) +#define _cffi_to_c_u32 \ + ((unsigned int(*)(PyObject *))_cffi_exports[6]) +#define _cffi_to_c_i64 \ + ((long long(*)(PyObject *))_cffi_exports[7]) +#define _cffi_to_c_u64 \ + ((unsigned long long(*)(PyObject *))_cffi_exports[8]) +#define _cffi_to_c_char \ + ((int(*)(PyObject *))_cffi_exports[9]) +#define _cffi_from_c_pointer \ + ((PyObject *(*)(char *, struct _cffi_ctypedescr *))_cffi_exports[10]) +#define _cffi_to_c_pointer \ + ((char *(*)(PyObject *, struct _cffi_ctypedescr *))_cffi_exports[11]) +#define _cffi_get_struct_layout \ + not used any more +#define _cffi_restore_errno \ + ((void(*)(void))_cffi_exports[13]) +#define _cffi_save_errno \ + ((void(*)(void))_cffi_exports[14]) +#define _cffi_from_c_char \ + ((PyObject *(*)(char))_cffi_exports[15]) +#define _cffi_from_c_deref \ + ((PyObject *(*)(char *, struct _cffi_ctypedescr *))_cffi_exports[16]) +#define _cffi_to_c \ + ((int(*)(char *, struct _cffi_ctypedescr *, PyObject *))_cffi_exports[17]) +#define _cffi_from_c_struct \ + ((PyObject *(*)(char *, struct _cffi_ctypedescr *))_cffi_exports[18]) +#define _cffi_to_c_wchar_t \ + ((_cffi_wchar_t(*)(PyObject *))_cffi_exports[19]) +#define _cffi_from_c_wchar_t \ + ((PyObject *(*)(_cffi_wchar_t))_cffi_exports[20]) +#define _cffi_to_c_long_double \ + ((long double(*)(PyObject *))_cffi_exports[21]) +#define _cffi_to_c__Bool \ + ((_Bool(*)(PyObject *))_cffi_exports[22]) +#define _cffi_prepare_pointer_call_argument \ + ((Py_ssize_t(*)(struct _cffi_ctypedescr *, \ + PyObject *, char **))_cffi_exports[23]) +#define _cffi_convert_array_from_object \ + ((int(*)(char *, struct _cffi_ctypedescr *, PyObject *))_cffi_exports[24]) +#define _CFFI_CPIDX 25 +#define _cffi_call_python \ + ((void(*)(struct _cffi_externpy_s *, char *))_cffi_exports[_CFFI_CPIDX]) +#define _cffi_to_c_wchar3216_t \ + ((int(*)(PyObject *))_cffi_exports[26]) +#define _cffi_from_c_wchar3216_t \ + ((PyObject *(*)(int))_cffi_exports[27]) +#define _CFFI_NUM_EXPORTS 28 + +struct _cffi_ctypedescr; + +static void *_cffi_exports[_CFFI_NUM_EXPORTS]; + +#define _cffi_type(index) ( \ + assert((((uintptr_t)_cffi_types[index]) & 1) == 0), \ + (struct _cffi_ctypedescr *)_cffi_types[index]) + +static PyObject *_cffi_init(const char *module_name, Py_ssize_t version, + const struct _cffi_type_context_s *ctx) +{ + PyObject *module, *o_arg, *new_module; + void *raw[] = { + (void *)module_name, + (void *)version, + (void *)_cffi_exports, + (void *)ctx, + }; + + module = PyImport_ImportModule("_cffi_backend"); + if (module == NULL) + goto failure; + + o_arg = PyLong_FromVoidPtr((void *)raw); + if (o_arg == NULL) + goto failure; + + new_module = PyObject_CallMethod( + module, (char *)"_init_cffi_1_0_external_module", (char *)"O", o_arg); + + Py_DECREF(o_arg); + Py_DECREF(module); + return new_module; + + failure: + Py_XDECREF(module); + return NULL; +} + + +#ifdef HAVE_WCHAR_H +typedef wchar_t _cffi_wchar_t; +#else +typedef uint16_t _cffi_wchar_t; /* same random pick as _cffi_backend.c */ +#endif + +_CFFI_UNUSED_FN static uint16_t _cffi_to_c_char16_t(PyObject *o) +{ + if (sizeof(_cffi_wchar_t) == 2) + return (uint16_t)_cffi_to_c_wchar_t(o); + else + return (uint16_t)_cffi_to_c_wchar3216_t(o); +} + +_CFFI_UNUSED_FN static PyObject *_cffi_from_c_char16_t(uint16_t x) +{ + if (sizeof(_cffi_wchar_t) == 2) + return _cffi_from_c_wchar_t((_cffi_wchar_t)x); + else + return _cffi_from_c_wchar3216_t((int)x); +} + +_CFFI_UNUSED_FN static int _cffi_to_c_char32_t(PyObject *o) +{ + if (sizeof(_cffi_wchar_t) == 4) + return (int)_cffi_to_c_wchar_t(o); + else + return (int)_cffi_to_c_wchar3216_t(o); +} + +_CFFI_UNUSED_FN static PyObject *_cffi_from_c_char32_t(unsigned int x) +{ + if (sizeof(_cffi_wchar_t) == 4) + return _cffi_from_c_wchar_t((_cffi_wchar_t)x); + else + return _cffi_from_c_wchar3216_t((int)x); +} + +union _cffi_union_alignment_u { + unsigned char m_char; + unsigned short m_short; + unsigned int m_int; + unsigned long m_long; + unsigned long long m_longlong; + float m_float; + double m_double; + long double m_longdouble; +}; + +struct _cffi_freeme_s { + struct _cffi_freeme_s *next; + union _cffi_union_alignment_u alignment; +}; + +_CFFI_UNUSED_FN static int +_cffi_convert_array_argument(struct _cffi_ctypedescr *ctptr, PyObject *arg, + char **output_data, Py_ssize_t datasize, + struct _cffi_freeme_s **freeme) +{ + char *p; + if (datasize < 0) + return -1; + + p = *output_data; + if (p == NULL) { + struct _cffi_freeme_s *fp = (struct _cffi_freeme_s *)PyObject_Malloc( + offsetof(struct _cffi_freeme_s, alignment) + (size_t)datasize); + if (fp == NULL) + return -1; + fp->next = *freeme; + *freeme = fp; + p = *output_data = (char *)&fp->alignment; + } + memset((void *)p, 0, (size_t)datasize); + return _cffi_convert_array_from_object(p, ctptr, arg); +} + +_CFFI_UNUSED_FN static void +_cffi_free_array_arguments(struct _cffi_freeme_s *freeme) +{ + do { + void *p = (void *)freeme; + freeme = freeme->next; + PyObject_Free(p); + } while (freeme != NULL); +} + +/********** end CPython-specific section **********/ +#else +_CFFI_UNUSED_FN +static void (*_cffi_call_python_org)(struct _cffi_externpy_s *, char *); +# define _cffi_call_python _cffi_call_python_org +#endif + + +#define _cffi_array_len(array) (sizeof(array) / sizeof((array)[0])) + +#define _cffi_prim_int(size, sign) \ + ((size) == 1 ? ((sign) ? _CFFI_PRIM_INT8 : _CFFI_PRIM_UINT8) : \ + (size) == 2 ? ((sign) ? _CFFI_PRIM_INT16 : _CFFI_PRIM_UINT16) : \ + (size) == 4 ? ((sign) ? _CFFI_PRIM_INT32 : _CFFI_PRIM_UINT32) : \ + (size) == 8 ? ((sign) ? _CFFI_PRIM_INT64 : _CFFI_PRIM_UINT64) : \ + _CFFI__UNKNOWN_PRIM) + +#define _cffi_prim_float(size) \ + ((size) == sizeof(float) ? _CFFI_PRIM_FLOAT : \ + (size) == sizeof(double) ? _CFFI_PRIM_DOUBLE : \ + (size) == sizeof(long double) ? _CFFI__UNKNOWN_LONG_DOUBLE : \ + _CFFI__UNKNOWN_FLOAT_PRIM) + +#define _cffi_check_int(got, got_nonpos, expected) \ + ((got_nonpos) == (expected <= 0) && \ + (got) == (unsigned long long)expected) + +#ifdef MS_WIN32 +# define _cffi_stdcall __stdcall +#else +# define _cffi_stdcall /* nothing */ +#endif + +#ifdef __cplusplus +} +#endif diff --git a/intelliaide/vendor/cffi/_embedding.h b/intelliaide/vendor/cffi/_embedding.h new file mode 100644 index 0000000..64c04f6 --- /dev/null +++ b/intelliaide/vendor/cffi/_embedding.h @@ -0,0 +1,550 @@ + +/***** Support code for embedding *****/ + +#ifdef __cplusplus +extern "C" { +#endif + + +#if defined(_WIN32) +# define CFFI_DLLEXPORT __declspec(dllexport) +#elif defined(__GNUC__) +# define CFFI_DLLEXPORT __attribute__((visibility("default"))) +#else +# define CFFI_DLLEXPORT /* nothing */ +#endif + + +/* There are two global variables of type _cffi_call_python_fnptr: + + * _cffi_call_python, which we declare just below, is the one called + by ``extern "Python"`` implementations. + + * _cffi_call_python_org, which on CPython is actually part of the + _cffi_exports[] array, is the function pointer copied from + _cffi_backend. If _cffi_start_python() fails, then this is set + to NULL; otherwise, it should never be NULL. + + After initialization is complete, both are equal. However, the + first one remains equal to &_cffi_start_and_call_python until the + very end of initialization, when we are (or should be) sure that + concurrent threads also see a completely initialized world, and + only then is it changed. +*/ +#undef _cffi_call_python +typedef void (*_cffi_call_python_fnptr)(struct _cffi_externpy_s *, char *); +static void _cffi_start_and_call_python(struct _cffi_externpy_s *, char *); +static _cffi_call_python_fnptr _cffi_call_python = &_cffi_start_and_call_python; + + +#ifndef _MSC_VER + /* --- Assuming a GCC not infinitely old --- */ +# define cffi_compare_and_swap(l,o,n) __sync_bool_compare_and_swap(l,o,n) +# define cffi_write_barrier() __sync_synchronize() +# if !defined(__amd64__) && !defined(__x86_64__) && \ + !defined(__i386__) && !defined(__i386) +# define cffi_read_barrier() __sync_synchronize() +# else +# define cffi_read_barrier() (void)0 +# endif +#else + /* --- Windows threads version --- */ +# include +# define cffi_compare_and_swap(l,o,n) \ + (InterlockedCompareExchangePointer(l,n,o) == (o)) +# define cffi_write_barrier() InterlockedCompareExchange(&_cffi_dummy,0,0) +# define cffi_read_barrier() (void)0 +static volatile LONG _cffi_dummy; +#endif + +#ifdef WITH_THREAD +# ifndef _MSC_VER +# include + static pthread_mutex_t _cffi_embed_startup_lock; +# else + static CRITICAL_SECTION _cffi_embed_startup_lock; +# endif + static char _cffi_embed_startup_lock_ready = 0; +#endif + +static void _cffi_acquire_reentrant_mutex(void) +{ + static void *volatile lock = NULL; + + while (!cffi_compare_and_swap(&lock, NULL, (void *)1)) { + /* should ideally do a spin loop instruction here, but + hard to do it portably and doesn't really matter I + think: pthread_mutex_init() should be very fast, and + this is only run at start-up anyway. */ + } + +#ifdef WITH_THREAD + if (!_cffi_embed_startup_lock_ready) { +# ifndef _MSC_VER + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(&_cffi_embed_startup_lock, &attr); +# else + InitializeCriticalSection(&_cffi_embed_startup_lock); +# endif + _cffi_embed_startup_lock_ready = 1; + } +#endif + + while (!cffi_compare_and_swap(&lock, (void *)1, NULL)) + ; + +#ifndef _MSC_VER + pthread_mutex_lock(&_cffi_embed_startup_lock); +#else + EnterCriticalSection(&_cffi_embed_startup_lock); +#endif +} + +static void _cffi_release_reentrant_mutex(void) +{ +#ifndef _MSC_VER + pthread_mutex_unlock(&_cffi_embed_startup_lock); +#else + LeaveCriticalSection(&_cffi_embed_startup_lock); +#endif +} + + +/********** CPython-specific section **********/ +#ifndef PYPY_VERSION + +#include "_cffi_errors.h" + + +#define _cffi_call_python_org _cffi_exports[_CFFI_CPIDX] + +PyMODINIT_FUNC _CFFI_PYTHON_STARTUP_FUNC(void); /* forward */ + +static void _cffi_py_initialize(void) +{ + /* XXX use initsigs=0, which "skips initialization registration of + signal handlers, which might be useful when Python is + embedded" according to the Python docs. But review and think + if it should be a user-controllable setting. + + XXX we should also give a way to write errors to a buffer + instead of to stderr. + + XXX if importing 'site' fails, CPython (any version) calls + exit(). Should we try to work around this behavior here? + */ + Py_InitializeEx(0); +} + +static int _cffi_initialize_python(void) +{ + /* This initializes Python, imports _cffi_backend, and then the + present .dll/.so is set up as a CPython C extension module. + */ + int result; + PyGILState_STATE state; + PyObject *pycode=NULL, *global_dict=NULL, *x; + PyObject *builtins; + + state = PyGILState_Ensure(); + + /* Call the initxxx() function from the present module. It will + create and initialize us as a CPython extension module, instead + of letting the startup Python code do it---it might reimport + the same .dll/.so and get maybe confused on some platforms. + It might also have troubles locating the .dll/.so again for all + I know. + */ + (void)_CFFI_PYTHON_STARTUP_FUNC(); + if (PyErr_Occurred()) + goto error; + + /* Now run the Python code provided to ffi.embedding_init_code(). + */ + pycode = Py_CompileString(_CFFI_PYTHON_STARTUP_CODE, + "", + Py_file_input); + if (pycode == NULL) + goto error; + global_dict = PyDict_New(); + if (global_dict == NULL) + goto error; + builtins = PyEval_GetBuiltins(); + if (builtins == NULL) + goto error; + if (PyDict_SetItemString(global_dict, "__builtins__", builtins) < 0) + goto error; + x = PyEval_EvalCode( +#if PY_MAJOR_VERSION < 3 + (PyCodeObject *) +#endif + pycode, global_dict, global_dict); + if (x == NULL) + goto error; + Py_DECREF(x); + + /* Done! Now if we've been called from + _cffi_start_and_call_python() in an ``extern "Python"``, we can + only hope that the Python code did correctly set up the + corresponding @ffi.def_extern() function. Otherwise, the + general logic of ``extern "Python"`` functions (inside the + _cffi_backend module) will find that the reference is still + missing and print an error. + */ + result = 0; + done: + Py_XDECREF(pycode); + Py_XDECREF(global_dict); + PyGILState_Release(state); + return result; + + error:; + { + /* Print as much information as potentially useful. + Debugging load-time failures with embedding is not fun + */ + PyObject *ecap; + PyObject *exception, *v, *tb, *f, *modules, *mod; + PyErr_Fetch(&exception, &v, &tb); + ecap = _cffi_start_error_capture(); + f = PySys_GetObject((char *)"stderr"); + if (f != NULL && f != Py_None) { + PyFile_WriteString( + "Failed to initialize the Python-CFFI embedding logic:\n\n", f); + } + + if (exception != NULL) { + PyErr_NormalizeException(&exception, &v, &tb); + PyErr_Display(exception, v, tb); + } + Py_XDECREF(exception); + Py_XDECREF(v); + Py_XDECREF(tb); + + if (f != NULL && f != Py_None) { + PyFile_WriteString("\nFrom: " _CFFI_MODULE_NAME + "\ncompiled with cffi version: 2.0.0" + "\n_cffi_backend module: ", f); + modules = PyImport_GetModuleDict(); + mod = PyDict_GetItemString(modules, "_cffi_backend"); + if (mod == NULL) { + PyFile_WriteString("not loaded", f); + } + else { + v = PyObject_GetAttrString(mod, "__file__"); + PyFile_WriteObject(v, f, 0); + Py_XDECREF(v); + } + PyFile_WriteString("\nsys.path: ", f); + PyFile_WriteObject(PySys_GetObject((char *)"path"), f, 0); + PyFile_WriteString("\n\n", f); + } + _cffi_stop_error_capture(ecap); + } + result = -1; + goto done; +} + +#if PY_VERSION_HEX < 0x03080000 +PyAPI_DATA(char *) _PyParser_TokenNames[]; /* from CPython */ +#endif + +static int _cffi_carefully_make_gil(void) +{ + /* This does the basic initialization of Python. It can be called + completely concurrently from unrelated threads. It assumes + that we don't hold the GIL before (if it exists), and we don't + hold it afterwards. + + (What it really does used to be completely different in Python 2 + and Python 3, with the Python 2 solution avoiding the spin-lock + around the Py_InitializeEx() call. However, after recent changes + to CPython 2.7 (issue #358) it no longer works. So we use the + Python 3 solution everywhere.) + + This initializes Python by calling Py_InitializeEx(). + Important: this must not be called concurrently at all. + So we use a global variable as a simple spin lock. This global + variable must be from 'libpythonX.Y.so', not from this + cffi-based extension module, because it must be shared from + different cffi-based extension modules. + + In Python < 3.8, we choose + _PyParser_TokenNames[0] as a completely arbitrary pointer value + that is never written to. The default is to point to the + string "ENDMARKER". We change it temporarily to point to the + next character in that string. (Yes, I know it's REALLY + obscure.) + + In Python >= 3.8, this string array is no longer writable, so + instead we pick PyCapsuleType.tp_version_tag. We can't change + Python < 3.8 because someone might use a mixture of cffi + embedded modules, some of which were compiled before this file + changed. + + In Python >= 3.12, this stopped working because that particular + tp_version_tag gets modified during interpreter startup. It's + arguably a bad idea before 3.12 too, but again we can't change + that because someone might use a mixture of cffi embedded + modules, and no-one reported a bug so far. In Python >= 3.12 + we go instead for PyCapsuleType.tp_as_buffer, which is supposed + to always be NULL. We write to it temporarily a pointer to + a struct full of NULLs, which is semantically the same. + */ + +#ifdef WITH_THREAD +# if PY_VERSION_HEX < 0x03080000 + char *volatile *lock = (char *volatile *)_PyParser_TokenNames; + char *old_value, *locked_value; + + while (1) { /* spin loop */ + old_value = *lock; + locked_value = old_value + 1; + if (old_value[0] == 'E') { + assert(old_value[1] == 'N'); + if (cffi_compare_and_swap(lock, old_value, locked_value)) + break; + } + else { + assert(old_value[0] == 'N'); + /* should ideally do a spin loop instruction here, but + hard to do it portably and doesn't really matter I + think: PyEval_InitThreads() should be very fast, and + this is only run at start-up anyway. */ + } + } +# else +# if PY_VERSION_HEX < 0x030C0000 + int volatile *lock = (int volatile *)&PyCapsule_Type.tp_version_tag; + int old_value, locked_value = -42; + assert(!(PyCapsule_Type.tp_flags & Py_TPFLAGS_HAVE_VERSION_TAG)); +# else + static struct ebp_s { PyBufferProcs buf; int mark; } empty_buffer_procs; + empty_buffer_procs.mark = -42; + PyBufferProcs *volatile *lock = (PyBufferProcs *volatile *) + &PyCapsule_Type.tp_as_buffer; + PyBufferProcs *old_value, *locked_value = &empty_buffer_procs.buf; +# endif + + while (1) { /* spin loop */ + old_value = *lock; + if (old_value == 0) { + if (cffi_compare_and_swap(lock, old_value, locked_value)) + break; + } + else { +# if PY_VERSION_HEX < 0x030C0000 + assert(old_value == locked_value); +# else + /* The pointer should point to a possibly different + empty_buffer_procs from another C extension module */ + assert(((struct ebp_s *)old_value)->mark == -42); +# endif + /* should ideally do a spin loop instruction here, but + hard to do it portably and doesn't really matter I + think: PyEval_InitThreads() should be very fast, and + this is only run at start-up anyway. */ + } + } +# endif +#endif + + /* call Py_InitializeEx() */ + if (!Py_IsInitialized()) { + _cffi_py_initialize(); +#if PY_VERSION_HEX < 0x03070000 + PyEval_InitThreads(); +#endif + PyEval_SaveThread(); /* release the GIL */ + /* the returned tstate must be the one that has been stored into the + autoTLSkey by _PyGILState_Init() called from Py_Initialize(). */ + } + else { +#if PY_VERSION_HEX < 0x03070000 + /* PyEval_InitThreads() is always a no-op from CPython 3.7 */ + PyGILState_STATE state = PyGILState_Ensure(); + PyEval_InitThreads(); + PyGILState_Release(state); +#endif + } + +#ifdef WITH_THREAD + /* release the lock */ + while (!cffi_compare_and_swap(lock, locked_value, old_value)) + ; +#endif + + return 0; +} + +/********** end CPython-specific section **********/ + + +#else + + +/********** PyPy-specific section **********/ + +PyMODINIT_FUNC _CFFI_PYTHON_STARTUP_FUNC(const void *[]); /* forward */ + +static struct _cffi_pypy_init_s { + const char *name; + void *func; /* function pointer */ + const char *code; +} _cffi_pypy_init = { + _CFFI_MODULE_NAME, + _CFFI_PYTHON_STARTUP_FUNC, + _CFFI_PYTHON_STARTUP_CODE, +}; + +extern int pypy_carefully_make_gil(const char *); +extern int pypy_init_embedded_cffi_module(int, struct _cffi_pypy_init_s *); + +static int _cffi_carefully_make_gil(void) +{ + return pypy_carefully_make_gil(_CFFI_MODULE_NAME); +} + +static int _cffi_initialize_python(void) +{ + return pypy_init_embedded_cffi_module(0xB011, &_cffi_pypy_init); +} + +/********** end PyPy-specific section **********/ + + +#endif + + +#ifdef __GNUC__ +__attribute__((noinline)) +#endif +static _cffi_call_python_fnptr _cffi_start_python(void) +{ + /* Delicate logic to initialize Python. This function can be + called multiple times concurrently, e.g. when the process calls + its first ``extern "Python"`` functions in multiple threads at + once. It can also be called recursively, in which case we must + ignore it. We also have to consider what occurs if several + different cffi-based extensions reach this code in parallel + threads---it is a different copy of the code, then, and we + can't have any shared global variable unless it comes from + 'libpythonX.Y.so'. + + Idea: + + * _cffi_carefully_make_gil(): "carefully" call + PyEval_InitThreads() (possibly with Py_InitializeEx() first). + + * then we use a (local) custom lock to make sure that a call to this + cffi-based extension will wait if another call to the *same* + extension is running the initialization in another thread. + It is reentrant, so that a recursive call will not block, but + only one from a different thread. + + * then we grab the GIL and (Python 2) we call Py_InitializeEx(). + At this point, concurrent calls to Py_InitializeEx() are not + possible: we have the GIL. + + * do the rest of the specific initialization, which may + temporarily release the GIL but not the custom lock. + Only release the custom lock when we are done. + */ + static char called = 0; + + if (_cffi_carefully_make_gil() != 0) + return NULL; + + _cffi_acquire_reentrant_mutex(); + + /* Here the GIL exists, but we don't have it. We're only protected + from concurrency by the reentrant mutex. */ + + /* This file only initializes the embedded module once, the first + time this is called, even if there are subinterpreters. */ + if (!called) { + called = 1; /* invoke _cffi_initialize_python() only once, + but don't set '_cffi_call_python' right now, + otherwise concurrent threads won't call + this function at all (we need them to wait) */ + if (_cffi_initialize_python() == 0) { + /* now initialization is finished. Switch to the fast-path. */ + + /* We would like nobody to see the new value of + '_cffi_call_python' without also seeing the rest of the + data initialized. However, this is not possible. But + the new value of '_cffi_call_python' is the function + 'cffi_call_python()' from _cffi_backend. So: */ + cffi_write_barrier(); + /* ^^^ we put a write barrier here, and a corresponding + read barrier at the start of cffi_call_python(). This + ensures that after that read barrier, we see everything + done here before the write barrier. + */ + + assert(_cffi_call_python_org != NULL); + _cffi_call_python = (_cffi_call_python_fnptr)_cffi_call_python_org; + } + else { + /* initialization failed. Reset this to NULL, even if it was + already set to some other value. Future calls to + _cffi_start_python() are still forced to occur, and will + always return NULL from now on. */ + _cffi_call_python_org = NULL; + } + } + + _cffi_release_reentrant_mutex(); + + return (_cffi_call_python_fnptr)_cffi_call_python_org; +} + +static +void _cffi_start_and_call_python(struct _cffi_externpy_s *externpy, char *args) +{ + _cffi_call_python_fnptr fnptr; + int current_err = errno; +#ifdef _MSC_VER + int current_lasterr = GetLastError(); +#endif + fnptr = _cffi_start_python(); + if (fnptr == NULL) { + fprintf(stderr, "function %s() called, but initialization code " + "failed. Returning 0.\n", externpy->name); + memset(args, 0, externpy->size_of_result); + } +#ifdef _MSC_VER + SetLastError(current_lasterr); +#endif + errno = current_err; + + if (fnptr != NULL) + fnptr(externpy, args); +} + + +/* The cffi_start_python() function makes sure Python is initialized + and our cffi module is set up. It can be called manually from the + user C code. The same effect is obtained automatically from any + dll-exported ``extern "Python"`` function. This function returns + -1 if initialization failed, 0 if all is OK. */ +_CFFI_UNUSED_FN +static int cffi_start_python(void) +{ + if (_cffi_call_python == &_cffi_start_and_call_python) { + if (_cffi_start_python() == NULL) + return -1; + } + cffi_read_barrier(); + return 0; +} + +#undef cffi_compare_and_swap +#undef cffi_write_barrier +#undef cffi_read_barrier + +#ifdef __cplusplus +} +#endif diff --git a/intelliaide/vendor/cffi/_imp_emulation.py b/intelliaide/vendor/cffi/_imp_emulation.py new file mode 100644 index 0000000..136abdd --- /dev/null +++ b/intelliaide/vendor/cffi/_imp_emulation.py @@ -0,0 +1,83 @@ + +try: + # this works on Python < 3.12 + from imp import * + +except ImportError: + # this is a limited emulation for Python >= 3.12. + # Note that this is used only for tests or for the old ffi.verify(). + # This is copied from the source code of Python 3.11. + + from _imp import (acquire_lock, release_lock, + is_builtin, is_frozen) + + from importlib._bootstrap import _load + + from importlib import machinery + import os + import sys + import tokenize + + SEARCH_ERROR = 0 + PY_SOURCE = 1 + PY_COMPILED = 2 + C_EXTENSION = 3 + PY_RESOURCE = 4 + PKG_DIRECTORY = 5 + C_BUILTIN = 6 + PY_FROZEN = 7 + PY_CODERESOURCE = 8 + IMP_HOOK = 9 + + def get_suffixes(): + extensions = [(s, 'rb', C_EXTENSION) + for s in machinery.EXTENSION_SUFFIXES] + source = [(s, 'r', PY_SOURCE) for s in machinery.SOURCE_SUFFIXES] + bytecode = [(s, 'rb', PY_COMPILED) for s in machinery.BYTECODE_SUFFIXES] + return extensions + source + bytecode + + def find_module(name, path=None): + if not isinstance(name, str): + raise TypeError("'name' must be a str, not {}".format(type(name))) + elif not isinstance(path, (type(None), list)): + # Backwards-compatibility + raise RuntimeError("'path' must be None or a list, " + "not {}".format(type(path))) + + if path is None: + if is_builtin(name): + return None, None, ('', '', C_BUILTIN) + elif is_frozen(name): + return None, None, ('', '', PY_FROZEN) + else: + path = sys.path + + for entry in path: + package_directory = os.path.join(entry, name) + for suffix in ['.py', machinery.BYTECODE_SUFFIXES[0]]: + package_file_name = '__init__' + suffix + file_path = os.path.join(package_directory, package_file_name) + if os.path.isfile(file_path): + return None, package_directory, ('', '', PKG_DIRECTORY) + for suffix, mode, type_ in get_suffixes(): + file_name = name + suffix + file_path = os.path.join(entry, file_name) + if os.path.isfile(file_path): + break + else: + continue + break # Break out of outer loop when breaking out of inner loop. + else: + raise ImportError(name, name=name) + + encoding = None + if 'b' not in mode: + with open(file_path, 'rb') as file: + encoding = tokenize.detect_encoding(file.readline)[0] + file = open(file_path, mode, encoding=encoding) + return file, file_path, (suffix, mode, type_) + + def load_dynamic(name, path, file=None): + loader = machinery.ExtensionFileLoader(name, path) + spec = machinery.ModuleSpec(name=name, loader=loader, origin=path) + return _load(spec) diff --git a/intelliaide/vendor/cffi/_shimmed_dist_utils.py b/intelliaide/vendor/cffi/_shimmed_dist_utils.py new file mode 100644 index 0000000..c3d2312 --- /dev/null +++ b/intelliaide/vendor/cffi/_shimmed_dist_utils.py @@ -0,0 +1,45 @@ +""" +Temporary shim module to indirect the bits of distutils we need from setuptools/distutils while providing useful +error messages beyond `No module named 'distutils' on Python >= 3.12, or when setuptools' vendored distutils is broken. + +This is a compromise to avoid a hard-dep on setuptools for Python >= 3.12, since many users don't need runtime compilation support from CFFI. +""" +import sys + +try: + # import setuptools first; this is the most robust way to ensure its embedded distutils is available + # (the .pth shim should usually work, but this is even more robust) + import setuptools +except Exception as ex: + if sys.version_info >= (3, 12): + # Python 3.12 has no built-in distutils to fall back on, so any import problem is fatal + raise Exception("This CFFI feature requires setuptools on Python >= 3.12. The setuptools module is missing or non-functional.") from ex + + # silently ignore on older Pythons (support fallback to stdlib distutils where available) +else: + del setuptools + +try: + # bring in just the bits of distutils we need, whether they really came from setuptools or stdlib-embedded distutils + from distutils import log, sysconfig + from distutils.ccompiler import CCompiler + from distutils.command.build_ext import build_ext + from distutils.core import Distribution, Extension + from distutils.dir_util import mkpath + from distutils.errors import DistutilsSetupError, CompileError, LinkError + from distutils.log import set_threshold, set_verbosity + + if sys.platform == 'win32': + try: + # FUTURE: msvc9compiler module was removed in setuptools 74; consider removing, as it's only used by an ancient patch in `recompiler` + from distutils.msvc9compiler import MSVCCompiler + except ImportError: + MSVCCompiler = None +except Exception as ex: + if sys.version_info >= (3, 12): + raise Exception("This CFFI feature requires setuptools on Python >= 3.12. Please install the setuptools package.") from ex + + # anything older, just let the underlying distutils import error fly + raise Exception("This CFFI feature requires distutils. Please install the distutils or setuptools package.") from ex + +del sys diff --git a/intelliaide/vendor/cffi/api.py b/intelliaide/vendor/cffi/api.py new file mode 100644 index 0000000..5a474f3 --- /dev/null +++ b/intelliaide/vendor/cffi/api.py @@ -0,0 +1,967 @@ +import sys, types +from .lock import allocate_lock +from .error import CDefError +from . import model + +try: + callable +except NameError: + # Python 3.1 + from collections import Callable + callable = lambda x: isinstance(x, Callable) + +try: + basestring +except NameError: + # Python 3.x + basestring = str + +_unspecified = object() + + + +class FFI(object): + r''' + The main top-level class that you instantiate once, or once per module. + + Example usage: + + ffi = FFI() + ffi.cdef(""" + int printf(const char *, ...); + """) + + C = ffi.dlopen(None) # standard library + -or- + C = ffi.verify() # use a C compiler: verify the decl above is right + + C.printf("hello, %s!\n", ffi.new("char[]", "world")) + ''' + + def __init__(self, backend=None): + """Create an FFI instance. The 'backend' argument is used to + select a non-default backend, mostly for tests. + """ + if backend is None: + # You need PyPy (>= 2.0 beta), or a CPython (>= 2.6) with + # _cffi_backend.so compiled. + import _cffi_backend as backend + from . import __version__ + if backend.__version__ != __version__: + # bad version! Try to be as explicit as possible. + if hasattr(backend, '__file__'): + # CPython + raise Exception("Version mismatch: this is the 'cffi' package version %s, located in %r. When we import the top-level '_cffi_backend' extension module, we get version %s, located in %r. The two versions should be equal; check your installation." % ( + __version__, __file__, + backend.__version__, backend.__file__)) + else: + # PyPy + raise Exception("Version mismatch: this is the 'cffi' package version %s, located in %r. This interpreter comes with a built-in '_cffi_backend' module, which is version %s. The two versions should be equal; check your installation." % ( + __version__, __file__, backend.__version__)) + # (If you insist you can also try to pass the option + # 'backend=backend_ctypes.CTypesBackend()', but don't + # rely on it! It's probably not going to work well.) + + from . import cparser + self._backend = backend + self._lock = allocate_lock() + self._parser = cparser.Parser() + self._cached_btypes = {} + self._parsed_types = types.ModuleType('parsed_types').__dict__ + self._new_types = types.ModuleType('new_types').__dict__ + self._function_caches = [] + self._libraries = [] + self._cdefsources = [] + self._included_ffis = [] + self._windows_unicode = None + self._init_once_cache = {} + self._cdef_version = None + self._embedding = None + self._typecache = model.get_typecache(backend) + if hasattr(backend, 'set_ffi'): + backend.set_ffi(self) + for name in list(backend.__dict__): + if name.startswith('RTLD_'): + setattr(self, name, getattr(backend, name)) + # + with self._lock: + self.BVoidP = self._get_cached_btype(model.voidp_type) + self.BCharA = self._get_cached_btype(model.char_array_type) + if isinstance(backend, types.ModuleType): + # _cffi_backend: attach these constants to the class + if not hasattr(FFI, 'NULL'): + FFI.NULL = self.cast(self.BVoidP, 0) + FFI.CData, FFI.CType = backend._get_types() + else: + # ctypes backend: attach these constants to the instance + self.NULL = self.cast(self.BVoidP, 0) + self.CData, self.CType = backend._get_types() + self.buffer = backend.buffer + + def cdef(self, csource, override=False, packed=False, pack=None): + """Parse the given C source. This registers all declared functions, + types, and global variables. The functions and global variables can + then be accessed via either 'ffi.dlopen()' or 'ffi.verify()'. + The types can be used in 'ffi.new()' and other functions. + If 'packed' is specified as True, all structs declared inside this + cdef are packed, i.e. laid out without any field alignment at all. + Alternatively, 'pack' can be a small integer, and requests for + alignment greater than that are ignored (pack=1 is equivalent to + packed=True). + """ + self._cdef(csource, override=override, packed=packed, pack=pack) + + def embedding_api(self, csource, packed=False, pack=None): + self._cdef(csource, packed=packed, pack=pack, dllexport=True) + if self._embedding is None: + self._embedding = '' + + def _cdef(self, csource, override=False, **options): + if not isinstance(csource, str): # unicode, on Python 2 + if not isinstance(csource, basestring): + raise TypeError("cdef() argument must be a string") + csource = csource.encode('ascii') + with self._lock: + self._cdef_version = object() + self._parser.parse(csource, override=override, **options) + self._cdefsources.append(csource) + if override: + for cache in self._function_caches: + cache.clear() + finishlist = self._parser._recomplete + if finishlist: + self._parser._recomplete = [] + for tp in finishlist: + tp.finish_backend_type(self, finishlist) + + def dlopen(self, name, flags=0): + """Load and return a dynamic library identified by 'name'. + The standard C library can be loaded by passing None. + Note that functions and types declared by 'ffi.cdef()' are not + linked to a particular library, just like C headers; in the + library we only look for the actual (untyped) symbols. + """ + if not (isinstance(name, basestring) or + name is None or + isinstance(name, self.CData)): + raise TypeError("dlopen(name): name must be a file name, None, " + "or an already-opened 'void *' handle") + with self._lock: + lib, function_cache = _make_ffi_library(self, name, flags) + self._function_caches.append(function_cache) + self._libraries.append(lib) + return lib + + def dlclose(self, lib): + """Close a library obtained with ffi.dlopen(). After this call, + access to functions or variables from the library will fail + (possibly with a segmentation fault). + """ + type(lib).__cffi_close__(lib) + + def _typeof_locked(self, cdecl): + # call me with the lock! + key = cdecl + if key in self._parsed_types: + return self._parsed_types[key] + # + if not isinstance(cdecl, str): # unicode, on Python 2 + cdecl = cdecl.encode('ascii') + # + type = self._parser.parse_type(cdecl) + really_a_function_type = type.is_raw_function + if really_a_function_type: + type = type.as_function_pointer() + btype = self._get_cached_btype(type) + result = btype, really_a_function_type + self._parsed_types[key] = result + return result + + def _typeof(self, cdecl, consider_function_as_funcptr=False): + # string -> ctype object + try: + result = self._parsed_types[cdecl] + except KeyError: + with self._lock: + result = self._typeof_locked(cdecl) + # + btype, really_a_function_type = result + if really_a_function_type and not consider_function_as_funcptr: + raise CDefError("the type %r is a function type, not a " + "pointer-to-function type" % (cdecl,)) + return btype + + def typeof(self, cdecl): + """Parse the C type given as a string and return the + corresponding object. + It can also be used on 'cdata' instance to get its C type. + """ + if isinstance(cdecl, basestring): + return self._typeof(cdecl) + if isinstance(cdecl, self.CData): + return self._backend.typeof(cdecl) + if isinstance(cdecl, types.BuiltinFunctionType): + res = _builtin_function_type(cdecl) + if res is not None: + return res + if (isinstance(cdecl, types.FunctionType) + and hasattr(cdecl, '_cffi_base_type')): + with self._lock: + return self._get_cached_btype(cdecl._cffi_base_type) + raise TypeError(type(cdecl)) + + def sizeof(self, cdecl): + """Return the size in bytes of the argument. It can be a + string naming a C type, or a 'cdata' instance. + """ + if isinstance(cdecl, basestring): + BType = self._typeof(cdecl) + return self._backend.sizeof(BType) + else: + return self._backend.sizeof(cdecl) + + def alignof(self, cdecl): + """Return the natural alignment size in bytes of the C type + given as a string. + """ + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + return self._backend.alignof(cdecl) + + def offsetof(self, cdecl, *fields_or_indexes): + """Return the offset of the named field inside the given + structure or array, which must be given as a C type name. + You can give several field names in case of nested structures. + You can also give numeric values which correspond to array + items, in case of an array type. + """ + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + return self._typeoffsetof(cdecl, *fields_or_indexes)[1] + + def new(self, cdecl, init=None): + """Allocate an instance according to the specified C type and + return a pointer to it. The specified C type must be either a + pointer or an array: ``new('X *')`` allocates an X and returns + a pointer to it, whereas ``new('X[n]')`` allocates an array of + n X'es and returns an array referencing it (which works + mostly like a pointer, like in C). You can also use + ``new('X[]', n)`` to allocate an array of a non-constant + length n. + + The memory is initialized following the rules of declaring a + global variable in C: by default it is zero-initialized, but + an explicit initializer can be given which can be used to + fill all or part of the memory. + + When the returned object goes out of scope, the memory + is freed. In other words the returned object has + ownership of the value of type 'cdecl' that it points to. This + means that the raw data can be used as long as this object is + kept alive, but must not be used for a longer time. Be careful + about that when copying the pointer to the memory somewhere + else, e.g. into another structure. + """ + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + return self._backend.newp(cdecl, init) + + def new_allocator(self, alloc=None, free=None, + should_clear_after_alloc=True): + """Return a new allocator, i.e. a function that behaves like ffi.new() + but uses the provided low-level 'alloc' and 'free' functions. + + 'alloc' is called with the size as argument. If it returns NULL, a + MemoryError is raised. 'free' is called with the result of 'alloc' + as argument. Both can be either Python function or directly C + functions. If 'free' is None, then no free function is called. + If both 'alloc' and 'free' are None, the default is used. + + If 'should_clear_after_alloc' is set to False, then the memory + returned by 'alloc' is assumed to be already cleared (or you are + fine with garbage); otherwise CFFI will clear it. + """ + compiled_ffi = self._backend.FFI() + allocator = compiled_ffi.new_allocator(alloc, free, + should_clear_after_alloc) + def allocate(cdecl, init=None): + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + return allocator(cdecl, init) + return allocate + + def cast(self, cdecl, source): + """Similar to a C cast: returns an instance of the named C + type initialized with the given 'source'. The source is + casted between integers or pointers of any type. + """ + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + return self._backend.cast(cdecl, source) + + def string(self, cdata, maxlen=-1): + """Return a Python string (or unicode string) from the 'cdata'. + If 'cdata' is a pointer or array of characters or bytes, returns + the null-terminated string. The returned string extends until + the first null character, or at most 'maxlen' characters. If + 'cdata' is an array then 'maxlen' defaults to its length. + + If 'cdata' is a pointer or array of wchar_t, returns a unicode + string following the same rules. + + If 'cdata' is a single character or byte or a wchar_t, returns + it as a string or unicode string. + + If 'cdata' is an enum, returns the value of the enumerator as a + string, or 'NUMBER' if the value is out of range. + """ + return self._backend.string(cdata, maxlen) + + def unpack(self, cdata, length): + """Unpack an array of C data of the given length, + returning a Python string/unicode/list. + + If 'cdata' is a pointer to 'char', returns a byte string. + It does not stop at the first null. This is equivalent to: + ffi.buffer(cdata, length)[:] + + If 'cdata' is a pointer to 'wchar_t', returns a unicode string. + 'length' is measured in wchar_t's; it is not the size in bytes. + + If 'cdata' is a pointer to anything else, returns a list of + 'length' items. This is a faster equivalent to: + [cdata[i] for i in range(length)] + """ + return self._backend.unpack(cdata, length) + + #def buffer(self, cdata, size=-1): + # """Return a read-write buffer object that references the raw C data + # pointed to by the given 'cdata'. The 'cdata' must be a pointer or + # an array. Can be passed to functions expecting a buffer, or directly + # manipulated with: + # + # buf[:] get a copy of it in a regular string, or + # buf[idx] as a single character + # buf[:] = ... + # buf[idx] = ... change the content + # """ + # note that 'buffer' is a type, set on this instance by __init__ + + def from_buffer(self, cdecl, python_buffer=_unspecified, + require_writable=False): + """Return a cdata of the given type pointing to the data of the + given Python object, which must support the buffer interface. + Note that this is not meant to be used on the built-in types + str or unicode (you can build 'char[]' arrays explicitly) + but only on objects containing large quantities of raw data + in some other format, like 'array.array' or numpy arrays. + + The first argument is optional and default to 'char[]'. + """ + if python_buffer is _unspecified: + cdecl, python_buffer = self.BCharA, cdecl + elif isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + return self._backend.from_buffer(cdecl, python_buffer, + require_writable) + + def memmove(self, dest, src, n): + """ffi.memmove(dest, src, n) copies n bytes of memory from src to dest. + + Like the C function memmove(), the memory areas may overlap; + apart from that it behaves like the C function memcpy(). + + 'src' can be any cdata ptr or array, or any Python buffer object. + 'dest' can be any cdata ptr or array, or a writable Python buffer + object. The size to copy, 'n', is always measured in bytes. + + Unlike other methods, this one supports all Python buffer including + byte strings and bytearrays---but it still does not support + non-contiguous buffers. + """ + return self._backend.memmove(dest, src, n) + + def callback(self, cdecl, python_callable=None, error=None, onerror=None): + """Return a callback object or a decorator making such a + callback object. 'cdecl' must name a C function pointer type. + The callback invokes the specified 'python_callable' (which may + be provided either directly or via a decorator). Important: the + callback object must be manually kept alive for as long as the + callback may be invoked from the C level. + """ + def callback_decorator_wrap(python_callable): + if not callable(python_callable): + raise TypeError("the 'python_callable' argument " + "is not callable") + return self._backend.callback(cdecl, python_callable, + error, onerror) + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl, consider_function_as_funcptr=True) + if python_callable is None: + return callback_decorator_wrap # decorator mode + else: + return callback_decorator_wrap(python_callable) # direct mode + + def getctype(self, cdecl, replace_with=''): + """Return a string giving the C type 'cdecl', which may be itself + a string or a object. If 'replace_with' is given, it gives + extra text to append (or insert for more complicated C types), like + a variable name, or '*' to get actually the C type 'pointer-to-cdecl'. + """ + if isinstance(cdecl, basestring): + cdecl = self._typeof(cdecl) + replace_with = replace_with.strip() + if (replace_with.startswith('*') + and '&[' in self._backend.getcname(cdecl, '&')): + replace_with = '(%s)' % replace_with + elif replace_with and not replace_with[0] in '[(': + replace_with = ' ' + replace_with + return self._backend.getcname(cdecl, replace_with) + + def gc(self, cdata, destructor, size=0): + """Return a new cdata object that points to the same + data. Later, when this new cdata object is garbage-collected, + 'destructor(old_cdata_object)' will be called. + + The optional 'size' gives an estimate of the size, used to + trigger the garbage collection more eagerly. So far only used + on PyPy. It tells the GC that the returned object keeps alive + roughly 'size' bytes of external memory. + """ + return self._backend.gcp(cdata, destructor, size) + + def _get_cached_btype(self, type): + assert self._lock.acquire(False) is False + # call me with the lock! + try: + BType = self._cached_btypes[type] + except KeyError: + finishlist = [] + BType = type.get_cached_btype(self, finishlist) + for type in finishlist: + type.finish_backend_type(self, finishlist) + return BType + + def verify(self, source='', tmpdir=None, **kwargs): + """Verify that the current ffi signatures compile on this + machine, and return a dynamic library object. The dynamic + library can be used to call functions and access global + variables declared in this 'ffi'. The library is compiled + by the C compiler: it gives you C-level API compatibility + (including calling macros). This is unlike 'ffi.dlopen()', + which requires binary compatibility in the signatures. + """ + from .verifier import Verifier, _caller_dir_pycache + # + # If set_unicode(True) was called, insert the UNICODE and + # _UNICODE macro declarations + if self._windows_unicode: + self._apply_windows_unicode(kwargs) + # + # Set the tmpdir here, and not in Verifier.__init__: it picks + # up the caller's directory, which we want to be the caller of + # ffi.verify(), as opposed to the caller of Veritier(). + tmpdir = tmpdir or _caller_dir_pycache() + # + # Make a Verifier() and use it to load the library. + self.verifier = Verifier(self, source, tmpdir, **kwargs) + lib = self.verifier.load_library() + # + # Save the loaded library for keep-alive purposes, even + # if the caller doesn't keep it alive itself (it should). + self._libraries.append(lib) + return lib + + def _get_errno(self): + return self._backend.get_errno() + def _set_errno(self, errno): + self._backend.set_errno(errno) + errno = property(_get_errno, _set_errno, None, + "the value of 'errno' from/to the C calls") + + def getwinerror(self, code=-1): + return self._backend.getwinerror(code) + + def _pointer_to(self, ctype): + with self._lock: + return model.pointer_cache(self, ctype) + + def addressof(self, cdata, *fields_or_indexes): + """Return the address of a . + If 'fields_or_indexes' are given, returns the address of that + field or array item in the structure or array, recursively in + case of nested structures. + """ + try: + ctype = self._backend.typeof(cdata) + except TypeError: + if '__addressof__' in type(cdata).__dict__: + return type(cdata).__addressof__(cdata, *fields_or_indexes) + raise + if fields_or_indexes: + ctype, offset = self._typeoffsetof(ctype, *fields_or_indexes) + else: + if ctype.kind == "pointer": + raise TypeError("addressof(pointer)") + offset = 0 + ctypeptr = self._pointer_to(ctype) + return self._backend.rawaddressof(ctypeptr, cdata, offset) + + def _typeoffsetof(self, ctype, field_or_index, *fields_or_indexes): + ctype, offset = self._backend.typeoffsetof(ctype, field_or_index) + for field1 in fields_or_indexes: + ctype, offset1 = self._backend.typeoffsetof(ctype, field1, 1) + offset += offset1 + return ctype, offset + + def include(self, ffi_to_include): + """Includes the typedefs, structs, unions and enums defined + in another FFI instance. Usage is similar to a #include in C, + where a part of the program might include types defined in + another part for its own usage. Note that the include() + method has no effect on functions, constants and global + variables, which must anyway be accessed directly from the + lib object returned by the original FFI instance. + """ + if not isinstance(ffi_to_include, FFI): + raise TypeError("ffi.include() expects an argument that is also of" + " type cffi.FFI, not %r" % ( + type(ffi_to_include).__name__,)) + if ffi_to_include is self: + raise ValueError("self.include(self)") + with ffi_to_include._lock: + with self._lock: + self._parser.include(ffi_to_include._parser) + self._cdefsources.append('[') + self._cdefsources.extend(ffi_to_include._cdefsources) + self._cdefsources.append(']') + self._included_ffis.append(ffi_to_include) + + def new_handle(self, x): + return self._backend.newp_handle(self.BVoidP, x) + + def from_handle(self, x): + return self._backend.from_handle(x) + + def release(self, x): + self._backend.release(x) + + def set_unicode(self, enabled_flag): + """Windows: if 'enabled_flag' is True, enable the UNICODE and + _UNICODE defines in C, and declare the types like TCHAR and LPTCSTR + to be (pointers to) wchar_t. If 'enabled_flag' is False, + declare these types to be (pointers to) plain 8-bit characters. + This is mostly for backward compatibility; you usually want True. + """ + if self._windows_unicode is not None: + raise ValueError("set_unicode() can only be called once") + enabled_flag = bool(enabled_flag) + if enabled_flag: + self.cdef("typedef wchar_t TBYTE;" + "typedef wchar_t TCHAR;" + "typedef const wchar_t *LPCTSTR;" + "typedef const wchar_t *PCTSTR;" + "typedef wchar_t *LPTSTR;" + "typedef wchar_t *PTSTR;" + "typedef TBYTE *PTBYTE;" + "typedef TCHAR *PTCHAR;") + else: + self.cdef("typedef char TBYTE;" + "typedef char TCHAR;" + "typedef const char *LPCTSTR;" + "typedef const char *PCTSTR;" + "typedef char *LPTSTR;" + "typedef char *PTSTR;" + "typedef TBYTE *PTBYTE;" + "typedef TCHAR *PTCHAR;") + self._windows_unicode = enabled_flag + + def _apply_windows_unicode(self, kwds): + defmacros = kwds.get('define_macros', ()) + if not isinstance(defmacros, (list, tuple)): + raise TypeError("'define_macros' must be a list or tuple") + defmacros = list(defmacros) + [('UNICODE', '1'), + ('_UNICODE', '1')] + kwds['define_macros'] = defmacros + + def _apply_embedding_fix(self, kwds): + # must include an argument like "-lpython2.7" for the compiler + def ensure(key, value): + lst = kwds.setdefault(key, []) + if value not in lst: + lst.append(value) + # + if '__pypy__' in sys.builtin_module_names: + import os + if sys.platform == "win32": + # we need 'libpypy-c.lib'. Current distributions of + # pypy (>= 4.1) contain it as 'libs/python27.lib'. + pythonlib = "python{0[0]}{0[1]}".format(sys.version_info) + if hasattr(sys, 'prefix'): + ensure('library_dirs', os.path.join(sys.prefix, 'libs')) + else: + # we need 'libpypy-c.{so,dylib}', which should be by + # default located in 'sys.prefix/bin' for installed + # systems. + if sys.version_info < (3,): + pythonlib = "pypy-c" + else: + pythonlib = "pypy3-c" + if hasattr(sys, 'prefix'): + ensure('library_dirs', os.path.join(sys.prefix, 'bin')) + # On uninstalled pypy's, the libpypy-c is typically found in + # .../pypy/goal/. + if hasattr(sys, 'prefix'): + ensure('library_dirs', os.path.join(sys.prefix, 'pypy', 'goal')) + else: + if sys.platform == "win32": + template = "python%d%d" + if hasattr(sys, 'gettotalrefcount'): + template += '_d' + else: + try: + import sysconfig + except ImportError: # 2.6 + from cffi._shimmed_dist_utils import sysconfig + template = "python%d.%d" + if sysconfig.get_config_var('DEBUG_EXT'): + template += sysconfig.get_config_var('DEBUG_EXT') + pythonlib = (template % + (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) + if hasattr(sys, 'abiflags'): + pythonlib += sys.abiflags + ensure('libraries', pythonlib) + if sys.platform == "win32": + ensure('extra_link_args', '/MANIFEST') + + def set_source(self, module_name, source, source_extension='.c', **kwds): + import os + if hasattr(self, '_assigned_source'): + raise ValueError("set_source() cannot be called several times " + "per ffi object") + if not isinstance(module_name, basestring): + raise TypeError("'module_name' must be a string") + if os.sep in module_name or (os.altsep and os.altsep in module_name): + raise ValueError("'module_name' must not contain '/': use a dotted " + "name to make a 'package.module' location") + self._assigned_source = (str(module_name), source, + source_extension, kwds) + + def set_source_pkgconfig(self, module_name, pkgconfig_libs, source, + source_extension='.c', **kwds): + from . import pkgconfig + if not isinstance(pkgconfig_libs, list): + raise TypeError("the pkgconfig_libs argument must be a list " + "of package names") + kwds2 = pkgconfig.flags_from_pkgconfig(pkgconfig_libs) + pkgconfig.merge_flags(kwds, kwds2) + self.set_source(module_name, source, source_extension, **kwds) + + def distutils_extension(self, tmpdir='build', verbose=True): + from cffi._shimmed_dist_utils import mkpath + from .recompiler import recompile + # + if not hasattr(self, '_assigned_source'): + if hasattr(self, 'verifier'): # fallback, 'tmpdir' ignored + return self.verifier.get_extension() + raise ValueError("set_source() must be called before" + " distutils_extension()") + module_name, source, source_extension, kwds = self._assigned_source + if source is None: + raise TypeError("distutils_extension() is only for C extension " + "modules, not for dlopen()-style pure Python " + "modules") + mkpath(tmpdir) + ext, updated = recompile(self, module_name, + source, tmpdir=tmpdir, extradir=tmpdir, + source_extension=source_extension, + call_c_compiler=False, **kwds) + if verbose: + if updated: + sys.stderr.write("regenerated: %r\n" % (ext.sources[0],)) + else: + sys.stderr.write("not modified: %r\n" % (ext.sources[0],)) + return ext + + def emit_c_code(self, filename): + from .recompiler import recompile + # + if not hasattr(self, '_assigned_source'): + raise ValueError("set_source() must be called before emit_c_code()") + module_name, source, source_extension, kwds = self._assigned_source + if source is None: + raise TypeError("emit_c_code() is only for C extension modules, " + "not for dlopen()-style pure Python modules") + recompile(self, module_name, source, + c_file=filename, call_c_compiler=False, + uses_ffiplatform=False, **kwds) + + def emit_python_code(self, filename): + from .recompiler import recompile + # + if not hasattr(self, '_assigned_source'): + raise ValueError("set_source() must be called before emit_c_code()") + module_name, source, source_extension, kwds = self._assigned_source + if source is not None: + raise TypeError("emit_python_code() is only for dlopen()-style " + "pure Python modules, not for C extension modules") + recompile(self, module_name, source, + c_file=filename, call_c_compiler=False, + uses_ffiplatform=False, **kwds) + + def compile(self, tmpdir='.', verbose=0, target=None, debug=None): + """The 'target' argument gives the final file name of the + compiled DLL. Use '*' to force distutils' choice, suitable for + regular CPython C API modules. Use a file name ending in '.*' + to ask for the system's default extension for dynamic libraries + (.so/.dll/.dylib). + + The default is '*' when building a non-embedded C API extension, + and (module_name + '.*') when building an embedded library. + """ + from .recompiler import recompile + # + if not hasattr(self, '_assigned_source'): + raise ValueError("set_source() must be called before compile()") + module_name, source, source_extension, kwds = self._assigned_source + return recompile(self, module_name, source, tmpdir=tmpdir, + target=target, source_extension=source_extension, + compiler_verbose=verbose, debug=debug, **kwds) + + def init_once(self, func, tag): + # Read _init_once_cache[tag], which is either (False, lock) if + # we're calling the function now in some thread, or (True, result). + # Don't call setdefault() in most cases, to avoid allocating and + # immediately freeing a lock; but still use setdefaut() to avoid + # races. + try: + x = self._init_once_cache[tag] + except KeyError: + x = self._init_once_cache.setdefault(tag, (False, allocate_lock())) + # Common case: we got (True, result), so we return the result. + if x[0]: + return x[1] + # Else, it's a lock. Acquire it to serialize the following tests. + with x[1]: + # Read again from _init_once_cache the current status. + x = self._init_once_cache[tag] + if x[0]: + return x[1] + # Call the function and store the result back. + result = func() + self._init_once_cache[tag] = (True, result) + return result + + def embedding_init_code(self, pysource): + if self._embedding: + raise ValueError("embedding_init_code() can only be called once") + # fix 'pysource' before it gets dumped into the C file: + # - remove empty lines at the beginning, so it starts at "line 1" + # - dedent, if all non-empty lines are indented + # - check for SyntaxErrors + import re + match = re.match(r'\s*\n', pysource) + if match: + pysource = pysource[match.end():] + lines = pysource.splitlines() or [''] + prefix = re.match(r'\s*', lines[0]).group() + for i in range(1, len(lines)): + line = lines[i] + if line.rstrip(): + while not line.startswith(prefix): + prefix = prefix[:-1] + i = len(prefix) + lines = [line[i:]+'\n' for line in lines] + pysource = ''.join(lines) + # + compile(pysource, "cffi_init", "exec") + # + self._embedding = pysource + + def def_extern(self, *args, **kwds): + raise ValueError("ffi.def_extern() is only available on API-mode FFI " + "objects") + + def list_types(self): + """Returns the user type names known to this FFI instance. + This returns a tuple containing three lists of names: + (typedef_names, names_of_structs, names_of_unions) + """ + typedefs = [] + structs = [] + unions = [] + for key in self._parser._declarations: + if key.startswith('typedef '): + typedefs.append(key[8:]) + elif key.startswith('struct '): + structs.append(key[7:]) + elif key.startswith('union '): + unions.append(key[6:]) + typedefs.sort() + structs.sort() + unions.sort() + return (typedefs, structs, unions) + + +def _load_backend_lib(backend, name, flags): + import os + if not isinstance(name, basestring): + if sys.platform != "win32" or name is not None: + return backend.load_library(name, flags) + name = "c" # Windows: load_library(None) fails, but this works + # on Python 2 (backward compatibility hack only) + first_error = None + if '.' in name or '/' in name or os.sep in name: + try: + return backend.load_library(name, flags) + except OSError as e: + first_error = e + import ctypes.util + path = ctypes.util.find_library(name) + if path is None: + if name == "c" and sys.platform == "win32" and sys.version_info >= (3,): + raise OSError("dlopen(None) cannot work on Windows for Python 3 " + "(see http://bugs.python.org/issue23606)") + msg = ("ctypes.util.find_library() did not manage " + "to locate a library called %r" % (name,)) + if first_error is not None: + msg = "%s. Additionally, %s" % (first_error, msg) + raise OSError(msg) + return backend.load_library(path, flags) + +def _make_ffi_library(ffi, libname, flags): + backend = ffi._backend + backendlib = _load_backend_lib(backend, libname, flags) + # + def accessor_function(name): + key = 'function ' + name + tp, _ = ffi._parser._declarations[key] + BType = ffi._get_cached_btype(tp) + value = backendlib.load_function(BType, name) + library.__dict__[name] = value + # + def accessor_variable(name): + key = 'variable ' + name + tp, _ = ffi._parser._declarations[key] + BType = ffi._get_cached_btype(tp) + read_variable = backendlib.read_variable + write_variable = backendlib.write_variable + setattr(FFILibrary, name, property( + lambda self: read_variable(BType, name), + lambda self, value: write_variable(BType, name, value))) + # + def addressof_var(name): + try: + return addr_variables[name] + except KeyError: + with ffi._lock: + if name not in addr_variables: + key = 'variable ' + name + tp, _ = ffi._parser._declarations[key] + BType = ffi._get_cached_btype(tp) + if BType.kind != 'array': + BType = model.pointer_cache(ffi, BType) + p = backendlib.load_function(BType, name) + addr_variables[name] = p + return addr_variables[name] + # + def accessor_constant(name): + raise NotImplementedError("non-integer constant '%s' cannot be " + "accessed from a dlopen() library" % (name,)) + # + def accessor_int_constant(name): + library.__dict__[name] = ffi._parser._int_constants[name] + # + accessors = {} + accessors_version = [False] + addr_variables = {} + # + def update_accessors(): + if accessors_version[0] is ffi._cdef_version: + return + # + for key, (tp, _) in ffi._parser._declarations.items(): + if not isinstance(tp, model.EnumType): + tag, name = key.split(' ', 1) + if tag == 'function': + accessors[name] = accessor_function + elif tag == 'variable': + accessors[name] = accessor_variable + elif tag == 'constant': + accessors[name] = accessor_constant + else: + for i, enumname in enumerate(tp.enumerators): + def accessor_enum(name, tp=tp, i=i): + tp.check_not_partial() + library.__dict__[name] = tp.enumvalues[i] + accessors[enumname] = accessor_enum + for name in ffi._parser._int_constants: + accessors.setdefault(name, accessor_int_constant) + accessors_version[0] = ffi._cdef_version + # + def make_accessor(name): + with ffi._lock: + if name in library.__dict__ or name in FFILibrary.__dict__: + return # added by another thread while waiting for the lock + if name not in accessors: + update_accessors() + if name not in accessors: + raise AttributeError(name) + accessors[name](name) + # + class FFILibrary(object): + def __getattr__(self, name): + make_accessor(name) + return getattr(self, name) + def __setattr__(self, name, value): + try: + property = getattr(self.__class__, name) + except AttributeError: + make_accessor(name) + setattr(self, name, value) + else: + property.__set__(self, value) + def __dir__(self): + with ffi._lock: + update_accessors() + return accessors.keys() + def __addressof__(self, name): + if name in library.__dict__: + return library.__dict__[name] + if name in FFILibrary.__dict__: + return addressof_var(name) + make_accessor(name) + if name in library.__dict__: + return library.__dict__[name] + if name in FFILibrary.__dict__: + return addressof_var(name) + raise AttributeError("cffi library has no function or " + "global variable named '%s'" % (name,)) + def __cffi_close__(self): + backendlib.close_lib() + self.__dict__.clear() + # + if isinstance(libname, basestring): + try: + if not isinstance(libname, str): # unicode, on Python 2 + libname = libname.encode('utf-8') + FFILibrary.__name__ = 'FFILibrary_%s' % libname + except UnicodeError: + pass + library = FFILibrary() + return library, library.__dict__ + +def _builtin_function_type(func): + # a hack to make at least ffi.typeof(builtin_function) work, + # if the builtin function was obtained by 'vengine_cpy'. + import sys + try: + module = sys.modules[func.__module__] + ffi = module._cffi_original_ffi + types_of_builtin_funcs = module._cffi_types_of_builtin_funcs + tp = types_of_builtin_funcs[func] + except (KeyError, AttributeError, TypeError): + return None + else: + with ffi._lock: + return ffi._get_cached_btype(tp) diff --git a/intelliaide/vendor/cffi/backend_ctypes.py b/intelliaide/vendor/cffi/backend_ctypes.py new file mode 100644 index 0000000..e7956a7 --- /dev/null +++ b/intelliaide/vendor/cffi/backend_ctypes.py @@ -0,0 +1,1121 @@ +import ctypes, ctypes.util, operator, sys +from . import model + +if sys.version_info < (3,): + bytechr = chr +else: + unicode = str + long = int + xrange = range + bytechr = lambda num: bytes([num]) + +class CTypesType(type): + pass + +class CTypesData(object): + __metaclass__ = CTypesType + __slots__ = ['__weakref__'] + __name__ = '' + + def __init__(self, *args): + raise TypeError("cannot instantiate %r" % (self.__class__,)) + + @classmethod + def _newp(cls, init): + raise TypeError("expected a pointer or array ctype, got '%s'" + % (cls._get_c_name(),)) + + @staticmethod + def _to_ctypes(value): + raise TypeError + + @classmethod + def _arg_to_ctypes(cls, *value): + try: + ctype = cls._ctype + except AttributeError: + raise TypeError("cannot create an instance of %r" % (cls,)) + if value: + res = cls._to_ctypes(*value) + if not isinstance(res, ctype): + res = cls._ctype(res) + else: + res = cls._ctype() + return res + + @classmethod + def _create_ctype_obj(cls, init): + if init is None: + return cls._arg_to_ctypes() + else: + return cls._arg_to_ctypes(init) + + @staticmethod + def _from_ctypes(ctypes_value): + raise TypeError + + @classmethod + def _get_c_name(cls, replace_with=''): + return cls._reftypename.replace(' &', replace_with) + + @classmethod + def _fix_class(cls): + cls.__name__ = 'CData<%s>' % (cls._get_c_name(),) + cls.__qualname__ = 'CData<%s>' % (cls._get_c_name(),) + cls.__module__ = 'ffi' + + def _get_own_repr(self): + raise NotImplementedError + + def _addr_repr(self, address): + if address == 0: + return 'NULL' + else: + if address < 0: + address += 1 << (8*ctypes.sizeof(ctypes.c_void_p)) + return '0x%x' % address + + def __repr__(self, c_name=None): + own = self._get_own_repr() + return '' % (c_name or self._get_c_name(), own) + + def _convert_to_address(self, BClass): + if BClass is None: + raise TypeError("cannot convert %r to an address" % ( + self._get_c_name(),)) + else: + raise TypeError("cannot convert %r to %r" % ( + self._get_c_name(), BClass._get_c_name())) + + @classmethod + def _get_size(cls): + return ctypes.sizeof(cls._ctype) + + def _get_size_of_instance(self): + return ctypes.sizeof(self._ctype) + + @classmethod + def _cast_from(cls, source): + raise TypeError("cannot cast to %r" % (cls._get_c_name(),)) + + def _cast_to_integer(self): + return self._convert_to_address(None) + + @classmethod + def _alignment(cls): + return ctypes.alignment(cls._ctype) + + def __iter__(self): + raise TypeError("cdata %r does not support iteration" % ( + self._get_c_name()),) + + def _make_cmp(name): + cmpfunc = getattr(operator, name) + def cmp(self, other): + v_is_ptr = not isinstance(self, CTypesGenericPrimitive) + w_is_ptr = (isinstance(other, CTypesData) and + not isinstance(other, CTypesGenericPrimitive)) + if v_is_ptr and w_is_ptr: + return cmpfunc(self._convert_to_address(None), + other._convert_to_address(None)) + elif v_is_ptr or w_is_ptr: + return NotImplemented + else: + if isinstance(self, CTypesGenericPrimitive): + self = self._value + if isinstance(other, CTypesGenericPrimitive): + other = other._value + return cmpfunc(self, other) + cmp.func_name = name + return cmp + + __eq__ = _make_cmp('__eq__') + __ne__ = _make_cmp('__ne__') + __lt__ = _make_cmp('__lt__') + __le__ = _make_cmp('__le__') + __gt__ = _make_cmp('__gt__') + __ge__ = _make_cmp('__ge__') + + def __hash__(self): + return hash(self._convert_to_address(None)) + + def _to_string(self, maxlen): + raise TypeError("string(): %r" % (self,)) + + +class CTypesGenericPrimitive(CTypesData): + __slots__ = [] + + def __hash__(self): + return hash(self._value) + + def _get_own_repr(self): + return repr(self._from_ctypes(self._value)) + + +class CTypesGenericArray(CTypesData): + __slots__ = [] + + @classmethod + def _newp(cls, init): + return cls(init) + + def __iter__(self): + for i in xrange(len(self)): + yield self[i] + + def _get_own_repr(self): + return self._addr_repr(ctypes.addressof(self._blob)) + + +class CTypesGenericPtr(CTypesData): + __slots__ = ['_address', '_as_ctype_ptr'] + _automatic_casts = False + kind = "pointer" + + @classmethod + def _newp(cls, init): + return cls(init) + + @classmethod + def _cast_from(cls, source): + if source is None: + address = 0 + elif isinstance(source, CTypesData): + address = source._cast_to_integer() + elif isinstance(source, (int, long)): + address = source + else: + raise TypeError("bad type for cast to %r: %r" % + (cls, type(source).__name__)) + return cls._new_pointer_at(address) + + @classmethod + def _new_pointer_at(cls, address): + self = cls.__new__(cls) + self._address = address + self._as_ctype_ptr = ctypes.cast(address, cls._ctype) + return self + + def _get_own_repr(self): + try: + return self._addr_repr(self._address) + except AttributeError: + return '???' + + def _cast_to_integer(self): + return self._address + + def __nonzero__(self): + return bool(self._address) + __bool__ = __nonzero__ + + @classmethod + def _to_ctypes(cls, value): + if not isinstance(value, CTypesData): + raise TypeError("unexpected %s object" % type(value).__name__) + address = value._convert_to_address(cls) + return ctypes.cast(address, cls._ctype) + + @classmethod + def _from_ctypes(cls, ctypes_ptr): + address = ctypes.cast(ctypes_ptr, ctypes.c_void_p).value or 0 + return cls._new_pointer_at(address) + + @classmethod + def _initialize(cls, ctypes_ptr, value): + if value: + ctypes_ptr.contents = cls._to_ctypes(value).contents + + def _convert_to_address(self, BClass): + if (BClass in (self.__class__, None) or BClass._automatic_casts + or self._automatic_casts): + return self._address + else: + return CTypesData._convert_to_address(self, BClass) + + +class CTypesBaseStructOrUnion(CTypesData): + __slots__ = ['_blob'] + + @classmethod + def _create_ctype_obj(cls, init): + # may be overridden + raise TypeError("cannot instantiate opaque type %s" % (cls,)) + + def _get_own_repr(self): + return self._addr_repr(ctypes.addressof(self._blob)) + + @classmethod + def _offsetof(cls, fieldname): + return getattr(cls._ctype, fieldname).offset + + def _convert_to_address(self, BClass): + if getattr(BClass, '_BItem', None) is self.__class__: + return ctypes.addressof(self._blob) + else: + return CTypesData._convert_to_address(self, BClass) + + @classmethod + def _from_ctypes(cls, ctypes_struct_or_union): + self = cls.__new__(cls) + self._blob = ctypes_struct_or_union + return self + + @classmethod + def _to_ctypes(cls, value): + return value._blob + + def __repr__(self, c_name=None): + return CTypesData.__repr__(self, c_name or self._get_c_name(' &')) + + +class CTypesBackend(object): + + PRIMITIVE_TYPES = { + 'char': ctypes.c_char, + 'short': ctypes.c_short, + 'int': ctypes.c_int, + 'long': ctypes.c_long, + 'long long': ctypes.c_longlong, + 'signed char': ctypes.c_byte, + 'unsigned char': ctypes.c_ubyte, + 'unsigned short': ctypes.c_ushort, + 'unsigned int': ctypes.c_uint, + 'unsigned long': ctypes.c_ulong, + 'unsigned long long': ctypes.c_ulonglong, + 'float': ctypes.c_float, + 'double': ctypes.c_double, + '_Bool': ctypes.c_bool, + } + + for _name in ['unsigned long long', 'unsigned long', + 'unsigned int', 'unsigned short', 'unsigned char']: + _size = ctypes.sizeof(PRIMITIVE_TYPES[_name]) + PRIMITIVE_TYPES['uint%d_t' % (8*_size)] = PRIMITIVE_TYPES[_name] + if _size == ctypes.sizeof(ctypes.c_void_p): + PRIMITIVE_TYPES['uintptr_t'] = PRIMITIVE_TYPES[_name] + if _size == ctypes.sizeof(ctypes.c_size_t): + PRIMITIVE_TYPES['size_t'] = PRIMITIVE_TYPES[_name] + + for _name in ['long long', 'long', 'int', 'short', 'signed char']: + _size = ctypes.sizeof(PRIMITIVE_TYPES[_name]) + PRIMITIVE_TYPES['int%d_t' % (8*_size)] = PRIMITIVE_TYPES[_name] + if _size == ctypes.sizeof(ctypes.c_void_p): + PRIMITIVE_TYPES['intptr_t'] = PRIMITIVE_TYPES[_name] + PRIMITIVE_TYPES['ptrdiff_t'] = PRIMITIVE_TYPES[_name] + if _size == ctypes.sizeof(ctypes.c_size_t): + PRIMITIVE_TYPES['ssize_t'] = PRIMITIVE_TYPES[_name] + + + def __init__(self): + self.RTLD_LAZY = 0 # not supported anyway by ctypes + self.RTLD_NOW = 0 + self.RTLD_GLOBAL = ctypes.RTLD_GLOBAL + self.RTLD_LOCAL = ctypes.RTLD_LOCAL + + def set_ffi(self, ffi): + self.ffi = ffi + + def _get_types(self): + return CTypesData, CTypesType + + def load_library(self, path, flags=0): + cdll = ctypes.CDLL(path, flags) + return CTypesLibrary(self, cdll) + + def new_void_type(self): + class CTypesVoid(CTypesData): + __slots__ = [] + _reftypename = 'void &' + @staticmethod + def _from_ctypes(novalue): + return None + @staticmethod + def _to_ctypes(novalue): + if novalue is not None: + raise TypeError("None expected, got %s object" % + (type(novalue).__name__,)) + return None + CTypesVoid._fix_class() + return CTypesVoid + + def new_primitive_type(self, name): + if name == 'wchar_t': + raise NotImplementedError(name) + ctype = self.PRIMITIVE_TYPES[name] + if name == 'char': + kind = 'char' + elif name in ('float', 'double'): + kind = 'float' + else: + if name in ('signed char', 'unsigned char'): + kind = 'byte' + elif name == '_Bool': + kind = 'bool' + else: + kind = 'int' + is_signed = (ctype(-1).value == -1) + # + def _cast_source_to_int(source): + if isinstance(source, (int, long, float)): + source = int(source) + elif isinstance(source, CTypesData): + source = source._cast_to_integer() + elif isinstance(source, bytes): + source = ord(source) + elif source is None: + source = 0 + else: + raise TypeError("bad type for cast to %r: %r" % + (CTypesPrimitive, type(source).__name__)) + return source + # + kind1 = kind + class CTypesPrimitive(CTypesGenericPrimitive): + __slots__ = ['_value'] + _ctype = ctype + _reftypename = '%s &' % name + kind = kind1 + + def __init__(self, value): + self._value = value + + @staticmethod + def _create_ctype_obj(init): + if init is None: + return ctype() + return ctype(CTypesPrimitive._to_ctypes(init)) + + if kind == 'int' or kind == 'byte': + @classmethod + def _cast_from(cls, source): + source = _cast_source_to_int(source) + source = ctype(source).value # cast within range + return cls(source) + def __int__(self): + return self._value + + if kind == 'bool': + @classmethod + def _cast_from(cls, source): + if not isinstance(source, (int, long, float)): + source = _cast_source_to_int(source) + return cls(bool(source)) + def __int__(self): + return int(self._value) + + if kind == 'char': + @classmethod + def _cast_from(cls, source): + source = _cast_source_to_int(source) + source = bytechr(source & 0xFF) + return cls(source) + def __int__(self): + return ord(self._value) + + if kind == 'float': + @classmethod + def _cast_from(cls, source): + if isinstance(source, float): + pass + elif isinstance(source, CTypesGenericPrimitive): + if hasattr(source, '__float__'): + source = float(source) + else: + source = int(source) + else: + source = _cast_source_to_int(source) + source = ctype(source).value # fix precision + return cls(source) + def __int__(self): + return int(self._value) + def __float__(self): + return self._value + + _cast_to_integer = __int__ + + if kind == 'int' or kind == 'byte' or kind == 'bool': + @staticmethod + def _to_ctypes(x): + if not isinstance(x, (int, long)): + if isinstance(x, CTypesData): + x = int(x) + else: + raise TypeError("integer expected, got %s" % + type(x).__name__) + if ctype(x).value != x: + if not is_signed and x < 0: + raise OverflowError("%s: negative integer" % name) + else: + raise OverflowError("%s: integer out of bounds" + % name) + return x + + if kind == 'char': + @staticmethod + def _to_ctypes(x): + if isinstance(x, bytes) and len(x) == 1: + return x + if isinstance(x, CTypesPrimitive): # > + return x._value + raise TypeError("character expected, got %s" % + type(x).__name__) + def __nonzero__(self): + return ord(self._value) != 0 + else: + def __nonzero__(self): + return self._value != 0 + __bool__ = __nonzero__ + + if kind == 'float': + @staticmethod + def _to_ctypes(x): + if not isinstance(x, (int, long, float, CTypesData)): + raise TypeError("float expected, got %s" % + type(x).__name__) + return ctype(x).value + + @staticmethod + def _from_ctypes(value): + return getattr(value, 'value', value) + + @staticmethod + def _initialize(blob, init): + blob.value = CTypesPrimitive._to_ctypes(init) + + if kind == 'char': + def _to_string(self, maxlen): + return self._value + if kind == 'byte': + def _to_string(self, maxlen): + return chr(self._value & 0xff) + # + CTypesPrimitive._fix_class() + return CTypesPrimitive + + def new_pointer_type(self, BItem): + getbtype = self.ffi._get_cached_btype + if BItem is getbtype(model.PrimitiveType('char')): + kind = 'charp' + elif BItem in (getbtype(model.PrimitiveType('signed char')), + getbtype(model.PrimitiveType('unsigned char'))): + kind = 'bytep' + elif BItem is getbtype(model.void_type): + kind = 'voidp' + else: + kind = 'generic' + # + class CTypesPtr(CTypesGenericPtr): + __slots__ = ['_own'] + if kind == 'charp': + __slots__ += ['__as_strbuf'] + _BItem = BItem + if hasattr(BItem, '_ctype'): + _ctype = ctypes.POINTER(BItem._ctype) + _bitem_size = ctypes.sizeof(BItem._ctype) + else: + _ctype = ctypes.c_void_p + if issubclass(BItem, CTypesGenericArray): + _reftypename = BItem._get_c_name('(* &)') + else: + _reftypename = BItem._get_c_name(' * &') + + def __init__(self, init): + ctypeobj = BItem._create_ctype_obj(init) + if kind == 'charp': + self.__as_strbuf = ctypes.create_string_buffer( + ctypeobj.value + b'\x00') + self._as_ctype_ptr = ctypes.cast( + self.__as_strbuf, self._ctype) + else: + self._as_ctype_ptr = ctypes.pointer(ctypeobj) + self._address = ctypes.cast(self._as_ctype_ptr, + ctypes.c_void_p).value + self._own = True + + def __add__(self, other): + if isinstance(other, (int, long)): + return self._new_pointer_at(self._address + + other * self._bitem_size) + else: + return NotImplemented + + def __sub__(self, other): + if isinstance(other, (int, long)): + return self._new_pointer_at(self._address - + other * self._bitem_size) + elif type(self) is type(other): + return (self._address - other._address) // self._bitem_size + else: + return NotImplemented + + def __getitem__(self, index): + if getattr(self, '_own', False) and index != 0: + raise IndexError + return BItem._from_ctypes(self._as_ctype_ptr[index]) + + def __setitem__(self, index, value): + self._as_ctype_ptr[index] = BItem._to_ctypes(value) + + if kind == 'charp' or kind == 'voidp': + @classmethod + def _arg_to_ctypes(cls, *value): + if value and isinstance(value[0], bytes): + return ctypes.c_char_p(value[0]) + else: + return super(CTypesPtr, cls)._arg_to_ctypes(*value) + + if kind == 'charp' or kind == 'bytep': + def _to_string(self, maxlen): + if maxlen < 0: + maxlen = sys.maxsize + p = ctypes.cast(self._as_ctype_ptr, + ctypes.POINTER(ctypes.c_char)) + n = 0 + while n < maxlen and p[n] != b'\x00': + n += 1 + return b''.join([p[i] for i in range(n)]) + + def _get_own_repr(self): + if getattr(self, '_own', False): + return 'owning %d bytes' % ( + ctypes.sizeof(self._as_ctype_ptr.contents),) + return super(CTypesPtr, self)._get_own_repr() + # + if (BItem is self.ffi._get_cached_btype(model.void_type) or + BItem is self.ffi._get_cached_btype(model.PrimitiveType('char'))): + CTypesPtr._automatic_casts = True + # + CTypesPtr._fix_class() + return CTypesPtr + + def new_array_type(self, CTypesPtr, length): + if length is None: + brackets = ' &[]' + else: + brackets = ' &[%d]' % length + BItem = CTypesPtr._BItem + getbtype = self.ffi._get_cached_btype + if BItem is getbtype(model.PrimitiveType('char')): + kind = 'char' + elif BItem in (getbtype(model.PrimitiveType('signed char')), + getbtype(model.PrimitiveType('unsigned char'))): + kind = 'byte' + else: + kind = 'generic' + # + class CTypesArray(CTypesGenericArray): + __slots__ = ['_blob', '_own'] + if length is not None: + _ctype = BItem._ctype * length + else: + __slots__.append('_ctype') + _reftypename = BItem._get_c_name(brackets) + _declared_length = length + _CTPtr = CTypesPtr + + def __init__(self, init): + if length is None: + if isinstance(init, (int, long)): + len1 = init + init = None + elif kind == 'char' and isinstance(init, bytes): + len1 = len(init) + 1 # extra null + else: + init = tuple(init) + len1 = len(init) + self._ctype = BItem._ctype * len1 + self._blob = self._ctype() + self._own = True + if init is not None: + self._initialize(self._blob, init) + + @staticmethod + def _initialize(blob, init): + if isinstance(init, bytes): + init = [init[i:i+1] for i in range(len(init))] + else: + if isinstance(init, CTypesGenericArray): + if (len(init) != len(blob) or + not isinstance(init, CTypesArray)): + raise TypeError("length/type mismatch: %s" % (init,)) + init = tuple(init) + if len(init) > len(blob): + raise IndexError("too many initializers") + addr = ctypes.cast(blob, ctypes.c_void_p).value + PTR = ctypes.POINTER(BItem._ctype) + itemsize = ctypes.sizeof(BItem._ctype) + for i, value in enumerate(init): + p = ctypes.cast(addr + i * itemsize, PTR) + BItem._initialize(p.contents, value) + + def __len__(self): + return len(self._blob) + + def __getitem__(self, index): + if not (0 <= index < len(self._blob)): + raise IndexError + return BItem._from_ctypes(self._blob[index]) + + def __setitem__(self, index, value): + if not (0 <= index < len(self._blob)): + raise IndexError + self._blob[index] = BItem._to_ctypes(value) + + if kind == 'char' or kind == 'byte': + def _to_string(self, maxlen): + if maxlen < 0: + maxlen = len(self._blob) + p = ctypes.cast(self._blob, + ctypes.POINTER(ctypes.c_char)) + n = 0 + while n < maxlen and p[n] != b'\x00': + n += 1 + return b''.join([p[i] for i in range(n)]) + + def _get_own_repr(self): + if getattr(self, '_own', False): + return 'owning %d bytes' % (ctypes.sizeof(self._blob),) + return super(CTypesArray, self)._get_own_repr() + + def _convert_to_address(self, BClass): + if BClass in (CTypesPtr, None) or BClass._automatic_casts: + return ctypes.addressof(self._blob) + else: + return CTypesData._convert_to_address(self, BClass) + + @staticmethod + def _from_ctypes(ctypes_array): + self = CTypesArray.__new__(CTypesArray) + self._blob = ctypes_array + return self + + @staticmethod + def _arg_to_ctypes(value): + return CTypesPtr._arg_to_ctypes(value) + + def __add__(self, other): + if isinstance(other, (int, long)): + return CTypesPtr._new_pointer_at( + ctypes.addressof(self._blob) + + other * ctypes.sizeof(BItem._ctype)) + else: + return NotImplemented + + @classmethod + def _cast_from(cls, source): + raise NotImplementedError("casting to %r" % ( + cls._get_c_name(),)) + # + CTypesArray._fix_class() + return CTypesArray + + def _new_struct_or_union(self, kind, name, base_ctypes_class): + # + class struct_or_union(base_ctypes_class): + pass + struct_or_union.__name__ = '%s_%s' % (kind, name) + kind1 = kind + # + class CTypesStructOrUnion(CTypesBaseStructOrUnion): + __slots__ = ['_blob'] + _ctype = struct_or_union + _reftypename = '%s &' % (name,) + _kind = kind = kind1 + # + CTypesStructOrUnion._fix_class() + return CTypesStructOrUnion + + def new_struct_type(self, name): + return self._new_struct_or_union('struct', name, ctypes.Structure) + + def new_union_type(self, name): + return self._new_struct_or_union('union', name, ctypes.Union) + + def complete_struct_or_union(self, CTypesStructOrUnion, fields, tp, + totalsize=-1, totalalignment=-1, sflags=0, + pack=0): + if totalsize >= 0 or totalalignment >= 0: + raise NotImplementedError("the ctypes backend of CFFI does not support " + "structures completed by verify(); please " + "compile and install the _cffi_backend module.") + struct_or_union = CTypesStructOrUnion._ctype + fnames = [fname for (fname, BField, bitsize) in fields] + btypes = [BField for (fname, BField, bitsize) in fields] + bitfields = [bitsize for (fname, BField, bitsize) in fields] + # + bfield_types = {} + cfields = [] + for (fname, BField, bitsize) in fields: + if bitsize < 0: + cfields.append((fname, BField._ctype)) + bfield_types[fname] = BField + else: + cfields.append((fname, BField._ctype, bitsize)) + bfield_types[fname] = Ellipsis + if sflags & 8: + struct_or_union._pack_ = 1 + elif pack: + struct_or_union._pack_ = pack + struct_or_union._fields_ = cfields + CTypesStructOrUnion._bfield_types = bfield_types + # + @staticmethod + def _create_ctype_obj(init): + result = struct_or_union() + if init is not None: + initialize(result, init) + return result + CTypesStructOrUnion._create_ctype_obj = _create_ctype_obj + # + def initialize(blob, init): + if is_union: + if len(init) > 1: + raise ValueError("union initializer: %d items given, but " + "only one supported (use a dict if needed)" + % (len(init),)) + if not isinstance(init, dict): + if isinstance(init, (bytes, unicode)): + raise TypeError("union initializer: got a str") + init = tuple(init) + if len(init) > len(fnames): + raise ValueError("too many values for %s initializer" % + CTypesStructOrUnion._get_c_name()) + init = dict(zip(fnames, init)) + addr = ctypes.addressof(blob) + for fname, value in init.items(): + BField, bitsize = name2fieldtype[fname] + assert bitsize < 0, \ + "not implemented: initializer with bit fields" + offset = CTypesStructOrUnion._offsetof(fname) + PTR = ctypes.POINTER(BField._ctype) + p = ctypes.cast(addr + offset, PTR) + BField._initialize(p.contents, value) + is_union = CTypesStructOrUnion._kind == 'union' + name2fieldtype = dict(zip(fnames, zip(btypes, bitfields))) + # + for fname, BField, bitsize in fields: + if fname == '': + raise NotImplementedError("nested anonymous structs/unions") + if hasattr(CTypesStructOrUnion, fname): + raise ValueError("the field name %r conflicts in " + "the ctypes backend" % fname) + if bitsize < 0: + def getter(self, fname=fname, BField=BField, + offset=CTypesStructOrUnion._offsetof(fname), + PTR=ctypes.POINTER(BField._ctype)): + addr = ctypes.addressof(self._blob) + p = ctypes.cast(addr + offset, PTR) + return BField._from_ctypes(p.contents) + def setter(self, value, fname=fname, BField=BField): + setattr(self._blob, fname, BField._to_ctypes(value)) + # + if issubclass(BField, CTypesGenericArray): + setter = None + if BField._declared_length == 0: + def getter(self, fname=fname, BFieldPtr=BField._CTPtr, + offset=CTypesStructOrUnion._offsetof(fname), + PTR=ctypes.POINTER(BField._ctype)): + addr = ctypes.addressof(self._blob) + p = ctypes.cast(addr + offset, PTR) + return BFieldPtr._from_ctypes(p) + # + else: + def getter(self, fname=fname, BField=BField): + return BField._from_ctypes(getattr(self._blob, fname)) + def setter(self, value, fname=fname, BField=BField): + # xxx obscure workaround + value = BField._to_ctypes(value) + oldvalue = getattr(self._blob, fname) + setattr(self._blob, fname, value) + if value != getattr(self._blob, fname): + setattr(self._blob, fname, oldvalue) + raise OverflowError("value too large for bitfield") + setattr(CTypesStructOrUnion, fname, property(getter, setter)) + # + CTypesPtr = self.ffi._get_cached_btype(model.PointerType(tp)) + for fname in fnames: + if hasattr(CTypesPtr, fname): + raise ValueError("the field name %r conflicts in " + "the ctypes backend" % fname) + def getter(self, fname=fname): + return getattr(self[0], fname) + def setter(self, value, fname=fname): + setattr(self[0], fname, value) + setattr(CTypesPtr, fname, property(getter, setter)) + + def new_function_type(self, BArgs, BResult, has_varargs): + nameargs = [BArg._get_c_name() for BArg in BArgs] + if has_varargs: + nameargs.append('...') + nameargs = ', '.join(nameargs) + # + class CTypesFunctionPtr(CTypesGenericPtr): + __slots__ = ['_own_callback', '_name'] + _ctype = ctypes.CFUNCTYPE(getattr(BResult, '_ctype', None), + *[BArg._ctype for BArg in BArgs], + use_errno=True) + _reftypename = BResult._get_c_name('(* &)(%s)' % (nameargs,)) + + def __init__(self, init, error=None): + # create a callback to the Python callable init() + import traceback + assert not has_varargs, "varargs not supported for callbacks" + if getattr(BResult, '_ctype', None) is not None: + error = BResult._from_ctypes( + BResult._create_ctype_obj(error)) + else: + error = None + def callback(*args): + args2 = [] + for arg, BArg in zip(args, BArgs): + args2.append(BArg._from_ctypes(arg)) + try: + res2 = init(*args2) + res2 = BResult._to_ctypes(res2) + except: + traceback.print_exc() + res2 = error + if issubclass(BResult, CTypesGenericPtr): + if res2: + res2 = ctypes.cast(res2, ctypes.c_void_p).value + # .value: http://bugs.python.org/issue1574593 + else: + res2 = None + #print repr(res2) + return res2 + if issubclass(BResult, CTypesGenericPtr): + # The only pointers callbacks can return are void*s: + # http://bugs.python.org/issue5710 + callback_ctype = ctypes.CFUNCTYPE( + ctypes.c_void_p, + *[BArg._ctype for BArg in BArgs], + use_errno=True) + else: + callback_ctype = CTypesFunctionPtr._ctype + self._as_ctype_ptr = callback_ctype(callback) + self._address = ctypes.cast(self._as_ctype_ptr, + ctypes.c_void_p).value + self._own_callback = init + + @staticmethod + def _initialize(ctypes_ptr, value): + if value: + raise NotImplementedError("ctypes backend: not supported: " + "initializers for function pointers") + + def __repr__(self): + c_name = getattr(self, '_name', None) + if c_name: + i = self._reftypename.index('(* &)') + if self._reftypename[i-1] not in ' )*': + c_name = ' ' + c_name + c_name = self._reftypename.replace('(* &)', c_name) + return CTypesData.__repr__(self, c_name) + + def _get_own_repr(self): + if getattr(self, '_own_callback', None) is not None: + return 'calling %r' % (self._own_callback,) + return super(CTypesFunctionPtr, self)._get_own_repr() + + def __call__(self, *args): + if has_varargs: + assert len(args) >= len(BArgs) + extraargs = args[len(BArgs):] + args = args[:len(BArgs)] + else: + assert len(args) == len(BArgs) + ctypes_args = [] + for arg, BArg in zip(args, BArgs): + ctypes_args.append(BArg._arg_to_ctypes(arg)) + if has_varargs: + for i, arg in enumerate(extraargs): + if arg is None: + ctypes_args.append(ctypes.c_void_p(0)) # NULL + continue + if not isinstance(arg, CTypesData): + raise TypeError( + "argument %d passed in the variadic part " + "needs to be a cdata object (got %s)" % + (1 + len(BArgs) + i, type(arg).__name__)) + ctypes_args.append(arg._arg_to_ctypes(arg)) + result = self._as_ctype_ptr(*ctypes_args) + return BResult._from_ctypes(result) + # + CTypesFunctionPtr._fix_class() + return CTypesFunctionPtr + + def new_enum_type(self, name, enumerators, enumvalues, CTypesInt): + assert isinstance(name, str) + reverse_mapping = dict(zip(reversed(enumvalues), + reversed(enumerators))) + # + class CTypesEnum(CTypesInt): + __slots__ = [] + _reftypename = '%s &' % name + + def _get_own_repr(self): + value = self._value + try: + return '%d: %s' % (value, reverse_mapping[value]) + except KeyError: + return str(value) + + def _to_string(self, maxlen): + value = self._value + try: + return reverse_mapping[value] + except KeyError: + return str(value) + # + CTypesEnum._fix_class() + return CTypesEnum + + def get_errno(self): + return ctypes.get_errno() + + def set_errno(self, value): + ctypes.set_errno(value) + + def string(self, b, maxlen=-1): + return b._to_string(maxlen) + + def buffer(self, bptr, size=-1): + raise NotImplementedError("buffer() with ctypes backend") + + def sizeof(self, cdata_or_BType): + if isinstance(cdata_or_BType, CTypesData): + return cdata_or_BType._get_size_of_instance() + else: + assert issubclass(cdata_or_BType, CTypesData) + return cdata_or_BType._get_size() + + def alignof(self, BType): + assert issubclass(BType, CTypesData) + return BType._alignment() + + def newp(self, BType, source): + if not issubclass(BType, CTypesData): + raise TypeError + return BType._newp(source) + + def cast(self, BType, source): + return BType._cast_from(source) + + def callback(self, BType, source, error, onerror): + assert onerror is None # XXX not implemented + return BType(source, error) + + _weakref_cache_ref = None + + def gcp(self, cdata, destructor, size=0): + if self._weakref_cache_ref is None: + import weakref + class MyRef(weakref.ref): + def __eq__(self, other): + myref = self() + return self is other or ( + myref is not None and myref is other()) + def __ne__(self, other): + return not (self == other) + def __hash__(self): + try: + return self._hash + except AttributeError: + self._hash = hash(self()) + return self._hash + self._weakref_cache_ref = {}, MyRef + weak_cache, MyRef = self._weakref_cache_ref + + if destructor is None: + try: + del weak_cache[MyRef(cdata)] + except KeyError: + raise TypeError("Can remove destructor only on a object " + "previously returned by ffi.gc()") + return None + + def remove(k): + cdata, destructor = weak_cache.pop(k, (None, None)) + if destructor is not None: + destructor(cdata) + + new_cdata = self.cast(self.typeof(cdata), cdata) + assert new_cdata is not cdata + weak_cache[MyRef(new_cdata, remove)] = (cdata, destructor) + return new_cdata + + typeof = type + + def getcname(self, BType, replace_with): + return BType._get_c_name(replace_with) + + def typeoffsetof(self, BType, fieldname, num=0): + if isinstance(fieldname, str): + if num == 0 and issubclass(BType, CTypesGenericPtr): + BType = BType._BItem + if not issubclass(BType, CTypesBaseStructOrUnion): + raise TypeError("expected a struct or union ctype") + BField = BType._bfield_types[fieldname] + if BField is Ellipsis: + raise TypeError("not supported for bitfields") + return (BField, BType._offsetof(fieldname)) + elif isinstance(fieldname, (int, long)): + if issubclass(BType, CTypesGenericArray): + BType = BType._CTPtr + if not issubclass(BType, CTypesGenericPtr): + raise TypeError("expected an array or ptr ctype") + BItem = BType._BItem + offset = BItem._get_size() * fieldname + if offset > sys.maxsize: + raise OverflowError + return (BItem, offset) + else: + raise TypeError(type(fieldname)) + + def rawaddressof(self, BTypePtr, cdata, offset=None): + if isinstance(cdata, CTypesBaseStructOrUnion): + ptr = ctypes.pointer(type(cdata)._to_ctypes(cdata)) + elif isinstance(cdata, CTypesGenericPtr): + if offset is None or not issubclass(type(cdata)._BItem, + CTypesBaseStructOrUnion): + raise TypeError("unexpected cdata type") + ptr = type(cdata)._to_ctypes(cdata) + elif isinstance(cdata, CTypesGenericArray): + ptr = type(cdata)._to_ctypes(cdata) + else: + raise TypeError("expected a ") + if offset: + ptr = ctypes.cast( + ctypes.c_void_p( + ctypes.cast(ptr, ctypes.c_void_p).value + offset), + type(ptr)) + return BTypePtr._from_ctypes(ptr) + + +class CTypesLibrary(object): + + def __init__(self, backend, cdll): + self.backend = backend + self.cdll = cdll + + def load_function(self, BType, name): + c_func = getattr(self.cdll, name) + funcobj = BType._from_ctypes(c_func) + funcobj._name = name + return funcobj + + def read_variable(self, BType, name): + try: + ctypes_obj = BType._ctype.in_dll(self.cdll, name) + except AttributeError as e: + raise NotImplementedError(e) + return BType._from_ctypes(ctypes_obj) + + def write_variable(self, BType, name, value): + new_ctypes_obj = BType._to_ctypes(value) + ctypes_obj = BType._ctype.in_dll(self.cdll, name) + ctypes.memmove(ctypes.addressof(ctypes_obj), + ctypes.addressof(new_ctypes_obj), + ctypes.sizeof(BType._ctype)) diff --git a/intelliaide/vendor/cffi/cffi_opcode.py b/intelliaide/vendor/cffi/cffi_opcode.py new file mode 100644 index 0000000..6421df6 --- /dev/null +++ b/intelliaide/vendor/cffi/cffi_opcode.py @@ -0,0 +1,187 @@ +from .error import VerificationError + +class CffiOp(object): + def __init__(self, op, arg): + self.op = op + self.arg = arg + + def as_c_expr(self): + if self.op is None: + assert isinstance(self.arg, str) + return '(_cffi_opcode_t)(%s)' % (self.arg,) + classname = CLASS_NAME[self.op] + return '_CFFI_OP(_CFFI_OP_%s, %s)' % (classname, self.arg) + + def as_python_bytes(self): + if self.op is None and self.arg.isdigit(): + value = int(self.arg) # non-negative: '-' not in self.arg + if value >= 2**31: + raise OverflowError("cannot emit %r: limited to 2**31-1" + % (self.arg,)) + return format_four_bytes(value) + if isinstance(self.arg, str): + raise VerificationError("cannot emit to Python: %r" % (self.arg,)) + return format_four_bytes((self.arg << 8) | self.op) + + def __str__(self): + classname = CLASS_NAME.get(self.op, self.op) + return '(%s %s)' % (classname, self.arg) + +def format_four_bytes(num): + return '\\x%02X\\x%02X\\x%02X\\x%02X' % ( + (num >> 24) & 0xFF, + (num >> 16) & 0xFF, + (num >> 8) & 0xFF, + (num ) & 0xFF) + +OP_PRIMITIVE = 1 +OP_POINTER = 3 +OP_ARRAY = 5 +OP_OPEN_ARRAY = 7 +OP_STRUCT_UNION = 9 +OP_ENUM = 11 +OP_FUNCTION = 13 +OP_FUNCTION_END = 15 +OP_NOOP = 17 +OP_BITFIELD = 19 +OP_TYPENAME = 21 +OP_CPYTHON_BLTN_V = 23 # varargs +OP_CPYTHON_BLTN_N = 25 # noargs +OP_CPYTHON_BLTN_O = 27 # O (i.e. a single arg) +OP_CONSTANT = 29 +OP_CONSTANT_INT = 31 +OP_GLOBAL_VAR = 33 +OP_DLOPEN_FUNC = 35 +OP_DLOPEN_CONST = 37 +OP_GLOBAL_VAR_F = 39 +OP_EXTERN_PYTHON = 41 + +PRIM_VOID = 0 +PRIM_BOOL = 1 +PRIM_CHAR = 2 +PRIM_SCHAR = 3 +PRIM_UCHAR = 4 +PRIM_SHORT = 5 +PRIM_USHORT = 6 +PRIM_INT = 7 +PRIM_UINT = 8 +PRIM_LONG = 9 +PRIM_ULONG = 10 +PRIM_LONGLONG = 11 +PRIM_ULONGLONG = 12 +PRIM_FLOAT = 13 +PRIM_DOUBLE = 14 +PRIM_LONGDOUBLE = 15 + +PRIM_WCHAR = 16 +PRIM_INT8 = 17 +PRIM_UINT8 = 18 +PRIM_INT16 = 19 +PRIM_UINT16 = 20 +PRIM_INT32 = 21 +PRIM_UINT32 = 22 +PRIM_INT64 = 23 +PRIM_UINT64 = 24 +PRIM_INTPTR = 25 +PRIM_UINTPTR = 26 +PRIM_PTRDIFF = 27 +PRIM_SIZE = 28 +PRIM_SSIZE = 29 +PRIM_INT_LEAST8 = 30 +PRIM_UINT_LEAST8 = 31 +PRIM_INT_LEAST16 = 32 +PRIM_UINT_LEAST16 = 33 +PRIM_INT_LEAST32 = 34 +PRIM_UINT_LEAST32 = 35 +PRIM_INT_LEAST64 = 36 +PRIM_UINT_LEAST64 = 37 +PRIM_INT_FAST8 = 38 +PRIM_UINT_FAST8 = 39 +PRIM_INT_FAST16 = 40 +PRIM_UINT_FAST16 = 41 +PRIM_INT_FAST32 = 42 +PRIM_UINT_FAST32 = 43 +PRIM_INT_FAST64 = 44 +PRIM_UINT_FAST64 = 45 +PRIM_INTMAX = 46 +PRIM_UINTMAX = 47 +PRIM_FLOATCOMPLEX = 48 +PRIM_DOUBLECOMPLEX = 49 +PRIM_CHAR16 = 50 +PRIM_CHAR32 = 51 + +_NUM_PRIM = 52 +_UNKNOWN_PRIM = -1 +_UNKNOWN_FLOAT_PRIM = -2 +_UNKNOWN_LONG_DOUBLE = -3 + +_IO_FILE_STRUCT = -1 + +PRIMITIVE_TO_INDEX = { + 'char': PRIM_CHAR, + 'short': PRIM_SHORT, + 'int': PRIM_INT, + 'long': PRIM_LONG, + 'long long': PRIM_LONGLONG, + 'signed char': PRIM_SCHAR, + 'unsigned char': PRIM_UCHAR, + 'unsigned short': PRIM_USHORT, + 'unsigned int': PRIM_UINT, + 'unsigned long': PRIM_ULONG, + 'unsigned long long': PRIM_ULONGLONG, + 'float': PRIM_FLOAT, + 'double': PRIM_DOUBLE, + 'long double': PRIM_LONGDOUBLE, + '_cffi_float_complex_t': PRIM_FLOATCOMPLEX, + '_cffi_double_complex_t': PRIM_DOUBLECOMPLEX, + '_Bool': PRIM_BOOL, + 'wchar_t': PRIM_WCHAR, + 'char16_t': PRIM_CHAR16, + 'char32_t': PRIM_CHAR32, + 'int8_t': PRIM_INT8, + 'uint8_t': PRIM_UINT8, + 'int16_t': PRIM_INT16, + 'uint16_t': PRIM_UINT16, + 'int32_t': PRIM_INT32, + 'uint32_t': PRIM_UINT32, + 'int64_t': PRIM_INT64, + 'uint64_t': PRIM_UINT64, + 'intptr_t': PRIM_INTPTR, + 'uintptr_t': PRIM_UINTPTR, + 'ptrdiff_t': PRIM_PTRDIFF, + 'size_t': PRIM_SIZE, + 'ssize_t': PRIM_SSIZE, + 'int_least8_t': PRIM_INT_LEAST8, + 'uint_least8_t': PRIM_UINT_LEAST8, + 'int_least16_t': PRIM_INT_LEAST16, + 'uint_least16_t': PRIM_UINT_LEAST16, + 'int_least32_t': PRIM_INT_LEAST32, + 'uint_least32_t': PRIM_UINT_LEAST32, + 'int_least64_t': PRIM_INT_LEAST64, + 'uint_least64_t': PRIM_UINT_LEAST64, + 'int_fast8_t': PRIM_INT_FAST8, + 'uint_fast8_t': PRIM_UINT_FAST8, + 'int_fast16_t': PRIM_INT_FAST16, + 'uint_fast16_t': PRIM_UINT_FAST16, + 'int_fast32_t': PRIM_INT_FAST32, + 'uint_fast32_t': PRIM_UINT_FAST32, + 'int_fast64_t': PRIM_INT_FAST64, + 'uint_fast64_t': PRIM_UINT_FAST64, + 'intmax_t': PRIM_INTMAX, + 'uintmax_t': PRIM_UINTMAX, + } + +F_UNION = 0x01 +F_CHECK_FIELDS = 0x02 +F_PACKED = 0x04 +F_EXTERNAL = 0x08 +F_OPAQUE = 0x10 + +G_FLAGS = dict([('_CFFI_' + _key, globals()[_key]) + for _key in ['F_UNION', 'F_CHECK_FIELDS', 'F_PACKED', + 'F_EXTERNAL', 'F_OPAQUE']]) + +CLASS_NAME = {} +for _name, _value in list(globals().items()): + if _name.startswith('OP_') and isinstance(_value, int): + CLASS_NAME[_value] = _name[3:] diff --git a/intelliaide/vendor/cffi/commontypes.py b/intelliaide/vendor/cffi/commontypes.py new file mode 100644 index 0000000..d4dae35 --- /dev/null +++ b/intelliaide/vendor/cffi/commontypes.py @@ -0,0 +1,82 @@ +import sys +from . import model +from .error import FFIError + + +COMMON_TYPES = {} + +try: + # fetch "bool" and all simple Windows types + from _cffi_backend import _get_common_types + _get_common_types(COMMON_TYPES) +except ImportError: + pass + +COMMON_TYPES['FILE'] = model.unknown_type('FILE', '_IO_FILE') +COMMON_TYPES['bool'] = '_Bool' # in case we got ImportError above +COMMON_TYPES['float _Complex'] = '_cffi_float_complex_t' +COMMON_TYPES['double _Complex'] = '_cffi_double_complex_t' + +for _type in model.PrimitiveType.ALL_PRIMITIVE_TYPES: + if _type.endswith('_t'): + COMMON_TYPES[_type] = _type +del _type + +_CACHE = {} + +def resolve_common_type(parser, commontype): + try: + return _CACHE[commontype] + except KeyError: + cdecl = COMMON_TYPES.get(commontype, commontype) + if not isinstance(cdecl, str): + result, quals = cdecl, 0 # cdecl is already a BaseType + elif cdecl in model.PrimitiveType.ALL_PRIMITIVE_TYPES: + result, quals = model.PrimitiveType(cdecl), 0 + elif cdecl == 'set-unicode-needed': + raise FFIError("The Windows type %r is only available after " + "you call ffi.set_unicode()" % (commontype,)) + else: + if commontype == cdecl: + raise FFIError( + "Unsupported type: %r. Please look at " + "http://cffi.readthedocs.io/en/latest/cdef.html#ffi-cdef-limitations " + "and file an issue if you think this type should really " + "be supported." % (commontype,)) + result, quals = parser.parse_type_and_quals(cdecl) # recursive + + assert isinstance(result, model.BaseTypeByIdentity) + _CACHE[commontype] = result, quals + return result, quals + + +# ____________________________________________________________ +# extra types for Windows (most of them are in commontypes.c) + + +def win_common_types(): + return { + "UNICODE_STRING": model.StructType( + "_UNICODE_STRING", + ["Length", + "MaximumLength", + "Buffer"], + [model.PrimitiveType("unsigned short"), + model.PrimitiveType("unsigned short"), + model.PointerType(model.PrimitiveType("wchar_t"))], + [-1, -1, -1]), + "PUNICODE_STRING": "UNICODE_STRING *", + "PCUNICODE_STRING": "const UNICODE_STRING *", + + "TBYTE": "set-unicode-needed", + "TCHAR": "set-unicode-needed", + "LPCTSTR": "set-unicode-needed", + "PCTSTR": "set-unicode-needed", + "LPTSTR": "set-unicode-needed", + "PTSTR": "set-unicode-needed", + "PTBYTE": "set-unicode-needed", + "PTCHAR": "set-unicode-needed", + } + +if sys.platform == 'win32': + COMMON_TYPES.update(win_common_types()) diff --git a/intelliaide/vendor/cffi/cparser.py b/intelliaide/vendor/cffi/cparser.py new file mode 100644 index 0000000..dd590d8 --- /dev/null +++ b/intelliaide/vendor/cffi/cparser.py @@ -0,0 +1,1015 @@ +from . import model +from .commontypes import COMMON_TYPES, resolve_common_type +from .error import FFIError, CDefError +try: + from . import _pycparser as pycparser +except ImportError: + import pycparser +import weakref, re, sys + +try: + if sys.version_info < (3,): + import thread as _thread + else: + import _thread + lock = _thread.allocate_lock() +except ImportError: + lock = None + +def _workaround_for_static_import_finders(): + # Issue #392: packaging tools like cx_Freeze can not find these + # because pycparser uses exec dynamic import. This is an obscure + # workaround. This function is never called. + import pycparser.yacctab + import pycparser.lextab + +CDEF_SOURCE_STRING = "" +_r_comment = re.compile(r"/\*.*?\*/|//([^\n\\]|\\.)*?$", + re.DOTALL | re.MULTILINE) +_r_define = re.compile(r"^\s*#\s*define\s+([A-Za-z_][A-Za-z_0-9]*)" + r"\b((?:[^\n\\]|\\.)*?)$", + re.DOTALL | re.MULTILINE) +_r_line_directive = re.compile(r"^[ \t]*#[ \t]*(?:line|\d+)\b.*$", re.MULTILINE) +_r_partial_enum = re.compile(r"=\s*\.\.\.\s*[,}]|\.\.\.\s*\}") +_r_enum_dotdotdot = re.compile(r"__dotdotdot\d+__$") +_r_partial_array = re.compile(r"\[\s*\.\.\.\s*\]") +_r_words = re.compile(r"\w+|\S") +_parser_cache = None +_r_int_literal = re.compile(r"-?0?x?[0-9a-f]+[lu]*$", re.IGNORECASE) +_r_stdcall1 = re.compile(r"\b(__stdcall|WINAPI)\b") +_r_stdcall2 = re.compile(r"[(]\s*(__stdcall|WINAPI)\b") +_r_cdecl = re.compile(r"\b__cdecl\b") +_r_extern_python = re.compile(r'\bextern\s*"' + r'(Python|Python\s*\+\s*C|C\s*\+\s*Python)"\s*.') +_r_star_const_space = re.compile( # matches "* const " + r"[*]\s*((const|volatile|restrict)\b\s*)+") +_r_int_dotdotdot = re.compile(r"(\b(int|long|short|signed|unsigned|char)\s*)+" + r"\.\.\.") +_r_float_dotdotdot = re.compile(r"\b(double|float)\s*\.\.\.") + +def _get_parser(): + global _parser_cache + if _parser_cache is None: + _parser_cache = pycparser.CParser() + return _parser_cache + +def _workaround_for_old_pycparser(csource): + # Workaround for a pycparser issue (fixed between pycparser 2.10 and + # 2.14): "char*const***" gives us a wrong syntax tree, the same as + # for "char***(*const)". This means we can't tell the difference + # afterwards. But "char(*const(***))" gives us the right syntax + # tree. The issue only occurs if there are several stars in + # sequence with no parenthesis in between, just possibly qualifiers. + # Attempt to fix it by adding some parentheses in the source: each + # time we see "* const" or "* const *", we add an opening + # parenthesis before each star---the hard part is figuring out where + # to close them. + parts = [] + while True: + match = _r_star_const_space.search(csource) + if not match: + break + #print repr(''.join(parts)+csource), '=>', + parts.append(csource[:match.start()]) + parts.append('('); closing = ')' + parts.append(match.group()) # e.g. "* const " + endpos = match.end() + if csource.startswith('*', endpos): + parts.append('('); closing += ')' + level = 0 + i = endpos + while i < len(csource): + c = csource[i] + if c == '(': + level += 1 + elif c == ')': + if level == 0: + break + level -= 1 + elif c in ',;=': + if level == 0: + break + i += 1 + csource = csource[endpos:i] + closing + csource[i:] + #print repr(''.join(parts)+csource) + parts.append(csource) + return ''.join(parts) + +def _preprocess_extern_python(csource): + # input: `extern "Python" int foo(int);` or + # `extern "Python" { int foo(int); }` + # output: + # void __cffi_extern_python_start; + # int foo(int); + # void __cffi_extern_python_stop; + # + # input: `extern "Python+C" int foo(int);` + # output: + # void __cffi_extern_python_plus_c_start; + # int foo(int); + # void __cffi_extern_python_stop; + parts = [] + while True: + match = _r_extern_python.search(csource) + if not match: + break + endpos = match.end() - 1 + #print + #print ''.join(parts)+csource + #print '=>' + parts.append(csource[:match.start()]) + if 'C' in match.group(1): + parts.append('void __cffi_extern_python_plus_c_start; ') + else: + parts.append('void __cffi_extern_python_start; ') + if csource[endpos] == '{': + # grouping variant + closing = csource.find('}', endpos) + if closing < 0: + raise CDefError("'extern \"Python\" {': no '}' found") + if csource.find('{', endpos + 1, closing) >= 0: + raise NotImplementedError("cannot use { } inside a block " + "'extern \"Python\" { ... }'") + parts.append(csource[endpos+1:closing]) + csource = csource[closing+1:] + else: + # non-grouping variant + semicolon = csource.find(';', endpos) + if semicolon < 0: + raise CDefError("'extern \"Python\": no ';' found") + parts.append(csource[endpos:semicolon+1]) + csource = csource[semicolon+1:] + parts.append(' void __cffi_extern_python_stop;') + #print ''.join(parts)+csource + #print + parts.append(csource) + return ''.join(parts) + +def _warn_for_string_literal(csource): + if '"' not in csource: + return + for line in csource.splitlines(): + if '"' in line and not line.lstrip().startswith('#'): + import warnings + warnings.warn("String literal found in cdef() or type source. " + "String literals are ignored here, but you should " + "remove them anyway because some character sequences " + "confuse pre-parsing.") + break + +def _warn_for_non_extern_non_static_global_variable(decl): + if not decl.storage: + import warnings + warnings.warn("Global variable '%s' in cdef(): for consistency " + "with C it should have a storage class specifier " + "(usually 'extern')" % (decl.name,)) + +def _remove_line_directives(csource): + # _r_line_directive matches whole lines, without the final \n, if they + # start with '#line' with some spacing allowed, or '#NUMBER'. This + # function stores them away and replaces them with exactly the string + # '#line@N', where N is the index in the list 'line_directives'. + line_directives = [] + def replace(m): + i = len(line_directives) + line_directives.append(m.group()) + return '#line@%d' % i + csource = _r_line_directive.sub(replace, csource) + return csource, line_directives + +def _put_back_line_directives(csource, line_directives): + def replace(m): + s = m.group() + if not s.startswith('#line@'): + raise AssertionError("unexpected #line directive " + "(should have been processed and removed") + return line_directives[int(s[6:])] + return _r_line_directive.sub(replace, csource) + +def _preprocess(csource): + # First, remove the lines of the form '#line N "filename"' because + # the "filename" part could confuse the rest + csource, line_directives = _remove_line_directives(csource) + # Remove comments. NOTE: this only work because the cdef() section + # should not contain any string literals (except in line directives)! + def replace_keeping_newlines(m): + return ' ' + m.group().count('\n') * '\n' + csource = _r_comment.sub(replace_keeping_newlines, csource) + # Remove the "#define FOO x" lines + macros = {} + for match in _r_define.finditer(csource): + macroname, macrovalue = match.groups() + macrovalue = macrovalue.replace('\\\n', '').strip() + macros[macroname] = macrovalue + csource = _r_define.sub('', csource) + # + if pycparser.__version__ < '2.14': + csource = _workaround_for_old_pycparser(csource) + # + # BIG HACK: replace WINAPI or __stdcall with "volatile const". + # It doesn't make sense for the return type of a function to be + # "volatile volatile const", so we abuse it to detect __stdcall... + # Hack number 2 is that "int(volatile *fptr)();" is not valid C + # syntax, so we place the "volatile" before the opening parenthesis. + csource = _r_stdcall2.sub(' volatile volatile const(', csource) + csource = _r_stdcall1.sub(' volatile volatile const ', csource) + csource = _r_cdecl.sub(' ', csource) + # + # Replace `extern "Python"` with start/end markers + csource = _preprocess_extern_python(csource) + # + # Now there should not be any string literal left; warn if we get one + _warn_for_string_literal(csource) + # + # Replace "[...]" with "[__dotdotdotarray__]" + csource = _r_partial_array.sub('[__dotdotdotarray__]', csource) + # + # Replace "...}" with "__dotdotdotNUM__}". This construction should + # occur only at the end of enums; at the end of structs we have "...;}" + # and at the end of vararg functions "...);". Also replace "=...[,}]" + # with ",__dotdotdotNUM__[,}]": this occurs in the enums too, when + # giving an unknown value. + matches = list(_r_partial_enum.finditer(csource)) + for number, match in enumerate(reversed(matches)): + p = match.start() + if csource[p] == '=': + p2 = csource.find('...', p, match.end()) + assert p2 > p + csource = '%s,__dotdotdot%d__ %s' % (csource[:p], number, + csource[p2+3:]) + else: + assert csource[p:p+3] == '...' + csource = '%s __dotdotdot%d__ %s' % (csource[:p], number, + csource[p+3:]) + # Replace "int ..." or "unsigned long int..." with "__dotdotdotint__" + csource = _r_int_dotdotdot.sub(' __dotdotdotint__ ', csource) + # Replace "float ..." or "double..." with "__dotdotdotfloat__" + csource = _r_float_dotdotdot.sub(' __dotdotdotfloat__ ', csource) + # Replace all remaining "..." with the same name, "__dotdotdot__", + # which is declared with a typedef for the purpose of C parsing. + csource = csource.replace('...', ' __dotdotdot__ ') + # Finally, put back the line directives + csource = _put_back_line_directives(csource, line_directives) + return csource, macros + +def _common_type_names(csource): + # Look in the source for what looks like usages of types from the + # list of common types. A "usage" is approximated here as the + # appearance of the word, minus a "definition" of the type, which + # is the last word in a "typedef" statement. Approximative only + # but should be fine for all the common types. + look_for_words = set(COMMON_TYPES) + look_for_words.add(';') + look_for_words.add(',') + look_for_words.add('(') + look_for_words.add(')') + look_for_words.add('typedef') + words_used = set() + is_typedef = False + paren = 0 + previous_word = '' + for word in _r_words.findall(csource): + if word in look_for_words: + if word == ';': + if is_typedef: + words_used.discard(previous_word) + look_for_words.discard(previous_word) + is_typedef = False + elif word == 'typedef': + is_typedef = True + paren = 0 + elif word == '(': + paren += 1 + elif word == ')': + paren -= 1 + elif word == ',': + if is_typedef and paren == 0: + words_used.discard(previous_word) + look_for_words.discard(previous_word) + else: # word in COMMON_TYPES + words_used.add(word) + previous_word = word + return words_used + + +class Parser(object): + + def __init__(self): + self._declarations = {} + self._included_declarations = set() + self._anonymous_counter = 0 + self._structnode2type = weakref.WeakKeyDictionary() + self._options = {} + self._int_constants = {} + self._recomplete = [] + self._uses_new_feature = None + + def _parse(self, csource): + csource, macros = _preprocess(csource) + # XXX: for more efficiency we would need to poke into the + # internals of CParser... the following registers the + # typedefs, because their presence or absence influences the + # parsing itself (but what they are typedef'ed to plays no role) + ctn = _common_type_names(csource) + typenames = [] + for name in sorted(self._declarations): + if name.startswith('typedef '): + name = name[8:] + typenames.append(name) + ctn.discard(name) + typenames += sorted(ctn) + # + csourcelines = [] + csourcelines.append('# 1 ""') + for typename in typenames: + csourcelines.append('typedef int %s;' % typename) + csourcelines.append('typedef int __dotdotdotint__, __dotdotdotfloat__,' + ' __dotdotdot__;') + # this forces pycparser to consider the following in the file + # called from line 1 + csourcelines.append('# 1 "%s"' % (CDEF_SOURCE_STRING,)) + csourcelines.append(csource) + csourcelines.append('') # see test_missing_newline_bug + fullcsource = '\n'.join(csourcelines) + if lock is not None: + lock.acquire() # pycparser is not thread-safe... + try: + ast = _get_parser().parse(fullcsource) + except pycparser.c_parser.ParseError as e: + self.convert_pycparser_error(e, csource) + finally: + if lock is not None: + lock.release() + # csource will be used to find buggy source text + return ast, macros, csource + + def _convert_pycparser_error(self, e, csource): + # xxx look for ":NUM:" at the start of str(e) + # and interpret that as a line number. This will not work if + # the user gives explicit ``# NUM "FILE"`` directives. + line = None + msg = str(e) + match = re.match(r"%s:(\d+):" % (CDEF_SOURCE_STRING,), msg) + if match: + linenum = int(match.group(1), 10) + csourcelines = csource.splitlines() + if 1 <= linenum <= len(csourcelines): + line = csourcelines[linenum-1] + return line + + def convert_pycparser_error(self, e, csource): + line = self._convert_pycparser_error(e, csource) + + msg = str(e) + if line: + msg = 'cannot parse "%s"\n%s' % (line.strip(), msg) + else: + msg = 'parse error\n%s' % (msg,) + raise CDefError(msg) + + def parse(self, csource, override=False, packed=False, pack=None, + dllexport=False): + if packed: + if packed != True: + raise ValueError("'packed' should be False or True; use " + "'pack' to give another value") + if pack: + raise ValueError("cannot give both 'pack' and 'packed'") + pack = 1 + elif pack: + if pack & (pack - 1): + raise ValueError("'pack' must be a power of two, not %r" % + (pack,)) + else: + pack = 0 + prev_options = self._options + try: + self._options = {'override': override, + 'packed': pack, + 'dllexport': dllexport} + self._internal_parse(csource) + finally: + self._options = prev_options + + def _internal_parse(self, csource): + ast, macros, csource = self._parse(csource) + # add the macros + self._process_macros(macros) + # find the first "__dotdotdot__" and use that as a separator + # between the repeated typedefs and the real csource + iterator = iter(ast.ext) + for decl in iterator: + if decl.name == '__dotdotdot__': + break + else: + assert 0 + current_decl = None + # + try: + self._inside_extern_python = '__cffi_extern_python_stop' + for decl in iterator: + current_decl = decl + if isinstance(decl, pycparser.c_ast.Decl): + self._parse_decl(decl) + elif isinstance(decl, pycparser.c_ast.Typedef): + if not decl.name: + raise CDefError("typedef does not declare any name", + decl) + quals = 0 + if (isinstance(decl.type.type, pycparser.c_ast.IdentifierType) and + decl.type.type.names[-1].startswith('__dotdotdot')): + realtype = self._get_unknown_type(decl) + elif (isinstance(decl.type, pycparser.c_ast.PtrDecl) and + isinstance(decl.type.type, pycparser.c_ast.TypeDecl) and + isinstance(decl.type.type.type, + pycparser.c_ast.IdentifierType) and + decl.type.type.type.names[-1].startswith('__dotdotdot')): + realtype = self._get_unknown_ptr_type(decl) + else: + realtype, quals = self._get_type_and_quals( + decl.type, name=decl.name, partial_length_ok=True, + typedef_example="*(%s *)0" % (decl.name,)) + self._declare('typedef ' + decl.name, realtype, quals=quals) + elif decl.__class__.__name__ == 'Pragma': + # skip pragma, only in pycparser 2.15 + import warnings + warnings.warn( + "#pragma in cdef() are entirely ignored. " + "They should be removed for now, otherwise your " + "code might behave differently in a future version " + "of CFFI if #pragma support gets added. Note that " + "'#pragma pack' needs to be replaced with the " + "'packed' keyword argument to cdef().") + else: + raise CDefError("unexpected <%s>: this construct is valid " + "C but not valid in cdef()" % + decl.__class__.__name__, decl) + except CDefError as e: + if len(e.args) == 1: + e.args = e.args + (current_decl,) + raise + except FFIError as e: + msg = self._convert_pycparser_error(e, csource) + if msg: + e.args = (e.args[0] + "\n *** Err: %s" % msg,) + raise + + def _add_constants(self, key, val): + if key in self._int_constants: + if self._int_constants[key] == val: + return # ignore identical double declarations + raise FFIError( + "multiple declarations of constant: %s" % (key,)) + self._int_constants[key] = val + + def _add_integer_constant(self, name, int_str): + int_str = int_str.lower().rstrip("ul") + neg = int_str.startswith('-') + if neg: + int_str = int_str[1:] + # "010" is not valid oct in py3 + if (int_str.startswith("0") and int_str != '0' + and not int_str.startswith("0x")): + int_str = "0o" + int_str[1:] + pyvalue = int(int_str, 0) + if neg: + pyvalue = -pyvalue + self._add_constants(name, pyvalue) + self._declare('macro ' + name, pyvalue) + + def _process_macros(self, macros): + for key, value in macros.items(): + value = value.strip() + if _r_int_literal.match(value): + self._add_integer_constant(key, value) + elif value == '...': + self._declare('macro ' + key, value) + else: + raise CDefError( + 'only supports one of the following syntax:\n' + ' #define %s ... (literally dot-dot-dot)\n' + ' #define %s NUMBER (with NUMBER an integer' + ' constant, decimal/hex/octal)\n' + 'got:\n' + ' #define %s %s' + % (key, key, key, value)) + + def _declare_function(self, tp, quals, decl): + tp = self._get_type_pointer(tp, quals) + if self._options.get('dllexport'): + tag = 'dllexport_python ' + elif self._inside_extern_python == '__cffi_extern_python_start': + tag = 'extern_python ' + elif self._inside_extern_python == '__cffi_extern_python_plus_c_start': + tag = 'extern_python_plus_c ' + else: + tag = 'function ' + self._declare(tag + decl.name, tp) + + def _parse_decl(self, decl): + node = decl.type + if isinstance(node, pycparser.c_ast.FuncDecl): + tp, quals = self._get_type_and_quals(node, name=decl.name) + assert isinstance(tp, model.RawFunctionType) + self._declare_function(tp, quals, decl) + else: + if isinstance(node, pycparser.c_ast.Struct): + self._get_struct_union_enum_type('struct', node) + elif isinstance(node, pycparser.c_ast.Union): + self._get_struct_union_enum_type('union', node) + elif isinstance(node, pycparser.c_ast.Enum): + self._get_struct_union_enum_type('enum', node) + elif not decl.name: + raise CDefError("construct does not declare any variable", + decl) + # + if decl.name: + tp, quals = self._get_type_and_quals(node, + partial_length_ok=True) + if tp.is_raw_function: + self._declare_function(tp, quals, decl) + elif (tp.is_integer_type() and + hasattr(decl, 'init') and + hasattr(decl.init, 'value') and + _r_int_literal.match(decl.init.value)): + self._add_integer_constant(decl.name, decl.init.value) + elif (tp.is_integer_type() and + isinstance(decl.init, pycparser.c_ast.UnaryOp) and + decl.init.op == '-' and + hasattr(decl.init.expr, 'value') and + _r_int_literal.match(decl.init.expr.value)): + self._add_integer_constant(decl.name, + '-' + decl.init.expr.value) + elif (tp is model.void_type and + decl.name.startswith('__cffi_extern_python_')): + # hack: `extern "Python"` in the C source is replaced + # with "void __cffi_extern_python_start;" and + # "void __cffi_extern_python_stop;" + self._inside_extern_python = decl.name + else: + if self._inside_extern_python !='__cffi_extern_python_stop': + raise CDefError( + "cannot declare constants or " + "variables with 'extern \"Python\"'") + if (quals & model.Q_CONST) and not tp.is_array_type: + self._declare('constant ' + decl.name, tp, quals=quals) + else: + _warn_for_non_extern_non_static_global_variable(decl) + self._declare('variable ' + decl.name, tp, quals=quals) + + def parse_type(self, cdecl): + return self.parse_type_and_quals(cdecl)[0] + + def parse_type_and_quals(self, cdecl): + ast, macros = self._parse('void __dummy(\n%s\n);' % cdecl)[:2] + assert not macros + exprnode = ast.ext[-1].type.args.params[0] + if isinstance(exprnode, pycparser.c_ast.ID): + raise CDefError("unknown identifier '%s'" % (exprnode.name,)) + return self._get_type_and_quals(exprnode.type) + + def _declare(self, name, obj, included=False, quals=0): + if name in self._declarations: + prevobj, prevquals = self._declarations[name] + if prevobj is obj and prevquals == quals: + return + if not self._options.get('override'): + raise FFIError( + "multiple declarations of %s (for interactive usage, " + "try cdef(xx, override=True))" % (name,)) + assert '__dotdotdot__' not in name.split() + self._declarations[name] = (obj, quals) + if included: + self._included_declarations.add(obj) + + def _extract_quals(self, type): + quals = 0 + if isinstance(type, (pycparser.c_ast.TypeDecl, + pycparser.c_ast.PtrDecl)): + if 'const' in type.quals: + quals |= model.Q_CONST + if 'volatile' in type.quals: + quals |= model.Q_VOLATILE + if 'restrict' in type.quals: + quals |= model.Q_RESTRICT + return quals + + def _get_type_pointer(self, type, quals, declname=None): + if isinstance(type, model.RawFunctionType): + return type.as_function_pointer() + if (isinstance(type, model.StructOrUnionOrEnum) and + type.name.startswith('$') and type.name[1:].isdigit() and + type.forcename is None and declname is not None): + return model.NamedPointerType(type, declname, quals) + return model.PointerType(type, quals) + + def _get_type_and_quals(self, typenode, name=None, partial_length_ok=False, + typedef_example=None): + # first, dereference typedefs, if we have it already parsed, we're good + if (isinstance(typenode, pycparser.c_ast.TypeDecl) and + isinstance(typenode.type, pycparser.c_ast.IdentifierType) and + len(typenode.type.names) == 1 and + ('typedef ' + typenode.type.names[0]) in self._declarations): + tp, quals = self._declarations['typedef ' + typenode.type.names[0]] + quals |= self._extract_quals(typenode) + return tp, quals + # + if isinstance(typenode, pycparser.c_ast.ArrayDecl): + # array type + if typenode.dim is None: + length = None + else: + length = self._parse_constant( + typenode.dim, partial_length_ok=partial_length_ok) + # a hack: in 'typedef int foo_t[...][...];', don't use '...' as + # the length but use directly the C expression that would be + # generated by recompiler.py. This lets the typedef be used in + # many more places within recompiler.py + if typedef_example is not None: + if length == '...': + length = '_cffi_array_len(%s)' % (typedef_example,) + typedef_example = "*" + typedef_example + # + tp, quals = self._get_type_and_quals(typenode.type, + partial_length_ok=partial_length_ok, + typedef_example=typedef_example) + return model.ArrayType(tp, length), quals + # + if isinstance(typenode, pycparser.c_ast.PtrDecl): + # pointer type + itemtype, itemquals = self._get_type_and_quals(typenode.type) + tp = self._get_type_pointer(itemtype, itemquals, declname=name) + quals = self._extract_quals(typenode) + return tp, quals + # + if isinstance(typenode, pycparser.c_ast.TypeDecl): + quals = self._extract_quals(typenode) + type = typenode.type + if isinstance(type, pycparser.c_ast.IdentifierType): + # assume a primitive type. get it from .names, but reduce + # synonyms to a single chosen combination + names = list(type.names) + if names != ['signed', 'char']: # keep this unmodified + prefixes = {} + while names: + name = names[0] + if name in ('short', 'long', 'signed', 'unsigned'): + prefixes[name] = prefixes.get(name, 0) + 1 + del names[0] + else: + break + # ignore the 'signed' prefix below, and reorder the others + newnames = [] + for prefix in ('unsigned', 'short', 'long'): + for i in range(prefixes.get(prefix, 0)): + newnames.append(prefix) + if not names: + names = ['int'] # implicitly + if names == ['int']: # but kill it if 'short' or 'long' + if 'short' in prefixes or 'long' in prefixes: + names = [] + names = newnames + names + ident = ' '.join(names) + if ident == 'void': + return model.void_type, quals + if ident == '__dotdotdot__': + raise FFIError(':%d: bad usage of "..."' % + typenode.coord.line) + tp0, quals0 = resolve_common_type(self, ident) + return tp0, (quals | quals0) + # + if isinstance(type, pycparser.c_ast.Struct): + # 'struct foobar' + tp = self._get_struct_union_enum_type('struct', type, name) + return tp, quals + # + if isinstance(type, pycparser.c_ast.Union): + # 'union foobar' + tp = self._get_struct_union_enum_type('union', type, name) + return tp, quals + # + if isinstance(type, pycparser.c_ast.Enum): + # 'enum foobar' + tp = self._get_struct_union_enum_type('enum', type, name) + return tp, quals + # + if isinstance(typenode, pycparser.c_ast.FuncDecl): + # a function type + return self._parse_function_type(typenode, name), 0 + # + # nested anonymous structs or unions end up here + if isinstance(typenode, pycparser.c_ast.Struct): + return self._get_struct_union_enum_type('struct', typenode, name, + nested=True), 0 + if isinstance(typenode, pycparser.c_ast.Union): + return self._get_struct_union_enum_type('union', typenode, name, + nested=True), 0 + # + raise FFIError(":%d: bad or unsupported type declaration" % + typenode.coord.line) + + def _parse_function_type(self, typenode, funcname=None): + params = list(getattr(typenode.args, 'params', [])) + for i, arg in enumerate(params): + if not hasattr(arg, 'type'): + raise CDefError("%s arg %d: unknown type '%s'" + " (if you meant to use the old C syntax of giving" + " untyped arguments, it is not supported)" + % (funcname or 'in expression', i + 1, + getattr(arg, 'name', '?'))) + ellipsis = ( + len(params) > 0 and + isinstance(params[-1].type, pycparser.c_ast.TypeDecl) and + isinstance(params[-1].type.type, + pycparser.c_ast.IdentifierType) and + params[-1].type.type.names == ['__dotdotdot__']) + if ellipsis: + params.pop() + if not params: + raise CDefError( + "%s: a function with only '(...)' as argument" + " is not correct C" % (funcname or 'in expression')) + args = [self._as_func_arg(*self._get_type_and_quals(argdeclnode.type)) + for argdeclnode in params] + if not ellipsis and args == [model.void_type]: + args = [] + result, quals = self._get_type_and_quals(typenode.type) + # the 'quals' on the result type are ignored. HACK: we absure them + # to detect __stdcall functions: we textually replace "__stdcall" + # with "volatile volatile const" above. + abi = None + if hasattr(typenode.type, 'quals'): # else, probable syntax error anyway + if typenode.type.quals[-3:] == ['volatile', 'volatile', 'const']: + abi = '__stdcall' + return model.RawFunctionType(tuple(args), result, ellipsis, abi) + + def _as_func_arg(self, type, quals): + if isinstance(type, model.ArrayType): + return model.PointerType(type.item, quals) + elif isinstance(type, model.RawFunctionType): + return type.as_function_pointer() + else: + return type + + def _get_struct_union_enum_type(self, kind, type, name=None, nested=False): + # First, a level of caching on the exact 'type' node of the AST. + # This is obscure, but needed because pycparser "unrolls" declarations + # such as "typedef struct { } foo_t, *foo_p" and we end up with + # an AST that is not a tree, but a DAG, with the "type" node of the + # two branches foo_t and foo_p of the trees being the same node. + # It's a bit silly but detecting "DAG-ness" in the AST tree seems + # to be the only way to distinguish this case from two independent + # structs. See test_struct_with_two_usages. + try: + return self._structnode2type[type] + except KeyError: + pass + # + # Note that this must handle parsing "struct foo" any number of + # times and always return the same StructType object. Additionally, + # one of these times (not necessarily the first), the fields of + # the struct can be specified with "struct foo { ...fields... }". + # If no name is given, then we have to create a new anonymous struct + # with no caching; in this case, the fields are either specified + # right now or never. + # + force_name = name + name = type.name + # + # get the type or create it if needed + if name is None: + # 'force_name' is used to guess a more readable name for + # anonymous structs, for the common case "typedef struct { } foo". + if force_name is not None: + explicit_name = '$%s' % force_name + else: + self._anonymous_counter += 1 + explicit_name = '$%d' % self._anonymous_counter + tp = None + else: + explicit_name = name + key = '%s %s' % (kind, name) + tp, _ = self._declarations.get(key, (None, None)) + # + if tp is None: + if kind == 'struct': + tp = model.StructType(explicit_name, None, None, None) + elif kind == 'union': + tp = model.UnionType(explicit_name, None, None, None) + elif kind == 'enum': + if explicit_name == '__dotdotdot__': + raise CDefError("Enums cannot be declared with ...") + tp = self._build_enum_type(explicit_name, type.values) + else: + raise AssertionError("kind = %r" % (kind,)) + if name is not None: + self._declare(key, tp) + else: + if kind == 'enum' and type.values is not None: + raise NotImplementedError( + "enum %s: the '{}' declaration should appear on the first " + "time the enum is mentioned, not later" % explicit_name) + if not tp.forcename: + tp.force_the_name(force_name) + if tp.forcename and '$' in tp.name: + self._declare('anonymous %s' % tp.forcename, tp) + # + self._structnode2type[type] = tp + # + # enums: done here + if kind == 'enum': + return tp + # + # is there a 'type.decls'? If yes, then this is the place in the + # C sources that declare the fields. If no, then just return the + # existing type, possibly still incomplete. + if type.decls is None: + return tp + # + if tp.fldnames is not None: + raise CDefError("duplicate declaration of struct %s" % name) + fldnames = [] + fldtypes = [] + fldbitsize = [] + fldquals = [] + for decl in type.decls: + if (isinstance(decl.type, pycparser.c_ast.IdentifierType) and + ''.join(decl.type.names) == '__dotdotdot__'): + # XXX pycparser is inconsistent: 'names' should be a list + # of strings, but is sometimes just one string. Use + # str.join() as a way to cope with both. + self._make_partial(tp, nested) + continue + if decl.bitsize is None: + bitsize = -1 + else: + bitsize = self._parse_constant(decl.bitsize) + self._partial_length = False + type, fqual = self._get_type_and_quals(decl.type, + partial_length_ok=True) + if self._partial_length: + self._make_partial(tp, nested) + if isinstance(type, model.StructType) and type.partial: + self._make_partial(tp, nested) + fldnames.append(decl.name or '') + fldtypes.append(type) + fldbitsize.append(bitsize) + fldquals.append(fqual) + tp.fldnames = tuple(fldnames) + tp.fldtypes = tuple(fldtypes) + tp.fldbitsize = tuple(fldbitsize) + tp.fldquals = tuple(fldquals) + if fldbitsize != [-1] * len(fldbitsize): + if isinstance(tp, model.StructType) and tp.partial: + raise NotImplementedError("%s: using both bitfields and '...;'" + % (tp,)) + tp.packed = self._options.get('packed') + if tp.completed: # must be re-completed: it is not opaque any more + tp.completed = 0 + self._recomplete.append(tp) + return tp + + def _make_partial(self, tp, nested): + if not isinstance(tp, model.StructOrUnion): + raise CDefError("%s cannot be partial" % (tp,)) + if not tp.has_c_name() and not nested: + raise NotImplementedError("%s is partial but has no C name" %(tp,)) + tp.partial = True + + def _parse_constant(self, exprnode, partial_length_ok=False): + # for now, limited to expressions that are an immediate number + # or positive/negative number + if isinstance(exprnode, pycparser.c_ast.Constant): + s = exprnode.value + if '0' <= s[0] <= '9': + s = s.rstrip('uUlL') + try: + if s.startswith('0'): + return int(s, 8) + else: + return int(s, 10) + except ValueError: + if len(s) > 1: + if s.lower()[0:2] == '0x': + return int(s, 16) + elif s.lower()[0:2] == '0b': + return int(s, 2) + raise CDefError("invalid constant %r" % (s,)) + elif s[0] == "'" and s[-1] == "'" and ( + len(s) == 3 or (len(s) == 4 and s[1] == "\\")): + return ord(s[-2]) + else: + raise CDefError("invalid constant %r" % (s,)) + # + if (isinstance(exprnode, pycparser.c_ast.UnaryOp) and + exprnode.op == '+'): + return self._parse_constant(exprnode.expr) + # + if (isinstance(exprnode, pycparser.c_ast.UnaryOp) and + exprnode.op == '-'): + return -self._parse_constant(exprnode.expr) + # load previously defined int constant + if (isinstance(exprnode, pycparser.c_ast.ID) and + exprnode.name in self._int_constants): + return self._int_constants[exprnode.name] + # + if (isinstance(exprnode, pycparser.c_ast.ID) and + exprnode.name == '__dotdotdotarray__'): + if partial_length_ok: + self._partial_length = True + return '...' + raise FFIError(":%d: unsupported '[...]' here, cannot derive " + "the actual array length in this context" + % exprnode.coord.line) + # + if isinstance(exprnode, pycparser.c_ast.BinaryOp): + left = self._parse_constant(exprnode.left) + right = self._parse_constant(exprnode.right) + if exprnode.op == '+': + return left + right + elif exprnode.op == '-': + return left - right + elif exprnode.op == '*': + return left * right + elif exprnode.op == '/': + return self._c_div(left, right) + elif exprnode.op == '%': + return left - self._c_div(left, right) * right + elif exprnode.op == '<<': + return left << right + elif exprnode.op == '>>': + return left >> right + elif exprnode.op == '&': + return left & right + elif exprnode.op == '|': + return left | right + elif exprnode.op == '^': + return left ^ right + # + raise FFIError(":%d: unsupported expression: expected a " + "simple numeric constant" % exprnode.coord.line) + + def _c_div(self, a, b): + result = a // b + if ((a < 0) ^ (b < 0)) and (a % b) != 0: + result += 1 + return result + + def _build_enum_type(self, explicit_name, decls): + if decls is not None: + partial = False + enumerators = [] + enumvalues = [] + nextenumvalue = 0 + for enum in decls.enumerators: + if _r_enum_dotdotdot.match(enum.name): + partial = True + continue + if enum.value is not None: + nextenumvalue = self._parse_constant(enum.value) + enumerators.append(enum.name) + enumvalues.append(nextenumvalue) + self._add_constants(enum.name, nextenumvalue) + nextenumvalue += 1 + enumerators = tuple(enumerators) + enumvalues = tuple(enumvalues) + tp = model.EnumType(explicit_name, enumerators, enumvalues) + tp.partial = partial + else: # opaque enum + tp = model.EnumType(explicit_name, (), ()) + return tp + + def include(self, other): + for name, (tp, quals) in other._declarations.items(): + if name.startswith('anonymous $enum_$'): + continue # fix for test_anonymous_enum_include + kind = name.split(' ', 1)[0] + if kind in ('struct', 'union', 'enum', 'anonymous', 'typedef'): + self._declare(name, tp, included=True, quals=quals) + for k, v in other._int_constants.items(): + self._add_constants(k, v) + + def _get_unknown_type(self, decl): + typenames = decl.type.type.names + if typenames == ['__dotdotdot__']: + return model.unknown_type(decl.name) + + if typenames == ['__dotdotdotint__']: + if self._uses_new_feature is None: + self._uses_new_feature = "'typedef int... %s'" % decl.name + return model.UnknownIntegerType(decl.name) + + if typenames == ['__dotdotdotfloat__']: + # note: not for 'long double' so far + if self._uses_new_feature is None: + self._uses_new_feature = "'typedef float... %s'" % decl.name + return model.UnknownFloatType(decl.name) + + raise FFIError(':%d: unsupported usage of "..." in typedef' + % decl.coord.line) + + def _get_unknown_ptr_type(self, decl): + if decl.type.type.type.names == ['__dotdotdot__']: + return model.unknown_ptr_type(decl.name) + raise FFIError(':%d: unsupported usage of "..." in typedef' + % decl.coord.line) diff --git a/intelliaide/vendor/cffi/error.py b/intelliaide/vendor/cffi/error.py new file mode 100644 index 0000000..0a27247 --- /dev/null +++ b/intelliaide/vendor/cffi/error.py @@ -0,0 +1,31 @@ + +class FFIError(Exception): + __module__ = 'cffi' + +class CDefError(Exception): + __module__ = 'cffi' + def __str__(self): + try: + current_decl = self.args[1] + filename = current_decl.coord.file + linenum = current_decl.coord.line + prefix = '%s:%d: ' % (filename, linenum) + except (AttributeError, TypeError, IndexError): + prefix = '' + return '%s%s' % (prefix, self.args[0]) + +class VerificationError(Exception): + """ An error raised when verification fails + """ + __module__ = 'cffi' + +class VerificationMissing(Exception): + """ An error raised when incomplete structures are passed into + cdef, but no verification has been done + """ + __module__ = 'cffi' + +class PkgConfigError(Exception): + """ An error raised for missing modules in pkg-config + """ + __module__ = 'cffi' diff --git a/intelliaide/vendor/cffi/ffiplatform.py b/intelliaide/vendor/cffi/ffiplatform.py new file mode 100644 index 0000000..adca28f --- /dev/null +++ b/intelliaide/vendor/cffi/ffiplatform.py @@ -0,0 +1,113 @@ +import sys, os +from .error import VerificationError + + +LIST_OF_FILE_NAMES = ['sources', 'include_dirs', 'library_dirs', + 'extra_objects', 'depends'] + +def get_extension(srcfilename, modname, sources=(), **kwds): + from cffi._shimmed_dist_utils import Extension + allsources = [srcfilename] + for src in sources: + allsources.append(os.path.normpath(src)) + return Extension(name=modname, sources=allsources, **kwds) + +def compile(tmpdir, ext, compiler_verbose=0, debug=None): + """Compile a C extension module using distutils.""" + + saved_environ = os.environ.copy() + try: + outputfilename = _build(tmpdir, ext, compiler_verbose, debug) + outputfilename = os.path.abspath(outputfilename) + finally: + # workaround for a distutils bugs where some env vars can + # become longer and longer every time it is used + for key, value in saved_environ.items(): + if os.environ.get(key) != value: + os.environ[key] = value + return outputfilename + +def _build(tmpdir, ext, compiler_verbose=0, debug=None): + # XXX compact but horrible :-( + from cffi._shimmed_dist_utils import Distribution, CompileError, LinkError, set_threshold, set_verbosity + + dist = Distribution({'ext_modules': [ext]}) + dist.parse_config_files() + options = dist.get_option_dict('build_ext') + if debug is None: + debug = sys.flags.debug + options['debug'] = ('ffiplatform', debug) + options['force'] = ('ffiplatform', True) + options['build_lib'] = ('ffiplatform', tmpdir) + options['build_temp'] = ('ffiplatform', tmpdir) + # + try: + old_level = set_threshold(0) or 0 + try: + set_verbosity(compiler_verbose) + dist.run_command('build_ext') + cmd_obj = dist.get_command_obj('build_ext') + [soname] = cmd_obj.get_outputs() + finally: + set_threshold(old_level) + except (CompileError, LinkError) as e: + raise VerificationError('%s: %s' % (e.__class__.__name__, e)) + # + return soname + +try: + from os.path import samefile +except ImportError: + def samefile(f1, f2): + return os.path.abspath(f1) == os.path.abspath(f2) + +def maybe_relative_path(path): + if not os.path.isabs(path): + return path # already relative + dir = path + names = [] + while True: + prevdir = dir + dir, name = os.path.split(prevdir) + if dir == prevdir or not dir: + return path # failed to make it relative + names.append(name) + try: + if samefile(dir, os.curdir): + names.reverse() + return os.path.join(*names) + except OSError: + pass + +# ____________________________________________________________ + +try: + int_or_long = (int, long) + import cStringIO +except NameError: + int_or_long = int # Python 3 + import io as cStringIO + +def _flatten(x, f): + if isinstance(x, str): + f.write('%ds%s' % (len(x), x)) + elif isinstance(x, dict): + keys = sorted(x.keys()) + f.write('%dd' % len(keys)) + for key in keys: + _flatten(key, f) + _flatten(x[key], f) + elif isinstance(x, (list, tuple)): + f.write('%dl' % len(x)) + for value in x: + _flatten(value, f) + elif isinstance(x, int_or_long): + f.write('%di' % (x,)) + else: + raise TypeError( + "the keywords to verify() contains unsupported object %r" % (x,)) + +def flatten(x): + f = cStringIO.StringIO() + _flatten(x, f) + return f.getvalue() diff --git a/intelliaide/vendor/cffi/lock.py b/intelliaide/vendor/cffi/lock.py new file mode 100644 index 0000000..db91b71 --- /dev/null +++ b/intelliaide/vendor/cffi/lock.py @@ -0,0 +1,30 @@ +import sys + +if sys.version_info < (3,): + try: + from thread import allocate_lock + except ImportError: + from dummy_thread import allocate_lock +else: + try: + from _thread import allocate_lock + except ImportError: + from _dummy_thread import allocate_lock + + +##import sys +##l1 = allocate_lock + +##class allocate_lock(object): +## def __init__(self): +## self._real = l1() +## def __enter__(self): +## for i in range(4, 0, -1): +## print sys._getframe(i).f_code +## print +## return self._real.__enter__() +## def __exit__(self, *args): +## return self._real.__exit__(*args) +## def acquire(self, f): +## assert f is False +## return self._real.acquire(f) diff --git a/intelliaide/vendor/cffi/model.py b/intelliaide/vendor/cffi/model.py new file mode 100644 index 0000000..e5f4cae --- /dev/null +++ b/intelliaide/vendor/cffi/model.py @@ -0,0 +1,618 @@ +import types +import weakref + +from .lock import allocate_lock +from .error import CDefError, VerificationError, VerificationMissing + +# type qualifiers +Q_CONST = 0x01 +Q_RESTRICT = 0x02 +Q_VOLATILE = 0x04 + +def qualify(quals, replace_with): + if quals & Q_CONST: + replace_with = ' const ' + replace_with.lstrip() + if quals & Q_VOLATILE: + replace_with = ' volatile ' + replace_with.lstrip() + if quals & Q_RESTRICT: + # It seems that __restrict is supported by gcc and msvc. + # If you hit some different compiler, add a #define in + # _cffi_include.h for it (and in its copies, documented there) + replace_with = ' __restrict ' + replace_with.lstrip() + return replace_with + + +class BaseTypeByIdentity(object): + is_array_type = False + is_raw_function = False + + def get_c_name(self, replace_with='', context='a C file', quals=0): + result = self.c_name_with_marker + assert result.count('&') == 1 + # some logic duplication with ffi.getctype()... :-( + replace_with = replace_with.strip() + if replace_with: + if replace_with.startswith('*') and '&[' in result: + replace_with = '(%s)' % replace_with + elif not replace_with[0] in '[(': + replace_with = ' ' + replace_with + replace_with = qualify(quals, replace_with) + result = result.replace('&', replace_with) + if '$' in result: + raise VerificationError( + "cannot generate '%s' in %s: unknown type name" + % (self._get_c_name(), context)) + return result + + def _get_c_name(self): + return self.c_name_with_marker.replace('&', '') + + def has_c_name(self): + return '$' not in self._get_c_name() + + def is_integer_type(self): + return False + + def get_cached_btype(self, ffi, finishlist, can_delay=False): + try: + BType = ffi._cached_btypes[self] + except KeyError: + BType = self.build_backend_type(ffi, finishlist) + BType2 = ffi._cached_btypes.setdefault(self, BType) + assert BType2 is BType + return BType + + def __repr__(self): + return '<%s>' % (self._get_c_name(),) + + def _get_items(self): + return [(name, getattr(self, name)) for name in self._attrs_] + + +class BaseType(BaseTypeByIdentity): + + def __eq__(self, other): + return (self.__class__ == other.__class__ and + self._get_items() == other._get_items()) + + def __ne__(self, other): + return not self == other + + def __hash__(self): + return hash((self.__class__, tuple(self._get_items()))) + + +class VoidType(BaseType): + _attrs_ = () + + def __init__(self): + self.c_name_with_marker = 'void&' + + def build_backend_type(self, ffi, finishlist): + return global_cache(self, ffi, 'new_void_type') + +void_type = VoidType() + + +class BasePrimitiveType(BaseType): + def is_complex_type(self): + return False + + +class PrimitiveType(BasePrimitiveType): + _attrs_ = ('name',) + + ALL_PRIMITIVE_TYPES = { + 'char': 'c', + 'short': 'i', + 'int': 'i', + 'long': 'i', + 'long long': 'i', + 'signed char': 'i', + 'unsigned char': 'i', + 'unsigned short': 'i', + 'unsigned int': 'i', + 'unsigned long': 'i', + 'unsigned long long': 'i', + 'float': 'f', + 'double': 'f', + 'long double': 'f', + '_cffi_float_complex_t': 'j', + '_cffi_double_complex_t': 'j', + '_Bool': 'i', + # the following types are not primitive in the C sense + 'wchar_t': 'c', + 'char16_t': 'c', + 'char32_t': 'c', + 'int8_t': 'i', + 'uint8_t': 'i', + 'int16_t': 'i', + 'uint16_t': 'i', + 'int32_t': 'i', + 'uint32_t': 'i', + 'int64_t': 'i', + 'uint64_t': 'i', + 'int_least8_t': 'i', + 'uint_least8_t': 'i', + 'int_least16_t': 'i', + 'uint_least16_t': 'i', + 'int_least32_t': 'i', + 'uint_least32_t': 'i', + 'int_least64_t': 'i', + 'uint_least64_t': 'i', + 'int_fast8_t': 'i', + 'uint_fast8_t': 'i', + 'int_fast16_t': 'i', + 'uint_fast16_t': 'i', + 'int_fast32_t': 'i', + 'uint_fast32_t': 'i', + 'int_fast64_t': 'i', + 'uint_fast64_t': 'i', + 'intptr_t': 'i', + 'uintptr_t': 'i', + 'intmax_t': 'i', + 'uintmax_t': 'i', + 'ptrdiff_t': 'i', + 'size_t': 'i', + 'ssize_t': 'i', + } + + def __init__(self, name): + assert name in self.ALL_PRIMITIVE_TYPES + self.name = name + self.c_name_with_marker = name + '&' + + def is_char_type(self): + return self.ALL_PRIMITIVE_TYPES[self.name] == 'c' + def is_integer_type(self): + return self.ALL_PRIMITIVE_TYPES[self.name] == 'i' + def is_float_type(self): + return self.ALL_PRIMITIVE_TYPES[self.name] == 'f' + def is_complex_type(self): + return self.ALL_PRIMITIVE_TYPES[self.name] == 'j' + + def build_backend_type(self, ffi, finishlist): + return global_cache(self, ffi, 'new_primitive_type', self.name) + + +class UnknownIntegerType(BasePrimitiveType): + _attrs_ = ('name',) + + def __init__(self, name): + self.name = name + self.c_name_with_marker = name + '&' + + def is_integer_type(self): + return True + + def build_backend_type(self, ffi, finishlist): + raise NotImplementedError("integer type '%s' can only be used after " + "compilation" % self.name) + +class UnknownFloatType(BasePrimitiveType): + _attrs_ = ('name', ) + + def __init__(self, name): + self.name = name + self.c_name_with_marker = name + '&' + + def build_backend_type(self, ffi, finishlist): + raise NotImplementedError("float type '%s' can only be used after " + "compilation" % self.name) + + +class BaseFunctionType(BaseType): + _attrs_ = ('args', 'result', 'ellipsis', 'abi') + + def __init__(self, args, result, ellipsis, abi=None): + self.args = args + self.result = result + self.ellipsis = ellipsis + self.abi = abi + # + reprargs = [arg._get_c_name() for arg in self.args] + if self.ellipsis: + reprargs.append('...') + reprargs = reprargs or ['void'] + replace_with = self._base_pattern % (', '.join(reprargs),) + if abi is not None: + replace_with = replace_with[:1] + abi + ' ' + replace_with[1:] + self.c_name_with_marker = ( + self.result.c_name_with_marker.replace('&', replace_with)) + + +class RawFunctionType(BaseFunctionType): + # Corresponds to a C type like 'int(int)', which is the C type of + # a function, but not a pointer-to-function. The backend has no + # notion of such a type; it's used temporarily by parsing. + _base_pattern = '(&)(%s)' + is_raw_function = True + + def build_backend_type(self, ffi, finishlist): + raise CDefError("cannot render the type %r: it is a function " + "type, not a pointer-to-function type" % (self,)) + + def as_function_pointer(self): + return FunctionPtrType(self.args, self.result, self.ellipsis, self.abi) + + +class FunctionPtrType(BaseFunctionType): + _base_pattern = '(*&)(%s)' + + def build_backend_type(self, ffi, finishlist): + result = self.result.get_cached_btype(ffi, finishlist) + args = [] + for tp in self.args: + args.append(tp.get_cached_btype(ffi, finishlist)) + abi_args = () + if self.abi == "__stdcall": + if not self.ellipsis: # __stdcall ignored for variadic funcs + try: + abi_args = (ffi._backend.FFI_STDCALL,) + except AttributeError: + pass + return global_cache(self, ffi, 'new_function_type', + tuple(args), result, self.ellipsis, *abi_args) + + def as_raw_function(self): + return RawFunctionType(self.args, self.result, self.ellipsis, self.abi) + + +class PointerType(BaseType): + _attrs_ = ('totype', 'quals') + + def __init__(self, totype, quals=0): + self.totype = totype + self.quals = quals + extra = " *&" + if totype.is_array_type: + extra = "(%s)" % (extra.lstrip(),) + extra = qualify(quals, extra) + self.c_name_with_marker = totype.c_name_with_marker.replace('&', extra) + + def build_backend_type(self, ffi, finishlist): + BItem = self.totype.get_cached_btype(ffi, finishlist, can_delay=True) + return global_cache(self, ffi, 'new_pointer_type', BItem) + +voidp_type = PointerType(void_type) + +def ConstPointerType(totype): + return PointerType(totype, Q_CONST) + +const_voidp_type = ConstPointerType(void_type) + + +class NamedPointerType(PointerType): + _attrs_ = ('totype', 'name') + + def __init__(self, totype, name, quals=0): + PointerType.__init__(self, totype, quals) + self.name = name + self.c_name_with_marker = name + '&' + + +class ArrayType(BaseType): + _attrs_ = ('item', 'length') + is_array_type = True + + def __init__(self, item, length): + self.item = item + self.length = length + # + if length is None: + brackets = '&[]' + elif length == '...': + brackets = '&[/*...*/]' + else: + brackets = '&[%s]' % length + self.c_name_with_marker = ( + self.item.c_name_with_marker.replace('&', brackets)) + + def length_is_unknown(self): + return isinstance(self.length, str) + + def resolve_length(self, newlength): + return ArrayType(self.item, newlength) + + def build_backend_type(self, ffi, finishlist): + if self.length_is_unknown(): + raise CDefError("cannot render the type %r: unknown length" % + (self,)) + self.item.get_cached_btype(ffi, finishlist) # force the item BType + BPtrItem = PointerType(self.item).get_cached_btype(ffi, finishlist) + return global_cache(self, ffi, 'new_array_type', BPtrItem, self.length) + +char_array_type = ArrayType(PrimitiveType('char'), None) + + +class StructOrUnionOrEnum(BaseTypeByIdentity): + _attrs_ = ('name',) + forcename = None + + def build_c_name_with_marker(self): + name = self.forcename or '%s %s' % (self.kind, self.name) + self.c_name_with_marker = name + '&' + + def force_the_name(self, forcename): + self.forcename = forcename + self.build_c_name_with_marker() + + def get_official_name(self): + assert self.c_name_with_marker.endswith('&') + return self.c_name_with_marker[:-1] + + +class StructOrUnion(StructOrUnionOrEnum): + fixedlayout = None + completed = 0 + partial = False + packed = 0 + + def __init__(self, name, fldnames, fldtypes, fldbitsize, fldquals=None): + self.name = name + self.fldnames = fldnames + self.fldtypes = fldtypes + self.fldbitsize = fldbitsize + self.fldquals = fldquals + self.build_c_name_with_marker() + + def anonymous_struct_fields(self): + if self.fldtypes is not None: + for name, type in zip(self.fldnames, self.fldtypes): + if name == '' and isinstance(type, StructOrUnion): + yield type + + def enumfields(self, expand_anonymous_struct_union=True): + fldquals = self.fldquals + if fldquals is None: + fldquals = (0,) * len(self.fldnames) + for name, type, bitsize, quals in zip(self.fldnames, self.fldtypes, + self.fldbitsize, fldquals): + if (name == '' and isinstance(type, StructOrUnion) + and expand_anonymous_struct_union): + # nested anonymous struct/union + for result in type.enumfields(): + yield result + else: + yield (name, type, bitsize, quals) + + def force_flatten(self): + # force the struct or union to have a declaration that lists + # directly all fields returned by enumfields(), flattening + # nested anonymous structs/unions. + names = [] + types = [] + bitsizes = [] + fldquals = [] + for name, type, bitsize, quals in self.enumfields(): + names.append(name) + types.append(type) + bitsizes.append(bitsize) + fldquals.append(quals) + self.fldnames = tuple(names) + self.fldtypes = tuple(types) + self.fldbitsize = tuple(bitsizes) + self.fldquals = tuple(fldquals) + + def get_cached_btype(self, ffi, finishlist, can_delay=False): + BType = StructOrUnionOrEnum.get_cached_btype(self, ffi, finishlist, + can_delay) + if not can_delay: + self.finish_backend_type(ffi, finishlist) + return BType + + def finish_backend_type(self, ffi, finishlist): + if self.completed: + if self.completed != 2: + raise NotImplementedError("recursive structure declaration " + "for '%s'" % (self.name,)) + return + BType = ffi._cached_btypes[self] + # + self.completed = 1 + # + if self.fldtypes is None: + pass # not completing it: it's an opaque struct + # + elif self.fixedlayout is None: + fldtypes = [tp.get_cached_btype(ffi, finishlist) + for tp in self.fldtypes] + lst = list(zip(self.fldnames, fldtypes, self.fldbitsize)) + extra_flags = () + if self.packed: + if self.packed == 1: + extra_flags = (8,) # SF_PACKED + else: + extra_flags = (0, self.packed) + ffi._backend.complete_struct_or_union(BType, lst, self, + -1, -1, *extra_flags) + # + else: + fldtypes = [] + fieldofs, fieldsize, totalsize, totalalignment = self.fixedlayout + for i in range(len(self.fldnames)): + fsize = fieldsize[i] + ftype = self.fldtypes[i] + # + if isinstance(ftype, ArrayType) and ftype.length_is_unknown(): + # fix the length to match the total size + BItemType = ftype.item.get_cached_btype(ffi, finishlist) + nlen, nrest = divmod(fsize, ffi.sizeof(BItemType)) + if nrest != 0: + self._verification_error( + "field '%s.%s' has a bogus size?" % ( + self.name, self.fldnames[i] or '{}')) + ftype = ftype.resolve_length(nlen) + self.fldtypes = (self.fldtypes[:i] + (ftype,) + + self.fldtypes[i+1:]) + # + BFieldType = ftype.get_cached_btype(ffi, finishlist) + if isinstance(ftype, ArrayType) and ftype.length is None: + assert fsize == 0 + else: + bitemsize = ffi.sizeof(BFieldType) + if bitemsize != fsize: + self._verification_error( + "field '%s.%s' is declared as %d bytes, but is " + "really %d bytes" % (self.name, + self.fldnames[i] or '{}', + bitemsize, fsize)) + fldtypes.append(BFieldType) + # + lst = list(zip(self.fldnames, fldtypes, self.fldbitsize, fieldofs)) + ffi._backend.complete_struct_or_union(BType, lst, self, + totalsize, totalalignment) + self.completed = 2 + + def _verification_error(self, msg): + raise VerificationError(msg) + + def check_not_partial(self): + if self.partial and self.fixedlayout is None: + raise VerificationMissing(self._get_c_name()) + + def build_backend_type(self, ffi, finishlist): + self.check_not_partial() + finishlist.append(self) + # + return global_cache(self, ffi, 'new_%s_type' % self.kind, + self.get_official_name(), key=self) + + +class StructType(StructOrUnion): + kind = 'struct' + + +class UnionType(StructOrUnion): + kind = 'union' + + +class EnumType(StructOrUnionOrEnum): + kind = 'enum' + partial = False + partial_resolved = False + + def __init__(self, name, enumerators, enumvalues, baseinttype=None): + self.name = name + self.enumerators = enumerators + self.enumvalues = enumvalues + self.baseinttype = baseinttype + self.build_c_name_with_marker() + + def force_the_name(self, forcename): + StructOrUnionOrEnum.force_the_name(self, forcename) + if self.forcename is None: + name = self.get_official_name() + self.forcename = '$' + name.replace(' ', '_') + + def check_not_partial(self): + if self.partial and not self.partial_resolved: + raise VerificationMissing(self._get_c_name()) + + def build_backend_type(self, ffi, finishlist): + self.check_not_partial() + base_btype = self.build_baseinttype(ffi, finishlist) + return global_cache(self, ffi, 'new_enum_type', + self.get_official_name(), + self.enumerators, self.enumvalues, + base_btype, key=self) + + def build_baseinttype(self, ffi, finishlist): + if self.baseinttype is not None: + return self.baseinttype.get_cached_btype(ffi, finishlist) + # + if self.enumvalues: + smallest_value = min(self.enumvalues) + largest_value = max(self.enumvalues) + else: + import warnings + try: + # XXX! The goal is to ensure that the warnings.warn() + # will not suppress the warning. We want to get it + # several times if we reach this point several times. + __warningregistry__.clear() + except NameError: + pass + warnings.warn("%r has no values explicitly defined; " + "guessing that it is equivalent to 'unsigned int'" + % self._get_c_name()) + smallest_value = largest_value = 0 + if smallest_value < 0: # needs a signed type + sign = 1 + candidate1 = PrimitiveType("int") + candidate2 = PrimitiveType("long") + else: + sign = 0 + candidate1 = PrimitiveType("unsigned int") + candidate2 = PrimitiveType("unsigned long") + btype1 = candidate1.get_cached_btype(ffi, finishlist) + btype2 = candidate2.get_cached_btype(ffi, finishlist) + size1 = ffi.sizeof(btype1) + size2 = ffi.sizeof(btype2) + if (smallest_value >= ((-1) << (8*size1-1)) and + largest_value < (1 << (8*size1-sign))): + return btype1 + if (smallest_value >= ((-1) << (8*size2-1)) and + largest_value < (1 << (8*size2-sign))): + return btype2 + raise CDefError("%s values don't all fit into either 'long' " + "or 'unsigned long'" % self._get_c_name()) + +def unknown_type(name, structname=None): + if structname is None: + structname = '$%s' % name + tp = StructType(structname, None, None, None) + tp.force_the_name(name) + tp.origin = "unknown_type" + return tp + +def unknown_ptr_type(name, structname=None): + if structname is None: + structname = '$$%s' % name + tp = StructType(structname, None, None, None) + return NamedPointerType(tp, name) + + +global_lock = allocate_lock() +_typecache_cffi_backend = weakref.WeakValueDictionary() + +def get_typecache(backend): + # returns _typecache_cffi_backend if backend is the _cffi_backend + # module, or type(backend).__typecache if backend is an instance of + # CTypesBackend (or some FakeBackend class during tests) + if isinstance(backend, types.ModuleType): + return _typecache_cffi_backend + with global_lock: + if not hasattr(type(backend), '__typecache'): + type(backend).__typecache = weakref.WeakValueDictionary() + return type(backend).__typecache + +def global_cache(srctype, ffi, funcname, *args, **kwds): + key = kwds.pop('key', (funcname, args)) + assert not kwds + try: + return ffi._typecache[key] + except KeyError: + pass + try: + res = getattr(ffi._backend, funcname)(*args) + except NotImplementedError as e: + raise NotImplementedError("%s: %r: %s" % (funcname, srctype, e)) + # note that setdefault() on WeakValueDictionary is not atomic + # and contains a rare bug (http://bugs.python.org/issue19542); + # we have to use a lock and do it ourselves + cache = ffi._typecache + with global_lock: + res1 = cache.get(key) + if res1 is None: + cache[key] = res + return res + else: + return res1 + +def pointer_cache(ffi, BType): + return global_cache('?', ffi, 'new_pointer_type', BType) + +def attach_exception_info(e, name): + if e.args and type(e.args[0]) is str: + e.args = ('%s: %s' % (name, e.args[0]),) + e.args[1:] diff --git a/intelliaide/vendor/cffi/parse_c_type.h b/intelliaide/vendor/cffi/parse_c_type.h new file mode 100644 index 0000000..84e4ef8 --- /dev/null +++ b/intelliaide/vendor/cffi/parse_c_type.h @@ -0,0 +1,181 @@ + +/* This part is from file 'cffi/parse_c_type.h'. It is copied at the + beginning of C sources generated by CFFI's ffi.set_source(). */ + +typedef void *_cffi_opcode_t; + +#define _CFFI_OP(opcode, arg) (_cffi_opcode_t)(opcode | (((uintptr_t)(arg)) << 8)) +#define _CFFI_GETOP(cffi_opcode) ((unsigned char)(uintptr_t)cffi_opcode) +#define _CFFI_GETARG(cffi_opcode) (((intptr_t)cffi_opcode) >> 8) + +#define _CFFI_OP_PRIMITIVE 1 +#define _CFFI_OP_POINTER 3 +#define _CFFI_OP_ARRAY 5 +#define _CFFI_OP_OPEN_ARRAY 7 +#define _CFFI_OP_STRUCT_UNION 9 +#define _CFFI_OP_ENUM 11 +#define _CFFI_OP_FUNCTION 13 +#define _CFFI_OP_FUNCTION_END 15 +#define _CFFI_OP_NOOP 17 +#define _CFFI_OP_BITFIELD 19 +#define _CFFI_OP_TYPENAME 21 +#define _CFFI_OP_CPYTHON_BLTN_V 23 // varargs +#define _CFFI_OP_CPYTHON_BLTN_N 25 // noargs +#define _CFFI_OP_CPYTHON_BLTN_O 27 // O (i.e. a single arg) +#define _CFFI_OP_CONSTANT 29 +#define _CFFI_OP_CONSTANT_INT 31 +#define _CFFI_OP_GLOBAL_VAR 33 +#define _CFFI_OP_DLOPEN_FUNC 35 +#define _CFFI_OP_DLOPEN_CONST 37 +#define _CFFI_OP_GLOBAL_VAR_F 39 +#define _CFFI_OP_EXTERN_PYTHON 41 + +#define _CFFI_PRIM_VOID 0 +#define _CFFI_PRIM_BOOL 1 +#define _CFFI_PRIM_CHAR 2 +#define _CFFI_PRIM_SCHAR 3 +#define _CFFI_PRIM_UCHAR 4 +#define _CFFI_PRIM_SHORT 5 +#define _CFFI_PRIM_USHORT 6 +#define _CFFI_PRIM_INT 7 +#define _CFFI_PRIM_UINT 8 +#define _CFFI_PRIM_LONG 9 +#define _CFFI_PRIM_ULONG 10 +#define _CFFI_PRIM_LONGLONG 11 +#define _CFFI_PRIM_ULONGLONG 12 +#define _CFFI_PRIM_FLOAT 13 +#define _CFFI_PRIM_DOUBLE 14 +#define _CFFI_PRIM_LONGDOUBLE 15 + +#define _CFFI_PRIM_WCHAR 16 +#define _CFFI_PRIM_INT8 17 +#define _CFFI_PRIM_UINT8 18 +#define _CFFI_PRIM_INT16 19 +#define _CFFI_PRIM_UINT16 20 +#define _CFFI_PRIM_INT32 21 +#define _CFFI_PRIM_UINT32 22 +#define _CFFI_PRIM_INT64 23 +#define _CFFI_PRIM_UINT64 24 +#define _CFFI_PRIM_INTPTR 25 +#define _CFFI_PRIM_UINTPTR 26 +#define _CFFI_PRIM_PTRDIFF 27 +#define _CFFI_PRIM_SIZE 28 +#define _CFFI_PRIM_SSIZE 29 +#define _CFFI_PRIM_INT_LEAST8 30 +#define _CFFI_PRIM_UINT_LEAST8 31 +#define _CFFI_PRIM_INT_LEAST16 32 +#define _CFFI_PRIM_UINT_LEAST16 33 +#define _CFFI_PRIM_INT_LEAST32 34 +#define _CFFI_PRIM_UINT_LEAST32 35 +#define _CFFI_PRIM_INT_LEAST64 36 +#define _CFFI_PRIM_UINT_LEAST64 37 +#define _CFFI_PRIM_INT_FAST8 38 +#define _CFFI_PRIM_UINT_FAST8 39 +#define _CFFI_PRIM_INT_FAST16 40 +#define _CFFI_PRIM_UINT_FAST16 41 +#define _CFFI_PRIM_INT_FAST32 42 +#define _CFFI_PRIM_UINT_FAST32 43 +#define _CFFI_PRIM_INT_FAST64 44 +#define _CFFI_PRIM_UINT_FAST64 45 +#define _CFFI_PRIM_INTMAX 46 +#define _CFFI_PRIM_UINTMAX 47 +#define _CFFI_PRIM_FLOATCOMPLEX 48 +#define _CFFI_PRIM_DOUBLECOMPLEX 49 +#define _CFFI_PRIM_CHAR16 50 +#define _CFFI_PRIM_CHAR32 51 + +#define _CFFI__NUM_PRIM 52 +#define _CFFI__UNKNOWN_PRIM (-1) +#define _CFFI__UNKNOWN_FLOAT_PRIM (-2) +#define _CFFI__UNKNOWN_LONG_DOUBLE (-3) + +#define _CFFI__IO_FILE_STRUCT (-1) + + +struct _cffi_global_s { + const char *name; + void *address; + _cffi_opcode_t type_op; + void *size_or_direct_fn; // OP_GLOBAL_VAR: size, or 0 if unknown + // OP_CPYTHON_BLTN_*: addr of direct function +}; + +struct _cffi_getconst_s { + unsigned long long value; + const struct _cffi_type_context_s *ctx; + int gindex; +}; + +struct _cffi_struct_union_s { + const char *name; + int type_index; // -> _cffi_types, on a OP_STRUCT_UNION + int flags; // _CFFI_F_* flags below + size_t size; + int alignment; + int first_field_index; // -> _cffi_fields array + int num_fields; +}; +#define _CFFI_F_UNION 0x01 // is a union, not a struct +#define _CFFI_F_CHECK_FIELDS 0x02 // complain if fields are not in the + // "standard layout" or if some are missing +#define _CFFI_F_PACKED 0x04 // for CHECK_FIELDS, assume a packed struct +#define _CFFI_F_EXTERNAL 0x08 // in some other ffi.include() +#define _CFFI_F_OPAQUE 0x10 // opaque + +struct _cffi_field_s { + const char *name; + size_t field_offset; + size_t field_size; + _cffi_opcode_t field_type_op; +}; + +struct _cffi_enum_s { + const char *name; + int type_index; // -> _cffi_types, on a OP_ENUM + int type_prim; // _CFFI_PRIM_xxx + const char *enumerators; // comma-delimited string +}; + +struct _cffi_typename_s { + const char *name; + int type_index; /* if opaque, points to a possibly artificial + OP_STRUCT which is itself opaque */ +}; + +struct _cffi_type_context_s { + _cffi_opcode_t *types; + const struct _cffi_global_s *globals; + const struct _cffi_field_s *fields; + const struct _cffi_struct_union_s *struct_unions; + const struct _cffi_enum_s *enums; + const struct _cffi_typename_s *typenames; + int num_globals; + int num_struct_unions; + int num_enums; + int num_typenames; + const char *const *includes; + int num_types; + int flags; /* future extension */ +}; + +struct _cffi_parse_info_s { + const struct _cffi_type_context_s *ctx; + _cffi_opcode_t *output; + unsigned int output_size; + size_t error_location; + const char *error_message; +}; + +struct _cffi_externpy_s { + const char *name; + size_t size_of_result; + void *reserved1, *reserved2; +}; + +#ifdef _CFFI_INTERNAL +static int parse_c_type(struct _cffi_parse_info_s *info, const char *input); +static int search_in_globals(const struct _cffi_type_context_s *ctx, + const char *search, size_t search_len); +static int search_in_struct_unions(const struct _cffi_type_context_s *ctx, + const char *search, size_t search_len); +#endif diff --git a/intelliaide/vendor/cffi/pkgconfig.py b/intelliaide/vendor/cffi/pkgconfig.py new file mode 100644 index 0000000..5c93f15 --- /dev/null +++ b/intelliaide/vendor/cffi/pkgconfig.py @@ -0,0 +1,121 @@ +# pkg-config, https://www.freedesktop.org/wiki/Software/pkg-config/ integration for cffi +import sys, os, subprocess + +from .error import PkgConfigError + + +def merge_flags(cfg1, cfg2): + """Merge values from cffi config flags cfg2 to cf1 + + Example: + merge_flags({"libraries": ["one"]}, {"libraries": ["two"]}) + {"libraries": ["one", "two"]} + """ + for key, value in cfg2.items(): + if key not in cfg1: + cfg1[key] = value + else: + if not isinstance(cfg1[key], list): + raise TypeError("cfg1[%r] should be a list of strings" % (key,)) + if not isinstance(value, list): + raise TypeError("cfg2[%r] should be a list of strings" % (key,)) + cfg1[key].extend(value) + return cfg1 + + +def call(libname, flag, encoding=sys.getfilesystemencoding()): + """Calls pkg-config and returns the output if found + """ + a = ["pkg-config", "--print-errors"] + a.append(flag) + a.append(libname) + try: + pc = subprocess.Popen(a, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + except EnvironmentError as e: + raise PkgConfigError("cannot run pkg-config: %s" % (str(e).strip(),)) + + bout, berr = pc.communicate() + if pc.returncode != 0: + try: + berr = berr.decode(encoding) + except Exception: + pass + raise PkgConfigError(berr.strip()) + + if sys.version_info >= (3,) and not isinstance(bout, str): # Python 3.x + try: + bout = bout.decode(encoding) + except UnicodeDecodeError: + raise PkgConfigError("pkg-config %s %s returned bytes that cannot " + "be decoded with encoding %r:\n%r" % + (flag, libname, encoding, bout)) + + if os.altsep != '\\' and '\\' in bout: + raise PkgConfigError("pkg-config %s %s returned an unsupported " + "backslash-escaped output:\n%r" % + (flag, libname, bout)) + return bout + + +def flags_from_pkgconfig(libs): + r"""Return compiler line flags for FFI.set_source based on pkg-config output + + Usage + ... + ffibuilder.set_source("_foo", pkgconfig = ["libfoo", "libbar >= 1.8.3"]) + + If pkg-config is installed on build machine, then arguments include_dirs, + library_dirs, libraries, define_macros, extra_compile_args and + extra_link_args are extended with an output of pkg-config for libfoo and + libbar. + + Raises PkgConfigError in case the pkg-config call fails. + """ + + def get_include_dirs(string): + return [x[2:] for x in string.split() if x.startswith("-I")] + + def get_library_dirs(string): + return [x[2:] for x in string.split() if x.startswith("-L")] + + def get_libraries(string): + return [x[2:] for x in string.split() if x.startswith("-l")] + + # convert -Dfoo=bar to list of tuples [("foo", "bar")] expected by distutils + def get_macros(string): + def _macro(x): + x = x[2:] # drop "-D" + if '=' in x: + return tuple(x.split("=", 1)) # "-Dfoo=bar" => ("foo", "bar") + else: + return (x, None) # "-Dfoo" => ("foo", None) + return [_macro(x) for x in string.split() if x.startswith("-D")] + + def get_other_cflags(string): + return [x for x in string.split() if not x.startswith("-I") and + not x.startswith("-D")] + + def get_other_libs(string): + return [x for x in string.split() if not x.startswith("-L") and + not x.startswith("-l")] + + # return kwargs for given libname + def kwargs(libname): + fse = sys.getfilesystemencoding() + all_cflags = call(libname, "--cflags") + all_libs = call(libname, "--libs") + return { + "include_dirs": get_include_dirs(all_cflags), + "library_dirs": get_library_dirs(all_libs), + "libraries": get_libraries(all_libs), + "define_macros": get_macros(all_cflags), + "extra_compile_args": get_other_cflags(all_cflags), + "extra_link_args": get_other_libs(all_libs), + } + + # merge all arguments together + ret = {} + for libname in libs: + lib_flags = kwargs(libname) + merge_flags(ret, lib_flags) + return ret diff --git a/intelliaide/vendor/cffi/recompiler.py b/intelliaide/vendor/cffi/recompiler.py new file mode 100644 index 0000000..7734a34 --- /dev/null +++ b/intelliaide/vendor/cffi/recompiler.py @@ -0,0 +1,1598 @@ +import io, os, sys, sysconfig +from . import ffiplatform, model +from .error import VerificationError +from .cffi_opcode import * + +VERSION_BASE = 0x2601 +VERSION_EMBEDDED = 0x2701 +VERSION_CHAR16CHAR32 = 0x2801 + +USE_LIMITED_API = ((sys.platform != 'win32' or sys.version_info < (3, 0) or + sys.version_info >= (3, 5)) and + not sysconfig.get_config_var("Py_GIL_DISABLED")) # free-threaded doesn't yet support limited API + +class GlobalExpr: + def __init__(self, name, address, type_op, size=0, check_value=0): + self.name = name + self.address = address + self.type_op = type_op + self.size = size + self.check_value = check_value + + def as_c_expr(self): + return ' { "%s", (void *)%s, %s, (void *)%s },' % ( + self.name, self.address, self.type_op.as_c_expr(), self.size) + + def as_python_expr(self): + return "b'%s%s',%d" % (self.type_op.as_python_bytes(), self.name, + self.check_value) + +class FieldExpr: + def __init__(self, name, field_offset, field_size, fbitsize, field_type_op): + self.name = name + self.field_offset = field_offset + self.field_size = field_size + self.fbitsize = fbitsize + self.field_type_op = field_type_op + + def as_c_expr(self): + spaces = " " * len(self.name) + return (' { "%s", %s,\n' % (self.name, self.field_offset) + + ' %s %s,\n' % (spaces, self.field_size) + + ' %s %s },' % (spaces, self.field_type_op.as_c_expr())) + + def as_python_expr(self): + raise NotImplementedError + + def as_field_python_expr(self): + if self.field_type_op.op == OP_NOOP: + size_expr = '' + elif self.field_type_op.op == OP_BITFIELD: + size_expr = format_four_bytes(self.fbitsize) + else: + raise NotImplementedError + return "b'%s%s%s'" % (self.field_type_op.as_python_bytes(), + size_expr, + self.name) + +class StructUnionExpr: + def __init__(self, name, type_index, flags, size, alignment, comment, + first_field_index, c_fields): + self.name = name + self.type_index = type_index + self.flags = flags + self.size = size + self.alignment = alignment + self.comment = comment + self.first_field_index = first_field_index + self.c_fields = c_fields + + def as_c_expr(self): + return (' { "%s", %d, %s,' % (self.name, self.type_index, self.flags) + + '\n %s, %s, ' % (self.size, self.alignment) + + '%d, %d ' % (self.first_field_index, len(self.c_fields)) + + ('/* %s */ ' % self.comment if self.comment else '') + + '},') + + def as_python_expr(self): + flags = eval(self.flags, G_FLAGS) + fields_expr = [c_field.as_field_python_expr() + for c_field in self.c_fields] + return "(b'%s%s%s',%s)" % ( + format_four_bytes(self.type_index), + format_four_bytes(flags), + self.name, + ','.join(fields_expr)) + +class EnumExpr: + def __init__(self, name, type_index, size, signed, allenums): + self.name = name + self.type_index = type_index + self.size = size + self.signed = signed + self.allenums = allenums + + def as_c_expr(self): + return (' { "%s", %d, _cffi_prim_int(%s, %s),\n' + ' "%s" },' % (self.name, self.type_index, + self.size, self.signed, self.allenums)) + + def as_python_expr(self): + prim_index = { + (1, 0): PRIM_UINT8, (1, 1): PRIM_INT8, + (2, 0): PRIM_UINT16, (2, 1): PRIM_INT16, + (4, 0): PRIM_UINT32, (4, 1): PRIM_INT32, + (8, 0): PRIM_UINT64, (8, 1): PRIM_INT64, + }[self.size, self.signed] + return "b'%s%s%s\\x00%s'" % (format_four_bytes(self.type_index), + format_four_bytes(prim_index), + self.name, self.allenums) + +class TypenameExpr: + def __init__(self, name, type_index): + self.name = name + self.type_index = type_index + + def as_c_expr(self): + return ' { "%s", %d },' % (self.name, self.type_index) + + def as_python_expr(self): + return "b'%s%s'" % (format_four_bytes(self.type_index), self.name) + + +# ____________________________________________________________ + + +class Recompiler: + _num_externpy = 0 + + def __init__(self, ffi, module_name, target_is_python=False): + self.ffi = ffi + self.module_name = module_name + self.target_is_python = target_is_python + self._version = VERSION_BASE + + def needs_version(self, ver): + self._version = max(self._version, ver) + + def collect_type_table(self): + self._typesdict = {} + self._generate("collecttype") + # + all_decls = sorted(self._typesdict, key=str) + # + # prepare all FUNCTION bytecode sequences first + self.cffi_types = [] + for tp in all_decls: + if tp.is_raw_function: + assert self._typesdict[tp] is None + self._typesdict[tp] = len(self.cffi_types) + self.cffi_types.append(tp) # placeholder + for tp1 in tp.args: + assert isinstance(tp1, (model.VoidType, + model.BasePrimitiveType, + model.PointerType, + model.StructOrUnionOrEnum, + model.FunctionPtrType)) + if self._typesdict[tp1] is None: + self._typesdict[tp1] = len(self.cffi_types) + self.cffi_types.append(tp1) # placeholder + self.cffi_types.append('END') # placeholder + # + # prepare all OTHER bytecode sequences + for tp in all_decls: + if not tp.is_raw_function and self._typesdict[tp] is None: + self._typesdict[tp] = len(self.cffi_types) + self.cffi_types.append(tp) # placeholder + if tp.is_array_type and tp.length is not None: + self.cffi_types.append('LEN') # placeholder + assert None not in self._typesdict.values() + # + # collect all structs and unions and enums + self._struct_unions = {} + self._enums = {} + for tp in all_decls: + if isinstance(tp, model.StructOrUnion): + self._struct_unions[tp] = None + elif isinstance(tp, model.EnumType): + self._enums[tp] = None + for i, tp in enumerate(sorted(self._struct_unions, + key=lambda tp: tp.name)): + self._struct_unions[tp] = i + for i, tp in enumerate(sorted(self._enums, + key=lambda tp: tp.name)): + self._enums[tp] = i + # + # emit all bytecode sequences now + for tp in all_decls: + method = getattr(self, '_emit_bytecode_' + tp.__class__.__name__) + method(tp, self._typesdict[tp]) + # + # consistency check + for op in self.cffi_types: + assert isinstance(op, CffiOp) + self.cffi_types = tuple(self.cffi_types) # don't change any more + + def _enum_fields(self, tp): + # When producing C, expand all anonymous struct/union fields. + # That's necessary to have C code checking the offsets of the + # individual fields contained in them. When producing Python, + # don't do it and instead write it like it is, with the + # corresponding fields having an empty name. Empty names are + # recognized at runtime when we import the generated Python + # file. + expand_anonymous_struct_union = not self.target_is_python + return tp.enumfields(expand_anonymous_struct_union) + + def _do_collect_type(self, tp): + if not isinstance(tp, model.BaseTypeByIdentity): + if isinstance(tp, tuple): + for x in tp: + self._do_collect_type(x) + return + if tp not in self._typesdict: + self._typesdict[tp] = None + if isinstance(tp, model.FunctionPtrType): + self._do_collect_type(tp.as_raw_function()) + elif isinstance(tp, model.StructOrUnion): + if tp.fldtypes is not None and ( + tp not in self.ffi._parser._included_declarations): + for name1, tp1, _, _ in self._enum_fields(tp): + self._do_collect_type(self._field_type(tp, name1, tp1)) + else: + for _, x in tp._get_items(): + self._do_collect_type(x) + + def _generate(self, step_name): + lst = self.ffi._parser._declarations.items() + for name, (tp, quals) in sorted(lst): + kind, realname = name.split(' ', 1) + try: + method = getattr(self, '_generate_cpy_%s_%s' % (kind, + step_name)) + except AttributeError: + raise VerificationError( + "not implemented in recompile(): %r" % name) + try: + self._current_quals = quals + method(tp, realname) + except Exception as e: + model.attach_exception_info(e, name) + raise + + # ---------- + + ALL_STEPS = ["global", "field", "struct_union", "enum", "typename"] + + def collect_step_tables(self): + # collect the declarations for '_cffi_globals', '_cffi_typenames', etc. + self._lsts = {} + for step_name in self.ALL_STEPS: + self._lsts[step_name] = [] + self._seen_struct_unions = set() + self._generate("ctx") + self._add_missing_struct_unions() + # + for step_name in self.ALL_STEPS: + lst = self._lsts[step_name] + if step_name != "field": + lst.sort(key=lambda entry: entry.name) + self._lsts[step_name] = tuple(lst) # don't change any more + # + # check for a possible internal inconsistency: _cffi_struct_unions + # should have been generated with exactly self._struct_unions + lst = self._lsts["struct_union"] + for tp, i in self._struct_unions.items(): + assert i < len(lst) + assert lst[i].name == tp.name + assert len(lst) == len(self._struct_unions) + # same with enums + lst = self._lsts["enum"] + for tp, i in self._enums.items(): + assert i < len(lst) + assert lst[i].name == tp.name + assert len(lst) == len(self._enums) + + # ---------- + + def _prnt(self, what=''): + self._f.write(what + '\n') + + def write_source_to_f(self, f, preamble): + if self.target_is_python: + assert preamble is None + self.write_py_source_to_f(f) + else: + assert preamble is not None + self.write_c_source_to_f(f, preamble) + + def _rel_readlines(self, filename): + g = open(os.path.join(os.path.dirname(__file__), filename), 'r') + lines = g.readlines() + g.close() + return lines + + def write_c_source_to_f(self, f, preamble): + self._f = f + prnt = self._prnt + if self.ffi._embedding is not None: + prnt('#define _CFFI_USE_EMBEDDING') + if not USE_LIMITED_API: + prnt('#define _CFFI_NO_LIMITED_API') + # + # first the '#include' (actually done by inlining the file's content) + lines = self._rel_readlines('_cffi_include.h') + i = lines.index('#include "parse_c_type.h"\n') + lines[i:i+1] = self._rel_readlines('parse_c_type.h') + prnt(''.join(lines)) + # + # if we have ffi._embedding != None, we give it here as a macro + # and include an extra file + base_module_name = self.module_name.split('.')[-1] + if self.ffi._embedding is not None: + prnt('#define _CFFI_MODULE_NAME "%s"' % (self.module_name,)) + prnt('static const char _CFFI_PYTHON_STARTUP_CODE[] = {') + self._print_string_literal_in_array(self.ffi._embedding) + prnt('0 };') + prnt('#ifdef PYPY_VERSION') + prnt('# define _CFFI_PYTHON_STARTUP_FUNC _cffi_pypyinit_%s' % ( + base_module_name,)) + prnt('#elif PY_MAJOR_VERSION >= 3') + prnt('# define _CFFI_PYTHON_STARTUP_FUNC PyInit_%s' % ( + base_module_name,)) + prnt('#else') + prnt('# define _CFFI_PYTHON_STARTUP_FUNC init%s' % ( + base_module_name,)) + prnt('#endif') + lines = self._rel_readlines('_embedding.h') + i = lines.index('#include "_cffi_errors.h"\n') + lines[i:i+1] = self._rel_readlines('_cffi_errors.h') + prnt(''.join(lines)) + self.needs_version(VERSION_EMBEDDED) + # + # then paste the C source given by the user, verbatim. + prnt('/************************************************************/') + prnt() + prnt(preamble) + prnt() + prnt('/************************************************************/') + prnt() + # + # the declaration of '_cffi_types' + prnt('static void *_cffi_types[] = {') + typeindex2type = dict([(i, tp) for (tp, i) in self._typesdict.items()]) + for i, op in enumerate(self.cffi_types): + comment = '' + if i in typeindex2type: + comment = ' // ' + typeindex2type[i]._get_c_name() + prnt('/* %2d */ %s,%s' % (i, op.as_c_expr(), comment)) + if not self.cffi_types: + prnt(' 0') + prnt('};') + prnt() + # + # call generate_cpy_xxx_decl(), for every xxx found from + # ffi._parser._declarations. This generates all the functions. + self._seen_constants = set() + self._generate("decl") + # + # the declaration of '_cffi_globals' and '_cffi_typenames' + nums = {} + for step_name in self.ALL_STEPS: + lst = self._lsts[step_name] + nums[step_name] = len(lst) + if nums[step_name] > 0: + prnt('static const struct _cffi_%s_s _cffi_%ss[] = {' % ( + step_name, step_name)) + for entry in lst: + prnt(entry.as_c_expr()) + prnt('};') + prnt() + # + # the declaration of '_cffi_includes' + if self.ffi._included_ffis: + prnt('static const char * const _cffi_includes[] = {') + for ffi_to_include in self.ffi._included_ffis: + try: + included_module_name, included_source = ( + ffi_to_include._assigned_source[:2]) + except AttributeError: + raise VerificationError( + "ffi object %r includes %r, but the latter has not " + "been prepared with set_source()" % ( + self.ffi, ffi_to_include,)) + if included_source is None: + raise VerificationError( + "not implemented yet: ffi.include() of a Python-based " + "ffi inside a C-based ffi") + prnt(' "%s",' % (included_module_name,)) + prnt(' NULL') + prnt('};') + prnt() + # + # the declaration of '_cffi_type_context' + prnt('static const struct _cffi_type_context_s _cffi_type_context = {') + prnt(' _cffi_types,') + for step_name in self.ALL_STEPS: + if nums[step_name] > 0: + prnt(' _cffi_%ss,' % step_name) + else: + prnt(' NULL, /* no %ss */' % step_name) + for step_name in self.ALL_STEPS: + if step_name != "field": + prnt(' %d, /* num_%ss */' % (nums[step_name], step_name)) + if self.ffi._included_ffis: + prnt(' _cffi_includes,') + else: + prnt(' NULL, /* no includes */') + prnt(' %d, /* num_types */' % (len(self.cffi_types),)) + flags = 0 + if self._num_externpy > 0 or self.ffi._embedding is not None: + flags |= 1 # set to mean that we use extern "Python" + prnt(' %d, /* flags */' % flags) + prnt('};') + prnt() + # + # the init function + prnt('#ifdef __GNUC__') + prnt('# pragma GCC visibility push(default) /* for -fvisibility= */') + prnt('#endif') + prnt() + prnt('#ifdef PYPY_VERSION') + prnt('PyMODINIT_FUNC') + prnt('_cffi_pypyinit_%s(const void *p[])' % (base_module_name,)) + prnt('{') + if flags & 1: + prnt(' if (((intptr_t)p[0]) >= 0x0A03) {') + prnt(' _cffi_call_python_org = ' + '(void(*)(struct _cffi_externpy_s *, char *))p[1];') + prnt(' }') + prnt(' p[0] = (const void *)0x%x;' % self._version) + prnt(' p[1] = &_cffi_type_context;') + prnt('#if PY_MAJOR_VERSION >= 3') + prnt(' return NULL;') + prnt('#endif') + prnt('}') + # on Windows, distutils insists on putting init_cffi_xyz in + # 'export_symbols', so instead of fighting it, just give up and + # give it one + prnt('# ifdef _MSC_VER') + prnt(' PyMODINIT_FUNC') + prnt('# if PY_MAJOR_VERSION >= 3') + prnt(' PyInit_%s(void) { return NULL; }' % (base_module_name,)) + prnt('# else') + prnt(' init%s(void) { }' % (base_module_name,)) + prnt('# endif') + prnt('# endif') + prnt('#elif PY_MAJOR_VERSION >= 3') + prnt('PyMODINIT_FUNC') + prnt('PyInit_%s(void)' % (base_module_name,)) + prnt('{') + prnt(' return _cffi_init("%s", 0x%x, &_cffi_type_context);' % ( + self.module_name, self._version)) + prnt('}') + prnt('#else') + prnt('PyMODINIT_FUNC') + prnt('init%s(void)' % (base_module_name,)) + prnt('{') + prnt(' _cffi_init("%s", 0x%x, &_cffi_type_context);' % ( + self.module_name, self._version)) + prnt('}') + prnt('#endif') + prnt() + prnt('#ifdef __GNUC__') + prnt('# pragma GCC visibility pop') + prnt('#endif') + self._version = None + + def _to_py(self, x): + if isinstance(x, str): + return "b'%s'" % (x,) + if isinstance(x, (list, tuple)): + rep = [self._to_py(item) for item in x] + if len(rep) == 1: + rep.append('') + return "(%s)" % (','.join(rep),) + return x.as_python_expr() # Py2: unicode unexpected; Py3: bytes unexp. + + def write_py_source_to_f(self, f): + self._f = f + prnt = self._prnt + # + # header + prnt("# auto-generated file") + prnt("import _cffi_backend") + # + # the 'import' of the included ffis + num_includes = len(self.ffi._included_ffis or ()) + for i in range(num_includes): + ffi_to_include = self.ffi._included_ffis[i] + try: + included_module_name, included_source = ( + ffi_to_include._assigned_source[:2]) + except AttributeError: + raise VerificationError( + "ffi object %r includes %r, but the latter has not " + "been prepared with set_source()" % ( + self.ffi, ffi_to_include,)) + if included_source is not None: + raise VerificationError( + "not implemented yet: ffi.include() of a C-based " + "ffi inside a Python-based ffi") + prnt('from %s import ffi as _ffi%d' % (included_module_name, i)) + prnt() + prnt("ffi = _cffi_backend.FFI('%s'," % (self.module_name,)) + prnt(" _version = 0x%x," % (self._version,)) + self._version = None + # + # the '_types' keyword argument + self.cffi_types = tuple(self.cffi_types) # don't change any more + types_lst = [op.as_python_bytes() for op in self.cffi_types] + prnt(' _types = %s,' % (self._to_py(''.join(types_lst)),)) + typeindex2type = dict([(i, tp) for (tp, i) in self._typesdict.items()]) + # + # the keyword arguments from ALL_STEPS + for step_name in self.ALL_STEPS: + lst = self._lsts[step_name] + if len(lst) > 0 and step_name != "field": + prnt(' _%ss = %s,' % (step_name, self._to_py(lst))) + # + # the '_includes' keyword argument + if num_includes > 0: + prnt(' _includes = (%s,),' % ( + ', '.join(['_ffi%d' % i for i in range(num_includes)]),)) + # + # the footer + prnt(')') + + # ---------- + + def _gettypenum(self, type): + # a KeyError here is a bug. please report it! :-) + return self._typesdict[type] + + def _convert_funcarg_to_c(self, tp, fromvar, tovar, errcode): + extraarg = '' + if isinstance(tp, model.BasePrimitiveType) and not tp.is_complex_type(): + if tp.is_integer_type() and tp.name != '_Bool': + converter = '_cffi_to_c_int' + extraarg = ', %s' % tp.name + elif isinstance(tp, model.UnknownFloatType): + # don't check with is_float_type(): it may be a 'long + # double' here, and _cffi_to_c_double would loose precision + converter = '(%s)_cffi_to_c_double' % (tp.get_c_name(''),) + else: + cname = tp.get_c_name('') + converter = '(%s)_cffi_to_c_%s' % (cname, + tp.name.replace(' ', '_')) + if cname in ('char16_t', 'char32_t'): + self.needs_version(VERSION_CHAR16CHAR32) + errvalue = '-1' + # + elif isinstance(tp, model.PointerType): + self._convert_funcarg_to_c_ptr_or_array(tp, fromvar, + tovar, errcode) + return + # + elif (isinstance(tp, model.StructOrUnionOrEnum) or + isinstance(tp, model.BasePrimitiveType)): + # a struct (not a struct pointer) as a function argument; + # or, a complex (the same code works) + self._prnt(' if (_cffi_to_c((char *)&%s, _cffi_type(%d), %s) < 0)' + % (tovar, self._gettypenum(tp), fromvar)) + self._prnt(' %s;' % errcode) + return + # + elif isinstance(tp, model.FunctionPtrType): + converter = '(%s)_cffi_to_c_pointer' % tp.get_c_name('') + extraarg = ', _cffi_type(%d)' % self._gettypenum(tp) + errvalue = 'NULL' + # + else: + raise NotImplementedError(tp) + # + self._prnt(' %s = %s(%s%s);' % (tovar, converter, fromvar, extraarg)) + self._prnt(' if (%s == (%s)%s && PyErr_Occurred())' % ( + tovar, tp.get_c_name(''), errvalue)) + self._prnt(' %s;' % errcode) + + def _extra_local_variables(self, tp, localvars, freelines): + if isinstance(tp, model.PointerType): + localvars.add('Py_ssize_t datasize') + localvars.add('struct _cffi_freeme_s *large_args_free = NULL') + freelines.add('if (large_args_free != NULL)' + ' _cffi_free_array_arguments(large_args_free);') + + def _convert_funcarg_to_c_ptr_or_array(self, tp, fromvar, tovar, errcode): + self._prnt(' datasize = _cffi_prepare_pointer_call_argument(') + self._prnt(' _cffi_type(%d), %s, (char **)&%s);' % ( + self._gettypenum(tp), fromvar, tovar)) + self._prnt(' if (datasize != 0) {') + self._prnt(' %s = ((size_t)datasize) <= 640 ? ' + '(%s)alloca((size_t)datasize) : NULL;' % ( + tovar, tp.get_c_name(''))) + self._prnt(' if (_cffi_convert_array_argument(_cffi_type(%d), %s, ' + '(char **)&%s,' % (self._gettypenum(tp), fromvar, tovar)) + self._prnt(' datasize, &large_args_free) < 0)') + self._prnt(' %s;' % errcode) + self._prnt(' }') + + def _convert_expr_from_c(self, tp, var, context): + if isinstance(tp, model.BasePrimitiveType): + if tp.is_integer_type() and tp.name != '_Bool': + return '_cffi_from_c_int(%s, %s)' % (var, tp.name) + elif isinstance(tp, model.UnknownFloatType): + return '_cffi_from_c_double(%s)' % (var,) + elif tp.name != 'long double' and not tp.is_complex_type(): + cname = tp.name.replace(' ', '_') + if cname in ('char16_t', 'char32_t'): + self.needs_version(VERSION_CHAR16CHAR32) + return '_cffi_from_c_%s(%s)' % (cname, var) + else: + return '_cffi_from_c_deref((char *)&%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + elif isinstance(tp, (model.PointerType, model.FunctionPtrType)): + return '_cffi_from_c_pointer((char *)%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + elif isinstance(tp, model.ArrayType): + return '_cffi_from_c_pointer((char *)%s, _cffi_type(%d))' % ( + var, self._gettypenum(model.PointerType(tp.item))) + elif isinstance(tp, model.StructOrUnion): + if tp.fldnames is None: + raise TypeError("'%s' is used as %s, but is opaque" % ( + tp._get_c_name(), context)) + return '_cffi_from_c_struct((char *)&%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + elif isinstance(tp, model.EnumType): + return '_cffi_from_c_deref((char *)&%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + else: + raise NotImplementedError(tp) + + # ---------- + # typedefs + + def _typedef_type(self, tp, name): + return self._global_type(tp, "(*(%s *)0)" % (name,)) + + def _generate_cpy_typedef_collecttype(self, tp, name): + self._do_collect_type(self._typedef_type(tp, name)) + + def _generate_cpy_typedef_decl(self, tp, name): + pass + + def _typedef_ctx(self, tp, name): + type_index = self._typesdict[tp] + self._lsts["typename"].append(TypenameExpr(name, type_index)) + + def _generate_cpy_typedef_ctx(self, tp, name): + tp = self._typedef_type(tp, name) + self._typedef_ctx(tp, name) + if getattr(tp, "origin", None) == "unknown_type": + self._struct_ctx(tp, tp.name, approxname=None) + elif isinstance(tp, model.NamedPointerType): + self._struct_ctx(tp.totype, tp.totype.name, approxname=tp.name, + named_ptr=tp) + + # ---------- + # function declarations + + def _generate_cpy_function_collecttype(self, tp, name): + self._do_collect_type(tp.as_raw_function()) + if tp.ellipsis and not self.target_is_python: + self._do_collect_type(tp) + + def _generate_cpy_function_decl(self, tp, name): + assert not self.target_is_python + assert isinstance(tp, model.FunctionPtrType) + if tp.ellipsis: + # cannot support vararg functions better than this: check for its + # exact type (including the fixed arguments), and build it as a + # constant function pointer (no CPython wrapper) + self._generate_cpy_constant_decl(tp, name) + return + prnt = self._prnt + numargs = len(tp.args) + if numargs == 0: + argname = 'noarg' + elif numargs == 1: + argname = 'arg0' + else: + argname = 'args' + # + # ------------------------------ + # the 'd' version of the function, only for addressof(lib, 'func') + arguments = [] + call_arguments = [] + context = 'argument of %s' % name + for i, type in enumerate(tp.args): + arguments.append(type.get_c_name(' x%d' % i, context)) + call_arguments.append('x%d' % i) + repr_arguments = ', '.join(arguments) + repr_arguments = repr_arguments or 'void' + if tp.abi: + abi = tp.abi + ' ' + else: + abi = '' + name_and_arguments = '%s_cffi_d_%s(%s)' % (abi, name, repr_arguments) + prnt('static %s' % (tp.result.get_c_name(name_and_arguments),)) + prnt('{') + call_arguments = ', '.join(call_arguments) + result_code = 'return ' + if isinstance(tp.result, model.VoidType): + result_code = '' + prnt(' %s%s(%s);' % (result_code, name, call_arguments)) + prnt('}') + # + prnt('#ifndef PYPY_VERSION') # ------------------------------ + # + prnt('static PyObject *') + prnt('_cffi_f_%s(PyObject *self, PyObject *%s)' % (name, argname)) + prnt('{') + # + context = 'argument of %s' % name + for i, type in enumerate(tp.args): + arg = type.get_c_name(' x%d' % i, context) + prnt(' %s;' % arg) + # + localvars = set() + freelines = set() + for type in tp.args: + self._extra_local_variables(type, localvars, freelines) + for decl in sorted(localvars): + prnt(' %s;' % (decl,)) + # + if not isinstance(tp.result, model.VoidType): + result_code = 'result = ' + context = 'result of %s' % name + result_decl = ' %s;' % tp.result.get_c_name(' result', context) + prnt(result_decl) + prnt(' PyObject *pyresult;') + else: + result_decl = None + result_code = '' + # + if len(tp.args) > 1: + rng = range(len(tp.args)) + for i in rng: + prnt(' PyObject *arg%d;' % i) + prnt() + prnt(' if (!PyArg_UnpackTuple(args, "%s", %d, %d, %s))' % ( + name, len(rng), len(rng), + ', '.join(['&arg%d' % i for i in rng]))) + prnt(' return NULL;') + prnt() + # + for i, type in enumerate(tp.args): + self._convert_funcarg_to_c(type, 'arg%d' % i, 'x%d' % i, + 'return NULL') + prnt() + # + prnt(' Py_BEGIN_ALLOW_THREADS') + prnt(' _cffi_restore_errno();') + call_arguments = ['x%d' % i for i in range(len(tp.args))] + call_arguments = ', '.join(call_arguments) + prnt(' { %s%s(%s); }' % (result_code, name, call_arguments)) + prnt(' _cffi_save_errno();') + prnt(' Py_END_ALLOW_THREADS') + prnt() + # + prnt(' (void)self; /* unused */') + if numargs == 0: + prnt(' (void)noarg; /* unused */') + if result_code: + prnt(' pyresult = %s;' % + self._convert_expr_from_c(tp.result, 'result', 'result type')) + for freeline in freelines: + prnt(' ' + freeline) + prnt(' return pyresult;') + else: + for freeline in freelines: + prnt(' ' + freeline) + prnt(' Py_INCREF(Py_None);') + prnt(' return Py_None;') + prnt('}') + # + prnt('#else') # ------------------------------ + # + # the PyPy version: need to replace struct/union arguments with + # pointers, and if the result is a struct/union, insert a first + # arg that is a pointer to the result. We also do that for + # complex args and return type. + def need_indirection(type): + return (isinstance(type, model.StructOrUnion) or + (isinstance(type, model.PrimitiveType) and + type.is_complex_type())) + difference = False + arguments = [] + call_arguments = [] + context = 'argument of %s' % name + for i, type in enumerate(tp.args): + indirection = '' + if need_indirection(type): + indirection = '*' + difference = True + arg = type.get_c_name(' %sx%d' % (indirection, i), context) + arguments.append(arg) + call_arguments.append('%sx%d' % (indirection, i)) + tp_result = tp.result + if need_indirection(tp_result): + context = 'result of %s' % name + arg = tp_result.get_c_name(' *result', context) + arguments.insert(0, arg) + tp_result = model.void_type + result_decl = None + result_code = '*result = ' + difference = True + if difference: + repr_arguments = ', '.join(arguments) + repr_arguments = repr_arguments or 'void' + name_and_arguments = '%s_cffi_f_%s(%s)' % (abi, name, + repr_arguments) + prnt('static %s' % (tp_result.get_c_name(name_and_arguments),)) + prnt('{') + if result_decl: + prnt(result_decl) + call_arguments = ', '.join(call_arguments) + prnt(' { %s%s(%s); }' % (result_code, name, call_arguments)) + if result_decl: + prnt(' return result;') + prnt('}') + else: + prnt('# define _cffi_f_%s _cffi_d_%s' % (name, name)) + # + prnt('#endif') # ------------------------------ + prnt() + + def _generate_cpy_function_ctx(self, tp, name): + if tp.ellipsis and not self.target_is_python: + self._generate_cpy_constant_ctx(tp, name) + return + type_index = self._typesdict[tp.as_raw_function()] + numargs = len(tp.args) + if self.target_is_python: + meth_kind = OP_DLOPEN_FUNC + elif numargs == 0: + meth_kind = OP_CPYTHON_BLTN_N # 'METH_NOARGS' + elif numargs == 1: + meth_kind = OP_CPYTHON_BLTN_O # 'METH_O' + else: + meth_kind = OP_CPYTHON_BLTN_V # 'METH_VARARGS' + self._lsts["global"].append( + GlobalExpr(name, '_cffi_f_%s' % name, + CffiOp(meth_kind, type_index), + size='_cffi_d_%s' % name)) + + # ---------- + # named structs or unions + + def _field_type(self, tp_struct, field_name, tp_field): + if isinstance(tp_field, model.ArrayType): + actual_length = tp_field.length + if actual_length == '...': + ptr_struct_name = tp_struct.get_c_name('*') + actual_length = '_cffi_array_len(((%s)0)->%s)' % ( + ptr_struct_name, field_name) + tp_item = self._field_type(tp_struct, '%s[0]' % field_name, + tp_field.item) + tp_field = model.ArrayType(tp_item, actual_length) + return tp_field + + def _struct_collecttype(self, tp): + self._do_collect_type(tp) + if self.target_is_python: + # also requires nested anon struct/unions in ABI mode, recursively + for fldtype in tp.anonymous_struct_fields(): + self._struct_collecttype(fldtype) + + def _struct_decl(self, tp, cname, approxname): + if tp.fldtypes is None: + return + prnt = self._prnt + checkfuncname = '_cffi_checkfld_%s' % (approxname,) + prnt('_CFFI_UNUSED_FN') + prnt('static void %s(%s *p)' % (checkfuncname, cname)) + prnt('{') + prnt(' /* only to generate compile-time warnings or errors */') + prnt(' (void)p;') + for fname, ftype, fbitsize, fqual in self._enum_fields(tp): + try: + if ftype.is_integer_type() or fbitsize >= 0: + # accept all integers, but complain on float or double + if fname != '': + prnt(" (void)((p->%s) | 0); /* check that '%s.%s' is " + "an integer */" % (fname, cname, fname)) + continue + # only accept exactly the type declared, except that '[]' + # is interpreted as a '*' and so will match any array length. + # (It would also match '*', but that's harder to detect...) + while (isinstance(ftype, model.ArrayType) + and (ftype.length is None or ftype.length == '...')): + ftype = ftype.item + fname = fname + '[0]' + prnt(' { %s = &p->%s; (void)tmp; }' % ( + ftype.get_c_name('*tmp', 'field %r'%fname, quals=fqual), + fname)) + except VerificationError as e: + prnt(' /* %s */' % str(e)) # cannot verify it, ignore + prnt('}') + prnt('struct _cffi_align_%s { char x; %s y; };' % (approxname, cname)) + prnt() + + def _struct_ctx(self, tp, cname, approxname, named_ptr=None): + type_index = self._typesdict[tp] + reason_for_not_expanding = None + flags = [] + if isinstance(tp, model.UnionType): + flags.append("_CFFI_F_UNION") + if tp.fldtypes is None: + flags.append("_CFFI_F_OPAQUE") + reason_for_not_expanding = "opaque" + if (tp not in self.ffi._parser._included_declarations and + (named_ptr is None or + named_ptr not in self.ffi._parser._included_declarations)): + if tp.fldtypes is None: + pass # opaque + elif tp.partial or any(tp.anonymous_struct_fields()): + pass # field layout obtained silently from the C compiler + else: + flags.append("_CFFI_F_CHECK_FIELDS") + if tp.packed: + if tp.packed > 1: + raise NotImplementedError( + "%r is declared with 'pack=%r'; only 0 or 1 are " + "supported in API mode (try to use \"...;\", which " + "does not require a 'pack' declaration)" % + (tp, tp.packed)) + flags.append("_CFFI_F_PACKED") + else: + flags.append("_CFFI_F_EXTERNAL") + reason_for_not_expanding = "external" + flags = '|'.join(flags) or '0' + c_fields = [] + if reason_for_not_expanding is None: + enumfields = list(self._enum_fields(tp)) + for fldname, fldtype, fbitsize, fqual in enumfields: + fldtype = self._field_type(tp, fldname, fldtype) + self._check_not_opaque(fldtype, + "field '%s.%s'" % (tp.name, fldname)) + # cname is None for _add_missing_struct_unions() only + op = OP_NOOP + if fbitsize >= 0: + op = OP_BITFIELD + size = '%d /* bits */' % fbitsize + elif cname is None or ( + isinstance(fldtype, model.ArrayType) and + fldtype.length is None): + size = '(size_t)-1' + else: + size = 'sizeof(((%s)0)->%s)' % ( + tp.get_c_name('*') if named_ptr is None + else named_ptr.name, + fldname) + if cname is None or fbitsize >= 0: + offset = '(size_t)-1' + elif named_ptr is not None: + offset = '(size_t)(((char *)&((%s)4096)->%s) - (char *)4096)' % ( + named_ptr.name, fldname) + else: + offset = 'offsetof(%s, %s)' % (tp.get_c_name(''), fldname) + c_fields.append( + FieldExpr(fldname, offset, size, fbitsize, + CffiOp(op, self._typesdict[fldtype]))) + first_field_index = len(self._lsts["field"]) + self._lsts["field"].extend(c_fields) + # + if cname is None: # unknown name, for _add_missing_struct_unions + size = '(size_t)-2' + align = -2 + comment = "unnamed" + else: + if named_ptr is not None: + size = 'sizeof(*(%s)0)' % (named_ptr.name,) + align = '-1 /* unknown alignment */' + else: + size = 'sizeof(%s)' % (cname,) + align = 'offsetof(struct _cffi_align_%s, y)' % (approxname,) + comment = None + else: + size = '(size_t)-1' + align = -1 + first_field_index = -1 + comment = reason_for_not_expanding + self._lsts["struct_union"].append( + StructUnionExpr(tp.name, type_index, flags, size, align, comment, + first_field_index, c_fields)) + self._seen_struct_unions.add(tp) + + def _check_not_opaque(self, tp, location): + while isinstance(tp, model.ArrayType): + tp = tp.item + if isinstance(tp, model.StructOrUnion) and tp.fldtypes is None: + raise TypeError( + "%s is of an opaque type (not declared in cdef())" % location) + + def _add_missing_struct_unions(self): + # not very nice, but some struct declarations might be missing + # because they don't have any known C name. Check that they are + # not partial (we can't complete or verify them!) and emit them + # anonymously. + lst = list(self._struct_unions.items()) + lst.sort(key=lambda tp_order: tp_order[1]) + for tp, order in lst: + if tp not in self._seen_struct_unions: + if tp.partial: + raise NotImplementedError("internal inconsistency: %r is " + "partial but was not seen at " + "this point" % (tp,)) + if tp.name.startswith('$') and tp.name[1:].isdigit(): + approxname = tp.name[1:] + elif tp.name == '_IO_FILE' and tp.forcename == 'FILE': + approxname = 'FILE' + self._typedef_ctx(tp, 'FILE') + else: + raise NotImplementedError("internal inconsistency: %r" % + (tp,)) + self._struct_ctx(tp, None, approxname) + + def _generate_cpy_struct_collecttype(self, tp, name): + self._struct_collecttype(tp) + _generate_cpy_union_collecttype = _generate_cpy_struct_collecttype + + def _struct_names(self, tp): + cname = tp.get_c_name('') + if ' ' in cname: + return cname, cname.replace(' ', '_') + else: + return cname, '_' + cname + + def _generate_cpy_struct_decl(self, tp, name): + self._struct_decl(tp, *self._struct_names(tp)) + _generate_cpy_union_decl = _generate_cpy_struct_decl + + def _generate_cpy_struct_ctx(self, tp, name): + self._struct_ctx(tp, *self._struct_names(tp)) + _generate_cpy_union_ctx = _generate_cpy_struct_ctx + + # ---------- + # 'anonymous' declarations. These are produced for anonymous structs + # or unions; the 'name' is obtained by a typedef. + + def _generate_cpy_anonymous_collecttype(self, tp, name): + if isinstance(tp, model.EnumType): + self._generate_cpy_enum_collecttype(tp, name) + else: + self._struct_collecttype(tp) + + def _generate_cpy_anonymous_decl(self, tp, name): + if isinstance(tp, model.EnumType): + self._generate_cpy_enum_decl(tp) + else: + self._struct_decl(tp, name, 'typedef_' + name) + + def _generate_cpy_anonymous_ctx(self, tp, name): + if isinstance(tp, model.EnumType): + self._enum_ctx(tp, name) + else: + self._struct_ctx(tp, name, 'typedef_' + name) + + # ---------- + # constants, declared with "static const ..." + + def _generate_cpy_const(self, is_int, name, tp=None, category='const', + check_value=None): + if (category, name) in self._seen_constants: + raise VerificationError( + "duplicate declaration of %s '%s'" % (category, name)) + self._seen_constants.add((category, name)) + # + prnt = self._prnt + funcname = '_cffi_%s_%s' % (category, name) + if is_int: + prnt('static int %s(unsigned long long *o)' % funcname) + prnt('{') + prnt(' int n = (%s) <= 0;' % (name,)) + prnt(' *o = (unsigned long long)((%s) | 0);' + ' /* check that %s is an integer */' % (name, name)) + if check_value is not None: + if check_value > 0: + check_value = '%dU' % (check_value,) + prnt(' if (!_cffi_check_int(*o, n, %s))' % (check_value,)) + prnt(' n |= 2;') + prnt(' return n;') + prnt('}') + else: + assert check_value is None + prnt('static void %s(char *o)' % funcname) + prnt('{') + prnt(' *(%s)o = %s;' % (tp.get_c_name('*'), name)) + prnt('}') + prnt() + + def _generate_cpy_constant_collecttype(self, tp, name): + is_int = tp.is_integer_type() + if not is_int or self.target_is_python: + self._do_collect_type(tp) + + def _generate_cpy_constant_decl(self, tp, name): + is_int = tp.is_integer_type() + self._generate_cpy_const(is_int, name, tp) + + def _generate_cpy_constant_ctx(self, tp, name): + if not self.target_is_python and tp.is_integer_type(): + type_op = CffiOp(OP_CONSTANT_INT, -1) + else: + if self.target_is_python: + const_kind = OP_DLOPEN_CONST + else: + const_kind = OP_CONSTANT + type_index = self._typesdict[tp] + type_op = CffiOp(const_kind, type_index) + self._lsts["global"].append( + GlobalExpr(name, '_cffi_const_%s' % name, type_op)) + + # ---------- + # enums + + def _generate_cpy_enum_collecttype(self, tp, name): + self._do_collect_type(tp) + + def _generate_cpy_enum_decl(self, tp, name=None): + for enumerator in tp.enumerators: + self._generate_cpy_const(True, enumerator) + + def _enum_ctx(self, tp, cname): + type_index = self._typesdict[tp] + type_op = CffiOp(OP_ENUM, -1) + if self.target_is_python: + tp.check_not_partial() + for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): + self._lsts["global"].append( + GlobalExpr(enumerator, '_cffi_const_%s' % enumerator, type_op, + check_value=enumvalue)) + # + if cname is not None and '$' not in cname and not self.target_is_python: + size = "sizeof(%s)" % cname + signed = "((%s)-1) <= 0" % cname + else: + basetp = tp.build_baseinttype(self.ffi, []) + size = self.ffi.sizeof(basetp) + signed = int(int(self.ffi.cast(basetp, -1)) < 0) + allenums = ",".join(tp.enumerators) + self._lsts["enum"].append( + EnumExpr(tp.name, type_index, size, signed, allenums)) + + def _generate_cpy_enum_ctx(self, tp, name): + self._enum_ctx(tp, tp._get_c_name()) + + # ---------- + # macros: for now only for integers + + def _generate_cpy_macro_collecttype(self, tp, name): + pass + + def _generate_cpy_macro_decl(self, tp, name): + if tp == '...': + check_value = None + else: + check_value = tp # an integer + self._generate_cpy_const(True, name, check_value=check_value) + + def _generate_cpy_macro_ctx(self, tp, name): + if tp == '...': + if self.target_is_python: + raise VerificationError( + "cannot use the syntax '...' in '#define %s ...' when " + "using the ABI mode" % (name,)) + check_value = None + else: + check_value = tp # an integer + type_op = CffiOp(OP_CONSTANT_INT, -1) + self._lsts["global"].append( + GlobalExpr(name, '_cffi_const_%s' % name, type_op, + check_value=check_value)) + + # ---------- + # global variables + + def _global_type(self, tp, global_name): + if isinstance(tp, model.ArrayType): + actual_length = tp.length + if actual_length == '...': + actual_length = '_cffi_array_len(%s)' % (global_name,) + tp_item = self._global_type(tp.item, '%s[0]' % global_name) + tp = model.ArrayType(tp_item, actual_length) + return tp + + def _generate_cpy_variable_collecttype(self, tp, name): + self._do_collect_type(self._global_type(tp, name)) + + def _generate_cpy_variable_decl(self, tp, name): + prnt = self._prnt + tp = self._global_type(tp, name) + if isinstance(tp, model.ArrayType) and tp.length is None: + tp = tp.item + ampersand = '' + else: + ampersand = '&' + # This code assumes that casts from "tp *" to "void *" is a + # no-op, i.e. a function that returns a "tp *" can be called + # as if it returned a "void *". This should be generally true + # on any modern machine. The only exception to that rule (on + # uncommon architectures, and as far as I can tell) might be + # if 'tp' were a function type, but that is not possible here. + # (If 'tp' is a function _pointer_ type, then casts from "fn_t + # **" to "void *" are again no-ops, as far as I can tell.) + decl = '*_cffi_var_%s(void)' % (name,) + prnt('static ' + tp.get_c_name(decl, quals=self._current_quals)) + prnt('{') + prnt(' return %s(%s);' % (ampersand, name)) + prnt('}') + prnt() + + def _generate_cpy_variable_ctx(self, tp, name): + tp = self._global_type(tp, name) + type_index = self._typesdict[tp] + if self.target_is_python: + op = OP_GLOBAL_VAR + else: + op = OP_GLOBAL_VAR_F + self._lsts["global"].append( + GlobalExpr(name, '_cffi_var_%s' % name, CffiOp(op, type_index))) + + # ---------- + # extern "Python" + + def _generate_cpy_extern_python_collecttype(self, tp, name): + assert isinstance(tp, model.FunctionPtrType) + self._do_collect_type(tp) + _generate_cpy_dllexport_python_collecttype = \ + _generate_cpy_extern_python_plus_c_collecttype = \ + _generate_cpy_extern_python_collecttype + + def _extern_python_decl(self, tp, name, tag_and_space): + prnt = self._prnt + if isinstance(tp.result, model.VoidType): + size_of_result = '0' + else: + context = 'result of %s' % name + size_of_result = '(int)sizeof(%s)' % ( + tp.result.get_c_name('', context),) + prnt('static struct _cffi_externpy_s _cffi_externpy__%s =' % name) + prnt(' { "%s.%s", %s, 0, 0 };' % ( + self.module_name, name, size_of_result)) + prnt() + # + arguments = [] + context = 'argument of %s' % name + for i, type in enumerate(tp.args): + arg = type.get_c_name(' a%d' % i, context) + arguments.append(arg) + # + repr_arguments = ', '.join(arguments) + repr_arguments = repr_arguments or 'void' + name_and_arguments = '%s(%s)' % (name, repr_arguments) + if tp.abi == "__stdcall": + name_and_arguments = '_cffi_stdcall ' + name_and_arguments + # + def may_need_128_bits(tp): + return (isinstance(tp, model.PrimitiveType) and + tp.name == 'long double') + # + size_of_a = max(len(tp.args)*8, 8) + if may_need_128_bits(tp.result): + size_of_a = max(size_of_a, 16) + if isinstance(tp.result, model.StructOrUnion): + size_of_a = 'sizeof(%s) > %d ? sizeof(%s) : %d' % ( + tp.result.get_c_name(''), size_of_a, + tp.result.get_c_name(''), size_of_a) + prnt('%s%s' % (tag_and_space, tp.result.get_c_name(name_and_arguments))) + prnt('{') + prnt(' char a[%s];' % size_of_a) + prnt(' char *p = a;') + for i, type in enumerate(tp.args): + arg = 'a%d' % i + if (isinstance(type, model.StructOrUnion) or + may_need_128_bits(type)): + arg = '&' + arg + type = model.PointerType(type) + prnt(' *(%s)(p + %d) = %s;' % (type.get_c_name('*'), i*8, arg)) + prnt(' _cffi_call_python(&_cffi_externpy__%s, p);' % name) + if not isinstance(tp.result, model.VoidType): + prnt(' return *(%s)p;' % (tp.result.get_c_name('*'),)) + prnt('}') + prnt() + self._num_externpy += 1 + + def _generate_cpy_extern_python_decl(self, tp, name): + self._extern_python_decl(tp, name, 'static ') + + def _generate_cpy_dllexport_python_decl(self, tp, name): + self._extern_python_decl(tp, name, 'CFFI_DLLEXPORT ') + + def _generate_cpy_extern_python_plus_c_decl(self, tp, name): + self._extern_python_decl(tp, name, '') + + def _generate_cpy_extern_python_ctx(self, tp, name): + if self.target_is_python: + raise VerificationError( + "cannot use 'extern \"Python\"' in the ABI mode") + if tp.ellipsis: + raise NotImplementedError("a vararg function is extern \"Python\"") + type_index = self._typesdict[tp] + type_op = CffiOp(OP_EXTERN_PYTHON, type_index) + self._lsts["global"].append( + GlobalExpr(name, '&_cffi_externpy__%s' % name, type_op, name)) + + _generate_cpy_dllexport_python_ctx = \ + _generate_cpy_extern_python_plus_c_ctx = \ + _generate_cpy_extern_python_ctx + + def _print_string_literal_in_array(self, s): + prnt = self._prnt + prnt('// # NB. this is not a string because of a size limit in MSVC') + if not isinstance(s, bytes): # unicode + s = s.encode('utf-8') # -> bytes + else: + s.decode('utf-8') # got bytes, check for valid utf-8 + try: + s.decode('ascii') + except UnicodeDecodeError: + s = b'# -*- encoding: utf8 -*-\n' + s + for line in s.splitlines(True): + comment = line + if type('//') is bytes: # python2 + line = map(ord, line) # make a list of integers + else: # python3 + # type(line) is bytes, which enumerates like a list of integers + comment = ascii(comment)[1:-1] + prnt(('// ' + comment).rstrip()) + printed_line = '' + for c in line: + if len(printed_line) >= 76: + prnt(printed_line) + printed_line = '' + printed_line += '%d,' % (c,) + prnt(printed_line) + + # ---------- + # emitting the opcodes for individual types + + def _emit_bytecode_VoidType(self, tp, index): + self.cffi_types[index] = CffiOp(OP_PRIMITIVE, PRIM_VOID) + + def _emit_bytecode_PrimitiveType(self, tp, index): + prim_index = PRIMITIVE_TO_INDEX[tp.name] + self.cffi_types[index] = CffiOp(OP_PRIMITIVE, prim_index) + + def _emit_bytecode_UnknownIntegerType(self, tp, index): + s = ('_cffi_prim_int(sizeof(%s), (\n' + ' ((%s)-1) | 0 /* check that %s is an integer type */\n' + ' ) <= 0)' % (tp.name, tp.name, tp.name)) + self.cffi_types[index] = CffiOp(OP_PRIMITIVE, s) + + def _emit_bytecode_UnknownFloatType(self, tp, index): + s = ('_cffi_prim_float(sizeof(%s) *\n' + ' (((%s)1) / 2) * 2 /* integer => 0, float => 1 */\n' + ' )' % (tp.name, tp.name)) + self.cffi_types[index] = CffiOp(OP_PRIMITIVE, s) + + def _emit_bytecode_RawFunctionType(self, tp, index): + self.cffi_types[index] = CffiOp(OP_FUNCTION, self._typesdict[tp.result]) + index += 1 + for tp1 in tp.args: + realindex = self._typesdict[tp1] + if index != realindex: + if isinstance(tp1, model.PrimitiveType): + self._emit_bytecode_PrimitiveType(tp1, index) + else: + self.cffi_types[index] = CffiOp(OP_NOOP, realindex) + index += 1 + flags = int(tp.ellipsis) + if tp.abi is not None: + if tp.abi == '__stdcall': + flags |= 2 + else: + raise NotImplementedError("abi=%r" % (tp.abi,)) + self.cffi_types[index] = CffiOp(OP_FUNCTION_END, flags) + + def _emit_bytecode_PointerType(self, tp, index): + self.cffi_types[index] = CffiOp(OP_POINTER, self._typesdict[tp.totype]) + + _emit_bytecode_ConstPointerType = _emit_bytecode_PointerType + _emit_bytecode_NamedPointerType = _emit_bytecode_PointerType + + def _emit_bytecode_FunctionPtrType(self, tp, index): + raw = tp.as_raw_function() + self.cffi_types[index] = CffiOp(OP_POINTER, self._typesdict[raw]) + + def _emit_bytecode_ArrayType(self, tp, index): + item_index = self._typesdict[tp.item] + if tp.length is None: + self.cffi_types[index] = CffiOp(OP_OPEN_ARRAY, item_index) + elif tp.length == '...': + raise VerificationError( + "type %s badly placed: the '...' array length can only be " + "used on global arrays or on fields of structures" % ( + str(tp).replace('/*...*/', '...'),)) + else: + assert self.cffi_types[index + 1] == 'LEN' + self.cffi_types[index] = CffiOp(OP_ARRAY, item_index) + self.cffi_types[index + 1] = CffiOp(None, str(tp.length)) + + def _emit_bytecode_StructType(self, tp, index): + struct_index = self._struct_unions[tp] + self.cffi_types[index] = CffiOp(OP_STRUCT_UNION, struct_index) + _emit_bytecode_UnionType = _emit_bytecode_StructType + + def _emit_bytecode_EnumType(self, tp, index): + enum_index = self._enums[tp] + self.cffi_types[index] = CffiOp(OP_ENUM, enum_index) + + +if sys.version_info >= (3,): + NativeIO = io.StringIO +else: + class NativeIO(io.BytesIO): + def write(self, s): + if isinstance(s, unicode): + s = s.encode('ascii') + super(NativeIO, self).write(s) + +def _is_file_like(maybefile): + # compare to xml.etree.ElementTree._get_writer + return hasattr(maybefile, 'write') + +def _make_c_or_py_source(ffi, module_name, preamble, target_file, verbose): + if verbose: + print("generating %s" % (target_file,)) + recompiler = Recompiler(ffi, module_name, + target_is_python=(preamble is None)) + recompiler.collect_type_table() + recompiler.collect_step_tables() + if _is_file_like(target_file): + recompiler.write_source_to_f(target_file, preamble) + return True + f = NativeIO() + recompiler.write_source_to_f(f, preamble) + output = f.getvalue() + try: + with open(target_file, 'r') as f1: + if f1.read(len(output) + 1) != output: + raise IOError + if verbose: + print("(already up-to-date)") + return False # already up-to-date + except IOError: + tmp_file = '%s.~%d' % (target_file, os.getpid()) + with open(tmp_file, 'w') as f1: + f1.write(output) + try: + os.rename(tmp_file, target_file) + except OSError: + os.unlink(target_file) + os.rename(tmp_file, target_file) + return True + +def make_c_source(ffi, module_name, preamble, target_c_file, verbose=False): + assert preamble is not None + return _make_c_or_py_source(ffi, module_name, preamble, target_c_file, + verbose) + +def make_py_source(ffi, module_name, target_py_file, verbose=False): + return _make_c_or_py_source(ffi, module_name, None, target_py_file, + verbose) + +def _modname_to_file(outputdir, modname, extension): + parts = modname.split('.') + try: + os.makedirs(os.path.join(outputdir, *parts[:-1])) + except OSError: + pass + parts[-1] += extension + return os.path.join(outputdir, *parts), parts + + +# Aaargh. Distutils is not tested at all for the purpose of compiling +# DLLs that are not extension modules. Here are some hacks to work +# around that, in the _patch_for_*() functions... + +def _patch_meth(patchlist, cls, name, new_meth): + old = getattr(cls, name) + patchlist.append((cls, name, old)) + setattr(cls, name, new_meth) + return old + +def _unpatch_meths(patchlist): + for cls, name, old_meth in reversed(patchlist): + setattr(cls, name, old_meth) + +def _patch_for_embedding(patchlist): + if sys.platform == 'win32': + # we must not remove the manifest when building for embedding! + # FUTURE: this module was removed in setuptools 74; this is likely dead code and should be removed, + # since the toolchain it supports (VS2005-2008) is also long dead. + from cffi._shimmed_dist_utils import MSVCCompiler + if MSVCCompiler is not None: + _patch_meth(patchlist, MSVCCompiler, '_remove_visual_c_ref', + lambda self, manifest_file: manifest_file) + + if sys.platform == 'darwin': + # we must not make a '-bundle', but a '-dynamiclib' instead + from cffi._shimmed_dist_utils import CCompiler + def my_link_shared_object(self, *args, **kwds): + if '-bundle' in self.linker_so: + self.linker_so = list(self.linker_so) + i = self.linker_so.index('-bundle') + self.linker_so[i] = '-dynamiclib' + return old_link_shared_object(self, *args, **kwds) + old_link_shared_object = _patch_meth(patchlist, CCompiler, + 'link_shared_object', + my_link_shared_object) + +def _patch_for_target(patchlist, target): + from cffi._shimmed_dist_utils import build_ext + # if 'target' is different from '*', we need to patch some internal + # method to just return this 'target' value, instead of having it + # built from module_name + if target.endswith('.*'): + target = target[:-2] + if sys.platform == 'win32': + target += '.dll' + elif sys.platform == 'darwin': + target += '.dylib' + else: + target += '.so' + _patch_meth(patchlist, build_ext, 'get_ext_filename', + lambda self, ext_name: target) + + +def recompile(ffi, module_name, preamble, tmpdir='.', call_c_compiler=True, + c_file=None, source_extension='.c', extradir=None, + compiler_verbose=1, target=None, debug=None, + uses_ffiplatform=True, **kwds): + if not isinstance(module_name, str): + module_name = module_name.encode('ascii') + if ffi._windows_unicode: + ffi._apply_windows_unicode(kwds) + if preamble is not None: + if call_c_compiler and _is_file_like(c_file): + raise TypeError("Writing to file-like objects is not supported " + "with call_c_compiler=True") + embedding = (ffi._embedding is not None) + if embedding: + ffi._apply_embedding_fix(kwds) + if c_file is None: + c_file, parts = _modname_to_file(tmpdir, module_name, + source_extension) + if extradir: + parts = [extradir] + parts + ext_c_file = os.path.join(*parts) + else: + ext_c_file = c_file + # + if target is None: + if embedding: + target = '%s.*' % module_name + else: + target = '*' + # + if uses_ffiplatform: + ext = ffiplatform.get_extension(ext_c_file, module_name, **kwds) + else: + ext = None + updated = make_c_source(ffi, module_name, preamble, c_file, + verbose=compiler_verbose) + if call_c_compiler: + patchlist = [] + cwd = os.getcwd() + try: + if embedding: + _patch_for_embedding(patchlist) + if target != '*': + _patch_for_target(patchlist, target) + if compiler_verbose: + if tmpdir == '.': + msg = 'the current directory is' + else: + msg = 'setting the current directory to' + print('%s %r' % (msg, os.path.abspath(tmpdir))) + os.chdir(tmpdir) + outputfilename = ffiplatform.compile('.', ext, + compiler_verbose, debug) + finally: + os.chdir(cwd) + _unpatch_meths(patchlist) + return outputfilename + else: + return ext, updated + else: + if c_file is None: + c_file, _ = _modname_to_file(tmpdir, module_name, '.py') + updated = make_py_source(ffi, module_name, c_file, + verbose=compiler_verbose) + if call_c_compiler: + return c_file + else: + return None, updated + diff --git a/intelliaide/vendor/cffi/setuptools_ext.py b/intelliaide/vendor/cffi/setuptools_ext.py new file mode 100644 index 0000000..5cdd246 --- /dev/null +++ b/intelliaide/vendor/cffi/setuptools_ext.py @@ -0,0 +1,229 @@ +import os +import sys +import sysconfig + +try: + basestring +except NameError: + # Python 3.x + basestring = str + +def error(msg): + from cffi._shimmed_dist_utils import DistutilsSetupError + raise DistutilsSetupError(msg) + + +def execfile(filename, glob): + # We use execfile() (here rewritten for Python 3) instead of + # __import__() to load the build script. The problem with + # a normal import is that in some packages, the intermediate + # __init__.py files may already try to import the file that + # we are generating. + with open(filename) as f: + src = f.read() + src += '\n' # Python 2.6 compatibility + code = compile(src, filename, 'exec') + exec(code, glob, glob) + + +def add_cffi_module(dist, mod_spec): + from cffi.api import FFI + + if not isinstance(mod_spec, basestring): + error("argument to 'cffi_modules=...' must be a str or a list of str," + " not %r" % (type(mod_spec).__name__,)) + mod_spec = str(mod_spec) + try: + build_file_name, ffi_var_name = mod_spec.split(':') + except ValueError: + error("%r must be of the form 'path/build.py:ffi_variable'" % + (mod_spec,)) + if not os.path.exists(build_file_name): + ext = '' + rewritten = build_file_name.replace('.', '/') + '.py' + if os.path.exists(rewritten): + ext = ' (rewrite cffi_modules to [%r])' % ( + rewritten + ':' + ffi_var_name,) + error("%r does not name an existing file%s" % (build_file_name, ext)) + + mod_vars = {'__name__': '__cffi__', '__file__': build_file_name} + execfile(build_file_name, mod_vars) + + try: + ffi = mod_vars[ffi_var_name] + except KeyError: + error("%r: object %r not found in module" % (mod_spec, + ffi_var_name)) + if not isinstance(ffi, FFI): + ffi = ffi() # maybe it's a function instead of directly an ffi + if not isinstance(ffi, FFI): + error("%r is not an FFI instance (got %r)" % (mod_spec, + type(ffi).__name__)) + if not hasattr(ffi, '_assigned_source'): + error("%r: the set_source() method was not called" % (mod_spec,)) + module_name, source, source_extension, kwds = ffi._assigned_source + if ffi._windows_unicode: + kwds = kwds.copy() + ffi._apply_windows_unicode(kwds) + + if source is None: + _add_py_module(dist, ffi, module_name) + else: + _add_c_module(dist, ffi, module_name, source, source_extension, kwds) + +def _set_py_limited_api(Extension, kwds): + """ + Add py_limited_api to kwds if setuptools >= 26 is in use. + Do not alter the setting if it already exists. + Setuptools takes care of ignoring the flag on Python 2 and PyPy. + + CPython itself should ignore the flag in a debugging version + (by not listing .abi3.so in the extensions it supports), but + it doesn't so far, creating troubles. That's why we check + for "not hasattr(sys, 'gettotalrefcount')" (the 2.7 compatible equivalent + of 'd' not in sys.abiflags). (http://bugs.python.org/issue28401) + + On Windows, with CPython <= 3.4, it's better not to use py_limited_api + because virtualenv *still* doesn't copy PYTHON3.DLL on these versions. + Recently (2020) we started shipping only >= 3.5 wheels, though. So + we'll give it another try and set py_limited_api on Windows >= 3.5. + """ + from cffi._shimmed_dist_utils import log + from cffi import recompiler + + if ('py_limited_api' not in kwds and not hasattr(sys, 'gettotalrefcount') + and recompiler.USE_LIMITED_API): + import setuptools + try: + setuptools_major_version = int(setuptools.__version__.partition('.')[0]) + if setuptools_major_version >= 26: + kwds['py_limited_api'] = True + except ValueError: # certain development versions of setuptools + # If we don't know the version number of setuptools, we + # try to set 'py_limited_api' anyway. At worst, we get a + # warning. + kwds['py_limited_api'] = True + + if sysconfig.get_config_var("Py_GIL_DISABLED"): + if kwds.get('py_limited_api'): + log.info("Ignoring py_limited_api=True for free-threaded build.") + + kwds['py_limited_api'] = False + + if kwds.get('py_limited_api') is False: + # avoid setting Py_LIMITED_API if py_limited_api=False + # which _cffi_include.h does unless _CFFI_NO_LIMITED_API is defined + kwds.setdefault("define_macros", []).append(("_CFFI_NO_LIMITED_API", None)) + return kwds + +def _add_c_module(dist, ffi, module_name, source, source_extension, kwds): + # We are a setuptools extension. Need this build_ext for py_limited_api. + from setuptools.command.build_ext import build_ext + from cffi._shimmed_dist_utils import Extension, log, mkpath + from cffi import recompiler + + allsources = ['$PLACEHOLDER'] + allsources.extend(kwds.pop('sources', [])) + kwds = _set_py_limited_api(Extension, kwds) + ext = Extension(name=module_name, sources=allsources, **kwds) + + def make_mod(tmpdir, pre_run=None): + c_file = os.path.join(tmpdir, module_name + source_extension) + log.info("generating cffi module %r" % c_file) + mkpath(tmpdir) + # a setuptools-only, API-only hook: called with the "ext" and "ffi" + # arguments just before we turn the ffi into C code. To use it, + # subclass the 'distutils.command.build_ext.build_ext' class and + # add a method 'def pre_run(self, ext, ffi)'. + if pre_run is not None: + pre_run(ext, ffi) + updated = recompiler.make_c_source(ffi, module_name, source, c_file) + if not updated: + log.info("already up-to-date") + return c_file + + if dist.ext_modules is None: + dist.ext_modules = [] + dist.ext_modules.append(ext) + + base_class = dist.cmdclass.get('build_ext', build_ext) + class build_ext_make_mod(base_class): + def run(self): + if ext.sources[0] == '$PLACEHOLDER': + pre_run = getattr(self, 'pre_run', None) + ext.sources[0] = make_mod(self.build_temp, pre_run) + base_class.run(self) + dist.cmdclass['build_ext'] = build_ext_make_mod + # NB. multiple runs here will create multiple 'build_ext_make_mod' + # classes. Even in this case the 'build_ext' command should be + # run once; but just in case, the logic above does nothing if + # called again. + + +def _add_py_module(dist, ffi, module_name): + from setuptools.command.build_py import build_py + from setuptools.command.build_ext import build_ext + from cffi._shimmed_dist_utils import log, mkpath + from cffi import recompiler + + def generate_mod(py_file): + log.info("generating cffi module %r" % py_file) + mkpath(os.path.dirname(py_file)) + updated = recompiler.make_py_source(ffi, module_name, py_file) + if not updated: + log.info("already up-to-date") + + base_class = dist.cmdclass.get('build_py', build_py) + class build_py_make_mod(base_class): + def run(self): + base_class.run(self) + module_path = module_name.split('.') + module_path[-1] += '.py' + generate_mod(os.path.join(self.build_lib, *module_path)) + def get_source_files(self): + # This is called from 'setup.py sdist' only. Exclude + # the generate .py module in this case. + saved_py_modules = self.py_modules + try: + if saved_py_modules: + self.py_modules = [m for m in saved_py_modules + if m != module_name] + return base_class.get_source_files(self) + finally: + self.py_modules = saved_py_modules + dist.cmdclass['build_py'] = build_py_make_mod + + # distutils and setuptools have no notion I could find of a + # generated python module. If we don't add module_name to + # dist.py_modules, then things mostly work but there are some + # combination of options (--root and --record) that will miss + # the module. So we add it here, which gives a few apparently + # harmless warnings about not finding the file outside the + # build directory. + # Then we need to hack more in get_source_files(); see above. + if dist.py_modules is None: + dist.py_modules = [] + dist.py_modules.append(module_name) + + # the following is only for "build_ext -i" + base_class_2 = dist.cmdclass.get('build_ext', build_ext) + class build_ext_make_mod(base_class_2): + def run(self): + base_class_2.run(self) + if self.inplace: + # from get_ext_fullpath() in distutils/command/build_ext.py + module_path = module_name.split('.') + package = '.'.join(module_path[:-1]) + build_py = self.get_finalized_command('build_py') + package_dir = build_py.get_package_dir(package) + file_name = module_path[-1] + '.py' + generate_mod(os.path.join(package_dir, file_name)) + dist.cmdclass['build_ext'] = build_ext_make_mod + +def cffi_modules(dist, attr, value): + assert attr == 'cffi_modules' + if isinstance(value, basestring): + value = [value] + + for cffi_module in value: + add_cffi_module(dist, cffi_module) diff --git a/intelliaide/vendor/cffi/vengine_cpy.py b/intelliaide/vendor/cffi/vengine_cpy.py new file mode 100644 index 0000000..02e6a47 --- /dev/null +++ b/intelliaide/vendor/cffi/vengine_cpy.py @@ -0,0 +1,1087 @@ +# +# DEPRECATED: implementation for ffi.verify() +# +import sys +from . import model +from .error import VerificationError +from . import _imp_emulation as imp + + +class VCPythonEngine(object): + _class_key = 'x' + _gen_python_module = True + + def __init__(self, verifier): + self.verifier = verifier + self.ffi = verifier.ffi + self._struct_pending_verification = {} + self._types_of_builtin_functions = {} + + def patch_extension_kwds(self, kwds): + pass + + def find_module(self, module_name, path, so_suffixes): + try: + f, filename, descr = imp.find_module(module_name, path) + except ImportError: + return None + if f is not None: + f.close() + # Note that after a setuptools installation, there are both .py + # and .so files with the same basename. The code here relies on + # imp.find_module() locating the .so in priority. + if descr[0] not in so_suffixes: + return None + return filename + + def collect_types(self): + self._typesdict = {} + self._generate("collecttype") + + def _prnt(self, what=''): + self._f.write(what + '\n') + + def _gettypenum(self, type): + # a KeyError here is a bug. please report it! :-) + return self._typesdict[type] + + def _do_collect_type(self, tp): + if ((not isinstance(tp, model.PrimitiveType) + or tp.name == 'long double') + and tp not in self._typesdict): + num = len(self._typesdict) + self._typesdict[tp] = num + + def write_source_to_f(self): + self.collect_types() + # + # The new module will have a _cffi_setup() function that receives + # objects from the ffi world, and that calls some setup code in + # the module. This setup code is split in several independent + # functions, e.g. one per constant. The functions are "chained" + # by ending in a tail call to each other. + # + # This is further split in two chained lists, depending on if we + # can do it at import-time or if we must wait for _cffi_setup() to + # provide us with the objects. This is needed because we + # need the values of the enum constants in order to build the + # that we may have to pass to _cffi_setup(). + # + # The following two 'chained_list_constants' items contains + # the head of these two chained lists, as a string that gives the + # call to do, if any. + self._chained_list_constants = ['((void)lib,0)', '((void)lib,0)'] + # + prnt = self._prnt + # first paste some standard set of lines that are mostly '#define' + prnt(cffimod_header) + prnt() + # then paste the C source given by the user, verbatim. + prnt(self.verifier.preamble) + prnt() + # + # call generate_cpy_xxx_decl(), for every xxx found from + # ffi._parser._declarations. This generates all the functions. + self._generate("decl") + # + # implement the function _cffi_setup_custom() as calling the + # head of the chained list. + self._generate_setup_custom() + prnt() + # + # produce the method table, including the entries for the + # generated Python->C function wrappers, which are done + # by generate_cpy_function_method(). + prnt('static PyMethodDef _cffi_methods[] = {') + self._generate("method") + prnt(' {"_cffi_setup", _cffi_setup, METH_VARARGS, NULL},') + prnt(' {NULL, NULL, 0, NULL} /* Sentinel */') + prnt('};') + prnt() + # + # standard init. + modname = self.verifier.get_module_name() + constants = self._chained_list_constants[False] + prnt('#if PY_MAJOR_VERSION >= 3') + prnt() + prnt('static struct PyModuleDef _cffi_module_def = {') + prnt(' PyModuleDef_HEAD_INIT,') + prnt(' "%s",' % modname) + prnt(' NULL,') + prnt(' -1,') + prnt(' _cffi_methods,') + prnt(' NULL, NULL, NULL, NULL') + prnt('};') + prnt() + prnt('PyMODINIT_FUNC') + prnt('PyInit_%s(void)' % modname) + prnt('{') + prnt(' PyObject *lib;') + prnt(' lib = PyModule_Create(&_cffi_module_def);') + prnt(' if (lib == NULL)') + prnt(' return NULL;') + prnt(' if (%s < 0 || _cffi_init() < 0) {' % (constants,)) + prnt(' Py_DECREF(lib);') + prnt(' return NULL;') + prnt(' }') + prnt('#if Py_GIL_DISABLED') + prnt(' PyUnstable_Module_SetGIL(lib, Py_MOD_GIL_NOT_USED);') + prnt('#endif') + prnt(' return lib;') + prnt('}') + prnt() + prnt('#else') + prnt() + prnt('PyMODINIT_FUNC') + prnt('init%s(void)' % modname) + prnt('{') + prnt(' PyObject *lib;') + prnt(' lib = Py_InitModule("%s", _cffi_methods);' % modname) + prnt(' if (lib == NULL)') + prnt(' return;') + prnt(' if (%s < 0 || _cffi_init() < 0)' % (constants,)) + prnt(' return;') + prnt(' return;') + prnt('}') + prnt() + prnt('#endif') + + def load_library(self, flags=None): + # XXX review all usages of 'self' here! + # import it as a new extension module + imp.acquire_lock() + try: + if hasattr(sys, "getdlopenflags"): + previous_flags = sys.getdlopenflags() + try: + if hasattr(sys, "setdlopenflags") and flags is not None: + sys.setdlopenflags(flags) + module = imp.load_dynamic(self.verifier.get_module_name(), + self.verifier.modulefilename) + except ImportError as e: + error = "importing %r: %s" % (self.verifier.modulefilename, e) + raise VerificationError(error) + finally: + if hasattr(sys, "setdlopenflags"): + sys.setdlopenflags(previous_flags) + finally: + imp.release_lock() + # + # call loading_cpy_struct() to get the struct layout inferred by + # the C compiler + self._load(module, 'loading') + # + # the C code will need the objects. Collect them in + # order in a list. + revmapping = dict([(value, key) + for (key, value) in self._typesdict.items()]) + lst = [revmapping[i] for i in range(len(revmapping))] + lst = list(map(self.ffi._get_cached_btype, lst)) + # + # build the FFILibrary class and instance and call _cffi_setup(). + # this will set up some fields like '_cffi_types', and only then + # it will invoke the chained list of functions that will really + # build (notably) the constant objects, as if they are + # pointers, and store them as attributes on the 'library' object. + class FFILibrary(object): + _cffi_python_module = module + _cffi_ffi = self.ffi + _cffi_dir = [] + def __dir__(self): + return FFILibrary._cffi_dir + list(self.__dict__) + library = FFILibrary() + if module._cffi_setup(lst, VerificationError, library): + import warnings + warnings.warn("reimporting %r might overwrite older definitions" + % (self.verifier.get_module_name())) + # + # finally, call the loaded_cpy_xxx() functions. This will perform + # the final adjustments, like copying the Python->C wrapper + # functions from the module to the 'library' object, and setting + # up the FFILibrary class with properties for the global C variables. + self._load(module, 'loaded', library=library) + module._cffi_original_ffi = self.ffi + module._cffi_types_of_builtin_funcs = self._types_of_builtin_functions + return library + + def _get_declarations(self): + lst = [(key, tp) for (key, (tp, qual)) in + self.ffi._parser._declarations.items()] + lst.sort() + return lst + + def _generate(self, step_name): + for name, tp in self._get_declarations(): + kind, realname = name.split(' ', 1) + try: + method = getattr(self, '_generate_cpy_%s_%s' % (kind, + step_name)) + except AttributeError: + raise VerificationError( + "not implemented in verify(): %r" % name) + try: + method(tp, realname) + except Exception as e: + model.attach_exception_info(e, name) + raise + + def _load(self, module, step_name, **kwds): + for name, tp in self._get_declarations(): + kind, realname = name.split(' ', 1) + method = getattr(self, '_%s_cpy_%s' % (step_name, kind)) + try: + method(tp, realname, module, **kwds) + except Exception as e: + model.attach_exception_info(e, name) + raise + + def _generate_nothing(self, tp, name): + pass + + def _loaded_noop(self, tp, name, module, **kwds): + pass + + # ---------- + + def _convert_funcarg_to_c(self, tp, fromvar, tovar, errcode): + extraarg = '' + if isinstance(tp, model.PrimitiveType): + if tp.is_integer_type() and tp.name != '_Bool': + converter = '_cffi_to_c_int' + extraarg = ', %s' % tp.name + elif tp.is_complex_type(): + raise VerificationError( + "not implemented in verify(): complex types") + else: + converter = '(%s)_cffi_to_c_%s' % (tp.get_c_name(''), + tp.name.replace(' ', '_')) + errvalue = '-1' + # + elif isinstance(tp, model.PointerType): + self._convert_funcarg_to_c_ptr_or_array(tp, fromvar, + tovar, errcode) + return + # + elif isinstance(tp, (model.StructOrUnion, model.EnumType)): + # a struct (not a struct pointer) as a function argument + self._prnt(' if (_cffi_to_c((char *)&%s, _cffi_type(%d), %s) < 0)' + % (tovar, self._gettypenum(tp), fromvar)) + self._prnt(' %s;' % errcode) + return + # + elif isinstance(tp, model.FunctionPtrType): + converter = '(%s)_cffi_to_c_pointer' % tp.get_c_name('') + extraarg = ', _cffi_type(%d)' % self._gettypenum(tp) + errvalue = 'NULL' + # + else: + raise NotImplementedError(tp) + # + self._prnt(' %s = %s(%s%s);' % (tovar, converter, fromvar, extraarg)) + self._prnt(' if (%s == (%s)%s && PyErr_Occurred())' % ( + tovar, tp.get_c_name(''), errvalue)) + self._prnt(' %s;' % errcode) + + def _extra_local_variables(self, tp, localvars, freelines): + if isinstance(tp, model.PointerType): + localvars.add('Py_ssize_t datasize') + localvars.add('struct _cffi_freeme_s *large_args_free = NULL') + freelines.add('if (large_args_free != NULL)' + ' _cffi_free_array_arguments(large_args_free);') + + def _convert_funcarg_to_c_ptr_or_array(self, tp, fromvar, tovar, errcode): + self._prnt(' datasize = _cffi_prepare_pointer_call_argument(') + self._prnt(' _cffi_type(%d), %s, (char **)&%s);' % ( + self._gettypenum(tp), fromvar, tovar)) + self._prnt(' if (datasize != 0) {') + self._prnt(' %s = ((size_t)datasize) <= 640 ? ' + 'alloca((size_t)datasize) : NULL;' % (tovar,)) + self._prnt(' if (_cffi_convert_array_argument(_cffi_type(%d), %s, ' + '(char **)&%s,' % (self._gettypenum(tp), fromvar, tovar)) + self._prnt(' datasize, &large_args_free) < 0)') + self._prnt(' %s;' % errcode) + self._prnt(' }') + + def _convert_expr_from_c(self, tp, var, context): + if isinstance(tp, model.PrimitiveType): + if tp.is_integer_type() and tp.name != '_Bool': + return '_cffi_from_c_int(%s, %s)' % (var, tp.name) + elif tp.name != 'long double': + return '_cffi_from_c_%s(%s)' % (tp.name.replace(' ', '_'), var) + else: + return '_cffi_from_c_deref((char *)&%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + elif isinstance(tp, (model.PointerType, model.FunctionPtrType)): + return '_cffi_from_c_pointer((char *)%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + elif isinstance(tp, model.ArrayType): + return '_cffi_from_c_pointer((char *)%s, _cffi_type(%d))' % ( + var, self._gettypenum(model.PointerType(tp.item))) + elif isinstance(tp, model.StructOrUnion): + if tp.fldnames is None: + raise TypeError("'%s' is used as %s, but is opaque" % ( + tp._get_c_name(), context)) + return '_cffi_from_c_struct((char *)&%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + elif isinstance(tp, model.EnumType): + return '_cffi_from_c_deref((char *)&%s, _cffi_type(%d))' % ( + var, self._gettypenum(tp)) + else: + raise NotImplementedError(tp) + + # ---------- + # typedefs: generates no code so far + + _generate_cpy_typedef_collecttype = _generate_nothing + _generate_cpy_typedef_decl = _generate_nothing + _generate_cpy_typedef_method = _generate_nothing + _loading_cpy_typedef = _loaded_noop + _loaded_cpy_typedef = _loaded_noop + + # ---------- + # function declarations + + def _generate_cpy_function_collecttype(self, tp, name): + assert isinstance(tp, model.FunctionPtrType) + if tp.ellipsis: + self._do_collect_type(tp) + else: + # don't call _do_collect_type(tp) in this common case, + # otherwise test_autofilled_struct_as_argument fails + for type in tp.args: + self._do_collect_type(type) + self._do_collect_type(tp.result) + + def _generate_cpy_function_decl(self, tp, name): + assert isinstance(tp, model.FunctionPtrType) + if tp.ellipsis: + # cannot support vararg functions better than this: check for its + # exact type (including the fixed arguments), and build it as a + # constant function pointer (no CPython wrapper) + self._generate_cpy_const(False, name, tp) + return + prnt = self._prnt + numargs = len(tp.args) + if numargs == 0: + argname = 'noarg' + elif numargs == 1: + argname = 'arg0' + else: + argname = 'args' + prnt('static PyObject *') + prnt('_cffi_f_%s(PyObject *self, PyObject *%s)' % (name, argname)) + prnt('{') + # + context = 'argument of %s' % name + for i, type in enumerate(tp.args): + prnt(' %s;' % type.get_c_name(' x%d' % i, context)) + # + localvars = set() + freelines = set() + for type in tp.args: + self._extra_local_variables(type, localvars, freelines) + for decl in sorted(localvars): + prnt(' %s;' % (decl,)) + # + if not isinstance(tp.result, model.VoidType): + result_code = 'result = ' + context = 'result of %s' % name + prnt(' %s;' % tp.result.get_c_name(' result', context)) + prnt(' PyObject *pyresult;') + else: + result_code = '' + # + if len(tp.args) > 1: + rng = range(len(tp.args)) + for i in rng: + prnt(' PyObject *arg%d;' % i) + prnt() + prnt(' if (!PyArg_ParseTuple(args, "%s:%s", %s))' % ( + 'O' * numargs, name, ', '.join(['&arg%d' % i for i in rng]))) + prnt(' return NULL;') + prnt() + # + for i, type in enumerate(tp.args): + self._convert_funcarg_to_c(type, 'arg%d' % i, 'x%d' % i, + 'return NULL') + prnt() + # + prnt(' Py_BEGIN_ALLOW_THREADS') + prnt(' _cffi_restore_errno();') + prnt(' { %s%s(%s); }' % ( + result_code, name, + ', '.join(['x%d' % i for i in range(len(tp.args))]))) + prnt(' _cffi_save_errno();') + prnt(' Py_END_ALLOW_THREADS') + prnt() + # + prnt(' (void)self; /* unused */') + if numargs == 0: + prnt(' (void)noarg; /* unused */') + if result_code: + prnt(' pyresult = %s;' % + self._convert_expr_from_c(tp.result, 'result', 'result type')) + for freeline in freelines: + prnt(' ' + freeline) + prnt(' return pyresult;') + else: + for freeline in freelines: + prnt(' ' + freeline) + prnt(' Py_INCREF(Py_None);') + prnt(' return Py_None;') + prnt('}') + prnt() + + def _generate_cpy_function_method(self, tp, name): + if tp.ellipsis: + return + numargs = len(tp.args) + if numargs == 0: + meth = 'METH_NOARGS' + elif numargs == 1: + meth = 'METH_O' + else: + meth = 'METH_VARARGS' + self._prnt(' {"%s", _cffi_f_%s, %s, NULL},' % (name, name, meth)) + + _loading_cpy_function = _loaded_noop + + def _loaded_cpy_function(self, tp, name, module, library): + if tp.ellipsis: + return + func = getattr(module, name) + setattr(library, name, func) + self._types_of_builtin_functions[func] = tp + + # ---------- + # named structs + + _generate_cpy_struct_collecttype = _generate_nothing + def _generate_cpy_struct_decl(self, tp, name): + assert name == tp.name + self._generate_struct_or_union_decl(tp, 'struct', name) + def _generate_cpy_struct_method(self, tp, name): + self._generate_struct_or_union_method(tp, 'struct', name) + def _loading_cpy_struct(self, tp, name, module): + self._loading_struct_or_union(tp, 'struct', name, module) + def _loaded_cpy_struct(self, tp, name, module, **kwds): + self._loaded_struct_or_union(tp) + + _generate_cpy_union_collecttype = _generate_nothing + def _generate_cpy_union_decl(self, tp, name): + assert name == tp.name + self._generate_struct_or_union_decl(tp, 'union', name) + def _generate_cpy_union_method(self, tp, name): + self._generate_struct_or_union_method(tp, 'union', name) + def _loading_cpy_union(self, tp, name, module): + self._loading_struct_or_union(tp, 'union', name, module) + def _loaded_cpy_union(self, tp, name, module, **kwds): + self._loaded_struct_or_union(tp) + + def _generate_struct_or_union_decl(self, tp, prefix, name): + if tp.fldnames is None: + return # nothing to do with opaque structs + checkfuncname = '_cffi_check_%s_%s' % (prefix, name) + layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) + cname = ('%s %s' % (prefix, name)).strip() + # + prnt = self._prnt + prnt('static void %s(%s *p)' % (checkfuncname, cname)) + prnt('{') + prnt(' /* only to generate compile-time warnings or errors */') + prnt(' (void)p;') + for fname, ftype, fbitsize, fqual in tp.enumfields(): + if (isinstance(ftype, model.PrimitiveType) + and ftype.is_integer_type()) or fbitsize >= 0: + # accept all integers, but complain on float or double + prnt(' (void)((p->%s) << 1);' % fname) + else: + # only accept exactly the type declared. + try: + prnt(' { %s = &p->%s; (void)tmp; }' % ( + ftype.get_c_name('*tmp', 'field %r'%fname, quals=fqual), + fname)) + except VerificationError as e: + prnt(' /* %s */' % str(e)) # cannot verify it, ignore + prnt('}') + prnt('static PyObject *') + prnt('%s(PyObject *self, PyObject *noarg)' % (layoutfuncname,)) + prnt('{') + prnt(' struct _cffi_aligncheck { char x; %s y; };' % cname) + prnt(' static Py_ssize_t nums[] = {') + prnt(' sizeof(%s),' % cname) + prnt(' offsetof(struct _cffi_aligncheck, y),') + for fname, ftype, fbitsize, fqual in tp.enumfields(): + if fbitsize >= 0: + continue # xxx ignore fbitsize for now + prnt(' offsetof(%s, %s),' % (cname, fname)) + if isinstance(ftype, model.ArrayType) and ftype.length is None: + prnt(' 0, /* %s */' % ftype._get_c_name()) + else: + prnt(' sizeof(((%s *)0)->%s),' % (cname, fname)) + prnt(' -1') + prnt(' };') + prnt(' (void)self; /* unused */') + prnt(' (void)noarg; /* unused */') + prnt(' return _cffi_get_struct_layout(nums);') + prnt(' /* the next line is not executed, but compiled */') + prnt(' %s(0);' % (checkfuncname,)) + prnt('}') + prnt() + + def _generate_struct_or_union_method(self, tp, prefix, name): + if tp.fldnames is None: + return # nothing to do with opaque structs + layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) + self._prnt(' {"%s", %s, METH_NOARGS, NULL},' % (layoutfuncname, + layoutfuncname)) + + def _loading_struct_or_union(self, tp, prefix, name, module): + if tp.fldnames is None: + return # nothing to do with opaque structs + layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) + # + function = getattr(module, layoutfuncname) + layout = function() + if isinstance(tp, model.StructOrUnion) and tp.partial: + # use the function()'s sizes and offsets to guide the + # layout of the struct + totalsize = layout[0] + totalalignment = layout[1] + fieldofs = layout[2::2] + fieldsize = layout[3::2] + tp.force_flatten() + assert len(fieldofs) == len(fieldsize) == len(tp.fldnames) + tp.fixedlayout = fieldofs, fieldsize, totalsize, totalalignment + else: + cname = ('%s %s' % (prefix, name)).strip() + self._struct_pending_verification[tp] = layout, cname + + def _loaded_struct_or_union(self, tp): + if tp.fldnames is None: + return # nothing to do with opaque structs + self.ffi._get_cached_btype(tp) # force 'fixedlayout' to be considered + + if tp in self._struct_pending_verification: + # check that the layout sizes and offsets match the real ones + def check(realvalue, expectedvalue, msg): + if realvalue != expectedvalue: + raise VerificationError( + "%s (we have %d, but C compiler says %d)" + % (msg, expectedvalue, realvalue)) + ffi = self.ffi + BStruct = ffi._get_cached_btype(tp) + layout, cname = self._struct_pending_verification.pop(tp) + check(layout[0], ffi.sizeof(BStruct), "wrong total size") + check(layout[1], ffi.alignof(BStruct), "wrong total alignment") + i = 2 + for fname, ftype, fbitsize, fqual in tp.enumfields(): + if fbitsize >= 0: + continue # xxx ignore fbitsize for now + check(layout[i], ffi.offsetof(BStruct, fname), + "wrong offset for field %r" % (fname,)) + if layout[i+1] != 0: + BField = ffi._get_cached_btype(ftype) + check(layout[i+1], ffi.sizeof(BField), + "wrong size for field %r" % (fname,)) + i += 2 + assert i == len(layout) + + # ---------- + # 'anonymous' declarations. These are produced for anonymous structs + # or unions; the 'name' is obtained by a typedef. + + _generate_cpy_anonymous_collecttype = _generate_nothing + + def _generate_cpy_anonymous_decl(self, tp, name): + if isinstance(tp, model.EnumType): + self._generate_cpy_enum_decl(tp, name, '') + else: + self._generate_struct_or_union_decl(tp, '', name) + + def _generate_cpy_anonymous_method(self, tp, name): + if not isinstance(tp, model.EnumType): + self._generate_struct_or_union_method(tp, '', name) + + def _loading_cpy_anonymous(self, tp, name, module): + if isinstance(tp, model.EnumType): + self._loading_cpy_enum(tp, name, module) + else: + self._loading_struct_or_union(tp, '', name, module) + + def _loaded_cpy_anonymous(self, tp, name, module, **kwds): + if isinstance(tp, model.EnumType): + self._loaded_cpy_enum(tp, name, module, **kwds) + else: + self._loaded_struct_or_union(tp) + + # ---------- + # constants, likely declared with '#define' + + def _generate_cpy_const(self, is_int, name, tp=None, category='const', + vartp=None, delayed=True, size_too=False, + check_value=None): + prnt = self._prnt + funcname = '_cffi_%s_%s' % (category, name) + prnt('static int %s(PyObject *lib)' % funcname) + prnt('{') + prnt(' PyObject *o;') + prnt(' int res;') + if not is_int: + prnt(' %s;' % (vartp or tp).get_c_name(' i', name)) + else: + assert category == 'const' + # + if check_value is not None: + self._check_int_constant_value(name, check_value) + # + if not is_int: + if category == 'var': + realexpr = '&' + name + else: + realexpr = name + prnt(' i = (%s);' % (realexpr,)) + prnt(' o = %s;' % (self._convert_expr_from_c(tp, 'i', + 'variable type'),)) + assert delayed + else: + prnt(' o = _cffi_from_c_int_const(%s);' % name) + prnt(' if (o == NULL)') + prnt(' return -1;') + if size_too: + prnt(' {') + prnt(' PyObject *o1 = o;') + prnt(' o = Py_BuildValue("On", o1, (Py_ssize_t)sizeof(%s));' + % (name,)) + prnt(' Py_DECREF(o1);') + prnt(' if (o == NULL)') + prnt(' return -1;') + prnt(' }') + prnt(' res = PyObject_SetAttrString(lib, "%s", o);' % name) + prnt(' Py_DECREF(o);') + prnt(' if (res < 0)') + prnt(' return -1;') + prnt(' return %s;' % self._chained_list_constants[delayed]) + self._chained_list_constants[delayed] = funcname + '(lib)' + prnt('}') + prnt() + + def _generate_cpy_constant_collecttype(self, tp, name): + is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type() + if not is_int: + self._do_collect_type(tp) + + def _generate_cpy_constant_decl(self, tp, name): + is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type() + self._generate_cpy_const(is_int, name, tp) + + _generate_cpy_constant_method = _generate_nothing + _loading_cpy_constant = _loaded_noop + _loaded_cpy_constant = _loaded_noop + + # ---------- + # enums + + def _check_int_constant_value(self, name, value, err_prefix=''): + prnt = self._prnt + if value <= 0: + prnt(' if ((%s) > 0 || (long)(%s) != %dL) {' % ( + name, name, value)) + else: + prnt(' if ((%s) <= 0 || (unsigned long)(%s) != %dUL) {' % ( + name, name, value)) + prnt(' char buf[64];') + prnt(' if ((%s) <= 0)' % name) + prnt(' snprintf(buf, 63, "%%ld", (long)(%s));' % name) + prnt(' else') + prnt(' snprintf(buf, 63, "%%lu", (unsigned long)(%s));' % + name) + prnt(' PyErr_Format(_cffi_VerificationError,') + prnt(' "%s%s has the real value %s, not %s",') + prnt(' "%s", "%s", buf, "%d");' % ( + err_prefix, name, value)) + prnt(' return -1;') + prnt(' }') + + def _enum_funcname(self, prefix, name): + # "$enum_$1" => "___D_enum____D_1" + name = name.replace('$', '___D_') + return '_cffi_e_%s_%s' % (prefix, name) + + def _generate_cpy_enum_decl(self, tp, name, prefix='enum'): + if tp.partial: + for enumerator in tp.enumerators: + self._generate_cpy_const(True, enumerator, delayed=False) + return + # + funcname = self._enum_funcname(prefix, name) + prnt = self._prnt + prnt('static int %s(PyObject *lib)' % funcname) + prnt('{') + for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): + self._check_int_constant_value(enumerator, enumvalue, + "enum %s: " % name) + prnt(' return %s;' % self._chained_list_constants[True]) + self._chained_list_constants[True] = funcname + '(lib)' + prnt('}') + prnt() + + _generate_cpy_enum_collecttype = _generate_nothing + _generate_cpy_enum_method = _generate_nothing + + def _loading_cpy_enum(self, tp, name, module): + if tp.partial: + enumvalues = [getattr(module, enumerator) + for enumerator in tp.enumerators] + tp.enumvalues = tuple(enumvalues) + tp.partial_resolved = True + + def _loaded_cpy_enum(self, tp, name, module, library): + for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): + setattr(library, enumerator, enumvalue) + + # ---------- + # macros: for now only for integers + + def _generate_cpy_macro_decl(self, tp, name): + if tp == '...': + check_value = None + else: + check_value = tp # an integer + self._generate_cpy_const(True, name, check_value=check_value) + + _generate_cpy_macro_collecttype = _generate_nothing + _generate_cpy_macro_method = _generate_nothing + _loading_cpy_macro = _loaded_noop + _loaded_cpy_macro = _loaded_noop + + # ---------- + # global variables + + def _generate_cpy_variable_collecttype(self, tp, name): + if isinstance(tp, model.ArrayType): + tp_ptr = model.PointerType(tp.item) + else: + tp_ptr = model.PointerType(tp) + self._do_collect_type(tp_ptr) + + def _generate_cpy_variable_decl(self, tp, name): + if isinstance(tp, model.ArrayType): + tp_ptr = model.PointerType(tp.item) + self._generate_cpy_const(False, name, tp, vartp=tp_ptr, + size_too = tp.length_is_unknown()) + else: + tp_ptr = model.PointerType(tp) + self._generate_cpy_const(False, name, tp_ptr, category='var') + + _generate_cpy_variable_method = _generate_nothing + _loading_cpy_variable = _loaded_noop + + def _loaded_cpy_variable(self, tp, name, module, library): + value = getattr(library, name) + if isinstance(tp, model.ArrayType): # int a[5] is "constant" in the + # sense that "a=..." is forbidden + if tp.length_is_unknown(): + assert isinstance(value, tuple) + (value, size) = value + BItemType = self.ffi._get_cached_btype(tp.item) + length, rest = divmod(size, self.ffi.sizeof(BItemType)) + if rest != 0: + raise VerificationError( + "bad size: %r does not seem to be an array of %s" % + (name, tp.item)) + tp = tp.resolve_length(length) + # 'value' is a which we have to replace with + # a if the N is actually known + if tp.length is not None: + BArray = self.ffi._get_cached_btype(tp) + value = self.ffi.cast(BArray, value) + setattr(library, name, value) + return + # remove ptr= from the library instance, and replace + # it by a property on the class, which reads/writes into ptr[0]. + ptr = value + delattr(library, name) + def getter(library): + return ptr[0] + def setter(library, value): + ptr[0] = value + setattr(type(library), name, property(getter, setter)) + type(library)._cffi_dir.append(name) + + # ---------- + + def _generate_setup_custom(self): + prnt = self._prnt + prnt('static int _cffi_setup_custom(PyObject *lib)') + prnt('{') + prnt(' return %s;' % self._chained_list_constants[True]) + prnt('}') + +cffimod_header = r''' +#include +#include + +/* this block of #ifs should be kept exactly identical between + c/_cffi_backend.c, cffi/vengine_cpy.py, cffi/vengine_gen.py + and cffi/_cffi_include.h */ +#if defined(_MSC_VER) +# include /* for alloca() */ +# if _MSC_VER < 1600 /* MSVC < 2010 */ + typedef __int8 int8_t; + typedef __int16 int16_t; + typedef __int32 int32_t; + typedef __int64 int64_t; + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + typedef unsigned __int64 uint64_t; + typedef __int8 int_least8_t; + typedef __int16 int_least16_t; + typedef __int32 int_least32_t; + typedef __int64 int_least64_t; + typedef unsigned __int8 uint_least8_t; + typedef unsigned __int16 uint_least16_t; + typedef unsigned __int32 uint_least32_t; + typedef unsigned __int64 uint_least64_t; + typedef __int8 int_fast8_t; + typedef __int16 int_fast16_t; + typedef __int32 int_fast32_t; + typedef __int64 int_fast64_t; + typedef unsigned __int8 uint_fast8_t; + typedef unsigned __int16 uint_fast16_t; + typedef unsigned __int32 uint_fast32_t; + typedef unsigned __int64 uint_fast64_t; + typedef __int64 intmax_t; + typedef unsigned __int64 uintmax_t; +# else +# include +# endif +# if _MSC_VER < 1800 /* MSVC < 2013 */ +# ifndef __cplusplus + typedef unsigned char _Bool; +# endif +# endif +# define _cffi_float_complex_t _Fcomplex /* include for it */ +# define _cffi_double_complex_t _Dcomplex /* include for it */ +#else +# include +# if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux) +# include +# endif +# define _cffi_float_complex_t float _Complex +# define _cffi_double_complex_t double _Complex +#endif + +#if PY_MAJOR_VERSION < 3 +# undef PyCapsule_CheckExact +# undef PyCapsule_GetPointer +# define PyCapsule_CheckExact(capsule) (PyCObject_Check(capsule)) +# define PyCapsule_GetPointer(capsule, name) \ + (PyCObject_AsVoidPtr(capsule)) +#endif + +#if PY_MAJOR_VERSION >= 3 +# define PyInt_FromLong PyLong_FromLong +#endif + +#define _cffi_from_c_double PyFloat_FromDouble +#define _cffi_from_c_float PyFloat_FromDouble +#define _cffi_from_c_long PyInt_FromLong +#define _cffi_from_c_ulong PyLong_FromUnsignedLong +#define _cffi_from_c_longlong PyLong_FromLongLong +#define _cffi_from_c_ulonglong PyLong_FromUnsignedLongLong +#define _cffi_from_c__Bool PyBool_FromLong + +#define _cffi_to_c_double PyFloat_AsDouble +#define _cffi_to_c_float PyFloat_AsDouble + +#define _cffi_from_c_int_const(x) \ + (((x) > 0) ? \ + ((unsigned long long)(x) <= (unsigned long long)LONG_MAX) ? \ + PyInt_FromLong((long)(x)) : \ + PyLong_FromUnsignedLongLong((unsigned long long)(x)) : \ + ((long long)(x) >= (long long)LONG_MIN) ? \ + PyInt_FromLong((long)(x)) : \ + PyLong_FromLongLong((long long)(x))) + +#define _cffi_from_c_int(x, type) \ + (((type)-1) > 0 ? /* unsigned */ \ + (sizeof(type) < sizeof(long) ? \ + PyInt_FromLong((long)x) : \ + sizeof(type) == sizeof(long) ? \ + PyLong_FromUnsignedLong((unsigned long)x) : \ + PyLong_FromUnsignedLongLong((unsigned long long)x)) : \ + (sizeof(type) <= sizeof(long) ? \ + PyInt_FromLong((long)x) : \ + PyLong_FromLongLong((long long)x))) + +#define _cffi_to_c_int(o, type) \ + ((type)( \ + sizeof(type) == 1 ? (((type)-1) > 0 ? (type)_cffi_to_c_u8(o) \ + : (type)_cffi_to_c_i8(o)) : \ + sizeof(type) == 2 ? (((type)-1) > 0 ? (type)_cffi_to_c_u16(o) \ + : (type)_cffi_to_c_i16(o)) : \ + sizeof(type) == 4 ? (((type)-1) > 0 ? (type)_cffi_to_c_u32(o) \ + : (type)_cffi_to_c_i32(o)) : \ + sizeof(type) == 8 ? (((type)-1) > 0 ? (type)_cffi_to_c_u64(o) \ + : (type)_cffi_to_c_i64(o)) : \ + (Py_FatalError("unsupported size for type " #type), (type)0))) + +#define _cffi_to_c_i8 \ + ((int(*)(PyObject *))_cffi_exports[1]) +#define _cffi_to_c_u8 \ + ((int(*)(PyObject *))_cffi_exports[2]) +#define _cffi_to_c_i16 \ + ((int(*)(PyObject *))_cffi_exports[3]) +#define _cffi_to_c_u16 \ + ((int(*)(PyObject *))_cffi_exports[4]) +#define _cffi_to_c_i32 \ + ((int(*)(PyObject *))_cffi_exports[5]) +#define _cffi_to_c_u32 \ + ((unsigned int(*)(PyObject *))_cffi_exports[6]) +#define _cffi_to_c_i64 \ + ((long long(*)(PyObject *))_cffi_exports[7]) +#define _cffi_to_c_u64 \ + ((unsigned long long(*)(PyObject *))_cffi_exports[8]) +#define _cffi_to_c_char \ + ((int(*)(PyObject *))_cffi_exports[9]) +#define _cffi_from_c_pointer \ + ((PyObject *(*)(char *, CTypeDescrObject *))_cffi_exports[10]) +#define _cffi_to_c_pointer \ + ((char *(*)(PyObject *, CTypeDescrObject *))_cffi_exports[11]) +#define _cffi_get_struct_layout \ + ((PyObject *(*)(Py_ssize_t[]))_cffi_exports[12]) +#define _cffi_restore_errno \ + ((void(*)(void))_cffi_exports[13]) +#define _cffi_save_errno \ + ((void(*)(void))_cffi_exports[14]) +#define _cffi_from_c_char \ + ((PyObject *(*)(char))_cffi_exports[15]) +#define _cffi_from_c_deref \ + ((PyObject *(*)(char *, CTypeDescrObject *))_cffi_exports[16]) +#define _cffi_to_c \ + ((int(*)(char *, CTypeDescrObject *, PyObject *))_cffi_exports[17]) +#define _cffi_from_c_struct \ + ((PyObject *(*)(char *, CTypeDescrObject *))_cffi_exports[18]) +#define _cffi_to_c_wchar_t \ + ((wchar_t(*)(PyObject *))_cffi_exports[19]) +#define _cffi_from_c_wchar_t \ + ((PyObject *(*)(wchar_t))_cffi_exports[20]) +#define _cffi_to_c_long_double \ + ((long double(*)(PyObject *))_cffi_exports[21]) +#define _cffi_to_c__Bool \ + ((_Bool(*)(PyObject *))_cffi_exports[22]) +#define _cffi_prepare_pointer_call_argument \ + ((Py_ssize_t(*)(CTypeDescrObject *, PyObject *, char **))_cffi_exports[23]) +#define _cffi_convert_array_from_object \ + ((int(*)(char *, CTypeDescrObject *, PyObject *))_cffi_exports[24]) +#define _CFFI_NUM_EXPORTS 25 + +typedef struct _ctypedescr CTypeDescrObject; + +static void *_cffi_exports[_CFFI_NUM_EXPORTS]; +static PyObject *_cffi_types, *_cffi_VerificationError; + +static int _cffi_setup_custom(PyObject *lib); /* forward */ + +static PyObject *_cffi_setup(PyObject *self, PyObject *args) +{ + PyObject *library; + int was_alive = (_cffi_types != NULL); + (void)self; /* unused */ + if (!PyArg_ParseTuple(args, "OOO", &_cffi_types, &_cffi_VerificationError, + &library)) + return NULL; + Py_INCREF(_cffi_types); + Py_INCREF(_cffi_VerificationError); + if (_cffi_setup_custom(library) < 0) + return NULL; + return PyBool_FromLong(was_alive); +} + +union _cffi_union_alignment_u { + unsigned char m_char; + unsigned short m_short; + unsigned int m_int; + unsigned long m_long; + unsigned long long m_longlong; + float m_float; + double m_double; + long double m_longdouble; +}; + +struct _cffi_freeme_s { + struct _cffi_freeme_s *next; + union _cffi_union_alignment_u alignment; +}; + +#ifdef __GNUC__ + __attribute__((unused)) +#endif +static int _cffi_convert_array_argument(CTypeDescrObject *ctptr, PyObject *arg, + char **output_data, Py_ssize_t datasize, + struct _cffi_freeme_s **freeme) +{ + char *p; + if (datasize < 0) + return -1; + + p = *output_data; + if (p == NULL) { + struct _cffi_freeme_s *fp = (struct _cffi_freeme_s *)PyObject_Malloc( + offsetof(struct _cffi_freeme_s, alignment) + (size_t)datasize); + if (fp == NULL) + return -1; + fp->next = *freeme; + *freeme = fp; + p = *output_data = (char *)&fp->alignment; + } + memset((void *)p, 0, (size_t)datasize); + return _cffi_convert_array_from_object(p, ctptr, arg); +} + +#ifdef __GNUC__ + __attribute__((unused)) +#endif +static void _cffi_free_array_arguments(struct _cffi_freeme_s *freeme) +{ + do { + void *p = (void *)freeme; + freeme = freeme->next; + PyObject_Free(p); + } while (freeme != NULL); +} + +static int _cffi_init(void) +{ + PyObject *module, *c_api_object = NULL; + + module = PyImport_ImportModule("_cffi_backend"); + if (module == NULL) + goto failure; + + c_api_object = PyObject_GetAttrString(module, "_C_API"); + if (c_api_object == NULL) + goto failure; + if (!PyCapsule_CheckExact(c_api_object)) { + PyErr_SetNone(PyExc_ImportError); + goto failure; + } + memcpy(_cffi_exports, PyCapsule_GetPointer(c_api_object, "cffi"), + _CFFI_NUM_EXPORTS * sizeof(void *)); + + Py_DECREF(module); + Py_DECREF(c_api_object); + return 0; + + failure: + Py_XDECREF(module); + Py_XDECREF(c_api_object); + return -1; +} + +#define _cffi_type(num) ((CTypeDescrObject *)PyList_GET_ITEM(_cffi_types, num)) + +/**********/ +''' diff --git a/intelliaide/vendor/cffi/vengine_gen.py b/intelliaide/vendor/cffi/vengine_gen.py new file mode 100644 index 0000000..bffc821 --- /dev/null +++ b/intelliaide/vendor/cffi/vengine_gen.py @@ -0,0 +1,679 @@ +# +# DEPRECATED: implementation for ffi.verify() +# +import sys, os +import types + +from . import model +from .error import VerificationError + + +class VGenericEngine(object): + _class_key = 'g' + _gen_python_module = False + + def __init__(self, verifier): + self.verifier = verifier + self.ffi = verifier.ffi + self.export_symbols = [] + self._struct_pending_verification = {} + + def patch_extension_kwds(self, kwds): + # add 'export_symbols' to the dictionary. Note that we add the + # list before filling it. When we fill it, it will thus also show + # up in kwds['export_symbols']. + kwds.setdefault('export_symbols', self.export_symbols) + + def find_module(self, module_name, path, so_suffixes): + for so_suffix in so_suffixes: + basename = module_name + so_suffix + if path is None: + path = sys.path + for dirname in path: + filename = os.path.join(dirname, basename) + if os.path.isfile(filename): + return filename + + def collect_types(self): + pass # not needed in the generic engine + + def _prnt(self, what=''): + self._f.write(what + '\n') + + def write_source_to_f(self): + prnt = self._prnt + # first paste some standard set of lines that are mostly '#include' + prnt(cffimod_header) + # then paste the C source given by the user, verbatim. + prnt(self.verifier.preamble) + # + # call generate_gen_xxx_decl(), for every xxx found from + # ffi._parser._declarations. This generates all the functions. + self._generate('decl') + # + # on Windows, distutils insists on putting init_cffi_xyz in + # 'export_symbols', so instead of fighting it, just give up and + # give it one + if sys.platform == 'win32': + if sys.version_info >= (3,): + prefix = 'PyInit_' + else: + prefix = 'init' + modname = self.verifier.get_module_name() + prnt("void %s%s(void) { }\n" % (prefix, modname)) + + def load_library(self, flags=0): + # import it with the CFFI backend + backend = self.ffi._backend + # needs to make a path that contains '/', on Posix + filename = os.path.join(os.curdir, self.verifier.modulefilename) + module = backend.load_library(filename, flags) + # + # call loading_gen_struct() to get the struct layout inferred by + # the C compiler + self._load(module, 'loading') + + # build the FFILibrary class and instance, this is a module subclass + # because modules are expected to have usually-constant-attributes and + # in PyPy this means the JIT is able to treat attributes as constant, + # which we want. + class FFILibrary(types.ModuleType): + _cffi_generic_module = module + _cffi_ffi = self.ffi + _cffi_dir = [] + def __dir__(self): + return FFILibrary._cffi_dir + library = FFILibrary("") + # + # finally, call the loaded_gen_xxx() functions. This will set + # up the 'library' object. + self._load(module, 'loaded', library=library) + return library + + def _get_declarations(self): + lst = [(key, tp) for (key, (tp, qual)) in + self.ffi._parser._declarations.items()] + lst.sort() + return lst + + def _generate(self, step_name): + for name, tp in self._get_declarations(): + kind, realname = name.split(' ', 1) + try: + method = getattr(self, '_generate_gen_%s_%s' % (kind, + step_name)) + except AttributeError: + raise VerificationError( + "not implemented in verify(): %r" % name) + try: + method(tp, realname) + except Exception as e: + model.attach_exception_info(e, name) + raise + + def _load(self, module, step_name, **kwds): + for name, tp in self._get_declarations(): + kind, realname = name.split(' ', 1) + method = getattr(self, '_%s_gen_%s' % (step_name, kind)) + try: + method(tp, realname, module, **kwds) + except Exception as e: + model.attach_exception_info(e, name) + raise + + def _generate_nothing(self, tp, name): + pass + + def _loaded_noop(self, tp, name, module, **kwds): + pass + + # ---------- + # typedefs: generates no code so far + + _generate_gen_typedef_decl = _generate_nothing + _loading_gen_typedef = _loaded_noop + _loaded_gen_typedef = _loaded_noop + + # ---------- + # function declarations + + def _generate_gen_function_decl(self, tp, name): + assert isinstance(tp, model.FunctionPtrType) + if tp.ellipsis: + # cannot support vararg functions better than this: check for its + # exact type (including the fixed arguments), and build it as a + # constant function pointer (no _cffi_f_%s wrapper) + self._generate_gen_const(False, name, tp) + return + prnt = self._prnt + numargs = len(tp.args) + argnames = [] + for i, type in enumerate(tp.args): + indirection = '' + if isinstance(type, model.StructOrUnion): + indirection = '*' + argnames.append('%sx%d' % (indirection, i)) + context = 'argument of %s' % name + arglist = [type.get_c_name(' %s' % arg, context) + for type, arg in zip(tp.args, argnames)] + tpresult = tp.result + if isinstance(tpresult, model.StructOrUnion): + arglist.insert(0, tpresult.get_c_name(' *r', context)) + tpresult = model.void_type + arglist = ', '.join(arglist) or 'void' + wrappername = '_cffi_f_%s' % name + self.export_symbols.append(wrappername) + if tp.abi: + abi = tp.abi + ' ' + else: + abi = '' + funcdecl = ' %s%s(%s)' % (abi, wrappername, arglist) + context = 'result of %s' % name + prnt(tpresult.get_c_name(funcdecl, context)) + prnt('{') + # + if isinstance(tp.result, model.StructOrUnion): + result_code = '*r = ' + elif not isinstance(tp.result, model.VoidType): + result_code = 'return ' + else: + result_code = '' + prnt(' %s%s(%s);' % (result_code, name, ', '.join(argnames))) + prnt('}') + prnt() + + _loading_gen_function = _loaded_noop + + def _loaded_gen_function(self, tp, name, module, library): + assert isinstance(tp, model.FunctionPtrType) + if tp.ellipsis: + newfunction = self._load_constant(False, tp, name, module) + else: + indirections = [] + base_tp = tp + if (any(isinstance(typ, model.StructOrUnion) for typ in tp.args) + or isinstance(tp.result, model.StructOrUnion)): + indirect_args = [] + for i, typ in enumerate(tp.args): + if isinstance(typ, model.StructOrUnion): + typ = model.PointerType(typ) + indirections.append((i, typ)) + indirect_args.append(typ) + indirect_result = tp.result + if isinstance(indirect_result, model.StructOrUnion): + if indirect_result.fldtypes is None: + raise TypeError("'%s' is used as result type, " + "but is opaque" % ( + indirect_result._get_c_name(),)) + indirect_result = model.PointerType(indirect_result) + indirect_args.insert(0, indirect_result) + indirections.insert(0, ("result", indirect_result)) + indirect_result = model.void_type + tp = model.FunctionPtrType(tuple(indirect_args), + indirect_result, tp.ellipsis) + BFunc = self.ffi._get_cached_btype(tp) + wrappername = '_cffi_f_%s' % name + newfunction = module.load_function(BFunc, wrappername) + for i, typ in indirections: + newfunction = self._make_struct_wrapper(newfunction, i, typ, + base_tp) + setattr(library, name, newfunction) + type(library)._cffi_dir.append(name) + + def _make_struct_wrapper(self, oldfunc, i, tp, base_tp): + backend = self.ffi._backend + BType = self.ffi._get_cached_btype(tp) + if i == "result": + ffi = self.ffi + def newfunc(*args): + res = ffi.new(BType) + oldfunc(res, *args) + return res[0] + else: + def newfunc(*args): + args = args[:i] + (backend.newp(BType, args[i]),) + args[i+1:] + return oldfunc(*args) + newfunc._cffi_base_type = base_tp + return newfunc + + # ---------- + # named structs + + def _generate_gen_struct_decl(self, tp, name): + assert name == tp.name + self._generate_struct_or_union_decl(tp, 'struct', name) + + def _loading_gen_struct(self, tp, name, module): + self._loading_struct_or_union(tp, 'struct', name, module) + + def _loaded_gen_struct(self, tp, name, module, **kwds): + self._loaded_struct_or_union(tp) + + def _generate_gen_union_decl(self, tp, name): + assert name == tp.name + self._generate_struct_or_union_decl(tp, 'union', name) + + def _loading_gen_union(self, tp, name, module): + self._loading_struct_or_union(tp, 'union', name, module) + + def _loaded_gen_union(self, tp, name, module, **kwds): + self._loaded_struct_or_union(tp) + + def _generate_struct_or_union_decl(self, tp, prefix, name): + if tp.fldnames is None: + return # nothing to do with opaque structs + checkfuncname = '_cffi_check_%s_%s' % (prefix, name) + layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) + cname = ('%s %s' % (prefix, name)).strip() + # + prnt = self._prnt + prnt('static void %s(%s *p)' % (checkfuncname, cname)) + prnt('{') + prnt(' /* only to generate compile-time warnings or errors */') + prnt(' (void)p;') + for fname, ftype, fbitsize, fqual in tp.enumfields(): + if (isinstance(ftype, model.PrimitiveType) + and ftype.is_integer_type()) or fbitsize >= 0: + # accept all integers, but complain on float or double + prnt(' (void)((p->%s) << 1);' % fname) + else: + # only accept exactly the type declared. + try: + prnt(' { %s = &p->%s; (void)tmp; }' % ( + ftype.get_c_name('*tmp', 'field %r'%fname, quals=fqual), + fname)) + except VerificationError as e: + prnt(' /* %s */' % str(e)) # cannot verify it, ignore + prnt('}') + self.export_symbols.append(layoutfuncname) + prnt('intptr_t %s(intptr_t i)' % (layoutfuncname,)) + prnt('{') + prnt(' struct _cffi_aligncheck { char x; %s y; };' % cname) + prnt(' static intptr_t nums[] = {') + prnt(' sizeof(%s),' % cname) + prnt(' offsetof(struct _cffi_aligncheck, y),') + for fname, ftype, fbitsize, fqual in tp.enumfields(): + if fbitsize >= 0: + continue # xxx ignore fbitsize for now + prnt(' offsetof(%s, %s),' % (cname, fname)) + if isinstance(ftype, model.ArrayType) and ftype.length is None: + prnt(' 0, /* %s */' % ftype._get_c_name()) + else: + prnt(' sizeof(((%s *)0)->%s),' % (cname, fname)) + prnt(' -1') + prnt(' };') + prnt(' return nums[i];') + prnt(' /* the next line is not executed, but compiled */') + prnt(' %s(0);' % (checkfuncname,)) + prnt('}') + prnt() + + def _loading_struct_or_union(self, tp, prefix, name, module): + if tp.fldnames is None: + return # nothing to do with opaque structs + layoutfuncname = '_cffi_layout_%s_%s' % (prefix, name) + # + BFunc = self.ffi._typeof_locked("intptr_t(*)(intptr_t)")[0] + function = module.load_function(BFunc, layoutfuncname) + layout = [] + num = 0 + while True: + x = function(num) + if x < 0: break + layout.append(x) + num += 1 + if isinstance(tp, model.StructOrUnion) and tp.partial: + # use the function()'s sizes and offsets to guide the + # layout of the struct + totalsize = layout[0] + totalalignment = layout[1] + fieldofs = layout[2::2] + fieldsize = layout[3::2] + tp.force_flatten() + assert len(fieldofs) == len(fieldsize) == len(tp.fldnames) + tp.fixedlayout = fieldofs, fieldsize, totalsize, totalalignment + else: + cname = ('%s %s' % (prefix, name)).strip() + self._struct_pending_verification[tp] = layout, cname + + def _loaded_struct_or_union(self, tp): + if tp.fldnames is None: + return # nothing to do with opaque structs + self.ffi._get_cached_btype(tp) # force 'fixedlayout' to be considered + + if tp in self._struct_pending_verification: + # check that the layout sizes and offsets match the real ones + def check(realvalue, expectedvalue, msg): + if realvalue != expectedvalue: + raise VerificationError( + "%s (we have %d, but C compiler says %d)" + % (msg, expectedvalue, realvalue)) + ffi = self.ffi + BStruct = ffi._get_cached_btype(tp) + layout, cname = self._struct_pending_verification.pop(tp) + check(layout[0], ffi.sizeof(BStruct), "wrong total size") + check(layout[1], ffi.alignof(BStruct), "wrong total alignment") + i = 2 + for fname, ftype, fbitsize, fqual in tp.enumfields(): + if fbitsize >= 0: + continue # xxx ignore fbitsize for now + check(layout[i], ffi.offsetof(BStruct, fname), + "wrong offset for field %r" % (fname,)) + if layout[i+1] != 0: + BField = ffi._get_cached_btype(ftype) + check(layout[i+1], ffi.sizeof(BField), + "wrong size for field %r" % (fname,)) + i += 2 + assert i == len(layout) + + # ---------- + # 'anonymous' declarations. These are produced for anonymous structs + # or unions; the 'name' is obtained by a typedef. + + def _generate_gen_anonymous_decl(self, tp, name): + if isinstance(tp, model.EnumType): + self._generate_gen_enum_decl(tp, name, '') + else: + self._generate_struct_or_union_decl(tp, '', name) + + def _loading_gen_anonymous(self, tp, name, module): + if isinstance(tp, model.EnumType): + self._loading_gen_enum(tp, name, module, '') + else: + self._loading_struct_or_union(tp, '', name, module) + + def _loaded_gen_anonymous(self, tp, name, module, **kwds): + if isinstance(tp, model.EnumType): + self._loaded_gen_enum(tp, name, module, **kwds) + else: + self._loaded_struct_or_union(tp) + + # ---------- + # constants, likely declared with '#define' + + def _generate_gen_const(self, is_int, name, tp=None, category='const', + check_value=None): + prnt = self._prnt + funcname = '_cffi_%s_%s' % (category, name) + self.export_symbols.append(funcname) + if check_value is not None: + assert is_int + assert category == 'const' + prnt('int %s(char *out_error)' % funcname) + prnt('{') + self._check_int_constant_value(name, check_value) + prnt(' return 0;') + prnt('}') + elif is_int: + assert category == 'const' + prnt('int %s(long long *out_value)' % funcname) + prnt('{') + prnt(' *out_value = (long long)(%s);' % (name,)) + prnt(' return (%s) <= 0;' % (name,)) + prnt('}') + else: + assert tp is not None + assert check_value is None + if category == 'var': + ampersand = '&' + else: + ampersand = '' + extra = '' + if category == 'const' and isinstance(tp, model.StructOrUnion): + extra = 'const *' + ampersand = '&' + prnt(tp.get_c_name(' %s%s(void)' % (extra, funcname), name)) + prnt('{') + prnt(' return (%s%s);' % (ampersand, name)) + prnt('}') + prnt() + + def _generate_gen_constant_decl(self, tp, name): + is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type() + self._generate_gen_const(is_int, name, tp) + + _loading_gen_constant = _loaded_noop + + def _load_constant(self, is_int, tp, name, module, check_value=None): + funcname = '_cffi_const_%s' % name + if check_value is not None: + assert is_int + self._load_known_int_constant(module, funcname) + value = check_value + elif is_int: + BType = self.ffi._typeof_locked("long long*")[0] + BFunc = self.ffi._typeof_locked("int(*)(long long*)")[0] + function = module.load_function(BFunc, funcname) + p = self.ffi.new(BType) + negative = function(p) + value = int(p[0]) + if value < 0 and not negative: + BLongLong = self.ffi._typeof_locked("long long")[0] + value += (1 << (8*self.ffi.sizeof(BLongLong))) + else: + assert check_value is None + fntypeextra = '(*)(void)' + if isinstance(tp, model.StructOrUnion): + fntypeextra = '*' + fntypeextra + BFunc = self.ffi._typeof_locked(tp.get_c_name(fntypeextra, name))[0] + function = module.load_function(BFunc, funcname) + value = function() + if isinstance(tp, model.StructOrUnion): + value = value[0] + return value + + def _loaded_gen_constant(self, tp, name, module, library): + is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type() + value = self._load_constant(is_int, tp, name, module) + setattr(library, name, value) + type(library)._cffi_dir.append(name) + + # ---------- + # enums + + def _check_int_constant_value(self, name, value): + prnt = self._prnt + if value <= 0: + prnt(' if ((%s) > 0 || (long)(%s) != %dL) {' % ( + name, name, value)) + else: + prnt(' if ((%s) <= 0 || (unsigned long)(%s) != %dUL) {' % ( + name, name, value)) + prnt(' char buf[64];') + prnt(' if ((%s) <= 0)' % name) + prnt(' sprintf(buf, "%%ld", (long)(%s));' % name) + prnt(' else') + prnt(' sprintf(buf, "%%lu", (unsigned long)(%s));' % + name) + prnt(' sprintf(out_error, "%s has the real value %s, not %s",') + prnt(' "%s", buf, "%d");' % (name[:100], value)) + prnt(' return -1;') + prnt(' }') + + def _load_known_int_constant(self, module, funcname): + BType = self.ffi._typeof_locked("char[]")[0] + BFunc = self.ffi._typeof_locked("int(*)(char*)")[0] + function = module.load_function(BFunc, funcname) + p = self.ffi.new(BType, 256) + if function(p) < 0: + error = self.ffi.string(p) + if sys.version_info >= (3,): + error = str(error, 'utf-8') + raise VerificationError(error) + + def _enum_funcname(self, prefix, name): + # "$enum_$1" => "___D_enum____D_1" + name = name.replace('$', '___D_') + return '_cffi_e_%s_%s' % (prefix, name) + + def _generate_gen_enum_decl(self, tp, name, prefix='enum'): + if tp.partial: + for enumerator in tp.enumerators: + self._generate_gen_const(True, enumerator) + return + # + funcname = self._enum_funcname(prefix, name) + self.export_symbols.append(funcname) + prnt = self._prnt + prnt('int %s(char *out_error)' % funcname) + prnt('{') + for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): + self._check_int_constant_value(enumerator, enumvalue) + prnt(' return 0;') + prnt('}') + prnt() + + def _loading_gen_enum(self, tp, name, module, prefix='enum'): + if tp.partial: + enumvalues = [self._load_constant(True, tp, enumerator, module) + for enumerator in tp.enumerators] + tp.enumvalues = tuple(enumvalues) + tp.partial_resolved = True + else: + funcname = self._enum_funcname(prefix, name) + self._load_known_int_constant(module, funcname) + + def _loaded_gen_enum(self, tp, name, module, library): + for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues): + setattr(library, enumerator, enumvalue) + type(library)._cffi_dir.append(enumerator) + + # ---------- + # macros: for now only for integers + + def _generate_gen_macro_decl(self, tp, name): + if tp == '...': + check_value = None + else: + check_value = tp # an integer + self._generate_gen_const(True, name, check_value=check_value) + + _loading_gen_macro = _loaded_noop + + def _loaded_gen_macro(self, tp, name, module, library): + if tp == '...': + check_value = None + else: + check_value = tp # an integer + value = self._load_constant(True, tp, name, module, + check_value=check_value) + setattr(library, name, value) + type(library)._cffi_dir.append(name) + + # ---------- + # global variables + + def _generate_gen_variable_decl(self, tp, name): + if isinstance(tp, model.ArrayType): + if tp.length_is_unknown(): + prnt = self._prnt + funcname = '_cffi_sizeof_%s' % (name,) + self.export_symbols.append(funcname) + prnt("size_t %s(void)" % funcname) + prnt("{") + prnt(" return sizeof(%s);" % (name,)) + prnt("}") + tp_ptr = model.PointerType(tp.item) + self._generate_gen_const(False, name, tp_ptr) + else: + tp_ptr = model.PointerType(tp) + self._generate_gen_const(False, name, tp_ptr, category='var') + + _loading_gen_variable = _loaded_noop + + def _loaded_gen_variable(self, tp, name, module, library): + if isinstance(tp, model.ArrayType): # int a[5] is "constant" in the + # sense that "a=..." is forbidden + if tp.length_is_unknown(): + funcname = '_cffi_sizeof_%s' % (name,) + BFunc = self.ffi._typeof_locked('size_t(*)(void)')[0] + function = module.load_function(BFunc, funcname) + size = function() + BItemType = self.ffi._get_cached_btype(tp.item) + length, rest = divmod(size, self.ffi.sizeof(BItemType)) + if rest != 0: + raise VerificationError( + "bad size: %r does not seem to be an array of %s" % + (name, tp.item)) + tp = tp.resolve_length(length) + tp_ptr = model.PointerType(tp.item) + value = self._load_constant(False, tp_ptr, name, module) + # 'value' is a which we have to replace with + # a if the N is actually known + if tp.length is not None: + BArray = self.ffi._get_cached_btype(tp) + value = self.ffi.cast(BArray, value) + setattr(library, name, value) + type(library)._cffi_dir.append(name) + return + # remove ptr= from the library instance, and replace + # it by a property on the class, which reads/writes into ptr[0]. + funcname = '_cffi_var_%s' % name + BFunc = self.ffi._typeof_locked(tp.get_c_name('*(*)(void)', name))[0] + function = module.load_function(BFunc, funcname) + ptr = function() + def getter(library): + return ptr[0] + def setter(library, value): + ptr[0] = value + setattr(type(library), name, property(getter, setter)) + type(library)._cffi_dir.append(name) + +cffimod_header = r''' +#include +#include +#include +#include +#include /* XXX for ssize_t on some platforms */ + +/* this block of #ifs should be kept exactly identical between + c/_cffi_backend.c, cffi/vengine_cpy.py, cffi/vengine_gen.py + and cffi/_cffi_include.h */ +#if defined(_MSC_VER) +# include /* for alloca() */ +# if _MSC_VER < 1600 /* MSVC < 2010 */ + typedef __int8 int8_t; + typedef __int16 int16_t; + typedef __int32 int32_t; + typedef __int64 int64_t; + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + typedef unsigned __int64 uint64_t; + typedef __int8 int_least8_t; + typedef __int16 int_least16_t; + typedef __int32 int_least32_t; + typedef __int64 int_least64_t; + typedef unsigned __int8 uint_least8_t; + typedef unsigned __int16 uint_least16_t; + typedef unsigned __int32 uint_least32_t; + typedef unsigned __int64 uint_least64_t; + typedef __int8 int_fast8_t; + typedef __int16 int_fast16_t; + typedef __int32 int_fast32_t; + typedef __int64 int_fast64_t; + typedef unsigned __int8 uint_fast8_t; + typedef unsigned __int16 uint_fast16_t; + typedef unsigned __int32 uint_fast32_t; + typedef unsigned __int64 uint_fast64_t; + typedef __int64 intmax_t; + typedef unsigned __int64 uintmax_t; +# else +# include +# endif +# if _MSC_VER < 1800 /* MSVC < 2013 */ +# ifndef __cplusplus + typedef unsigned char _Bool; +# endif +# endif +# define _cffi_float_complex_t _Fcomplex /* include for it */ +# define _cffi_double_complex_t _Dcomplex /* include for it */ +#else +# include +# if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux) +# include +# endif +# define _cffi_float_complex_t float _Complex +# define _cffi_double_complex_t double _Complex +#endif +''' diff --git a/intelliaide/vendor/cffi/verifier.py b/intelliaide/vendor/cffi/verifier.py new file mode 100644 index 0000000..e392a2b --- /dev/null +++ b/intelliaide/vendor/cffi/verifier.py @@ -0,0 +1,306 @@ +# +# DEPRECATED: implementation for ffi.verify() +# +import sys, os, binascii, shutil, io +from . import __version_verifier_modules__ +from . import ffiplatform +from .error import VerificationError + +if sys.version_info >= (3, 3): + import importlib.machinery + def _extension_suffixes(): + return importlib.machinery.EXTENSION_SUFFIXES[:] +else: + import imp + def _extension_suffixes(): + return [suffix for suffix, _, type in imp.get_suffixes() + if type == imp.C_EXTENSION] + + +if sys.version_info >= (3,): + NativeIO = io.StringIO +else: + class NativeIO(io.BytesIO): + def write(self, s): + if isinstance(s, unicode): + s = s.encode('ascii') + super(NativeIO, self).write(s) + + +class Verifier(object): + + def __init__(self, ffi, preamble, tmpdir=None, modulename=None, + ext_package=None, tag='', force_generic_engine=False, + source_extension='.c', flags=None, relative_to=None, **kwds): + if ffi._parser._uses_new_feature: + raise VerificationError( + "feature not supported with ffi.verify(), but only " + "with ffi.set_source(): %s" % (ffi._parser._uses_new_feature,)) + self.ffi = ffi + self.preamble = preamble + if not modulename: + flattened_kwds = ffiplatform.flatten(kwds) + vengine_class = _locate_engine_class(ffi, force_generic_engine) + self._vengine = vengine_class(self) + self._vengine.patch_extension_kwds(kwds) + self.flags = flags + self.kwds = self.make_relative_to(kwds, relative_to) + # + if modulename: + if tag: + raise TypeError("can't specify both 'modulename' and 'tag'") + else: + key = '\x00'.join(['%d.%d' % sys.version_info[:2], + __version_verifier_modules__, + preamble, flattened_kwds] + + ffi._cdefsources) + if sys.version_info >= (3,): + key = key.encode('utf-8') + k1 = hex(binascii.crc32(key[0::2]) & 0xffffffff) + k1 = k1.lstrip('0x').rstrip('L') + k2 = hex(binascii.crc32(key[1::2]) & 0xffffffff) + k2 = k2.lstrip('0').rstrip('L') + modulename = '_cffi_%s_%s%s%s' % (tag, self._vengine._class_key, + k1, k2) + suffix = _get_so_suffixes()[0] + self.tmpdir = tmpdir or _caller_dir_pycache() + self.sourcefilename = os.path.join(self.tmpdir, modulename + source_extension) + self.modulefilename = os.path.join(self.tmpdir, modulename + suffix) + self.ext_package = ext_package + self._has_source = False + self._has_module = False + + def write_source(self, file=None): + """Write the C source code. It is produced in 'self.sourcefilename', + which can be tweaked beforehand.""" + with self.ffi._lock: + if self._has_source and file is None: + raise VerificationError( + "source code already written") + self._write_source(file) + + def compile_module(self): + """Write the C source code (if not done already) and compile it. + This produces a dynamic link library in 'self.modulefilename'.""" + with self.ffi._lock: + if self._has_module: + raise VerificationError("module already compiled") + if not self._has_source: + self._write_source() + self._compile_module() + + def load_library(self): + """Get a C module from this Verifier instance. + Returns an instance of a FFILibrary class that behaves like the + objects returned by ffi.dlopen(), but that delegates all + operations to the C module. If necessary, the C code is written + and compiled first. + """ + with self.ffi._lock: + if not self._has_module: + self._locate_module() + if not self._has_module: + if not self._has_source: + self._write_source() + self._compile_module() + return self._load_library() + + def get_module_name(self): + basename = os.path.basename(self.modulefilename) + # kill both the .so extension and the other .'s, as introduced + # by Python 3: 'basename.cpython-33m.so' + basename = basename.split('.', 1)[0] + # and the _d added in Python 2 debug builds --- but try to be + # conservative and not kill a legitimate _d + if basename.endswith('_d') and hasattr(sys, 'gettotalrefcount'): + basename = basename[:-2] + return basename + + def get_extension(self): + if not self._has_source: + with self.ffi._lock: + if not self._has_source: + self._write_source() + sourcename = ffiplatform.maybe_relative_path(self.sourcefilename) + modname = self.get_module_name() + return ffiplatform.get_extension(sourcename, modname, **self.kwds) + + def generates_python_module(self): + return self._vengine._gen_python_module + + def make_relative_to(self, kwds, relative_to): + if relative_to and os.path.dirname(relative_to): + dirname = os.path.dirname(relative_to) + kwds = kwds.copy() + for key in ffiplatform.LIST_OF_FILE_NAMES: + if key in kwds: + lst = kwds[key] + if not isinstance(lst, (list, tuple)): + raise TypeError("keyword '%s' should be a list or tuple" + % (key,)) + lst = [os.path.join(dirname, fn) for fn in lst] + kwds[key] = lst + return kwds + + # ---------- + + def _locate_module(self): + if not os.path.isfile(self.modulefilename): + if self.ext_package: + try: + pkg = __import__(self.ext_package, None, None, ['__doc__']) + except ImportError: + return # cannot import the package itself, give up + # (e.g. it might be called differently before installation) + path = pkg.__path__ + else: + path = None + filename = self._vengine.find_module(self.get_module_name(), path, + _get_so_suffixes()) + if filename is None: + return + self.modulefilename = filename + self._vengine.collect_types() + self._has_module = True + + def _write_source_to(self, file): + self._vengine._f = file + try: + self._vengine.write_source_to_f() + finally: + del self._vengine._f + + def _write_source(self, file=None): + if file is not None: + self._write_source_to(file) + else: + # Write our source file to an in memory file. + f = NativeIO() + self._write_source_to(f) + source_data = f.getvalue() + + # Determine if this matches the current file + if os.path.exists(self.sourcefilename): + with open(self.sourcefilename, "r") as fp: + needs_written = not (fp.read() == source_data) + else: + needs_written = True + + # Actually write the file out if it doesn't match + if needs_written: + _ensure_dir(self.sourcefilename) + with open(self.sourcefilename, "w") as fp: + fp.write(source_data) + + # Set this flag + self._has_source = True + + def _compile_module(self): + # compile this C source + tmpdir = os.path.dirname(self.sourcefilename) + outputfilename = ffiplatform.compile(tmpdir, self.get_extension()) + try: + same = ffiplatform.samefile(outputfilename, self.modulefilename) + except OSError: + same = False + if not same: + _ensure_dir(self.modulefilename) + shutil.move(outputfilename, self.modulefilename) + self._has_module = True + + def _load_library(self): + assert self._has_module + if self.flags is not None: + return self._vengine.load_library(self.flags) + else: + return self._vengine.load_library() + +# ____________________________________________________________ + +_FORCE_GENERIC_ENGINE = False # for tests + +def _locate_engine_class(ffi, force_generic_engine): + if _FORCE_GENERIC_ENGINE: + force_generic_engine = True + if not force_generic_engine: + if '__pypy__' in sys.builtin_module_names: + force_generic_engine = True + else: + try: + import _cffi_backend + except ImportError: + _cffi_backend = '?' + if ffi._backend is not _cffi_backend: + force_generic_engine = True + if force_generic_engine: + from . import vengine_gen + return vengine_gen.VGenericEngine + else: + from . import vengine_cpy + return vengine_cpy.VCPythonEngine + +# ____________________________________________________________ + +_TMPDIR = None + +def _caller_dir_pycache(): + if _TMPDIR: + return _TMPDIR + result = os.environ.get('CFFI_TMPDIR') + if result: + return result + filename = sys._getframe(2).f_code.co_filename + return os.path.abspath(os.path.join(os.path.dirname(filename), + '__pycache__')) + +def set_tmpdir(dirname): + """Set the temporary directory to use instead of __pycache__.""" + global _TMPDIR + _TMPDIR = dirname + +def cleanup_tmpdir(tmpdir=None, keep_so=False): + """Clean up the temporary directory by removing all files in it + called `_cffi_*.{c,so}` as well as the `build` subdirectory.""" + tmpdir = tmpdir or _caller_dir_pycache() + try: + filelist = os.listdir(tmpdir) + except OSError: + return + if keep_so: + suffix = '.c' # only remove .c files + else: + suffix = _get_so_suffixes()[0].lower() + for fn in filelist: + if fn.lower().startswith('_cffi_') and ( + fn.lower().endswith(suffix) or fn.lower().endswith('.c')): + try: + os.unlink(os.path.join(tmpdir, fn)) + except OSError: + pass + clean_dir = [os.path.join(tmpdir, 'build')] + for dir in clean_dir: + try: + for fn in os.listdir(dir): + fn = os.path.join(dir, fn) + if os.path.isdir(fn): + clean_dir.append(fn) + else: + os.unlink(fn) + except OSError: + pass + +def _get_so_suffixes(): + suffixes = _extension_suffixes() + if not suffixes: + # bah, no C_EXTENSION available. Occurs on pypy without cpyext + if sys.platform == 'win32': + suffixes = [".pyd"] + else: + suffixes = [".so"] + + return suffixes + +def _ensure_dir(filename): + dirname = os.path.dirname(filename) + if dirname and not os.path.isdir(dirname): + os.makedirs(dirname) diff --git a/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/INSTALLER b/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/METADATA b/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/METADATA new file mode 100644 index 0000000..6b5a360 --- /dev/null +++ b/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/METADATA @@ -0,0 +1,808 @@ +Metadata-Version: 2.4 +Name: charset-normalizer +Version: 3.4.7 +Summary: The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet. +Author-email: "Ahmed R. TAHRI" +Maintainer-email: "Ahmed R. TAHRI" +License: MIT +Project-URL: Changelog, https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md +Project-URL: Documentation, https://charset-normalizer.readthedocs.io/ +Project-URL: Code, https://github.com/jawah/charset_normalizer +Project-URL: Issue tracker, https://github.com/jawah/charset_normalizer/issues +Keywords: encoding,charset,charset-detector,detector,normalization,unicode,chardet,detect +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +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 :: 3.14 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Programming Language :: Python :: Free Threading :: 4 - Resilient +Classifier: Topic :: Text Processing :: Linguistic +Classifier: Topic :: Utilities +Classifier: Typing :: Typed +Requires-Python: >=3.7 +Description-Content-Type: text/markdown +License-File: LICENSE +Provides-Extra: unicode-backport +Dynamic: license-file + +

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. +> You can also register your own set of codecs, and yes, it would work as-is. + +

+ >>>>> 👉 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`[^1] | ❌ | ✅ | ❌ | +| `Reliable` **without** distinguishable standards | ✅ | ✅ | ✅ | +| `Reliable` **with** distinguishable standards | ✅ | ✅ | ✅ | +| `License` | _Disputed_[^2]
_restrictive_ | MIT | MPL-1.1
_restrictive_ | +| `Native Python` | ✅ | ✅ | ❌ | +| `Detect spoken language` | ✅ | ✅ | N/A | +| `UnicodeDecodeError Safety` | ✅ | ✅ | ❌ | +| `Whl Size (min)` | 500 kB | 150 kB | ~200 kB | +| `Supported Encoding` | 99 | [99](https://charset-normalizer.readthedocs.io/en/latest/user/support.html#supported-encodings) | 40 | +| `Can register custom encoding` | ❌ | ✅ | ❌ | + +

+Reading Normalized TextCat Reading Text +

+ +[^1]: They are clearly using specific code for a specific encoding even if covering most of used one. +[^2]: Chardet 7.0+ was relicensed from LGPL-2.1 to MIT following an AI-assisted rewrite. This relicensing is disputed on two independent grounds: **(a)** the original author [contests](https://github.com/chardet/chardet/issues/327) that the maintainer had the right to relicense, arguing the rewrite is a derivative work of the LGPL-licensed codebase since it was not a clean room implementation; **(b)** the copyright claim itself is [questionable](https://github.com/chardet/chardet/issues/334) given the code was primarily generated by an LLM, and AI-generated output may not be copyrightable under most jurisdictions. Either issue alone could undermine the MIT license. Beyond licensing, the rewrite raises questions about responsible use of AI in open source: key architectural ideas pioneered by charset-normalizer - notably decode-first validity filtering (our foundational approach since v1) and encoding pairwise similarity with the same algorithm and threshold — surfaced in chardet 7 without acknowledgment. The project also imported test files from charset-normalizer to train and benchmark against it, then claimed superior accuracy on those very files. Charset-normalizer has always been MIT-licensed, encoding-agnostic by design, and built on a verifiable human-authored history. + +## ⚡ Performance + +This package offer better performances (99th, and 95th) against Chardet. Here are some numbers. + +| Package | Accuracy | Mean per file (ms) | File per sec (est) | +|---------------------------------------------------|:--------:|:------------------:|:------------------:| +| [chardet 7.1](https://github.com/chardet/chardet) | 89 % | 3 ms | 333 file/sec | +| charset-normalizer | **97 %** | 3 ms | 333 file/sec | + +| Package | 99th percentile | 95th percentile | 50th percentile | +|---------------------------------------------------|:---------------:|:---------------:|:---------------:| +| [chardet 7.1](https://github.com/chardet/chardet) | 32 ms | 17 ms | < 1 ms | +| charset-normalizer | 16 ms | 10 ms | 1 ms | + +_updated as of March 2026 using CPython 3.12, Charset-Normalizer 3.4.6, and Chardet 7.1.0_ + +~Chardet's performance on larger file (1MB+) are very poor. Expect huge difference on large payload.~ No longer the case since Chardet 7.0+ + +> 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. +> Chardet claims on his documentation to have a greater accuracy than us based on the dataset they trained Chardet on(...) +> Well, it's normal, the opposite would have been worrying. Whereas charset-normalizer don't train on anything, our solution +> is based on a completely different algorithm, still heuristic through, it does not need weights across every encoding tables. + +## ✨ 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 (aka. defining noise in rendered text). + 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 + +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 + +[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/7297/badge)](https://www.bestpractices.dev/projects/7297) + +# 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.7](https://github.com/Ousret/charset_normalizer/compare/3.4.6...3.4.7) (2026-04-02) + +### Changed +- Pre-built optimized version using mypy[c] v1.20. +- Relax `setuptools` constraint to `setuptools>=68,<82.1`. + +### Fixed +- Correctly remove SIG remnant in utf-7 decoded string. (#718) (#716) + +## [3.4.6](https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6) (2026-03-15) + +### Changed +- Flattened the logic in `charset_normalizer.md` for higher performance. Removed `eligible(..)` and `feed(...)` + in favor of `feed_info(...)`. +- Raised upper bound for mypy[c] to 1.20, for our optimized version. +- Updated `UNICODE_RANGES_COMBINED` using Unicode blocks v17. + +### Fixed +- Edge case where noise difference between two candidates can be almost insignificant. (#672) +- CLI `--normalize` writing to wrong path when passing multiple files in. (#702) + +### Misc +- Freethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (#616) + +## [3.4.5](https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5) (2026-03-06) + +### Changed +- Update `setuptools` constraint to `setuptools>=68,<=82`. +- Raised upper bound of mypyc for the optional pre-built extension to v1.19.1 + +### Fixed +- Add explicit link to lib math in our optimized build. (#692) +- Logger level not restored correctly for empty byte sequences. (#701) +- TypeError when passing bytearray to from_bytes. (#703) + +### Misc +- Applied safe micro-optimizations in both our noise detector and language detector. +- Rewrote the `query_yes_no` function (inside CLI) to avoid using ambiguous licensed code. +- Added `cd.py` submodule into mypyc optional compilation to reduce further the performance impact. + +## [3.4.4](https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4) (2025-10-13) + +### Changed +- Bound `setuptools` to a specific constraint `setuptools>=68,<=81`. +- Raised upper bound of mypyc for the optional pre-built extension to v1.18.2 + +### Removed +- `setuptools-scm` as a build dependency. + +### Misc +- Enforced hashes in `dev-requirements.txt` and created `ci-requirements.txt` for security purposes. +- Additional pre-built wheels for riscv64, s390x, and armv7l architectures. +- Restore ` multiple.intoto.jsonl` in GitHub releases in addition to individual attestation file per wheel. + +## [3.4.3](https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3) (2025-08-09) + +### Changed +- mypy(c) is no longer a required dependency at build time if `CHARSET_NORMALIZER_USE_MYPYC` isn't set to `1`. (#595) (#583) +- automatically lower confidence on small bytes samples that are not Unicode in `detect` output legacy function. (#391) + +### Added +- Custom build backend to overcome inability to mark mypy as an optional dependency in the build phase. +- Support for Python 3.14 + +### Fixed +- sdist archive contained useless directories. +- automatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (#633) + +### Misc +- SBOM are automatically published to the relevant GitHub release to comply with regulatory changes. + Each published wheel comes with its SBOM. We choose CycloneDX as the format. +- Prebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel. + +## [3.4.2](https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2) (2025-05-02) + +### Fixed +- Addressed the DeprecationWarning in our CLI regarding `argparse.FileType` by backporting the target class into the package. (#591) +- Improved the overall reliability of the detector with CJK Ideographs. (#605) (#587) + +### Changed +- Optional mypyc compilation upgraded to version 1.15 for Python >= 3.8 + +## [3.4.1](https://github.com/Ousret/charset_normalizer/compare/3.4.0...3.4.1) (2024-12-24) + +### Changed +- Project metadata are now stored using `pyproject.toml` instead of `setup.cfg` using setuptools as the build backend. +- Enforce annotation delayed loading for a simpler and consistent types in the project. +- Optional mypyc compilation upgraded to version 1.14 for Python >= 3.8 + +### Added +- pre-commit configuration. +- noxfile. + +### Removed +- `build-requirements.txt` as per using `pyproject.toml` native build configuration. +- `bin/integration.py` and `bin/serve.py` in favor of downstream integration test (see noxfile). +- `setup.cfg` in favor of `pyproject.toml` metadata configuration. +- Unused `utils.range_scan` function. + +### Fixed +- Converting content to Unicode bytes may insert `utf_8` instead of preferred `utf-8`. (#572) +- Deprecation warning "'count' is passed as positional argument" when converting to Unicode bytes on Python 3.13+ + +## [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) 2025 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/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/RECORD b/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/RECORD new file mode 100644 index 0000000..f63c9ce --- /dev/null +++ b/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/RECORD @@ -0,0 +1,36 @@ +../../bin/normalizer,sha256=PzdTuNC86gjdRjVHeBYgJPKgNLWHvNkYNyydtmVP-5o,245 +81d243bd2c585b0f4821__mypyc.cpython-312-x86_64-linux-gnu.so,sha256=xPTGB-9iuOqJ5RfI3qaB1WzuFAm1oYWbgN1Jz9U1wn0,433312 +charset_normalizer-3.4.7.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +charset_normalizer-3.4.7.dist-info/METADATA,sha256=K8lK8L8LaZ1YmKvWLt3zEkpIxiCOC58xNhzFQrfQJxQ,40931 +charset_normalizer-3.4.7.dist-info/RECORD,, +charset_normalizer-3.4.7.dist-info/WHEEL,sha256=Tc3fF66yn9Kh-hkUUsdKQyuB9Lw0CDoeANnEbSVc3f4,190 +charset_normalizer-3.4.7.dist-info/entry_points.txt,sha256=ADSTKrkXZ3hhdOVFi6DcUEHQRS0xfxDIE_pEz4wLIXA,65 +charset_normalizer-3.4.7.dist-info/licenses/LICENSE,sha256=bQ1Bv-FwrGx9wkjJpj4lTQ-0WmDVCoJX0K-SxuJJuIc,1071 +charset_normalizer-3.4.7.dist-info/top_level.txt,sha256=c_vZbitqecT2GfK3zdxSTLCn8C-6pGnHQY5o_5Y32M0,47 +charset_normalizer/__init__.py,sha256=OKRxRv2Zhnqk00tqkN0c1BtJjm165fWXLydE52IKuHc,1590 +charset_normalizer/__main__.py,sha256=yzYxMR-IhKRHYwcSlavEv8oGdwxsR89mr2X09qXGdps,109 +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=387F3n23MlMu-xfSbFULW2DLGsBmVrZVGhnkiGXeKBo,38844 +charset_normalizer/cd.cpython-312-x86_64-linux-gnu.so,sha256=gOe65H__3O8_4a-aSVMB8gxHsRxVyQDUqqaIurPmIhE,15912 +charset_normalizer/cd.py,sha256=v0iPJweGsRegXywrM1LzUgqW9bJ1KFvIblQHP1jm5FQ,15174 +charset_normalizer/cli/__init__.py,sha256=D8I86lFk2-py45JvqxniTirSj_sFyE6sjaY_0-G1shc,136 +charset_normalizer/cli/__main__.py,sha256=E9FFSV1E2iOE_B2B1tJHQT9ExJqc60Ks_c-08sNawh8,11940 +charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc,, +charset_normalizer/cli/__pycache__/__main__.cpython-312.pyc,, +charset_normalizer/constant.py,sha256=yvLAWDrdSC743Cu4amhwHLIO-FGuRTOTZouCzZKGikc,44431 +charset_normalizer/legacy.py,sha256=yBIFMNABNPE5JkdKOWyVo36fZtV9nm8bf37LrDWulz8,2661 +charset_normalizer/md.cpython-312-x86_64-linux-gnu.so,sha256=iYaQbya7NVRR7xg5FtK1yAKS5shmTFwmtkqqQbbvEWs,15912 +charset_normalizer/md.py,sha256=AYCdfDX79FrgoId3zXqmbCuDcbGr1NRuGqgJN94Rx9Q,30441 +charset_normalizer/models.py,sha256=FbaQnI6ECmVmyHRSvVM5fHNeMAQ3KSGdwLjGcQqWDws,12821 +charset_normalizer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +charset_normalizer/utils.py,sha256=9cpi-_0-vC9pGDfuoarhC6VlF_Jxwx5Jsa_8I4w2D8k,12282 +charset_normalizer/version.py,sha256=2LxFuGp3BBuIwt95cp64y7v8bCNHcMAi08IfXt_47Co,115 diff --git a/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/WHEEL b/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/WHEEL new file mode 100644 index 0000000..0493eaf --- /dev/null +++ b/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/WHEEL @@ -0,0 +1,7 @@ +Wheel-Version: 1.0 +Generator: setuptools (82.0.1) +Root-Is-Purelib: false +Tag: cp312-cp312-manylinux_2_17_x86_64 +Tag: cp312-cp312-manylinux2014_x86_64 +Tag: cp312-cp312-manylinux_2_28_x86_64 + diff --git a/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/entry_points.txt b/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/entry_points.txt new file mode 100644 index 0000000..65619e7 --- /dev/null +++ b/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/entry_points.txt @@ -0,0 +1,2 @@ +[console_scripts] +normalizer = charset_normalizer.cli:cli_detect diff --git a/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/licenses/LICENSE b/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/licenses/LICENSE new file mode 100644 index 0000000..9725772 --- /dev/null +++ b/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/licenses/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 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/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/top_level.txt b/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/top_level.txt new file mode 100644 index 0000000..89847be --- /dev/null +++ b/intelliaide/vendor/charset_normalizer-3.4.7.dist-info/top_level.txt @@ -0,0 +1,2 @@ +81d243bd2c585b0f4821__mypyc +charset_normalizer diff --git a/intelliaide/vendor/charset_normalizer/__init__.py b/intelliaide/vendor/charset_normalizer/__init__.py new file mode 100644 index 0000000..0d3a379 --- /dev/null +++ b/intelliaide/vendor/charset_normalizer/__init__.py @@ -0,0 +1,48 @@ +""" +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. +""" + +from __future__ import annotations + +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/intelliaide/vendor/charset_normalizer/__main__.py b/intelliaide/vendor/charset_normalizer/__main__.py new file mode 100644 index 0000000..e0e76f7 --- /dev/null +++ b/intelliaide/vendor/charset_normalizer/__main__.py @@ -0,0 +1,6 @@ +from __future__ import annotations + +from .cli import cli_detect + +if __name__ == "__main__": + cli_detect() diff --git a/intelliaide/vendor/charset_normalizer/api.py b/intelliaide/vendor/charset_normalizer/api.py new file mode 100644 index 0000000..50cb955 --- /dev/null +++ b/intelliaide/vendor/charset_normalizer/api.py @@ -0,0 +1,988 @@ +from __future__ import annotations + +import logging +from os import PathLike +from typing import BinaryIO + +from .cd import ( + coherence_ratio, + encoding_languages, + mb_encoding_languages, + merge_coherence_ratios, +) +from .constant import ( + IANA_SUPPORTED, + IANA_SUPPORTED_SIMILAR, + 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_multi_byte_encoding, + should_strip_sig_or_bom, +) + +logger = logging.getLogger("charset_normalizer") +explain_handler = logging.StreamHandler() +explain_handler.setFormatter( + logging.Formatter("%(asctime)s | %(levelname)s | %(message)s") +) + +# Pre-compute a reordered encoding list: multibyte first, then single-byte. +# This allows the mb_definitive_match optimization to fire earlier, skipping +# all single-byte encodings for genuine CJK content. Multibyte codecs +# hard-fail (UnicodeDecodeError) on single-byte data almost instantly, so +# testing them first costs negligible time for non-CJK files. +_mb_supported: list[str] = [] +_sb_supported: list[str] = [] + +for _supported_enc in IANA_SUPPORTED: + try: + if is_multi_byte_encoding(_supported_enc): + _mb_supported.append(_supported_enc) + else: + _sb_supported.append(_supported_enc) + except ImportError: + _sb_supported.append(_supported_enc) + +IANA_SUPPORTED_MB_FIRST: list[str] = _mb_supported + _sb_supported + + +def from_bytes( + sequences: bytes | bytearray, + steps: int = 5, + chunk_size: int = 512, + threshold: float = 0.2, + cp_isolation: list[str] | None = None, + cp_exclusion: list[str] | None = 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: {}".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: # Defensive: ensure exit path clean handler + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + 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: str | None = ( + 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] = [] + soft_failure_skip: set[str] = set() + success_fast_tracked: set[str] = set() + + # Cache for decoded payload deduplication: hash(decoded_payload) -> (mean_mess_ratio, cd_ratios_merged, passed) + # When multiple encodings decode to the exact same string, we can skip the expensive + # mess_ratio and coherence_ratio analysis and reuse the results from the first encoding. + payload_result_cache: dict[int, tuple[float, list[tuple[str, float]], bool]] = {} + + # When a definitive result (chaos=0.0 and good coherence) is found after testing + # the prioritized encodings (ascii, utf_8), we can significantly reduce the remaining + # work. Encodings that target completely different language families (e.g., Cyrillic + # when the definitive match is Latin) are skipped entirely. + # Additionally, for same-family encodings that pass chaos probing, we reuse the + # definitive match's coherence ratios instead of recomputing them — a major savings + # since coherence_ratio accounts for ~30% of total time on slow Latin files. + definitive_match_found: bool = False + definitive_target_languages: set[str] = set() + # After the definitive match fires, we cap the number of additional same-family + # single-byte encodings that pass chaos probing. Once we've accumulated enough + # good candidates (N), further same-family SB encodings are unlikely to produce + # a better best() result and just waste mess_ratio + coherence_ratio time. + # The first encoding to trigger the definitive match is NOT counted (it's already in). + post_definitive_sb_success_count: int = 0 + POST_DEFINITIVE_SB_CAP: int = 7 + + # When a non-UTF multibyte encoding passes chaos probing with significant multibyte + # content (decoded length < 98% of raw length), skip all remaining single-byte encodings. + # Rationale: multi-byte decoders (CJK) have strict byte-sequence validation — if they + # decode without error AND pass chaos probing with substantial multibyte content, the + # data is genuinely multibyte encoded. Single-byte encodings will always decode (every + # byte maps to something) but waste time on mess_ratio before failing. + # The 98% threshold prevents false triggers on files that happen to have a few valid + # multibyte pairs (e.g., cp424/_ude_1.txt where big5 decodes with 99% ratio). + mb_definitive_match_found: bool = False + + fallback_ascii: CharsetMatch | None = None + fallback_u8: CharsetMatch | None = None + fallback_specified: CharsetMatch | None = 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_MB_FIRST: + 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: str | None = 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 + + # Skip encodings similar to ones that already soft-failed (high mess ratio). + # Checked BEFORE the expensive decode attempt. + if encoding_iana in soft_failure_skip: + logger.log( + TRACE, + "%s is deemed too similar to a code page that was already considered unsuited. Continuing!", + encoding_iana, + ) + continue + + # Skip encodings that were already fast-tracked from a similar successful encoding. + if encoding_iana in success_fast_tracked: + logger.log( + TRACE, + "Skipping %s: already fast-tracked from a similar successful encoding.", + encoding_iana, + ) + continue + + try: + is_multi_byte_decoder: bool = is_multi_byte_encoding(encoding_iana) + except (ModuleNotFoundError, ImportError): # Defensive: + logger.log( + TRACE, + "Encoding %s does not provide an IncrementalDecoder", + encoding_iana, + ) + continue + + # When we've already found a definitive match (chaos=0.0 with good coherence) + # after testing the prioritized encodings, skip encodings that target + # completely different language families. This avoids running expensive + # mess_ratio + coherence_ratio on clearly unrelated candidates (e.g., Cyrillic + # when the definitive match is Latin-based). + if definitive_match_found: + if not is_multi_byte_decoder: + enc_languages = set(encoding_languages(encoding_iana)) + else: + enc_languages = set(mb_encoding_languages(encoding_iana)) + if not enc_languages.intersection(definitive_target_languages): + logger.log( + TRACE, + "Skipping %s: definitive match already found, this encoding targets different languages (%s vs %s).", + encoding_iana, + enc_languages, + definitive_target_languages, + ) + continue + + # After the definitive match, cap the number of additional same-family + # single-byte encodings that pass chaos probing. This avoids testing the + # tail of rare, low-value same-family encodings (mac_iceland, cp860, etc.) + # that almost never change best() but each cost ~1-2ms of mess_ratio + coherence. + if ( + definitive_match_found + and not is_multi_byte_decoder + and post_definitive_sb_success_count >= POST_DEFINITIVE_SB_CAP + ): + logger.log( + TRACE, + "Skipping %s: already accumulated %d same-family results after definitive match (cap=%d).", + encoding_iana, + post_definitive_sb_success_count, + POST_DEFINITIVE_SB_CAP, + ) + continue + + # When a multibyte encoding with significant multibyte content has already + # passed chaos probing, skip all single-byte encodings. They will either fail + # chaos probing (wasting mess_ratio time) or produce inferior results. + if mb_definitive_match_found and not is_multi_byte_decoder: + logger.log( + TRACE, + "Skipping single-byte %s: multi-byte definitive match already found.", + 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: + # UTF-7 BOM is encoded in modified Base64 whose byte boundary + # can overlap with the next character. Stripping raw SIG bytes + # before decoding may leave stray bytes that decode as garbage. + # Decode the full sequence and remove the leading BOM char instead. + # see https://github.com/jawah/charset_normalizer/issues/718 + # and https://github.com/jawah/charset_normalizer/issues/716 + if encoding_iana == "utf_7" and bom_or_sig_available: + decoded_payload = str( + sequences, + encoding=encoding_iana, + ) + if decoded_payload and decoded_payload[0] == "\ufeff": + decoded_payload = decoded_payload[1:] + 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 + + 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, + ) + + # Payload-hash deduplication: if another encoding already decoded to the + # exact same string, reuse its mess_ratio and coherence results entirely. + # This is strictly more general than the old IANA_SUPPORTED_SIMILAR approach + # because it catches ALL identical decoding, not just pre-mapped ones. + if decoded_payload is not None and not is_multi_byte_decoder: + payload_hash: int = hash(decoded_payload) + cached = payload_result_cache.get(payload_hash) + if cached is not None: + cached_mess, cached_cd, cached_passed = cached + if cached_passed: + # The previous encoding with identical output passed chaos probing. + fast_match = CharsetMatch( + sequences, + encoding_iana, + cached_mess, + bom_or_sig_available, + cached_cd, + ( + 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(fast_match) + success_fast_tracked.add(encoding_iana) + logger.log( + TRACE, + "%s fast-tracked (identical decoded payload to a prior encoding, chaos=%f %%).", + encoding_iana, + round(cached_mess * 100, ndigits=3), + ) + + if ( + encoding_iana in [specified_encoding, "ascii", "utf_8"] + and cached_mess < 0.1 + ): + if cached_mess == 0.0: + logger.debug( + "Encoding detection: %s is most likely the one.", + fast_match.encoding, + ) + if explain: + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + return CharsetMatches([fast_match]) + early_stop_results.append(fast_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]) + + continue + else: + # The previous encoding with identical output failed chaos probing. + tested_but_soft_failure.append(encoding_iana) + logger.log( + TRACE, + "%s fast-skipped (identical decoded payload to a prior encoding that failed chaos probing).", + encoding_iana, + ) + # Prepare fallbacks for special encodings even when skipped. + if enable_fallback and encoding_iana in [ + "ascii", + "utf_8", + specified_encoding, + "utf_16", + "utf_32", + ]: + fallback_entry = CharsetMatch( + sequences, + encoding_iana, + threshold, + bom_or_sig_available, + [], + 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 + + 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) + if encoding_iana in IANA_SUPPORTED_SIMILAR: + soft_failure_skip.update(IANA_SUPPORTED_SIMILAR[encoding_iana]) + # Cache this soft-failure so identical decoding from other encodings + # can be skipped immediately. + if decoded_payload is not None and not is_multi_byte_decoder: + payload_result_cache.setdefault( + hash(decoded_payload), (mean_mess_ratio, [], False) + ) + 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, "utf_16", "utf_32"] + and not lazy_str_hard_failure + ): + fallback_entry = CharsetMatch( + sequences, + encoding_iana, + threshold, + bom_or_sig_available, + [], + 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 = [] + + # Run coherence detection on all chunks. We previously tried limiting to + # 1-2 chunks for post-definitive encodings to save time, but this caused + # coverage regressions by producing unrepresentative coherence scores. + # The SB cap and language-family skip optimizations provide sufficient + # speedup without sacrificing coherence accuracy. + if encoding_iana != "ascii": + # We shall skip the CD when its about ASCII + # Most of the time its not relevant to run "language-detection" on it. + 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) + else: + 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) + + # Cache the successful result for payload-hash deduplication. + if decoded_payload is not None and not is_multi_byte_decoder: + payload_result_cache.setdefault( + hash(decoded_payload), + (mean_mess_ratio, cd_ratios_merged, True), + ) + + # Count post-definitive same-family SB successes for the early termination cap. + # Only count low-mess encodings (< 2%) toward the cap. High-mess encodings are + # marginal results that shouldn't prevent better-quality candidates from being + # tested. For example, iso8859_4 (mess=0%) should not be skipped just because + # 7 high-mess Latin encodings (cp1252 at 8%, etc.) were tried first. + if ( + definitive_match_found + and not is_multi_byte_decoder + and mean_mess_ratio < 0.02 + ): + post_definitive_sb_success_count += 1 + + 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: # Defensive: ensure exit path clean handler + 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 = early_stop_results.best() # type: ignore[assignment] + logger.debug( + "Encoding detection: %s is most likely the one.", + probable_result.encoding, # type: ignore[union-attr] + ) + if explain: # Defensive: ensure exit path clean handler + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + + return CharsetMatches([probable_result]) + + # Once we find a result with good coherence (>= 0.5) after testing the + # prioritized encodings (ascii, utf_8), activate "definitive mode": skip + # encodings that target completely different language families. This avoids + # running expensive mess_ratio + coherence_ratio on clearly unrelated + # candidates (e.g., Cyrillic encodings when the match is Latin-based). + # We require coherence >= 0.5 to avoid false positives (e.g., cp1251 decoding + # Hebrew text with 0.0 chaos but wrong language detection at coherence 0.33). + if not definitive_match_found and not is_multi_byte_decoder: + best_coherence = ( + max((v for _, v in cd_ratios_merged), default=0.0) + if cd_ratios_merged + else 0.0 + ) + if best_coherence >= 0.5 and "ascii" in tested and "utf_8" in tested: + definitive_match_found = True + definitive_target_languages.update(target_languages) + logger.log( + TRACE, + "Definitive match found: %s (chaos=%.3f, coherence=%.2f). Encodings targeting different language families will be skipped.", + encoding_iana, + mean_mess_ratio, + best_coherence, + ) + + # When a non-UTF multibyte encoding passes chaos probing with significant + # multibyte content (decoded < 98% of raw), activate mb_definitive_match. + # This skips all remaining single-byte encodings which would either soft-fail + # (running expensive mess_ratio for nothing) or produce inferior results. + if ( + not mb_definitive_match_found + and is_multi_byte_decoder + and multi_byte_bonus + and decoded_payload is not None + and len(decoded_payload) < length * 0.98 + and encoding_iana + not in { + "utf_8", + "utf_8_sig", + "utf_16", + "utf_16_be", + "utf_16_le", + "utf_32", + "utf_32_be", + "utf_32_le", + "utf_7", + } + and "ascii" in tested + and "utf_8" in tested + ): + mb_definitive_match_found = True + logger.log( + TRACE, + "Multi-byte definitive match: %s (chaos=%.3f, decoded=%d/%d=%.1f%%). Single-byte encodings will be skipped.", + encoding_iana, + mean_mess_ratio, + len(decoded_payload), + length, + len(decoded_payload) / length * 100, + ) + + 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: # Defensive: ensure exit path clean handler + 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: list[str] | None = None, + cp_exclusion: list[str] | None = 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: str | bytes | PathLike, # type: ignore[type-arg] + steps: int = 5, + chunk_size: int = 512, + threshold: float = 0.20, + cp_isolation: list[str] | None = None, + cp_exclusion: list[str] | None = 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: PathLike | str | BinaryIO | bytes, # type: ignore[type-arg] + steps: int = 5, + chunk_size: int = 512, + threshold: float = 0.20, + cp_isolation: list[str] | None = None, + cp_exclusion: list[str] | None = 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/intelliaide/vendor/charset_normalizer/cd.cpython-312-x86_64-linux-gnu.so b/intelliaide/vendor/charset_normalizer/cd.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..dffe3e48b59c960aa602778742e128867f0f0901 GIT binary patch literal 15912 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 list[str]: + """ + Return associated unicode ranges in a single byte code page. + """ + if is_multi_byte_encoding(iana_name): + raise OSError( # Defensive: + "Function not supported on multi-byte code page" + ) + + decoder = importlib.import_module(f"encodings.{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: str | None = 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: str | None = 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]] = [] + + characters_set: frozenset[str] = frozenset(characters) + 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(_FREQUENCIES_SET[language] & characters_set) + + 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(f"{language} not available") # Defensive: + + character_approved_count: int = 0 + frequencies_language_set: frozenset[str] = _FREQUENCIES_SET[language] + lang_rank: dict[str, int] = _FREQUENCIES_RANK[language] + + ordered_characters_count: int = len(ordered_characters) + target_language_characters_count: int = len(FREQUENCIES[language]) + + large_alphabet: bool = target_language_characters_count > 26 + + expected_projection_ratio: float = ( + target_language_characters_count / ordered_characters_count + ) + + # Pre-built rank dict for ordered_characters (avoids repeated list slicing). + ordered_rank: dict[str, int] = { + char: rank for rank, char in enumerate(ordered_characters) + } + + # Pre-compute characters common to both orderings. + # Avoids repeated `c in ordered_rank` dict lookups in the inner counts. + common_chars: list[tuple[int, int]] = [ + (lr, ordered_rank[c]) for c, lr in lang_rank.items() if c in ordered_rank + ] + + # Pre-extract lr and orr arrays for faster iteration in the inner loop. + # Plain integer loops with local arrays are much faster under mypyc than + # generator expression sums over a list of tuples. + common_count: int = len(common_chars) + common_lr: list[int] = [p[0] for p in common_chars] + common_orr: list[int] = [p[1] for p in common_chars] + + 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 = lang_rank[character] + 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 + + # Count how many characters appear "before" in both orderings, + # and how many appear "at or after" in both orderings. + # Single pass over pre-extracted arrays — much faster under mypyc + # than two generator expression sums. + before_match_count: int = 0 + after_match_count: int = 0 + for i in range(common_count): + lr_i: int = common_lr[i] + orr_i: int = common_orr[i] + if lr_i < character_rank_in_language: + if orr_i < character_rank: + before_match_count += 1 + else: + if orr_i >= character_rank: + after_match_count += 1 + + after_len: int = target_language_characters_count - character_rank_in_language + + if character_rank_in_language == 0 and before_match_count <= 4: + character_approved_count += 1 + continue + + if after_len == 0 and after_match_count <= 4: + character_approved_count += 1 + continue + + if ( + character_rank_in_language > 0 + and before_match_count / character_rank_in_language >= 0.4 + ) or (after_len > 0 and after_match_count / after_len >= 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, list[str]] = {} + + # Fast path: track single-layer key to skip dict iteration for single-script text. + single_layer_key: str | None = None + multi_layer: bool = False + + # Cache the last character_range and its resolved layer to avoid repeated + # is_suspiciously_successive_range calls for consecutive same-range chars. + prev_character_range: str | None = None + prev_layer_target: str | None = None + + for character in decoded_sequence: + if character.isalpha() is False: + continue + + # ASCII fast-path: a-z and A-Z are always "Basic Latin". + # Avoids unicode_range() function call overhead for the most common case. + character_ord: int = ord(character) + if character_ord < 128: + character_range: str | None = "Basic Latin" + else: + character_range = unicode_range(character) + + if character_range is None: + continue + + # Fast path: same range as previous character → reuse cached layer target. + if character_range == prev_character_range: + if prev_layer_target is not None: + layers[prev_layer_target].append(character) + continue + + layer_target_range: str | None = None + + if multi_layer: + for discovered_range in layers: + if ( + is_suspiciously_successive_range(discovered_range, character_range) + is False + ): + layer_target_range = discovered_range + break + elif single_layer_key is not None: + if ( + is_suspiciously_successive_range(single_layer_key, character_range) + is False + ): + layer_target_range = single_layer_key + + if layer_target_range is None: + layer_target_range = character_range + + if layer_target_range not in layers: + layers[layer_target_range] = [] + if single_layer_key is None: + single_layer_key = layer_target_range + else: + multi_layer = True + + layers[layer_target_range].append(character) + + # Cache for next iteration + prev_character_range = character_range + prev_layer_target = layer_target_range + + return ["".join(chars).lower() for chars in 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: str | None = 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 = len(layer) + + 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/intelliaide/vendor/charset_normalizer/cli/__init__.py b/intelliaide/vendor/charset_normalizer/cli/__init__.py new file mode 100644 index 0000000..543a5a4 --- /dev/null +++ b/intelliaide/vendor/charset_normalizer/cli/__init__.py @@ -0,0 +1,8 @@ +from __future__ import annotations + +from .__main__ import cli_detect, query_yes_no + +__all__ = ( + "cli_detect", + "query_yes_no", +) diff --git a/intelliaide/vendor/charset_normalizer/cli/__main__.py b/intelliaide/vendor/charset_normalizer/cli/__main__.py new file mode 100644 index 0000000..ad843c1 --- /dev/null +++ b/intelliaide/vendor/charset_normalizer/cli/__main__.py @@ -0,0 +1,362 @@ +from __future__ import annotations + +import argparse +import sys +import typing +from json import dumps +from os.path import abspath, basename, dirname, join, realpath +from platform import python_version +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: # Defensive: + """Ask a yes/no question via input() and return the answer as a bool.""" + prompt = " [Y/n] " if default == "yes" else " [y/N] " + + while True: + choice = input(question + prompt).strip().lower() + if not choice: + return default == "yes" + if choice in ("y", "yes"): + return True + if choice in ("n", "no"): + return False + print("Please respond with 'y' or 'n'.") + + +class FileType: + """Factory for creating file object types + + Instances of FileType are typically passed as type= arguments to the + ArgumentParser add_argument() method. + + Keyword Arguments: + - mode -- A string indicating how the file is to be opened. Accepts the + same values as the builtin open() function. + - bufsize -- The file's desired buffer size. Accepts the same values as + the builtin open() function. + - encoding -- The file's encoding. Accepts the same values as the + builtin open() function. + - errors -- A string indicating how encoding and decoding errors are to + be handled. Accepts the same value as the builtin open() function. + + Backported from CPython 3.12 + """ + + def __init__( + self, + mode: str = "r", + bufsize: int = -1, + encoding: str | None = None, + errors: str | None = None, + ): + self._mode = mode + self._bufsize = bufsize + self._encoding = encoding + self._errors = errors + + def __call__(self, string: str) -> typing.IO: # type: ignore[type-arg] + # the special argument "-" means sys.std{in,out} + if string == "-": + if "r" in self._mode: + return sys.stdin.buffer if "b" in self._mode else sys.stdin + elif any(c in self._mode for c in "wax"): + return sys.stdout.buffer if "b" in self._mode else sys.stdout + else: + msg = f'argument "-" with mode {self._mode}' + raise ValueError(msg) + + # all other arguments are used as file names + try: + return open(string, self._mode, self._bufsize, self._encoding, self._errors) + except OSError as e: + message = f"can't open '{string}': {e}" + raise argparse.ArgumentTypeError(message) + + def __repr__(self) -> str: + args = self._mode, self._bufsize + kwargs = [("encoding", self._encoding), ("errors", self._errors)] + args_str = ", ".join( + [repr(arg) for arg in args if arg != -1] + + [f"{kw}={arg!r}" for kw, arg in kwargs if arg is not None] + ) + return f"{type(self).__name__}({args_str})" + + +def cli_detect(argv: list[str] | None = 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=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 noise allowed in decoded content. 0. <= noise <= 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: + cli_result = 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, + ) + x_.append(cli_result) + + 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: + cli_result.unicode_path = join(dir_path, ".".join(o_)) + + with open(cli_result.unicode_path, "wb") as fp: + fp.write(best_guess.output()) + except OSError as e: # Defensive: + 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__": # Defensive: + cli_detect() diff --git a/intelliaide/vendor/charset_normalizer/constant.py b/intelliaide/vendor/charset_normalizer/constant.py new file mode 100644 index 0000000..e1297d2 --- /dev/null +++ b/intelliaide/vendor/charset_normalizer/constant.py @@ -0,0 +1,2050 @@ +from __future__ import annotations + +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 +from re import compile as re_compile + +# Contain for each eligible encoding a list of/item bytes SIG/BOM +ENCODING_MARKS: dict[str, bytes | list[bytes]] = { + "utf_8": BOM_UTF8, + "utf_7": [ + b"\x2b\x2f\x76\x38\x2d", + b"\x2b\x2f\x76\x38", + b"\x2b\x2f\x76\x39", + b"\x2b\x2f\x76\x2b", + b"\x2b\x2f\x76\x2f", + ], + "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/17.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), + "Todhri": range(67008, 67072), + "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), + "Sidetic": range(67904, 67936), + "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), + "Garay": range(68928, 69008), + "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), + "Tulu-Tigalari": range(70528, 70656), + "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), + "Myanmar Extended-C": range(71376, 71424), + "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), + "Sharada Supplement": range(72544, 72576), + "Sunuwar": range(72640, 72704), + "Bhaiksuki": range(72704, 72816), + "Marchen": range(72816, 72896), + "Masaram Gondi": range(72960, 73056), + "Gunjala Gondi": range(73056, 73136), + "Tolong Siki": range(73136, 73200), + "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), + "Egyptian Hieroglyphs Extended-A": range(78944, 82944), + "Anatolian Hieroglyphs": range(82944, 83584), + "Gurung Khema": range(90368, 90432), + "Bamum Supplement": range(92160, 92736), + "Mro": range(92736, 92784), + "Tangsa": range(92784, 92880), + "Bassa Vah": range(92880, 92928), + "Pahawh Hmong": range(92928, 93072), + "Kirat Rai": range(93504, 93568), + "Medefaidrin": range(93760, 93856), + "Beria Erfe": range(93856, 93920), + "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), + "Tangut Components Supplement": range(101760, 101888), + "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), + "Symbols for Legacy Computing Supplement": range(117760, 118464), + "Miscellaneous Symbols Supplement": range(118464, 118528), + "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), + "Ol Onal": range(124368, 124416), + "Tai Yo": range(124608, 124672), + "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(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 Unified Ideographs Extension I": range(191472, 192096), + "CJK Compatibility Ideographs Supplement": range(194560, 195104), + "CJK Unified Ideographs Extension G": range(196608, 201552), + "CJK Unified Ideographs Extension H": range(201552, 205744), + "CJK Unified Ideographs Extension J": range(205744, 210048), + "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: frozenset[str] = frozenset( + { + "<", + ">", + "=", + ":", + "/", + "&", + ";", + "{", + "}", + "[", + "]", + ",", + "|", + '"', + "-", + "(", + ")", + } +) + +# Sample character sets — replace with full lists if needed +COMMON_CHINESE_CHARACTERS = "的一是在不了有和人这中大为上个国我以要他时来用们生到作地于出就分对成会可主发年动同工也能下过子说产种面而方后多定行学法所民得经十三之进着等部度家电力里如水化高自二理起小物现实加量都两体制机当使点从业本去把性好应开它合还因由其些然前外天政四日那社义事平形相全表间样与关各重新线内数正心反你明看原又么利比或但质气第向道命此变条只没结解问意建月公无系军很情者最立代想已通并提直题党程展五果料象员革位入常文总次品式活设及管特件长求老头基资边流路级少图山统接知较将组见计别她手角期根论运农指几九区强放决西被干做必战先回则任取据处队南给色光门即保治北造百规热领七海口东导器压志世金增争济阶油思术极交受联什认六共权收证改清己美再采转更单风切打白教速花带安场身车例真务具万每目至达走积示议声报斗完类八离华名确才科张信马节话米整空元况今集温传土许步群广石记需段研界拉林律叫且究观越织装影算低持音众书布复容儿须际商非验连断深难近矿千周委素技备半办青省列习响约支般史感劳便团往酸历市克何除消构府太准精值号率族维划选标写存候毛亲快效斯院查江型眼王按格养易置派层片始却专状育厂京识适属圆包火住调满县局照参红细引听该铁价严龙飞" + +COMMON_JAPANESE_CHARACTERS = "日一国年大十二本中長出三時行見月分後前生五間上東四今金九入学高円子外八六下来気小七山話女北午百書先名川千水半男西電校語土木聞食車何南万毎白天母火右読友左休父雨" + +COMMON_KOREAN_CHARACTERS = "一二三四五六七八九十百千萬上下左右中人女子大小山川日月火水木金土父母天地國名年時文校學生" + +# Combine all into a frozenset +COMMON_CJK_CHARACTERS = frozenset( + "".join( + [ + COMMON_CHINESE_CHARACTERS, + COMMON_JAPANESE_CHARACTERS, + COMMON_KOREAN_CHARACTERS, + ] + ) +) + +KO_NAMES: frozenset[str] = frozenset({"johab", "cp949", "euc_kr"}) +ZH_NAMES: frozenset[str] = frozenset({"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) + +# Bit flags for unified character classification. +# A single unicodedata.name() call sets all relevant flags at once. +_LATIN: int = 1 +_ACCENTUATED: int = 1 << 1 +_CJK: int = 1 << 2 +_HANGUL: int = 1 << 3 +_KATAKANA: int = 1 << 4 +_HIRAGANA: int = 1 << 5 +_THAI: int = 1 << 6 +_ARABIC: int = 1 << 7 +_ARABIC_ISOLATED_FORM: int = 1 << 8 + +_ACCENT_KEYWORDS: tuple[str, ...] = ( + "WITH GRAVE", + "WITH ACUTE", + "WITH CEDILLA", + "WITH DIAERESIS", + "WITH CIRCUMFLEX", + "WITH TILDE", + "WITH MACRON", + "WITH RING ABOVE", +) + +# Pre-built lookup structures for FREQUENCIES (computed once at import time). +# character -> rank mapping per language (replaces list .index() calls). +_FREQUENCIES_RANK: dict[str, dict[str, int]] = { + lang: {char: rank for rank, char in enumerate(chars)} + for lang, chars in FREQUENCIES.items() +} + +# frozenset per language (avoids rebuilding set() per call). +_FREQUENCIES_SET: dict[str, frozenset[str]] = { + lang: frozenset(chars) for lang, chars in FREQUENCIES.items() +} diff --git a/intelliaide/vendor/charset_normalizer/legacy.py b/intelliaide/vendor/charset_normalizer/legacy.py new file mode 100644 index 0000000..293c1ef --- /dev/null +++ b/intelliaide/vendor/charset_normalizer/legacy.py @@ -0,0 +1,79 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, Any +from warnings import warn + +from .api import from_bytes +from .constant import CHARDET_CORRESPONDENCE, TOO_SMALL_SEQUENCE + +if TYPE_CHECKING: + from typing import TypedDict + + class ResultDict(TypedDict): + encoding: str | None + language: str + confidence: float | None + + +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 + f"Expected object of type bytes or bytearray, got: {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 + + # automatically lower confidence + # on small bytes samples. + # https://github.com/jawah/charset_normalizer/issues/391 + if ( + confidence is not None + and confidence >= 0.9 + and encoding + not in { + "utf_8", + "ascii", + } + and r.bom is False # type: ignore[union-attr] + and len(byte_str) < TOO_SMALL_SEQUENCE + ): + confidence -= 0.2 + + # 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/intelliaide/vendor/charset_normalizer/md.cpython-312-x86_64-linux-gnu.so b/intelliaide/vendor/charset_normalizer/md.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..87d31c7e9c670f6288a511726c3d3a4c3cd8d58b GIT binary patch literal 15912 zcmeHOeQX?85r1dL^zwo2LYx!Idhd4ayXroy zyS>yGg%Zh0g-Ih>k&p^PB2*EIDyV=z3Ierq>d;gb5~f0se-H;K=uAnQss*(Oe9XKz zb6ziZY5qV6!9MGDW`6VWW@q1?-`>9WrGb&bI-gH)s~3-mbxDW_DLOvI7KrtT&2Zc) z+NABKb=ALcw;B}0R5U9Y`;aP<8E4v3r|g(Aj()PgfYJ*W4N>w;oqitzmzBNBZ{@&7 zIz|1(iLxJx=vN}Y68SMLQh!YSDy+;A^X#E`ZrV}{kv|ns25!psOxf>I z@WVXsv~k(TslQrv2~qw`>2&4!-2Dz%Z&4 zze6Q7zJK|Ci%@;9)BVY~AiU_pS$_4Piicwp#|XC-2hR5x>aIKRyVw|L(ScX`MtuYi zLZB_(N>cVmB#}7YL)@ApibMO#m;k=jf#dzeEf7&0+B@(64hOy=A7$BiaTJQ$T6%L0&It0J*3Nf752&_qOlKpTKBR*g=f9 z9WGGovE$|9qPFnc(wyw&X8tOo;iY58m#2eGyUt*lFpjp+-|jCRmBD~}~_#df2PuT42+7~rDW8FR7 z(a>~PPiI)yQ-#?=Ovtx-vAB`VS+<_eWK;5OVpa#e$)|rC|KJDt``YRs3P2$Iap2Nh zi|}hhJ77EEGX;LLXwcX^*x35n zrmau-Pm6;)9{R+-_WKd;f=@qu;t=-|0=oCbpERvp|BXON1wtE#3Q`9lzKiZ@e zoabe-<29GuAG|e{`9DMU@CI1QTvvE(l=73Lf1hN|lfwST2(MRncetMx*bWl?Jke>Q zCx|{pbf~ZIGl33R@x3Py?t(?U;Xr4ovpWE4jv<|qMO#`pNzD=AvvEf|XZj&?T+CqJ~ zuLsLGjy8$6@zwl>hWBM1jD9{ZR>G12i7!##jDMVP{ytzFw{!T!b`gpwgvV{4#P1e- z-zu#Tj{}4KR=!_IaYEWRSJq>*{a1mhmVd4D`nrtMBp$$oU9DQ2%V1Ln-%>mV*yVX( ze6XmV*LO4i6N!IRxbK6j(x9=j--7M&d(bCZD)nLf4}|mg4CC(uQ-`}6T=mBb7+@m@ zZG%F%Or^H72L1@()#8lSu#W*=ZQntPaQD80FV={20q|=5eg|;*1DoTVBpb`xIXe$a zOk!ev+k$SV^cZej$ie;wGo#NWGf^X{n|3Cf(~bO`h-FftKMoM=ykOU%kt2tCNAx3ugGUD@^oia>BLff+f9<^Oc8wal zESwuET$?{??baAx-_0R6Uhw{l>Kit22gx1m5{YcsnGwttQnnEl!JM5{G|pT)V_U(Q zbUql(Cz9sggejyHH*#?iGz)3)RMgHY%?T@;OJvd;1RZo)D`}tuakEKV$lr`b(6;7) zmzOA*&6tL5h@cgxiySw>mnG$)28Qxr9=)&&2q4ojQi&L(kb%H(2+H1~xts{X*h|5X zQt8Qa3L3BpCK1isFkb&n4d+KV$KZKMt^Hu!9Zefp6hYwr3UdhdpCX272U+s`0{_oB zTMr00XJUVzS26X&{frI!MV9?}z7qiqW3xZc)0pzS3`}IBa4ZT9IGiJ~KhKMpZYN95 zpY539J}R7ZvCQ)>rUCMI=TEROfk7Sn^E{8~WisUc-RGYs|3hTQ^G2qN4*wS5-Trfc zVNG~mTlw;*e*!#zrZ6&B=8@t+bovL#kLj$_7 ziIpSw&%krQ;2ev`2S4}lzDc(|%S>MY-zJAY&#$iU1rQqBDQR71{AEyJ{@g#$Z;Bt_ z&+&c^430ha=XntCYb|1MXk0h$m&d_%&^i0(eRHoqDBVOrk;;+%nf?YePJf<1mB?SK zcq)ednEnx9^tGlfSX zrYK;54HaCeBZ)E&k6p%)o(?N%g_QW*jL)ik-u(TG&!2qm%0nH;@C7HdYp(uXqMZI$ P^S^h$^55ceaEaod10Yub literal 0 HcmV?d00001 diff --git a/intelliaide/vendor/charset_normalizer/md.py b/intelliaide/vendor/charset_normalizer/md.py new file mode 100644 index 0000000..b41d9cf --- /dev/null +++ b/intelliaide/vendor/charset_normalizer/md.py @@ -0,0 +1,936 @@ +from __future__ import annotations + +import sys +from functools import lru_cache +from logging import getLogger + +if sys.version_info >= (3, 8): + from typing import final +else: + try: + from typing_extensions import final + except ImportError: + + def final(cls): # type: ignore[misc,no-untyped-def] + return cls + + +from .constant import ( + COMMON_CJK_CHARACTERS, + COMMON_SAFE_ASCII_CHARACTERS, + TRACE, + UNICODE_SECONDARY_RANGE_KEYWORD, + _ACCENTUATED, + _ARABIC, + _ARABIC_ISOLATED_FORM, + _CJK, + _HANGUL, + _HIRAGANA, + _KATAKANA, + _LATIN, + _THAI, +) +from .utils import ( + _character_flags, + is_emoticon, + is_punctuation, + is_separator, + is_symbol, + remove_accent, + unicode_range, +) + +# Combined bitmask for CJK/Hangul/Katakana/Hiragana/Thai glyph detection. +_GLYPH_MASK: int = _CJK | _HANGUL | _KATAKANA | _HIRAGANA | _THAI + + +@final +class CharInfo: + """Pre-computed character properties shared across all detectors. + + Instantiated once and reused via :meth:`update` on every character + in the hot loop so that redundant calls to str methods + (``isalpha``, ``isupper``, …) and cached utility functions + (``_character_flags``, ``is_punctuation``, …) are avoided when + several plugins need the same information. + """ + + __slots__ = ( + "character", + "printable", + "alpha", + "upper", + "lower", + "space", + "digit", + "is_ascii", + "case_variable", + "flags", + "accentuated", + "latin", + "is_cjk", + "is_arabic", + "is_glyph", + "punct", + "sym", + ) + + def __init__(self) -> None: + self.character: str = "" + self.printable: bool = False + self.alpha: bool = False + self.upper: bool = False + self.lower: bool = False + self.space: bool = False + self.digit: bool = False + self.is_ascii: bool = False + self.case_variable: bool = False + self.flags: int = 0 + self.accentuated: bool = False + self.latin: bool = False + self.is_cjk: bool = False + self.is_arabic: bool = False + self.is_glyph: bool = False + self.punct: bool = False + self.sym: bool = False + + def update(self, character: str) -> None: + """Update all properties for *character* (called once per character).""" + self.character = character + + # ASCII fast-path: for characters with ord < 128, we can skip + # _character_flags() entirely and derive most properties from ord. + o: int = ord(character) + if o < 128: + self.is_ascii = True + self.accentuated = False + self.is_cjk = False + self.is_arabic = False + self.is_glyph = False + # ASCII alpha: a-z (97-122) or A-Z (65-90) + if 65 <= o <= 90: + # Uppercase ASCII letter + self.alpha = True + self.upper = True + self.lower = False + self.space = False + self.digit = False + self.printable = True + self.case_variable = True + self.flags = _LATIN + self.latin = True + self.punct = False + self.sym = False + elif 97 <= o <= 122: + # Lowercase ASCII letter + self.alpha = True + self.upper = False + self.lower = True + self.space = False + self.digit = False + self.printable = True + self.case_variable = True + self.flags = _LATIN + self.latin = True + self.punct = False + self.sym = False + elif 48 <= o <= 57: + # ASCII digit 0-9 + self.alpha = False + self.upper = False + self.lower = False + self.space = False + self.digit = True + self.printable = True + self.case_variable = False + self.flags = 0 + self.latin = False + self.punct = False + self.sym = False + elif o == 32 or (9 <= o <= 13): + # Space, tab, newline, etc. + self.alpha = False + self.upper = False + self.lower = False + self.space = True + self.digit = False + self.printable = o == 32 + self.case_variable = False + self.flags = 0 + self.latin = False + self.punct = False + self.sym = False + else: + # Other ASCII (punctuation, symbols, control chars) + self.printable = character.isprintable() + self.alpha = False + self.upper = False + self.lower = False + self.space = False + self.digit = False + self.case_variable = False + self.flags = 0 + self.latin = False + self.punct = is_punctuation(character) if self.printable else False + self.sym = is_symbol(character) if self.printable else False + else: + # Non-ASCII path + self.is_ascii = False + self.printable = character.isprintable() + self.alpha = character.isalpha() + self.upper = character.isupper() + self.lower = character.islower() + self.space = character.isspace() + self.digit = character.isdigit() + self.case_variable = self.lower != self.upper + + # Flag-based classification (single unicodedata.name() call, lru-cached) + flags: int + if self.alpha: + flags = _character_flags(character) + else: + flags = 0 + self.flags = flags + self.accentuated = bool(flags & _ACCENTUATED) + self.latin = bool(flags & _LATIN) + self.is_cjk = bool(flags & _CJK) + self.is_arabic = bool(flags & _ARABIC) + self.is_glyph = bool(flags & _GLYPH_MASK) + + # Eagerly compute punct and sym (avoids property dispatch overhead + # on 300K+ accesses in the hot loop). + self.punct = is_punctuation(character) if self.printable else False + self.sym = is_symbol(character) if self.printable else False + + +class MessDetectorPlugin: + """ + Base abstract class used for mess detection plugins. + All detectors MUST extend and implement given methods. + """ + + __slots__ = () + + def feed_info(self, character: str, info: CharInfo) -> None: + """ + The main routine to be executed upon character. + Insert the logic in witch the text would be considered chaotic. + """ + raise NotImplementedError # Defensive: + + def reset(self) -> None: # Defensive: + """ + 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 # Defensive: + + +@final +class TooManySymbolOrPunctuationPlugin(MessDetectorPlugin): + __slots__ = ( + "_punctuation_count", + "_symbol_count", + "_character_count", + "_last_printable_char", + "_frenzy_symbol_in_word", + ) + + def __init__(self) -> None: + self._punctuation_count: int = 0 + self._symbol_count: int = 0 + self._character_count: int = 0 + + self._last_printable_char: str | None = None + self._frenzy_symbol_in_word: bool = False + + def feed_info(self, character: str, info: CharInfo) -> None: + """Optimized feed using pre-computed character info.""" + self._character_count += 1 + + if ( + character != self._last_printable_char + and character not in COMMON_SAFE_ASCII_CHARACTERS + ): + if info.punct: + self._punctuation_count += 1 + elif not info.digit and info.sym and not is_emoticon(character): + self._symbol_count += 2 + + self._last_printable_char = character + + def reset(self) -> None: # Abstract + 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 + + +@final +class TooManyAccentuatedPlugin(MessDetectorPlugin): + __slots__ = ("_character_count", "_accentuated_count") + + def __init__(self) -> None: + self._character_count: int = 0 + self._accentuated_count: int = 0 + + def feed_info(self, character: str, info: CharInfo) -> None: + """Optimized feed using pre-computed character info.""" + self._character_count += 1 + + if info.accentuated: + self._accentuated_count += 1 + + def reset(self) -> None: # Abstract + 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 + + +@final +class UnprintablePlugin(MessDetectorPlugin): + __slots__ = ("_unprintable_count", "_character_count") + + def __init__(self) -> None: + self._unprintable_count: int = 0 + self._character_count: int = 0 + + def feed_info(self, character: str, info: CharInfo) -> None: + """Optimized feed using pre-computed character info.""" + if ( + not info.space + and not info.printable + and character != "\x1a" + and character != "\ufeff" + ): + self._unprintable_count += 1 + self._character_count += 1 + + def reset(self) -> None: # Abstract + self._unprintable_count = 0 + + @property + def ratio(self) -> float: + if self._character_count == 0: # Defensive: + return 0.0 + + return (self._unprintable_count * 8) / self._character_count + + +@final +class SuspiciousDuplicateAccentPlugin(MessDetectorPlugin): + __slots__ = ( + "_successive_count", + "_character_count", + "_last_latin_character", + "_last_was_accentuated", + ) + + def __init__(self) -> None: + self._successive_count: int = 0 + self._character_count: int = 0 + + self._last_latin_character: str | None = None + self._last_was_accentuated: bool = False + + def feed_info(self, character: str, info: CharInfo) -> None: + """Optimized feed using pre-computed character info.""" + self._character_count += 1 + if ( + self._last_latin_character is not None + and info.accentuated + and self._last_was_accentuated + ): + if info.upper and self._last_latin_character.isupper(): + self._successive_count += 1 + if remove_accent(character) == remove_accent(self._last_latin_character): + self._successive_count += 1 + self._last_latin_character = character + self._last_was_accentuated = info.accentuated + + def reset(self) -> None: # Abstract + self._successive_count = 0 + self._character_count = 0 + self._last_latin_character = None + self._last_was_accentuated = False + + @property + def ratio(self) -> float: + if self._character_count == 0: + return 0.0 + + return (self._successive_count * 2) / self._character_count + + +@final +class SuspiciousRange(MessDetectorPlugin): + __slots__ = ( + "_suspicious_successive_range_count", + "_character_count", + "_last_printable_seen", + "_last_printable_range", + ) + + def __init__(self) -> None: + self._suspicious_successive_range_count: int = 0 + self._character_count: int = 0 + self._last_printable_seen: str | None = None + self._last_printable_range: str | None = None + + def feed_info(self, character: str, info: CharInfo) -> None: + """Optimized feed using pre-computed character info.""" + self._character_count += 1 + + if info.space or info.punct or character in COMMON_SAFE_ASCII_CHARACTERS: + self._last_printable_seen = None + self._last_printable_range = None + return + + if self._last_printable_seen is None: + self._last_printable_seen = character + self._last_printable_range = unicode_range(character) + return + + unicode_range_a: str | None = self._last_printable_range + unicode_range_b: str | None = 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 + self._last_printable_range = unicode_range_b + + def reset(self) -> None: # Abstract + self._character_count = 0 + self._suspicious_successive_range_count = 0 + self._last_printable_seen = None + self._last_printable_range = 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 + + +@final +class SuperWeirdWordPlugin(MessDetectorPlugin): + __slots__ = ( + "_word_count", + "_bad_word_count", + "_foreign_long_count", + "_is_current_word_bad", + "_foreign_long_watch", + "_character_count", + "_bad_character_count", + "_buffer_length", + "_buffer_last_char", + "_buffer_last_char_accentuated", + "_buffer_accent_count", + "_buffer_glyph_count", + "_buffer_upper_count", + ) + + 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_length: int = 0 + self._buffer_last_char: str | None = None + self._buffer_last_char_accentuated: bool = False + self._buffer_accent_count: int = 0 + self._buffer_glyph_count: int = 0 + self._buffer_upper_count: int = 0 + + def feed_info(self, character: str, info: CharInfo) -> None: + """Optimized feed using pre-computed character info.""" + if info.alpha: + self._buffer_length += 1 + self._buffer_last_char = character + + if info.upper: + self._buffer_upper_count += 1 + + self._buffer_last_char_accentuated = info.accentuated + + if info.accentuated: + self._buffer_accent_count += 1 + if ( + not self._foreign_long_watch + and (not info.latin or info.accentuated) + and not info.is_glyph + ): + self._foreign_long_watch = True + if info.is_glyph: + self._buffer_glyph_count += 1 + return + if not self._buffer_length: + return + if info.space or info.punct or is_separator(character): + self._word_count += 1 + buffer_length: int = self._buffer_length + + self._character_count += buffer_length + + if buffer_length >= 4: + if self._buffer_accent_count / buffer_length >= 0.5: + self._is_current_word_bad = True + elif ( + self._buffer_last_char_accentuated + and self._buffer_last_char.isupper() # type: ignore[union-attr] + and self._buffer_upper_count != buffer_length + ): + 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: + probable_camel_cased: bool = ( + self._buffer_upper_count > 0 + and self._buffer_upper_count / buffer_length <= 0.3 + ) + + 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 += buffer_length + self._is_current_word_bad = False + + self._foreign_long_watch = False + self._buffer_length = 0 + self._buffer_last_char = None + self._buffer_last_char_accentuated = False + self._buffer_accent_count = 0 + self._buffer_glyph_count = 0 + self._buffer_upper_count = 0 + elif ( + character not in {"<", ">", "-", "=", "~", "|", "_"} + and not info.digit + and info.sym + ): + self._is_current_word_bad = True + self._buffer_length += 1 + self._buffer_last_char = character + self._buffer_last_char_accentuated = False + + def reset(self) -> None: # Abstract + self._buffer_length = 0 + self._buffer_last_char = None + self._buffer_last_char_accentuated = False + 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 + self._buffer_accent_count = 0 + self._buffer_glyph_count = 0 + self._buffer_upper_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 + + +@final +class CjkUncommonPlugin(MessDetectorPlugin): + """ + Detect messy CJK text that probably means nothing. + """ + + __slots__ = ("_character_count", "_uncommon_count") + + def __init__(self) -> None: + self._character_count: int = 0 + self._uncommon_count: int = 0 + + def feed_info(self, character: str, info: CharInfo) -> None: + """Optimized feed using pre-computed character info.""" + self._character_count += 1 + + if character not in COMMON_CJK_CHARACTERS: + self._uncommon_count += 1 + + def reset(self) -> None: # Abstract + self._character_count = 0 + self._uncommon_count = 0 + + @property + def ratio(self) -> float: + if self._character_count < 8: + return 0.0 + + uncommon_form_usage: float = self._uncommon_count / self._character_count + + # we can be pretty sure it's garbage when uncommon characters are widely + # used. otherwise it could just be traditional chinese for example. + return uncommon_form_usage / 10 if uncommon_form_usage > 0.5 else 0.0 + + +@final +class ArchaicUpperLowerPlugin(MessDetectorPlugin): + __slots__ = ( + "_buf", + "_character_count_since_last_sep", + "_successive_upper_lower_count", + "_successive_upper_lower_count_final", + "_character_count", + "_last_alpha_seen", + "_last_alpha_seen_upper", + "_last_alpha_seen_lower", + "_current_ascii_only", + ) + + 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: str | None = None + self._last_alpha_seen_upper: bool = False + self._last_alpha_seen_lower: bool = False + self._current_ascii_only: bool = True + + def feed_info(self, character: str, info: CharInfo) -> None: + """Optimized feed using pre-computed character info.""" + is_concerned: bool = info.alpha and info.case_variable + chunk_sep: bool = not is_concerned + + if chunk_sep and self._character_count_since_last_sep > 0: + if ( + self._character_count_since_last_sep <= 64 + and not info.digit + and not self._current_ascii_only + ): + 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 and not info.is_ascii: + self._current_ascii_only = False + + if self._last_alpha_seen is not None: + if (info.upper and self._last_alpha_seen_lower) or ( + info.lower and self._last_alpha_seen_upper + ): + if self._buf: + 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 + self._last_alpha_seen_upper = info.upper + self._last_alpha_seen_lower = info.lower + + def reset(self) -> None: # Abstract + 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._last_alpha_seen_upper = False + self._last_alpha_seen_lower = False + self._buf = False + self._current_ascii_only = True + + @property + def ratio(self) -> float: + if self._character_count == 0: # Defensive: + return 0.0 + + return self._successive_upper_lower_count_final / self._character_count + + +@final +class ArabicIsolatedFormPlugin(MessDetectorPlugin): + __slots__ = ("_character_count", "_isolated_form_count") + + def __init__(self) -> None: + self._character_count: int = 0 + self._isolated_form_count: int = 0 + + def reset(self) -> None: # Abstract + self._character_count = 0 + self._isolated_form_count = 0 + + def feed_info(self, character: str, info: CharInfo) -> None: + """Optimized feed using pre-computed character info.""" + self._character_count += 1 + + if info.flags & _ARABIC_ISOLATED_FORM: + 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: str | None, unicode_range_b: str | None +) -> 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. + """ + + seq_len: int = len(decoded_sequence) + + if seq_len < 511: + step: int = 32 + elif seq_len < 1024: + step = 64 + else: + step = 128 + + # Create each detector as a named local variable (unrolled from the generic loop). + # This eliminates per-character iteration over the detector list and + # per-character eligible() virtual dispatch, while keeping every plugin class + # intact and fully readable. + d_sp: TooManySymbolOrPunctuationPlugin = TooManySymbolOrPunctuationPlugin() + d_ta: TooManyAccentuatedPlugin = TooManyAccentuatedPlugin() + d_up: UnprintablePlugin = UnprintablePlugin() + d_sda: SuspiciousDuplicateAccentPlugin = SuspiciousDuplicateAccentPlugin() + d_sr: SuspiciousRange = SuspiciousRange() + d_sw: SuperWeirdWordPlugin = SuperWeirdWordPlugin() + d_cu: CjkUncommonPlugin = CjkUncommonPlugin() + d_au: ArchaicUpperLowerPlugin = ArchaicUpperLowerPlugin() + d_ai: ArabicIsolatedFormPlugin = ArabicIsolatedFormPlugin() + + # Local references for feed_info methods called in the hot loop. + d_sp_feed = d_sp.feed_info + d_ta_feed = d_ta.feed_info + d_up_feed = d_up.feed_info + d_sda_feed = d_sda.feed_info + d_sr_feed = d_sr.feed_info + d_sw_feed = d_sw.feed_info + d_cu_feed = d_cu.feed_info + d_au_feed = d_au.feed_info + d_ai_feed = d_ai.feed_info + + # Single reusable CharInfo object (avoids per-character allocation). + info: CharInfo = CharInfo() + info_update = info.update + + mean_mess_ratio: float + + for block_start in range(0, seq_len, step): + for character in decoded_sequence[block_start : block_start + step]: + # Pre-compute all character properties once (shared across all plugins). + info_update(character) + + # Detectors with eligible() == always True + d_up_feed(character, info) + d_sw_feed(character, info) + d_au_feed(character, info) + + # Detectors with eligible() == isprintable + if info.printable: + d_sp_feed(character, info) + d_sr_feed(character, info) + + # Detectors with eligible() == isalpha + if info.alpha: + d_ta_feed(character, info) + # SuspiciousDuplicateAccent: isalpha() and is_latin() + if info.latin: + d_sda_feed(character, info) + # CjkUncommon: is_cjk() + if info.is_cjk: + d_cu_feed(character, info) + # ArabicIsolatedForm: is_arabic() + if info.is_arabic: + d_ai_feed(character, info) + + mean_mess_ratio = ( + d_sp.ratio + + d_ta.ratio + + d_up.ratio + + d_sda.ratio + + d_sr.ratio + + d_sw.ratio + + d_cu.ratio + + d_au.ratio + + d_ai.ratio + ) + + if mean_mess_ratio >= maximum_threshold: + break + else: + # Flush last word buffer in SuperWeirdWordPlugin via trailing newline. + info_update("\n") + d_sw_feed("\n", info) + d_au_feed("\n", info) + d_up_feed("\n", info) + + mean_mess_ratio = ( + d_sp.ratio + + d_ta.ratio + + d_up.ratio + + d_sda.ratio + + d_sr.ratio + + d_sw.ratio + + d_cu.ratio + + d_au.ratio + + d_ai.ratio + ) + + if debug: # Defensive: + logger = getLogger("charset_normalizer") + + logger.log( + TRACE, + "Mess-detector extended-analysis start. " + f"intermediary_mean_mess_ratio_calc={step} mean_mess_ratio={mean_mess_ratio} " + f"maximum_threshold={maximum_threshold}", + ) + + if seq_len > 16: + logger.log(TRACE, f"Starting with: {decoded_sequence[:16]}") + logger.log(TRACE, f"Ending with: {decoded_sequence[-16::]}") + + for dt in [d_sp, d_ta, d_up, d_sda, d_sr, d_sw, d_cu, d_au, d_ai]: + logger.log(TRACE, f"{dt.__class__}: {dt.ratio}") + + return round(mean_mess_ratio, 3) diff --git a/intelliaide/vendor/charset_normalizer/models.py b/intelliaide/vendor/charset_normalizer/models.py new file mode 100644 index 0000000..382de15 --- /dev/null +++ b/intelliaide/vendor/charset_normalizer/models.py @@ -0,0 +1,369 @@ +from __future__ import annotations + +from encodings.aliases import aliases +from json import dumps +from re import sub +from typing import Any, Iterator, List, Tuple + +from .constant import RE_POSSIBLE_ENCODING_INDICATION, TOO_BIG_SEQUENCE +from .utils import iana_name, is_multi_byte_encoding, unicode_range + + +class CharsetMatch: + def __init__( + self, + payload: bytes | bytearray, + guessed_encoding: str, + mean_mess_ratio: float, + has_sig_or_bom: bool, + languages: CoherenceMatches, + decoded_payload: str | None = None, + preemptive_declaration: str | None = None, + ): + self._payload: bytes | bytearray = payload + + self._encoding: str = guessed_encoding + self._mean_mess_ratio: float = mean_mess_ratio + self._languages: CoherenceMatches = languages + self._has_sig_or_bom: bool = has_sig_or_bom + self._unicode_ranges: list[str] | None = None + + self._leaves: list[CharsetMatch] = [] + self._mean_coherence_ratio: float = 0.0 + + self._output_payload: bytes | None = None + self._output_encoding: str | None = None + + self._string: str | None = decoded_payload + + self._preemptive_declaration: str | None = preemptive_declaration + + def __eq__(self, other: object) -> 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 0.5% difference --> Use Coherence + if chaos_difference < 0.005 and coherence_difference > 0.02: + return self.coherence > other.coherence + elif chaos_difference < 0.005 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") + # UTF-7 BOM is encoded in modified Base64 whose byte boundary + # can overlap with the next character, so raw-byte stripping + # is unreliable. Strip the decoded BOM character instead. + if ( + self._has_sig_or_bom + and self._encoding == "utf_7" + and self._string + and self._string[0] == "\ufeff" + ): + self._string = self._string[1:] + return self._string + + def __repr__(self) -> str: + return f"" + + 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 | bytearray: + """ + 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[str | None] = [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).replace("_", "-"), # type: ignore[arg-type] + ), + decoded_string[:8192], + count=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) -> int: + """ + Retrieve a hash fingerprint of the decoded payload, used for deduplication. + """ + return hash(str(self)) + + +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: list[CharsetMatch] | None = None): + self._results: list[CharsetMatch] = sorted(results) if results else [] + + def __iter__(self) -> Iterator[CharsetMatch]: + yield from self._results + + def __getitem__(self, item: 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) -> CharsetMatch | None: + """ + Simply return the first match. Strict equivalent to matches[0]. + """ + if not self._results: + return None + return self._results[0] + + def first(self) -> CharsetMatch | None: + """ + 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: str | None, + encoding_aliases: list[str], + alternative_encodings: list[str], + language: str, + alphabets: list[str], + has_sig_or_bom: bool, + chaos: float, + coherence: float, + unicode_path: str | None, + is_preferred: bool, + ): + self.path: str = path + self.unicode_path: str | None = unicode_path + self.encoding: str | None = 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/intelliaide/vendor/charset_normalizer/py.typed b/intelliaide/vendor/charset_normalizer/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/intelliaide/vendor/charset_normalizer/utils.py b/intelliaide/vendor/charset_normalizer/utils.py new file mode 100644 index 0000000..0f529b5 --- /dev/null +++ b/intelliaide/vendor/charset_normalizer/utils.py @@ -0,0 +1,422 @@ +from __future__ import annotations + +import importlib +import logging +import unicodedata +from bisect import bisect_right +from codecs import IncrementalDecoder +from encodings.aliases import aliases +from functools import lru_cache +from re import findall +from typing import Generator + +from _multibytecodec import ( # type: ignore[import-not-found,import] + MultibyteIncrementalDecoder, +) + +from .constant import ( + ENCODING_MARKS, + IANA_SUPPORTED_SIMILAR, + RE_POSSIBLE_ENCODING_INDICATION, + UNICODE_RANGES_COMBINED, + UNICODE_SECONDARY_RANGE_KEYWORD, + UTF8_MAXIMAL_ALLOCATION, + COMMON_CJK_CHARACTERS, + _LATIN, + _CJK, + _HANGUL, + _KATAKANA, + _HIRAGANA, + _THAI, + _ARABIC, + _ARABIC_ISOLATED_FORM, + _ACCENT_KEYWORDS, + _ACCENTUATED, +) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def _character_flags(character: str) -> int: + """Compute all name-based classification flags with a single unicodedata.name() call.""" + try: + desc: str = unicodedata.name(character) + except ValueError: + return 0 + + flags: int = 0 + + if "LATIN" in desc: + flags |= _LATIN + if "CJK" in desc: + flags |= _CJK + if "HANGUL" in desc: + flags |= _HANGUL + if "KATAKANA" in desc: + flags |= _KATAKANA + if "HIRAGANA" in desc: + flags |= _HIRAGANA + if "THAI" in desc: + flags |= _THAI + if "ARABIC" in desc: + flags |= _ARABIC + if "ISOLATED FORM" in desc: + flags |= _ARABIC_ISOLATED_FORM + + for kw in _ACCENT_KEYWORDS: + if kw in desc: + flags |= _ACCENTUATED + break + + return flags + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_accentuated(character: str) -> bool: + return bool(_character_flags(character) & _ACCENTUATED) + + +@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)) + + +# Pre-built sorted lookup table for O(log n) binary search in unicode_range(). +# Each entry is (range_start, range_end_exclusive, range_name). +_UNICODE_RANGES_SORTED: list[tuple[int, int, str]] = sorted( + (ord_range.start, ord_range.stop, name) + for name, ord_range in UNICODE_RANGES_COMBINED.items() +) +_UNICODE_RANGE_STARTS: list[int] = [e[0] for e in _UNICODE_RANGES_SORTED] + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def unicode_range(character: str) -> str | None: + """ + Retrieve the Unicode range official name from a single character. + """ + character_ord: int = ord(character) + + # Binary search: find the rightmost range whose start <= character_ord + idx = bisect_right(_UNICODE_RANGE_STARTS, character_ord) - 1 + if idx >= 0: + start, stop, name = _UNICODE_RANGES_SORTED[idx] + if character_ord < stop: + return name + + return None + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_latin(character: str) -> bool: + return bool(_character_flags(character) & _LATIN) + + +@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: str | None = 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: str | None = 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: str | None = 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: + return bool(_character_flags(character) & _CJK) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_hiragana(character: str) -> bool: + return bool(_character_flags(character) & _HIRAGANA) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_katakana(character: str) -> bool: + return bool(_character_flags(character) & _KATAKANA) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_hangul(character: str) -> bool: + return bool(_character_flags(character) & _HANGUL) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_thai(character: str) -> bool: + return bool(_character_flags(character) & _THAI) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_arabic(character: str) -> bool: + return bool(_character_flags(character) & _ARABIC) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_arabic_isolated_form(character: str) -> bool: + return bool(_character_flags(character) & _ARABIC_ISOLATED_FORM) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_cjk_uncommon(character: str) -> bool: + return character not in COMMON_CJK_CHARACTERS + + +@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 | bytearray, search_zone: int = 8192 +) -> str | None: + """ + Extract using ASCII-only decoder any specified encoding in the first n-bytes. + """ + if not isinstance(sequence, (bytes, bytearray)): + 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(f"encodings.{name}").IncrementalDecoder, + MultibyteIncrementalDecoder, + ) + + +def identify_sig_or_bom(sequence: bytes | bytearray) -> tuple[str | None, bytes]: + """ + Identify and extract SIG/BOM in given sequence. + """ + + for iana_encoding in ENCODING_MARKS: + marks: 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: + """Returns the Python normalized encoding name (Not the IANA official name).""" + 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(f"Unable to retrieve IANA for '{cp_name}'") + + return cp_name + + +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(f"encodings.{iana_name_a}").IncrementalDecoder + decoder_b = importlib.import_module(f"encodings.{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(256): + 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 / 256 + + +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 | bytearray, + 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: str | None = 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/intelliaide/vendor/charset_normalizer/version.py b/intelliaide/vendor/charset_normalizer/version.py new file mode 100644 index 0000000..a93d367 --- /dev/null +++ b/intelliaide/vendor/charset_normalizer/version.py @@ -0,0 +1,8 @@ +""" +Expose version +""" + +from __future__ import annotations + +__version__ = "3.4.7" +VERSION = __version__.split(".") diff --git a/intelliaide/vendor/cryptography-48.0.0.dist-info/INSTALLER b/intelliaide/vendor/cryptography-48.0.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/intelliaide/vendor/cryptography-48.0.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/intelliaide/vendor/cryptography-48.0.0.dist-info/METADATA b/intelliaide/vendor/cryptography-48.0.0.dist-info/METADATA new file mode 100644 index 0000000..fbea0aa --- /dev/null +++ b/intelliaide/vendor/cryptography-48.0.0.dist-info/METADATA @@ -0,0 +1,110 @@ +Metadata-Version: 2.4 +Name: cryptography +Version: 48.0.0 +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Natural Language :: English +Classifier: Operating System :: MacOS :: MacOS X +Classifier: Operating System :: POSIX +Classifier: Operating System :: POSIX :: BSD +Classifier: Operating System :: POSIX :: Linux +Classifier: Operating System :: Microsoft :: Windows +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +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 :: 3.14 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Programming Language :: Python :: Free Threading :: 3 - Stable +Classifier: Topic :: Security :: Cryptography +Requires-Dist: cffi>=2.0.0 ; platform_python_implementation != 'PyPy' +Requires-Dist: typing-extensions>=4.13.2 ; python_full_version < '3.11' +Requires-Dist: bcrypt>=3.1.5 ; extra == 'ssh' +Provides-Extra: ssh +License-File: LICENSE +License-File: LICENSE.APACHE +License-File: LICENSE.BSD +Summary: cryptography is a package which provides cryptographic recipes and primitives to Python developers. +Author-email: The Python Cryptographic Authority and individual contributors +License-Expression: Apache-2.0 OR BSD-3-Clause +Requires-Python: >=3.9, !=3.9.0, !=3.9.1 +Description-Content-Type: text/x-rst; charset=UTF-8 +Project-URL: changelog, https://cryptography.io/en/latest/changelog/ +Project-URL: documentation, https://cryptography.io/ +Project-URL: homepage, https://github.com/pyca/cryptography +Project-URL: issues, https://github.com/pyca/cryptography/issues +Project-URL: source, https://github.com/pyca/cryptography/ + +pyca/cryptography +================= + +.. image:: https://img.shields.io/pypi/v/cryptography.svg + :target: https://pypi.org/project/cryptography/ + :alt: Latest Version + +.. image:: https://readthedocs.org/projects/cryptography/badge/?version=latest + :target: https://cryptography.io + :alt: Latest Docs + +.. image:: https://github.com/pyca/cryptography/actions/workflows/ci.yml/badge.svg + :target: https://github.com/pyca/cryptography/actions/workflows/ci.yml?query=branch%3Amain + +``cryptography`` is a package which provides cryptographic recipes and +primitives to Python developers. Our goal is for it to be your "cryptographic +standard library". It supports Python 3.9+ and PyPy3 7.3.11+. + +``cryptography`` includes both high level recipes and low level interfaces to +common cryptographic algorithms such as symmetric ciphers, message digests, and +key derivation functions. For example, to encrypt something with +``cryptography``'s high level symmetric encryption recipe: + +.. code-block:: pycon + + >>> from cryptography.fernet import Fernet + >>> # Put this somewhere safe! + >>> key = Fernet.generate_key() + >>> f = Fernet(key) + >>> token = f.encrypt(b"A really secret message. Not for prying eyes.") + >>> token + b'...' + >>> f.decrypt(token) + b'A really secret message. Not for prying eyes.' + +You can find more information in the `documentation`_. + +You can install ``cryptography`` with: + +.. code-block:: console + + $ pip install cryptography + +For full details see `the installation documentation`_. + +Discussion +~~~~~~~~~~ + +If you run into bugs, you can file them in our `issue tracker`_. + +We maintain a `cryptography-dev`_ mailing list for development discussion. + +You can also join ``#pyca`` on ``irc.libera.chat`` to ask questions or get +involved. + +Security +~~~~~~~~ + +Need to report a security issue? Please consult our `security reporting`_ +documentation. + + +.. _`documentation`: https://cryptography.io/ +.. _`the installation documentation`: https://cryptography.io/en/latest/installation/ +.. _`issue tracker`: https://github.com/pyca/cryptography/issues +.. _`cryptography-dev`: https://mail.python.org/mailman/listinfo/cryptography-dev +.. _`security reporting`: https://cryptography.io/en/latest/security/ + diff --git a/intelliaide/vendor/cryptography-48.0.0.dist-info/RECORD b/intelliaide/vendor/cryptography-48.0.0.dist-info/RECORD new file mode 100644 index 0000000..fd2dfe1 --- /dev/null +++ b/intelliaide/vendor/cryptography-48.0.0.dist-info/RECORD @@ -0,0 +1,195 @@ +cryptography-48.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +cryptography-48.0.0.dist-info/METADATA,sha256=Q_COX-Utpsgl5e4Ym9mF7hU3hgAgMy3Ly8XaVnneyQY,4343 +cryptography-48.0.0.dist-info/RECORD,, +cryptography-48.0.0.dist-info/WHEEL,sha256=59dZFnCZ9Ah4-4Hov4_Ij4OuERDplrmrGrO0EnwpCG0,109 +cryptography-48.0.0.dist-info/licenses/LICENSE,sha256=Pgx8CRqUi4JTO6mP18u0BDLW8amsv4X1ki0vmak65rs,197 +cryptography-48.0.0.dist-info/licenses/LICENSE.APACHE,sha256=qsc7MUj20dcRHbyjIJn2jSbGRMaBOuHk8F9leaomY_4,11360 +cryptography-48.0.0.dist-info/licenses/LICENSE.BSD,sha256=YCxMdILeZHndLpeTzaJ15eY9dz2s0eymiSMqtwCPtPs,1532 +cryptography-48.0.0.dist-info/sboms/cryptography-rust.cyclonedx.json,sha256=1fzfm56UYqOyUDjSaZ_PR1FgbE0pmZk5bxNk6uJedaI,45613 +cryptography-48.0.0.dist-info/sboms/sbom.json,sha256=hj41wZWnr0WU1kaHtI0VS_cPesX716EgqQjDnxMp0yI,1206 +cryptography/__about__.py,sha256=4Ay52_5LrlJ_oTPcjtV4NXOcNzJhpo6iDZPEYbndzJI,445 +cryptography/__init__.py,sha256=mthuUrTd4FROCpUYrTIqhjz6s6T9djAZrV7nZ1oMm2o,364 +cryptography/__pycache__/__about__.cpython-312.pyc,, +cryptography/__pycache__/__init__.cpython-312.pyc,, +cryptography/__pycache__/exceptions.cpython-312.pyc,, +cryptography/__pycache__/fernet.cpython-312.pyc,, +cryptography/__pycache__/utils.cpython-312.pyc,, +cryptography/exceptions.py,sha256=835EWILc2fwxw-gyFMriciC2SqhViETB10LBSytnDIc,1087 +cryptography/fernet.py,sha256=3Cvxkh0KJSbX8HbnCHu4wfCW7U0GgfUA3v_qQ8a8iWc,6963 +cryptography/hazmat/__init__.py,sha256=5IwrLWrVp0AjEr_4FdWG_V057NSJGY_W4egNNsuct0g,455 +cryptography/hazmat/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/__pycache__/_oid.cpython-312.pyc,, +cryptography/hazmat/_oid.py,sha256=p8ThjwJB56Ci_rAIrjyJ1f8VjgD6e39es2dh8JIUBOw,17240 +cryptography/hazmat/asn1/__init__.py,sha256=AZVmLA09Q9-bq27G8fYr3dof-iRkh5KSX3zEPmNb-9w,744 +cryptography/hazmat/asn1/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/asn1/__pycache__/asn1.cpython-312.pyc,, +cryptography/hazmat/asn1/asn1.py,sha256=FZ6nZr3N1kKqNBQfh0qKtJ0cLUjwtGFemG82KNWOcfk,14724 +cryptography/hazmat/backends/__init__.py,sha256=O5jvKFQdZnXhKeqJ-HtulaEL9Ni7mr1mDzZY5kHlYhI,361 +cryptography/hazmat/backends/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/backends/openssl/__init__.py,sha256=p3jmJfnCag9iE5sdMrN6VvVEu55u46xaS_IjoI0SrmA,305 +cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-312.pyc,, +cryptography/hazmat/backends/openssl/backend.py,sha256=7A8JKJlQjG3-Fqdcyat2Eb7kHLYAAtGF0j9ooaWyaE0,10520 +cryptography/hazmat/bindings/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/bindings/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/bindings/_rust.abi3.so,sha256=UVbEIvZcX5Eb4cvajr3IhuE7RL74hDZf3cObn80DKeY,13844864 +cryptography/hazmat/bindings/_rust/__init__.pyi,sha256=uUnnvOq_uameYnBNpmsv3SRAVO0WQGpjI58aR1lL4Kw,2285 +cryptography/hazmat/bindings/_rust/_openssl.pyi,sha256=T_5TpYO8bghIPjAQ3BtAABqw-CcYskHp92wm5PNY6dc,228 +cryptography/hazmat/bindings/_rust/asn1.pyi,sha256=BrGjC8J6nwuS-r3EVcdXJB8ndotfY9mbQYOfpbPG0HA,354 +cryptography/hazmat/bindings/_rust/declarative_asn1.pyi,sha256=iSeRyyd3hN0VIUKg_p424AzQ-b7hW1b_53Yx50yniYY,3661 +cryptography/hazmat/bindings/_rust/exceptions.pyi,sha256=exXr2xw_0pB1kk93cYbM3MohbzoUkjOms1ZMUi0uQZE,640 +cryptography/hazmat/bindings/_rust/ocsp.pyi,sha256=VPVWuKHI9EMs09ZLRYAGvR0Iz0mCMmEzXAkgJHovpoM,4020 +cryptography/hazmat/bindings/_rust/openssl/__init__.pyi,sha256=JDCef29vXnrEMvF13JH9z1-W9ahiTZQAk5xhu_KH6po,1550 +cryptography/hazmat/bindings/_rust/openssl/aead.pyi,sha256=7d--xdc0vuzRe4S2uuQaGm-9GGKv4NcSLQcLyWcaD6s,4582 +cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi,sha256=LhPzHWSXJq4grAJXn6zSvSSdV-aYIIscHDwIPlJGGPs,1315 +cryptography/hazmat/bindings/_rust/openssl/cmac.pyi,sha256=nPH0X57RYpsAkRowVpjQiHE566ThUTx7YXrsadmrmHk,564 +cryptography/hazmat/bindings/_rust/openssl/dh.pyi,sha256=Z3TC-G04-THtSdAOPLM1h2G7ml5bda1ElZUcn5wpuhk,1564 +cryptography/hazmat/bindings/_rust/openssl/dsa.pyi,sha256=qBtkgj2albt2qFcnZ9UDrhzoNhCVO7HTby5VSf1EXMI,1299 +cryptography/hazmat/bindings/_rust/openssl/ec.pyi,sha256=zJy0pRa5n-_p2dm45PxECB_-B6SVZyNKfjxFDpPqT38,1691 +cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi,sha256=VXfXd5G6hUivg399R1DYdmW3eTb0EebzDTqjRC2gaRw,532 +cryptography/hazmat/bindings/_rust/openssl/ed448.pyi,sha256=Yx49lqdnjsD7bxiDV1kcaMrDktug5evi5a6zerMiy2s,514 +cryptography/hazmat/bindings/_rust/openssl/hashes.pyi,sha256=bFe3T13UeyRInUJMD-R5ArGTGLqWDiWo2Lv2KGzUbf4,1076 +cryptography/hazmat/bindings/_rust/openssl/hmac.pyi,sha256=BXZn7NDjL3JAbYW0SQ8pg1iyC5DbQXVhUAiwsi8DFR8,702 +cryptography/hazmat/bindings/_rust/openssl/hpke.pyi,sha256=wrz8c12gBNBAItz9jorr_W4s8rFYDE1Yel1z2I-Wd2s,2877 +cryptography/hazmat/bindings/_rust/openssl/kdf.pyi,sha256=HiiLdEB9nqMsTvMwiFppQpfPz6fHUz9_gpjEB_XAOXA,6619 +cryptography/hazmat/bindings/_rust/openssl/keys.pyi,sha256=teIt8M6ZEMJrn4s3W0UnW0DZ-30Jd68WnSsKKG124l0,912 +cryptography/hazmat/bindings/_rust/openssl/mldsa.pyi,sha256=HChNsjW0C_vO9OVD4FhEZrXO3_FiEq2ZTF59hlfcEdM,1073 +cryptography/hazmat/bindings/_rust/openssl/mlkem.pyi,sha256=byoeus4-lIOlWlEiRQdCc00qCkXpOB5peBY6yo9ik8s,835 +cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi,sha256=_SW9NtQ5FDlAbdclFtWpT4lGmxKIKHpN-4j8J2BzYfQ,585 +cryptography/hazmat/bindings/_rust/openssl/rsa.pyi,sha256=2OQCNSXkxgc-3uw1xiCCloIQTV6p9_kK79Yu0rhZgPc,1364 +cryptography/hazmat/bindings/_rust/openssl/x25519.pyi,sha256=ewn4GpQyb7zPwE-ni7GtyQgMC0A1mLuqYsSyqv6nI_s,523 +cryptography/hazmat/bindings/_rust/openssl/x448.pyi,sha256=juTZTmli8jO_5Vcufg-vHvx_tCyezmSLIh_9PU3TczI,505 +cryptography/hazmat/bindings/_rust/pkcs12.pyi,sha256=vEEd5wDiZvb8ZGFaziLCaWLzAwoG_tvPUxLQw5_uOl8,1605 +cryptography/hazmat/bindings/_rust/pkcs7.pyi,sha256=txGBJijqZshEcqra6byPNbnisIdlxzOSIHP2hl9arPs,1601 +cryptography/hazmat/bindings/_rust/test_support.pyi,sha256=PPhld-WkO743iXFPebeG0LtgK0aTzGdjcIsay1Gm5GE,757 +cryptography/hazmat/bindings/_rust/x509.pyi,sha256=rmt4enscdvDQ7lBEHb2cASwN0d3TP3ymEVZcEJ-Rf3A,10152 +cryptography/hazmat/bindings/openssl/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-312.pyc,, +cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-312.pyc,, +cryptography/hazmat/bindings/openssl/_conditional.py,sha256=vfzi-xHdStAcJQjLqqOlSos94L8D_tqFtBe7Ovw-KtY,5611 +cryptography/hazmat/bindings/openssl/binding.py,sha256=GnoZLYvCzXbKf4KldUXec-oz-hdVSa_sinZnqXgdS2s,4096 +cryptography/hazmat/decrepit/__init__.py,sha256=wHCbWfaefa-fk6THSw9th9fJUsStJo7245wfFBqmduA,216 +cryptography/hazmat/decrepit/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/decrepit/ciphers/__init__.py,sha256=wHCbWfaefa-fk6THSw9th9fJUsStJo7245wfFBqmduA,216 +cryptography/hazmat/decrepit/ciphers/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/decrepit/ciphers/__pycache__/algorithms.cpython-312.pyc,, +cryptography/hazmat/decrepit/ciphers/__pycache__/modes.cpython-312.pyc,, +cryptography/hazmat/decrepit/ciphers/algorithms.py,sha256=yqHt7k5OzF_KuvO8M9vTlNLtG7EotbvShyYKIaUJqhg,3566 +cryptography/hazmat/decrepit/ciphers/modes.py,sha256=Oq_PEwCke5OLczOfr_vzAOJ6wPx-rlsvHAXPBuh5b9o,1649 +cryptography/hazmat/primitives/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/primitives/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/_asymmetric.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/_cipheralgorithm.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/_modes.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/_serialization.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/cmac.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/constant_time.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/hashes.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/hmac.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/hpke.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/keywrap.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/padding.cpython-312.pyc,, +cryptography/hazmat/primitives/__pycache__/poly1305.cpython-312.pyc,, +cryptography/hazmat/primitives/_asymmetric.py,sha256=RhgcouUB6HTiFDBrR1LxqkMjpUxIiNvQ1r_zJjRG6qQ,532 +cryptography/hazmat/primitives/_cipheralgorithm.py,sha256=Eh3i7lwedHfi0eLSsH93PZxQKzY9I6lkK67vL4V5tOc,1522 +cryptography/hazmat/primitives/_modes.py,sha256=_EiAOD8Jb6WpFXluwkcUT3ECz_TH8xjGvbQlGkNm59Q,3075 +cryptography/hazmat/primitives/_serialization.py,sha256=hi0xJblBAZ8pmZx2lWa-lruphxvvvG3g9DNK0G8Odfs,4440 +cryptography/hazmat/primitives/asymmetric/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180 +cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/ec.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/ed25519.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/mldsa.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/mlkem.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/types.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-312.pyc,, +cryptography/hazmat/primitives/asymmetric/dh.py,sha256=klvHVaxAFkUyaWXLytqYjBTh81Zx1ByCJNZVRcSDYX8,3912 +cryptography/hazmat/primitives/asymmetric/dsa.py,sha256=kQzTViqAI9PiELNOBco_n6MfP3N9ehIPkSduOpupt0M,4482 +cryptography/hazmat/primitives/asymmetric/ec.py,sha256=LklVCLLxbbQzqiE6HRaYTRauLMphYUw3tE6c8oBIxYQ,10183 +cryptography/hazmat/primitives/asymmetric/ed25519.py,sha256=mbffLvs-3PgCDeg1rQXVXh7GLntlVL4ATjkIEc4pt5M,2998 +cryptography/hazmat/primitives/asymmetric/ed448.py,sha256=n0dK6y-VLxuw-zvrDxuPT4598hymgX-1Ry_jq9aUQhE,4002 +cryptography/hazmat/primitives/asymmetric/mldsa.py,sha256=49DPIhoHEyfGVwL6DRc3WlJ20Rinq-ldtjsp91NpyMM,12226 +cryptography/hazmat/primitives/asymmetric/mlkem.py,sha256=wvVkeFT-4of-VcUAER2-zI_5hXT6rwTJPMCQ8gF9GTA,7901 +cryptography/hazmat/primitives/asymmetric/padding.py,sha256=vQ6l6gOg9HqcbOsvHrSiJRVLdEj9L4m4HkRGYziTyFA,2854 +cryptography/hazmat/primitives/asymmetric/rsa.py,sha256=lIE7lGe449W5URLTKCpvFGerITouKoZV9GwuTzScsSo,8492 +cryptography/hazmat/primitives/asymmetric/types.py,sha256=q3glpax4EHgNpkRSEXlhK43a07F3Dsk-rQ3bbjL9ZnM,3309 +cryptography/hazmat/primitives/asymmetric/utils.py,sha256=Qs8Re9GFPjW_tNp_73IeJEjPCf0slOIsWOxo6qymT6k,821 +cryptography/hazmat/primitives/asymmetric/x25519.py,sha256=lQcgUk-Piubj8ynFNWQeYme3tYZMgHQqkRKkIDOHLzo,3888 +cryptography/hazmat/primitives/asymmetric/x448.py,sha256=b37ig7k7poG6SJDry42j-ElCj5q4eQ0X5CFmN0Sn8z8,3913 +cryptography/hazmat/primitives/ciphers/__init__.py,sha256=eyEXmjk6_CZXaOPYDr7vAYGXr29QvzgWL2-4CSolLFs,680 +cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/aead.cpython-312.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/algorithms.cpython-312.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/base.cpython-312.pyc,, +cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-312.pyc,, +cryptography/hazmat/primitives/ciphers/aead.py,sha256=Fzlyx7w8KYQakzDp1zWgJnIr62zgZrgVh1u2h4exB54,634 +cryptography/hazmat/primitives/ciphers/algorithms.py,sha256=IGfCycYJOh1TvoI34rfw8KfJ_xmt1p_DpBht2Fghceo,3496 +cryptography/hazmat/primitives/ciphers/base.py,sha256=aBC7HHBBoixebmparVr0UlODs3VD0A7B6oz_AaRjDv8,4253 +cryptography/hazmat/primitives/ciphers/modes.py,sha256=pNI0cSLCLxr7lz7ApfUpVpFH5q_bzOpKW-QggmgQB74,6007 +cryptography/hazmat/primitives/cmac.py,sha256=sz_s6H_cYnOvx-VNWdIKhRhe3Ymp8z8J0D3CBqOX3gg,338 +cryptography/hazmat/primitives/constant_time.py,sha256=xdunWT0nf8OvKdcqUhhlFKayGp4_PgVJRU2W1wLSr_A,422 +cryptography/hazmat/primitives/hashes.py,sha256=M8BrlKB3U6DEtHvWTV5VRjpteHv1kS3Zxm_Bsk04cr8,5184 +cryptography/hazmat/primitives/hmac.py,sha256=RpB3z9z5skirCQrm7zQbtnp9pLMnAjrlTUvKqF5aDDc,423 +cryptography/hazmat/primitives/hpke.py,sha256=RsHissC5l-dTPn1p2JbcrIrAnDBrLqM5ugBFSGpmKu4,865 +cryptography/hazmat/primitives/kdf/__init__.py,sha256=v3yiYBGU272EojNXbwfYZdbbfI9cVOCCG3nXhTDda3k,1037 +cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/argon2.cpython-312.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-312.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-312.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-312.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-312.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-312.pyc,, +cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-312.pyc,, +cryptography/hazmat/primitives/kdf/argon2.py,sha256=ZJx-enUlAA4o7b46C1wlzG_XAQQW0wIkFgUKkrM_wA8,632 +cryptography/hazmat/primitives/kdf/concatkdf.py,sha256=BFnOKS72txKF0yQvASr0Na7uhzvLHpUCckK5iNAC_aQ,591 +cryptography/hazmat/primitives/kdf/hkdf.py,sha256=M0lAEfRoc4kpp4-nwDj9yB-vNZukIOYEQrUlWsBNn9o,543 +cryptography/hazmat/primitives/kdf/kbkdf.py,sha256=C3w99vjFqhqzAxzFOH4zzvVoHkb5AC6Lz6AEQGV7d_g,737 +cryptography/hazmat/primitives/kdf/pbkdf2.py,sha256=Xchkk99s-Mk6b6KSCouqdk8FVyiNVOSFIenmnW3tLgQ,468 +cryptography/hazmat/primitives/kdf/scrypt.py,sha256=XyWUdUUmhuI9V6TqAPOvujCSMGv1XQdg0a21IWCmO-U,590 +cryptography/hazmat/primitives/kdf/x963kdf.py,sha256=QKjhRehuTsAstL384bKfvjuv1yfdamAHVhsBRWen2Vw,456 +cryptography/hazmat/primitives/keywrap.py,sha256=UI-0UESQxBXTKU1HrrRoUwDiFsrWif81qyXlV1e7kyY,5776 +cryptography/hazmat/primitives/padding.py,sha256=QT-U-NvV2eQGO1wVPbDiNGNSc9keRDS-ig5cQOrLz0E,1865 +cryptography/hazmat/primitives/poly1305.py,sha256=P5EPQV-RB_FJPahpg01u0Ts4S_PnAmsroxIGXbGeRRo,355 +cryptography/hazmat/primitives/serialization/__init__.py,sha256=Q7uTgDlt7n3WfsMT6jYwutC6DIg_7SEeoAm1GHZ5B5E,1705 +cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-312.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/pkcs12.cpython-312.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-312.pyc,, +cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-312.pyc,, +cryptography/hazmat/primitives/serialization/base.py,sha256=ikq5MJIwp_oUnjiaBco_PmQwOTYuGi-XkYUYHKy8Vo0,615 +cryptography/hazmat/primitives/serialization/pkcs12.py,sha256=mS9cFNG4afzvseoc5e1MWoY2VskfL8N8Y_OFjl67luY,5104 +cryptography/hazmat/primitives/serialization/pkcs7.py,sha256=mFM7OFuZ8cCxUGUoo4Cof6BnCHc_Ibx1AQjjfxnPlxo,13998 +cryptography/hazmat/primitives/serialization/ssh.py,sha256=HV6ZqIjqNNaNUL6M4gQyNJJtZ75EsiSZs6yxddqBrWI,53789 +cryptography/hazmat/primitives/twofactor/__init__.py,sha256=tmMZGB-g4IU1r7lIFqASU019zr0uPp_wEBYcwdDCKCA,258 +cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-312.pyc,, +cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-312.pyc,, +cryptography/hazmat/primitives/twofactor/__pycache__/totp.cpython-312.pyc,, +cryptography/hazmat/primitives/twofactor/hotp.py,sha256=ivZo5BrcCGWLsqql4nZV0XXCjyGPi_iHfDFltGlOJwk,3256 +cryptography/hazmat/primitives/twofactor/totp.py,sha256=m5LPpRL00kp4zY8gTjr55Hfz9aMlPS53kHmVkSQCmdY,1652 +cryptography/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +cryptography/utils.py,sha256=wCnykfmWmp6L5zUFou715snYL9_YLLHjpj4_NHmlhwU,4281 +cryptography/x509/__init__.py,sha256=zciyadRgnCp2DNPPm6ujEKd6EX-8_zOnwtCjJbZBatg,8273 +cryptography/x509/__pycache__/__init__.cpython-312.pyc,, +cryptography/x509/__pycache__/base.cpython-312.pyc,, +cryptography/x509/__pycache__/certificate_transparency.cpython-312.pyc,, +cryptography/x509/__pycache__/extensions.cpython-312.pyc,, +cryptography/x509/__pycache__/general_name.cpython-312.pyc,, +cryptography/x509/__pycache__/name.cpython-312.pyc,, +cryptography/x509/__pycache__/ocsp.cpython-312.pyc,, +cryptography/x509/__pycache__/oid.cpython-312.pyc,, +cryptography/x509/__pycache__/verification.cpython-312.pyc,, +cryptography/x509/base.py,sha256=8322G4opJ1a2juXU14Qi2y-G1V-cQHaudo7gAFbTPlM,25998 +cryptography/x509/certificate_transparency.py,sha256=JqoOIDhlwInrYMFW6IFn77WJ0viF-PB_rlZV3vs9MYc,797 +cryptography/x509/extensions.py,sha256=0AUgutLe26SLg1KaxSeo0fG7fUBAyK2tEgJl9c_AQRM,77968 +cryptography/x509/general_name.py,sha256=sP_rV11Qlpsk4x3XXGJY_Mv0Q_s9dtjeLckHsjpLQoQ,7836 +cryptography/x509/name.py,sha256=H0Bix4uAxk5Ndkmee3Lxv3UdXbdph2XBr-nTPxHo54U,15356 +cryptography/x509/ocsp.py,sha256=Yey6NdFV1MPjop24Mj_VenjEpg3kUaMopSWOK0AbeBs,12699 +cryptography/x509/oid.py,sha256=BUzgXXGVWilkBkdKPTm9R4qElE9gAGHgdYPMZAp7PJo,931 +cryptography/x509/verification.py,sha256=gR2C2c-XZQtblZhT5T5vjSKOtCb74ef2alPVmEcwFlM,958 diff --git a/intelliaide/vendor/cryptography-48.0.0.dist-info/WHEEL b/intelliaide/vendor/cryptography-48.0.0.dist-info/WHEEL new file mode 100644 index 0000000..4e7840d --- /dev/null +++ b/intelliaide/vendor/cryptography-48.0.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: maturin (1.13.1) +Root-Is-Purelib: false +Tag: cp311-abi3-manylinux_2_34_x86_64 + diff --git a/intelliaide/vendor/cryptography-48.0.0.dist-info/licenses/LICENSE b/intelliaide/vendor/cryptography-48.0.0.dist-info/licenses/LICENSE new file mode 100644 index 0000000..b11f379 --- /dev/null +++ b/intelliaide/vendor/cryptography-48.0.0.dist-info/licenses/LICENSE @@ -0,0 +1,3 @@ +This software is made available under the terms of *either* of the licenses +found in LICENSE.APACHE or LICENSE.BSD. Contributions to cryptography are made +under the terms of *both* these licenses. diff --git a/intelliaide/vendor/cryptography-48.0.0.dist-info/licenses/LICENSE.APACHE b/intelliaide/vendor/cryptography-48.0.0.dist-info/licenses/LICENSE.APACHE new file mode 100644 index 0000000..62589ed --- /dev/null +++ b/intelliaide/vendor/cryptography-48.0.0.dist-info/licenses/LICENSE.APACHE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/intelliaide/vendor/cryptography-48.0.0.dist-info/licenses/LICENSE.BSD b/intelliaide/vendor/cryptography-48.0.0.dist-info/licenses/LICENSE.BSD new file mode 100644 index 0000000..ec1a29d --- /dev/null +++ b/intelliaide/vendor/cryptography-48.0.0.dist-info/licenses/LICENSE.BSD @@ -0,0 +1,27 @@ +Copyright (c) Individual 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 PyCA Cryptography 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 OWNER 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/intelliaide/vendor/cryptography-48.0.0.dist-info/sboms/cryptography-rust.cyclonedx.json b/intelliaide/vendor/cryptography-48.0.0.dist-info/sboms/cryptography-rust.cyclonedx.json new file mode 100644 index 0000000..0e28622 --- /dev/null +++ b/intelliaide/vendor/cryptography-48.0.0.dist-info/sboms/cryptography-rust.cyclonedx.json @@ -0,0 +1,1362 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.5", + "version": 1, + "serialNumber": "urn:uuid:b0f888ff-baac-404b-ad7b-a394cb3cc7f7", + "metadata": { + "timestamp": "2026-05-04T22:46:52.633241040Z", + "tools": [ + { + "vendor": "CycloneDX", + "name": "cargo-cyclonedx", + "version": "0.5.9" + } + ], + "authors": [ + { + "name": "The cryptography developers", + "email": "cryptography-dev@python.org" + } + ], + "component": { + "type": "library", + "bom-ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust#cryptography-rust@0.1.0", + "author": "The cryptography developers ", + "name": "cryptography-rust", + "version": "0.1.0", + "scope": "required", + "licenses": [ + { + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "purl": "pkg:cargo/cryptography-rust@0.1.0?download_url=file://.", + "components": [ + { + "type": "library", + "bom-ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust#cryptography-rust@0.1.0 bin-target-0", + "name": "cryptography_rust", + "version": "0.1.0", + "purl": "pkg:cargo/cryptography-rust@0.1.0?download_url=file://.#src/lib.rs" + } + ] + }, + "properties": [ + { + "name": "cdx:rustc:sbom:target:all_targets", + "value": "true" + } + ] + }, + "components": [ + { + "type": "library", + "bom-ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-cffi#0.1.0", + "author": "The cryptography developers ", + "name": "cryptography-cffi", + "version": "0.1.0", + "scope": "required", + "licenses": [ + { + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "purl": "pkg:cargo/cryptography-cffi@0.1.0?download_url=file://cryptography-cffi" + }, + { + "type": "library", + "bom-ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-crypto#0.1.0", + "author": "The cryptography developers ", + "name": "cryptography-crypto", + "version": "0.1.0", + "scope": "required", + "licenses": [ + { + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "purl": "pkg:cargo/cryptography-crypto@0.1.0?download_url=file://cryptography-crypto" + }, + { + "type": "library", + "bom-ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-keepalive#0.1.0", + "author": "The cryptography developers ", + "name": "cryptography-keepalive", + "version": "0.1.0", + "scope": "required", + "licenses": [ + { + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "purl": "pkg:cargo/cryptography-keepalive@0.1.0?download_url=file://cryptography-keepalive" + }, + { + "type": "library", + "bom-ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-key-parsing#0.1.0", + "author": "The cryptography developers ", + "name": "cryptography-key-parsing", + "version": "0.1.0", + "scope": "required", + "licenses": [ + { + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "purl": "pkg:cargo/cryptography-key-parsing@0.1.0?download_url=file://cryptography-key-parsing" + }, + { + "type": "library", + "bom-ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-openssl#0.1.0", + "author": "The cryptography developers ", + "name": "cryptography-openssl", + "version": "0.1.0", + "scope": "required", + "licenses": [ + { + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "purl": "pkg:cargo/cryptography-openssl@0.1.0?download_url=file://cryptography-openssl" + }, + { + "type": "library", + "bom-ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-x509#0.1.0", + "author": "The cryptography developers ", + "name": "cryptography-x509", + "version": "0.1.0", + "scope": "required", + "licenses": [ + { + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "purl": "pkg:cargo/cryptography-x509@0.1.0?download_url=file://cryptography-x509" + }, + { + "type": "library", + "bom-ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-x509-verification#0.1.0", + "author": "The cryptography developers ", + "name": "cryptography-x509-verification", + "version": "0.1.0", + "scope": "required", + "licenses": [ + { + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "purl": "pkg:cargo/cryptography-x509-verification@0.1.0?download_url=file://cryptography-x509-verification" + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#asn1@0.24.1", + "author": "Alex Gaynor ", + "name": "asn1", + "version": "0.24.1", + "description": "ASN.1 (DER) parser and writer for Rust.", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "c9795210620c0cb3f9a7ce4f882808c38e1ef7b347c90591dceae0886e031fb1" + } + ], + "licenses": [ + { + "expression": "BSD-3-Clause" + } + ], + "purl": "pkg:cargo/asn1@0.24.1", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/alex/rust-asn1" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#asn1_derive@0.24.1", + "author": "Alex Gaynor ", + "name": "asn1_derive", + "version": "0.24.1", + "description": "#[derive] support for asn1", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "909e307f1cc32bb8bccbd98f446e6d1bf03fa30f7b53a4337da7181ad30fa11a" + } + ], + "licenses": [ + { + "expression": "BSD-3-Clause" + } + ], + "purl": "pkg:cargo/asn1_derive@0.24.1", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/alex/rust-asn1" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#base64@0.22.1", + "author": "Marshall Pierce ", + "name": "base64", + "version": "0.22.1", + "description": "encodes and decodes base64 as bytes or utf8", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/base64@0.22.1", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/base64" + }, + { + "type": "vcs", + "url": "https://github.com/marshallpierce/rust-base64" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#bitflags@2.11.1", + "author": "The Rust Project Developers", + "name": "bitflags", + "version": "2.11.1", + "description": "A macro to generate structures which behave like bitflags. ", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/bitflags@2.11.1", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/bitflags" + }, + { + "type": "website", + "url": "https://github.com/bitflags/bitflags" + }, + { + "type": "vcs", + "url": "https://github.com/bitflags/bitflags" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#cc@1.2.61", + "author": "Alex Crichton ", + "name": "cc", + "version": "1.2.61", + "description": "A build-time dependency for Cargo build scripts to assist in invoking the native C compiler to compile native C code into a static archive to be linked into Rust code. ", + "scope": "excluded", + "hashes": [ + { + "alg": "SHA-256", + "content": "d16d90359e986641506914ba71350897565610e87ce0ad9e6f28569db3dd5c6d" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/cc@1.2.61", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/cc" + }, + { + "type": "website", + "url": "https://github.com/rust-lang/cc-rs" + }, + { + "type": "vcs", + "url": "https://github.com/rust-lang/cc-rs" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#cfg-if@1.0.4", + "author": "Alex Crichton ", + "name": "cfg-if", + "version": "1.0.4", + "description": "A macro to ergonomically define an item depending on a large number of #[cfg] parameters. Structured like an if-else chain, the first matching branch is the item that gets emitted. ", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/cfg-if@1.0.4", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/rust-lang/cfg-if" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#find-msvc-tools@0.1.9", + "name": "find-msvc-tools", + "version": "0.1.9", + "description": "Find windows-specific tools, read MSVC versions from the registry and from COM interfaces", + "scope": "excluded", + "hashes": [ + { + "alg": "SHA-256", + "content": "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/find-msvc-tools@0.1.9", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/find-msvc-tools" + }, + { + "type": "vcs", + "url": "https://github.com/rust-lang/cc-rs" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#foreign-types-shared@0.1.1", + "author": "Steven Fackler ", + "name": "foreign-types-shared", + "version": "0.1.1", + "description": "An internal crate used by foreign-types", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/foreign-types-shared@0.1.1", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/sfackler/foreign-types" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#foreign-types@0.3.2", + "author": "Steven Fackler ", + "name": "foreign-types", + "version": "0.3.2", + "description": "A framework for Rust wrappers over C APIs", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/foreign-types@0.3.2", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/sfackler/foreign-types" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#heck@0.5.0", + "name": "heck", + "version": "0.5.0", + "description": "heck is a case conversion library.", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/heck@0.5.0", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/withoutboats/heck" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#itoa@1.0.18", + "author": "David Tolnay ", + "name": "itoa", + "version": "1.0.18", + "description": "Fast integer primitive to string conversion", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/itoa@1.0.18", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/itoa" + }, + { + "type": "vcs", + "url": "https://github.com/dtolnay/itoa" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#libc@0.2.186", + "author": "The Rust Project Developers", + "name": "libc", + "version": "0.2.186", + "description": "Raw FFI bindings to platform libraries like libc.", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/libc@0.2.186", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/rust-lang/libc" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#once_cell@1.21.4", + "author": "Aleksey Kladov ", + "name": "once_cell", + "version": "1.21.4", + "description": "Single assignment cells and lazy values.", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/once_cell@1.21.4", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/once_cell" + }, + { + "type": "vcs", + "url": "https://github.com/matklad/once_cell" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#openssl-macros@0.1.1", + "name": "openssl-macros", + "version": "0.1.1", + "description": "Internal macros used by the openssl crate.", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/openssl-macros@0.1.1" + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#openssl-sys@0.9.115", + "author": "Alex Crichton , Steven Fackler ", + "name": "openssl-sys", + "version": "0.9.115", + "description": "FFI bindings to OpenSSL", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "158fe5b292746440aa6e7a7e690e55aeb72d41505e2804c23c6973ad0e9c9781" + } + ], + "licenses": [ + { + "expression": "MIT" + } + ], + "purl": "pkg:cargo/openssl-sys@0.9.115", + "externalReferences": [ + { + "type": "other", + "url": "openssl" + }, + { + "type": "vcs", + "url": "https://github.com/rust-openssl/rust-openssl" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#openssl@0.10.79", + "author": "Steven Fackler ", + "name": "openssl", + "version": "0.10.79", + "description": "OpenSSL bindings", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "bf0b434746ee2832f4f0baf10137e1cabb18cbe6912c69e2e33263c45250f542" + } + ], + "licenses": [ + { + "expression": "Apache-2.0" + } + ], + "purl": "pkg:cargo/openssl@0.10.79", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/rust-openssl/rust-openssl" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pem@3.0.6", + "author": "Jonathan Creekmore ", + "name": "pem", + "version": "3.0.6", + "description": "Parse and encode PEM-encoded data.", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" + } + ], + "licenses": [ + { + "expression": "MIT" + } + ], + "purl": "pkg:cargo/pem@3.0.6", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/pem/" + }, + { + "type": "website", + "url": "https://github.com/jcreekmore/pem-rs.git" + }, + { + "type": "vcs", + "url": "https://github.com/jcreekmore/pem-rs.git" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pkg-config@0.3.33", + "author": "Alex Crichton ", + "name": "pkg-config", + "version": "0.3.33", + "description": "A library to run the pkg-config system tool at build time in order to be used in Cargo build scripts. ", + "scope": "excluded", + "hashes": [ + { + "alg": "SHA-256", + "content": "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/pkg-config@0.3.33", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/pkg-config" + }, + { + "type": "vcs", + "url": "https://github.com/rust-lang/pkg-config-rs" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#portable-atomic@1.13.1", + "name": "portable-atomic", + "version": "1.13.1", + "description": "Portable atomic types including support for 128-bit atomics, atomic float, etc. ", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + } + ], + "licenses": [ + { + "expression": "Apache-2.0 OR MIT" + } + ], + "purl": "pkg:cargo/portable-atomic@1.13.1", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/taiki-e/portable-atomic" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106", + "author": "David Tolnay , Alex Crichton ", + "name": "proc-macro2", + "version": "1.0.106", + "description": "A substitute implementation of the compiler's `proc_macro` API to decouple token-based libraries from the procedural macro use case.", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/proc-macro2@1.0.106", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/proc-macro2" + }, + { + "type": "vcs", + "url": "https://github.com/dtolnay/proc-macro2" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-build-config@0.28.3", + "author": "PyO3 Project and Contributors ", + "name": "pyo3-build-config", + "version": "0.28.3", + "description": "Build configuration for the PyO3 ecosystem", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "e368e7ddfdeb98c9bca7f8383be1648fd84ab466bf2bc015e94008db6d35611e" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/pyo3-build-config@0.28.3", + "externalReferences": [ + { + "type": "website", + "url": "https://github.com/pyo3/pyo3" + }, + { + "type": "vcs", + "url": "https://github.com/pyo3/pyo3" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-ffi@0.28.3", + "author": "PyO3 Project and Contributors ", + "name": "pyo3-ffi", + "version": "0.28.3", + "description": "Python-API bindings for the PyO3 ecosystem", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "7f29e10af80b1f7ccaf7f69eace800a03ecd13e883acfacc1e5d0988605f651e" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/pyo3-ffi@0.28.3", + "externalReferences": [ + { + "type": "website", + "url": "https://github.com/pyo3/pyo3" + }, + { + "type": "other", + "url": "python" + }, + { + "type": "vcs", + "url": "https://github.com/pyo3/pyo3" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-macros-backend@0.28.3", + "author": "PyO3 Project and Contributors ", + "name": "pyo3-macros-backend", + "version": "0.28.3", + "description": "Code generation for PyO3 package", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "c4cdc218d835738f81c2338f822078af45b4afdf8b2e33cbb5916f108b813acb" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/pyo3-macros-backend@0.28.3", + "externalReferences": [ + { + "type": "website", + "url": "https://github.com/pyo3/pyo3" + }, + { + "type": "vcs", + "url": "https://github.com/pyo3/pyo3" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-macros@0.28.3", + "author": "PyO3 Project and Contributors ", + "name": "pyo3-macros", + "version": "0.28.3", + "description": "Proc macros for PyO3 package", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "df6e520eff47c45997d2fc7dd8214b25dd1310918bbb2642156ef66a67f29813" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/pyo3-macros@0.28.3", + "externalReferences": [ + { + "type": "website", + "url": "https://github.com/pyo3/pyo3" + }, + { + "type": "vcs", + "url": "https://github.com/pyo3/pyo3" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3@0.28.3", + "author": "PyO3 Project and Contributors ", + "name": "pyo3", + "version": "0.28.3", + "description": "Bindings to Python interpreter", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "91fd8e38a3b50ed1167fb981cd6fd60147e091784c427b8f7183a7ee32c31c12" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/pyo3@0.28.3", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/crate/pyo3/" + }, + { + "type": "website", + "url": "https://github.com/pyo3/pyo3" + }, + { + "type": "vcs", + "url": "https://github.com/pyo3/pyo3" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.45", + "author": "David Tolnay ", + "name": "quote", + "version": "1.0.45", + "description": "Quasi-quoting macro quote!(...)", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/quote@1.0.45", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/quote/" + }, + { + "type": "vcs", + "url": "https://github.com/dtolnay/quote" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#self_cell@1.2.2", + "author": "Lukas Bergdoll ", + "name": "self_cell", + "version": "1.2.2", + "description": "Safe-to-use proc-macro-free self-referential structs in stable Rust.", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89" + } + ], + "licenses": [ + { + "expression": "Apache-2.0 OR GPL-2.0-only" + } + ], + "purl": "pkg:cargo/self_cell@1.2.2", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/self_cell" + }, + { + "type": "vcs", + "url": "https://github.com/Voultapher/self_cell" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#shlex@1.3.0", + "author": "comex , Fenhl , Adrian Taylor , Alex Touchet , Daniel Parks , Garrett Berg ", + "name": "shlex", + "version": "1.3.0", + "description": "Split a string into shell words, like Python's shlex.", + "scope": "excluded", + "hashes": [ + { + "alg": "SHA-256", + "content": "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/shlex@1.3.0", + "externalReferences": [ + { + "type": "vcs", + "url": "https://github.com/comex/rust-shlex" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#syn@2.0.117", + "author": "David Tolnay ", + "name": "syn", + "version": "2.0.117", + "description": "Parser for Rust source code", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/syn@2.0.117", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/syn" + }, + { + "type": "vcs", + "url": "https://github.com/dtolnay/syn" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#target-lexicon@0.13.5", + "author": "Dan Gohman ", + "name": "target-lexicon", + "version": "0.13.5", + "description": "LLVM target triple types", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" + } + ], + "licenses": [ + { + "expression": "Apache-2.0 WITH LLVM-exception" + } + ], + "purl": "pkg:cargo/target-lexicon@0.13.5", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/target-lexicon/" + }, + { + "type": "vcs", + "url": "https://github.com/bytecodealliance/target-lexicon" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#unicode-ident@1.0.24", + "author": "David Tolnay ", + "name": "unicode-ident", + "version": "1.0.24", + "description": "Determine whether characters have the XID_Start or XID_Continue properties according to Unicode Standard Annex #31", + "scope": "required", + "hashes": [ + { + "alg": "SHA-256", + "content": "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + } + ], + "licenses": [ + { + "expression": "(MIT OR Apache-2.0) AND Unicode-3.0" + } + ], + "purl": "pkg:cargo/unicode-ident@1.0.24", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/unicode-ident" + }, + { + "type": "vcs", + "url": "https://github.com/dtolnay/unicode-ident" + } + ] + }, + { + "type": "library", + "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#vcpkg@0.2.15", + "author": "Jim McGrath ", + "name": "vcpkg", + "version": "0.2.15", + "description": "A library to find native dependencies in a vcpkg tree at build time in order to be used in Cargo build scripts. ", + "scope": "excluded", + "hashes": [ + { + "alg": "SHA-256", + "content": "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + } + ], + "licenses": [ + { + "expression": "MIT OR Apache-2.0" + } + ], + "purl": "pkg:cargo/vcpkg@0.2.15", + "externalReferences": [ + { + "type": "documentation", + "url": "https://docs.rs/vcpkg" + }, + { + "type": "vcs", + "url": "https://github.com/mcgoo/vcpkg-rs" + } + ] + } + ], + "dependencies": [ + { + "ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust#cryptography-rust@0.1.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#asn1@0.24.1", + "registry+https://github.com/rust-lang/crates.io-index#base64@0.22.1", + "registry+https://github.com/rust-lang/crates.io-index#cfg-if@1.0.4", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-cffi#0.1.0", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-crypto#0.1.0", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-keepalive#0.1.0", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-key-parsing#0.1.0", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-openssl#0.1.0", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-x509#0.1.0", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-x509-verification#0.1.0", + "registry+https://github.com/rust-lang/crates.io-index#foreign-types-shared@0.1.1", + "registry+https://github.com/rust-lang/crates.io-index#openssl@0.10.79", + "registry+https://github.com/rust-lang/crates.io-index#openssl-sys@0.9.115", + "registry+https://github.com/rust-lang/crates.io-index#pem@3.0.6", + "registry+https://github.com/rust-lang/crates.io-index#pyo3@0.28.3", + "registry+https://github.com/rust-lang/crates.io-index#pyo3-build-config@0.28.3", + "registry+https://github.com/rust-lang/crates.io-index#self_cell@1.2.2" + ] + }, + { + "ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-cffi#0.1.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#cc@1.2.61", + "registry+https://github.com/rust-lang/crates.io-index#openssl-sys@0.9.115", + "registry+https://github.com/rust-lang/crates.io-index#pyo3@0.28.3" + ] + }, + { + "ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-crypto#0.1.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#openssl@0.10.79" + ] + }, + { + "ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-keepalive#0.1.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#pyo3@0.28.3" + ] + }, + { + "ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-key-parsing#0.1.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#asn1@0.24.1", + "registry+https://github.com/rust-lang/crates.io-index#cfg-if@1.0.4", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-crypto#0.1.0", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-openssl#0.1.0", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-x509#0.1.0", + "registry+https://github.com/rust-lang/crates.io-index#openssl@0.10.79", + "registry+https://github.com/rust-lang/crates.io-index#openssl-sys@0.9.115", + "registry+https://github.com/rust-lang/crates.io-index#pem@3.0.6" + ] + }, + { + "ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-openssl#0.1.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#cfg-if@1.0.4", + "registry+https://github.com/rust-lang/crates.io-index#foreign-types@0.3.2", + "registry+https://github.com/rust-lang/crates.io-index#foreign-types-shared@0.1.1", + "registry+https://github.com/rust-lang/crates.io-index#openssl@0.10.79", + "registry+https://github.com/rust-lang/crates.io-index#openssl-sys@0.9.115" + ] + }, + { + "ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-x509#0.1.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#asn1@0.24.1" + ] + }, + { + "ref": "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-x509-verification#0.1.0", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#asn1@0.24.1", + "path+file:///__w/cryptography/cryptography/tmpwheelhouse/.tmpXdQ78X/cryptography-48.0.0/src/rust/cryptography-x509#0.1.0" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#asn1@0.24.1", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#asn1_derive@0.24.1", + "registry+https://github.com/rust-lang/crates.io-index#itoa@1.0.18" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#asn1_derive@0.24.1", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106", + "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.45", + "registry+https://github.com/rust-lang/crates.io-index#syn@2.0.117" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#base64@0.22.1" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#bitflags@2.11.1" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#cc@1.2.61", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#find-msvc-tools@0.1.9", + "registry+https://github.com/rust-lang/crates.io-index#shlex@1.3.0" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#cfg-if@1.0.4" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#find-msvc-tools@0.1.9" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#foreign-types-shared@0.1.1" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#foreign-types@0.3.2", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#foreign-types-shared@0.1.1" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#heck@0.5.0" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#itoa@1.0.18" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#libc@0.2.186" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#once_cell@1.21.4" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#openssl-macros@0.1.1", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106", + "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.45", + "registry+https://github.com/rust-lang/crates.io-index#syn@2.0.117" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#openssl-sys@0.9.115", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#cc@1.2.61", + "registry+https://github.com/rust-lang/crates.io-index#libc@0.2.186", + "registry+https://github.com/rust-lang/crates.io-index#pkg-config@0.3.33", + "registry+https://github.com/rust-lang/crates.io-index#vcpkg@0.2.15" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#openssl@0.10.79", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#bitflags@2.11.1", + "registry+https://github.com/rust-lang/crates.io-index#cfg-if@1.0.4", + "registry+https://github.com/rust-lang/crates.io-index#foreign-types@0.3.2", + "registry+https://github.com/rust-lang/crates.io-index#libc@0.2.186", + "registry+https://github.com/rust-lang/crates.io-index#openssl-macros@0.1.1", + "registry+https://github.com/rust-lang/crates.io-index#openssl-sys@0.9.115" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#pem@3.0.6", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#base64@0.22.1" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#pkg-config@0.3.33" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#portable-atomic@1.13.1" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#unicode-ident@1.0.24" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-build-config@0.28.3", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#target-lexicon@0.13.5" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-ffi@0.28.3", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#libc@0.2.186", + "registry+https://github.com/rust-lang/crates.io-index#pyo3-build-config@0.28.3" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-macros-backend@0.28.3", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#heck@0.5.0", + "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106", + "registry+https://github.com/rust-lang/crates.io-index#pyo3-build-config@0.28.3", + "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.45", + "registry+https://github.com/rust-lang/crates.io-index#syn@2.0.117" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-macros@0.28.3", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106", + "registry+https://github.com/rust-lang/crates.io-index#pyo3-macros-backend@0.28.3", + "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.45", + "registry+https://github.com/rust-lang/crates.io-index#syn@2.0.117" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3@0.28.3", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#libc@0.2.186", + "registry+https://github.com/rust-lang/crates.io-index#once_cell@1.21.4", + "registry+https://github.com/rust-lang/crates.io-index#portable-atomic@1.13.1", + "registry+https://github.com/rust-lang/crates.io-index#pyo3-build-config@0.28.3", + "registry+https://github.com/rust-lang/crates.io-index#pyo3-ffi@0.28.3", + "registry+https://github.com/rust-lang/crates.io-index#pyo3-macros@0.28.3" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.45", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#self_cell@1.2.2" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#shlex@1.3.0" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#syn@2.0.117", + "dependsOn": [ + "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.106", + "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.45", + "registry+https://github.com/rust-lang/crates.io-index#unicode-ident@1.0.24" + ] + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#target-lexicon@0.13.5" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#unicode-ident@1.0.24" + }, + { + "ref": "registry+https://github.com/rust-lang/crates.io-index#vcpkg@0.2.15" + } + ] +} \ No newline at end of file diff --git a/intelliaide/vendor/cryptography-48.0.0.dist-info/sboms/sbom.json b/intelliaide/vendor/cryptography-48.0.0.dist-info/sboms/sbom.json new file mode 100644 index 0000000..f8e47c1 --- /dev/null +++ b/intelliaide/vendor/cryptography-48.0.0.dist-info/sboms/sbom.json @@ -0,0 +1,43 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.5", + "version": 1, + "serialNumber": "urn:uuid:7b8d231f-c05f-4fe0-9e12-5dba4b373c50", + "metadata": { + "timestamp": "2026-05-02T09:34:54Z" + }, + "components": [ + { + "type": "library", + "name": "openssl", + "version": "4.0.0", + "purl": "pkg:generic/openssl@4.0.0?download_url=https://github.com/openssl/openssl/releases/download/openssl-4.0.0/openssl-4.0.0.tar.gz", + "hashes": [ + { + "alg": "SHA-256", + "content": "c32cf49a959c4f345f9606982dd36e7d28f7c58b19c2e25d75624d2b3d2f79ac" + } + ], + "externalReferences": [ + { + "type": "distribution", + "url": "https://github.com/openssl/openssl/releases/download/openssl-4.0.0/openssl-4.0.0.tar.gz" + } + ], + "properties": [ + { + "name": "build:operating-system", + "value": "linux" + }, + { + "name": "build:architecture", + "value": "x86_64" + }, + { + "name": "build:flags", + "value": "no-zlib no-shared no-module no-comp no-apps no-docs no-sm2-precomp no-atexit enable-ec_nistp_64_gcc_128" + } + ] + } + ] +} diff --git a/intelliaide/vendor/cryptography/__about__.py b/intelliaide/vendor/cryptography/__about__.py new file mode 100644 index 0000000..c81901c --- /dev/null +++ b/intelliaide/vendor/cryptography/__about__.py @@ -0,0 +1,17 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +__all__ = [ + "__author__", + "__copyright__", + "__version__", +] + +__version__ = "48.0.0" + + +__author__ = "The Python Cryptographic Authority and individual contributors" +__copyright__ = f"Copyright 2013-2026 {__author__}" diff --git a/intelliaide/vendor/cryptography/__init__.py b/intelliaide/vendor/cryptography/__init__.py new file mode 100644 index 0000000..d374f75 --- /dev/null +++ b/intelliaide/vendor/cryptography/__init__.py @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.__about__ import __author__, __copyright__, __version__ + +__all__ = [ + "__author__", + "__copyright__", + "__version__", +] diff --git a/intelliaide/vendor/cryptography/exceptions.py b/intelliaide/vendor/cryptography/exceptions.py new file mode 100644 index 0000000..fe125ea --- /dev/null +++ b/intelliaide/vendor/cryptography/exceptions.py @@ -0,0 +1,52 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import typing + +from cryptography.hazmat.bindings._rust import exceptions as rust_exceptions + +if typing.TYPE_CHECKING: + from cryptography.hazmat.bindings._rust import openssl as rust_openssl + +_Reasons = rust_exceptions._Reasons + + +class UnsupportedAlgorithm(Exception): + def __init__(self, message: str, reason: _Reasons | None = None) -> None: + super().__init__(message) + self._reason = reason + + +class AlreadyFinalized(Exception): + pass + + +class AlreadyUpdated(Exception): + pass + + +class NotYetFinalized(Exception): + pass + + +class InvalidTag(Exception): + pass + + +class InvalidSignature(Exception): + pass + + +class InternalError(Exception): + def __init__( + self, msg: str, err_code: list[rust_openssl.OpenSSLError] + ) -> None: + super().__init__(msg) + self.err_code = err_code + + +class InvalidKey(Exception): + pass diff --git a/intelliaide/vendor/cryptography/fernet.py b/intelliaide/vendor/cryptography/fernet.py new file mode 100644 index 0000000..c6744ae --- /dev/null +++ b/intelliaide/vendor/cryptography/fernet.py @@ -0,0 +1,224 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import base64 +import binascii +import os +import time +import typing +from collections.abc import Iterable + +from cryptography import utils +from cryptography.exceptions import InvalidSignature +from cryptography.hazmat.primitives import hashes, padding +from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes +from cryptography.hazmat.primitives.hmac import HMAC + + +class InvalidToken(Exception): + pass + + +_MAX_CLOCK_SKEW = 60 + + +class Fernet: + def __init__( + self, + key: bytes | str, + backend: typing.Any = None, + ) -> None: + try: + key = base64.urlsafe_b64decode(key) + except binascii.Error as exc: + raise ValueError( + "Fernet key must be 32 url-safe base64-encoded bytes." + ) from exc + if len(key) != 32: + raise ValueError( + "Fernet key must be 32 url-safe base64-encoded bytes." + ) + + self._signing_key = key[:16] + self._encryption_key = key[16:] + + @classmethod + def generate_key(cls) -> bytes: + return base64.urlsafe_b64encode(os.urandom(32)) + + def encrypt(self, data: bytes) -> bytes: + return self.encrypt_at_time(data, int(time.time())) + + def encrypt_at_time(self, data: bytes, current_time: int) -> bytes: + iv = os.urandom(16) + return self._encrypt_from_parts(data, current_time, iv) + + def _encrypt_from_parts( + self, data: bytes, current_time: int, iv: bytes + ) -> bytes: + utils._check_bytes("data", data) + + padder = padding.PKCS7(algorithms.AES.block_size).padder() + padded_data = padder.update(data) + padder.finalize() + encryptor = Cipher( + algorithms.AES(self._encryption_key), + modes.CBC(iv), + ).encryptor() + ciphertext = encryptor.update(padded_data) + encryptor.finalize() + + basic_parts = ( + b"\x80" + + current_time.to_bytes(length=8, byteorder="big") + + iv + + ciphertext + ) + + h = HMAC(self._signing_key, hashes.SHA256()) + h.update(basic_parts) + hmac = h.finalize() + return base64.urlsafe_b64encode(basic_parts + hmac) + + def decrypt(self, token: bytes | str, ttl: int | None = None) -> bytes: + timestamp, data = Fernet._get_unverified_token_data(token) + if ttl is None: + time_info = None + else: + time_info = (ttl, int(time.time())) + return self._decrypt_data(data, timestamp, time_info) + + def decrypt_at_time( + self, token: bytes | str, ttl: int, current_time: int + ) -> bytes: + if ttl is None: + raise ValueError( + "decrypt_at_time() can only be used with a non-None ttl" + ) + timestamp, data = Fernet._get_unverified_token_data(token) + return self._decrypt_data(data, timestamp, (ttl, current_time)) + + def extract_timestamp(self, token: bytes | str) -> int: + timestamp, data = Fernet._get_unverified_token_data(token) + # Verify the token was not tampered with. + self._verify_signature(data) + return timestamp + + @staticmethod + def _get_unverified_token_data(token: bytes | str) -> tuple[int, bytes]: + if not isinstance(token, (str, bytes)): + raise TypeError("token must be bytes or str") + + try: + data = base64.urlsafe_b64decode(token) + except (TypeError, binascii.Error): + raise InvalidToken + + if not data or data[0] != 0x80: + raise InvalidToken + + if len(data) < 9: + raise InvalidToken + + timestamp = int.from_bytes(data[1:9], byteorder="big") + return timestamp, data + + def _verify_signature(self, data: bytes) -> None: + h = HMAC(self._signing_key, hashes.SHA256()) + h.update(data[:-32]) + try: + h.verify(data[-32:]) + except InvalidSignature: + raise InvalidToken + + def _decrypt_data( + self, + data: bytes, + timestamp: int, + time_info: tuple[int, int] | None, + ) -> bytes: + if time_info is not None: + ttl, current_time = time_info + if timestamp + ttl < current_time: + raise InvalidToken + + if current_time + _MAX_CLOCK_SKEW < timestamp: + raise InvalidToken + + self._verify_signature(data) + + iv = data[9:25] + ciphertext = data[25:-32] + decryptor = Cipher( + algorithms.AES(self._encryption_key), modes.CBC(iv) + ).decryptor() + plaintext_padded = decryptor.update(ciphertext) + try: + plaintext_padded += decryptor.finalize() + except ValueError: + raise InvalidToken + unpadder = padding.PKCS7(algorithms.AES.block_size).unpadder() + + unpadded = unpadder.update(plaintext_padded) + try: + unpadded += unpadder.finalize() + except ValueError: + raise InvalidToken + return unpadded + + +class MultiFernet: + def __init__(self, fernets: Iterable[Fernet]): + fernets = list(fernets) + if not fernets: + raise ValueError( + "MultiFernet requires at least one Fernet instance" + ) + self._fernets = fernets + + def encrypt(self, msg: bytes) -> bytes: + return self.encrypt_at_time(msg, int(time.time())) + + def encrypt_at_time(self, msg: bytes, current_time: int) -> bytes: + return self._fernets[0].encrypt_at_time(msg, current_time) + + def rotate(self, msg: bytes | str) -> bytes: + timestamp, data = Fernet._get_unverified_token_data(msg) + for f in self._fernets: + try: + p = f._decrypt_data(data, timestamp, None) + break + except InvalidToken: + pass + else: + raise InvalidToken + + iv = os.urandom(16) + return self._fernets[0]._encrypt_from_parts(p, timestamp, iv) + + def decrypt(self, msg: bytes | str, ttl: int | None = None) -> bytes: + for f in self._fernets: + try: + return f.decrypt(msg, ttl) + except InvalidToken: + pass + raise InvalidToken + + def decrypt_at_time( + self, msg: bytes | str, ttl: int, current_time: int + ) -> bytes: + for f in self._fernets: + try: + return f.decrypt_at_time(msg, ttl, current_time) + except InvalidToken: + pass + raise InvalidToken + + def extract_timestamp(self, msg: bytes | str) -> int: + for f in self._fernets: + try: + return f.extract_timestamp(msg) + except InvalidToken: + pass + raise InvalidToken diff --git a/intelliaide/vendor/cryptography/hazmat/__init__.py b/intelliaide/vendor/cryptography/hazmat/__init__.py new file mode 100644 index 0000000..b9f1187 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/__init__.py @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +""" +Hazardous Materials + +This is a "Hazardous Materials" module. You should ONLY use it if you're +100% absolutely sure that you know what you're doing because this module +is full of land mines, dragons, and dinosaurs with laser guns. +""" diff --git a/intelliaide/vendor/cryptography/hazmat/_oid.py b/intelliaide/vendor/cryptography/hazmat/_oid.py new file mode 100644 index 0000000..4bf138d --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/_oid.py @@ -0,0 +1,356 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import ( + ObjectIdentifier as ObjectIdentifier, +) +from cryptography.hazmat.primitives import hashes + + +class ExtensionOID: + SUBJECT_DIRECTORY_ATTRIBUTES = ObjectIdentifier("2.5.29.9") + SUBJECT_KEY_IDENTIFIER = ObjectIdentifier("2.5.29.14") + KEY_USAGE = ObjectIdentifier("2.5.29.15") + PRIVATE_KEY_USAGE_PERIOD = ObjectIdentifier("2.5.29.16") + SUBJECT_ALTERNATIVE_NAME = ObjectIdentifier("2.5.29.17") + ISSUER_ALTERNATIVE_NAME = ObjectIdentifier("2.5.29.18") + BASIC_CONSTRAINTS = ObjectIdentifier("2.5.29.19") + NAME_CONSTRAINTS = ObjectIdentifier("2.5.29.30") + CRL_DISTRIBUTION_POINTS = ObjectIdentifier("2.5.29.31") + CERTIFICATE_POLICIES = ObjectIdentifier("2.5.29.32") + POLICY_MAPPINGS = ObjectIdentifier("2.5.29.33") + AUTHORITY_KEY_IDENTIFIER = ObjectIdentifier("2.5.29.35") + POLICY_CONSTRAINTS = ObjectIdentifier("2.5.29.36") + EXTENDED_KEY_USAGE = ObjectIdentifier("2.5.29.37") + FRESHEST_CRL = ObjectIdentifier("2.5.29.46") + INHIBIT_ANY_POLICY = ObjectIdentifier("2.5.29.54") + ISSUING_DISTRIBUTION_POINT = ObjectIdentifier("2.5.29.28") + AUTHORITY_INFORMATION_ACCESS = ObjectIdentifier("1.3.6.1.5.5.7.1.1") + SUBJECT_INFORMATION_ACCESS = ObjectIdentifier("1.3.6.1.5.5.7.1.11") + OCSP_NO_CHECK = ObjectIdentifier("1.3.6.1.5.5.7.48.1.5") + TLS_FEATURE = ObjectIdentifier("1.3.6.1.5.5.7.1.24") + CRL_NUMBER = ObjectIdentifier("2.5.29.20") + DELTA_CRL_INDICATOR = ObjectIdentifier("2.5.29.27") + PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS = ObjectIdentifier( + "1.3.6.1.4.1.11129.2.4.2" + ) + PRECERT_POISON = ObjectIdentifier("1.3.6.1.4.1.11129.2.4.3") + SIGNED_CERTIFICATE_TIMESTAMPS = ObjectIdentifier("1.3.6.1.4.1.11129.2.4.5") + MS_CERTIFICATE_TEMPLATE = ObjectIdentifier("1.3.6.1.4.1.311.21.7") + ADMISSIONS = ObjectIdentifier("1.3.36.8.3.3") + + +class OCSPExtensionOID: + NONCE = ObjectIdentifier("1.3.6.1.5.5.7.48.1.2") + ACCEPTABLE_RESPONSES = ObjectIdentifier("1.3.6.1.5.5.7.48.1.4") + + +class CRLEntryExtensionOID: + CERTIFICATE_ISSUER = ObjectIdentifier("2.5.29.29") + CRL_REASON = ObjectIdentifier("2.5.29.21") + INVALIDITY_DATE = ObjectIdentifier("2.5.29.24") + + +class NameOID: + COMMON_NAME = ObjectIdentifier("2.5.4.3") + COUNTRY_NAME = ObjectIdentifier("2.5.4.6") + LOCALITY_NAME = ObjectIdentifier("2.5.4.7") + STATE_OR_PROVINCE_NAME = ObjectIdentifier("2.5.4.8") + STREET_ADDRESS = ObjectIdentifier("2.5.4.9") + ORGANIZATION_IDENTIFIER = ObjectIdentifier("2.5.4.97") + ORGANIZATION_NAME = ObjectIdentifier("2.5.4.10") + ORGANIZATIONAL_UNIT_NAME = ObjectIdentifier("2.5.4.11") + SERIAL_NUMBER = ObjectIdentifier("2.5.4.5") + SURNAME = ObjectIdentifier("2.5.4.4") + GIVEN_NAME = ObjectIdentifier("2.5.4.42") + TITLE = ObjectIdentifier("2.5.4.12") + INITIALS = ObjectIdentifier("2.5.4.43") + GENERATION_QUALIFIER = ObjectIdentifier("2.5.4.44") + X500_UNIQUE_IDENTIFIER = ObjectIdentifier("2.5.4.45") + DN_QUALIFIER = ObjectIdentifier("2.5.4.46") + PSEUDONYM = ObjectIdentifier("2.5.4.65") + USER_ID = ObjectIdentifier("0.9.2342.19200300.100.1.1") + DOMAIN_COMPONENT = ObjectIdentifier("0.9.2342.19200300.100.1.25") + EMAIL_ADDRESS = ObjectIdentifier("1.2.840.113549.1.9.1") + JURISDICTION_COUNTRY_NAME = ObjectIdentifier("1.3.6.1.4.1.311.60.2.1.3") + JURISDICTION_LOCALITY_NAME = ObjectIdentifier("1.3.6.1.4.1.311.60.2.1.1") + JURISDICTION_STATE_OR_PROVINCE_NAME = ObjectIdentifier( + "1.3.6.1.4.1.311.60.2.1.2" + ) + BUSINESS_CATEGORY = ObjectIdentifier("2.5.4.15") + POSTAL_ADDRESS = ObjectIdentifier("2.5.4.16") + POSTAL_CODE = ObjectIdentifier("2.5.4.17") + INN = ObjectIdentifier("1.2.643.3.131.1.1") + OGRN = ObjectIdentifier("1.2.643.100.1") + SNILS = ObjectIdentifier("1.2.643.100.3") + UNSTRUCTURED_NAME = ObjectIdentifier("1.2.840.113549.1.9.2") + + +class SignatureAlgorithmOID: + RSA_WITH_MD5 = ObjectIdentifier("1.2.840.113549.1.1.4") + RSA_WITH_SHA1 = ObjectIdentifier("1.2.840.113549.1.1.5") + # This is an alternate OID for RSA with SHA1 that is occasionally seen + _RSA_WITH_SHA1 = ObjectIdentifier("1.3.14.3.2.29") + RSA_WITH_SHA224 = ObjectIdentifier("1.2.840.113549.1.1.14") + RSA_WITH_SHA256 = ObjectIdentifier("1.2.840.113549.1.1.11") + RSA_WITH_SHA384 = ObjectIdentifier("1.2.840.113549.1.1.12") + RSA_WITH_SHA512 = ObjectIdentifier("1.2.840.113549.1.1.13") + RSA_WITH_SHA3_224 = ObjectIdentifier("2.16.840.1.101.3.4.3.13") + RSA_WITH_SHA3_256 = ObjectIdentifier("2.16.840.1.101.3.4.3.14") + RSA_WITH_SHA3_384 = ObjectIdentifier("2.16.840.1.101.3.4.3.15") + RSA_WITH_SHA3_512 = ObjectIdentifier("2.16.840.1.101.3.4.3.16") + RSASSA_PSS = ObjectIdentifier("1.2.840.113549.1.1.10") + ECDSA_WITH_SHA1 = ObjectIdentifier("1.2.840.10045.4.1") + ECDSA_WITH_SHA224 = ObjectIdentifier("1.2.840.10045.4.3.1") + ECDSA_WITH_SHA256 = ObjectIdentifier("1.2.840.10045.4.3.2") + ECDSA_WITH_SHA384 = ObjectIdentifier("1.2.840.10045.4.3.3") + ECDSA_WITH_SHA512 = ObjectIdentifier("1.2.840.10045.4.3.4") + ECDSA_WITH_SHA3_224 = ObjectIdentifier("2.16.840.1.101.3.4.3.9") + ECDSA_WITH_SHA3_256 = ObjectIdentifier("2.16.840.1.101.3.4.3.10") + ECDSA_WITH_SHA3_384 = ObjectIdentifier("2.16.840.1.101.3.4.3.11") + ECDSA_WITH_SHA3_512 = ObjectIdentifier("2.16.840.1.101.3.4.3.12") + DSA_WITH_SHA1 = ObjectIdentifier("1.2.840.10040.4.3") + DSA_WITH_SHA224 = ObjectIdentifier("2.16.840.1.101.3.4.3.1") + DSA_WITH_SHA256 = ObjectIdentifier("2.16.840.1.101.3.4.3.2") + DSA_WITH_SHA384 = ObjectIdentifier("2.16.840.1.101.3.4.3.3") + DSA_WITH_SHA512 = ObjectIdentifier("2.16.840.1.101.3.4.3.4") + ED25519 = ObjectIdentifier("1.3.101.112") + ED448 = ObjectIdentifier("1.3.101.113") + GOSTR3411_94_WITH_3410_2001 = ObjectIdentifier("1.2.643.2.2.3") + GOSTR3410_2012_WITH_3411_2012_256 = ObjectIdentifier("1.2.643.7.1.1.3.2") + GOSTR3410_2012_WITH_3411_2012_512 = ObjectIdentifier("1.2.643.7.1.1.3.3") + + +_SIG_OIDS_TO_HASH: dict[ObjectIdentifier, hashes.HashAlgorithm | None] = { + SignatureAlgorithmOID.RSA_WITH_MD5: hashes.MD5(), + SignatureAlgorithmOID.RSA_WITH_SHA1: hashes.SHA1(), + SignatureAlgorithmOID._RSA_WITH_SHA1: hashes.SHA1(), + SignatureAlgorithmOID.RSA_WITH_SHA224: hashes.SHA224(), + SignatureAlgorithmOID.RSA_WITH_SHA256: hashes.SHA256(), + SignatureAlgorithmOID.RSA_WITH_SHA384: hashes.SHA384(), + SignatureAlgorithmOID.RSA_WITH_SHA512: hashes.SHA512(), + SignatureAlgorithmOID.RSA_WITH_SHA3_224: hashes.SHA3_224(), + SignatureAlgorithmOID.RSA_WITH_SHA3_256: hashes.SHA3_256(), + SignatureAlgorithmOID.RSA_WITH_SHA3_384: hashes.SHA3_384(), + SignatureAlgorithmOID.RSA_WITH_SHA3_512: hashes.SHA3_512(), + SignatureAlgorithmOID.ECDSA_WITH_SHA1: hashes.SHA1(), + SignatureAlgorithmOID.ECDSA_WITH_SHA224: hashes.SHA224(), + SignatureAlgorithmOID.ECDSA_WITH_SHA256: hashes.SHA256(), + SignatureAlgorithmOID.ECDSA_WITH_SHA384: hashes.SHA384(), + SignatureAlgorithmOID.ECDSA_WITH_SHA512: hashes.SHA512(), + SignatureAlgorithmOID.ECDSA_WITH_SHA3_224: hashes.SHA3_224(), + SignatureAlgorithmOID.ECDSA_WITH_SHA3_256: hashes.SHA3_256(), + SignatureAlgorithmOID.ECDSA_WITH_SHA3_384: hashes.SHA3_384(), + SignatureAlgorithmOID.ECDSA_WITH_SHA3_512: hashes.SHA3_512(), + SignatureAlgorithmOID.DSA_WITH_SHA1: hashes.SHA1(), + SignatureAlgorithmOID.DSA_WITH_SHA224: hashes.SHA224(), + SignatureAlgorithmOID.DSA_WITH_SHA256: hashes.SHA256(), + SignatureAlgorithmOID.ED25519: None, + SignatureAlgorithmOID.ED448: None, + SignatureAlgorithmOID.GOSTR3411_94_WITH_3410_2001: None, + SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_256: None, + SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_512: None, +} + + +class HashAlgorithmOID: + SHA1 = ObjectIdentifier("1.3.14.3.2.26") + SHA224 = ObjectIdentifier("2.16.840.1.101.3.4.2.4") + SHA256 = ObjectIdentifier("2.16.840.1.101.3.4.2.1") + SHA384 = ObjectIdentifier("2.16.840.1.101.3.4.2.2") + SHA512 = ObjectIdentifier("2.16.840.1.101.3.4.2.3") + SHA3_224 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.224") + SHA3_256 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.256") + SHA3_384 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.384") + SHA3_512 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.512") + SHA3_224_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.7") + SHA3_256_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.8") + SHA3_384_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.9") + SHA3_512_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.10") + + +class PublicKeyAlgorithmOID: + DSA = ObjectIdentifier("1.2.840.10040.4.1") + EC_PUBLIC_KEY = ObjectIdentifier("1.2.840.10045.2.1") + RSAES_PKCS1_v1_5 = ObjectIdentifier("1.2.840.113549.1.1.1") + RSASSA_PSS = ObjectIdentifier("1.2.840.113549.1.1.10") + X25519 = ObjectIdentifier("1.3.101.110") + X448 = ObjectIdentifier("1.3.101.111") + ED25519 = ObjectIdentifier("1.3.101.112") + ED448 = ObjectIdentifier("1.3.101.113") + + +class ExtendedKeyUsageOID: + SERVER_AUTH = ObjectIdentifier("1.3.6.1.5.5.7.3.1") + CLIENT_AUTH = ObjectIdentifier("1.3.6.1.5.5.7.3.2") + CODE_SIGNING = ObjectIdentifier("1.3.6.1.5.5.7.3.3") + EMAIL_PROTECTION = ObjectIdentifier("1.3.6.1.5.5.7.3.4") + TIME_STAMPING = ObjectIdentifier("1.3.6.1.5.5.7.3.8") + OCSP_SIGNING = ObjectIdentifier("1.3.6.1.5.5.7.3.9") + ANY_EXTENDED_KEY_USAGE = ObjectIdentifier("2.5.29.37.0") + SMARTCARD_LOGON = ObjectIdentifier("1.3.6.1.4.1.311.20.2.2") + KERBEROS_PKINIT_KDC = ObjectIdentifier("1.3.6.1.5.2.3.5") + IPSEC_IKE = ObjectIdentifier("1.3.6.1.5.5.7.3.17") + BUNDLE_SECURITY = ObjectIdentifier("1.3.6.1.5.5.7.3.35") + CERTIFICATE_TRANSPARENCY = ObjectIdentifier("1.3.6.1.4.1.11129.2.4.4") + + +class OtherNameFormOID: + PERMANENT_IDENTIFIER = ObjectIdentifier("1.3.6.1.5.5.7.8.3") + HW_MODULE_NAME = ObjectIdentifier("1.3.6.1.5.5.7.8.4") + DNS_SRV = ObjectIdentifier("1.3.6.1.5.5.7.8.7") + NAI_REALM = ObjectIdentifier("1.3.6.1.5.5.7.8.8") + SMTP_UTF8_MAILBOX = ObjectIdentifier("1.3.6.1.5.5.7.8.9") + ACP_NODE_NAME = ObjectIdentifier("1.3.6.1.5.5.7.8.10") + BUNDLE_EID = ObjectIdentifier("1.3.6.1.5.5.7.8.11") + + +class AuthorityInformationAccessOID: + CA_ISSUERS = ObjectIdentifier("1.3.6.1.5.5.7.48.2") + OCSP = ObjectIdentifier("1.3.6.1.5.5.7.48.1") + + +class SubjectInformationAccessOID: + CA_REPOSITORY = ObjectIdentifier("1.3.6.1.5.5.7.48.5") + + +class CertificatePoliciesOID: + CPS_QUALIFIER = ObjectIdentifier("1.3.6.1.5.5.7.2.1") + CPS_USER_NOTICE = ObjectIdentifier("1.3.6.1.5.5.7.2.2") + ANY_POLICY = ObjectIdentifier("2.5.29.32.0") + + +class AttributeOID: + CHALLENGE_PASSWORD = ObjectIdentifier("1.2.840.113549.1.9.7") + UNSTRUCTURED_NAME = ObjectIdentifier("1.2.840.113549.1.9.2") + + +_OID_NAMES = { + NameOID.COMMON_NAME: "commonName", + NameOID.COUNTRY_NAME: "countryName", + NameOID.LOCALITY_NAME: "localityName", + NameOID.STATE_OR_PROVINCE_NAME: "stateOrProvinceName", + NameOID.STREET_ADDRESS: "streetAddress", + NameOID.ORGANIZATION_NAME: "organizationName", + NameOID.ORGANIZATIONAL_UNIT_NAME: "organizationalUnitName", + NameOID.SERIAL_NUMBER: "serialNumber", + NameOID.SURNAME: "surname", + NameOID.GIVEN_NAME: "givenName", + NameOID.TITLE: "title", + NameOID.GENERATION_QUALIFIER: "generationQualifier", + NameOID.X500_UNIQUE_IDENTIFIER: "x500UniqueIdentifier", + NameOID.DN_QUALIFIER: "dnQualifier", + NameOID.PSEUDONYM: "pseudonym", + NameOID.USER_ID: "userID", + NameOID.DOMAIN_COMPONENT: "domainComponent", + NameOID.EMAIL_ADDRESS: "emailAddress", + NameOID.JURISDICTION_COUNTRY_NAME: "jurisdictionCountryName", + NameOID.JURISDICTION_LOCALITY_NAME: "jurisdictionLocalityName", + NameOID.JURISDICTION_STATE_OR_PROVINCE_NAME: ( + "jurisdictionStateOrProvinceName" + ), + NameOID.BUSINESS_CATEGORY: "businessCategory", + NameOID.POSTAL_ADDRESS: "postalAddress", + NameOID.POSTAL_CODE: "postalCode", + NameOID.INN: "INN", + NameOID.OGRN: "OGRN", + NameOID.SNILS: "SNILS", + NameOID.UNSTRUCTURED_NAME: "unstructuredName", + SignatureAlgorithmOID.RSA_WITH_MD5: "md5WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA1: "sha1WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA224: "sha224WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA256: "sha256WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA384: "sha384WithRSAEncryption", + SignatureAlgorithmOID.RSA_WITH_SHA512: "sha512WithRSAEncryption", + SignatureAlgorithmOID.RSASSA_PSS: "rsassaPss", + SignatureAlgorithmOID.ECDSA_WITH_SHA1: "ecdsa-with-SHA1", + SignatureAlgorithmOID.ECDSA_WITH_SHA224: "ecdsa-with-SHA224", + SignatureAlgorithmOID.ECDSA_WITH_SHA256: "ecdsa-with-SHA256", + SignatureAlgorithmOID.ECDSA_WITH_SHA384: "ecdsa-with-SHA384", + SignatureAlgorithmOID.ECDSA_WITH_SHA512: "ecdsa-with-SHA512", + SignatureAlgorithmOID.DSA_WITH_SHA1: "dsa-with-sha1", + SignatureAlgorithmOID.DSA_WITH_SHA224: "dsa-with-sha224", + SignatureAlgorithmOID.DSA_WITH_SHA256: "dsa-with-sha256", + SignatureAlgorithmOID.ED25519: "ed25519", + SignatureAlgorithmOID.ED448: "ed448", + SignatureAlgorithmOID.GOSTR3411_94_WITH_3410_2001: ( + "GOST R 34.11-94 with GOST R 34.10-2001" + ), + SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_256: ( + "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" + ), + SignatureAlgorithmOID.GOSTR3410_2012_WITH_3411_2012_512: ( + "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" + ), + HashAlgorithmOID.SHA1: "sha1", + HashAlgorithmOID.SHA224: "sha224", + HashAlgorithmOID.SHA256: "sha256", + HashAlgorithmOID.SHA384: "sha384", + HashAlgorithmOID.SHA512: "sha512", + HashAlgorithmOID.SHA3_224: "sha3_224", + HashAlgorithmOID.SHA3_256: "sha3_256", + HashAlgorithmOID.SHA3_384: "sha3_384", + HashAlgorithmOID.SHA3_512: "sha3_512", + HashAlgorithmOID.SHA3_224_NIST: "sha3_224", + HashAlgorithmOID.SHA3_256_NIST: "sha3_256", + HashAlgorithmOID.SHA3_384_NIST: "sha3_384", + HashAlgorithmOID.SHA3_512_NIST: "sha3_512", + PublicKeyAlgorithmOID.DSA: "dsaEncryption", + PublicKeyAlgorithmOID.EC_PUBLIC_KEY: "id-ecPublicKey", + PublicKeyAlgorithmOID.RSAES_PKCS1_v1_5: "rsaEncryption", + PublicKeyAlgorithmOID.X25519: "X25519", + PublicKeyAlgorithmOID.X448: "X448", + ExtendedKeyUsageOID.SERVER_AUTH: "serverAuth", + ExtendedKeyUsageOID.CLIENT_AUTH: "clientAuth", + ExtendedKeyUsageOID.CODE_SIGNING: "codeSigning", + ExtendedKeyUsageOID.EMAIL_PROTECTION: "emailProtection", + ExtendedKeyUsageOID.TIME_STAMPING: "timeStamping", + ExtendedKeyUsageOID.OCSP_SIGNING: "OCSPSigning", + ExtendedKeyUsageOID.SMARTCARD_LOGON: "msSmartcardLogin", + ExtendedKeyUsageOID.KERBEROS_PKINIT_KDC: "pkInitKDC", + ExtensionOID.SUBJECT_DIRECTORY_ATTRIBUTES: "subjectDirectoryAttributes", + ExtensionOID.SUBJECT_KEY_IDENTIFIER: "subjectKeyIdentifier", + ExtensionOID.KEY_USAGE: "keyUsage", + ExtensionOID.PRIVATE_KEY_USAGE_PERIOD: "privateKeyUsagePeriod", + ExtensionOID.SUBJECT_ALTERNATIVE_NAME: "subjectAltName", + ExtensionOID.ISSUER_ALTERNATIVE_NAME: "issuerAltName", + ExtensionOID.BASIC_CONSTRAINTS: "basicConstraints", + ExtensionOID.PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS: ( + "signedCertificateTimestampList" + ), + ExtensionOID.SIGNED_CERTIFICATE_TIMESTAMPS: ( + "signedCertificateTimestampList" + ), + ExtensionOID.PRECERT_POISON: "ctPoison", + ExtensionOID.MS_CERTIFICATE_TEMPLATE: "msCertificateTemplate", + ExtensionOID.ADMISSIONS: "Admissions", + CRLEntryExtensionOID.CRL_REASON: "cRLReason", + CRLEntryExtensionOID.INVALIDITY_DATE: "invalidityDate", + CRLEntryExtensionOID.CERTIFICATE_ISSUER: "certificateIssuer", + ExtensionOID.NAME_CONSTRAINTS: "nameConstraints", + ExtensionOID.CRL_DISTRIBUTION_POINTS: "cRLDistributionPoints", + ExtensionOID.CERTIFICATE_POLICIES: "certificatePolicies", + ExtensionOID.POLICY_MAPPINGS: "policyMappings", + ExtensionOID.AUTHORITY_KEY_IDENTIFIER: "authorityKeyIdentifier", + ExtensionOID.POLICY_CONSTRAINTS: "policyConstraints", + ExtensionOID.EXTENDED_KEY_USAGE: "extendedKeyUsage", + ExtensionOID.FRESHEST_CRL: "freshestCRL", + ExtensionOID.INHIBIT_ANY_POLICY: "inhibitAnyPolicy", + ExtensionOID.ISSUING_DISTRIBUTION_POINT: "issuingDistributionPoint", + ExtensionOID.AUTHORITY_INFORMATION_ACCESS: "authorityInfoAccess", + ExtensionOID.SUBJECT_INFORMATION_ACCESS: "subjectInfoAccess", + ExtensionOID.OCSP_NO_CHECK: "OCSPNoCheck", + ExtensionOID.CRL_NUMBER: "cRLNumber", + ExtensionOID.DELTA_CRL_INDICATOR: "deltaCRLIndicator", + ExtensionOID.TLS_FEATURE: "TLSFeature", + AuthorityInformationAccessOID.OCSP: "OCSP", + AuthorityInformationAccessOID.CA_ISSUERS: "caIssuers", + SubjectInformationAccessOID.CA_REPOSITORY: "caRepository", + CertificatePoliciesOID.CPS_QUALIFIER: "id-qt-cps", + CertificatePoliciesOID.CPS_USER_NOTICE: "id-qt-unotice", + OCSPExtensionOID.NONCE: "OCSPNonce", + AttributeOID.CHALLENGE_PASSWORD: "challengePassword", +} diff --git a/intelliaide/vendor/cryptography/hazmat/asn1/__init__.py b/intelliaide/vendor/cryptography/hazmat/asn1/__init__.py new file mode 100644 index 0000000..ac3d4bd --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/asn1/__init__.py @@ -0,0 +1,43 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.asn1.asn1 import ( + TLV, + BitString, + Default, + Explicit, + GeneralizedTime, + IA5String, + Implicit, + Null, + PrintableString, + SetOf, + Size, + UTCTime, + Variant, + decode_der, + encode_der, + sequence, + set, +) + +__all__ = [ + "TLV", + "BitString", + "Default", + "Explicit", + "GeneralizedTime", + "IA5String", + "Implicit", + "Null", + "PrintableString", + "SetOf", + "Size", + "UTCTime", + "Variant", + "decode_der", + "encode_der", + "sequence", + "set", +] diff --git a/intelliaide/vendor/cryptography/hazmat/asn1/asn1.py b/intelliaide/vendor/cryptography/hazmat/asn1/asn1.py new file mode 100644 index 0000000..aa18d7e --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/asn1/asn1.py @@ -0,0 +1,419 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import builtins +import dataclasses +import sys +import types +import typing + +if sys.version_info < (3, 11): + import typing_extensions + + LiteralString = typing_extensions.LiteralString +else: + LiteralString = typing.LiteralString + +from cryptography.hazmat.bindings._rust import declarative_asn1 + +if sys.version_info < (3, 10): + NoneType = type(None) +else: + NoneType = types.NoneType # type: ignore[nonetype-type] + +T = typing.TypeVar("T", covariant=True) +U = typing.TypeVar("U") +Tag = typing.TypeVar("Tag", bound=LiteralString) + + +@dataclasses.dataclass(frozen=True) +class Variant(typing.Generic[U, Tag]): + """ + A tagged variant for CHOICE fields with the same underlying type. + + Use this when you have multiple CHOICE alternatives with the same type + and need to distinguish between them: + + foo: ( + Annotated[Variant[int, typing.Literal["IntA"]], Implicit(0)] + | Annotated[Variant[int, typing.Literal["IntB"]], Implicit(1)] + ) + + Usage: + example = Example(foo=Variant(5, "IntA")) + decoded.foo.value # The int value + decoded.foo.tag # "IntA" or "IntB" + """ + + value: U + tag: str + + +decode_der = declarative_asn1.decode_der +encode_der = declarative_asn1.encode_der + + +def _is_union(field_type: type) -> bool: + # NOTE: types.UnionType for `T | U`, typing.Union for `Union[T, U]`. + # TODO: Drop the `hasattr()` once the minimum supported Python version + # is >= 3.10. + union_types = ( + (types.UnionType, typing.Union) + if hasattr(types, "UnionType") + else (typing.Union,) + ) + return typing.get_origin(field_type) in union_types + + +def _extract_annotation( + metadata: tuple, field_name: str +) -> declarative_asn1.Annotation: + default = None + encoding = None + size = None + for raw_annotation in metadata: + if isinstance(raw_annotation, Default): + if default is not None: + raise TypeError( + f"multiple DEFAULT annotations found in field " + f"'{field_name}'" + ) + default = raw_annotation.value + elif isinstance(raw_annotation, declarative_asn1.Encoding): + if encoding is not None: + raise TypeError( + f"multiple IMPLICIT/EXPLICIT annotations found in field " + f"'{field_name}'" + ) + encoding = raw_annotation + elif isinstance(raw_annotation, declarative_asn1.Size): + if size is not None: + raise TypeError( + f"multiple SIZE annotations found in field '{field_name}'" + ) + size = raw_annotation + else: + raise TypeError(f"unsupported annotation: {raw_annotation}") + + return declarative_asn1.Annotation( + default=default, encoding=encoding, size=size + ) + + +def _normalize_field_type( + field_type: typing.Any, field_name: str +) -> declarative_asn1.AnnotatedType: + # Strip the `Annotated[...]` off, and populate the annotation + # from it if it exists. + if typing.get_origin(field_type) is typing.Annotated: + annotation = _extract_annotation(field_type.__metadata__, field_name) + field_type, *_ = typing.get_args(field_type) + else: + annotation = declarative_asn1.Annotation() + + if annotation.size is not None and ( + typing.get_origin(field_type) not in (builtins.list, SetOf) + and field_type + not in ( + builtins.bytes, + builtins.str, + BitString, + IA5String, + PrintableString, + ) + ): + raise TypeError( + f"field '{field_name}' has a SIZE annotation, but SIZE " + "annotations are only supported for fields of types: " + "[SEQUENCE OF, SET OF, BIT STRING, OCTET STRING, UTF8String, " + "PrintableString, IA5String]" + ) + + if field_type is TLV: + if isinstance(annotation.encoding, Implicit): + raise TypeError( + f"field '{field_name}' has an IMPLICIT annotation, but " + "IMPLICIT annotations are not supported for TLV types." + ) + elif annotation.default is not None: + raise TypeError( + f"field '{field_name}' has a DEFAULT annotation, but " + "DEFAULT annotations are not supported for TLV types." + ) + + if hasattr(field_type, "__asn1_root__"): + root_type = field_type.__asn1_root__ + if not isinstance( + root_type, + (declarative_asn1.Type.Sequence, declarative_asn1.Type.Set), + ): + raise TypeError(f"unsupported root type: {root_type}") + return declarative_asn1.AnnotatedType( + typing.cast(declarative_asn1.Type, root_type), annotation + ) + elif _is_union(field_type): + union_args = typing.get_args(field_type) + if len(union_args) == 2 and NoneType in union_args: + # A Union between a type and None is an OPTIONAL + optional_type = ( + union_args[0] if union_args[1] is type(None) else union_args[1] + ) + if optional_type is TLV: + raise TypeError( + "optional TLV types (`TLV | None`) are not " + "currently supported" + ) + annotated_type = _normalize_field_type(optional_type, field_name) + + if not annotated_type.annotation.is_empty(): + raise TypeError( + "optional (`X | None`) types cannot have `X` " + "annotated: annotations must apply to the union " + "(i.e: `Annotated[X | None, annotation]`)" + ) + + if annotation.default is not None: + raise TypeError( + "optional (`X | None`) types should not have a DEFAULT " + "annotation" + ) + + rust_field_type = declarative_asn1.Type.Option(annotated_type) + + else: + # Otherwise, the Union is a CHOICE + if isinstance(annotation.encoding, Implicit): + # CHOICEs cannot be IMPLICIT. See X.680 section 31.2.9. + raise TypeError( + "CHOICE (`X | Y | ...`) types should not have an IMPLICIT " + "annotation" + ) + variants = [ + _type_to_variant(arg, field_name) + for arg in union_args + if arg is not type(None) + ] + + # Union types should either be all Variants + # (`Variant[..] | Variant[..] | etc`) or all non Variants + are_union_types_tagged = variants[0].tag_name is not None + if any( + (v.tag_name is not None) != are_union_types_tagged + for v in variants + ): + raise TypeError( + "When using `asn1.Variant` in a union, all the other " + "types in the union must also be `asn1.Variant`" + ) + + if are_union_types_tagged: + tags = {v.tag_name for v in variants} + if len(variants) != len(tags): + raise TypeError( + "When using `asn1.Variant` in a union, the tags used " + "must be unique" + ) + + rust_choice_type = declarative_asn1.Type.Choice(variants) + # If None is part of the union types, this is an OPTIONAL CHOICE + rust_field_type = ( + declarative_asn1.Type.Option( + declarative_asn1.AnnotatedType( + rust_choice_type, declarative_asn1.Annotation() + ) + ) + if NoneType in union_args + else rust_choice_type + ) + + elif typing.get_origin(field_type) is builtins.list: + inner_type = _normalize_field_type( + typing.get_args(field_type)[0], field_name + ) + rust_field_type = declarative_asn1.Type.SequenceOf(inner_type) + elif typing.get_origin(field_type) is SetOf: + inner_type = _normalize_field_type( + typing.get_args(field_type)[0], field_name + ) + rust_field_type = declarative_asn1.Type.SetOf(inner_type) + else: + rust_field_type = declarative_asn1.non_root_python_to_rust(field_type) + + return declarative_asn1.AnnotatedType(rust_field_type, annotation) + + +# Convert a type to a Variant. Used with types inside Union +# annotations (T1, T2, etc in `Union[T1, T2, ...]`). +def _type_to_variant( + t: typing.Any, field_name: str +) -> declarative_asn1.Variant: + is_annotated = typing.get_origin(t) is typing.Annotated + inner_type = typing.get_args(t)[0] if is_annotated else t + + # Check if this is a Variant[T, Tag] type + if typing.get_origin(inner_type) is Variant: + value_type, tag_literal = typing.get_args(inner_type) + if typing.get_origin(tag_literal) is not typing.Literal: + raise TypeError( + "When using `asn1.Variant` in a type annotation, the second " + "type parameter must be a `typing.Literal` type. E.g: " + '`Variant[int, typing.Literal["MyInt"]]`.' + ) + tag_name = typing.get_args(tag_literal)[0] + + if hasattr(value_type, "__asn1_root__"): + rust_type = value_type.__asn1_root__ + else: + rust_type = declarative_asn1.non_root_python_to_rust(value_type) + + if is_annotated: + ann_type = declarative_asn1.AnnotatedType( + rust_type, + _extract_annotation(t.__metadata__, field_name), + ) + else: + ann_type = declarative_asn1.AnnotatedType( + rust_type, + declarative_asn1.Annotation(), + ) + + return declarative_asn1.Variant(Variant, ann_type, tag_name) + else: + # Plain type (not a tagged Variant) + return declarative_asn1.Variant( + inner_type, + _normalize_field_type(t, field_name), + None, + ) + + +def _annotate_fields( + raw_fields: dict[str, type], +) -> dict[str, declarative_asn1.AnnotatedType]: + fields = {} + for field_name, field_type in raw_fields.items(): + # Recursively normalize the field type into something that the + # Rust code can understand. + annotated_field_type = _normalize_field_type(field_type, field_name) + fields[field_name] = annotated_field_type + + return fields + + +def _register_asn1_sequence(cls: type[U]) -> None: + raw_fields = typing.get_type_hints(cls, include_extras=True) + root = declarative_asn1.Type.Sequence(cls, _annotate_fields(raw_fields)) + + setattr(cls, "__asn1_root__", root) + + +def _register_asn1_set(cls: type[U]) -> None: + raw_fields = typing.get_type_hints(cls, include_extras=True) + root = declarative_asn1.Type.Set(cls, _annotate_fields(raw_fields)) + + setattr(cls, "__asn1_root__", root) + + +# Due to https://github.com/python/mypy/issues/19731, we can't define an alias +# for `dataclass_transform` that conditionally points to `typing` or +# `typing_extensions` depending on the Python version. We work around it by +# making the whole decorated class conditional on the Python version. +if sys.version_info < (3, 11): + + @typing_extensions.dataclass_transform(kw_only_default=True) + def sequence(cls: type[U]) -> type[U]: + # We use `dataclasses.dataclass` to add an __init__ method + # to the class with keyword-only parameters. + if sys.version_info >= (3, 10): + dataclass_cls = dataclasses.dataclass( + repr=False, + eq=False, + # `match_args` was added in Python 3.10 and defaults + # to True + match_args=False, + # `kw_only` was added in Python 3.10 and defaults to + # False + kw_only=True, + )(cls) + else: + dataclass_cls = dataclasses.dataclass( + repr=False, + eq=False, + )(cls) + _register_asn1_sequence(dataclass_cls) + return dataclass_cls + + @typing_extensions.dataclass_transform(kw_only_default=True) + def set(cls: type[U]) -> type[U]: + # We use `dataclasses.dataclass` to add an __init__ method + # to the class with keyword-only parameters. + if sys.version_info >= (3, 10): + dataclass_cls = dataclasses.dataclass( + repr=False, + eq=False, + # `match_args` was added in Python 3.10 and defaults + # to True + match_args=False, + # `kw_only` was added in Python 3.10 and defaults to + # False + kw_only=True, + )(cls) + else: + dataclass_cls = dataclasses.dataclass( + repr=False, + eq=False, + )(cls) + _register_asn1_set(dataclass_cls) + return dataclass_cls + +else: + + @typing.dataclass_transform(kw_only_default=True) + def sequence(cls: type[U]) -> type[U]: + # Only add an __init__ method, with keyword-only + # parameters. + dataclass_cls = dataclasses.dataclass( + repr=False, + eq=False, + match_args=False, + kw_only=True, + )(cls) + _register_asn1_sequence(dataclass_cls) + return dataclass_cls + + @typing.dataclass_transform(kw_only_default=True) + def set(cls: type[U]) -> type[U]: + # Only add an __init__ method, with keyword-only + # parameters. + dataclass_cls = dataclasses.dataclass( + repr=False, + eq=False, + match_args=False, + kw_only=True, + )(cls) + _register_asn1_set(dataclass_cls) + return dataclass_cls + + +# TODO: replace with `Default[U]` once the min Python version is >= 3.12 +@dataclasses.dataclass(frozen=True) +class Default(typing.Generic[U]): + value: U + + +SetOf = declarative_asn1.SetOf + +Explicit = declarative_asn1.Encoding.Explicit +Implicit = declarative_asn1.Encoding.Implicit +Size = declarative_asn1.Size + +PrintableString = declarative_asn1.PrintableString +IA5String = declarative_asn1.IA5String +UTCTime = declarative_asn1.UTCTime +GeneralizedTime = declarative_asn1.GeneralizedTime +BitString = declarative_asn1.BitString +TLV = declarative_asn1.Tlv +Null = declarative_asn1.Null diff --git a/intelliaide/vendor/cryptography/hazmat/backends/__init__.py b/intelliaide/vendor/cryptography/hazmat/backends/__init__.py new file mode 100644 index 0000000..b4400aa --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/backends/__init__.py @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from typing import Any + + +def default_backend() -> Any: + from cryptography.hazmat.backends.openssl.backend import backend + + return backend diff --git a/intelliaide/vendor/cryptography/hazmat/backends/openssl/__init__.py b/intelliaide/vendor/cryptography/hazmat/backends/openssl/__init__.py new file mode 100644 index 0000000..51b0447 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/backends/openssl/__init__.py @@ -0,0 +1,9 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.backends.openssl.backend import backend + +__all__ = ["backend"] diff --git a/intelliaide/vendor/cryptography/hazmat/backends/openssl/backend.py b/intelliaide/vendor/cryptography/hazmat/backends/openssl/backend.py new file mode 100644 index 0000000..ad64a2a --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/backends/openssl/backend.py @@ -0,0 +1,312 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.bindings.openssl import binding +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives._asymmetric import AsymmetricPadding +from cryptography.hazmat.primitives.asymmetric import ec +from cryptography.hazmat.primitives.asymmetric import utils as asym_utils +from cryptography.hazmat.primitives.asymmetric.padding import ( + MGF1, + OAEP, + PSS, + PKCS1v15, +) +from cryptography.hazmat.primitives.ciphers import ( + CipherAlgorithm, +) +from cryptography.hazmat.primitives.ciphers.algorithms import ( + AES, +) +from cryptography.hazmat.primitives.ciphers.modes import ( + CBC, + Mode, +) + + +class Backend: + """ + OpenSSL API binding interfaces. + """ + + name = "openssl" + + # TripleDES encryption is disallowed/deprecated throughout 2023 in + # FIPS 140-3. To keep it simple we denylist any use of TripleDES (TDEA). + _fips_ciphers = (AES,) + # Sometimes SHA1 is still permissible. That logic is contained + # within the various *_supported methods. + _fips_hashes = ( + hashes.SHA224, + hashes.SHA256, + hashes.SHA384, + hashes.SHA512, + hashes.SHA512_224, + hashes.SHA512_256, + hashes.SHA3_224, + hashes.SHA3_256, + hashes.SHA3_384, + hashes.SHA3_512, + hashes.SHAKE128, + hashes.SHAKE256, + ) + _fips_ecdh_curves = ( + ec.SECP224R1, + ec.SECP256R1, + ec.SECP384R1, + ec.SECP521R1, + ) + _fips_rsa_min_key_size = 2048 + _fips_rsa_min_public_exponent = 65537 + _fips_dsa_min_modulus = 1 << 2048 + _fips_dh_min_key_size = 2048 + _fips_dh_min_modulus = 1 << _fips_dh_min_key_size + + def __init__(self) -> None: + self._binding = binding.Binding() + self._ffi = self._binding.ffi + self._lib = self._binding.lib + self._fips_enabled = rust_openssl.is_fips_enabled() + + def __repr__(self) -> str: + return ( + f"" + ) + + def openssl_assert(self, ok: bool) -> None: + return binding._openssl_assert(ok) + + def _enable_fips(self) -> None: + # This function enables FIPS mode for OpenSSL 3.0.0 on installs that + # have the FIPS provider installed properly. + rust_openssl.enable_fips(rust_openssl._providers) + assert rust_openssl.is_fips_enabled() + self._fips_enabled = rust_openssl.is_fips_enabled() + + def openssl_version_text(self) -> str: + """ + Friendly string name of the loaded OpenSSL library. This is not + necessarily the same version as it was compiled against. + + Example: OpenSSL 3.2.1 30 Jan 2024 + """ + return rust_openssl.openssl_version_text() + + def openssl_version_number(self) -> int: + return rust_openssl.openssl_version() + + def hash_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + if self._fips_enabled and not isinstance(algorithm, self._fips_hashes): + return False + + return rust_openssl.hashes.hash_supported(algorithm) + + def signature_hash_supported( + self, algorithm: hashes.HashAlgorithm + ) -> bool: + # Dedicated check for hashing algorithm use in message digest for + # signatures, e.g. RSA PKCS#1 v1.5 SHA1 (sha1WithRSAEncryption). + if self._fips_enabled and isinstance(algorithm, hashes.SHA1): + return False + return self.hash_supported(algorithm) + + def scrypt_supported(self) -> bool: + if self._fips_enabled: + return False + else: + return hasattr(rust_openssl.kdf.Scrypt, "derive") + + def argon2_supported(self) -> bool: + if self._fips_enabled: + return False + else: + return hasattr(rust_openssl.kdf.Argon2id, "derive") + + def hmac_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + # FIPS mode still allows SHA1 for HMAC + if self._fips_enabled and isinstance(algorithm, hashes.SHA1): + return True + if rust_openssl.CRYPTOGRAPHY_IS_AWSLC: + return isinstance( + algorithm, + ( + hashes.MD5, + hashes.SHA1, + hashes.SHA224, + hashes.SHA256, + hashes.SHA384, + hashes.SHA512, + hashes.SHA512_224, + hashes.SHA512_256, + ), + ) + return self.hash_supported(algorithm) + + def cipher_supported(self, cipher: CipherAlgorithm, mode: Mode) -> bool: + if self._fips_enabled: + # FIPS mode requires AES. TripleDES is disallowed/deprecated in + # FIPS 140-3. + if not isinstance(cipher, self._fips_ciphers): + return False + + return rust_openssl.ciphers.cipher_supported(cipher, mode) + + def pbkdf2_hmac_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + return self.hmac_supported(algorithm) + + def _consume_errors(self) -> list[rust_openssl.OpenSSLError]: + return rust_openssl.capture_error_stack() + + def _oaep_hash_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + if self._fips_enabled and isinstance(algorithm, hashes.SHA1): + return False + + return isinstance( + algorithm, + ( + hashes.SHA1, + hashes.SHA224, + hashes.SHA256, + hashes.SHA384, + hashes.SHA512, + ), + ) + + def rsa_padding_supported(self, padding: AsymmetricPadding) -> bool: + if isinstance(padding, PKCS1v15): + return True + elif isinstance(padding, PSS) and isinstance(padding._mgf, MGF1): + # FIPS 186-4 only allows salt length == digest length for PSS + # It is technically acceptable to set an explicit salt length + # equal to the digest length and this will incorrectly fail, but + # since we don't do that in the tests and this method is + # private, we'll ignore that until we need to do otherwise. + if ( + self._fips_enabled + and padding._salt_length != PSS.DIGEST_LENGTH + ): + return False + return self.hash_supported(padding._mgf._algorithm) + elif isinstance(padding, OAEP) and isinstance(padding._mgf, MGF1): + return self._oaep_hash_supported( + padding._mgf._algorithm + ) and self._oaep_hash_supported(padding._algorithm) + else: + return False + + def rsa_encryption_supported(self, padding: AsymmetricPadding) -> bool: + if self._fips_enabled and isinstance(padding, PKCS1v15): + return False + else: + return self.rsa_padding_supported(padding) + + def dsa_supported(self) -> bool: + return ( + not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + and not self._fips_enabled + ) + + def dsa_hash_supported(self, algorithm: hashes.HashAlgorithm) -> bool: + if not self.dsa_supported(): + return False + return self.signature_hash_supported(algorithm) + + def cmac_algorithm_supported(self, algorithm) -> bool: + return self.cipher_supported( + algorithm, CBC(b"\x00" * algorithm.block_size) + ) + + def elliptic_curve_supported(self, curve: ec.EllipticCurve) -> bool: + if self._fips_enabled and not isinstance( + curve, self._fips_ecdh_curves + ): + return False + + return rust_openssl.ec.curve_supported(curve) + + def elliptic_curve_signature_algorithm_supported( + self, + signature_algorithm: ec.EllipticCurveSignatureAlgorithm, + curve: ec.EllipticCurve, + ) -> bool: + # We only support ECDSA right now. + if not isinstance(signature_algorithm, ec.ECDSA): + return False + + return self.elliptic_curve_supported(curve) and ( + isinstance(signature_algorithm.algorithm, asym_utils.Prehashed) + or self.hash_supported(signature_algorithm.algorithm) + ) + + def elliptic_curve_exchange_algorithm_supported( + self, algorithm: ec.ECDH, curve: ec.EllipticCurve + ) -> bool: + return self.elliptic_curve_supported(curve) and isinstance( + algorithm, ec.ECDH + ) + + def dh_supported(self) -> bool: + return ( + not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + and not rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ) + + def dh_x942_serialization_supported(self) -> bool: + return self._lib.Cryptography_HAS_EVP_PKEY_DHX == 1 + + def x25519_supported(self) -> bool: + return not self._fips_enabled + + def x448_supported(self) -> bool: + if self._fips_enabled: + return False + return ( + not rust_openssl.CRYPTOGRAPHY_IS_LIBRESSL + and not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + and not rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ) + + def mlkem_supported(self) -> bool: + return ( + rust_openssl.CRYPTOGRAPHY_IS_AWSLC + or rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + or rust_openssl.CRYPTOGRAPHY_OPENSSL_350_OR_GREATER + ) + + def mldsa_supported(self) -> bool: + return ( + rust_openssl.CRYPTOGRAPHY_IS_AWSLC + or rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + or rust_openssl.CRYPTOGRAPHY_OPENSSL_350_OR_GREATER + ) + + def ed25519_supported(self) -> bool: + return True + + def ed448_supported(self) -> bool: + return ( + not rust_openssl.CRYPTOGRAPHY_IS_LIBRESSL + and not rust_openssl.CRYPTOGRAPHY_IS_BORINGSSL + and not rust_openssl.CRYPTOGRAPHY_IS_AWSLC + ) + + def ecdsa_deterministic_supported(self) -> bool: + return ( + rust_openssl.CRYPTOGRAPHY_OPENSSL_320_OR_GREATER + and not self._fips_enabled + ) + + def poly1305_supported(self) -> bool: + return not self._fips_enabled + + def pkcs7_supported(self) -> bool: + return True + + +backend = Backend() diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/__init__.py b/intelliaide/vendor/cryptography/hazmat/bindings/__init__.py new file mode 100644 index 0000000..b509336 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/__init__.py @@ -0,0 +1,3 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust.abi3.so b/intelliaide/vendor/cryptography/hazmat/bindings/_rust.abi3.so new file mode 100755 index 0000000000000000000000000000000000000000..2ab847abcc4e1c78f5bcab95916da34bb9979f96 GIT binary patch literal 13844864 zcmd4ad4MBTx%mBJ5dsKCK!_WZfEpDgAWLv9_Mj|bkFs=nx_c(g^mG^9JwrxO3k8je z5EL-tLWw8=7vdiG{9NN6m8)^XxS-MN689*mzp9+)>6!Z8Iq&=4|K8T2JD)yz>YV4C zIyto@{jyWeICbZpc5?J<7w0+7wnvWR=`W7|j{X!`-q|bq?;(!s>=x;+(LYaq%kPz) z%`fzOO3KCCh@WTs8sGc0$*=UglQt#e=RG9)r#}9Ll#}nn-L^~$>i6xR7uR+0!#gIw zA3Tu!URm8^;_fx(JD*o5zHjpTLXiC4dz8u6SI;ru^?AETrQ`P5w&zZwIgT&iH7{|x z;(87?HykA7wSiree%;J5Lx+L0e_@lzu|B>Km%w?-R~A)5HrJ(2I55cA;E7XP{>PT%4` zxA>ndzDtz%9o1*g$ahr#gDifW#ZR^Pg%;ls`Ht$dWGVk*i@(<5Z?k3QxmstD;OPpIQZCSo}hZuebQ-$ahr#S6Irw+2VIu{9_jXs>Od~ z@jqGoA<>KWj`I0Pi$C7tCs_P!i(g{#%Pn5D_^T~`tHnQJ@h@4tZ}FkUAGG*h(E@Ns zc|OqMhg$qdi+dJ7%i@<>e8u8{#p@Qo)8e18_`Mb%S$x-Mp}V7e?q~5QSp1n5Kf~ge zS$xsrueA8h7Qfx%AGY{6E&fA`|JvdYT6~}A@MlMPKE&eBwD|cJUuW?pi^qp!JF3sy zEdD`@f6?OiS^RGn-)+ww*Jpo=yB0s*;-_2ug%)41_=_!mv&G+I@h@1sXYrp}{7)9& zW3L_O^HCOmip8H}@$)P`XYo~wUv2SQEdD-=f7;^Tv-r^B|BQS`>yW)3x?|th;*YYp zYw;&q{BVmOY4PJN?pgdai=SojODsNP@ruP)EWXv^FSYo!7Jr?^Z?<@7@w+VkA&Yk` z{xyq#-{QZt_@6BPpv8CJd&lGU5f*>6#SgLglPrF;#XXCkX7RHve!j&ow)i@WS1f*o z#b0FcS6ciAi{E1Lw^;lg7Qf5l_gMTR7XOsRKWFi-#lKCpIM6^Ve#WE ze!9iav3SYiQx?C%;#G@ZZSmJczN7xCTl`jwf6x;DI~Kp+;tyJU&;54XUm1%ZVet#1 zvAM7FFsG9`elkiAkg>W>{Y6J7d{NxJ?39FmNZfhJ2?_t4mWQ7oUH^@@>o1&^DE}fU zKe#Fx=V#*19?5z>C>|~!n~1X{@tqeZ>wlwo9orpAoOW!=S0ug#W^jSGjq|fh?aEG<9(c^=y7rF@lMYE(G5RtH2&kS;uE$;XFPXtE{Mv+ z<p-ovrfw{pRPRBkA3pYvu9sBjevc)VV<( zuTCEC<-A!QA2=z$w{xdFe*KNNL|6J!&im!@O_RqDaXu-J-#B@^r}HIw+?YJx*ZHALqyNxHftGaAzowTa(8RbN(!kKR9{3oAYmZ{GrL?sJEk>#9yX8yH45@KaMKr zoEqgSx~$_oDu(EFE$yXtcHAflLG*8@vil^*c|x$W>!jja_a>Q+zh4tQN0Pi#RPwMW zM)Zt0))~>i__nt5qJI}g|1OID{r-SIU;og3&boj9=bv@IfA-~_ul(e~8;-cH{LRHn z-gfLKs|R1*-T&PC-?IFjLtk+33-15;Zs*>A-Vc9!!|=7A`p<*cop=9d-tpk=2Ohfg z_j?Ox-~YA9^1Cnn{q~}N@r8f??F~2Wzxk%rO^4LKbmG$AovEn}o0b-*R#vB%SEr_& zsngFtb82>Od2Yk}%Ie(m`DdQAu(UXL{`9(qIrF<6|7L2YIz6?1esOwX{zY?6aqH=e z^HH?r%`2<=V0vzPcJ1et#Uu6SnR&l5x4g3UaMSdR{ybY*`)Orbf1F$U_1x@H#~gFy z@oT@BJ^JYU+JoxMoWDB1w73?yGQCon+xBR?%~br2YgOJjyIw+tbiPlt2V@{l2 znLB&k<#RKuQ|E8>qb|5$@yhwd*{O5qRyJ>n9!{+;tW0f~Tb-Joon3aOid&~no|`#$ zZvEuP(-+r%JS*zN^H!HP&%~RHBTb#Ya^B{3t8vUtbDL)Tt&z)yPG32FF&YkwGg15~ z;8{znr*HBX<~GeOuFlO$koXtpFK^bE@xxQ67gqFfaqB77nW+n>7dFqGvb?;s9B*UO z(v~>Q=WmW;O`SD&<=W5Z&8?okI?3pyVyDfmp1Lr-AQL3ZHj6%zqsLq#o6=B&@;a|Va0g7<(0X()n_a%ZZJtKZoOb}er9QQP9MgVjkjXz zn%LBtbE}o5*(ft7EKjO*MzmXO|FpBW%q_29Sh`Z5dgjvX=BRyA=O}Se4^NqI&bpaR ze%z`!{Zb&_@|km+mX^1!<;fH}Z|;iCb5R#eom82d*%&=5`u)^J%k!&q7c4GM&#z2& z$hDfDc2YDj&R?FMl$=y?TT)FvWP2yiMFzk8XDvzd&Rdv|wz*y9PG6jz zt7_xo+Fr0Sw|vp`@?w4WJUuoO6m4RqhFexFe(_=;)Lbp>1f!*W3IS$QWN<( z>c$t%Ek;$AaS{J?!fZTUOxj`w%ZW=%3;N`>>`0%lJ&p#?qzO_rt?0_?^1|F=T#e1^ z*Uv3Sga4$Z#nt%@o0m4n<1B84`OWs#PY(RG-)xy)m^yEI%iQ^uWizFn5=*p0t}ZQa z!^voihiCjlyosp$&Yqdsyu3U&8|}8!D^VI(r`Au;$AfvT@CA!2^BWfDX5~rJL#Hm! z#Tk=FXGZbkJ(jGWr z<%081&2O9T;;|d&YkuA4)opuUG}=y^-!iwjwhNv)y*guF|0Ge9`G0018i-Nwct4zy zEpGSloXyh+l*M@3iC>q@j1&!rWu4*TjmwT1S0&2S zxtpWie$%!*MReZQXrZ%dZTF6+g6KteEpg_FW*&=E6wk7A>MRw!;_;uq0|CmA@U z8b3dJ6wgHFfli8Xu#=`Yuf*AnOGLBWTD*(qS1Tt^cJeifH=)H(JN=CFR;O3zqQ))E zMU{;rtPTIgx#jtpD0DoQ|A$90#3wyI*_-{zis~e@+sgzT*XPu^XvApUmXn3krYOpoKjAnTS!7w z7xQWnZCIXk?)*&Uq@_*%^m5!8(#$hAFRae{3-QuQq_}kDTs$|)!)Pzw_8^+PmzGbS z-!eZNhtL5&Y4PIei^YX#*hL%|yS5 zU~SNxvbeH2s^-+x-173`(p2^ZSSwqZw*`as86BVR}9~ zj#-YH6|FeeM=zT3qS*XqZguVFEh~$DJUOk8L&nuw@>k;@D@!Y@>$b+hocX1h)u_r* zKB7v+-{N*B3dhfz6gBN~qUtP0i*#pQv^aMb;zOrJXL=@H{x~xWOVJ*>61{e8+O)DE zYWK{R$q&&c{kgg2Nt77ZM_o86wz}j*E9tq7&U*9I^>IDp_CyCz(c)#&xb+L0qnFh6 zt8-Cm*Uv4jch*my5pTtrF)!Lty=OQ3lRTL2*}UM)E-XbaV$rvit(&6%n)tH|Cg|*f zIf#%xjQTSkt&^TyS)Gl_I9t|B=BC%hV`F75TF=bIhaYo`TjCVP-=cXU?)#{=lkfi0 z%6xSy8b#5pupt^QTUVk~t#>wUn)aPd{_@gloV8e^;?Z+wx6DV$+O&Cb^7|;z#>qgL zjfPEJ^Z5Iu((w=LV>$NdXwX&t4Qm}gwd^cTFD|Vt%+2|ZzdBi@O>K%^8>?|kHi9-U zCNQeo?9`Rh(X^q@oJhPVn_fuTy5*(m*_r9+09T8ejm*cBPLgJ$wc+y8)-|2P+#x2O zynJO`x2YZ3a@3LAwM9x^xx6Dq6QwLSzZ4(tX|I3X2cz9oDISB-%rd`zerC<$ zU4j-rbvAlc+U}_P%FnwE{CyF*Dgj@%(km8>7)WAI%xZA3wDcjrnL#SgCAY zon5*z+BGVhqR{cTXtvornHDBHYm~mpK2q5~Q<5DxYEjgQQ}fY@h_!8>Hn)1l^x}ri(;MdE z7rl6B#x>sl_oo+6k6#$Hw$U@rjZSPWEuI&j?ONmW=2lNTcl$?CuJkGAM#tLQEe4gN zH9<7Qx2=X2=GSeQnVDL7+RD7=QrKP@NUpFa71^wW-tBq}!(mpRrs?Tph; zJZb8vNRL_jIVvgo^rs!Q-Oop_{e0ZoPti#yEqvs*-ygYMf&5y5qqc40sBQZ6sDiq= z?Y4ZhvoQPAs7E$epIXfy`_yBPj_YeKBt3XXe719P-gEMUKGyFObew#s@-_IZcmsZ$coUwJ_-*(PqjI z^x=;dAHp9mK87D5p88j^Uyc{gz&DF$;o7b|{6$i}01w1V@E?g+;6w2$T(?_;|5?g6 z;QtYC!jF${IEud7@KeOQ@N>oc@G0>jd_jB+Z;Ge>oy@ze&6e|G0P;-WBh|zbih3|3Z8Wf81Rr52^no z^M8bR2L2rJEc{IIJbYQa0B?ww;GYq%!0T@@^{m1xw;Qj)Ur{&SfY;w@yb0gwZsTqE zzT#c@q2hh`(c(jR?^Y9k4BsNcVw?=)<4-Zd1=8d`5f>-z=Wm zDVhIQi)Y|Rzs0@?@0M3{KNYC z3)lU(3olFgKKyeMe+bw98pC^1KDBc)|GU1&)IS5yh-cvki|655z5sumlrO;#6|cb0 z7q7xE7O%mV#T)Qfi#Oq+cpLs9@h<$!;(hpi;zRhK#mDf}drh8GyCn0k{homzB;~X4 zl6W4j{a%3kQoaPgTD$`PqIea4pLh-a7x4ys@AsMZHsObfx8cta@50X!@548W58*mL zjN#Wx`P8n-{NE&=fxlZk3;&#W9{xk|0{qY7CHO<{G5M*$A1_{oKUcg4e}Q-dzAWB^ zU#0U8{8duE3%^6W4=>0(IfQ>!%8%hc5KlcMng73vXW%=vOn$O(EuV+CWF1m~rzK7a zuJy0L50~;)_!jXRyer;-e^tB*AB(r)4~Tc+fzJQ%e@poxe5d!Dyp7?zil=r<=6`qb z417=VEPQYAJUlI4fbS<>f}f$UzwjUF>o2?}UV}d<-hg|Owi|65Q5--4S z7carzEnb0N;6*p+MPF6;B{JS>@XMrp1Aex66Rz9q!do|*@i2s6A#uj=Iq}pU$$aYb zvv7@HfDb~m-4gue62Ai9B3^}S+y-2?+ksZR@j zsAFC?JMdd1&H&!|sHx8ozUjZrcE|9q#c$AzzA|a#`K2a~3t#t9(=HDlTy4r1;My-G zxb{mGUf#>(A%JVY)ZyAMEx7X$Q=c|m`=txlei_1@olSj4aP1f8;mN#dzqoK;>XU_Q zzvSWCFC}<=)wHV&*M14$?q5v#8eIFO0oQ(M!^@I~4qW@C2iJZX!QI!J`i$Y)FR6W# z`P6>N!d)3BIk@(V2iJZn!^6PTrvlf0slv5i8t{?yO9A?L@neBGrhuv!S$3Fbq zGLMbnf%J>BUovlBe~j5r)9^iRG@gT(Wj@Tq!>^k11^APso)vicAEsSC{G&1-2JoYE zCVmKa_BQ)n6R!Q+hHL-!;qINLJ_ES+?+C8_o8CW}&+t_yP6n?1m4$1672xhJrd>t2 z_E#CM{T0B&-AtSsUHYp5*Zyk5{Rd6EI&kf;9$fot1a}^0>NAFGf2AIg%%}EO7T)@v zsZS2B{pG>6zsm5z8%&%ET>GmE*Zyk2%X^x3g>db!7F_$Q2X`N0;`HIVe+}WtBaI=e=fsY{9jB7w$>< zAzaHl2PfNmgXGhNYxz9b>Uim1P^{|=3B>2w#$?C zSPFiu%%2(f;c^}(2k$?|)V~1#%k#{2Hhgc1 z(}%m_L%7yw41c7QPdzS~PmP;}>vjw9VGeI(`DU_DdbE<0OQCLfX}W>-KtZZPy5{<2-ff zj@#>6Ja6%$#VZyMEZ(qq%i>*&58%3=j^LVq=dffRH2-P1USDwGx;+p6E9tK?`~h(v zuJsAvf06QaxW;Y4b-O*d?vDd_LG}md@yR@B92c(pV-BwSqX*yj3^VT);SUin!*zQB zTS7i{~s}fbV>!ypF(k5wE}>ko;8P8n*!-$bH3a_&yT9 z3*S||57+09;Tk{l#2x1+2Y-ab_uvPJ7vTqrm*LmR{V+Z}FV{l@cvs5T;Tee^!Zpt= zcupSo;7^b^BlwBpscbSo$BAd)n&&KBvfGB{BT)U7vaIrO`H<^L|G?S;9KN;bq(J6w24!PXAUs? zZwUX3tP?u$Ef<*eWDoAY)f|uX;kxb}!yP%l=R7%?H(fuc;U~&*bPhiFt7%sruGeb{ zaJ^nrfrmTE@f}>xHwJJ$-x$KZFPr)_;d;KY4cGIHeR%Fl6K4R|@$5V$nYVP!luyC+ zd~yapBgZv)xO0z*%d#@GI6?a&2u0A%*UGXFort^nf)mB)MVZqIiHY$hkCvO-n+`wCkNN@ zU$A)D;#G?`;G>V3?S}A=$$5qr`~f|G1us9s8Lmdxi#MKf=^ z@QU33nS&o8%-om{fLM@l_i_*#46Ywd+=93QU7BLQ5GM?$#9 z>A**fqq$o}4gzfIOx zBlzHq`UPdymYA zaD9Dg!S(f}2d~R{^*;RFa-Y~3-qHI;o}SE`_DdSB{gQ)+l7~E8`=tQaeyPCg512go zaP5}>uKg0i2eJ-n!nI%8aP5~q+_}}%X8_lJ8Nsz*(nlxrnciyRWZ>E_dH7&p%6stV z%lYRbd{&NYe7Gy?pDJ9}8#TDD>zZ&^?h9(c^}dA;T<=>LzZ4yeYp15 z7#_%a-Z>U|lXZ9+uKksR2Y)pA$-}k33UKYO3cMrz<-@hV0=V{92=9H<)Tas8{%XUu zzj|;zuRDNW5dYzb=xYSm=jV<~=5v#j_uyJSfWK18*Wp^e2M?wE0Iub;`DA^Z&zt<@ z;Lkh896x&SOXNCT8Scq_Wfgc$uS>$eEUzyOcpz~?_($aRy#@cf+~3%P_x_J*S0DZ@ zSw9TnN6Yz^)bYvul%HzmjSRf=IuqZ8Yu<8j&07)P`hlA(XCuF=0;rjgSGm`oIfLtf_;2OUO*Zr;xuj_eQxW=u+ zuafdD_?M;r9k}i<1GvU1QX~+Y-;f>vF$V4xamuiJyn-eQp)F|M26?c|3UPGMNV~9>T+O&FfSPUXc4? zx)vY8FOv1-7~YyT^M>=BWPbGgp$q?mtSfSGXT{{X1P|o>BNce-3RAug*Za*vxK}mh zyKucfst+%&n)1$blkF+-%C{;fKim^9A^5iz)BJ%W{8I01xDTp*lP#_X~ya z@)4$AT5#>h4!kJ+*oA994&Y-s5AJx$`~;6OkJIqpqm8@p^kaE#HQpE$in#T+5H(uaWDO&dJGkxqBWp$#V*>akB8oN#64C za1Rs5gKL~Je6LrV{`KLZ)Tav9I1TuHa$M7d*Y`5@X~8v44}QH|2OPlDdz&~zxW;i# zN#^rwE2do;i|634xM1H&{yn&^!;A3iq zxZa1BgKOL({PU6@AFllsz_q_ZxW?(gwZD3B?XLm+KB>;cIz-mn41-{sQp^T-)1(SLJaRzCq#);Z^Z5T-%j-UNS!#ClA+l72&Ut_+|Jt z;y(OZ@c^#vt;2PDE%+-XP7nSj@c~@h>pVZ%UX7E7k1jLgya2Di$(+|J!u39@GTi@Z zdNK?HxZbZ)hx-Sa*TDu{UkBUpK;Dnpfj>#s4?Xx-Xq-NPQ}BJx^YR>v{49ye{vr58-;Ayaiu7PY!Rr*tDw;*ZpD) z@5uF8=gef@_LTK@8h*6&R}Maq>jinZuEPuPgC%|i?#ugseYoDQ6~J%V%dD?LxQ^Qv zyncomw{5tN+djM_<8}bo>pLU3Uf)TdmCUCj=hZWC9sgOlj{gFDAm^EjaJ^rv4A=X$ z0(kE0W}MXEdYz~N*Xu-W_&}~#cHlbxdvG29BY1eTsm~a$<3DwFGM_sBv+&*rWxs}N ze|d1dU#koc4lw6!e7d}UFo4(PzQh___q!&%{z+5M7F_SA>cD>>=LrY!&f`oyNAS^$ zB%g4tPo|j6XZaVVybIUynS=jX&L0-x-u|XOWq2U>v-$AWlG$z*uJx?L^**i;e(ptP zoz{Zu^G9&Kf6P56nTOsw^LmZ}FPNLyNa9-n017;?B9r_G-H_7SCC{ zVDT!vC&yUcnhAMGyT$qmnD7={uLPy1Gui=MsR(8`n+U*it_n#IrzO2--GM% zT@n6$DPM+vUEGK3_Udr0PYXVjI32jg8NfA;bAGbD+O9NQ+vUQwT{-vznjiQd#EWpP zhY#0!*5Ut_I3Zl)bl@6i3@^+6?p%<}gO1OP#q)6IIx~-X@bz+?s0bg*c_AM@lFtdL z!u5R(HTbh-9o2+;@_8&R_=?o01OJ3v-ygtzY1a_0_q~tdS-H-VxiFc}@~h?b1%A7n zXUoB_lk>Mlc<>Z?eSweUe(wrg^IwH){u}V(4@^BnxaPkF*ZlY3X{k>iuK6FrHUFuL zl6k9NW9pNJYyMrh=HG({x0pBuxaPkE*Zf!E9l0N)25)`H#IM6O{~=uS-+`CqzRE6K z^WTRb`89LgI)*#nHuZ5z$$V=5)9|j0w;X)*4HG91*ZddYH_H1yDsV?WugQmN{sZ`z z<^A#@JUG~l{}$YRt*K`luKDl6HUC3+T8@iHaLvE-f@D5*{JZdh++UZ4YyR_a9sebG z?rzhrGF}MY!g_4A=YzaPQBiT{XDozX8|$x8dOzO`Hx~^WTGO{zvdZ^yl9u zUl%9yHjwwtrQn+X4E&dJe^(yvhNhk#T=QRqYyN$>E5~~}WF9n57Ors$a9#J7;JRL|!Zl6I>w!9u5m)R_HPTWae8o#GlFYBI%Tw1`rCzT91pJjShBbe*ZvLQ+P@*Z zA^qEd>+xm}uE(1LxQ>SrT;ryvlX=kX=HR-&dvJ|YhHIPvuJy0Owf-SokC$6;9akN= zZf^kB`Z(*7?bUIWhHIQ0T;mksIaq6T5!F;r~}uy1GxSjOlL!~y?S3t z8m{-H-FdX+}*<*pAO;Lzhk)eZ)RgM&mB1r?83Ewb8zk70{qU4tZQ*>k{K>c<*B4Ie1;}m&?O@a(|HruS=XV+?6;LcwOq_!*ee*^{K-I4-;>akB70+LeQc5~m1v zr%nA!a9`S0h8HD20X&rcs=-^*t~%V4I1PBKV(QbPZ;?F19l1Ze57+l$jo{bF`;Xkk zWS;f?Sy}i;WZv^EUb47v@f!S-a-KhgkIpdl>%hxr8XwS4H0~@V+vUoA8)y3Xgs0^^R~g=u`ULRsY!kl@?~8|UPwLZwr{zA39=sqvfVX8mF@pEx_0sW^ zc^iwn@SI$y%)twC9nOQ7#EWoWt}~V4fw&KE$aRze-W0FHJ93>Mg!jZ-@S*f?2kt%J z|@&pE)nPL1K=+syv!UXjf69v?94y&Sy!R+*RJ7s!2s75LybQ@##&<$ZP` zyd&O%*I#1R4?TG2P~#)G|2X4gc<*V()62>B`iB_L!2dmG@|J}^biMIB{6O&nd?ay7 zaNS-NeyGH0z>gAd!Zl78u5pHNZPyrng2Yd)B=e)s&%!l+0p6*b@#DiCS)W(o*UE89 z4gLdpU1-7wa$jx>zMpIE7wy2;$@m<=J^5UYA$(sM|6};S$c!Hse!G00 zLk?b-_7>sgKbbfs_@Cu|=?eUh@_wiqy#78Drw)Ii%mX1jko!h@@cLmUP9N?($@mEF zO8GIo^?frBIGdAsQ%}J)z6&2n{4Cu6k%^zPcpko4`lSfh`Jn>u$b90%TZfxG)Zjgt zPwMdZ%l;L@*Un48-!0`kaE&{Fe_YBtTatOcS3C{xio0-qz6aO%Ww^d?$cNuA@dNnx z#p`g5+k)$Mhj3T&Jc4UJohy@h(DOWLxIRAzKXTg4^F_Gktqgah9sykAgmBGU3$A(V zz{ire9{j(>2XNh*K=zOYeh)_kLl%8Hi%M`kUsQ#Aa=(25*YibnxSlU+ z!HYvvpEg|27j@x!zGw&^$oxNo>-hv{Ycg+oKEZ`Mzc=;C!u5PY9Jzvy->-nNK+|~E*!1a7l53c8nM(~d0a}3w>MX47h^Qq^HvT*kr)2`rpAfG7+k$KVcH!$cnE9j+*ZC*&;$(iVl=4}) zmao8<%9TolQ=_o@2MuA&Q;0w4nBI> zX>S|u-C)WO;0J!!#2>*s zH=6R9mn8G>XnDVU7Vf;klrO?BmCp$;!=39*`5OEZxv#PT58iCbci>N!`uE^|!;~Mx zr{!~OQZG%mE4bN|&%rNxsL78959+3T1-{p+DPM(qx0>=Hd`kMO1<$?Fl<&hIFYEsy zymOr?pMF`gU7oye$fe8iYz{t>i{; zUB+t{o|4CX_;=;=-%>#`KgGA2zoVCie@TuzvKIH?y8o8oUy$P|-{Lj6cekle2-o?i z0}rMCUHB=oUkofhws`vLWPbjse~%Ad{FV88f@QdKzwrPbw4XPbKSQ{F?n(#VI_tDa z`2oCl^_dfQUY@LHAfAHj`BE4D!g({_7U5c-68uH7pVr{PUC)@*rw&iIjW^+)cN=fR z!?d}6)P?spnb)H}JpD4`1NeKTp3WT;mksf!tS6g6nZv1^#K7A8PQI==ua+ zE}Hs;aIH@V{(MG#wtlX-I_KWVte$-zg`?;booW9n0YYn%%F zCaF&q?k$)&0bJvRaNVz4@bo$prw!LQeR%k9nJ3}z)O9cX8tLEktCIN)K49Wx;2*il zjPoq~2`3vbz{@hvm*69r=PPh$)@-*5&&m6&1Gvur4U4xdK7i-$HuK>SuJN5(GC%4W zi{~s}fPZtdISwtsKQCT^>+@^yN3WVVO}L)dYQy^yzYEvr58)a=_3C6E{w8rU@Lz~$ z;rjdnT;o^Z*)67BRk$NwgX{B~aE;%EYd;R)&zJZk__^ZFYm#}mR6GseDDJ|yi09zX z68GR*zW}cFZ@~4uYZHE}#Bal2E#8H%#eHqEy>FND8Mu}&!8M;1_y;6T6|T>3!_ScG zNj(_L6WV>|yyYN%4G~>{NYkf)<_bpztcxdqs{8D-UZx8O>D6gk* zeZ3gNuafI=sn;d*Q2wxqlZI=Y9K53E4dA)EO`HN;<5b|gzE934z+2xiaRRu;3E`iW z^=Av7yVb;L!!=GHev^Ez`w*V~kcl&bYn=4;$$aX%*M$f7nmAdw#woyc-CKeO-!*Z{ zaE%kdb-h}Lm)~IGG~gPi4bRECw+rum)5Ph)HO>frj;tS?8N9&$AfE}GW^E}nEl;{2k$X)s&I|dfL|o*-X^^GX%nXf*El`+Ws;u(ynLsLGlXlL zR6Uu`-$}bN@X=RI92c%}JorYLhl}v?M@^g(T;o*XcgXs=2Csk1#HqtIP7A(C^3#Ej zK5OE1;TmTMf4!W~9K#21F>#z5lljy*F8uHEIS)B_{Szim9To@73gPbiO`IlN<8w@ZwKReQI#6PZO^5MjJl(nTgYZYn%aG=Zz6O_bU@;4A(fBHzf0{ z^F|h)mipx28m9=?d7})^{o2&00@pY-xXv35xc3VaCxmO94qWGr9(*MA>BBY77_Re1 z>ZWAgT9W59T;t^6I&XMz?^qZ6Q52Zdi_~4IHe|Yc* z=@)oWwp)e2>uR%K*Wlhe%>5({_;D{c<(u%1{Qapm{8>`I3oppu3+}`9I%euE$vpUS zJuwUSWS%L&N7CL3UB-D0-r3LeOB3$C&g8QT4_|G32v1A=)LWDFuis$GXX&psUVsm3 z#w+xnnsHTwx2`kgoA6NU4|ip|LwNZDx&P;F$@+(q&oq22*JX3?ww!M&!Yi_V_2FZ= z9vQ$rIWHf=Q}X)Sfw!bSJ@^ykymTLar1${-T=60N4Dk_sN_-5T7k6$;=Ck)^vwx-G zFO%{a`1Rs0{O#gd_ycl&H3xr)oX^a|576_R@WaH5@TZEG;Kz$s;kidXb8`K?0rzCT z3*isH++0`c!1eFc4B)!{9K-eVu`^*Z|5`o=*S}L!glqWnl@2d?G& zaQ(Y8W4M-2zdhM5{kt|Ud{j2~U1Z@J$Aed1E$eOgig+2mVagoW*WtnPvrNCkb1yUA zg1c85Z^M5j>%bwrvuetZ;D3?VBj@&HelB~htYhI9iMw!(>%rIZ0M~j}Enc^H)8ZYA z58$0An*JTZ-JEgf9mza6@_Er|c=4rXJ(huMyK-KG%kcja_u;y| z7F_Gog|}X3;`iYiCv!(K4?mOgS@`e8^YAZ=7vLJV27lIVvW|kg*PD7a;W}>H@I$41 z7q0c}!*`bQL%7y2`_5z@+HyYDvv>)9rNpnmH;Px``uqm`Dk-Fm{{0&mR4}X>T z5WW`oUCH+9cC+xcJXpMBao^%K_{XH44Y<~`4ex4u;abm;#Zz}C+pFbW_^vmYahQX9 zvOf3V`us9{KZz5-bv)GJCF!RYT;ufMIvxga9S<(g;o7bMuGaGVi-vGd@;QR*ahdbp zWZv}e7P;`j+fDtm@MGkCB6;{J;w89_+X{S?Hsjof>$t7MbMG+qX~1_s(j2!o;s25Q zd%N(#&SrhygX`ZL8o>4M4LR>i=FO4!52oPy{=p1f-#?g#m*wv$d2rp2ig4YJe0cG7 zCO=iUzJIU=*Y^)L;huc%bPKNgQ3tO3(Ey&7`&x%^-H*m_-H$T&B=g+5-?YnxYo2p( z{rg8ncyNg6_cGk~P5cU6_tP4@_ytqG4%feP6vFlI9ChH1{GFp7+`r1i@58k|V|eFp zro7Wi=1s>>8m@omC}iVuQZeZ~-T(8rmKagy% zde-8e#Y-0V;pM>8zXsR$k=5blt4;YPy!CqHEx7w~$q#&xG3%Tj{XOP9nDfD89`tjx z((s(z50iuI>rMgw54oSe1W&J%`2?hO-7XKTPm`#*bfzOD_=RZSi`@ZypwKY*t< zoAN`rADHr~4<++6kou(I>5rK>Il9y*4+g z(H7%Xc=2=-zX7jH{zJI)GZUu+_oRQj@bte-`61kq@*{Y7jj2!iBgwou(%uX___~Ro zhmWMZ2M?wGWq42ew*v3{&BU+4eJNju2d_2tZ^3&~pEf*vl_}qcyON&)y!dic-uY-U zKP`!$f_o2``e)&e^luK{yVb-m!hI=Uf)`(B%2(k7$xi@x_cP^d@U~nBYQod9UTMP% z;$3)FuDcB3fs`M^+qxcVC-d2mI9d2e%ID!(Sx*$;IXV6;!2>zIs=%A#HF!~uE1K|> z%-4N*U#=?*;l=%*GkLvmK9+2+zW%1*Yo8+l*Y_#s;op$YF(_Kxhks4qZwv3q^{*OS zUmu(BfBv_59dE;P)8=)y1J^hM_-89}aWWrI=JSs4nfhemb%~RMYn&oH z^;;9ihimy7eCMyr@hn`+ci@h1Fx;%&IrZw%Mtm((YddHAcu$-wpbCHSLnH|?sx z)8bXQKEDA!Ov?A*?p`NM=7Byux4-cbJiWK^G5kFeKlQ0(dqeRIT%VtZYduTwwSI@c zU-JOh=QrRQzYU*zhskpneuj7-uFoICHGbyP$vmVbpE-E&P?OI*{N3_Coub7n7O%kv z@^>oha6Nw#!u9+~2Oi3KsxDm5pY-8+o@xw#!t2fakortAKh9mxos7dYT<47(JogrJ zJ|Pd+&o?N*_45rX@ZLX693QUdu>-iiA0dS6`w?33`mLs2ZMe3p4{!a#tG;zvsjT69sD6j8zxc_z&rvcYEZFu^f zCO=(x?%gI%53X@WaD6|W^M8_gOTWp)Nx?Nv7XE+QrapQ2;H@T(2iG`d_!H&z+K0D7 z6Q>H-I1PCEZ{|8$6W)8XiPM5>oF4q!(yjq~beoAYglnACXOsEV_djOf<-1KB7p`$U zxV|5=2oLWxaY}HFQ-$m2ht%NiM@^hMT;sIh`o5|Tye{LX3)eV9_~5H%{u#knWj*G6 zE}73i%6{a+J4cxHZI1qQIUft}$#tayTwiy}7Oz^o4qtqyc|8r`o5fr3K)eILUc3i? zllTCBk@yI%^~-%enNMA(dGIetoFe=^;$^tT4dGvt@-4WQAHnaJ^3E5M_0;vD2iN{8 z!Sy~&A0Ej4b%Dj}aD9FYe)zjg|MuX=iw`V5g6s3sUre@F!%kj<#-g$(X zSDh~>+m(~Q=bM7N^17UXUoZ1~9-e-yd0p_}dR$+GKTOXLz>7DTI92#-#S#IL~hbDOL1-8Y-_GYxp~9}_2pYn&Eb<8+?PM7i51a!}WcjRg2dx-h}IUgEm~x8}#8_Ij=H?>v@CJ*OGa- zU+SNM>-mH%T;mqty4?!=za@SZuJ>ow;QIU~eDp@MUv%M`pFUjkGlpxN%-557(EMcK znx8y;_q)tIUx5Ep+FOF__Ns8LPXj(L=L1`C9p_!RujjAe1G$fD0N2k;AHntW($n8a z<|k~M{Wk;G^8;D9-se_;JM#C}ig3LjrVQ8nVFGv{uM0J}p3iB(^?Xhnp59{G)q!jN z2k@fYA2NjNeN$t&-Zz!`W-_0_?q>dX;d&k^2iNmRMR;c)6Q=~%&r7es_4Cqe@PT{| zd>yX$JB4t)->C!l9%ky(g=_!z;o84rcCc*zgYIuJY0_>s_+FV zUxRD;E?nRDJ%H)<@gL?qjBoJ}-nrPkU$O~5Fk|Mo4qV?S z-naM&zV?3DZztQUpTq3J$Fjc6!3*-b?!hZ^{izHOOy3-8JNn}fGx9`WFPaUVXEyw%{(mGjI^xSogUz(-e_{jLYE$?MSo z9z6TR$@%Kky=bqTzswZ*!ha*z6KnAD@uqwW{v|oS=)gPA zFy)8vzsov#3{OjW_rH?uo%*a<_vYaKGfn&we2<@*^-KlsMJIGAKsGq&UcgbKl2__|1^B$nfQ75bIYcD0X}$+DeuESC*vW2hbNfwP564rXB*y= z_731j$Z^LA?n(VK-%GZ)E8{H-&q@7@@MoT4=G8JhJl52|2H!{W-+&j7GvzyQ_j6{y z>%tG($?O+>_}Oy2Ifjp9zsU5H?bZD~2YSKtqmaa)B4a(_Yq*Ek{kUsBH& z+&$Oirw>2)V3YqL+&{;ZPk%qz-izh^*Dky#@w0HPX90er%zGtxc)rS1-r=U69k|xB2lsqa&oNxsfHUFQo<7I6Zhy=92+j-(Nq3Yn;@Nl6lkoXW$*l zrw7;k7vVZis_>5FzXoqzX2wYa9z4e6zX{iRw&A%~nejP*YduGBt!L)P$vlLz-(}&s zX;aTU+m;z=Hc4j5?tF`fp=~(aq4hwZwS}+cHxe+w+|2H^WKN_$C~~f!?nGs zpCt2^eygcx8m{fl!L_{}eDF3CrvlgZR^i&-5bjBPTX08SM>=rNHSO)ewVnfb`kkhp zsX;OiTF(qz_d5^n?Q6DMgtunQepiM&8B^YeYdr&a@orPkCS2>;hHE_sa98pa97q3E%@njT+oB-cpkzp zlXY6^XURNhc^9txQ4Zewh{;19u5n6mUDs9MVcW#<;Toq7*M14%zO2)_aP5~qT-SBZ z&y#s5%lJvdU0H{?^hcWUlY?tLJ$Ui6ro9!o*0T!N@e{%aI&Z+svOjjJJP?-FOzwwm(A-!8t%yF4!Lk`Zw_Anm8oYQuI(+swY?R1@z*9!9j@&S;o9CV zJe2TpRnEoBZwVtV8CG+P0!PGMc*Lr$z-R~-JS6;8Ha8LTB26vun>e+y6 zJ)7{>UrarFaINP6uJud}lkIh+o*8&3`%4z?9ct>Chig3xaPMEHo<3ab8NjukO}HoH zybT{nKD+Qx>e++;=6&Y;(g3d4Lr3rhx$njKbuw>1mpEy-ZZ8M_qm-|}2R}8(?>_uz z`g!|s-EJHHGKt@ZYx&e~lJ&nv%4gwEzQ^Pz57#&axIVuEf3?J~!8J|;u5sG%>$P2Q zjWdL6oYa3O+k2C?7p`$i@LQ#P6|Uu*@KDNk;aYwSzf;O*ew(akLF);>SNjF7@e6Q` zTYvKKv6BKmGe;JpweLOe_yuS zhwJ<^f@^%|56L`ed>5Y9&n1IvoFZJ~`0%QHK4BfMaXN7AuK`@kr$@>9YyR`_@b6|F z<-z|c_oo%%S-l?*z9`ps0=V}?=|{M(ubS|(yk58Ap4{)QO^#!>1B(tt4!QG>bSKvLlkHv@UxUIpp-`nus zEppuuu5re2NA53j{*=tm9>>b{MEJZM@8{qh=|>M9NIw?gtz|O~OK`1c6+V#jt~IzL z_s`Vfm&*0f5T1IiX;%kcmiu|S@D&;7eRxK$qmALg(@g)S{+!Hbc%<Wt^Abfz-bW?;K|0)Zk?qpAEP#<1>V7Jv;Dn%Ea%&kCE$WeY#xN7{lGi zn>eYzB=Z@_d6EpgBcB`Q!gW07;5wd*@IcOQl;IueM;~5%u^G=*xaOw;5BE0h3gOz1 zEx7h$5AMqOjRAZh{WyXbtEQe~xYjfMSL9hgjO`+B*eEM+zucmwzuJ1>v!S($JO}HoP?G{|$kI;eZ`w<3kSB`^* zaD6|*7_RR}$ovQSyxFwNh3oqfa&Ub=LJ=NFyGn5F-wIs&w+45AXX;ajYyXCD?cX+B zUpKq(p6qvhxIRDQyvy8YJ^8QW{8Y+k;aa`|f0NvY7FfIiAItsHEx5i5}WoSa7+ zz$+3by-TvaZHbeEhZ4twcf^bEv3MEYmG}X?{XJ9v5T26rTrIdK-hq$Ad+@BB-xhO_x2+zy;mloU?@4(x# z-5xyqLsQQIyd>^CB$>Ci#81OV;x63zk%^y!`{Euv6feTlKQ?j7a8KNa55)s`<~|dr z4)2JE@R4{6-uQ`$(}8!zd+@y6mo|V`#7FSHxU*X_|0%hzD-ExTyYQxX5$?!&r7}Dt z_e=Tkv3LN_%Kbxictbpdcg0)qyxeEgfv2UOJ$ONU0I!RW;9YTN_hddRvfVU1E%&>) za8Eo3ABubMjNJcGgm=Wt@R7I=FUx%u0lY3=hdXjVK?u)@x8R|82Y$`R%<)AZuCKo% zxc}@^%=#&n%(HX6@htr~;|2Ig$`|4F=a}*pcsg&q25&vXcmsZ+yw9i!AMAY6r2Z|q zUKi`Z{~_0v25|2oCe9G9aZ-CE^K-L)UI)A*M6+S zThd=GcqsXA!}Id~te(Y(7I*ec=11$3ftO{Ri#mn%VJPzP%`GITyw&2>oJ^0PqUbyy` zvv;z++FveQ<9KlGuOeLgs|;^QfBEp+q@Dp>`>_t!ehlGSzYbjMKY(k$jNsZY>3x#< z(KtD{&JP8Pmn~kkc-`VnxQ>T5T*pHnewXBV4A=3HdRVf(Iv%ocjZ=W@cqqYjJXGKx zk@{5O+V3^E_Im@a^=QMjo_)CX`w*`Eo=PY4pmDNr?RU@OC5!tOufYSkKPQCicH3|r z4_&y9havnklK<4hlkL^G39jRz0@v|Sh3ouKgX=hHz;&E7;W|#*aIIe- zuJs?ob)2O3P3A|(Nfxeg3UFPAl;LGrZ}{-eALP6-{K&ppkJaFh+{3K5oAA+>Oq>?{ zGjcyh2mX-zO`HKdcfE--guh1K*FT2eBA(eVnYZ+BOdJ<}w~X@~{DrdKF2a5JJe(3- zKd-C;f4{`9!QBJQeHsmTxo+wi!nM6ExVE^hj z<~$;q&$k>W_rJlPE!TN-@XpZGCl9||$`{~Q9&Xmv6?jM9=U9b@pE2e+#7Klb3-k0ZGMb`xg| z*Zij*nas21KMNno{hWDt?p2acxVEN$jKd&h8XZ|2d-d=4Hoaa_2zHwV}D7U7QcuMaQF`Qa*D zkINeH-p5USLb&Fq1=sxa;Nh=LoIYIhGlXk?QjbaIC%D7JNy9ZiE?o2D!Cm=Wmm=J2 znD`~QwzmS;_SWG3w@sWnT-zJMwY?p9@h%gm3)lAc;o9CYye#WC=dsCrYQJYJp0jwt z;$@3h;d;DZgX{5r6P}U#le=&|-tWWpcz+DnIGKZzdC=qiEL@NG^Kd=hFTnM@ZV9f( z`xUqz?^oekzXo0M(1vUMyKt>%AFk(thwv*qX8k{g>-I7SC-bKH%)^KBKC%K_`?mtu zI5oJQ$7sOyJVqO?ar$r_=Oeg|L&r_FOY7;vUn=?W;5rVAa2cYnfw@DuN=l)WP_P>8RL7l;POpXOJ0NOwnVTX8fjPtg#2yIsP!0$K2m{?sK2lxzBx;&+QEH)HIJ!ouh;3oeSalz-(P+B*}89;!f&g7j^HQAGx$B^Q~15)Io$W-0^ZU8 zUc-HRcW~d2(T%I)fasr~})<5R#-Q~NdCKW_*3 z{xpxRj)UhjhWmCU@Mr6DQ@H1I1owPS;a+C}_x)bLeZQA*uM^#*x?R5Cn{eOn9k|!& z!+pP}a37xx?samw@2>^i_tzTkb#`z+FEnmi-Cp;&#=AA%ukj(=b25heILzQLP)?R` z&&dkzIoZO!PUE=h_WJsv1^0QZ4S$*X(}nwaqzCsL4&dI8G2Ht(gL@9=aL?fi?sc|s zAOAhv$G_FCj!&-dTXo?+{yn&l{}AqVCU7608QhQ4CEV+5;66TExQ|ccFaGp)wc&o8 zcHurg1Gx8R4EN)70{7!|4);1MxbLqG-21bKzgqch-K@I3zQ5XV-(Nkr*BQe7cp1Y- zTAxqgejLr;GX9U?s?APUZ;Tje7>piU5z(xQ5^@*VGHg#?7}bCxDDW*!y(*rIDvbe zIo!v83HR||!F~KUaIe3I`}j9*Sse!-|2Ev~^x!`JX^oF-d`_){4A1rZ9vR%fA2fxZ`X6?El*9es7x10tr4s&V)!D&4=h5-iar1v4!@Yh2 z_xZLD_xUP?`*AUXd)+DAKX(Q1>;2C){F8c5U|ZvjPIY_N@37o9;g{)m@?-cD^?MWv zJif&0^x&`Y-;;+wTkj!^;l)d=P6qemXbSh^XaP_3_vV&xKaN&#KaRHWo$l-I;C>uM zx2}$-A4f4f)$cC0;hys@+;cvF7h3O);hyIS-19t#dz}^hp*mhRaL?@)9{&Aps^j4G z+icJO!-#&%=_xpzMPGav}XYj=%^?p9wzh98o__D^=HNJ)W_XnffR>#3Vw^iev z8t=iw`(W_oclLe83?5%k=WF=%dnX@!@1TH>zHeUAkG#V{`z?H`=SF*Y*Pnmft~w4q zc?-Uix8afIqb|Iq!T&KSc-I*(4^(}vZV!Mj&ApTnp6+$Fqw zEo;Am_v9ORdX%-_!bkEweB$qm+}{3O<6!Sa(M;ZgCwfn!4e!gl@S&df_uyms03Pdk z_7L8YkKr5n1iqEe;8Q){ox^ka65dm8SMX^6=!213!!!8?9{twZm+<5v_dckzhp+qQ ztvgir%k%-}ZTLdJ-_@l*Ro^#(`}cHG_`CJq+6dlJoiW_&%;2Tohn&NAPqY3k;9h49 z|M6kAelFpovDMkay-uTB9k?u&H(Op#_*f!?~6^~ znZ{=d_c{ysTHntq=+CnLtl(Z}3okl$owbKIM|NI_PNIz=ycP-X%zwRsHe%%+HSRJ>_e~%9C z>#G+0=3lVuzBas}|J{RMUH7$y@H?o^7=CN{1n&QS4)^*i_`OwU13yW=g+ExnhbQvJ z9joK!pVx+ae^Pjo%s543r84qxj%?FIa9=i0nfz{mP~izU3H_iwlGqxW_k z?cpELJlwidbsTd2etQhRlYW=7TjTv2AHv_L@gKt*Z`bcr!F_+t;9hqLzs1V(yo2{2 zWaA&*xw^fH{+><~p6Pe*TX6rqnl{{jucimj^!E-1@IrqNeF#tWxg)rLZU*lN!%!d|Bh`8sEZwT^-%Ey1mhZZJues zy`OQ7cWb;~qNc z!y3yW}Z{DN2y}n&-c&h8!1fJ-6wg>k*X^oF-dU{!u@j>@GGf)0Y6l} zh8KD-w1j)z_Pwg(P<+O&6FYFf?n~f)-Iv1GFS9yB_|^Z#*2!b|$DV6GgXizm{Y?00 z^}Fs1_*r`XvWBPnJ^u~duS2(RzYdM=T^%3KXA|!E?7$~lpY-9L!xZj0%-~)phkLFT zaL?5m?sXcy>UQN?w>RNODOWN4%3rmdci{f-`*8o<5&S6C$>2VoIo#_MaNjR$xYyai z-{kA+`&7rl_e%`-{gS}FP73$^GJ^YlnZmu!3cl02Vh#6kE8)Jq(Mi?q^7?J~sMPTe z563$^9PjW_--8>%{Wu-N{WzV$*T2;94*#*9|1RLq(S5u%JlFI64Llt0a6jG~_pOdw z`ey4-6Mksd?ie@)@OzZUTRS=OH=-1pZC z?)z&CADw4)c5vTc(aF{E^!*jXGyOe_Hr)4D7w-FO0RN=^{>u=)zOG#_jNpDBbqY_v zVcRu>`~I54eSa13H)wua!~Oi*ykB*E{61R@_xId7@a8|+{hWlZ|DD0#q5e$a-j6l> z!)jl`y?uQDYX5y5*sbw?jSp))ga4_vCZm0bVpFTzV7al7o8T?_9 z<#P((J=W^a;C?<@!awEv9lkiqwrdB!NXK1tN_Bj8*S7X;_}Th>k}iC4J!_xBBmF(E z5j@p+X7K)#ZQQ2t%p7azbX8NdcKyy{dk$d8-=aUmvC>thW|j%-*<3t-*{Mc9NwjQuMPM1 z3H-zVZtJuZ?(IkLZ*FYf$l#@X3jeY^hkM-;?sazXi&ZBYRJYgveFFcr+V|n!egyZw zOE`sJs}ui;*Q5C5t5Z{yVJc106gcQxU@Upnv;^t);aeEmYJ(}R1R zAw1IW>Wtt|`nu&dgP(trc@8i1yFCkduKBrumzrb;%D!!d66xX;1) zy$$aq<{kK#bpGnqcnbIXt0VY(m6Hta|Gt2KR_)htZ{K`Gb-RA1_A&hD@(%n$c>?#k z8N4{j#%Bf}-Q9c+&#!Lh#|7M3B@x>9?%T5bkv*aDV@529LjPb#l1ZDd7HI*&5z2t*4WttxgZ_b%yZda;;b4{`ZwK_{X1U>*pN)SDN=0@Lc1( zgnNHB@Xuz}`CIf>!V(EX5ZjrVJO1b^7ev<`vCcjz6Q_a|^a zzUJ_6U)%b*gy*-jItAS8lz?BQOg_1NmTJ?$c^(}s_3X>~equhWP7 zJeI<{SWH881D0P4)^(a4WBBv8+e#E;NMn$_Hh6A-N#kOZKw7B%J*>p`<{*eQym|#+lKq+_TZkA0o-#khI^eE+;cLAdrp?{w`sdp z@YnhH!2R>~aPLp+3Dt4%{obkZ9^9{AQh288z9HP}XEmO~|L!3+KQG|@(`;T{!hK%d zz?-kLd9{T5_XT$FTinY&w>hkiPp0dy7ToXWwBdKVnayuKc=A5$Pap2{dQJoa-*N-Fki*$XR!TsOoaIas$KdjGP!#^i4;l5ovxYunysX9JiSDg;ruiq1R zs=6uM>tyh$ey3;(-|2I6xc~bS?sax>U++a{RJZGos^5fr-99{>={X48KX(LgUTitc z;9j?Ydk)ud&rbe4dCai{SfZ=E9UV3R{JH~+wbAN zUmBxoKNouMw*~icXu}Wvfwl|&OZBG@_kN^suRDbwtNJnz}2r-Z+;W&LbErMkTx zUH`V|x3K#yG5oxvtWF>9bp~|RN#R~+4EOs#Q+V?XyFWRDM^7@(;r$!wya~Ue?xPlP z|GV3p8sF7;f zg!||2YrOf4>NvFY-ftWJcwIjxH9n~EQH@V(Jg@O(jjwBbTjSB+Rkzo-t5xHj8t=jP zXW9Ma6z=oPxW=b7KCkhj#y4=EHyY2ZZg2Jj`#qdCyf5#-{kcFN?)5Wx=Mt-*!;AY{ zJ`1?Nw^_oIYwGuT;B)<+Lo}{#mwO8y`VU`R`F;n-%K)A>%}4OvA?9Pax1YkNYCnVD z{&365qQ*;jd=>lLE&Q%KJHPMY9eLwf)$#Fv--CO9Qus?%X9RzWJcIkcFW}G6`=6T{ z-_>~I%xeF=PF&;N8t>Qmu*S0*pVj!H#!GnS`w^a8)An!l?CSPL%1;CC>){ssiI-X) z+VH2#yYT19d+^ib1Gx8N27ig#&*9!adQNq_`iI)~HsJ5M%=+Jgdz}H?^Du(Pd#jVd z{l4@R?&FZd4_BQ9+&^yz_s@;~zPi14Qk^E;`xC>xKOOjSs*}LI9~peB=k-&#e{K#R z`1ZoR?hfubjGkNF-ZOlA;r{RY@RzB53itLo{GHxU_}k?L-2Z(EKUeLe=T-av{9jpq zn(#vHW4QnO1n%`y`1}0(p*23O@p+A};Kf(%dTI^#?@yKRH(qAbQAM+HkMagL_WW8XwpAw8rP~u)XlGz3`)cYxC+J9=7*IHQNjKIz4#U-Wng*_#9qn zeX@XO-?i(SCEV|iZQ)*L2lqOAxYudExH=Ag{n)PYq{as|KC1B?p7`||ym*9tA8-Zt zb!-VAsm>Puq7T}0pVmvN+w0e%U3lkW8~+6U(Hq+J)Bs-SJU4`QG+&S5iF^WI$Y=1m z=DRt(rQ>-CZ_8KknS293>~tHSU5z(hS{*lUAJ=%d#``rsgrBJXWN`o7S&c7hd{yHm z-0w5&YrHwBj)VUWbGyb9xF27G8Xwj8q{j0aU&H-4+QCcxUUBnf)$Q6XPdd0?(ShfE zyPoR9*YXiOzrB6WaSHGM#r+TJFW`Q^XboTJc-+8!f9-0#@qeq^b&~C?*F%O@M%%>1>F~F>i_Tl_iLL6 zV)#Ypn0Meu#pVh8d%CaNhrj%ac3w{5Ki2n5NAT@ zeggm3$5{XS@b@2Mp2APj_Kx6x@ja`b!T;dn4{v6+T{--t`rHNlnfJE#1^iz%K5O`g zv>!|O&y}|w{6(rCy`nn)Z&D7M@KY|a{>1QKc>duJdXtT30)M>5vk$+i@|nW_Nyps? z{uzy12EUW``xJh2&p-Uf{(TepTJ;O~@6>(`?I_pz_d$ z-$`})@SACz$M7$!|2h16pSFIk;IGhj?cmQ;u3E3D_VaGaNdkX>dOFI{vW_!rTQ8CCcm@ecMkuQ^0S7o<$L%UexA~L(C5`e zpDf~qB zGlSpT`wxGF=A}7&eYXc39Pdkb@jJU7Dc~1s{8#YiU9HXrzEGVKe!)dH?``4fBOZ9r zpFKQRooH6g;c+^?8t}#8{ewC!_*8Xb_)oN5ZFu}T+paD=Q=J6v$i+qdVC6jNwz&$>0}iJv@PzSGVJ9MpvC2{#+ej zb9nL)>(3ItR-FQVbDw|U)0bL*Ht<4qO8AX$WAphI-g%4i17E04^v~7&+(LC4@JRc; z1dfGM)yd&c*7f5YK7EtbS;7<5Dd0EIJhp;&-fa7QLsy*=evz+x;mxbr{@TN1 z)rrok=I73S{(`UXXxr6-H&rKw|C!GFZTRjs4>~vxcHxogB=Bo#-sr*0!)<&9@ZE1U z|G+<{d434*f7j}a;ic+i@Ox@}Ch+MY$`5?4IywBp!;d@|hdDg|mi2!LUu%9Y;D6Nn zR4aINb>##%g{ZrR$Ccyz?OIPYa%_P7Hszt|Qv;^;d0t z68QYucAeORHy>=W}?W_67V*UB|89Yqc-oZ_<6jExc6w=*`vff4%BA;5)UC z;m^=~*oH?98=nOJa-TopO|?(q@w06I4(V#2!Pl2s`w6_G_Bs5IzV3o&+P?*S^%kqY zf+wn9!jHa^<#`M5t9^8Kb^HtExdBhrK8CMep!~x}YM;PoH`2TW&(uDJcfP3chfmc$ zgZFhmVFHgIX7k<*-jwI?%-1vU=82Z8C48!RyMW(Y*Dou0ziV|i@XXIg@CWI7a|>Tg zt0!JXW0oew6C0;Oi?XC-A1~ zl<>CdY~juKC@1j6H*K7ww^Va-sOHHAJie;dE$~SFiQ#MA$7{oJa zx}XQ|tNj3;$W!y0)$x!#k>z!Ov2ECh-0>tj-J`U1-~t!@r{EP;>b1 z7&{)9@TTe%@LT(N89usL>t1-QIwgFeI$L;Wq5RNQCwgl&KOgt=IK2NZtJ8ufsuRPX zr1`uJ@BH4zvkUL5P6GeF)=@op*0lXKfTyaH!e6K70z>%d-)y_abk)h=&(wN;0$=NR zoWV2I$>G=a^Ax@I?>yz`8nCI zyW!1uC_nH*bz=BLczp?&A zZ?ER$Z*=|AfG6kZJO$5HCx+iWYaW~z+VDv2yYStwtv?C;5vtRJPqm&;;d7lwhVWRq z%HR)E4kz%A+UM|Z>HIr~Cu(27AE){&cwg;H_#>68Ej+uL9jDPds{8Ag`hH>q9^XLw z3ts-(#yN(++V6+Jo3F6X?ZVfplfe60pZDPF+ghCgyilDK{%l{D!jr3NT>)RHP6nUo z{htXudAapx2G3O|ho7VM+Z>*1J-LKWRi}U#S}(2O$)Q?Tz%$h;;fLw@>=xcs`#n68 zNB>gI&ra8y4S4!BbtJr?&!gs&YaSi`B)#<_WL$rQ?m#UM(->3O=2ygzS z?cXtctvVU}AN{!xJiU_bml?cJog98W?Uy-xr131^Kh%7(g6Fy(FX1oN`fUrJ`uuQC zb^kt2*SQUN=KB}E)co0oPt`twpXSFqJoot-eg{1_9KvIb=NR7f{RMxDwrc_({nGL_ zgQxNw{ua%9bNJ|GmY*fOuQ~<%#@g>Ic>YqWvwQ*P3SNHGdl>Y{N zq5Q<~Z>W76p8NiVU+&Lm;S04-;djyX@({jI9y0j-)qVmmR6mE`LC^c<@U_|(@K0)< zS;3nc{|!9y{Q|$I-}i$r&a(ZohnK&w97g|I-CtXOegRL^z6FovG5m>IC$!<&&OWyb zAITH=Man}D-ckDjJeH^MC+Iq52rqtT^XC}eRGkcd6Fpy;z&n>|9)?G%lf%EN_mk)F z{Fhc|3E%zP#;t%Kr}=ONZ~n~cY~ZEpl<=`X|AJ>fv^snET6Lm#R`c_VzdQ0^UEP3Z zk=1Fz3)P9?C-^)MU*E;9PrLAi>LlU`9L=l`SgI9+v8_|Tu9!i&qb-h)q7CxcJ? zJPwb}usSn%raC$NQXLm_c%t@8ct>8qpQh{96};4ZRl>jN^FMt3V$Cz~Sf3mHziLjN zdD`&Kw=Hj7c%(WB{41Itdhp#9tv>_$&+K?i;SJ4uLwM&b z>(3Zos!j&~h35pm^Yae;Twf=^qpxe;fd5eYaRqOxeF^`y#(4{m)js;S>i)gLYnnC> zz&mOm!{6u6_27xxC-7JJa|C!(>yQ-wWu0e-@V@G2@XP#p0X$Xv9Db6X^UmRg);R_I z3O~1bas@Bd{}TT4ldb(0K2m?8bF1V34BeM#z%#Xv;ZN3mfHr)p_6hv9e!Rfr2UyMr z@U*1Br~UtdY{Dtw_jIs640hdDgDqSaZ#bJZ!}Lw_$0 z9{tAZY~WMXDdFd6eY=JCZ)xYjJv>vL=v~!39PjHoczj#iUoCj^CpK@y@aL#b8@@PB z=Vkav{Yl`@);g*Ok6xtt7M`k33V-V1c3ceM{gag+c%<#h;Hl>aK0V(0GlTclpB(;B zp9kQbNcn*$s#Cz9rSr%Np8mo5vw?S1r-Z*)=h-cM`g^OhhsUZDy}O#9xA^%Q-g$x5 zX~CPS6T`E2>HPut`u$d?3*Y_Na+tv1pyRX$Pcy4CfJf?23ct{=3*gh|TAeX`_fzXn z20vH*nZS$ZSe+TXRGl3DG9B-8c)7OYbO~RpP65B$1$JDl;Kk+EpAB7gO8A+&|FeZB zx3>Q5;idLhw5aCiHG1yZfTy>zIxYBGbz=Bonm5|;&dlm`;R|h70)LnK(}VB++UgA8 zx$30w&p)qe&zIqg$5@>)e5yJb{H2>C59&UP6>a9?k8{I+0^Rn;eFMK{=J%?))6*uG~ne4HqI^h&Yus$J6E^& zk=pR-6Rba7c%uF!@Mn5{;G@S|odLX~Iw|~-I=+VR{^P997#^!m1|RABgA@4fOwB*= zrt0MIFX{KM=J3vAtUpV5q&fxs3EJ-~c=OR#X9M5qyj;THr~Yi=(H*SL9$uTsS)BnqSDh68G4*E%-#yam zjNxlv|G?j*b<_mjzpfo$Gx${f$>A?of9CM!?W{jbc%l9j^zYj7zM|jI>TKW(&kww% z-z(U{*AKTkdwA~od2cm8>nCacfiDJDrv;y?P7I&xea<#~`cSLWg=eahz`Iw}dzJ9f zDOP7dSDh5Tex+^K5I((!)fvMx?e`4cKf~%w;GNehKk!uj$>HB=UE|<9IETl7Y5iHk z`>IpG+v?8>zIdY5*}xOkDdAu7^A|k3xoy`TKGOI^@2lqL(LVpc*QZ;5TJVng6T`dr zZXS$J8=n5e>U80;>Ll=M>Hbd-p0{ng2JqD9ANZlav;GX>#Z9cv7~c2%z%Tsik+%MU zcV21RHG?Orlf!SLd36q7-@xiD;T_c};D`Esb$IqetFwW}s#C&$;@_)|5AEo<^6L_KLdO7@8o)h@m@7KYvcD3d~K3DKu_s2?jq5H90cpH))V_d^d_4nC)V_ot=lO?6->~^S`cQTJzpVZ@;DwII7(Vm-!wc=-1b&6% zZC%%c_tpOt{yxt?ys7?Y@GHJY>j!wL{^amub-tLxW7RLoTct`C^_)zPjEj;n@ z|8RBu->tkg;C;1^;ZM^2>NY&pcqZ`sdH&%eAAk6n{ysB2Q~M15N%emMpQ?Qh?|n-1 zKRj3a0^YpH+OOaXwJ+hn_vh5`LhYlERLB4Rx?kFWuhl+=U##P$4NtYd68M#0VfpOA z`#Qc-c=uLzeK&-UR6m2iz@J~hBVYf(uc_l@4qxBW=EEht(7LOD|51O(X9e&4gRKKM z@P+D>@PU5kY738_W&PR1bJdAHTHTMg(sSwtyz?^aPYXU(of!VJh3&64Jo=8-$?!~d z5_oa4<+ca!+}i34;3L&Z;eXKk07H1D`7MLrSo75c-t;`cuW@7B-Z^}y^-lpmUhP-# zwfa-STQ9V6*upcP4?kAjkBbwmeFHxA`4D~stu&)%=#h*Z%wqK0VpqE11Fis*}TCp&ZWP|QoLbNJ}R zc3dpsebp)8kM;NM;pNY*KO1tj;Ong&rvrE)PvQTg<7)_C%#|PbRP$H{f4jeL3Gckn z#(4%`s6RP;=jRc4_6+OK5}vD00grl?!xcRFiSh%Vs!j<%&A%4_AN|Pc?BSW}ME_CE z&prKn9PmzNz{_K7d^Ye* z$3+SMpzafH;pJ15A9z#!i9S`$&o#e)#KC@Vz?&nh(}G8;6T{!C^Ku&=U2Ju_@ZAse z`~v`JUAoz)RIh;Vm7fLwNdKt22hLRVRag{v12rC-Bahw!dcZLUnR@s{0so zcyfmIX9-`ZP60pcBbtBUoo6aP@LY9D_%VJT7#>|O`Ne=I3TwXExxYzqRdZ z!86r~;h)xh#Wp`cWk5ngtU!v>59(+BtIs-^qto*?H>Q4^8uI^LK;r*K_Kk!6#3iz#czF5IKPgj2Es#C&8df#{p?|)4Bfyb&7 zeWse9QIx+nHIxgDqXdfG&a+t$^?CWQEaTlwzg!fgafZs>w_Z2+7xz*Xg z*V?WU{#Jkf4ll1~b@uQ=b)wH!^K&Py!yEAUn^va8-MB|*o+qw@wgm>Ox4NxeVo-^Q;EE^Aw%G;A_>1;SbV#AZ_^iYgVTVFH|Ri-$nO_d+>$sC#Ueg z)w*;DFVsGRzeD%&Ch)b|=kTkJk3864b9kxt1^k(Q{~X@e{n!$IXWc*9!aKSj8-2dI zzuv0jv;j|5KZgIK`qPFds-M8Gt?li>GylFSe4+iA!jJf^<$MTls?Hdmt4;?0D?PuM z!1F6u&S&tc>g4bT`g0KY&i5nyB!3PCFTSng6rSmGOZfk}x6NZ)czR8{|GbBfR44jE zb-zE{pFhIm59>IEr>Yaf|JlE12hY0JpDw(wItl#QI_`S#X4A%J0FQi~053Lnd=25F zD_eiY@I?K|;6tr9Ch)#;p2Jf;2cN?;J=ZAUu|JoAM`~Zfr+SZi3-9Q;Pjp^&{|=SU z27IdLJ~2GebI&$i{Yl{W^LZ7%zNz*XyrXeW;jh>GghTl5n^tEGk9~i^f1&I53A}j| zt23jkP7Xgs^XD8seT>yv!Xwow;HUcW4v#OiIve=z`*uDp;V0<%_!i#ZSe-q*RGsMj zY91DP52^w0-`MK3;A_>1;Tx?p+wklgR;LRuR40KS^8OzoFBdLygTg7;M?hCfI9s|{~H&&H<UG|40Q+TZTWC&0Ey$krlpM$_tKflAfsy~P4I-eHs6MX#PO&@>wix0PXV+$|Nw>r2)Ba-Qz{HQ?(T>Ntg$suRPn{$}e>8{Yh~)#<|5s*}JkP=9*x-7eqQ;3k5ngGSM&3BM#Or6L|mn$`3qNog99=Kfi$I z=P5t%rs@>%iSFC1;Ooy@oeexvof6)?vfg`yM=Ptdhwm=Z{PX2%e(tR2!VP%*NUPI= zm#P!PyLykh4evkP>U802)k)yr*L%M``0hE%54=#F6#fW3CmO=j!?n(YFH|Rk_jMkb z&^2$&;JNDL@Xe>}IGw|zmTlJ(K2@CpeoZ}RT*2c{Tb&I&Q=Jn2O}&S_g(si1I(zs? zb)v6S^K-VpPY9o0SNVabsuRPXqU*0Vyz^P*2i{km1im}(2)j;!N1wNOYyeMGCxt&m z>wzJ>{G%O5V|Yh(GWan%UrgZX$8DTv@K|+n_**q^%;DL<#%Bp{s!jpFf$q<*;MsA? z4?I$x68`)9TAsJ?=}nX$`0l%!f4*AH&&#ym8}P+Ll^=MiIx+k#&kuavQhw;FlfXy1 zpU|UgzYpMr>ZI@w`tOgyJ7-u9$MA*fWbjk{Iv3tK-RjKXx$5NbU-WpA;1&0PvJBDUdj;OSNjb9EzRc>c&hd}{Pw<%g?EmyoEPxDpD*A$e;xrp zR@V_*_(=VUzFr;wt^b`bc&z@!@U#4R1Uysy1pZ+Eejj|Q_9^@&I(~=nT)Zm~Rz6qoLiJ1dLjBpo*J>YqqdNXCzM36J4S1>cF}$z-wBb9o zPvE_o9bY|ow6Xa-h0pYT(jmO5_8EMo_7iwtvn@3f@us68>1- z7uv!TwU7R*I{p{xepCbASNjgKzYGvUB4U0}y!0q^Sf%~tTH+L!R?udV(T z9;(~i= zq53(z>*EhkeEi|5+OOaX-G?mU&7*C-v4!`2{4cDIf00=G20Zoghp#_qf#+(U!y6|m|L}#{7x11xw}lsKU&2#u?-ssR`{%e5Cd(c^wYX;08dn>fd5AK^H=cZ z(N<>z@2E}*|BRk%Z{gGbusVBqtUA%RtNZDe{4uMufiG02grBYJoh`io5v#L@=c*HZr<$K1oPWf@{f7p; z`CzNlf=^W^hF_>Wx8d1`tWKA%Itl!zs?&onK4^6Y@R91I@MHBHX9&;7mcubTRh`#JFDXLSC8m#UM&&(n3*1fD$5@;rmDRVRlJeExxt9$U80y>Ll=!^nPg%o}6oS2Jp4&r0^T4&JbSS&FYNdh3aJR_vm~&fk*GOIy3k}b#nO0 zdf#;pU;mZWS;BMGDd0_Q*9uVwJv$tEFF+5S7 z3_jI7Hi74Fu{tw&M|E=ePc=W!;l-P+&JrH0P62}g5RL#%({k}20f0Xs71&_2{G5lP;ht`JY|6~2{!b@#e0)L#Iv-jZ9 zN!FhMe4*>R6n-zA2Z!)ZU-^MIJwNcP-Me{^=Lx(#%j(SFP5mA49DeD0k2t6^ho?`s zI!n5?tAJmm^XUpcy{7U5PgJLbpYQ8uc&z=khZovk(f6wPxz+uSJlL)Vywg*D;D!1V z!~a`(Zo{KD*!XneQ`Je}FZAdB@Z_mhX8<3mP6~gPayW#i_p^B$h7PW1h1 zetzidXLvlaIxTpnIx+kkS7{#Puv_E(8Xv-&Ct98}xYwW6_@c&F@M3zzK|iC5tK*PA z+wSKy;7xfGe%?{nIH=RE@dVzw$i`;?|I7`{M>U?qi$|Px@VRri*Dq>(Q{y}MKj^q? zTv8n$_qfKpHQulBVU1@sKCAIXjjw9Ftnqz~H-GS_$Dv*0NsSL`d<6GAOyDoSndL37 z@nwy#YkXVd(e_VoZwvlyy${@hdp~8*b zo0sAm@78#~#)mbY)%dK&7d5`B@v_GEHQxNupB{&HjVEx=!=T1TH9o2FyvCPs-(PFE z=V1%?JVZaPZm)X_?%UO=@m`ImH9oHKIo#*}1>Co5RpVui?`ypIlj=A;TkEJc{9N6K zNossh901Q!xObH;L(}ZzJxD6U>^Ony1nc7o5ysuZ^PfC_a2iP zAJq7$#wRtN!##(~8eiA=w#K8MRmZ{Wx8T0L9rzplcW>Y?`k<|IQn=@K3eVqbca6f*dpI5gl`#0@hcwgRzdp`&8`!lR3;w)&Xnv^i9^BV6X^oHJzJ8n5_`Jr88sF6T4*sd%*>*Md)p79c zjcdGHR)_7Lqvl?I2_^QUs8sFD=^S6I`9NIOW)cByrM>RgF@w~>DHNLL#ZH-5l zSGU*K&n>v;xl`jkxYtSHUT0k6Q@9@&^BON|d{g7Q8jpWh9S6UDZ^M1Nk{Tb>_^8Gw z@LPVt)^$_(ljJk_x$+$D2q3#!=EE>!9OaG;lG!+;l3XexR3v!#z!?isqwtVmvGPj8s61= z-P;2x}Dd?H9oEJd5srve?C>heSht1y!prKIQV{S*LYIn zgBl;z_yq3blh^pN#@98zh5L3z(K!d#e~p9xjw1I~jdyCiSK}%Ce0_gyT;o%?=XnnI zIz^3d;9h43_w8+5;ZKi4T;tsu@7MSc{$8#Bvl^e(_@c&FHD1DR`FWcUx9}&)ckpxN zd$^wmqbpX&&Ci1kxSt1`@V(w!Zo_@QBsD&$@llOWYCMN~PL}Xr>wWKajc;o_x>9v~ zp04kAwBRRdKJ37~eGl&Alh*jS#-}wtukixz*CQLa_j6a{jVo8j!M8WA@h;rw?LOSc zVOZl?jn8U)QR6H4srsH~3HST+d${MSc}R5}PXDc)2irBCz`f1@?&C9p|61=^J)0hI{>Kjn8YmsPRpW?`php zl|Q|`agBH3e&4BASQKY;Jgvi&})@d^AyeV;3b`|-Pm?|gs3 z``WJN)vDXuly~5Xybt&NJAiwCM)14%-z}~29A5sLjn5LEyxsQ88eZh)8~EaE^AcV> z=g|lA`4)b~mA$9ex_Whdrm7ReGxetnPu^mmJD|VSJf*A77~WBx44$g}48BnPCA|4I z``iNl61~T}f%`b`;8XQy50B2V`pv_tC(K9i^4Ye3 zr|{;X<_mbKI%|4i^*8YJljb{kNA36UV|JS753i1od%MOHxL>EI@SdLcjca@k&wpwC zU%;n7H($foYQKSx)V_rKd#Zc*=+{=ic|>&_`Y*Em(t>;Y4m?x)F5L6nhwpx6pF4yX z+O84Y>r84qukmG#uWNi;<59CZKHi^JjdyCiSK}#suJ^3QH9m!Z`s;RGoWsx7bHing zuWNi;G24_;iw@|MCES2iEQ^DCK;;C>z%!~Hxmhi9s@fO~&d@LcoN z8t&)E=o;1W>1(@U_%62oC-5jS@4?@t>+Uf;JJ#A~@Xn3RCvcw!mhk>ftbGA5k1=1t zy-o>FkF)lBc$iPFSskBD;}F9?q3=g@YrGHl@fp^5R^u~xqW&-7YmMg;?w`Abm)b8o zczRbGpT@PS<4}H3^DtfOt~NYTodn+Z{J@hd+j@8m?Kld#$^=H9my*r&fOiU;m@|1n!?Z zg)h{84lh)H0r&l~f?qzg`!FTEJX_;NSKeCJu8v!Ih_#RD%3&9N^lj~Phw#OlH9qh{ z{h7ccwV%Qt{zR)^z^5Ov`YU*6X}*U0d=(vC-QMg&*1kbkohIDtB=AK2>A_3Y>BGIw z5FUTj`jf%)51LQl(+`+W;eH;R!TmhAf{#>Z4fp=kDNtuRJtb)p2%@YrG5h z^;I8!m#ZspaPMaZFSUOsaIcfYU$5)pB|QG3ZSNZH$Mpt&(!W|ickpMw!mc|S*Qt(= z=e!HwooAn$z@rPzQ}{ydhw%7o)_wvn)P4%zsr~|3zs{jVJJz>i4Eb@WsyRPvO~*%xCaY?HBM=zJx#ISljRG8sEY{ zr1sJEs^fEC{T^(q#yd6MgU4UA`zmRTPvPlJ(u4am3wUy*`5Nxywxg>~^ZM28DwUe@@&#+x^&j*o9wyT+3mAJq5={_yMC z`fyU?d5te?d<}n}=EH4`xBk4kz439Dhc4W6mB9OIKY*`qYIRchR_CcHym@nLzknz5 zHT`DReg|K8&Tm-Vu2Stg@P)h&&s1js|KWv}^AY^+7u#_?fj^^Z?eiL6*7&-{xA1#? z)9OcYb$fI5rv>--jXO2ogMV7{d|Kn<8lTqq9De<0S^o?8)AT*`9lU&;?e{%=A&+iU z9S2|U#qj=39vA)Zf7;Ai};twZ|obF{xw`1*LOGlY+BVLpbh zU;4y@{%7#%#C!s8{&jlLK8O1_%;7!`3%HNN67J(rzQ2he_H634T_;0liZ{D~%o}DW^_8>nk`1%m@7+&1*F$eA2@Q!lW zfsg)=<+BT4Ki)inH*aV4d+_xSh6kV9hfn|2>I~r7+&qQv&M_atvuB!*;2pIe!&7+% z-`)HP(f|Hu0v|os>QCvt*mI)){ZHfIzoRJR79Mg754nYh+`>a{;UTy1 zkXv}jEj;8F9&!s0xrK+^!b5K1A-C|5TX@JV-E#{MxrK+^!b5K1A-C|5TX@JVJmeN0 za!dEz!b5K1A-C|5+ndzn79Mg754nYh+`>a{;UTy1kXv}jEj;8F9&!s0xrK+^!b5K1 zA-C|5TX@JV-E#{MxrK+^!b5K1A-C|5TX@JVJmeN0atrtMUkMMng@@e2LvC+clUsPm zEj;8F9&!s0xrK+^!b5K1A-C|5TX@JVJmeN0atjZ+g@@e2LvGAp^Yhup$LZs8%f?V8-eLvGa{>7HA7$SpkN79Mi@7d5$shup$L zZs8%f@Q_=0$SpkN79Mg754nYh+`>a{;UTy1kXv}jEj;8F9&$_f+`>a{;UTy1kXv}j zEj;8F9&!s0xrK+^!oxZN9&!s0xrK+^-mE6K@Q_=0$SpkN79Mg754nYh+`_~979Mg7 z54nYh+`>a{;UTy1kXv}jEj;9w?zx4B+`>a{;UTy1kXv}jEj;8F9&!s0xuyGj3lF)4 zhup$LZf{a{ z;UTy1klW*HatjZ+g@@e2LvGa{;UTy1^vTLCJmeN0atjZ+?bPHJ9&!s0xrK+^ z!b5K1A-C|5TX@JVJmeN0atjZ+g@@e2LvGa{;o*J)-1FRrhup$LZs8%f@Q_=0$SpkNmhQQQhuqRV zxA2f#c*re0a{|FR~x@Q_=0$SpkN79Mg7 z54nYh+`>a{;UTy1kXv}jEj;8F9&!s0xutt<;UTwl&n-OU79Mg754nYh+`>a{;UTy1 zkXv}jEj(P8!9#B0A-C|5+uPRU79Mg754nYh+`>a{;UTy1kXv}jEj;8F9&!s0xrK+^ z!b5K1A-8nTEj;9w?zx4B+`>a{;UTy1kXv}jEj;8F9&!s0xrK*y0zBjv9&!s0xxHOY zZs8%f@Q_=0$SpkN79Mg754nYh+`>a{;UTy1kXv}jEj;8F9&$_f+`>a{>7HA7$SpkN z79Mg754nYh+`>a{;UTy1kXv}TE`x{M!b5K1A-A`$$t^tO79Mg754nYh+`>a{;UTy1 zkXv}jEj;8F9&!s0xrK+^!b5K9o?CdxE!}eq54nYh+`>a{;UTy1kXv}jEj;8F9&!s0 z^DR8&79Mg754pWVO>W^KxA2f#c*re0a{;UTy1kXv}jEj;8F9a{;UTy1kXv}jEj;8F9&!s0 zxrK+^!b5K1A-C|5Te{~K9&$_f+`>a{;UTy1kXv}jEj;8F9&!s0xrK+^!oxZN9&!s0 zxrK+^o>-Gxc*re0a{;UTy1kXyRv79Mg-_uRrmZs8%f@Q_=0$SpkN79Mg7 z54nYh+`_|r3lF)4hup$LZtqmhZKD6(fqzzi$7BFseBXXYC51=dJpJJPy$pU--+upR z0^eO|?dR~vKiujs;K?Vf{Te=eoYmjJz5O2kA2-qODcu?4p!zZV4bQj!wBcUA2ahkc z--qeL`x>7S{1W{>(iraTXYeoRcWH8X=SMF*82v!S#?`=F2xVKN?7peb4xVN9c-+hUV{}i68{|oqkDd$VL*WbXuqu>82 z;od&_tLpgtT>Wpry?q=0VvT19?)~q>-~CP-&jCEq_KxAVJlpnH2KV+ke0Pl1pToWX zEBF_6e68VLe+Pe+elKwk_xi1*I-U4bNF=*vpReD$2HIN?pCdT!rt;cga1J}+|qUYcJE%Ta}|B= z1pX;~?goCww`?5R_o&wSXN|)ce!gs&*}(HQ;-ZSM;HJoU5nfNGr&D2GG%mG5KuT*5!B_KkkE&fh8L1Na5X=Nx`b9d~>9 zXS82>53JU|n#N%UzoCxnEnW4y531IAiN;|9f3Et!fj>*fOZ&mqIw$IL$M7er{R;ju z9T%-rs&)QT+dG7RPV18;{4nLD@sMhr52?-oek1@_x&=3U+%{v{J)f+0{#XaFD3jB zIv?%e-v8*~)p79tH{ss@81DV=z`g$o-22~$d;e4TJzi&d8^a%`@tnfns{J*GAETTX z@W0XVvVq@G^U@CfFnQw<)p0vVpBuxU<>wdpw{=|i;oX~Bu7>b0Yd+85Kh!)hgWpB- z-U5E?|FiL2!LP4%R0+S#=O6e}HU7;$Gl8qYTT)f$HcezN*Gfd5uGAJMhF6Zl!G zpTqxB+q;CnRM$0Y_$@UK(W9!{b%xfHE%?9ceAIzIP}|jmm)egh{9^eSevMyR9v1Mc z9%}2WHT-Vs{|)`88_s@wHi-9PET&(iqx;SbXBID#Lieoo=<*SxfVzh39NHT-zh z*}+pCcg;sv`+u^Imk#_SjYA*)Q27WxRc@#7v;F=O{3`!x>%BGnVH%$u{HMBZYNplx ze^}$wfuE}U^x)zwvpX>jRkHS)zV?#2>UgWSyEy7AMMGdL><}l|Mk~ucV<~*H@q#>G+mkL8NAEilH z2h1U@P%Gh84y{sNgnpOH=W&1Ra(Uf;m-j!vF0Q}F_qpfm@q9cVujgLdXYXxw-l)Pq zrv2D}zoGoJ;KLj2_k`Q7dhmwEiQs?s`h@>Q=bs_GaEr}n1ixTK%flGn zl~3UX%_oL$ru)ITMPu!ppke27DKJ3ts(^jnjsITl=m9@94UE@WSmjP6Yp!;`{JJ zbzMVv>sA|Q1pk-!Tlh^nKTP3;MK(?hulxNSeyq+XnS;`GQW)4cS@?Cjt{i-<`Yga3 zTHgS^y!uHIzOm}93?JTX^Qpi;qWeW1p401w@XWJz|82qR8ov$SP4}H1ydT+oB6vgR zjXr!|jWdL2^tvN>L+=x(@Y#2@zVNr}K0AXiuj|bmoL=9~HCkWzWqv+~ucmPd@S?^E z;J4{qQG_3-`Y*$8QhoN|_xtk=_>KqJeKUsFHP0FRtxxK_aY#B3KiBJ);16nFG~uV} zbGIS<@a1g$?4jxL^LpJJe39}{g?~ZwufczNr1jx0eDwZR7JnYsgP);srtn(d{_aBz z-$3&W!u0&h+gN-N{uixF1HO9C^3a6e#+2Eme@^shCi-#tiT`D zxw-?tPx+s~Kdkphg~QXYdydWn0sOZ=v_3wqr){P)UF2foZomj5yQkDBKMzOnjJ{&VShzV)*@SHSzKfQr})y5>G^wn8Se2dxW|v+7wR0F`+R!*gS9W} z^hYdj4fx0Oe6F zo`qL6P99#^+2RZEhT;QwOJ0Qg_bp3s|6H>S_wQR);62U13NPw)8}NBOz~}V_`DwA^Ll{K>*3f1>H$8l2l%`m;PZNb&+7p`uLt_`DwA^Ll{K>j6Hm2l%`m;PZNb&+7p`uZQCn zs0aAG9^mtOfY0jzKCcJ(ydL25dVtUC0Y0w>_`DwA^Ll{K>j6Hm2l%`m;PZNb&+7p` zuLt_`DwA^Ll{K>j6Hm2l%`m;9d`P zc;mD~7M~wNcv0SfPmit^9qYMea0 zDlfoinr8qnK5F@?!28eG-=C_%hg%t1m3&Y;xk{kc5z<){pM8hIe6wG zi_gPz@&df0dhkD58>tCn>XMy<)I0$o?`KB z`0!`uUApqzgHL~M@k4m#r{*Jg@lx|K-22!B?tN?u_dXWGy^qb{-p3NS_p!{0*QV;n z`&bt4eJls}K9+}jA1lDUj|K3V`dbn1{jCJ|{#Jo|AFIN>kJaGb$LetJV-2|Xt0vt0 zRSWL@st0d8X7v!kt7G#4-1prO?)z>8_kA~p*VW%9@bZK9x>NXYXdc78zs=y@-x9d@ zx6Db`rt3}f$-;d<=HQL{Z9aLp_rn6*_h}j4n%X!Oc=<{58oVX1!#)2Y-0ur*xaX|{ z_q=uCp0|ju`@#V3c^J~w52tX?Lk#ykB=D;8kU2TMj-H1s-0Lt0?`fPo-1~n4?sXWz zJ)cFm=d%R&d{*FIZ#8)1NvnrC-0P|fFP>xP9ye`HbP? zf0|F=#dB?(DLl8cc?{3oVm^acS1?cDx##V5^QT;!+Si@)EWQ9QRLleTRIgiv7gn_R z61?@Cy>1mg`o z#^Pgm?^g2}Jhz&8?$q?UH2!S)$-{eJvG@YKx{G-LAKqqOgg4%4UWFI_rFDT%zh?1u zcw<-dkUlVPz^m(;ci#^(BgaWdeuCF_ii`u!)NQ8kKuh??*!h^>rUar-EEv0 z-dkiogU>cFPv8aZi`;4Hbszh>!wVPLI0bm))8+xZb%%KoUVfK(72eb9*5LJvExr!V z)yzY9-@dW&0xc z#q@eL)PM5u!dGpa!UA4}XEc5d-qC%h0WW{l#_zzZ8mCLY-{O1l%)#aneE2K#K74kd z`50c*>rUW}2Q7XIFCS_i!&?uS&)~&F%yX@D{)?V}ct-uIuz&~fPQk`6F5o42;~!QJ zb$H+R1w41Bjo*NG-fiB5=QMr?KJz{aZ)u6_a46L|fb=2Q51FY_2a)BI=f@n#mE zz^l(%e)6ZM*Q-h0~O3k!GvAOFSTiwk%aUiJG3 zd^)!I*Wty6c}RcQya8{7=1q8SX7ilEhaa%`{F&+e6e9BiJad3~KvzF3!u#7;d-4ecwat+*X1+#P@cdW z^5R+P^{VT?tML7nx9?{*;eXcm)m!kQeh;b#U+ZLjuNCg`Gx(bSwb#v@ot|f+fB%(* zSGpFTgD-Qiy>1@%m{X5nw z{5<8q2LJl|?Rx9*lO8n>;X7|@^J&1R=bJa-d%R)ewBR@1Zr9s}@ANl|@4)xbI9>SK z%1;lzg4Qd7pZ<9pzYqW4eK!9A{4FE%A$)!1c?2IUqkl&XzwC!L&IJCEKbTM9N9cNE z_$^!5_%rzK8Yg#7y3Skr?*hE6|1QEi%1;fRsoU?rb>aSdbUpZ3`*#R`+m&{`BY1gi z43K zuJ|$hUe!siou2>M+ILm>OX@Qn_&3yN#_*;7YWpj9UV8i`_qKdi;df}=JMiaJZ)5o0 zUT(YT=r+qPo@2h{$lKXOc{L9s^s_;$YpZ)5nX1B$( zpUGGrTJZ6Gwy%5ertZHH+^=^EpPq5!;*8JWFX%p4=%m-(1fi0`rHTt@+g9KA#5s#DCfP_TV1hhkxX!R_7!5Ccf|B z#jQWLcwHv&!hdbur|_2IWBBmz7C(cRHBJKWy=d{73)6Wk{=+;ApT1z8gU=H4JbbA5 z3jFz7ET2_){S6zZ4ll|Z@Y(AY--Hk4EqLoSi*LgV@(z5gymjF{`3Szh`r#NpUtf6c zbGGhN_74CVc z(T}!q>Tu6P2rqug;#=^{aprA!^7p2#?@dfiNeENCw9Ne$B0Qc(+;C{Uocwha$3is=+!TaaieClw&-Vk0; zd;^}jz{Y993mx+oeEJphHoPwHz&r90{4~A48^is2C-Cxx_PSHJUvErT{0v_Hx{Z^- zbBfP=BV7+Y#b@Ciw2qjzup?WcZJQf4)^N~;pIy$z5(y|%$xA3;#=^} zWftFtw=Oa7zzdq^2!4~E4~*e{y%V@!?-cIW8^is2XK=sX1n$?Hxj4PPe!W@v?Avy| zIk;bM1@6yts&K#F8hrd68@~?s>kZ*U#W&!Yt8APmyeMzMry6GjAFBV1;XeNfymhU; z?v(E5DEREV7C(dMBJ<2Q)9aGC+B^#%>bi39s=Nr#d~emo=fEoc2J;5}X7djHR`Wi6 zU_PcVGM~|ZY@X|;uebFR^CCR+Q}Zf)Xx^aTW!`}g<$ZYXs}?_|Utm6?f5SX?NqYXh zu6dDunR%6dxp{;BZSxMiaHV-4-usUEn0}S{jDEFw?o!PE8uKE2D6i7LYw->GwdNi8 zRNkjY7C(m9uQQ*)Tk_mx>G`*`jzxHQw~bSUXMS$pqThYw;{DQwPj52szzbV^esO#k z-usw&51#qFc?55@&4=*J9rn5-`uEMp@cITe&V*hzpTf&~o5%3!$>y1FAt^Bg ztIc!p%xX4H9$tR0c>zA$#XNx58|D@GpO4r3KDhVo8hrYqjZ=ru?>q463l`siXZ~T{ zgtrvmg4dt3_%^((`E=mpzgm13-jR>tt;=nlX7Gdj`KSK>{rS>V|6PPHyU3oGR^hEH zZ2Shia;80(=)zCY`?Vh2pHmItcl_60cLewN1pd=?>~%AmmtU7Zrz*hP`d#+`KGyU3 z3j9fbz6$sF2K-(811kvR*d_|Bs#z7vTQ6UJ>3< ze<;Hb(7vw1moC}9tHb?sw+7rl?`y$d^Zdi-pJT$0)O`BzWi_86+&}jm!~dys{uI8w z)@25NRr$6CExru@B{B}cu(Gh59NLM^jf=~G5nAI{RDU`viRJ0(|OoI{hwgaL;EM{tK;R z1)kG5A6J0; ze9G|esopAZj}PH~e`&zy^#lK#`hO2TuOGPgjS)Pf{AaXZ{d(^|%JP|odwz=W-M#O@ zXFJ+{sllICU#i24df(cG|3LZd!M#3*@Jny9`}+v)`HA7)muB#(=3h{M^8Bp)nw@_F zxbLqj{3Wed4et4D!SB|2rVSr!J_ESta|ri*Ch#@%zASUS^>x24&u0Pt8`VPq_xK8Y z`;O(m3itRB-r8)n#rORtyjQZ{d2Yiqitoaw57_TENAUWlHvRyfebC}Z@ZlyFKY@FE z3@<1?fmc6i<7aP3=ehoF8$S>C_yFG9*y2m@$Q8k#);tdz{VNC$6EIhyzoAYAH$2mv5Q}K0?+JV^%KME@3nDe z@L6QzB=F!;n}7C3tYgW>$-}27S$qKRZE5i(cunh4fls%v_!`{fLwH8oCMxd-m?Aly0kX1_&iDQ#$_{#pmHe^^*WzSlh-g!9BhLFTc~`Yw+3Y_M9Pv zm)ElRCcLTs+=iFmVewtK$4Bt#8Wul*m)~Rg9Kl@iBb(c8gEo{R?dT?9J)? zPgk}0Jlx|0ctP%c$H(wt&f*ie$7gRz=Rc$PJiNcW%|Cz_R;%jh^58?IY zEWQc%_%^)$HjD4VGpj5A@cLUVegLnjzm4F9Wi5UJpI)W@L(f`#0-q?K*&n9!-&)4v z^YBRfJ%DEvUxK&1{^8!wYjE%9A>8j@O}O8`+Hl{GUAXU;2=3?S0o>2eBf8Fq6S$uz zWBBx4%0E0&KhNHp&VO0)d3aIxmjLefixPa^|KWbWsKGrxgtv5lXu`A0SiQC3^`-54 zyYSw6s(<)!DT^P#3-_r1(-l8~7xjK5hPU3V{KGvy`=fOJr*E?OJiO-lhnE#!f_r=g z-dfVeufZET+4Y9-;Sv_#gnN7&KFwHs7oLB!@(<4_egOCQ5j^uh`<~1MKGpp+hG*We z_yq3p+1t|jAHHVsd3aIv7QkEowfGX;<16s#D;8gaCwku$!pn)pH{l-NhSy)V_%1yE z4qM*{K0Do>^Yr1>Gt39@nS2N@pJnkQc;;;LF}!}J`2?Oh$9xL!uX6O__lYsQsQ4MY zp?N0ou{<+KuX|DR$->9-96WQb%`*=#$P4h9ybK?I$;PR`bLX2^;j_!kYw&{dP>0vQ zZt)?!e}Q=eKD)@g32&)RTJXZ97T=|7{ylhE9>MGKK74qIjX#D@e`7v@&mJ?6;kk#+ zXYj)P<_Wxak9qF)be%NzusY1cGy9tt;01XAuO4RcWq3<@sK94!n@<&~JBn|^#|?|`z-RIN=$n`i;oetA@J`X<$ME92%_s1ldU5uV%6yaX>R4`q0+YVj5LQ1h(93wv064PO70c@sW6-qyDTub!Z~ zg3pdM@4`D8rw8wAoCsb}d>`)pb^!N&JA!+^9mBofPT<~eXK?Sg3EcZ_=EtZ9_1i4m z`)wZH`H1De0PmH}1Nd+o^CEn&^Q>7Vdo@2lqaZhkG9=zzfgXbp`OAKCdal%c_SGys)0tPZ^$D-@FR1?qK!Y zfO{Wk!o3f);ob*2aPI?Mxc7lR-21=)?tNeg_jA_>?tLJ0XL=obyW9KL0(}qjGCZ@V zc^y8Lx8U_pTYL{**7!qs=2I3wg_kvc=BMfT7c_nW-ji488{7I;;q$%(pZ6vByf49f z>Q@c;yf4wcFTv-12|n*j@OfW?&-)U5-k0F>z6785CHTBA!To$Ph0psEeBPJf^S%V1 z_oZRF9_D=sKJQELd0&EiUn;@p{RBSmC-8YcfzSI1eBMvs^L_%K_Y?TMpTOt+1U~O4 z@OeLhdq0`L{ai7H`?(^9`?+EU_j5(|uJrnLHnYB+gZuu?!+rl2;J$wYcwgfe;l6)M zbnV|V-1lze2lqZugnJ(- z!MzVu;NAzSaPI>(xc7ku-1|Ti?tP#I_dd{udmk9Vb9Y!i$8??ZCve}VQ@HQb7+%!) zGq~^5gsy#>xjVgHzE87o-={ga@6$Zo_h|v{`!s<2J}tt1pO)ahPs{M}`o}JQ?oo&P zJ`Lf%PaAOGr%kx;(-z$KX&dhQv;+5j+J*Z*?ZL|{+I27;J#1uaNnmzxbM>v-1li2?)$U?_kG%i&$hKZci?_M z?ZSPZ_TauxBY18*8@~_teLA3PpAO-^Pe*Xyr(?M9(+S-7=@jn!G=}>=oxy#dCUD=U znS0XpP`=XgP=NbB4dA{{i*VnkCAja?GTirR1@8N_3io|lgZnKeV=yVzEAsb-=_n(@6!?7_vsk!`*Z^LeL92tK26}hPc!$X>%sSF7Vi7B z0{7?YRk%M_ufhGfdL8c1)kC;HS8u?5pEl|Kz7_8Kv<>%t+JXB%?ZSPZ_TauxBe?I= zKHT@|0Pg#A2yfhJbvuRoK8@kNPiJu7rwQEmY39CkJ@`J&!hN6S;J#1uaNnl|`1EIX zT>-p5F)zZWkC~U?{(Qa+_viCfxIdq-!TtGs9q!NPL%2VmZ@_)OH{rhD+i>6S9k}oJ zF5LHfAMX2o0Qdbqg!_IU!F|7v;j`N<{|UT*lX-TOuAiQsYvtg6AJ4;wI)@kFIqmBJ zp4n8-|KZ*rN_34=hI@agz`Z|I;ocu=aPJRwxc7$;?){+w_x{j?dw*!b3;Nux2lxIE z!M#89;octxaPJR8xc7$<-21~A?)_l`_x_N;8~VI2^NVy{RpmLlo|6~hz8_0)-;Wiz z@5d_K_hSw2`>_G{{n&*2er&;gKepk%AG>gWuGNG4bFB#O&$aq+f37ux-=^OO7{mSd zb0+Z2>9!xIaR2?B7+yHr;%D%j#!2A4Gb}#y%XB>q6`zHdTZK?=UpsMSUNm4ZqiaKL@^{{vB%s-&8(;=MPzN@%!-+d{_PZwF&%X z{kypszLoyHe**u{`u6>h?61=6@_t=c9{$1)EIxpL(f|D;{0;rPzY2USU2hG(yS}dy z!jIPPBsbyz)BM};qxAa~UHFOe2)@e4?79ZR(Ja^&Bi`OfLZ|nJo zzhmi@7RP6Qoz8z(-$0X$K?jo=SzoESdR?~8xygcmeU6JGT`17D=Pb>T~1V)KdMZLP}y{y+7N5&Q|&$ppT( z>Li9=t??81dsHXc2h#c9$MX;0R{b`B$6EIi{8{bC3j7tt*WkNo{1E<+C6L@}XeJuN6I{(jVU*zEr=y!Dj z_@=7Q5`2Hjf{u#jg`QsP&;UV15 zKO=ZOXYpfrbv*e0Y`+)be!V4lbv+xW4EO7; zz;gwQufvNQn1}Gj+U5;-M&5)EmA44Knfgp0?$a;Ny+V3lF8&@nr3zBK&Ce$uj&votLWcE!1b~@Xu%;HQ;aij`f)q zd?k4YzOwpK55B(oOdp=tI79eT>H}kV?s}`|Df}av`*FKuU>x!Sj50_^iP3M2vhSgyX zzVzShzF&ZEpn5C9|E0Pr!#}M2RN?Ds{&o248m9r@So@^~KU4M7f#ah-Ff@YU3RX7HTynfXmR{{y{l4*p^7uL68G{riz3d`n$d8NN)$_E8mn zy82ZezMaNt!2h6q*MfgV<8W-r(^iL)hDO$_o_~2@J&^3 zna9%k|A;&X|AzKy0lu;BQ$_gB>N92dP<^`!UrFmyhks1>sRsOR)kzC}mFFLRjprY} zx%O`#zO(m#__6AHWBA_Qf8Y=3dS~#}-)Z;3%x}~AUsL-c2R~4CQh;x*Iw`_`qW52A zc;+EHFIC{hN6f2q#W&zn{dWicKJE8Dygae%9K*L%zfIsfXq=4x@BDYA{CCd^@H4e8 z0o;Elss{J?I^5%1aGy^b?(^xxhsQS;zYiL~rw#Kl+~X&3kDtLkK7o6D?sw_BDxYDm zn}?52GcUsX&!4h*{v~+hZ{}6F$JgK<-++636YlXHxW{+l9^Z$1`~dFpW4Omp;2uAN z_m#HS~wUO&s`S%J6o-&J_;MH{CEufJekhZmkV58>0lnK$6AeOF(c z&kp=m)lV1xS-n5%!TSwcuLxc|*1QideBOKjZyawvgwKvNAHk;@XAEzI7C(VcHO>@X zS9}Z~D}Dy=9b@As@QkiEqq_4x&^grNv+$Wb2k+^1^YGybHckMaYMdf`C=cN+<*fnF z=ykjBvBv4ai$~aeB6#(1^FDlhnE4p~fyCZ#PTC>mYLfA z@b&U~%fh|ha&WJ=JlyN80QY(e;9hSL-GGz4hTG%SD26C1^EP?xmx`MUj3H&3_iTZ zJfUA|p3!;V*Cq2!^DMll_#C_;&%^8T0(^Y2jUT|LmzWpf9eD{p{*J|0;InU-SK-4e z&1>+w#;?Px@)o?IaoX^*;ydu1;s@})<~f8Hl>ZStqr8pbb>(3KA8Py=e4@{H68N&) zTRmrw176TL zZFu=M8>a&=Dn5cwm7hNSE*ob6?<;-+&)i}0Q+Q{Qc?=)kZa#z02IdL8s`+R1zTfwI zS@BtTRe8w4hZ-jjZ^?`BU#hQ`;D`C=AaJj@3f$|h3io=e!M)x>xYt_)?)BD$*L7Vj zxYt`7?)BD(d%ca|UTumsU zsb3A@UT-6~*V_#4^_JChL0@;Tw;a5o{!@c{oz&r8Cn4PHqyhIjX~MluT5zwEHhg%G z)k%l0ecFY4o%G>5EVAcC1NedZ+-(T=IvK&ePR4MrlL_4GB!+vP%-~)p3Eb->^Y`@q z+Uq0>_c|%Uy-q4{uahd=>!b_!I_bf^P9nJ1NgwWYGJt!X4B=iUBlz^^RwrZlP<1ka zd!5YSg_-3yr~mbRbf2DYm*DfyYvA+GYvBI(g+sW1KGKHYzL|YK-i2@Rh}ClhpTAFm z`+a!?_w(Td?)xQ%d%sQK{yBU0AL;t^=eK#de~u8qUsgXa!Totc1-{b`mWLYrOr1B{ zaF6f857X!DBlx;6>3JahTK&Db7#`{S4+;Dzowu|9Oy_6oQ*Hb_eDkyHx+?G&^zTP% z@Trp{Ai7z!28cw zeDHF5{#WX}QG#a_AHpwCewy&=)0#j00evrS0Pp=p^M@a-@5LqXnerJV>G_|k>n*{D zf41>M_`!NU)`XW8AHlz<@0$(a<-cnF@I|V(1m1el;)7Sx^S|Be2R?j3^M{W#eiNQi zd<6fp@-u*!pV$21XQ&@0@YZvh|EuZwzv1^s`0#IG>b4dMLqL|Iz&6&*}T&P5AKN79YV|K7V*d@iBa?b6o;2zohxUmY)Av zK7V-YUz$Js811hneE3hzAAXg8-v*vhd<_4S{+(R{FTbq$zn-3d$M3)Ja$@l{_|E#A zy$*ldLw0@$;U3>zz3O<`@Nek*z0m?5!;jWEHi386viS#@$i64F`2WphJiY|? z_!|8C`krkF_rDL@g!h-U*X_a|)43~x@1xK4Ch&*#Trr0G`7^&n`nm$0R|B}mm*C@N zZJssw{CeT@>xIv+7e2pU`22d|^XrBC{1bTY4XgkBk_+Sk?&Fl;^E|*idOsDyw^cvs z!mrmkCxX9O^)rG0Nqsnmuc-S={!QuYs;VyqaL;EA{1DP;g{>WBDlZ*8o+(O zPvEcUbz}HG`up7peD-Fm!~C1m*L%I@6Ts)|2(M;T&+w-DLkK@W`E0^l@3L_sxcAio zys@0cPvFmMzsGRzp9$Ra87!5~gU6TP9v{NJuSN@a4EKH;ES-K`_Zr;SH-!88HsQX$ zUAV7r1o!nFz7xi3HSAi;2uAKdwdM{ z^$oJ=`MZa3U&m+xpTNJY{Sw31`h`8WN#Mo2)qn7o^n5(N1o!wF`~sb0L->dE+@=Zl z{6uh%AHY3+0>4D>Ut;)m{yrBzTt(NrZ2EdVz6AI98vJs-&kf<;Z<}zRe+2jV0o>!K z@SFU4;n!(C!CP@%@;ZD=J+BMlXX^alg>R|zNd%wIAMW#?z;{(W#Bg8t1n%SH-19d-1F9hd!8e>$4}r7>UCqdKOfHL(s?-JWSf7mfY;#u z+&f&ryYL%Sx6uL~!~OS05_r8}`OmMIp1;>g0q%7b!2NTF5bpb;3HN;w!99Ke_xKp@ z=eGo&c|gxAR!U!&$Cuz9AHqGp3HSI2?(qY-#}DBiKZZY{-vOJ#x7X)cGx*zb*55KK zr?2;28(AIZ;p0o}`A7lYmk03NWfotAH*}w^z&jeJ3UA13a38-8kM+K_39o9L7Q85L z!+rb?{5{G~1kY)lK77`-JPhDI{t*7S&Oa0QSmR9LeR&M`@n`U<{=If~mGruIG)@lQ zkmun(egXbNoySV>s>Uh9i}DKG$FIT{>3LKL&uN?neD+Pte-rNGx8MVvL%Q&>#_7TP z@(AwZ_u>2L{y2hnG|m{_kWb(~{uF+np64X+s>aEznqK#!JPY^nbMS|BUkl)~OSRwO zV|fYQmzUw!Y;XOi2Ja}o4sXaqcvaqj@2q~91_)Pmfg8yC5Mf>oR)b|GP zWiPcpJcQq=eKdw&q0c)e@Q%)bQ~3YseMAhO>HR_ie@Oc)vs$`N-u#%&GYcPTo;mn` zm4^cSem#c_;7{pwi}3IH=R5GH^!%*?FI-^tQ-yo}YjDqh9q##W!1q-BG~u5A7TojS zhI{_I@cngP?!i6(5#00NhkO19=Hc_-`-1Q1@0ST?2LTk$b`e?8|(;HT;S zn_V-V=P$|g@WVIK`*HXe)c;HH2X$_&z*m^+JOkfhS$pmg!XHy#YQnQi*f?$YCLg!^ zau*&vXWs{i;CHEy4dBZjZR3pKdA;rgzS0LQK8CNU^GpI?q<$E@Bc1=Xl%Ep(w~DX8 zf35pe4SvAu`u+oa_2+G#P532R_cnYJeUG9GFKV6<{AtZ|0N+OWAHkO`+d59*n=5ZI z{O$T)aRQI^JSV$WI-lpNZu9VUv|a)HDb-sEeuVN_f&WX-jcf1^Y5pPnM*n;S{<_YM zZTK>4>-*L4*Occ7e!tfb)2)?V3e^~Fc^6-;% z{|(@Gsy<8bp7$Ae`(3s!HTafZ|L`YtUueRI`g;v+_be5D`hN-TeUq|<;8vG^ITL?eZ z>mPo<^3aBVTY2lk4^lsg;Crhd4&XcKzC428>-7)6Q1uzZFYrDO|E%gfyKXxFKhpg3 z@U4`$0G{2~_E8Cbtm>@-KjcR`H^Prm9zys({oDxOQS07@KdyD@!go`A1m8z_9>ABn z%H}zOch0f>JAn_huVeTl>e~tYxS-A6)rsP%2a_tN#Y;qTD> zv{C^8~(;_E!vVsV^n)Yqc)HyVChTUHh>FKTh|f3Vh)AP52R- zX9z#{Xv+(+{D10K6}Z2Dslh+yeFOfg-#6jU`?(SRMfLeE{54%y1mDWvH^C3_ z`zHJ(`2@bI`a=x=x%y-Re^Q>^D4qXB>d$$2Me7^Dk5}E6;OFT6Qh}eY_!@kL)2v^G z@auKXX~NIfzH7sWUjOj#`1>aKBZ?ouhdWuljo>G$|4-n@=>8JJchLGK@XM5+?8fQ* zZ=iL|!@sF@58yY;OYrS9P6hsx6|JAt;9b>i2>+Jy+=Q>G`%4>swfadHexBbq;osBi z4&a~B{73Mv&ZQIh&s8Te+~40N@XU|xd2IIG>HM#!=U{pGO{$*&{(|;V34XTsfB1%~ z^BVle%3BEkw$4RO_zrp>*M`5-@2Bvud;f>Oq4^Ks-&Onw{u%Xw3H%tXR}6np^_jr0 zS6yW{N$3Aoox}6+)i>6827ZC}ANZ%W?<(-kHBJq_nbtjo|JM5t{C@SxHhd?I--Tc0 z^$!n~&jEb-H>^HK@S@gt0zcO8zwo_OCkZ_JwDq^_rs@0-HP1Z!kKTXak14(c|D(JD zzf}982CwM4LipK!Zih!Yr?uh!KBx;nTzQD#Lp=u=z#rCr9KnC3{yBjko0Bp4&X)QVFdrH>SqEkDW5U?8s#B@KcjWbZl2EbGk(s2-|KxI9_rj%g0HWAT7e&- z{!@eBp?QYzNBuqv@4eZcGqmA<)qd>4AJV!<@Do-41NfQh8zcDITCWNGdfks=_!hda zCGg8Nezus-{~~!F{(|No!0%CgR^ao`q2Mc>ZRea2{!_o7!Z+7Cw&7>!zSf0*N&6y# zw^b(t`1+d92)^{zHqQzC0o7p)|Bk<(f`3;1Gy9%&p8uk8^6({>)cq7bQoWVn6|HXt z{;2XB3{3+avhrm4^ZRan;WV?)S|Je97nS{u{$T ztaCyF_veS%EzM?0H%R{%`fG8hkfDx4_R-9-44}U*CrRTz#nv z-%52G!9VWLyWmUhXZ1XS2d~)mPT>9=Acp^4b(O%suY6{=Oy_xBy>1@zo1^$rwKn?DnONMa&{ILmd9b$FZ zhTpH}a$WdNo`3j%v|a=F2D;u6e5AUa!2hjtR1DwG`wZN_-;&)boqzv+OCElW-X8_< zkEsqz@ONrmD)7~`E;YD6*A3zRT(=2-Q19>B@SNU{cj0@gZX>vV-)sQ)=ffkof8S;T z-$!|f;q{HJ4imV44=4M+bpD$<@8#iN&^iY2y6%r9_~zb!;7#2xYHTho;Uj&%+=Tx@`Dw%b z{Z|)WQl2CD(9ezVy7D%HKk;wdFBABw%4ZDULVY!XpRM}IejuIyisJL|r*$6;;A`o9 zLQiey-lPj^LkA{Y>Cj zC_aYYtobDHMT*aEozB14NdW(yKW~I@uls%lzPHw~2ER$`62edTrPWmv-c|o^!ynN5 z=q`M$?XQ@rp^A^;>*zj` zz>m>&Wj~nC=l$wqdH9?DWb+T;=V+V~d}ZBVD)4PJpBnsA>L(%mT(4*NA2iQ4JW<_t z;k#>pMetX>Z^LJP4uP+HoBB3HI&Z`$8VxR^JQYSE_zW z@D+b%_stN#pWbIR;Tvha+VIsh&o2CS^`8j7>Ravk!vKD?`q&7*nc^q#kLny7!#C1( zCGd)#4`jDX=ksRur9Av1?e_pa)%m0Ze@Xkg0{8wL>6|DQ^R~KPMT%`|r~^5Z+Lo#PC?(Crseq@_w>?I{&M@&*~u$kM;R@0MFiG z{k#N!QRlP@ytaeBM+f)s6^HQsm7ga3JY8=a?(dho@HhQO`G@B!Hva)U)cTI#4{IMy z;O%$VI5B*wciDO+@Y~b}vgLICzok0Q!#|+?9>DABVH`({E*hr>zf$=O;cILD zO?XS|*oHr?{B+@=<{82L^Wp*Azn?sU`}dP4@QV6U4F90_b9hm8p8Zfd{~yxl0(tn> z%4YyyQTw_CzfbF1fp4b!Q4M~v?wcX}le(@Zd^O$Q+wh~bU%GIAjuF9gIopo|cvaUs zf*-4OoWT9LL<|qS{^5UDon$|p&i@YHf8Ylw4*~q68ovZzN9$67uc|&!gP*DW9>UM| z{sVtR>)VF=_jSAQ`}KY#f*-5v8o>Xj{EXl;eO@!6e^UJizKWjnB=DuSRNbMQ8NU)4hwzNzvM!EaID8^C|B zJjC#)ehyzpeV_*asGld{tZxQ@yUGD(iP(6&``|5r)fuEv$#_+Dr)d~D^?bGZ>)A=9kd!%{z=IRdt z{2Qvn68s3&RR#V*)m07tUClFu|4RF)3BN(_6WehAUVRtt-y4bG`K8p);k#*`G5k#L z&+zS3SJ@rY`Fzd$1N;kqK7rq+bt%D5_j-n3DzCv$Q=bgseZ@E72de(t@Lja-UHJKW zzZ1b9_x=F?y5=*2|5xuvCh)&&oEZMr%XB`3pXdE#r*!`B)Ai=zeZN1#H_`pB1b^J~ z4?k6TtHBRa-a`1&=h*z4@Ei30q75JU`2@bL&P5UYJKB!}_*;Kv{c{9APkm+rU-`E- z&lvt`y>0?u^=cbGTS@1CpyzUV_&=4;0PcOS1pk!IITiSyl%E>>GVRk4euTzp!hfK8 zZo|*i`K=3oW@EiSg72XE8Ne@6os8fcXk8}obyepv{2HxS0xuV>k7ajG=fAA}mWRKp zyan(jL%XgL+&{0Zz;E^ExA0XpP6+?F-d{A~o2!1>@DsfMz?)jf2>wImX8^xf`)dRr z>EFRk;6pukjp2v+`4GOZt}FYobp8*O=iz=|4&Zxu|AGHP*HwX!bRVq26Wzx{`22Yz z{BGTU+whw1YhCz}@(5mjL(j+H6OBKD|4aL50^d>f5X1d*r38Mv`d;?q>HG((!#q5% zJ{-U|mzUuCYh5bvFZuHU_z%7Rz`w2dCj95RAGP5f??3R1z5d~wsc#S9+j{?p`*~>s z_kSlC!`oW-1YW4xIXSyaI{#PbzMO|gntuQv$V>3^jl(pt)cQ`~FY5ho48KbEg#`X5?f2}i>3lBnZtKr^_!re@0{BJp z5`1gjUn=kwHGU0#kH6o9zv20WpRK;#hQCAW)rJ4s>lwbU`oIYOd-d}Pd`~~Oz@Jq; zB=D#7y4g>p^Zce8t={tRhjqUT;Q!HjmEiaJ`yhB}3)?Rt{9M&x6aF9X&+v7%US0V6 zmFE$>_wdP!|GoSKKAf4y@V?>`c;hjP&wetUx9TJ2d3aqOz;ha>1kcDT@Y!!{{2F{J z58-2Z6P{@uw>S@Ncvaqo_v8`0FCV~%@)3M2pTMW`7@qs0%`<@)>Ws5Jt_tf9>t-$+lSbPMZ z>3b#v_})7Aj^O#M-KQq-%q`|Iy!fnr?w`Pas{2~@Q|aqnHPC$)zO&Bl0sKmxKTGg} z#;L#;=^RpnPyF)>_>p?P(S&cO@!Rn4>wMLPe@f@82!5@fC*i-;Ie!FS?-9%A1YVNI z@XzX;pTLilXZK9!f4REy55Gn84B!X)^8xrkd8ojDrg3WU59oXq!vCQ2a1*}N`|X_H zhHvBNANWN1jNtcs{^9=bL`Luxexm%tPf#9W_|vMZ1U}VyFZ=0q{$qcC1b;;yz<1I0 zmguU73OrUGYIJ`-4ENu`Xu?lb{j}k)>s;N1e_ZPu!4Flx9l%Rpw7xomU!vzN6Zokb zCx$1UfB1>&!`aWI^WV`pd3dbnLIM0h<+%i3@@-b175MkmuWIm>R&J1d_Nd~emy0KS~|*9iV=_0I`>rERQl#PGY-2NHP2pAXd1`F~RTF%J*6 zwd)PwGrj*R!3X|)0G{94o{QGtr)V8R_%Z%`9{x3X8@|#1tUq+&U)6qz;5%r&2Jj_b zw0w@>7i*pq_|Gm@{^9v+EN=4{^Gpm6$I3r^_PBZW z|I+z?N&Ptw|DNhCfG_`o)msVvVbx&;zM=MY4Stu#58-R-JkW%fw2#{G-~0Io{*v+& z!N0G19>BNu{saGnd;Iu;Lm6uh48D@H=6LLy#C=utydR*jqYm^{0)sWfd6JC^&fambv1!6cdYskJdh{w zNcZvV-s$}RRGx=#t3D9G&-3#qe1F~VD)1B3mum3e=ygN*OnGR+yL#O=dvc=sXa@clZ7S|A6inZTLX@r3-)C%a(@--q$(~;IZmq1b?^g7ZZ4NwDt2C zKGyv-fqzQ%oZUB_|C`h|^6;U)_Z7f@=I2lNOX?>T_hR_fgh&%WcN$wKUSXe@ZTxV0sJc6 z7fSFowC^hLgO#@$JoiDJ|KVlz&nA4Cb1gq@_)e-@@x3{tL~s2H#ragz(L@E=~9%<*f}b>w3HJt-Sxkf9d@n{HHt7b;-lemk02#={!?{e^JjZEAS(AKdr$pR(uGb zDGyC}W+kh`HayY&t_wfWpFhB_)BFeUJ=FI`@Q(V}1paZ=PYgfA&!6y~zQ>zAFrEKH zbzjcIM~V;NHT@n}30}C*@>7AAk*RVXq@YnR*CV{V@ z`%CuVbp9{UKF!1bruq!vJFBmj;J@?tzwkT#{TKWOy>1BKOZjZVJNoyJZFo!ju?tW9 z{V)7Ce*cC4$m<`z#INoAFo8!}uNWSvPbToXo}Xk7N$3A6_2E3csOP-_e5sY~oKS+V zw62~%!yokg!`IYxh48NSMH7Cf=Glgi^**QzpXv7~B6xlStJ?wmH1&rO{5j2k0^eNM z8^c5O&jkLoKmR#2o&Q(mdH7W4mH^)Uy7l=IJoNq#f0y=M4Sv4*ObB0LIa|jj{O0%Q z^Dp>^bk6L;{r4y$_!=L!dLF<}_xmq=4~;*8AFh2G!%y?`4}1&NTQ*GR-+zxZ4?kby z1n_10s(<+JRG$_2OMd=@x71fd_z%Bk`Dw!2s;f5q2mbsA?*HyAf=4>n4d4US)d+sT zHg>%e_$I287=Dq?2?_j4od>dqrSpG;);AB|SA9N!pQ-o~{AbET1-{g`Z2mR)Wf~`h zU#vdRgkPlfYQsMC2>xO3|L~sX6T?5IzLdaA>U)L5)A>L0 zA69Qg_;UIlNEv>l=2L~Qt8-KxeuwU}4fxu>wsThtezx-2fnTI^au2?T-hcJszfyjN z@Lj)R*E@#qt9qWouTvkG!8cVO%N&u;=XUD1Ie7Lkd))&3H0`e<{0FMTGW=1U6YB8S zMmBy3-%#t)hW}Fa-+}L_`S;-U2i92p{h~hn_nOZDevIm51V2RMOyDaiKU4TuRSz@x zks2rSxpe*yQ$1(lTPi$w#I3~k5@lz z!B3TU;9t`?J@|UMe?{;cRp$fvH#N=({vGYdG5i9p*A(8;8*DVW)Xg~#wo)$EZF^`vVhm%w`iOY{*~|BI1TvCx~>-dR*lnvucm#` zg+HhBMg$*doB{mjTHhi3-KvK%{0@yXg`e#AefVke1b(N+$$mb)j-%ymf92r&s{a(= zcWIm=yyWLG_^P_^SKvR_I5qg~o7wrc4qxtYtt0$CjnjhfP_pZ4FW_DHuQW~szgO$k zU%-d(M>NhD9_w5&S-@lX6B;Lh|4#SQ%u(rebkD(`);I-tQTL-@0WZN{)HoIRPI}&3 zUBK(`mo-iUzLoCd%>}#-&pc@N!7luE^_kuR-iNd;(ulc`C$s*MExprbb4LBqx@vy zBfZZG;Qwe?zbe8H&^fsb|A6LMg@0eKTZ6x%e$s@$e4FL71;0h(^x#Xp-QpwoPyE~n ze_$!=&tv!^-S?;P59zvQ@WcJ{DR^G@+3Ydt{O_o7^6+hR-zmWF)%%??{C)ae#|r!o z&olhvdfgDdlU}z0|E%i21>ZyCbl^W#zv{wo()-o{d@I%GZ~-5~YkJ)&{6K$hwty$_ zy2i;Kn_ibqwO+XeyZ}E;;}qc!={{Rpz$@@$G)@iPRNtsC;0^f68m9$+)jwxkz`O9X zG)@HHRrlHc0zQO)RpX4|&#PZe7VsE;vBpW@-_`qq%yH>;bkD)Rt#JzQhqb?g1-t~0 zG)@Knq}II(KSuqb4!=p`G~jP2KTY^RpHH>v8m9~2SL@Y-Z>Ku%!-pDY2!GAb5Ad1t z7Q;WOelmk+OV)35$EVk;rgK*wzVs&6&r9%;`b-(Vw_djn|H(ZzP6)r{Wb-C`q&&3Y zU)SG%?7&BUKZ4({ar*FW)b|GPzv}a*5&SWYGl4hM_oncQ&JQ#A;~FP(LOTEV`1@k` zZO2s^FVy?f0X#Fd^ZW?Ds_K6XUq$nr!r!8CX7J~vAE^YaG$ z8TGLud`*p0hA-0ny#mkfZ|BAue0_}*!bcjX0bf_^-hywcaXRq-Q~h`06OA9i-=}c~ z@ZHoWhwx3bUSs(78fOac4J{8b{0U#LW_rDzmgg4m0=%NvEyDNJJ}SZ2*1A;SAJaHB z_;Z?19sULFqXv9ejnjf(t^Lx5m(I1%AG`3X#);r{zkk7thuSzp_#PT(4DaZ^Jb~Bs zxke2Cw8lx`e^p&&PE4=kQGT9;@1=1H@NKm&0sKro&o9CE);JaTHrg*$_+tcAxFRo4SAX;RkD+A$+7hJc8e#=f*MoFr9y9@I|V_ z+)3&6TBP%29^TeEmf*4SQ-)umx~jrIuj{JA@6zjr@Rzjjn($*ZP8V z_|-bk4B)r>_XFXdR9#Ksujw2(gP)*zW=>A$IrE}Dx5>gATCY6(M2!=`+v-2X1-uMD zMdMWAyX(4Y@Yi*p4dGwZI8FFNdVbP^SM>d^4*Wcg(}SP$|LD5=@b~Na|Nl$sGnFhA zQ_1LTPRcsLs5IqdozS9_MP*csQcKaOm?t zbi(iWd0wC2<9J?=&>~ZFMp8yq5NcW#_}V$Pn!gMCO?&& zh5W(|qJ8@^;OS$N^*w`}to->;M|IByydeKNIVJfISx?LIz2iE{zd=r2emCQ#A>WDp zc}IR3^GsKMB&Lh(#Iv+|D8O4Mt&{xUQYf4atiXt zIgb?OyRiSM%C~)GG|$)MtF|I<$bZ7mZOOm)f#~&Z`QMpuyYeA9efgiaiTdq8zS2?A zerzPahMcARR@R-=XOiuFR=mE;uOlZX{|)V*m*2$vU$m1`maokGS&_eox-{hHvmQ0& zFQhJA`8DzPBIMVxF3jbdaIRU%SErp*pG~&gZM?6H{ATjA@`KpV=jAKNDavci1Eqjh zX6G1LU;j_mb0*-$8%q$^TByK)yP4AIgto{u#@kAZIGSjs7;1e};Bm z$e$%A)k@ZJ1>+(u|I?Gv_|3{!`E7JA&da~d&n?J5$@#P-e?B=C`N8r0FCXwdx4L{? za+>lNUl+{}EqR6WMMwTJa(eRjF&_K!uQ1OK<*y`XEML%`6ZvEGpP77Xau)K#X`iJ$ zeQb1YN`Ed{-|flC${(RW=j5+q9w^A)K~72jZ2bLd`9-u(RbC;dE2F>6T5Cq@NMF7;IYaq+%&Q~$sq9xL@_osf$S;s#y z-ZS#=vwr2|b#e;w3*&RByzrB#|CHq)C#Nd^JM%_OUL~g?KbD-9{1vowTYh7_Pm_Ov zoWA_OS48vGK>l*-K9YCHnaDR_y_*JnF8>BOOZmaf8>thLb&NeDzkr;a{At=bAMm1l zKu%eHE&Zet@S6N8avJiz*_Sp0-j?4$PFMaJ&NaP&59GfkXC!}`{p2{{Q~BNG%;gs_ z|11KYIx$(t`^m}3|HV9?4R~Ju2suUhJGe(G1-v3(l2em!&G@PZyeWUqZPEJPman>u z##blcJ^32s4CJ-=bCZCNH{gAFgPfuK9qji;0iVc^Bxfccv%bs& zzLbBOob(ryb-a}QNk;x+`gu;05`9I4f&fdd)K`*q zd<8if`9|CaW&@s=Z%$58KIZRolmcFn7s;u~XUsqKfH&nkk<*rcC*J=AyeEGbIRklx zd36}@v3y^0rt&3!uVWVQh5R6LQeREhvCZF~Ne4VDKb)Mr{KNF;LcmM%Pm@!TUqd@r z174SZo}8w<$lqIQ1-v8gkkga*X`g<;hw`(@8OulfJ(fwpXYvclS;&v4otFVmcart} zF*#ZJl)qDv3wS~PGjdAu?=l~j174NiNKRcoWq;TRcuRg8IUV_ocJ2neFJD2I% zqjT;k;1l_roSA&p3!z8-~;)g zFLNGT1Uz+mvW~}-laY`3cQdmA&&y9CrzkJKGCYYcSK`kl5r59Kp*#_}-+_6)8}Pn-b#jLCCFjafz$fyx$(hM-jla(m@TGix za?)Q**71jYE|Up(PQDR21^Myp6N&*Z%U?}SRsQ_Fqj{_r@P>SAa$52i4B7t#yer?9 zoW4BAesvJ=k$fj|Ci0i^Iqx*!bNR01EajVVAD;SpvW~H5 zEI*k0!%Dzw@&n0f$WNjFGy~q2A3{!7zCHIOy?_toN0Kv=f0p+(4)|1l3^{Z8&fJSG z*8?%5fC4Yz9vI5+B4;dL?H|$S z)D!uexo@Az?qhpUBrHXC`kkAI<~5l&?=t`s`#K_n{wV z0-lp^L{35evH0_^fS2X3CZ{UjmGM{$ctgH5IW76uXrFe#yYg+x>B|r0UVRYok$fj| zCh{#g=S~AYm+wl>QhovBEA`D}9b?bP-$PDLeiG-De87wH_mNYUugknq33yF@AUO^B zEqor=40v092svH(j(lF(3-~~OBsn8_iGAic;8Xdr-c$cGV&WZ z4`u_Nmw$zvqWlG{7o~t#}X|!*t%demxHUi#~uTD-!elPP+H{gBw+T;x7n{Y2N3iw36 zJ~=b_Z|H~ffG_16k(2Hv>$ns9i2nkUz>iRt$JqzBM^j`JM6ioCDsFZ%a-~ z{t?DSJK$aUPUQ6E+pu391biglm7IzE7S4myfY0UcA!jK+g8gdh+sQh{o{_(goSgg! z)~|fPi}C}>Da+gOy+Och@A+)Zd)0F>o<>-E+74VMyc5-_1R5r@#2Ye{Mi=46iGx5G9;4}HXhk>=7Y%u8bLuEx`A+U_ zzOnh(439r#{!U%m!8L-{)V+>v}|?%OBwb;+5@cj4#G<=b-ZSjsmfCw)P(j+Zk| zGxBdRFXiN$kyDWG#m_CuPoaO7^Jbzohf_~MN??_Hx zemm!#LBL1yUCEiqM|(v5Z5r^od{1(g^4BqrQWqxc_(t}_8TtO?FhoTB`n%+DqHLp)DKehfJ^ z`7bzk*X3`eA2#KmC8sUFnDO3`?@7Pv$xk3>AYYIEGn9Xu`DZNuA~{p}4vepvd|&$2 zLjGlPQvGBd_vPL%9q_FDtK{V66ZRVg`S*EWCHd*(ROCNn-&>VmPEK9kC8sI>^z);2 zuqCf@{_V)WO-@h#cG|fwuhGs!`9B>yn;Nm+ivGJ4Lc{Ac9UbV{~3<$eX;cX29F> z)ye6~&*k5<>jiuuUz?nf{Pt_2_cadqRK7krbNTmpo<+b@KS4sI_fo(s@~z3K$=BX4YM*+*oAPbRY0Gb8e0Aji9bv%G`M@GKN_0eQTOZm~9J5qyW9b?bPA0{U! zPv04}b3Wij`Qzl2+`{V{}i|3-~~uA!j7d zQ?GHrr}Fj4naf+uV~c>New?i1#^hw=*K;1v20Sm{f}Em!K|7ZMUXd5csmV9wzN;Sa zrhG?o+VX4T`<#IH7}5X8~WxYviOZN!Ic1m81DE9q_FD zqvYh}pNjWC0WZmqBBvrhi}kA-@Vfjn+ zsrw}0Gx;~kS;$YKotN?l*dL~UlC1BAlNydWQtQ<9%eKP=0C7}rsLB{_9@ zei-e?8Ub&~uOp`;e<}NcZovEUTgVy8d%Ukvz$fx4IWzew@%|^^OZi{ONne_*<3`zN zoMr-^lmCsJg8XOHr5NzC{9oi$<$tC>*8<*C68f-~R-B zBwvS|iF|G5jcLH=@(syZ%Ky#!mAWih$JjISJUKb}DUA1gz>D&&$SKQDW__;&ye8j{ zoQC`&#ziyWZTZ{D>B^7c9NG)`KwcqdBtMyb<~ZO}`FqKk%U5nk>%}7AsmqgfJcyi( zJbg_xk7Wa%mmfw>QGPn}Mk(MGd6S%){2bb+9`L68cyikElQ>^=0^XCKOwK_58}^68 zfRE*0BWEh#h<)8G;0t+=oYWP`I_|^$Ogi9M`S;1m%U?+UDFnPEzm%McyvI1L2D~o+ zIXO-FUEH^{0^X62$?3@_?0fqGAIfhdXDr`{^UfsTGx^=*Eabo8`?|}3r-#YlccuW4=6?~sZelF`pH{gBwn&b@S_t4Ix zfKTLEa%S>vIG@e~zLdX$ob*qVb-b2+OD5ns`D@52$Tw#nRSbAp{(5q%^1snOwSYI| zC30HwHtS$J;9dDHNAf+%naGQb(`mrx@&m|O%IAEqBXwo6jS+hyd&W0tCRH|kdu|ag!wQR@PhnOa!T?~($3|8SLH);>hd46?lc14lK+gH zj(j7|-Q9rq*O4=m@4~)r9`L1nOiude$vU1#|H%YAC%>7Tg8VYh z-Nk^H|DQB-6 zt0;d3^K&WS75Q_?smae|{i+ANDNmErmj9LgNhjbv`5NR5v#d}lMZ-Ro+T$Q{~+^xA>bwX2IN%aH?R&?174Ts$Z5*o$o{z%@Q!?A za(eRD(+~RrAIkIOjODN4^OQ-zXLfQH^8J~|mH|)yB3a)8Ia&F>%&WP87v$TJQymYhJtIGeoSeMGypa!hQC=sfEWew5 zLM7le`Jv=AnRdk+&EZ*?{Nm^$-hZXMZP!Vy&CYk zyhlz`zS8fb&re$c@5sMHPES6dUj2X%<$ZF-^8K>WxpETlnfwRjEad-XTr2~gzA;(f z0XbRuYM+SK_gugW@=M7n$=j^&<$zb^Lvrf!m3|tvPb1(h`OnDd$bTE}e*)f@kH{Iy zGb^$G3HU^Q9XT`kn)gNTYaZ~Wd`wPyoUG$c+$UrLo|E59PC>pe=cZ!7%kl|1Rr#)* zFKPjA$bUypOTHgD?SOaXQ*!$9zj7}z2>3{TH#rme;f&L1z~}NAIZOFg%+IM`CF>Y_ zMt&bTIr%2+!}9?z%ID;ibED|{#!dOB`5s_fz96S7pRk_x z0zQyGPR>aFX4+>Q@Tq)B&RqUp#@8a?shg5@e1@Eid@s%yS^4|%ygc=1?tkPPFh7?9 zUXeeSoSOVJ>QWDQQ=TTLEx&-APQZKeHOLvrKgm7GFyLc(hMcLq%)P`c;0yUWbwX2IN%atGy~(cd7xe%X8#3EvUTOcPZ-<)%9F5m_EHsqA#?_!=W2fQjT zl2e!8!+h9~Z@_%pl5a;&NB%VTwB3OB_Ii(cviu_D+YVyk%@AZH;vs@oIUvkyuL5rg>`BuACfbcA4C6~ z$S)^elCBM{Zjh2Wc%Dkf6K_%ctLb-Ey(ZU^+ow3JWo}A zLHxOo{A}jomi)S9wBKmU*Z4sRXbWc#1RePBj@CpkI!*7TFS{1eP$MfpACl;t}x|5W6!<2h^chsbHj4`W_x%HKjx zTmC3HUHQ-0*Y)IW+J7K_oScz-58l^UehlMoDu0HYx%_lqzmPvf|4;ocS;tjo(Y-`Q zek<=QD_@WPoR_ajPEmdY^Il2*YsO1O{$g@!@}I5}jqAGn2>z}@Q=TKIE#IONjnj^N z$=^Te$zMs%K)wrqM`$QN=vPtxSiTiGQ~6WOZ!`H`%<~KRw&bMlNY?Rq#!))pS@~PZ z$;&V2{-+S|lKgGtROI)v->3$>E-#bQlwZL-(+YS;z6&`$`DyI8`vD)y-$~9`{teoB z67ZRPFLD<0W8?imz|+4^*7pE%vhpADzH$LC$UjU@Nqz!h+Bs=Pr?U7p=08mEnb zx8zN7I`aH^(KzY`yf1H&Gn8L^Wwic|0zQ$q$(hM-x-5F0dBB(Q4ms&RBaFe<{|@fKTNMa^~{SJsgdTMZi;cChNE)CnJ9|?<*Vd zygYRepYO>3#6F=E@QOT5PEG#ILs9>!2fQiIkkghQP5X2L-jlCO&Op8<^ZYR2WBGdI zOy#-#qk7E(zL39+oYWtab$t0cQU6H?JS*RroV@(zfS2U2B&Q-@|9R0mSPghx zz6Ci=`EmSR$5y~Q@~z3~$shV})Xx2Y59LL2#_|mr7n6X`oS^Jhiv+z5C}z6UuS`A3RTPB-9v`QGFV z<;7j1oKe6h^7oN5lkfI|C}$qMzf3!40-lo}Oin?5KI?li;AQzo$*Ics z=6%%y-jE+oPD}ohKS%wi9q_LFD02Gp8qYHb_(=XKawhVRk~0nXT>cqymh#maQQcE3 zl68zdBR_$hoP1UGb@_l7;`Pa&rve~kIC8Su9JG;+G~9T{J}fDhzf zCubzzi2gGU_*DK)a^~`9d0&fwr~Z_zWVt-lhCQczTws?_bEt%J1WIlbpOsPC@|Fi~--lVs zpCl)JPqHpAemLq68Tn4MXHNc{zeMN6g8WB3e^LJY3)z?2$*I~8iC$lmUw%%sjyL4% zlGBo3%I8pR`AWM-IbHcn$?40t;`c%J+;vPn4g<^Yr8! z(tk$s2l)JbEWe1Hx%{yB^9cEu`P?~kZ?ZiP;OY#HA>B-+hef#q7b8k76A4JYr{#O3IhKYQo z?W4NSjEWezbs{EMv`w0PW$gd@*C4cR+(SD;H z@UHx3a{BTM*hdWlK9b)-&P4tQ=b&l8=kh<1vy`91I+A)YS;yEj@(0Pu$(Quoe87wH zN60D5zsmlk67ZV*333|p)tIlE0dLEnC8uj=AKnZ2K)%Yo(LQq|Ka>5^IN($H^U0aZ zk7Qn51UxlQ)^S~OGVJP z-sl9pCx0C|1NnEU*D&B?`S#>Y<-ezWW&vNw-%d{Ip=2E&ASWI0tbBKJ^75OQp9=vm z$@e0sB0rsZwHolc{JrEf<<&1n`>vLJdUoU;`TNP~$$RVr`|>e9lpjpaSiWRGHj%&J z-_iMQCO?Fnh5R`$iC({y-^4y4{nuoDk02*2KZkbC$uDKzF3682rz9^kF3R#3@tjrp zapctH7qO3O$S=WL@)OAE$ln|9e*!*~-^BMNM)J=xA5P>a@pEVL7U!wCe0SPsDgP=t z>4%f`T5^ud$ZzL4bMiCEDacpQABysu*}s+LXOmNv&;A{ams-FZ@^6#Vl6NXmPCMXT zd7qrVd{g?>AmAhUkI0$G7w?OnXBzOi{Bm-Z@+RlC)ZdbIj6Ea2nw*?`ky$78|Nk!^ z@S^-Wa?0`+^Ij$3HTkc}X~_HJGy~q2-$qVXp5x!S?ge}xzmuGiyuE7FKI4E-2lVHDz=!f}$QjEU$42jK z67ZRPTXGii$xcy!UIsk{qQ|2V$Smmfn;RlW=NpEdb)oGTmh6Ub@FOUxT>`QXNAymaMXCZ{hSFwYO< z)9s_2k^FRWCi3T=8Lc~0d3OD1+|A`@le3g>v0aptdNf(bdv1*GwQ}+s&x!5_^74b( zw-@E-^K;AcHQpNi+=_g`dA2710XYr%sqEXE@)75bw){urbmcd4-`flLKz;=|Bl%8z zzBUf{RDLBnbNTJG^CIA>emO0OV)99K1WCgJS)GA zoV@%N-d7>uCHWoXROCCw_W%K}%ctZt<$vb$npVI&^1I0C$&X{6=?8o${}VZ5`3D&n zlYr0U_mH!Y@5K7M40!tSWPR@=Co8|5`6n0fg8V^pO7h2k63wgSfLG;zC8sXGBfifG zcuW3ways%Y*e`Vh-j^@P8Ondh{p2X%6ZvE0%;aZs-k%42DgPHa=_itP{1y9D%V$tla9Vm++{ye40ZoQC}U z%s`Q)0J;d-FpEa$X`s(NWK^Q?Qy`T^7Y7>%P-`9dlB%|lgT>1l$?yb#_us@ z<&Ufs{XR%hzCX`jlK+G6%~s@jer`?v2j+*m{Bqt`Q@$lRZTTg9FRl~tp8QSZ4CJ?R zo*K&U=Q+pnoyeKWpJF`DRyr` zKu$$|5Bu$^d|SRpQI~(1oTmHB=9W9s2TbkTaD3f^j{Pue?h1oD=!EU<_sNI?YZ_Do_rz`&@zyH+>_(1*_az^s=S!c%qpUNL5XD+{h_FM!!^-Qvk zkCT&;zn0%`$_6|yf0mr0d}r42Qot+nRUe4<)iwE%{2pRG;7$1p$Z5;>V?OBwyeH3+ zGmziH?+XkAK9;|noT>aJ8%F!FS-=@D~yej`VIdysCg6MrU0^X80 z$?3?;+~;=#-j{!loS}Tc_culXpUA&R&P?9pbI*Cem-17{N&h!l$Lv~By)psM$xkPz zAfIsVCU;nDzDfFj|DQ_zJ>Kuh&!XLO@-Fj6Uj82Tbw&C4`_idepZqe>?5dk#EZDd-A{Vz6SEG z881WmAGr@7%l}HwRK5%6+?o8f+^;U=|0E~%oMihSO8-yGpW)n;l|MyJUVb_4T#%o@ z{8N%Y=fP;dSCM~)=c&rqp}uwbYUDKKCEB4Se*^XE$X`fKPrlNX(YdTIe`{Pv`FiAx zPS4921Chx}kI{E(OwB)CKntKfSjQvv$4#OoI=fS%C5ptUHA>Su&$usq+KXl|z zlGBsl#rd%x@S!|4kM?O}`5x>yCIO$x|Bsx7{BfRV8Sr#ES>H9u$;!85T<7FP+NU6Y z5jiFK1I*9mfLG-&Bd0F^Ap5jNz+3Xo$mz&;=kva9!29yokTaC8wQ;n5jqL1mCh{%G znaN+t>*w;d*(WdMuO}z{yks5s;XIWIctQShp1&CIs(iI`qjkR)@Rs~+_L=Q~_vHt~ z`;&lAdFt0mhl_MH4xw0}O}W%+8yN9$lE;0^iu{N3QD{I~Jn36wv# z8?}E=egWr;k$ly4qt}n+uc7W!`L^_{x%@9%M*Vyt|69D@UOm~K&$51HaegVu-@yK%BHxvqn!L#St;-v%7ftzl$Z5;3zb~q9NB#xgS5N*vat8AAcwa;L zLGMU1>N}JFmHBodKZKmr8p(RSk$#?*-^l$#R(>QodHKKixdr(LnU_lP zW5}te;P0O00$z}xM@~t88u!~}d6V-+UA`9cQbYb?yd!^t zd8R8bbMG{i|1h2p<(J|!`5xrV<;U^-={1w>`4Z;&jQmo@bwU1p*1@8@$hu#Ze~fjo zCO?_}(~@6F|7^>z;d%P<8#p%&t%WBK8<=Ujd;&%coG z#r#&wB-?F6-dA0|CGFXiU%)tR%TK5ObmaT6&+o|x}w1kL6d9GnIcSzHbls zLVg1|skM^ra~SQJ4tQ4nTXOR9XPIXT@?EZs=G%(ANqwvGQ`rwR}*s(d5rRg=GmanX>!o}8BaqsK+#qAlNv&x^bA9mwg+_u$+yke|!EI+B;knaB?y zXDYA6zdtMAgPf)O5OPxMBWyO(Nca0^G5o` z$@+eeoUHua%u6}>DXiB8`6c9(cj0|i4xyehA;E-&SOCMTUu*722`Ycle8 z(;ss3IXMOSm*}@e`9-YDW%;AzROM@NpH`D!N;@~?Pm$A-pTqOC<=2tZm9PBQXrI}a zpGrFqJx<->U2 zDBp~nvb@T;sK}r5$!LA7$qVE(iwWx?{_NSm7KYJ%HQ)@$j97Qq}EH;aZhqG@)4hFXXW2x{mRStC#NXyaNk~%pUL^6 zBL5IMHTm}OeTe+i^yjAhaB|x6P2>HKe1~`Krzn+|# zd`y3y%TMHamh#__lYVKkUb`{gGxCqn{yF&_R*!e_u4dy7Ir1)0ZDXI}8Fok}t@a$g9+M8t}RN338V5$C!Uo8z$>` z67yt6{xmr``PR(;dHI#hdqw%m4@dj7viv;u4;A^HaUJEWlhcqN72lJ{FK3-?%hw^N zD^G12eNV3!@PYiL$n9u8TrlZ z53>Q!%ilmwQGPW2xfJk<{7vN4w5_~S@~_$Jtseb{DS-%a!T@TdH%BeAns49@|(%2 z%YV%L+>oEbdeM^KNlr(82K)K0{Bv;~Tl8dm3~FCj$h&VGxEw7QNPN`pHEIf{x8N+G2mtSdgN5)`!fI3 zYs$YsPFr5*_ftCZ##K>HPySVM2J$8CGnCKbzZ);_k~5WmgLPpR@YE*Bdi{a*Hy!Z2 z{CdW3A>bAHcX*y^z?qS4{WBHu@?Ihqc`L}83h5Q2c70ZC9H%+$l z_sGf0uVCKD$)9FDD#(9KPDy?bbu7!DT{6_v>P$%F6`SrBtP<{aWgsJ>S>N}JFo&LO#Klks^xg+(eWV_wRIVdfE zhyJhg3f-&K$o@REETaw_tj<9l`a>_5@>0qXJ%$Z5(`k4F8i74VLHV{&@( zuQJc{13r|$hMci{NjpyhK9g@l&O&}G_oB;yr(d0{?{?&5<+ss)a`FwCuL|jaF29BT-;nRgd95Yijhv2rclu9P{!yN@FMl^VL;2I}uSW7Un1?6w zDmgRxt?V=B@?QM;i2ML@(yvL@an8L&M*elyshs>EatiWO*gq5lUY389oT_|A|EUGM zA^!w9EqRCgsCK}+@)kLL`H+3=AmAhUm&uvPzsvJX13s63jhvD$=$SKQTK~5#$HTlKlG~|C~oHhgAmS09rSAHVnu_s@3lW3kF$gd`6 zB(E{v$MQArV!tQ9o}9V-O2*?tek1$I)E3D){)U{4`~miF*?{NecaT$*Z^}GV3V206 zBc~?cin`b3hcT}<x!m zPdVUKd4-(1{4$=W5%89LUvfI~=X@+0U)_NBH9A5P9pz8&+}Jm5=t zlbrOH$vSSpe4Yt-PW~x!3i5xmk17VdEI)>vs{AhI!&<-_^3RgflD~|4wFBOjpGZz$ zzD~Su27Dy{5;+t3kk5Cf0iVk|s~7Nr{9X) z&%BNOk9=c%EWe+esr*UqXJ+!_S&tU-zmb#LCRxWdz7{=CI^bFPlAOH!_wn~s174A@ z$^A?<;7$3jyvd{{ngRAG9z#E{koj| z_2d-fujPFe$#>`dHssrp(~@t=eA|{^vkLo3`3~gt<=Kk~5KS$$n-kZ}9i)=JL0Zvy^8u(YQ{%Az8;IpPOgoWpZ-zAF+<)Y?K~7hGC+EAKe8k_$9LV=1XC&W<`Ft$D zfp(k9_aSF4za{>jhJ0_{SE`t-<9o@;$akRsWaTr)S6;q9IYs$vm{&{k`6T*YL`7aB zrzXFjdxpCFC#)|``GMrL<+rgP?#MgLt3COL$Qj5tX8jtD4b5?#hIeGbO8Se%8lZzLZb8|6&o=aDm$Z^Jx1mv>pGmhub9NpG91SL#dbbL?wJ&y$mX zpPYjHBG##*yu`m>Q z136`RYMbcw6?u9^dBk@yF3H=AIKTWpJx6U z%YVswHv%6Y8Tl!^udMtr_L+J4L*x|YzvuZ&@)@6BSLFX7 zrzU@r{Xkt_W*^m*KS54gz7^+%jy!WvG%xk!Pm?o{U&%T?l%K%7J(i~y(K&r8-;sHB zCSU7>XkA{&S0N|$=42gjVjfG|dCshSHFEOuJ$asj{N=PyN&W(ID)I{JU{!t?^FUp` z4mnNv3ZB0uuTl4o{3Yb{gn)z7aVK`M-HzOZm~f zuk;Sd`sT^W%15lfIr+}?^MZVHa!T@(__<~Ig?LrI6*+bJoO47&{uuK>Oa2COI`R?! zjz(Ah4cfUc-;SK2{7CktBl((FMdNECe+xM?`HXdHE}yV3UCQ51PP&w=V`sl;oyy4P zyx*LBS8@vS3+T5+`DOIavb;i0RbJ&BRFfAuk2K_ak<*fo^U?ci%X3dh-j(l1PG6qd zIePs-KA_!3@&n14$gib+rt$&j*}43qxE{z-Dm@(RDVQjvGrZ`9<+kkgPK#Qe~d=V<@7yhTn|{!-Sdo_x(}G`X7u`kyv(>L$*&-%B0rgRrz)RwF00Fb zMov>c;hfTvAIG_@BfplMp8PzXr!W5m_di4V4djgFU*Po<`C3m!<9#OoH8~6UhRmx= z`Mun0rQe#Y?}VJJe8{|)lTY!2{0?$T@&fk{WqFVJrz*dToVt7#{~oKnKtF8B?;)on zPhZHoDL*^j$I2fhXDCnqU-bR?k$f}iHIe_FoSD4LIzE>-S&x?T$H+;)Em_AWsc%O9 zf@`_2lP}3B$hYJ9i}Fp#Da)TFrz#)No;CT=+`}~F&v`UD$F=0IU_aTGzlna{mH!_( zeR<};d{0&Wk+((TYb1X@ITQJAw9iyt_O_lh<7Cge2aCsW_1e9nB^mcN>uuKZ2(x1Rj+_1OQ& zww^=vkGwwz6@}0;j%KPlQ zO7?gkE8m%%n!La~R+rb9SDW(P$!W{y$42j~BX2Oj_2hezGmziPIcq5Ik~5aSkDRG| z8|pQaf13UILjD1AQsrbFzs3G7Ew6Eo%gR4YPF}t`-=i+bzs0&=l7EbxiabY7RsIe> zKdsA;B&R8VEdG9uyheZM$Uj9+PdZ2ErBi4(e{Lkc+d7+sIkSoAkG(e1NClm8|csJj%(f>jiZeG>iZ+l$v;C*LH=6ybw&BPPenOp`4`El%J+@$4dlDfJ`H(? zoR<94tfy`HSMjd=EOPqtRo)yu|3H3BTu1qN$Ck`K9FKYWwYl&|twv>$8B-^KlBN50z1(YWi$*Cb~k zA8;Qsly5@LSpH&irt%W|%$a;A*8PP%M^5V9$vQT;M@`Gm=bkeweUPt~`a(eOt`<%YK%zQGGzmuG?yv@DS zM4nqj`>2_GZ*ms$%nPIa+fv@%Im$`DCt2V3larOtxPQpWC$w8ZUMHs{AFy97%d4Ef zs`4Yqsmpup0~_-6hSB?K$v;g_M?T|R+?A*Hk8=9*6UZ6LuciNw!&pmH(AG_5wbTUrf$O{xI)r9Pp|93UcQ1o2dID;HkZn_4)-l zdHIvPucG`=*4eWB8J@o;FFhWu*LC@Bctd^$-jrAImb`(tofA3@vJ=kuc+N}^2f=~%gf{x@7kFKMDBh4a z@uvJlye048ZF!FO+mXKp@5)~7I z`i}g2>`#XB<8F>}M)J()g#SI*OrE3eb9wEk*8g6grT@n7>q+`~PG0!sA^&@QN&X*R zUzSg_rzU>`?NgV}4v5}wTRvys+mXlZIgsyv zYV~I#eL9TmoV>^Lm*g8$ud+PF^VIDV<}rEvemnBL z7^hu%{Q9B%9`?^8dHjBt^3{2s6!T)-4!Ikn{*#lxmiL>NFKC~#e0yGBk;nN>d7JUl zlE?42Cx6Z_qW;{M*XaLK`PZrMOdiiaDdyw29ey7F-jlq<{7{tVnXgLn_<3sb$LRlc z`GofD%Ky#zx+kAduaW#ayx*}re*UHWKim(bSU2K!81Xzg`AxJ>Uf$vLRe3z0)a3De z(vq*w=Q3@1>9A=2@5{dxubc7#&ohyKjC;SS{Qr#?`RdG{Db~HXed75cCtsV_=jCyJ zRbFGf*W~g1-;#fw@zR#Z_3hia2Oikz&lC9(UySC@sXVUNQXa2gsRNVyrTF=C@_7Bq z%j5N{ERWZ(iacJw>hg70kG{9ulpoA~sV#pc{jDoMoO`goeAUCE`Fto}n|Wz0e;4gP zl{a{vx%{*A&!zl6?s?J&CENK$%;#D8#mobF`Db}wMR_I@-2<29r|_Ir`Got`x_nFa z;Z6D9I4`v2`OTvK)|KDMeP&;N0qgrv{$uX<#`4c_A2^lA_d;`dh3{)+4ovYe7}Fc zKYE_5e8@gOFaIa|kfQu*`e9lAyc47Rs(b^yF8@69WK;fH#$#K)8{U;~L4IF;!c~lG zd5`fpmaqFn^!lm%YUby;{0yFdDc_y>C;j1M`(IBxXXU@4U*+Y$<>waVJM(_a@?F`d zRpn}UAL-}{#6SebL{uKRlD!(ZHUV;1{zlw5} z@;UQNp`L928vk99zy0Ybrz!scb!^Gwb+9M@`;dLCJYL5~^41m6I33HsxO3za`TE=O zci}#gd|z=+S{~cL z9m@OvsM_IU(SH}@Gx96)eHcegdG4?%r!61h13N!=B7cbaVIfZ)9_43vu6X}>6YF3> z-s1HY`Hzl`+NUXx+qos5ZGYVV?kk4!xSdDx#)Hwiwv@-~S}Lx?|58(_cwNiM<95!= zYvh;ZA74T9(JpUzfMb(d!%X_`KGY$LH~$JbwL1ei{99ERW}hx%~CiYauUC-*h865C4C3 z-Fw_T_k92Vp(HD)LBxfGQN>CeMvAUOn24|qni14Gk1E!wMhS~x5Ule$ZkuXglb{{6T+Txs);G#(92SXwf6eRlyl%I7d~ZMhxLxdY zzkml%_x8gd>GvZoJet|@TlmSoj>4z(+h6+e5xjn?zb^R6KE5eDd4?UI!$0NgeF3li z_zHfftJ`&E3y+>@`5ipac)@?|>nQZsq5U&?mcK6e*ZqEf0xwUqVYC z%|rO@{d!{`9^S>Sm-hVM9kkzl0x#}t$1mXz_4}q0uIrh7xQ_4OI)2aRuiB&iKZ0xj zPvCF%I+A0!?rWy-OZdyt;+rOlH{u+McOKsn);d(CA!4LO+aszMw#jc+RzTc>S z1~2n{6&`qdM(`i{I!)lZKFr_`2y8!@!qq=>y7$il-dDO zf4u|W7u7#kyt(%eTHHB-u=I|H!e!hTfyejx>y!~sq_S=2Dkv=WX?y_Nxf4{b~r;el>yXel~+^zbfFm9+<;he|}QK|Jm(%>xd+_nq?eqCV_}}~W)d+q~-?zu`Lyq_R7kG6$+vlh7>-l)i;E(m| zggJcf-(OzBpWyqz3Vw5M=NkTWzrSnXgEw0H_u zvvC>2kM{XIfnRZD$Is!%`SDBm5q|s%{$`y|;n4#vzk%PNv3a-;KlDE48~F9yckqw@ z%;)p-`u%y)A@+Os;7_@&jpGphkh|OQ3H(@Z{}`_GZwf!@HkLnu|H)k}KZD=m5?jAh z_-X%RuWJtfhR@q2{Dr#ER(9d5}_@3Xl&frh<_RQg*@cniPf2Z%CEBH%&zg@%M4i87>3wZ9wFX8DO?D!I%`0*=vaXUM{f`_sB8XmaU@a?Va_y*p& z2QTc8OYA;?r^i@M2(RyMK7i-W7x30| zD)>ilY5UR|e&~nnd{o0VPa3%9NekCJ*@tVMba2g+4P5hN3)ei^!8K2U7xl+o^JDQ#_-}5-Vg9M`aVB{FYaOezlPWDJNVXpe<{ODiX^>Yc=@iqL;p5MTA{09Ci@Bb}a$A`ZD)Nc=XleK>juH#4W zhrPqbD}n3y4E_zj?wZ02U#Cm>^PgqyDdEbm;p+beuH!fGd-!_X!gc)MmHl~D`t|J| zUC%Ayhh1XrAHm?F-AMt+Mga4f$KZKv)=baJ!R*$lIJBGLV zJ1y`}e%$(b3jer2kD9?B?9ct?@H_bDMwakLA7E!zz_d~&7Xbv z^?aUe;E(fm?%@Ba_qi7R{(s2}t>5}R?&k2NU(YPzkMR4=75pB)j@Iy-9%=pDz_07~3;Xb&`Tg| z=ko}D3!f)r_{!(!1U~qY_0JT3rsvP#&%Vg^t2z8h+JE4$_4T-dzvDuiZ)^Ai{%H9P z{Gq;H_Tj0YcQ)_~d|Y<$AL=>MYy18Grl(l{NAUCfdDjr0ecA38VtDsO^AS95%oBM1 zN%Jv0{*ZYJ&%XVH%dT%H@ak+kK7-fpEBLwRd;h~Le}3D*?{!=2pM7}k=kX2v?miE9 z@TJd_!Rz|{pZIwsgm+iH-es?M4F9!%|78N#btX}Hx6l6_`~<(A9K5mL5AXDKvzN7s^7pWPU<&`1 z?_)Fgq3^ci=Wu;KWC{NVzrI?*-{sfIYxuW)zBTaMTw=d>AO10&ui;<$FYkZ2KEE;e z$A15>{qKD4!5{AHXbAtT&$ki$tL|gCJ_j;^|HSvtDO{h&n8B|Rd;i0q=<9k3KljIW z{0gqmX{_Nd@tg*(&u{F*|6cnK{7e3Ocko+!`v-68_x}%dzYIUw$9)LDvd`NQ`~vMi z@E7|$oWPIrbvlLL+4tue{9*6#{)hj;$8ib&uD53e*XKPN_{{4&?8D#d=a&uqW4?}d z@I?LmPyK#=g!ktj{62pC5Poa#pAq~M-kvf1Z#`!MpZWFn6n>2Ft26k8{<`My%2J~c&m8}PyF~T{KdYGLjV1G z&Y5^l48M`LCxw@Od=7tu=P%)>T*IE*l9fc{Pn^QUN3y=?U}C2}-@>1M4?BJfkKS(iq5nJe|Ea#u$MC|BPvPJ6^WzMD z%q{Hq7I6JNr8WE`aVJdKTg+;@K}Fu3SRp8qJpdaE&RH^5A4JBdHx-IO#Aw2qq<;3vrTjnEpp!rYt`8%M zKR)pDv)Zqm5nMSL-E*dJ<&<#cG<3BeuAIS{HZRmp<-~N)8Nrp4!g&OTf@ z!F$n8&l$j#Q^7m`xrM*V@3VIBkLWpu@AvAT+Q0uE!C$NAX>dI!8N>4z7Qz4iuYecs zb9nwDJHCM{e+yp(&%Z2x2d`diIb*-B(d$x94p&YC*YR7pjvxE=m-53`+wU#l-7C%K z@YdVe!h_1@!4`fee?GS7|6RZLaKCSj;JQyt;QHSE7_R${DO}&X&*AEy1-$V6zk-KL zyFY5-!8!hV;os5o!w>Y=Meq^(IflR9?`KnZ;>YLkH~IJb7Vz4SFX{es1%IJGZ`_AR zud#6-e6ZjCQ~mgm{uAq;2>zIh?YYMgex^V79>G8Ap1^PG{hz}B+V9gR@bmq7@)W-B zp2N@g=iUW;rRR0<6Zh7PKUyb2` z=g;6*`Rvt#|NUP9*FIdrZ{qKdtl(Rp=lk&A{lW4(xblPA=8<0S+m|*!2XGx9!%Kgj zoWkec&pAB!wEeyX{Ox|esNk6&-@rnd-<{|uG9>Oc%2gdNk+cSe--S?#euKUvx zKJk5H1&=*{AAT?o;mQy6KEVGjhX3z>2lEiFeE5Dwv;fWu=gFnxoV+7tVwI}xDNASY$UlO>kw=?+6 z??tYJuo^Qu5;K{Y^_zHfoKhypA4j#G>ztHaowKIn2 ze*6foc4lz3b3y;2{k{tRGGAW}JU`N2@4)|^=5u|0^AKM6@e}y@zMo|9;yn9&W&uCd zuYcxn9lwH~;p?%2>-ZM_pFV%~;W~Z`&;Hf=E&Nh{ydLD&&oR9A<5Tz@FShI39G?7} z*lM%xCaV`~FbCwSG(ZAN;;!1<(BV?!%Se z!Id9)f2f_e{)#;x9>5dNAHq-5xWH3Cegap123LLozrrbYeLjclb8##9Uwqh(ui)CB zTlfinzSxI{pSJa~gP-a1Kk#{>e$##B2>ukmPfy@#PX-UaYwe%H^*-htev8D8U%=Hr z6+HX0&u4i0`fFacZ*Sn`&3!)mztiij+-Gp*6!7E-dq1&)cm8t=Kh5{09sCl1ZXbN5 zzdz`CX#_ubUlp$N-54I+%3f~)58dbRAhzRMc=7MnzAgN9J|Dub_S>KRhy5JWeSW6! z+K z-rET;++%p+K7yz2IlTOa{k{c!`4u}aRPfG^Z{f%L{;-87-?aSD|DERH%+EVRc%^p2 zYxgx=?X2OYAHRd&W#86s;O$a-7JhsLKi!{e4dEK!3B1<#Zs1z)1^nCod}9t*y?_dy zecSr8g+I#onJv8Zc9{BNtAM{^u_cY5-;pwU7 z6L|0s<_r3NT5bhj`+nQPGe3R{50A2WyXXI1^ZyTi-x0wzKNI)|{QhnXkNx$|;6L&6 zX#v;%Q^E&7vv#iFx?gDF!4Iu}w(xVkoqPV@^?G0D=h+B;@Ot4N^YhCXuH&ch#nWvZ zOL*zNg2yvEehZI&WUnjq|5y8;>*wVW{LOwpn85XZRt7)8-*=wEb^IJ&J;U1B!fW^N z$Nl+V_|Gx?UjBPic!8H$qpY+>*jj_$c0bIuq z;gSE|3?92r;lXLv&I(>`tQ{@<$$q`Jg?D~@=>M;I@^3zGhw$#5_Iq>q)_o1v@2%mj zAHReDz@Li-KkfIY&ZiOlTmC-#5U%6L@I$|8&xcdE)?*Go&)3BauKYP%_r*25I?MX4 zfrlS6-@=tM{6GDEP)-cbKVmr(xN;V7<+SkNXZHKH@E7a(@J0RhM4zzrzhCok>d$o}xbBa}aGkGncyOMza|Vyx7x1pOk3NS7pY`^`BliWo^ZX@z>)yhXpZmDO&++GVq5pS{OX)wy@bCKPLML$jUF!_4 zbyvV2a83K3`y3wo>s`Zt?7z2$E5C#Pi|>aUxW;kti~hJI{(Hyp#f3I5DLmDj+7_Pu z#@i47g^ySG%YOSiKR$*JuVd{=;q`C5{qXa=e-`j)XUA9Y*5^YDFZ}o|{6GEp@W1=* z4}NDq$MAjcp9FrEKhGS)zoX~>@UJD-4-@#!eY`UGGkqOR;Wypb^+^tYoj>oI!Efv5 z%>sUm=gi?3A7}Xs_^14R!zKJ8pARK`>;1NZ|IYiTg8z-rlQsNN&$NE4;rDotwX=gC zK*D@KesU_Jr_v`|(3~_9feYa(MNx=4*KL z8@v9g;i>0z@Ly`5gzJ5`f$ukZU7zvs4dL2{NASeQD}mQvwDxE4=V(5|6L0?#{_lPt zSHe5bui>rl8x1`4{0;n(eqXSKM}BUwNKgH)y0oQd= z3BT!;Y`(4F%5UIz@#g?7T<^c^;3xXN6!^Zbeo%WN`1gFghH$lK48NlCi`%;1;5 zqU{3(T=^yZcm6rL6e4h#YJf{BH`uvRGAG*}WYY5lzWB8@M zep9%P&*6iiU3bmkI(`ZNqObQ7uH*ON_wn)S;QHKM;OATQ!;gHQAHdcBBlvTDzfIt+ z_7nK+ecztKb^H>3H$T3FYyQ;mZ+QPSa2>ya>%6vw>-astzEJ->*7u(XuIDfb{0JZ4 zFz>xf3I%}*XIWo^o{-AB|Q46_YeGj-u@l@FMZ!0T++Y(e2AYf z_TazszvDfGKf%}I2>xcj4jjXO>-*aTe&~a3Uz);y?)&)+{w?3f=J4P`n^#Nt{rx<$ zfp7*Z%(a;L?8o-_3vT9{eJIt~G?;)yHuJ zzpl4u48N7Pe*%v;-v98^e0*o{@A`ej93Gr+*N02^r~UqM1;3GB&#d8p<@;mu=f8D2TzK!5BKYk4VlUv&H6ZpdW zc?$oSKYyOV|HH2{=kOzZUtPkV;`{sx{?=DpKdj*w`TA<$H}?E}_+5NnZQzgd{@lTr zzAgs;)9?S%`(Y0r-^uHVz~A8YI7aZd`g6ZA{1nZ9c;w?Ug^#~$pJSQ9-{b9{!w2uO zOJoff);J5Oe9enP;cM!bivd>}ZJoR~>Z+r0P zU)|>I5Pnb3AHlEV`@k6fx}W*{hyO^=Tj0s%t$h{zX1=alcI z&oTVNe*Q|~wI83uAL#wCfJayK_QSvC`(X<&{rD|h-(w2>^=Z7KL%jWPeUE7Zf4N`Z zX7Iv4XIsEO?CWt3*XQe2@S6;5d@H!FxA)zsdKd3Lg7-?Zdz8`&9>5e&Fj# zulHi#X9n=p^GEPU`t@@HSAGV+hpwaG>Yq7WuXh30>s`Y&pKG|<)4}zh;lZKy`nT}A`uS_m z|GVaoKIag@+wVN?vh!#H*XJC@a2-E|U*hv~20zo+#T{kmljep|mU7{c%6K7#LgKaAn8 z_4C~Xey*;!;aB>jT@TOTzwq<*9DedqcKj0laKC?9!SC+-=Nf*Dx4(fu)9+9B;Yay6 zZs4!+`eHlyab9OSOrQUAjqsrw!Hcl@xq_sbR*QeO^ zPX>RnKS!Fvbv~NIbv?O&>wL6^zuNO_c=bhVPX`aZ{TsNx_cyp&zn?$t`5`>MgVkr; zgQst{-y6XTKYj?$-(bhb@Zb#d5j=mLc>-U&(R>UK{rD6fzr~K9z{{7IXYk;)=2Q6g z)#eL$?LSxW(Ti>V?88qu%)Eo^IwuJG<8r#6X9w_DpL>UASGRwkz&rmrh2Lps*ZDcT z^PB=6xi8=k_5GoO2iNp<3P1D^Tkkvg;!Nx3k^dg8)5SZ?XYj+lE<*t?{P+^C`_>g) z>$HJuowjhT(;Zy*t-&?=jf#=@;8@TQ(w{YE8?)iMtxa&STf~!9h_-lOsAH&uDDO~Nz;cCwU9vp7t zTEQ>cw|;Bki66g(9~0U9-}C>j*ZX*1M-g1@nZUK5WN_^#1^jvbcg*H+eePlf*Y|EJ zxIWL;!m}f+f41=V`+Y%pt^T@*{P-At?DwpHGI;Gj=kWH=tp6AA((^0$AAGzTc<>S1 zXIl8e|2|{~uWLJg1JBPj-@;SR8F{-j?lZssPvDUsKcgRR*F^ISoqH|{B6D-Q+Ve;=WrdrfOns>{#?OZ_X=LSui@$EEvJSr8uK0e z5nhiz*z3Pu?avYXOGnzg9l~|KNa4wKEH{JK{&Nn$-NX-hCA!e z0bJ+PAzattFh zH8`r@Z#q7L>$+z)Uz&ouHM0ab#=Qg+Q85Ad9sBkU$&em>bL*) zeqTIX+w>)^`Yz}5d-c;xvz_{N{h1vl)^PvsBbwSUeegqMxAe-Hj+zkZA0 z?|y`xFNSdSe+-X2e*|CoK9InbKZdLSQ+WA#pa1YypId+{e+pOs=kUn$XYl*_d8B|V ze-5Ae`dYxt&-wg^zrx>FD&fjs!Q0!|`l{gN&n5 z{0F{2cl5Ju{%qiyKU;X@{j-CA*T*;bv;O@5f#(n4nm-}DJm1>C2S4st{y7J@@`rHE zpBNr_{s?}mKhH_v${)ki=UD%z@ba_P{t5gfZ+`~A@FE-cDO~-Z!=q1I{tW&L-yaIN z^5<~%{{mi~XZcHb@Jhcd<9qgD|qDjYxv3je6ofszk#d$ExfF){rm8T`~J|u zPxzR%e*;(hxA4fvcL%>%*VQ-b&wu3);A(#eFF#}L--F-A-zSRTm7jlyaJ4^%N1i`| zf7s9O30(POxZ0n>OP`+;c;nYs8T{Ob`22_Owzj@*@bY6m|KW{4H|XHI%lrNhSN;|rdHxQ* z@As|2jr;TeMK7@Hs{vg3A-w#k&wu!@{Qe?>UwB8mj~>F6AHyThAHm{`Bzwr4}!@vDYpZ{>>xA5{Dpa1Yj`2BSU|KlzF`X8?REj;r49sIC= zw4C53{rRu`X8_m!7Q)L9`}~I=>*x0fuKi~SSAGnSJbwf~OY}6g*YNA}0{1#q*(C0t=eg65e4zB%Y16TeQ9(n!_e!kD2;HLfgul;8LSAGaDKj8Bp zev;-tT>H-uuKXAtdHx7~wx8b9)AAX{L&ZmT*@q5c(!IfXZ%QG#14L{M>R}DW&pZ|d?zlE3YvHX4brF#Ae zSO09_nm=23;DP-v3`G=!IeLS?_JrS|G?{CTK)|FDZhU#;L4xFOMia8fEWK| z`Ahgi{qz4dT;W-&x&*7(V<>c_la|-yu^KiIw7VzwJdtD`5&!tyz zxe-wD9r;K7ZhPPP>6CXA4g}Cpe}*fAlC_TyY3j zdt!L^e4jsXJ>MI{m6O5?&&l8i&)MM0$>EXb6mXp{=5XaK;DN8x60Y;Y3a*?AUKZ9r zHC+3D16NK9PdulC>pp!0SI!pRJ=fY3+`K=3bU!|TD<^~(o)f`!-#vsYCx%C!lfZR< zJ%%eMh1buq*OkF_A3cRDCx>UAQ^0kOG& zKX6?qOySK_{5l6-KFx9pxN_$3@LbDTz`K92oD#0$+tKS9@Z3{Zz|I;K~`p)t(d{czZJV z!SxSZ?aAShx2J$BXAW0;7Vs?h`2$zZ3O;zM&BF>_&Mc>f>w2Ss@BH&KExdS&<#cf6 zY~X9Z4&TD-Cs|H#tN#2^&H!E??bko>$X{0k*E$`-r$^cQ!ZAF0hP5YwD`yPf`sc?| zcd$KS%cC;I$}`}0RR1NhiKZyCZ9&xzp58Nx@uwAU5G%P08!fh%VWAHCFa zQh4Aw8C>_LQ@F+}hi8xX`2$zZ9Io+N!0X3ZP6=1e3a;_0;F0IlaOE^`jaLgV9&7FC z;L6#+HC|hIH?^GL*8TaToB>?p6~YtGiQqaf58)cG7+yZc+LOSQGlpxtQh4Aw8C*G2 zxW+4oXOFh_6maFt;To?6yndABlyK#&;2N(A9(hg;S55=hc(w52@2ou?T-PldxW;P> z?;dG6!Lj}MqnrU;;}yaa&xzp58NxMQF}(a+Yfl1K&KR!oO5uU$WN_t7;To?To;||a zQ^1uohikkR@H(@c60Y;$3a;_0;F0IlaOE^`jaLgV9&YXF;L6#+HC|hI_b|%|{-QsB zlrw;9yh3>5IT2hrL%7B(hL;bu_9SrSjNuxu6drg^2G{lK6t3~g;n_p1Jq27jbGXK9 z0k0oyIVD^ec#yTHgDYnP*LZE=-2*KrxJ`flC}#lIc!lu9 zb0WB|!-w$H?{i~#IkEO6aOI5QqucuR4?OUk46d9hyzuL>9G*SE+Ec)lGlxe5|2!(Z z{u|3F;mTRTi|gC#s^F35)NtiA@b*}1PYW;ZZ|&*edXBw;Ykh6u*}W|%xNU#_C}#lI z`U>Ioy(}k!D`yDT`ikL^=Ol3DjNw{eDZIF+wI_osXA0N)%HiEfmQ%o$Gly$^E#Qgg zlyJRYu!3v6DtP%<)}9)!oCdD(YT<$Bba3Tt=(_)cXJczmaJ&BeQO*Fa@e1MfJuD}J zD`yDTc*XF@a}v06#&C^S3NP+%?aAPJ-)aiic;)c!ewI_fl{1HHycY1pb4s{!R&cGa z3SQpV+Ec@o)4(-eEj;j?4z8RHT;sKcXQxw4uLV5uoD!~_6c_}1fM_fgZIDS%309wYB?qR;QcSSaw>RsXUnPK2k(EumDAFX zvz!io@ctKEIa_$-Il=Aw^XK6GFSv3-cyT9dPXs@B{|m017~b8{auWE#`(JS7r0~RZ zGPu^)6s~DV3;9X)lHC*effh(tlC!W*6wZ1lR zuUg4P6!V?CxUBz4dKd(;pH8C{=l`q#&G4N@W692xYpMcuACg6 z-QL<$z_q^SaOEuE^~iEcxYpMSuAB-Uc}@-2`fA|HY2n3RT6;RU*4GBE^ZORw-Oh4? zJND;~*4F^8oDiOPP6XHb8p4$m!^_)RdlIuUg4 zP6#h8*YYNwOZw`-q+zYtY*Bq{#1-v-c zURMd%`dY!2Q^C7iTTTtv`fA|HY2k_Iba1V&4O}@}co|!Jg5&!0N9$_gY3Rg}J&yKeC6mYGtIb1mlczrX=DdAdQE4Xqh zc;q=XT`1;LiQ|qxCg_D<^~}o)f{fzJ_q+#PISa z)}92e^)-eoCxr)|lfkvVrf}ut@a)Fco&v7*HHRx_0k8kua!REK#l8@O_|@W^w5yY%Oe*4F^8oDg1I-`W$wwZ4XM<;3vrD9cIUT3=(h za#DEWIT>8*YYNwMk{llSxEFA(uQ^;f3wUuOdtD`5>uUv9P6hA&%yMeD)>i{pP76;w zr-N&KZQ#n;!pj?4dxE4tf3&^^aOH&Xz;hzF*4GfOoETmn>GKD!^)-eoCxr)|lfkvV zrf}ut@a%flo&v7*HHRx_0k5xXIVD`{YXw(M1&=(ZhHHH_aOJe{;yTuz4zBMzY~XrM zvW0hhmJ=M`pFheOz;!%c;Go1Tsc#?_OTqE z9bxS$;L4f9HC_vNeJ#r=;rd?53a;_0;F0IlaOE^`jaLgV4!8DnaOG^^8m}$9yQbv? zckRy~?p z6~YtGiQxL4)DW)mis9Y=*!M0IxN^pDjaLd!JST%IXA0MN92275^{e?YvwKE^W>))A==zjbd zzPQ5am;K$346Zr|Q}|>2@A>3#)j=rXnkOrG`4;a_xauIR;i`jB!LASEs)JC#l|P5a{(a#ETy+qZaMeL5 z;X2Q*;OhSht~v;7xauI(aOF2}^?wUj9fWL7G*cnD*n_JMLIhX-5We&8U&nCOK^VbR2O)tge+*yv_o-93>L5(us)LZxy-vXt zuKAP0RR>`PR~>``uJhC!uKBZos}8~vt~v-MT=^@w=1&Dz9fUPpbr5Q}@*DWp?_XND z>LBdHRR^Ji>vPu|xcYw!R~>{MTy+qFd-mtQ@&|DBe+X9{ggv+=r-xY{4my-vX%Ty+p4xIPy#geyOW zs}8~lt~v+_T%VU1!`PR~>``uFqG@;mTjoy-vXr zt~v-MT%WsG!IfXZRR>`WR~>{JuFqpMaOJmjuT!uOR~>{7uFq*~;L6{^RR>`QR~>}l zulw^~pWhh3l^@c*PQe~rbr2%BKG!jXD?f&-4#EhoItU3|pZ6HUm7mhRPQe7OItUqD zp97h~m7l{^2Vn+R9fSg|{bvr>{@ zEnIaF_Tj37(80C;Y~ae@!c_-h2Ui`0;N<@N*ZwnrD?fy*4#FN>br2%B_MahK`7vB| z5Jqs-K}g`*f5vd-r*PFln7~yBA%koGnZlKy!&L`i23H+~0L9G)s)JC&wf{75<+pIvLD+|@4nhal{{ATy+oN*-s)I0rs}4d2SN;^9`TbE2 zR~>{ITy+o%xZYQq!`1%_y4NXK!c_;Mge!jqSN~UV)j?RpRR^JltA84}p6|7A)j`;Y zs}4d3SN;aB=X+bY>LBdks)G>Rr$7JoIhg@m{U6f(@BHtvJ7LxbkDV|DFF4 zTy+o<_`&B8;L1T>UeLD}Mo39fT!Zbr4Fp z`ey}Keg#(@gf(1s5Nf#U2sCizw{X=#*oUhQLI+p=2A=!-m|M8&Anf3(gAkn3pa04q zz?YsM!c_-h53V{030&)U4A1=U8l`a6LCE0R$EI-Q4O}@}xauGT_wCPzgXiIJ<%IOpt)C;fo=Xqm z%8B8sgOI@We0U63P6}5Ygbc3dv{Sfpa=7Xs6mUJyoWr;N_lOp7)j=rXdak&Ft34H5 zbr5Q}p6@kuUtcX;br3rE!E-ja+OvhL4nlCh{`}GTVgOf82v;412(I(O5U!jUt~v+_ zT>JkRuACIEItUqD_vur(a&oxpAQW)jkI&)CS-@2Xp@i$cdj(fc1y>z}8m{~62CkeI zt~v-ET=&r%xN^4i=h(gx+`m76biX`+D<_1j4nhRieen>koEWY;2nk&Gzhk&^Qn>0M zWN_W*PT|VQ;i`jBz;!=6hbw0RR~>{BuKU&%Tsak7br5Q}?oS)Ia$30RAarnDCv4z* zH?z;LZsDqf5d2Ml{wQYvAL;WvaMeMG;JQv2!quJ_t~v+_TsdR7+LOXn2O)#&dSeP# zdvdtyAQW)r%;9R!0L3(w<;>wL z&so4#2cd*3X9ZvSbGZtxItVpfISst{BuJiH= zuJNkis)JC&mD9jAUM*a85IVSWHgJvC7Opx7!GrqqM>zwy#w&!Y4nhQ1&JeEgis7n* zkieBQhHJc1`rrBa3$E*yDO}@~(;sO$1zb6ExW;P%R~>{BuACKI<5j^`2cd>5r-5s{ zTDa;Uba3Tt;2N(jTy+qF2lwZXat3gXR|r=fgb1$l;1I6yis7n*kieBQhHJc1xauHe zaOF(l8m}C#ItT?^IdiziYXMgsgc7ct6L7G*U9WE78m}!} zbr6Dw^yiOq25^m62v;412(FwVT;mnPRR?T3;<(br3qZayD?SuPt145Q2yG=Z|s*aILQpt~v-2 zT<;eQ;To?Pt~v+_TsdR7#w&%Z4nhW3&J?ck%HgVmP{5TlhikkRaMeL5;mTRTHC`25 zbr5Q}avHeCtEGD#gbuFvtu}Ct*Ou<}3xbFD=Z|s*aE(_8R~>{1uACuU;}yeI2O)tg zXAIYPrEt|j$l%JE!ZltwTy+o%xN_!jjn@LMItV3P?+>ov8m|hjItVpfISpLn)xuQ= zp@S=D1J`(M;i`iWWc~T0oB>?p6~a{qA%ZJs2-kSUaMeLb;K~`pHC`!Pbr3T6!TVou zjaN?h`UM62;QcSSau#saK`7w|?|;FSQ^8dSp@tv4{{>f03s)V44u0_d7hE}8xauGT zkLb^zgZIDS$_e4M|2_N&e(?SmTsbjZbr2Hx!TVou<)rZ1>lbA3gZIDS%E{rXgHXT^ z-v5FtX8~6ogc5%6{uf+172WF>)bNA%zu?Mg;i`ks!L`0NaP4DTxauGTf7_owT3-XW zazeQ3AVhGjuOVDHF5+ z>L4U=t*Y~iYd5d2+#{%Cy-;K~W%s)G>0wZ4XM<-~B+K}g_QUt_p(Qn>0M zWN@voDO@=@Ty+o%xYpMkuABv2br4Fp*4GNIoC>Zw2sK>mtAQ)0g{uxi2iN-Az*qjh z-WIMp2*IQJ^GEAz09Q^3R~>{1uJtv9D<_7l4nhLg`WnNPlfqR8A%kmuP2tMP;i`jB zz_q^SaOEuEs)JC%wZ2wxL3J<>CYdnuK`>+AzXD3BDmJq5U!jU zt~v+_T`|uJtvBD<_4k z4nhXk`kKO(lfzX9p@3_B&Ed*fz*PsKglm1R;L54ss)JC&wZ0m-a$30RAaro8uMJ!| zTe#{V1dr{{AFZzeTsa|Jbr2%B*4GfOoEWY;2nk&4YYbOTO7}Vl8C>6Yn8Nj(B&U1* zf bIb8RH3%KealyK#&;8VX|t>CJIP{Wnez;%9a;i`ks!IiUtYaiRfRRTz~#3 zX8_lDg>cnDh~WBO$q=sbis7n*kieBQhHJc1xauHeaOF(l8m}C#ItT?^IdiziYXMgs zgc7ct6L7IRgYWOaHC|h|>L3J<@6R9Q4B#5C5Ux515nMS# zxW+4ns}4c}SI!u&@k-&UgOI_MGlgrsa=7Xs6maFt;To?6Ty+pixV|T~f@{1gy4NqL z;mT>?8m|_vItU$HIUBgfYYSH$gy0GN`JGb(7~0n zfor_BaMeKwp4gv1${D~lULjm{5F)s~_cw%VykfZOAS7_*jNuxu6s|f58C*G2xW+4o zs}4c|SI!)+@mj!D2cd*3X9d@IRdCfosNu?K;2N(Mt~v-ET%W_=z&pP`-NID|A^7|L z{87#TKJm|eg>cnDh~WC%@({lFZvXxcTy+o|Gk`BNf8eTv5WzJMhw!C;jxmO-4nhJ~&KMru*Iri&R~>{5uJ27u;c8C~ zR~>``uADhs?ODK82cd*(U98~E<9zokO`4nhRiJRHKO{&&%1xauGzaOI5Q;oa?Xuqj-15DNIe9d-4~>J-f3 z&p6C{0gu|VE<1h+5ASk~%e;i2{42{@!IfXZ3(sG}hiBOQ>EMljpKAkG{ubVS$-Y0b zgO9!6f+zRKeQ>n(=K!w!5T1R}^7r7weC2bp;mXh9$&r>ngSXxf1^frMwtaODSN;N?9bx%P z_}Z@nOZaP2-=E>iui(mG!=r22{#L_x-v13;`7K=e`|#+GzW>8-c_*L$aOH2|^|h^k zcJR6XU7g@5{rSJ~^Wy-n{1C4EJ^0%5Blu&!YV9Awl^?^EKZ36xX8n`Ev%vDlaOJ1) z(&x_vKKAoh2LG||OH;V=b9nI++n;CfKYC69|E}+!bGY&s@ZiV3|HD(iekkEvzkXQ3 zm0!WL8{7O@!|NOP{HOchb7gR{ysd_{tw^yzPEuZe+w^9w)`D@d`-K~4^HjR z|DCUk0bKbZJo{_Q--E|Kz7hRp);~kI@?&^(Z_6LSC;r?Zf$!bi^2c!Hr||BcmOp_v z{+uL(=f1B_;mXh9^B+F*^UfTu`~^JwE6ZQPQ@=hb;WHoi6-u2~S5697P6pR?!W6EY9Il)KuIqt0TsaH4a!R<)`zyF|D!6hwxYpMO zuAD8r{I-pEFzb)IuJZ?Q<%ICy`}Xe>xSn^7;mS$j!3%9a$>4L}Po{9?~m9!Vy z`s1GYb;|&*oDg0-+j1iKzQ3*^Tsbj3In8nsc3AJE}g=alf&z0 zSWW@g`kKR)vw&wGwVV<@_VertuAB-UtSzU8hj+E}bpuyU3op;HoDLqHYB?LYa<=f~ z!O5U!jUUVPAU61uO`FS8(N2@NQ{2HTRQ@|VFpXYGpEa2TMET@F8{rS%duAB;9zT9$Zc<%dr16NK9 z&t7IZ9lZAY`VCw;TX^(R%L$&{pFeBAP8h(I6T-W>oY7Tg6lc$5U!jU9(=)aMsPi+P2hS? zJBBMig$EZ}{sgY)v>9B_X{T`I=kVYH%b&sZoVI}LIqe*-`~^H{EPn~tbJ~*b&uLe1 zp5)=*K^tiuKX4re9rRs;d)Nn!S$SW16TeQ9-MFaJGh?H2G8x!b3LaW zz?C1ugU?$29$e39BeP4)i-eEY~l4kT2Ao1 z{t?AzxPrf}ut@Zy7(Q@~$xob}Hf zuABwDKG$+e_$j}#_N?H_so>o?mQ%wo{-fQ$H*n>&@Oo`I9sHE9TYENe$1Nv# zL4W>y`}(mgz(PKI|;n-=f-2Wa#DDCf4fe|;9GyLHH9lDhu8m? zu6qxk@1N`aKcu}^zhAqi{Zoyo#-S{7n05|Ri78(!z7FG1Rt_~qwUU^yv%=0euWT{o zFb>raSt3nEtwffRRuNN9E5zW7RXL21RZjcY=lOiRu4~<|{q~Q`?Rt5x*W6$0J@0wX z`|!D^zutiB>(c_RIa~PYM{Uj?p6chQ;hJ-R*Y~zLHC*olG;qy1!t49moD+QQU$1p= z%{jwYKVfr5PZ*y2LEry^Yt9(HU)h`~T<=T7aLt*)M?YnA7I3{Uk-#-)3E$k$=4{{} z{bPGREZ~~6g|8m;@=HH|Uc$3S+voQKTyrY;=u6i32#@~B=Cp9lIl)g~usJP zo;W;5&57Xkf7rSyeCGR!;hHmp@BiKAB=E++-?W5lP72@jHfIeVf5rObaLw7kSD&{z zJ9zp5dmh`vHK&AcK5TPp_)YxtU<22jBYbm(&FSFZ??2yohHFj_-+aX8jGtux9bLLB zN29%eyieeoGlehy&Hn#$c<(>wwt#C+0-t`)=B((qwAarWTyxg&(PwQ=0iUew+_!Me z*}+f$YI6?oh0m$rnp4B;PurZ9?mu^Nf@@9(-=A&HsIdRmdHwS1{q-1JbH?z^r|kb9 z!+-y8?RCNot~qn~>XSBS3BUif?dOnFxaO?ji%-~`9RAjc?PmkmoB}@mxXszaA9NL) zQ^Gap03ZE}&1v9Y`J{C|!ZoLbpZ>|_oZ-)Um(A(nnlt(p`~T^D>(2i71b+Rmx6V_z z=EU&*$8635{=-+ZJ_%fNmhjC-ZB7P1`uCUDaLvi#`|I21!7aS>*L6F%=Ir77>)D(N z{%4=E&NW(yUgaS;F^=c7gx7A8~7jieOSOXXA56^i_IzF-|64SKfpDof}g&@ z<{aUd`}>D2TyswF)7a+p@SFL5M*n+wj+zs}PhW3yrtps-P$=K$Y-yUl6fjelKmglkRCFYP~rKjd}xb>$ka z`8j+vviSvE^SAIfyv_RW;F`aOAAbDmm-cyppB`xaD|r5J+kXw${06@F`7K=YPw>}& zlg;nontz6Geg5ca!~06}BlwlBZhgjZ&7Z(GK0k)<-~EJ3-DdE&zQJCX&f%KBfUkZ2 z60Z3v{2AVV1=suxzVi7wT=O^ZSNi+{uK8Q|(&z8thrh7FsUK8a}$FeICi-nzMnQZf$dR@WwyS?%|qK!cUjkoEpCN&JA31j_}iM zY)%KSpKXup4A-0%~`=~pOe8g zXANK7%H|aC-aqee;hM99FK%gb4)EUJzpdb!Q^Th}U~^jd( zJg>d~K4}EkoH6|LeKseCZ~XP%46ZqIc>TRLX9-{W{gc8qX9eHSZB7nf`1{)%xaJh_ z&CPAj9=`RjUrM;<9N?>)*_;M`Uw?n#2-lnzzPPE)Im0izvORD2aLpP0+VFg*H?cVr zc7xyq?*dE&MzDeX1Q? zbN2B4jcrZ^U-;JxHC%HV_~u47=S26fUplzvoZ+h*+MMW_!*e|Q^Vk@!ITQHe1~z8~ z@BIDtIb3rV@cRBXCxw^(xK?n@$>96@*_;i0{9X1uR=_o93*Y>t%_-rTpVtAdITd{M z6E^1vKl%4(Te#+&;ER>b>EZEH?DOg9S;KSGoCrSsaho%R|Ed3-v>2{AGx*|io0Gu* z*?&G{3D=wyzPO{!S;I5`eqRpPoDF<&C!4c_AN~H>!!@UbkABSN)bR7mtaAg`oFn{n zADh#`&;EYS8Ll}!yuP>189#e?zKh?q{Y>DRGllQ(Wpn26$?w>l1zd9y_~u7#&I+FS z=fMoFIcxYTwK)a+K3CZD{1&b`JNV+BHs=8U;4^Jb1=pM!KK&7!)54$hm-hMM1lODn zKKfysGkVVOydLC_D}rmz7=F6D&57Y3y|q2A8C-Mb@cM2xX9<66C-#^CYr112s?Bjg}*PIN#-`JcD{EIiY`?-K?&KACZw9P5u zM}M7gfNM?#-#pyr9N}yK`++T7b58KlFWQ_Q{=fWn!svO!bJUy&etMYAnZmb^wsVi+ znlppf54AZ7{Oo^saS7L)6uy6m%~`_>ecuqSIUD%q7i`WBe*QLl-MfctP6=PFZB7lZ z{rg!BTyu`_#UpG^2fxbBKHkr8&FSI$%;t=rKRn;7f5tv8CUDJ}!cPydIV`TKVgQ2(CF}_+n@KnZnE0`^PC9=jp2HyGOD&U&4g-?CX9zOH;u}iq-9N?>$*nVpG!r%96 z;F@!U?_X?lPVnpb-JetmfVT-*QNW(3!qF?{NCrto*)$ew>IGbLw(#k%+nhZ-(en>n za}My$-saTslm4C$Tyu`_)oWarhvHRlXpJk92eeq(t5On%1ZL~zX+!>W zIa7GchM%5pa~ALi|GJ+S{BVWcpIi8E_}`JP;N1)Td2B!2=lDyHyYzkVIsE(u z^8~*9qIn7*xo_awe+k$Ak8th3him_<7Y_HYe|IB;KlJYQc-L_KyBmA>74Nk5C0uh3 z@corvd8u0szpejVVguKlBfP$f%^AID__*Hp7CZL{t~q1)<{$m{ao|zyuYcg0GlQ?* z=f95wf7;L5eiFFmEa8jy+ME^q)t|J^8C-ML@acQ}_j=&XhipFuTywVYO>1-Z@TGtK zUcxo!0AIb^=G5@le8t{xY2cc3gfHG@b58J|eTU8I;F@!WPv2>CM!z+@e_r%?zklGG zGluW~#pX=m@yYKWxaQ2@n}4=B3;5T4o8Lch%~`@%|73Gk@XP)8Xfn9wtl^8!=4{|M z^4Et2TywVY{g-Xd9^UxZgC$&Z4)D#FY)%c&uW6kdxaJ(;t1sG|6MX5f=R3IOoZ*Wv z*qqUehxgCRb^pLMXAEEbtIe6x{rd$mTytjd#iwn~0{$8Qz2*e2IZOEBY;#udoA}ok z8C-ML@WrQW&IbPZKlbMzxaMr(i%-~`J^V`FY;#Ju<{aRQPuiRs{+K7(oCdBrNBH93 zY|aV(PXD~q!8PX$Uwq!?j9xOlf4=tG_BxMH~G%;1ZWy^dPI zucgmBaLrl5Pd;Y_zlnccnZY$@4IlaI!wp-H9YcJJUP_t8s- zo%Q-WhU@kD60XE_?W$ZtKgZhKf?dy<+lG5{DHo{hrja= zZU52BhTYb_ehPp7TWvox_``ht8m{x&!0+I%mv(TSR|(g@gIvRPUPt(q9%&sqxX!DG z=f3~(?+iQWyr%F+`T99r=as-WzJ3MQd9C4(_w@x_=e2_uzWxB$dDZZz`1;YyhmTk1 zHHPo}^*{{QdClSacaWEGo!1KfQvZCK!*yN-eCzw)!*yN<_%nTd1J`-A@SU$e!*yPx zR}8zoz}HXUIL{myL1q*9rbwUq5~2 zu+KC6`FRG{zw42}U+C*o`0Z|O=e34k=k4YjxaRNRyZ^A~^AdiG%kA@54S(a$+x#PZ z;p;oN&Z~!C=Ih75H|(SHn!*!bKZonQ68If`{R*!0TEmyVzJUMP&Ft~+;P>$LEnMf@ z!5{EV_VW*;!|?Iye8=!xzs9Z`!*#xMxYjS>I^PxiczZkF9Io>%;P3GDd$`W`0B?PL z1K0Vs@b~%pGhF98`u$wK5+&ew0@I^R9~8$R!^)8IPa27Wl& z`V(B|dxmR$^asNZI^PNWwGKt7k&K^ zuJb*?M|ZIMxrgg~qdy#WyNa(*;5y$F{uTeZ;x%07yMaGxYp<(!aGh@n*S||%!*#w# zcwM>Mo$nH^^IgGpzBydyTflX`d$`W`0N438aGh@p*ZH2| zI^WSB4ZG=lCvcr_4A=QC;5y$WT<4p?b-p=V=Uc&bz72eSH~V-z!F9f8xYkF1JnW$J zoxpXzGq}!o0l&=e&lIln&EScz-@tXgTlgJ)eF@k3R`8{-Kf-msC-^;leGk|9M%A!e z>g%U)o$m~OA78(Q>wGuxUw@5#KHb4}z9n4eTf=p}N4UwIT$o$ms!^G)G8-wdwv z-N1FeTe!}*gzJ1OxX$+o*ZH2{I^Q0y^Nn6N?56Xb!gangxXw3$>wHtV&UXjb`IhkO zUe7*$Yq-w$2-o@!uJi5T-`m^s|M<^_9dy1^_a-1mQm>wHJ`u*0K#{RFP_jo}+#zkus}m+;5?`V6k~&EbWw-@wLFxy?!p?I^PQZD1ZHbgzJ1y z@QttU;X2>wuZA5S@9U>FYbV&bNnO z?c40@qj59rp!1!=wSErQ`6h6k?+UK-UDJL41zhL5gTKJnAK*IQ8ou}SEnMf@!C&m_ zM}Ix+qw^iZOJ5(ub-r`>D}4PDuJc{N559g6*ZCgc_q&6A{%zno-xjX*XSmLH^f$u} zI^PLg=NrRc<@;a2b-qh@wH`Io8M&TdxqGi`8M!7`uY=G=X-`PeSLHscGLMz;P>$LGq}!o z0Z)DX2Cnnn!r$+|=UBpZz7wIhYD}4VgT<6=t559i%_Tl5z`HtbQ^7S!X=R1d2zJ3YU`L5uv z_4PSi=Uc#QU%!Xzd=Kz9`ua0m=R11Gu*22-_j)F9oo@`+`7Yo(-z8l0Gq}z-ho`>( zEnMfjhu_E7S8$zg17G?26I|zehTq@UNADbV)A>%|nXjM0b-oMu1ATo8*ZF4fwXZMX zI^PQZ9RK&Pk8qvu39j?);X2>wUBeEVKZWajXYhyl{u8*)H-+cEeht_8Zs3pd^*gxE zw}fweeGS+79^sGo^&MR2+rtZAKYsVHo6dI%e~PbP!F9fCc=ud;eO179zB{{C0ysbg71BO4%hh>@E7~~JzVE| zfS10$f$Mx*_$z$<4E{!6zk%y~xA4Z-AK^OR6a2mZ zY~R1@;X2>wy~7S#KZWajXK*KnQh27dJQJGjobgulbr*KnQh5#IXx z4zBa<;qUYH3pZ~ldqq{b-oGw3SVEsPgnPU=LNpGj(G#$Ud_CPufM~*gP*?9 zyoYbxqkkMe-qm;7`U!kGHjm*W_c?ra4O^eU$G$#;UrRsF0DtLE+4orrc=-YI9sI$! zGOyvEsO;mVgTL?7{&OtvA9ncGzqUE^3w#Ct!9TS*1^mx%V4r6X@RwcH=C|h#wLXDA!2ccgC4BMv zpSv`F4S)5w*nOVEwZ4GYOYaX~-Pyc^kKHTy{zq+n17F_Dyrs{cd1?P0d~{Ru9zOk* z{iXHM6~oTwJK6jReD-i#AH$cat)Ii|dzvTk!{z2Fyml|(OZ9|@p778U9(uwfgfEzk{oP4_E)_6T_ZM z?>~X7e*!<;!(Y$C)jxx)e-2mw0UG!`ZsX(Z{h0S(Y=2USO4f!!=CCtfvbNE zSN}O&{S&(PPvPocz>jzLuczSZU&7VDf~$W6SN|5S{vBNXd${^X=V8y2fBimztA7kv z|2bU!6S(@PaP`mV-am({e+gfC|BCLfa~in%w{Z3E;OgJQ)j#_5u&4S@;OZa4XL|h) zSN{aA{wZAjGr0QaaP=?f-hT&I{|0`(o8A8{T=#zmSN|Ta{?WeTTc z`loR9&*0}f+WnKmb^jM|_20qOzl5uQ1y}!u?)_W1`bVEdPwzj0tA7mF{Xd7Re*#zk z6t4amT>W#n`WNt{_us+Qzl5uQ1y}zDuKq1t{X4q%@8Rkne{R@+e^fgZCzlE!R2Uq_duKv-#4SR;y|8VtB;4|-^!qq>6 ztA7qx{{pW5JGlCnaP_a?>fgY(-oJ&be+O6p9Ybd*i-!{aP^Pj>OY68e?s^E zDO~*vc=-MlT>VS9`d4uEZ{X_R!qvZntA7ty|LEU`J(u2p0$2YSuKshl`X_MpPvPpH z(Y=2TSN{^O?`KtT^>5(n-@?_ugR6fJSO4fghCS7P0$2YSKJ)%_xcVn>^-tmIpTX5X zhpT@<_x?M$`Zw^ke?PH>tA7Vq{~oUX(HDk2)qet4{}`_RbGZ5^@Uiz#>3aPSSN|NY z{smn9cX0JD>E6GBtA7U{dH)`+{?QlFQ?LKw>L0_^e-2mw1g`!mT>Ufn*}w0f!*%}` zaP{B8)xU(Re+5_nhVK1axcWz58ur|(CtUqwxbFWsT>TTc`loR9&*18x!_~ilAHDw$ zuKp!l{VTZoH*ocD;p*Sfy?+l^|LK>9{on5Yjza=}+}wU{XAQrt|2sZ4{8}UX`L_=K z{#%-lzw&>-?i{Y`uHe`6`2{>)+ddC)?K2wLzwZ}~>_7Vl*w;G~_{u$o?|;_6K7y~@ z6Zq6UrTfntWN^LS&f(#HgV#T2``N*D|CI36PultlKEAhk1E0FL@R56TrD4z218vTP zuAcDF6CQfPLr=PT!b4AZ=n3DeCp`3oho11z6CQfPL(eM@dro~n6S{iBPr5(hp(i}_ zq^l=9^n{0=@R9Fl2M;~rp(i}_gomE+(DSQ?Jx}ThpQ)Lr-|<2@gHtp(k8DM^_p4e2D*hoiY4g{&%65@Yg-cp8s?B6MW7d{;I~-H*kG^ zIm7k&W%AX-ed_bY0OUTfkrDf9E`d|ET{x zqAmOipHsor;ROGg&sev`e;w|pewy7s34Hkk^Avu5ocRh~Z_P9K`RV3s_~NnVIehvU z^9{WI@)It7f-dNvG2g*g|7yO6pT1&V!lzey;-&cq_~C5pEBN+P<_&!LMw`>ZXYL(* z@7}}Duh?JOPZSN$YxGL<34Hu}<}v)>K8G(3wmyN6eLpFD^HN)%(O+bq!}a`Az}G%! zNB21m{PdUJ6CQfP7rwrShn`<^K~H$-2@gHtp(p(O7q$-Jf*bpa0JVJ>j7zJoJQzp75i3!b4BGdcs3bc<4#@IW>ItCOh8-KK*_BxH!TW z?k#-deu9twz~*%Dm9HQDzr+4}-%kYBe#UU^X9CxLrf}^ihHF1F`q}!-;hVp;$F+dZ zK4t5d@Pm5_*PInxbJp;c?JeLowx=4|2G&kn9Rd${Ht;Mz|GpZR`jx_3CjwVxKQ zIVZZ$Im5M|9=`PTqpuy_Z+cuY{QLz!clgmgfgiqT>r?pRO?IDT@bO=o=kWDknHTU` zW4?nQ|JuBSAAFw`{QO6@zJVYA%)Eu`d8UJ(d`=IqeNOz}hMkXJ@}6|{gfG<-9(uw< zPk87F4?W?bCw!}(@X!+;dcs3bc<2caJ-=?)bFH56aDT$bzCMMAp778U9(uwofS)ubablKNs-& zI(FS1{CG|C5`K2C;3xNv?%jHL==lv7^n{0=@X!;kJ_$VZgll~UU#llP^n{0=@X!+; zdcs3b_*y;Tq33_UpeH=^gomDR^-18NCtT|@_)uzpnA9pc)Iy0Za4>vZS!&g3M0U!UM ztxw?Vx7qXm5C8 zlX(W;{;+ut-`v@}fS>PfzJpKiW?sT)KBs~oFSqp#{NUcgH@CI*9sJ~-d$^vjqHh|W z*U{Hc;I(@K-}vKA;h`ry^n{0=@X!+;dcs3bc<2e=swX`3gomE+(DR!w=m`%!;bZlL zho11z6CQfPLr-|<2@gHtp(lK;p778U9(uw<&&dTn;p(}7>+@O$*Y}UMaDBe3;QGGO z39j!eMOPc{Q=cDKaP6mnYd;6L=8V2&IDhmo`*@$yA8MY!XOA*Z;pa!1XYiGK4&VEn z0>1cPHfIOlKf=6(FWoD+);I8(uW#uOx6iX3eEo2{ZVx|tx9IA_o@e(7{N$d%m%nWD zQ+VhJ4?W?bCp`3ot4|3JJ>gp4z{lzd*T-E44?W?b=QS?q2@gH#e*dKK&=Ved!b4AZ z=m}S!5*~WOwZ4I$f64BL79M)SLr-|<`K=f9gsbNQuIHHyuCEKWa6QkQ;F=SC+i*X6 zo}9roX9HhttWNuiba>gZm!7buZzyf1Eb(<1_rc;OnQGckuDfyoZmTY94+2 zu+QmN%_s1M&yV5zt*xKKYoC+Abzh}${rq7D*UuB?@bi=Hx&{2?Ucwi@X6q}sx;1ch zYvJnF!PTvYt6MZ3c2>6u-Mhtbb(_Q0ErF|B3Rkxbu5JbV;N5m`bt~cOR>9S+fvZ~! zSGNwXZasYC-J)v_JFD9Su5K}0-R5w0OW^93!S~Ox`z?p7TLD+M9bDZ?xVlwvb!*`2 z*1}ibt%Ivu4_CM7TEoujHi4^K3|F@VKJ#uVT-`Fby5(?nE8yz3gR5H!SGNkj@NNxU z-CDT1b#Qg-;p!G$d)QgsVtD;*e;$UbTLM?N6s~R=T-|cGx)pGB+rg*at%R#v1y{EQ zu5K+{-8#6sMb{bjTza<&T-{>0y3OJ0mcZ35g{xZzSGOEK@@@rO-F9$wE8*%^!PTvS zt6N8ZmfdeXT-~DY7XyLOErp++V*AYC>XyURt$?fB4z6w`T-_S@ z+Pk%My?%qMTMt*a=sSm<)olV-w-~N&b9n9D61cjhaCOVz>XyURt$?dr2_Jd43arrrNLxVn{ab*td& z*1*-Rg{xZ!SGOL%@orH(?5u7RxVpt~b(_Q0ErF|B2A_Jj9IkE!T-|nXbt~cOR>9S+ zfvZ~!UwO9jdxmdbZs#((!SL}ee#d+aU%OA? zTA#p2%U}Edf9hp4O5x+%nP>3&w&popzfW4g_4}kdc=&r7aQ(hd1=sKUH1NIer-kdh zI=FtHw1?~5qZ^{L|J{iRT)$5m)BX2J=WzW#X-2<`_k^o|0ayPWT>VS9`d4uEZ{X_R z!qvZnZ@hmGSO4fn!=CCtfvbNE*T>f!uKo$#`=@aAFW^(}zk{oP30MCLuKo>N{ad*D zcX0LZ;p!jVc-V90{U>nskKyV+hpT@ASN{~Q{u$l-=Wz8e;fFih{a?Y=zk#cN3s?UR zuKqn-{iE5ir}|Ie>L0_$ceVY`=})omuO)ExPvPpH!PP&9tA9cF{yVt(H}Hk`Z{h0S z!PUQqtAF&}!=CCtfvbNESN}O&{S)|6pTFR`|1-Gy=Wz8e;Of7FtA9!N{uNyPJNWTV zcK`Hn^^g9?u&4S@;OZa4)qf6G{{*i7DO~+C_}2U9aP=?X>c4}le+gIr3aU$` z_wV8AAKzry|9nS({)DT40$2YOuKpQZ{d2hb7jX68!PUQnAH07BSN{gC{w-YnJGlDy zaP^OFI_w$#o*rEN6Zppar*QSp;Od{l)xUtN{|>JHC0zY0xcWEnwfAq~>fgcDzlW=T zbhBYk^`F4iKc@TrKZmP-1|NI>obF$L6>#<6!PUQntA7Po{|2u9EnNLO_(HG$;p!jV zeArX{Cvf$T;p#t!tA9fG{wZAj3;6zWd;ZzMb^n)e^{?RS-@w(sg{yxDSN|Ta{?UBc zbE?<>aP^Pj>OY68e*#zk6t4am-TUWo^)KNw?_a^yzk#cN3s?URuKqn-{iE+4_Ei4~ zT>WGC$otRX>Yu>XKZUD*23P+auKoqx`|sfD-@xlT*!|za)xU$Qe-Bsx==+8})qet4 z{}`_RbGZ5^@Y8K<|0!JkGr0QaaP=?X>c4}le@XZL6R-auzk;iOL-+nIT>Yb4411n#Z}-mxuKqDx z{pWD?PvGjG!qq>6tA7qx{{p`E{yVt(mvHs3;OgJN)xU+Se@FNJJzV|c9~kyud;d9H z{S&zQr*QSp;Od{lYkyz2fa~uW?%?WQ!Z+T(f~$W6SN|5S{vBNXd${^Xw;c8ium9od zpTI}nKZUD*23P+auKopF{daKnFX8H6!PUQkue^T?SN{&K{ykj%qgxGos{aJ8{xRL} z|2bU!GkRjrKRI0e3%L64;Obw()xUzPe*;(l7OwsseBu3jxcWznVNdm+z|}v7tN$FX z{t4atr*QQz;8X9vgR6fDSN{sG{taCHTe$jnaP{xu>L2~!u;nskKrTlKZmP-0$2YO zuKpQZ{d2hb7j*BxgR6f7UwHo(uKpcd{d>6jN4FmKRR0NF{bRWL&*AEyz)zR?>wmcV zXK?k;;p$(&)qe+9|B~+gE4cc1@PmKKuD?gu!}a&*MzduSgomE+&=Ved!b4AZ=z05L&#ijG z!~F?A>i&d>p778U9(uwN4(^n{0=@X!+;dcxIndWT`pgjN$sbTQj)+ z?$#V$``-s!!1Z^x61e{E))Id5{iJaHJ((4}_VsJH=H&3>(Vho3aLw7mHD?D8f5#H8 zIS07rRPe>$*?wxc<{aUg)4~rv=LFZBGhB0exck_Z)uuC0k#>w~sL2!I!gVj{fsMC46*K^9ru7I~w@R_tVlJZs*&< zx4G@7hmYK&I}ZDwf6mrV;G+kcC-CjsJcWmz@X!+;dcs3bc<2caJ>j7ze5{`E@Vo~P zJ>j9}oi6AJ4?W>i^@N9>@X!+;dcs3bc<2caJ>j7z{QUEFKeX`B6CQfPL(e;3&=Ved z!nY6i`x72|!b4BE-e)M_dY@qj*Y{aUxW3O)!9!2@Q9a>$pP_^6eTE*c{?T2AJ@r1r z1g`fPV!FT2Fo)}Xh73OS{yALz3%L64;Obw()xUzPe*;(l7Owss{NVk2xcW!SVNdm+ zz|}v7tN$FX{t4atr*QQz;D=wd`+o;l{}QhL6L0_^e-2mw1g`!mT>Ue;_s`+#U&0sOzk;iO16ThRuKpcd{d>6jM|T_cRR0NF{bP9T zuXE;b^-tjHpTgBYgR6fISO0?U{daKnZ{WxO>7S3_>fgcDzlW=TboXIT^`F4iKZdLS z9IpNeeB=F7xcX;s_0QqzU%=IW2Uq`+?)@vc`gib^_wV8AAKhcvQ~f7!^^f7|KZmP- z0$2YOuKpQ(;r(;C`WJBZ-@(fgZCzlE!R2Uq_duKv+Ihdsm3nZVUQfseg^3RnLO zuKqb({R_DI@8IfR!qvZmtA9iH{w-YnJGlDyaP^PUVNdm+z|}vd`~5$MtA7UHKh&Oo za=L%rUBK0U2Uq_RuKpEV{TsOYw{Z3E;A_49hpT_|qr;x+KY^=%3|Id-T>TTe_fO&K zU%+SHe+Sq7U&7VDf~$W6SN|5S{vBNXd${^X_Zs$G>h(Wd{bRWL&*AEyz|}v6tA9rK z{yALzOL+YdyZfgan{(gH8SO4g~!=CCtfvbNESN}O&{S&zQr*QSp;Ael|JBRE3 zFW~CGgR6fDSN{sG{teyxw{Z23er(ut?foZk^^f7|KZmP-0$2YOuKpQZ{d2hb7x1I^ z-@(W!+t)DZ8>*w5d zaP=?Y2k&3O)xUwOe+yUt4zB(^T>YcfuxEJv4_E($uJ5P7)jxx)e-2mw0Ue+zMqxD)xUtN{|>JHC0zY0 zxcWD6^>5+o-@(`3zlW=T^pnG$>OX<2e+*auIb8h{y7y1v>R-SQ54P8zJGlCnaP_a? z>fgZCzlE!R2Uq_duKv;ehCP?we*#zk7_R^-tmIpV7U44p;vYzVQAPT>Trk z`nPcP@8Ig+!__~!|FEa}PvGhw!)M-q4p;vKuKp=p{WG}w=Wz8e=-z(^SN{fn)c5z{ z>fgcDzlW=T^i#v0>OX<2e+*auIb8h{_}KfWbiMwEtA7qx{{pW5JGlCnbnjom)&B&4 z`0!6W&CO@<+kVb`1J~cFE8+TgSdMUAw}?-0@uG6vxaM* zHGK6*d%kVp`nj?reBtX)aLwu9`gfMkaLpNI!^fpL5nMl4Him1?6s|cjT>q}|46Zo~ zxaK5q{kv&PxaO?jnv=oxb7gC|=4{}aQ^57_rfuPxQ^Hrz_V;<MkKI$a)@ShZhipy`51&Wir}x|X9sKYQ<|X{-Ucqbk6I|yTJ#g4f z=R1Sz-?d5MSKQM7Jx%znzUIGQ`aE@lhwJ|Q1=oe^-`Ppw+Rq05s>b$nf}cKP-Fo<_ zGao%@xS!R>%p-X1_uCl0_xUk={n@X-)L{<)?w8v>6ZqsS<{A9>z4mjhIsD*Wz_oq{ zKh6E;X5qDa1t0nR2EO<8EnMq6_{P`waNYmWgNOZ>H?w_C;A8*!-WWb}pTno_EBMvk zVXup7xbDvmu8)iHdbrPryvolDe!hjD7ku>n<^}xledas3UMH7uy-u#+`ux?v_4%uX z>+@F!-}-)fxV}z_eqq=_uahTmoo@`+>*P6HuagtHzD|ehb#ejUc>f(-{Y$v|S8(-j z;OgJP)xU$Qe-Bsx=pnR-_Hbvj)A8~EOzXIi-W zcX0LZ;p!hfY}ix%C-BvXvKC-9l~PvPpH!PP&9tA7Dk{~cWYOS-;JhpT@F zpLzctuKv;g9QIWI30(bSxcblG>Yu>XKZUD*1|NI>obKvF)_noJ3{l0Sy*Y7(o;7i|6 z0@r?)aP23BYd-SqbxPHI2hwJxS zqkMS2W8cpNe*Po7&ttfLzjY4R{g%M>`>iQlzu&rnkABp87I6K3>lUuxZ{5MismDAj)0N%NDSY|k<{5nB z>vQ<>Cv1HIpWfGe2Os^Ic?m!I`U<{qZ{Q>M7Ov;R4zAa+JzTGgqDKz;0N~-zV{9leCyu9Lr-|<`M)mc2@gHtp(lK% zo^POkfbqUvfQo(hfG;qC7(!%vVNe9<`(!-aJ@{jAy@NwzmZUWbR z62sSzusL(M?vn(r`y_?yKFQ#^Pja~KlM)_!!b4AZ=m`%!;h`sdte%g#peH=^gfG<- z9(uw#_+vA-U%3~ZpGybV^Ft5U^F#D2!*d_K)A~=~^*hXCxIV7u^w!oVa6QkY z@V(E^;Cdd&;d&k@;Cdd|!S#K;60Yyl)o}H1;5x@6T<6%qS0AtrJ-oisvo8HSRrKUx z|Lq68KYaCm?++ij&*7){dVl!hAI($v=7aWqgbY6Q{p9ea&oAIB_Z|G~Uc&d@r-4u1 zTln@G)~$nYyh9IPxJUnc*m>n0Ch)cIGloxn{T!}t3H)@0cZRE523NNnKKqc(Dd4LQ zoA2SXE7{L0j-E1nyz&+NcDJ^lAIsqX{>H0cx<7OH!=LIuhY$aZuiwJ&;y<^)gLl5Z zgn#Sz*!w~Ucwe&U{&RHj z{dMiW&EcCHniufHjm>xPna?TVhwrrY6?}Vb^9H`Zk$DTB#^xRTJT>p(%WIlPPaAd^ zxliCT_ZS{Nj^I<@X9`!h46bfDT-^$|y6xcVR>IY-f~#8tSGN|fZXI0RdiYqKx5Lir z7Q@Fkw{w}pm+lGta5GzPyp1$^Y|cW~{$gdcrQ1E1d3=C|hU;d)#NeC7L3;kD1t;47cMflvK;uY-^7=8qS? za*v)de7xJGKVJCAJ%%6dV(aJd+UF$!uE-Ank=y@J>74SeI?!l&*XeC^)DbuQ7fhx?!T`WU|dW53_vr#G7?@P)5W z;Zyeve)uDslf$R(1$^tigX?jX@RhG`;M4cobzAu8H|%`y4imUK#Bg;;;Ct_o!qp*zZ@ohf-+PAwzIvy3hA+KC314}K z3aP{P%rfls|d3*SEciI=`E>);E&ZVzAS`QdrP&SUQ|q5J(1!>4+FfU83S-}`=2 z_{yL6GWhsI)~$e_{=s{~)uDu+-f!zG_(IPQ@cr9ueG5NcVcx+mL^-{PcI;8LkcueCqpY;p))A)ggMp zu;6u#8+1HASQIb0nI_}bU+;0twzuaDNbhU@iz z{OiL$$2&axQinPG{6ppmeC?jXm+l#S?4H9npf=Ht_MC zZB7ec+}^x{*S9n8;iFrcN53)bIl8U+1b+6%o4{AzKZUD*23P+auKopF{daKnFX6|Z zv;9}_#pUJ={OlcCxcYZ+_3z>8AN}UAr}|Ie>L1g+{~WIV8Qsr4r~7?dz}0^TSN{^O z{uNyP8~8c1&Mo}-Wb=;h{d>6jNBdz<^`F4iKZdLS9IpNe-TS9-^)KKX@4they?+T; z{|c`D4P5cd;c7+{v~{W z8+%+8T>Trk`nPcP@8Ig+!__}}(Xi+2ezud?d0A$rNM^WmQMcqj1lFPX>i zt$)1F;p&jU)ggn|x3>8?TpbFyI_%);P{P%rf~!LVKikGKnpWxb02iJbia6PW*WyAd(cJ_ED@Xeo_$MB`EpTlSF z3A}!e%}L=i_YA&w&*9w8$La~!J{$PnpNCs`=n2<8d${%){oVyV z;l~g9{R!7T6L|d}-jlALaP2dPYo7%?^n`DHpA}sDY~Ul^pYYHVu6_1!?K3)D&=bB? zPq_A(z&Gj%*FH12_L;-A&jKEL!pG_f*FGEg!uQ$2wa*T&efDteGy44tdcuz2444mf6{e-!nMyHu6;(Yx}Ya~sh)7{Gl6e>pD8@_ zglnHUT>C8Gp(lK-o^b86fiKh(u6=fJ?X!n#pV6x?=m|f*-|tVj_L;y(>Iv6AGr0Dd z!?n)>9(uyJzRwD-eKzp=^L~HQb$`OO&mOLQMt^icPxw+j;o4^cuRmk^OzC>P1lK-u zxb|7VLr?fvJ>lAC1K;>QTe!}>gKM8XT>Fgv_=2AB<3IZS3D-Uo_(DD5+GhsWK6AMC zS-?Y2_}2GX!L`o@K2lG(_SwO;&mOLQM%4v9;Y;;|Yo7_c{#U<0>AFAR+Gh^eJ_~s0 z2_LH`T>EU`8{cOO4?W@9XAjptqd&QzC;a$6zdzyHX98cSCtUl?;M!*n*FFn)=n3EY zJ}bEP*}zBY3D-V5xc1q@wa@4^7xaWL)f29LCh+>xet*(+f5NrT9Iky9@X!-JR!_M0 z*}ylx&lVnf!nMyHu6;&-dO=V4@x6Y3!nMx?zEDrN_L;%8&m69O7Vyv$zV&@paP6~! zkJJ;ceRgo|vxjS+(Q7a0316xwT>DJm8-E>=!nMx~u6^ck?X!S~p761H!nMx^UZ3qg zY3X{s1lK-$xb_*n?t-51<9q!6glnG(e4(E3&=anG=5Xz^fQO#&t?#pfYo85#qn>c> zvx94&JzV>Y{_KLD@TGdfwa)}TQct+{nZdQs9Iky9@X!-JR!_M0*}xa-3D-V5xc1q@ zwa@7F7xaW5|H1E1xb~UA7oV{8DO~%^;M!*n*FFn)=n3EYJ}bEP*}&_6^N)ABKHlNl zXAjptqxyoL@TGdfwa)}T@^eq&p(kAX%;DN+0S`UlWA%hFgP za6wP_vGw~Cu6-u(`cr;?()D@?u6^ck?X!S~p75>jvw~}%4Sb=V@X!;kefDteGy3xj zdcv3L3D-Uo_(nb9+GhsWK6AMCS-?Y2_*gyR+GhhFsV7|f?BLpG57$1Uzqp_${P=Fa zKjGSE0$->nT>H%6+Gh^eJ_~s03E%oYE4cRA!0XTX^Cw-;pK$H7hijkF8!zYyU#cfu z`%K^?^@N9>aP2dPYo7%?^n{Pq6Rv$W@R5JsY~k8x2iHD(xb_+SH%7+Gha|J>gs5X9d?j8~8@|CtUmN;M!*o*FK{+UCYnhScum+A@EJ`?yx_a|KY z%;4H*4%a>lc<2cqt0!FhY~Ul`XA9RpJGl1Q!?n-ouP^8cKfc57Pq_A(z-xVdMAyeV zT>H%7+Gha|J>gs5X9d?j8~8}~Cp`3oYo9$_`;7kPf}ZfDdcw8O1isMy3D-U|xb~UD zwa)?`dcw!*3D-Uw_(q@K;o4^h*FJl=_8GnTf}Zf>+x`B8Yo7`H>^}#a!nMx~u6^ck z?X!S~p75>jvw~}%4gBEyY~k8x2iHD(xb_*n<$|8@rFz1(&jh|!Pq_A(!L`pEu6-78 z_1wet_vJ=^JA7RFyFd|qagE=-^!wmr_%;90{(jK{KK7qyPT`A3*zcjQ;JR)G*LBzM zf9veJJNWUR?S8J{x^4~E-$!cTn{TzpdxY!pj@~-#rpG&h>$+38t{cO3-5FeuH-+o* z=5Sqi1J~b)D&Y0E+2h^9^>}Nz9&ZcRbx&|zw}b1tXSg2kCu0)u)BmU$* zxc1q@wa?LU*#A#%WPispf}d{g&kt~|pTb9XunsYN<(|N`|0P`ePvP4C3a0N4I2xb|Pewf_dL{U71FpGSW;JjdGa&j_x4j^Wzp1g?Ef z;o4^m*FI-(-Onjp_j3l)r!&e`(kGmFLkDhbs z2=q>frm^*mcivU3dET!*kSi=Wtzj0e|e$pAX@u+xqh%T-V*eb=@6Y*WJT+ zkF(Ate45yG4{%-g1lM(YxUM^T`>@Y<{*^u62)??#U3U!Ebr*15H-+oEEBIYrYL7RA z@9$vOUBh+VJzUqV;JR)N|C{f(=jR4~y4C*Ny_;S40M~U-a9y{D>$;(+2RKR0kaKOf<` zZV%UWC+{Bi)ODwDJwL~AJwMOjx^4>Bb#u6`yMgQZxq$2Wc?;KdE4Z%P!gbvfT+h!P zT+h#ExUM^Chdp)OIb7FW!1er`!1esRgzLIFT-V*fb=^H&&(9@X&(8$)ji*ImK&{G7q{{Je(ix;wb8TfueR8m{N(2CnDlBV5<* z;kxeRJ;R>5?i8-)=NPW%=NVkrP2sw34%c-z@aulwJ|7kE{k8n_FI=A&YWTsQpIi9y zdH(ttuIqMiUH1&vokuH&D7;d;CqxE}8guIujMx^4;A zbq{bo-WIOM+rxF;(ffvdK6tkCjo|->uKSLfpR39~K1d4)GJs&D4n0U46)+%W0D&NF z=%G3wC5pg+3W0|*fM^uKv48;t2OB|(gCGX54A^3yS6?tHWh_V#eHjoi@=)Hjp1rT% zTIajuFBc!rI_EljpJXz*@8A8bZeshL!nNN8T>H)8T6YE4x&>V8uHo8m4cC5KxYj+u zfA=x=oYTQKpLpvf-{X#Oy&pKiXHQsPGX4x-73R@L!a8sK=Q~sQ$^VW-3}3z9=9$5j zKY=U%9Ik$?;1j=NvxO{Re*h>~k(TKMT0>WN_tK!d15tKJoX2Te$MnaOK&- z|Ljv%p9Vhr2CL5=uKJwdORvKjt~?`Lc_tqV>#RHxTzRH&)hC6kK1;artF6<=McMr-Ccb7OwiVaMkAsSDqfOJSX@+zti3$4e-e)?epji z*Z9dlg?-WI(G;%FqXe$|=Nzv4XA0N-a{*VL46gi3xIRx;aOGdamA`^3{}!(NHC*|3 zaOH2{%D;!}e4gO?JRRW5d4?`Oi$EBMBJ3tzeK;d}j^F8KN?_I!1KD^CYk{v%xH z`2<(~0j~UKxbjc`CG5NM$8hDJ!IeLOEB_p>^Spu|y>4r`@|1Ap*}#>jf-BD!u5;VM zH(#=IdxR@b4_BTO{J;J4dVsI~!tb|mji3H&*q7Nyo^i?foWtk({Sf%%a(3PpaLu2= zm1hapd0WGkXA4)J8m>G$xbie`<=Mk^eopY6pPw^ac}BSMOgzlzri(r3*UX%&d(mMJS|*#4sgxi!IkF-*ZDcam1p{I zVf~dShAYnut~?1`dFF7PpA~$o`wv`sO1ScD;L20Mm1hgr`Dx)gKS#Lo^l;@F;gA2Y zJr7Sl5!QL>zb7_>|Mchl`5AsbJoS?MPY!?A$87uxe*6;~zk%z$;sLJr=aV7KsrR1? zxZd+`;CfGcfa~WGlTU{8>wWS9uAiH1;CkwbhU-Fx`L{RCfL*XAGKb02^H8a~2jK7R74aKG{he)4sv@U43cU%AiV8(%kpAAI~A zKK1b_eC^{G@QIJlzJ@R1XP+nk8oq+>eS87mxNqQxTU);>_}qO9-`>i`*YNc%&3Ev# zdqcm4jo-sp?k)W6et_?9Zu4~Tx%&}*PHcP+Ki$my1Yg|5e1MF~A7c-kDp?m&0T>DDl+SdZUxxUSx!4H1UmvHTC1=suY z16)5xnEhv1H~l=Nf}h@Jd20Cnz2*)5_sv`Q&c}D~qx%W2-%rl|Uzl_E$2NZspT6I` zfNu}xC4BDVEBM~WH}JKu+rqVO2iLkiTSts8wh+^>F*ZVK1$(Z%rX-`jp?U&9ml z(f2in>-Xg{xW2C~;rhOo!`C0OJgcwaYr22$-oXDMxAz7${2^~K-@)(q8G8-qBp{~7C0z4t;Mcs^=GnsazN?07o*n#SAGdk-aLv=g zHO~Ql|99K-^AWC}XZ3K+bAn&#la}WU*E}O!^GrSyo}c%=!SYPux^KjA%`=1FdTpT@bhQv ze$~T|?gM=GSsOpXPoFlAJ{$IHem0-MFMQs?-|jz;Zs41XZJriBbMN4XFWC4Vz8uX5 z`02mRNBG|7iT*3x*U>$JFFa2QSI!KsoH<-M3%GKYaOJGv%DIE9{?X^ced+v9;TJxC z;k!>+-DdEE*CByl_?(67KDmTn_?(5GKWXb0aJ}cO;Il8=_!>TOZ{X*z+V~cJ(s_fQ z-A{1UIs1HA=h>BOdtU)RUdgO862A_KVobLH6xboL<k`1uhwzNX*byn`!$4_E#HuKXih z`J*wc&(ib9@R{dN;3vg)4stSNQKQ|{~E6R4P5zKxbk=KrRVSA8_z$$x1N85 zPdtC}rLdmLpTdvQ}=TQ`QUy#5J%Mt zNBLv8@+WZRPvOd+(SOV8mcwVBzkshie+fU_+vaKD%HP73zk@4(4_E#HzV-YgeB$|| zuZHzpdj1$b_xu@L`E$7P7jWe-;mTjZm!7|dpT5uQ314{r7QVZejUV93Kf;win%K|( zqf5T!OeV@7!<9dQPd$GMU;F(hgHQbalf$Q;zk(}&4OjjKuKX=r`8&Fv|KZCQdOhL$ z$C{7u`QMr+mkR5t{3%@dGr02SaOE%Hi&xvaC4BDrEBMay*YNHCv3WYU^7nA%AK=PA z!j(Vzy0AXeYumap{QP{cCw$`hQ~37jHokx>e+gIq3aSH(dEPXO#JgJh966>C;a><^Ax@~nip{8FX75x!Ii&;D}Mt&yvo*X;d{^D z!B3vQhwuK%=82-PKFS}%l|O+ie+pOr48HOFIehBR4+VVdpT8x1`InZzfh&ItSN;yJ z{5@Rx2l&GCkMQ#gyq;GG>$&m#F?|2$Ha>$Ze-2mv004&@cnbVp752Q zpB6s3r;Q)r%0I%DKe}RAALWnX%AdgZo2e+yUs z4!(S?t=q%*{`@w;PyYNc!Y5vbs;78A2!#6)= zb?D&A-@}!EfGht9SN`ZqVSSFTv2|nk(x2ZF_}ufS@QLRy;L2aZmA`^3e+^gu2EO(D zEqw0zJNV4=_wdattq#$Z!}=(H3|IaHuKX!n`7`*&pC5Ag`MH*-fN%Wyp@bhQ8{fc{ zzlAG*2Uq?cuKWXh;rU1S(ep>&5Y}_;`D6IR^Jj47&*92nz?Hv*D}M!F`uoEge$e|L z_+0OQ;48m>4shik;mRLfC9IF~$8hCO;8V|^!groOgU>vF4nN-A&QAqb{u-|Q4P5zK zxbk=OciFl-kIg%JWz7iRZ83`@2~k zI=J%paOEH1%0I%DKe}pIpQY!I;S0~7z|Rl2oGE!Y7_Tx_Vg8qvwy|>$_SVGPv^RaOE%H%3s2jzoNg>)~(^E!n}bW zJbw#6-NnWaaOEH2${&4WSRdt&;mV)Dx1K+RA3T2s-+TTXzV!SRT={Fb@;7khZ{f<{ z!Iz%DhwnW9K==G3{BUQhe{zkmp30xXl|O?ke-2mv0zUQpC4BDpp9+5R`%ev@d;Sit z{5@Rx2e|T&aOID#8P;d%*KZ8pc>NRj*6W|bcXzV-7jWe-;mTjZmA{57e*>R-{uaLS z{2hGb`Fr@(^GDwl)<^kcxbi1(XyS7p1**vJ%0(`e5cLRz?Hv+D}M)9 z{vNLU1AOcGNBGS1M{!usmFJJ)=Q~>d46gh+T=@&Q@|SSsui#71U&AM!zkx43e+yrE z{sFH1BV75TZw~9D{4rel6Zq8gr*yynWbmWke{%XAto{{T`D?iHH*n=|;mY69KVa+j z@Y7Sw2l&G4Khiyaa;>nQ%AdlOKZ7fO4p;sHzV-YieBt>k`1xVBuNuBj%{#dA_i*JO z;L1P3l|Q<6Sf8cmkKwx~Tb_jO`BV7J^A~hI|HGBPf-8RwSN;Y*_53Y-;`uxH()0K5 z?RVIIqw9qAQT=1M@+WZRPvOd+(cf?D=J3^%%nSI$^Otnb-@ui>g)4stSN;`8&As_i*JO;L1P3 zl|Pz=^;vrU7{2iQ3H z&G%ZK=!RiEr=CBCpTE_{XK>}u;mTjYmA`~5e+6H9{u+LIg4Yv%c!+rmUwQrkuKXih z`J)?!^-=y9uKWpn>iJXn!t-bFwdc>_$GPpRf-8RwSN;aB{4HGhJNob0x;=dNc=G{1 z^ZX-x;rWvrhxJtc6t4UkT={dj@)z)}=P%(C&tJih54L^P@cnJfJGk=qaOEH1%0I%D zKe|a+pQY!I;S<0AB=Du~|L~dTFX(#yhbw;tSN`-UqWeF5duywI zbkndts(%bu{sgZ4DO~w8`tRDhIsD+)Zvo%?`7hxU&)>k6zlAG*2Uq?cuKWXh>-k6c z%=1S#3+uV^{4soeE2~2WSNSH zQ4-ci`D3{9C-AA~PvNJP*Ass5`%eyEdj1No{54$p8@TefaOLml@35Rbe5dz6@R{EK zzz?^ud6Jul^;G^8uKXEX`E$7P7x1m;FX0ot|A8O%{12ad{tmAEJzV(*xbly1<&VB4 ztk2T($MBWj|G+n%KZWnU#p++cmA`~5e+5_m8m{~eeCqjI_`$!wbnv<7@8MI=AKfCX zkMhTGD|KXdP+dK_i`CGX1cW~wJ;mSY2x1N85Z}k4> zmSH`&dj5x>6U(2$l|P3oe*sti60ZCeeChdX_(t!4;8VT-fv-IO09XDIuKdxhP@jp_ zA%-h|0-t*R6n^sSH-jJi{O9oF&1~HYuKYDz`5U?L z{K>7udMbYkSN;sH{5f3t3;5Ram++n5|G;OSzlQH`YIW$~%HPA4e}F6h2v`2-Her31 zoU%{2XhAV#qpL+flzS8?2_(sqF@a;{k{?R89%c>V^i{4HGhJGk=qaOEH1ThBkj7kdBmtzkXS zdj5y6Z)|nQ;L4xFmA`;1e+gIq3cmFGHGHS{KXg6+!%sJ|`~zJ1N4WAw-xk(K`D3{9 zC-AA~PvH~2|A8+(e@^%O6-k6c$*R-W?zlJM+16TeQuKXSSEw*kCU-|d10Y1_DANck*ueszeXe4P^ zPvuYH%AdiNKZh%S0pEK55`OUSFBN>R=YRO-)|S76D}N7H{sFH1BV75TJB0OFdj1$b z^ZW^X<@r;&)>sWx3v7x9mD!4e+*at z1g`ukT=_HluiN?0;V1w8Qos*-{)aDbVfh=l^0#p1@8HVc!l_$;yf75&P#-x{v`4P5zKxbk=OH{1L@eDC=O_|Ef>@afGg ze{$!ro~nNeSN;sH{5f3t3;5Ramvqlx(LH|+pWM{)cW~wJ;mSY2m4AdQe{`3yK1~uxbhe9t>-V{8@>O5Z}t8MzPYaD@8HVc!r{^%ZIeU_d- zhR-AGO9Ef%{tsVY$MP3&e`k+`mV4(${)j( zKY=TM3RnJ&{%d~!ho3KRUceWgzl1NZW%(Pp^0#p1@8HVc!-@ui>g)4tY{~f>o!&iR)9N-(>|KY1^SpMYR zVLes<6t4UkT={dj@)z)}=P%(4-T&ch-T&dct6TmKuKYb*`3Jc2k8tIWvamkKU$y$j z@R{dN;49Cc!naqm`~_V3OStk^aOJPz%HP1Zp1*}pJbwpYdj1~1xvJ%l?i1EW`D3{9 zCvfFY;mV)Em!3a|pT5WM|L}$9FX8K{!IeLUD}Mo3{t~YI6@2N}Zw)_q{Tuk)>)*n6SGN2ET=_@1@<;a#>!bWJ zT=^6D)bpqCo#)TsGtZyHPhW5OE4cF4aOH2{%HP73zoY+(-~Zto&p*JYo_~ZNuW0#` z`-SyX{uHkK8C>~uxbhe9t>-V{E6-oSC!W8CAFg2eJGk=qaOEH1%0I%DKe~TdpQY!I z;S0~7z|Rk|ex>kzWcdrY@|SSsui(mG!}u;mTjYr=Gur&;9;W!B2kwsp(&}^VY$YzlSUT09XDIuKdx1!}=`! z`i?@YPp!@Y(!j->*D}N1F{sunv{4IRt`8)W=^Y`%8mn?tukgz_g ze+*at1g`ukT=_HlFWI^|eBt>E_}cTA@a4rePXkx}7OwmqT={#r@(=K>=O5uS&mTQB ztmn$}$MD4$Eq?}A{v59S1zh<{xbj!Wr`{4dMj!Ii&SH(Idk8 z9N%c`#_*-*PvCpcpTbw4v3Ux(@|SSsui(mG! zWLVFQ=a1pj|FH2HT={dj@)vOBFX75x!I$r~b!+(X1zu11`myFMeD_K70j~TbT=}C% zh4oSX7_R&YeCqjA_}=qp@RjG!;fqgL{tB-AHC*`{xbnAfR&8>2Uq?cuKWXB`A4|&M~?~X zv-JEi-Sa2#x#v&e`+u_h1zh<{xbjzU<*(t&-@vDyzlF~|e+Qp={vJL#S^ns;VSSW8 zhAV#pSN;^P{2Bc{wr&nz`~9>^{r_=c zJ?Far!w>&x`7^lk=WyjO;L2aZmA|6@qODuQ=bpcT&pdw%KmNVVGr*O9ge!maJz;&6 zKZYxR0^fT66h8I*8Qt^e@YCN}{tB-AHC*`{xbnAft(&-Qx4C!T+V&p%}2 zlT}zx*D}N1F{sunv{4IRx`8)XD^Y`>0vi#8#!ulwG z3|IaHuKX!n`7`<(Y~36__xuHX=lM(c%=0&N|Nh>>mA`{4e-Bsw0lxM8BYf)lqwfvt zx%K=p{RgcM8C>HXYxbkOk<Ug)4ss zSNx`8&As_i*JO;L1P3l|NdC^_jfN>K4O~{{Aq5uODUO zQ~2u7%nP{kmvH5;;L2aamA`=>e$Liy;nNqGcl5`a_w+wCkDeLUNBLv8@+WZRPvOd+ z!8co5H;3>2`KN%N9%zo zlUJH&aOKb8%3r{hzl1A)1)qBU8ou=JFAaR}*KZ5oyu$JiaOEH2${+n;SRdt&;mV)D zCqHZJrtov=^@LA6e-7VlYWl^ z_52Cl^QZ9rbu51YSN;;N{1sgJYq;_^^xD>K;cGqr!#AG4hfnDA`1|u1uKWpH z`BS*^XYiB1@6F*$&tJgTp1*`|e$wjDz*YYiuKXQb`FptX5AdDmAK`P)A3Z0m=gRZP z@WYEN{{sG`M@=vJyIuwSV;{ciCBB8Pj#s(FTlimp-sVZlFwbsozc-%3_wE^d@ohFf zr+=$?0iU{;@Qu&Yz?G+kD^CYMc+MU^^K}RK#C?RX+>_^q^_kqx>jOXD);xo+zuoHt zpQm0Q_{6=We}|24=$@yAD^CYsd7d7Aav$KzKf(__K6+kQpRIcg-`w8o16MtBxbhcp z}$dGr(2P5w3bh7lrjv{usXVx+U<9dkUX;Jy-Dc_3S>- z!IyWi`uFga`vBkF&Bl-L>0QjD=ZE`RJ;XeLYuyyCbu;+J*UjM*U$=m-9&GDYaIIUz zwQfWAbzAuP&NhDsKRwcXfNR|mu63gqgmqi^x-tCZ>n8A(ubaWOZVuPF1$^e~mhhvm zTftAc?YDtz-4?EOJNU%c?coPscYv>a-ROm3-L!5D*SZP(w6OdseDCXK@Y5q~d;!N9bD`7aIHJQcfRfj-}<`Ii^6)I9&Y$Y&M+rcNkZVzAhx&!?5Aggoq;;?R7H->B71b(`!&6C3C zzHSCTJ=De*aIIUywQdDJ__{TG=Ib`_)uU|P4z6{3xYixuJ70H%Pkr6!C1E{RUgrd^ zbyK+3&EOkfH-}Gr-2#5n=Pz9A)^M%c(0$z&e!i2}6MkBn4{)tJ!nJPn(y(p|UpI!I zeBA`T@^h8JwQdgAx&?gZ>z44NuUo-Sey$q0)@|Whw}Vf7-5!4MbqDzB@mA;PN5Z;k z-59QQ6ZpxW-%|MA*UjLkm91OAwQdR5x)uE3>(=m{uiL;^zHSHCx;xH_{sM>z_soO z*SgVn8Bi<7~efTa(rdoPs!SXk!|{;j`XfY)1c z7_a)wUm50CeJZ&6b%Lutspr+Ys*m;|SDq2$m1nvA-}5wZ<(YV0HNW!YaOF`SG+ue) zp9$Aho;6(c>EOyU``K_F|Vl8?mPIqZesVD4*m~YyI-B*PkX+3{Hm}HuX?Y&S6{%N`8Jz> z2fykS?7r8*mFEmsp7_<_y3>c+{0q2p7I5XcW!lyrPUco2sJNOe0eoo*Q`UStxuR5%c`m%tl zFFW{!b>SD*gvQ-G%OAs6d#?|C z;^R~J@$EJ~gHPOZ_}S}Iz)z|teEJTXzk=^QX9M59)5f=O?W==pUp-v=8sOU32-m)% zUkK~0eZ}zYZ+e~KN8fJ-Kl}I`u6-47?W=@qUlm;Ys^QvK1J}M<_}p`L@U`!2fX_Z) zbr|8RcbiAA59_)7E%TWEajz$Q@hQ$ z{vNLU16=t>xbi1&2DONJeL073uV7xl*O7S%KVH$if-f&?Uc=X)w)57&j~AP_ z@THIM;2ZY=e*St}cZ6$S(JzH{(7s~0_Lac*SGM_6_{#HS@WubwzH+$sRlv2c3cmOH z*KqBtfooqaT>I+a+E)+Pz6QAVHNv&8=$FGfYhMZccqOkVT>Hx4+E)(Oz6!YZRl>Ee z3a)+CaP6ysYhN8)*H;hMz6QAVHNv&8=vTseYF{yY;pZ@c&%WUIdARnK!L_dy{BJI6 z_uJ}g_#XbIrQOGRxbDM~Uk&%A`&9z}&(^*dFX8|3PMg1kfBu!`JNVN-U_SY^a9!;y z`5L~2YhNW?``W=1&p&xnxUN1&68MGv!j-f98oq-oPX||?Srg{b{Mpy=HC%P5;ac|q zSAPe%_B(xZm`6Da`0ktRzEQ$wv3UhQxYzKR&(pwH*R*+B_<3sH!4Fq6@8KsOKfotf zwegc*5BID3ByiPd3IDh2+4We$Kee{!ffM}p|7PbudP}&j<}cv0n^?{gzPpuq1wY=} zyoR4{Y2LusK7R{8UCYLI@X2+|d-&PM5AeygZT#e|;eK`9t>8Lu6j|Gc)$0jAJlZ_^tuX(|=a1n>AD_Ta?hCl;zk{ou z9bEN1!(VZEzdye_%&GhH0{$(Zx98*n{`M!^`QO5I9tQZP^t!=UFY>zmc9`e*Lh~3t z^?4Hb;UXKK!gtR$&)^52Cx`ESd;veWZ{X_739dRsZMZL87jyV)9%J>);TQS~pS{HP z)x#G*VLrfDK7NF6Uu@%}_k=ljFE@|j>y3E=pT5*Qg>QU(2H(1`;Hu{Vu6hn|eQr+Q z8|K&NW(wDJv4S5jXV*mqf4%o*57+m>=zZb3+n@Ei(O>U%gP(rE>jt0rJQ@64+xQ%Q z`f2k5e)M@t_}Rx-@X62EJUh7hGWnfwzv@c@*EwIp)t3@}4S#Oj!He&;>!O3d_8sQQ z?}mA1@A7)W5AQb5;OE~m&*6tRniufho6Jl27Yxva1H}KUj+4v5AdZ&30 z*S-e0_BFz_uju!}x-H*k^T+Vh8_W~0G|H8b1Z`@n>_Rnp62Vec2c@IDQiTMDZ{+0O%Kl=FS55s+( z+-Gpra|2gB8@TFugsYw-T-VF&kHS3v?ElU;gFol)_PM-qd2Z;x7n;KL`$#+ZzxwZ;Ht_SW+3!6b;P<|df3Cq#KK=wBy*>l{=;J4U z66XK8&)Iz-f=}LLc@p^i-|hUQ@WmI*Gx+@T<~e-hUcl#{w(%wWIG9)P=_kx<`1#}J z4SeJITlm@YpWyfWoYg<-!n%F*Oa6TazWR#ihaWEWx=ViUSzCM-@JsMe0&9;UC+kX@RhIIzz?b?{N&?1_|C`o@c9jG z-2uM$@sqy@>!$Nuz~}ez{lbrTG_T;(d;5Ojo12<9@Y8pixA4P_%{%(-%zOCkyUYjp z$>$m2d!Hxz%dignTiHA@eCzWh@O@(AQ~1uuXYiSi&*4X}PXXWhzDoGi$5-&RuUo^H zH?f=z{B%$A7Jl@3I{3`z8Q{mv<{9CWdznXn71sIe=Ol*foFwqApTiWsSDoPp?{5y* zIVs>eCna3xq@w#dso^>&4P57>h3lMjaGjGLu5&WLbxuaO&PnvwVf}SZVz|yp0@pc7 z;W`g1xZXch@cNVX{IG|=?<)5E*~1^3noo{l{yY0~$O?X8UHFA{;TP70Us(75gzH}B zw)S(q1g_`&C0ySNO8A}q-!JUo`aadcKjJ@kKEr?C>#+EnFy}SCY<1hgSC2LC;6Lj> zzdpmC>+{Ed8_xfLi9H`K;99qU>pl4vewVk|JT3fz*R(pH;IF!_dGvq7JgVm$uDa!L z)olaUd1&D3%Mq?~HNp>%wmQ!~80Jj8o)vudAse@a@BDw)@YCPfc>VwN?~=4`hw)lh z>u9|ClKJ{_^<@oLUuwAea)7HZ16+NX`aZO-`jW!cmla%nso?61>ZJL#->47!qW#X{ z+HVfmem8LKw}ETFN4WMo!nNPo--kK1-wdw(uHiZlHC*Q*`iF4-&G*{pbqrrT-aLV? zo?xEBPxm#?;EP9@=kTSEFW@tuzl5)Rd%Y67c?_SsC-9lCo6?_X^JMUq*CB`ReVz?mpQjC6pN~hlJ|9Q8 zJ|AZv4)?3i#|*CPXbso-ui?7B4scyxvyX)9>T@uI>vM1o*XLjj*XQ5?{wV+Vg9BXm zpXo=#Ji7m+aNU1aaNU0@xazitt3Ewk^_hGu%%eIdaNSRqaNSQD_~K;q?%@aj-!1*0 zY`p&ex^HXU0pqo<*3o#?x$yPns`D1EI=67u`2<&;BhRb(Rp&Web16=v1 z{~Y#9`BS*^ui(mG!IggxSNaX>FPhnN;1+(@7ntwhSDM=M)d8;0 z!2$ls``GyDzlJ#<`vv3B=lTz%QW-*H!)Kl-?;QMEp*YMqsm^bkA516;`{WHxw_{8(~@U{B@U#xAO5k9-fJo-df z|IN$IWBA^4Ch+A?+V~W{^L}OUtpawOoreal^U%U|9y++rLl4(^7~nb& zBi+wKG=%lkd5GaU4+&i7A%*KaWN@8_9Io?Fz;zxk zoc+Hr=f(c_%rp4kKG>d5)^I&H9^iVe8{q2W^wZ(G>Pre&UsiDKw}Rj8tM)v$hkxkm zmVa^%*S&C_;TO&`{K9#LUpUWjeGl#6I_GD&>Jxt^%&9&u;5z38T=m?-RnHc#bAE#B zoJXGx^XQz<;X3CzT<3fP*Ew(CI_F2Y`aZ%{pV@zfIp6Bf^BMe}{&(2c@L$#6PlI2} z|4z{X{=sM1c^lw&_3tUu&xLt(-KB6{cPqHAy9%!BZV%UW*TZ#PWS+U%h`&zXp!?pGQo;VDo9buIm)8>v{#(bzQ-AUGL$#u6wwy z>&btId30STa9!6+xUTCGuIqXS*LB^&bzPs~I_I(XL3PtPSAXQX?i!3&osV$Ud4#LZ zv;PU}qdI4B)p-q9ool%2e1NOY16*~Uelg6WI;U{ec?DOUE4b>shpW!IK2&F&^Te+k zx$3-xtIj1{b>6{M=MJtqpW&)={H3rys`CP_Iu~%&c?(yaTe#|cf~(Gv-)~eO)p-tA zoppcGc-6DPc-8X=S3O6#>N)#LSRd6hgR7ovxawKMRnG%l^&H@;=hW}h+OO)F!d1@| zT=lHrs;52&G{4SmA08n1cu`6gG+3gb1;9wMO5ozDYY=W~GT zd`|s&M0s>RQ@GCO3a;~6!F4|MyrcP5x9GBA9aOhDTy@Lgs@n#xx;1ds?Fd)hM!4!W zyIh!4b<5zY+ZwLA)o|7A09W1g{HVI=9A^GpDOcUraMi7bt8NFl>Ndbtw`mmCL3K;v zs@n>#x>a!1Z4X!7dbsK~@#k*UL3PvfxLozAFkbc9!&RRiuKG-_7}i1cN#Lr_60Z7` zaMfoASA9CT>T`yxKCypaQ5{qteUFjrTs0W4>r~%|G+wUnPjb!E`S&OJ{O9exUk^Wi z_Boe){~F+nU$^li{PbG$=*nUJkM1#i@1DSCKjZHq;iuP_XYlpg%yamvHZSNuZC=9H zUWW?4^6@p@>(IdWp1*}3eVz_J`Ay5y!wbvrYqPu^wo)NozD4P5 z^*6d|SkJBZH->M#ZVCMGddr`}_dY&@tG_v1{Vm|Tx7z$AT>Y)+zHSXye;c^^+rnqw z-wv++_HgxgfKT?8e}t>Q(bdBGtG_W^{awKI{8Pa7dv05}ejnom*ZcYC>R}$uvx4jA z3l&^HN7%#lbA%qQpCe4ZF_aLp54GhA2m6!6u%{knkf-7EOSy@8+q#O7(?lRq=>;D`HXrEkGaum# zA0K^FxZm0PZF~%0AIuZ@{CCV#_{8VW;A{6BuJHwY?RiT0`FCyI3cm9BYxu6S@eO?T z0rL)i^uF|P^<{u>|Ip?c;WO1a4(mMkzQpi_k5Az0OA1$CGWh8|mM5qCIV|AnO9?;e zJk$Tc=C9!!uV({a`o3DY`qIJGmlIsqWAx2oJ@t2Q=5XCVH*n2!`Wn8tRye=L7jUh6 zfNT8h+W-4J8C>(M;mUu2YyJVQ@!564b$1{2^8jD{g?Ry=f7rZ)pa0Rkf-gU0Uc={p zA8X)?zqRo#T;n_V>~Cy*4?lbU0lxHgNBG9~6emR@_~?3JJ=L!mu6`wO^(%#|Um0Be z%IP1oz7%lvtAwjx6#2UlaMeG7t6wQx<1@JW zmBZDq0Q@U_zdE@3)x*`V$t2~V!{=;#44++Wp1@b`DSZAF8=t{X|8Abc*Pf?< z?=EHaDd8KRr-Gk7PYqxA_y#`zyya=>o~MIv+VYq>Td>D ze{;C{Tfo)d60ZJMaP_x_@4sqwYvAf{3s-+Txcb|})!zZG{*G|VYp z>Te2He>1rHo5R)L06Pv^?A2|D`x@M=gt;r z4ekCP!_QYWPvDcwo2T%DU#A&-c?}z%!;e0`fUmD?<4gMG%q#fG$Jg-XWo>)|Kl!>X zeD@7DzN32`diXT9@dJGS&E_L~=j%qd2UEG>Q@O@zbd%; zRm0V<2Cja!bnjOOU){j+_i*)VfU934T>Xk}8P;>>{fgo0R{~eRQuu}X!_}`GuJILo z?)|Fa>Q@6-zgoEZ)xp)T9Z-E-me_4eid-_ ztAt;uKV1E);Tqq;H#hS030J=cxcW81)vxH*VLjEa7_NRLaP=#td%rUH>H2UEH>Q_bge${aGtAVRuE&M|L;p$fp*ZAl*VLgvG^z#WTp0>emRrQ2%*YfAuSdYy1NK&;H-%%HZGS ze{X6H*Z30tdjIcY@8I`%ul+leBYf}wo@?^0Vg8Q}{_oAvx(=@K zvu_L6)$?iw*YoNcuIJSnuIJSQTzLk#o(~t_9_Eo3a6LC3;L1P1U+sUtYkJ#o{(IiT z`jWyw<9~N|1^<9Q4_9#got8aZb?)J}c#^FD3yQ@~H2zl3jn-3mUxsm))*S3XYzKlwZ@ z{Omr!_qVnANBXy$M`>8krJsiwuKp%;)f2A%W^na4hi`np1zi0t;p%S%SAT1``rE+O z-xjX^c5wB#hpWE>T>Ty4>Th(1u>R`f46ge_2ETAWhhMm#!!O*=;re&716=<-py?gM zoVx#{@P+?9!xjAPSFpcZSixWRjrRGthrjJ(<~{sLe*c_&XPD=q{`Vmh_%nU{68=X2 zdyggjr#;UO{#X9*Ogs3K{PXAxe}S(X-zm)bB>mk;_=|qY_FKT;>vh}0-{bXZ;hm2^ z!C&rqqC1CqUgCdGU=II^KhNawmDhO#e};Pl|B&Z7!hg`~Fv36eLHj(N-6hPq@%c0O z@ijJn4gV3JzlJ}{`*nc-vOgcr?i#ME^PjzTlH{+Do_{}QhAzk}=icW|BmGhF9CzI&Kc=YIj$ z`7hu)|691ue+$?7Kf!hWqkDvTbpGdXo&OxJ^S^=X{5No&|07)Ie}wD&7vB};oZZ8o z6H59W%q#fnZss+7eRuN)K6h{7r@Pwt4!*d(c@N*+#e9Hk{0LvBHa@y%xZl0+D~7Lp z-2{H{{3(3y^JMU?ubb1oZUubf>z44fdjmiFJS}|Yc{;fI)x*`V0j_?HaP=#?S6ENg zKZdJc30&h-xcZgB)vp|`eid-_tAwjx6?}7FJ0~@K>veA6>Q@U_zXtg3o;LpoSHGfr zhxJsyVz~O1z}2r5u6|{3)jx-;Uj#;dgsWc_T=lQv>Q@8T_!h2yb#V2ohpS%$T>Tp1 z>Q{6h)YJPF!_}_@u70I(^{ar-yk8|nGtA?vz4P5#>Q@0*ze>3J)xb~RW%IXiU0)qs{p#WB*8o?) zM!5PF-8ZbK>L0_^uLQ2~DO~-^;ObWnSHB9l`c=Z!uL{2Ke${aGtAVRuEnNK?;5+Zv z2v@(N`-SyXzhb!hmB7`n6s~?{aMeGDt6v3N<4d^uRl(J-8m@jdaP_N&t6v>_pZVt( zT>Tp0>emQYzmof-{@$+?u6|{3^(%*~Ujf!3w z09U_8xcU`6Agt%i`xV30uLQ1srEvADfX}>NC0(CiaP_N(t6vRV{c7RrR|i-9d${^F zz%_n^t6$Lr!+NS;FUEG>Q@O@zbg2|`&GkreKm0PtA(py z1AOQG8sX|!^q{bw>Q@X`zY@6mmBQ7p46gd;aP_NzYkUb;zbd%;Rm0V<2Cja!aP_N$ zukYobUvTwnfU934T>VNOjQV@OQn>n+!PT!Eu6`A8^{a%dUlm;Sui@%f1K0Q#u6}iJ z^{a=gUjtnI8sX|!^pLQgC;xsF!_}_@u70I(^=k#!&&?~ie!uht*U!14hlV-zbFMjD zKj+Hf`Z?DIu76k3!1a3wN4S1(VfL^vkH%+kjc?%72l)3I`0@Vc9enx_zmDKb_W{25 zc}Dp0!8T9y@G$@Me&#WJ?w-JB?kRlf`&z;E--)i^`tLjM;XnRv`#DYz*MG-+@rW?L z<}cu{^Z!0w2j4xy>j^(S+6V0PXh4b&8U>?IK?g@P1^QZ8G zdj{V>&gReIC!fE7AAEcXKf3SW`uEEnT=&B>Tzy$QI;?~0T)2MpK3n9 z_wFP7@B=nJdQ6yS{S@;UzJ0QJLVuEZ3g5eD@SS@OpB6UH2Ch0caMk$;SDi=r&Hd-a ztH*}>RsB2o{s%2j4?q2|`2gRzkMP+K+4$&j;krBb7(VxP6ZrJ$HctxQKGQsd&wP9i zpFG3HZ{Yg9xCVZq&hQI$hClMZ?Drg2-xKavb*|t#=O?)GoZ+u|ihYhOR^j{_zl8tQ zMK->H?_X+lXyFI<4!(G?jql;x7n%?7`E$)j_`*GUe3*ap92+0QckT&%>z=}w7uh@o zeCPWr;o5Hn*M4ib_S?X<-xjX@c5v;thiktBT>Bm2+VAWMVLh+t&j}e^=Wq?zd9LC5 z+?;%GIKSpe;5yG0{Pd&Nmm0ovZ{QpE7QU=(o{sM0d-&9Spuf!K8R2vH=!xNeXYMim z$84SjT=m?+Rk!F#;ryGQw0UCq`Q_#b{OF#-Pd{bjGx*NO=kSGl0iXW3%~QhX?iGCI zUc(Q*uLE3l7~rbg^vPj;x|`eY*QM~gJ=E@RJGkcW;F{+Q*F4!%!gWvYwL0YRwR-_y zyx;2vUw^>7f}h`GUc*oB4Sdzu_!fS8m3aq0yZ7+b+im;+KOW3S_|nHmMOdHd-p0r9 zwU1BWn>X3`6h3*i`3kPj-wLkhqCNcM@AU6k@JHUj&d=og!u-!@?DIN-zvPkT8@SeO z;9BXoJzF=0U-|Nua|QoBA78;$=RI6?j(#9q_xPWFuHb9;1im}_xq=_QV4lIJ zK2HvxxEF9;cO_icT?N;5SHqY8VtE?)-1E2ag^%yxvwyXDdicu64{%*~BV5}g^B zb=_rfJ!h`ry1r_-`hI|`@3W_e>uUZCuIp$G*L76GbsZhxx{e08uA}KQ!aTZ;Qn;?8 z6oAY%nZQ-g3O>8s>o55`Ej9dbS@QuP=>GXN!gU=*&kXmg>nMh=zi8(_flobu3Sas748Hl2&6C5=7n>JwT}LHc*U=8H z>!^e4oS)&kj^by9bx_|IaP@r$*Zdt^*U=fS>nQ%ga9v$T3%IVM0; z;JS{Y9}4s6I-0|E9p!LcM;o~6*}zrL=!e5~C)cp^AHz@IXr92QQ}Yx)bI;)0tK0Y- zzV>ws_{qJ5AKfeX($}rwbN2?mzN+PE;R_$%!8h(beC0lQc34lH!vwB#xPm{OF#+7rt%|pMJCD zEZ}n=U&1%;6@2Ml!&mMH_>(?q&xZs2@BRDQv<&N`{-$vCcLl%NHSD?l0N42$;F^E> z+;CmZpTaf&4*m=NcVim(wLQ-s{`%Kg9a{LaygnU#cN;&4@Wb8x9Kz2FKZo%Boz0`? zh5Ma-hj|R2___&v_Ea06!sn@Z20wqFc@EdQ1$;5L@g;nH3-by-zms_lKP2W2e0_8C z7QXfI9sK0$_VA;Rk1h)9seZ-qLt*PCaP=#NZ=Yi0Gq~!O!_}_>zIw9FQ^M7+ivA=U zU&FO-16RLVxcb$>)vq3|ehqN-YlN#`(euOlt6wo({mS6#R}P;%(dtmZ)vpqMe1eUy z;Hp~emQgKGMcVFAD3ay2WtyD}m2) zn3JRl(J-8m@jdaP_N&t6v>l{p#WBSF{Q1seZ-q!^5l& z30(b3;oFDW_zbSP<#6?@fUh26^OSJ)tD-;H#@BGI+rZVY7OsAEaP_N)t6u|L{Tkuw zSM=hr{_0l@SHCj2`jx{c53)KGaP_N%A0KGrE4b=b!_}__zI%Yp)56uS4!*v>jql-F zcYv#3BV7H8UJ}+*{fgo0R{~eRQn>n+!PT!Eu6|W;^{a+2?q_vq;ObWkpWfHTcW~9M zhpS%${B$3iXN0R?(M!X6?lT)7!?kV#SHDuY`jx@euN#;dgsWc_T>Yxy>Q@I> zzk2xQ-d2YJu6~X1<-Kft^dn(CRks+fekJhPJ#C&8u6||k^F3^Q4%fN`T>UEH>Q@C< zziPPp)xg!S7OsAEaP_N)t6$N}!g{J-F?@bUt3v`;zf$<-4mLi6|9`sfJ${~g{{R1! z(-tufu}H?phwpxz8YD}psT?-P5oPIMlEdO7<4{(KL0A++(UwC~NsD3#Es;rL$zjUj zvj~&p%4t4?b;|E!ACJdeE_3_Y{`h<@u9wH~@mh%u^?JM;oc%VOD zkKw-loIZh9y3Q%w`pn>w_MgLTUJJO*YYDfxtl&16HQe7*&bRY=V3GYK7iNSKZ4)0BcC%);5U3!KKHEP_P%%L4ej;Y`|v*8`XunLoFMP#%;46)gj=89 zqauFh))_b!n7IoyuBfZM#5aGTePuJc;MZC;%> zxAU}lb>TLz9^B^Dr|Y~%aGTc{UVl(>n80mbQ+V+Ksh`pH`kKRSUJH0SlRith&1(gZ z&X@W%+~(Cext*uYs|&Yz_2@dUKHTOtfZM!=aGTc%Zu1(`bzU>L&1(+#-!C~V;5M%% z+&NF`S8&U14Yzr9PHE>^o-2L2aGO^To}DB0eYhQW0JnJ!;Wn=kUFS81+q@=lo7WU> z^P0hJUURz6YX!G?t>N+6l0)Y$?L2K>U3w<b&1(g>d9CR>uijhR`P;nu@ciA9!vJpc8p4xzN&N_J zxsBmAuL(RnQ~FHdc74s@-WgIqhud)%aGTc>Zu45v?ez<8^XjDSJZ)ZGxXr5vw|VvH z_WA|4d5z)q>5{_)Zu6SLi+4)>jBc-AaGTcxp1wo+Ea5h<6+Ajk>eq0aSLbc*JZ)ZG zxXr6ax7RPY&1(R+c@5z zw@411Q`>pkyt?#Lq`n8Y-1=~v*MNSq^cm9a^$T9TN$SUNJMIK-^P0kKUNgGAe!*>C z3%Jc|3AcHz;5M%{UFX$1t)0Kks}FY)$zcGuc@5#=tE7Gex9egI_g^dZ6L_Wf&ndiq zgVfL9xvp~#w>}Gatv@d>;Wn=o-Cn=oHkZyj+IiYsx^VA!S$_{+>(9}Bc&hUnz+?3x zJX9aSef0!x?|04M_WqLd&h~lP`%yi(z26nWcm9^V&ohQw{|avJgLO`CAJ_W$a9ht1 zZv7YV;&RD<39r5*zJj}#iLc>S-dvMFY54ZdWaLa!P zxBN%&;v2Hg@fM%Jy`O2G@c1j@Gq}~y;g#-_1>EMfgxkDUaPO0H+%-JbdG*e0=U)_3 z->3grd;s?@6(7P2tslWdy)MRZo7V(x^P0i~+n;bd?tF_c;7y+JCQrES|25t6eAkvd z;Zdb|!kawdRzHF_dBU4K;Z2_KCQrEYLs{p1i!b1|&gB+g!7cwa-16_dyPc=y-=%B* z1Gw$yAw2uOoYx3$`H$gNKY?5RQ@G_ngIoS{xaGf~e^=JI+~O;E{3)ql!@aMGciz*^ z)9SnMY$5eMxXr5%w|NcVcK;c|?f#R%e{^?weyHF#= zxUGKyxAiaK)vsioovfWt@LTaN+}7WN+xq)(TmJxV>mR~x{Uf-oe+*A_{WG}#8(IGx zZtGvbZT(BQt$zi#^{?T!{?6I$JZ=45xTotMz=MCt`iJmzhxcxNk8cF8|0?xkc(E3r zz{5X_PvO2J{bz9NKZlopl0FM~rt4qA75^i%`!L9!qZgcFM+s@hM z*oE6%dT^U#A8z#nxXp10w>ggBHpemC<~V`d9H(%b;|y+dT)-Wj;}ULjT)~^1;Wo$4 z``S6%9J_FvV-Ifq`*54%0B&;}!fh@ixXp14xB3a(<~W7h9A|Kw;~Z{tT)=IPOSsK( z1-Cgm=e2XT=Zy$%&nFZ3H}&r<x*cAhrhE<8O(>U(g@xevGb4&d1fq|Xp;^BuwS|CahO+>See z+kB_+;`!2N2Dkan;Wpm|+~&K4+k97Wo9~*g^X+`Foxjbu3%B_W;5OeOynLRV?+9-5 z9mA{VO8o?GIZxp>-x<6fNuN2~=DUD9TEB$baaVAg?;7qtM~>V1P&-eXZx?R!?ZIun zeYnkc0Jr%L={nyL+~zxm+k9tmo9`U%JzLIq0k`=s;r_Fveg(Ij*KnI}=K|#UOzG2w z+kAWQ@Mx*;!|k{OxXpJ6kDeiYMsS<&7;f{Oz-_)$xXpJ4xB1TLI^PA{=DUR3d^;B+ zPrd(l;qg&&zCF0jw+~MusUN^C=ONtYJA$WAmp)^-&36LNj+FW-+>Seg+kEHn{0Ql@ zfZKeRaGUQ6Zu4EkZN8lkxAV98cIi6b9^B^JhueHdaJzoT@ZxYe-w9oxucq+wFsYx> z_4#TJxA`vUPm?}NxXpJ3ub(RQYq-s~^O1I*Hs3DX(LO!6&9@J?`3~SV-yz)QJA&JM z$8??V1a9-4!fn0_xXpJ7cZZVO3U1f$8ty$s>N|NmPs_OrxB2$q{-M&R54ZUa;K3nM zKZM(HM{t|(7#==Z`b^+9-znVYJA>PN=Wv_v0&eqN(sjNoxXpJBxB2!y+RoqR+lNO_ zlJgzFZN5Wze6ZAy;Fj|kZu6bMlP5}_Dct5egQua?&*6651>EMlq(4FWtl&1^HQeUg z`B*zon{O9x^X$L+ywzI}N8Xz4S6+kA&`o9_s2^Bu!&z7x33cS_g!&fqrR zIo#&Eg4=x8a7WL#^YM0`Hs3DXJxKED!7b-L+~zxgdjsh+gxh>aaQ{(KKZe_JCvcnZ z6dpWM`poG1{>B_`^IgDgzDu~xcLlfkuIW18&L`UW+kCrlo9_T_^Buy&N67h(;5Oee zJbJj)PvDmG6mIjK!Q%s^&z!FBUoGIt0aCw&+i_QLo9`N)?k{~hpKRx8*KZeY^X*)c5K7+&+NYe24IAAL%oK+kD4xo9_f}^PR$NzB9PZcTU&&F5oubCEVuQ znYZ(_`F7#;-g3S@xXrf@ceH*0xA_j?Hs2B4eW)CF47d4C;NC-|ehRna&fqrRIo$6{ zp9S3JyM)_(S8$u}8gBFLe5#$l&9_U}`S##8-#*;tJA&JM$8hJ4a=sI|&36j-w0;J+ zxy<2#)-UM#dbfl}TEC+2A?sYji?Mj;)9pNy`-ykqrS|E;qX$cUpRS)H4B$53A>8IT zqU#*Tbp3p10(bOtgeg2%pTSf0IXqThz(e&F{6DUj&(YTK^PeT&xul)*Lr)a%!uL2y zeh)o>+vjc>{4QUXK8r10!}q^Le*eAunf7`T$9kmhd0xzt6IQ|KSNz-znPXl}`130{7o3-h+E@ z)%yv&I8A&2kKZmngr}+a2wrIY7;g0wc%Xfz@Zv4fe+I8k6`#Y)H;XUe*_*_d@IrkB z&(%AZwR6r+mp)y1lQX=@8Q$a!Z*qoPZXYBT+x?3lYM$^&eE<*Chwxl|0=NECxcehH?hGDP;&Zt5 zui)>0wB$Cps(oJ0Z>7%=Ui?~o1P`tiAHys42|W3k)KB5D*3aO|p9TC0ZGX#qx^PfZFW*0?%!5?0IzQ&K7^OkOnz?~?w%<= zhI?-ipTP5p_!REFQG5n3bv<*qd$QCo=x-BW!u^+tui(Ke#n--0~m7E&mBT()_1z%YO#9{O54Xe*w4rmvGB}1-JayaLd2* z-FBX_=HG=|{ynkWa-16`Ipq*#)`USWAdvMFY54ZdWaLa!PxBMq?PxGI` zE&mzZ@}I*k{{`IgU&1Z_72NV)!!7^L58HYAntvB=`SnfA%;zZXcdLQG5Wm z``!?4_q`F^=01k!kC*-vc&O`{!aemFJ(NCkxb24p+d-H2wJt9_sz4 zS8d4?-sA~y@`N{e!kawlI33n_{c#|i*$rIk>32*X*H+f#WB~N&hC%nlM z-sA~y@`UG_!vx;s32*X*JGyV@@Fq`qlPA2%6W-(rZ}R-{mOSB2p7175c#|i*$rBz} zp7175c#|i*((88)Z}NmUdBU4K;Z2_KCeNR2$rIk>3AfkHA>3X!NAM<3`V;j232*X* zH+jMf%M;$@32*X*H+jOFJmF2AKi!fiyvY;Z}eicBs^+bnTPDtKdD&fofU;DzSk!mUpaUcLA<=U@Nz;rWZi2k_=Pg*VqJytz){ z@$)6O3EYq6xKntdK7)taXAW!SM9m@FOc)!da0PGfhj5!? z=a=oA1AT7q!tMUqqwD7>eYpKRID%KlO3q`rKn`=U44Kea*iMxBPo>%fAn|{0DH$e+akyM|91947dDea7Xi>!!7>>-11+- zE&mnV@?XO(|IV-5d0PHmxaHr2yPAKWuAk=);FkXoZuyVkmj4)T`A_JY{}gWd=kW4n za{rmb{o}<;xYaM=@yn&YhFkp_9*m{l{Y^W6tM9@KeVrP>^Gx~-;o*D5M{rkt4EN5K z`UyNdS9}V$`{xX9_s==p_Rj)dzeoBn;kF-E@cIm?U&GVW#XG-k=b5W_;hFjX9$236 zCQo>iC%nlM-sA~y@`N{e!kawdrR524@`N{e!kavQwiC%nlM-sA~y@`Q($C%nlM-sA~y^8CY= zJmHpS0Jry-MsRz7DTUknS9AD9zmoTtD)^&!lJD6D*SFVceMWG5A1sC2I_Gd(X9c(S z!8(6zAJ^Uo^WnDsA>7uV!_)W6>&_e=&%{f()i2?}`BGoQt$qzJ^tkSy+UI5UU3hYy z^dG?EOT>rp>eJ#Qc&0vvN9q%}r#_|Y_dI9td?N2-%;C*-1b4Lm5^g`2t?2qW^%`#1 zUFXm3JOg`Q0v@Rk;I8EfuXLRwc&0vvN9q%}r#_`yp7175c#|i*`jpIl32*YGTb}SH z&-Io(;Z2_KhscP0?*W^@a8!g-sA~y@`NYae+jpIR`9Tpb*|y1 z?yJsU+IiOMU3jG)z?=Imyt&`Pf2yBH%;8TxM?Np8;P(4C!C%|!Y>o?Wjtl?zLi@v` zuSh;CcyNX02KTQNcmCF1Po?|Bg@-?t`Yzm4AHd6>OZ^ZY{!DxXch$#mdtYS&xA#@1 z@MeF)oBauI_9wj7^IF22>m6?ItE}O+pF4kV=iJ;s;r6~tk8bbl!tH&P5j@iT$8gJk z0=N99aLa!NxBTaD%YOm4{FiXce+4f!|25q5@BE{kr{&*;TmC(`<==-}{sX$buM4;Q zC-7SL^Av9R&)}B-9B%n9;FkXqUg+!Z3U1HgYq;g#xuKnBZr3~9^6$Yd|32LEAHXgD zA>8sG(d~U*xaB{CCz}5pZuu|Zmj4oN`LE!X{~B)jcmCPV)AH}aE&m=o)%^Q#%YOj3 z{D*MMe+0Mu$8gJkLbvyI;g)|64_9)ZpToWD#7nr-wuAHxgv2|QGv!i#%LpBdcO`Z+wgR_YgUN9$K` z{~=PphL?MbcXnv!R`$ia@LatIkJbC|axdvKfQMQ?gxh(I;I7t>;f3~}z-#pkey4Ng z=kd;t?eh)x)ANPb2a5OL)xP3=c%eRkyXr%D@G$8!g4gO}xaBi}7g|4q$4`|0bGUb~ z_yX=fNqh;T9^8eL6R3uhV&! z^y$)%5bweBqs04gSL+9GPd$P+Im4Tr;Z4prZLhz{8E!ex;NLw-<}!z8Gw}udb^FR( zmhju&T6_h6f&ROhYxw-JQs22*d;LdGT_acetJN zum6Vd=ylR(1i!!jp8FUcdD3SBpI&#{P5&wUy`Pu$&)^rU&*6JNRr7~`O8?Hl68`F? z^k2bOJ4>H6{K8La{+)LIm%U!R3*TRJ=)q@aX#VgoX#WBHtNQP&4&j4~CASg$6T3_Q zG5nZ4WStXuru$?HFYhn&n!#UQNuN3Vc-@B!_#gCoS;BAjIa%il{^bv8{_yKGht5vz z{14Z^^U#I=MeBR;k6k9~@5A4ye@}Y=|BkL_2)|VS4)zFs$sU?N{8GK{Ch(|8#`pu!2AHMVdeSCz?ZN=XU;&dyMqy!k@jfybku@ zM|t9X_}%q+X#juO17$r!_?<78>vsfy)h{)F_}4xuK7n7Q^P0lFTgvq{gI}O|&f#|p zr2hhb;#IQFCHx$n;|l&%y>G1H7wdhabMtoohyF?Phu``LSx*msuU$2N_)&L|J_GnE zkCZ+`_%qLx`Vst29~U3PZ>!h)1Rm>to5J6r_n8^|IhxNLe%zhqxC{7S^?tsDf6DTQ zpQYE`8vZcNt#gZZ{>SNhy71e-UGs;3Nc;EUdtIsd!;jlv^M}7l&vyjhL$9MT{A#=Z zz~8Lb*A#v)-9IzYv|>!JrgP;>6XANdf?AO1D{`&UEwHTrrzf`9aSS?3u33%x&2;OXo2`3L@5UH=R| z?@Rq0-hZ^bUN7JW>vPc({_Vd>&MWx6Zzegc;lI}VKW$gkzRrtm*&J~Q}1dLN#{PdZ)p^8)@1tzW{wWA}gf>UzEZz)#la zijLdP|0#Mu>B3Le=ZzkGhd)aH0B+x}7{TrP6)F7Z`uF$daQhsvg5U95x_@rnUcY@l z7{P5l6S%D>hueCVa9fXaoAz;SJrUg2GlARZl{wtjxrEy~o!hpLYu`)h!R>n~A^gQ3 zmw9FIt8XH&UkkXczlPiTySHnv=W*YbxdiZ=zEqAofza67LY{u2HBhfBES@7%t9T+6=)zw9xxo)B)IQ)h5n&jN0J zYPfyQ-n~P6J^ShRrV_aIpTVtv3Ag@hxb^qC?c*L$%6t>J-W}V= zwfqNgJFggS`A^~B{IsmUfY0^0*Sk~uxVHZXaC?6*hVQ(mTz6CWF}iP8@T>LxALq{P z<6fz+3qIW0`<%`DQGIy%|HOyz#iJTrw~t*_TP-0Bzbk7}O^{vCUM z+v4tS?HsH=fakjY2=2Z`&UXagWhD2p1pf0c?k4Z=!Sh$0z406#oFx6{@cI(*0`7fQ zd;z!hRB$`)8eZvfox8O23ABF)?q4d$b>Y^(2M=E-^*&wu^x@Ixq&|RK{~^58{t-OU zJ|nnSNdFjq!EJxexA+R~>?7Av4NvbazJ?#5KhL_mx94)UuCoV!{$KR< zbc+w+c3v^u?hg~VU3VG$#uv+R=kNnAkk_wri?85GBG-j;*Y^2V@0NLW;KjSdU3jkZ z?ZRz619LYlh=asBk+a~Z-dhY38_{g%Q5^(j16&)}K*jQ)Aq z&pEu*>uwH@E|>ZO?wugl(Gp&tA@vo!dZ+jb9#6$75uKd$^FXx&vyQ~_V2=-y<|P!77yTs_8Guk?GtYC7#`^Td<=i6 zzE7BL@!1wHw)k?3*IT@Ek9Ka)xk~2l!R`LjhyO+IKOy`W{W)j^f9loJKY@pOy-(nY zdJ0cpEc<^7&-8wq!>`x(IV*UbNFV2(?Hn9^z3#y6=bAn|e2?@A;E#Nlbi)ovpU`dW*Zg_Pnf5 zZ;J<8e7MEqEk1$U&rKQJ_Q@P>&s`-vIZfWrS;GJ4D{_CR;4AeNJUUhS)bQ*b;%oR{ zwU6^(?L2q6QjXh!-&Ng(-$%U*f2g_#e}Z}sewexsf3|ubeu8=cPt^zTv(!WQh3Z3i zp&r41u0DeA{#D5>hCf(+41c_O0)LwN1b(!73ir;G`A*?4(E1F1lKKq(cJ&;dsn6jT zsu%F`99ho-ewo&n@N3kUaPOVcr-EOn^((mZHOaq*@2b9rd+N@;+WUVm^$z?%br=44 z^)CFW>K^=Z`+nLM58*G;=ep4rPqz4Ui|6o1>c0oHfFFE~=D)?)a9gK)?{=Q%y)7PW z@gdyS6T`poEqSiU;AcHdULR+0yFV9Oe7VJIxE;51pZ58hdt1D}#ltN=g8xWA-%qx9 z4!>bv$)SWlR=tM*NON=V+di-B)w^&zUw?}aws^F~$6Gwz;Qu+C-zs18XKHB2R7N2hMe2Xu(c(ujXTio5For9fkZ;J<8e7MEqEk4=e*%qH~ z@p6l=ws_ZXpYLP)avgc_S05nWgWvf;aUX8i?*MN1r7`>{z3vjY)lcD1(C>}paQ7N{ zeVoHDc(2^&3;0@n0e_(ODd9I)U&4L$72H#=;dfSF!|$!$xqo{uyQ;hJd#HEe=~;5V z9z4_Y?ZJQheaS6=-$wfn;Qyf>!f&ZQgg;n)1n;WH@Sge@zL$CeAL)H*3V-XK^17LC z@x>Oe;D7or`Mh|&#oY(A=Viz3ZSi1>54U){#V1=l+v4*rUT*Q#7Iz-_@6Wfp#r-Wl z*y7O^A8+w=i_f-rvBj5Lyx!uSJ^y_U-WKm~@oc%(jppQt~-BwKvC#q%w`*y3w=ajE9;;C2p?dIz3eEA>5i zpy%bo|EBXA!0mY;+T!Cao^J8k7BAqBdWpP_EVp`AC&7QfJdJ_cGG_VudaUl#z%1PtRpub!?UMG8y~~t@|cY$@ZwDAlfu2fi%;Rn z@Ze3K3|>D%WV0S;pZ0#c<4a_|UAT9#tkZ)hPm%TX=sQb)AMU6J@anHJmjT?* z<+vd{nTbbm{|&O95!@R~eFD!vAm=-Q7gM=jQh2bFoY$1D=as>0?LUJTN67U)hiB)> z`U|*wj`#vzy+?cvFHVs2bspB9Z~RX24%~mF^l{OHu3s^sj$)3=KE z;l*v_xC3~0ws;6H9xvD95MDnt+U)ZPp6nv`s}cP%(kF&jj?|Cg&YNUCQ+TY`QAR&V z)-!|qe~>;o{6;58K6AMDTG^ikyq>;tbG{3B?wuj)AHfUt815c>sx}P(6V*4DPs^{=beGbpn3wZE+$!7s~ZJ)#ATgv$^;n^;7UKQNgQR-Ll zWJjs5;icBE;lXX?^}^Y&z5lb@i+AARt;JpX-{keN3$L_K51zeT*6+jXZ_9q@!wbzh zfY-YJ2k#Ygb+6VfM!$B&cxG2DBscmhwJAU=V6uH=)# z9qpgNqhq9g22Y+S{d4$z^!`7GJNlefz>8~SE(>_Ho9u^@eu304;qE=8zM@|w^(**U zc0Y#~=gNI`4R_C%>&^+<``JBOa_GQ=bEMvdhaed)4dLaj<@rB?hrgENj^N2{q&|i_zmobfJo=4z0?+mS zKY^FOmHH_>(f%1cK3=Z789aZN^vU7=?PczBc)Xi<0T1phzJRB<7BAuP9mSXMO6x0l zp!;D3cRnlozlNuJe_O-DJIHaJ{oDJzyp4DVp6PkH@N`$H@522{WIZ1Jc2eJi=XVnK z;q^`Adhf&2yGeZjue#y`cyU+p5FV-z;pOg9AHi#_AHfs#81AT#;gzmGfhV6i*7?_e zDctd7JyUq9{WG|$K7)rZ(|ryP4wL?KxV>Ldz`dtQ{Q{or`x_OW;l)kGE4aIp z_zE8Gd6@IB|7v)g$ay&jwD)uH54ql5xbqkBEIk3Hd!q14i z@Zu%9f8cKRkxiZ+Jbszf_u%yz;yyh3n0Oz)I7s>r;PDqFhY+5hBtC?D3-J*=)#rp5 zUg^)dV|ei*$!7vjpC;>1;oeYu3NLk^WN_yWQa^(i`o3ZguXmC9IXpf_ynvUt5nsSV zU4IGB-XZl%czVMTo4HqTSJ$(G$9i5hJlS3Pui?dE;?Bd{`?GkXP5%(?KT3`}gojT*bWbGX|VFW~+?rOyJM-&g8OcyWr4!*v z=MnAwA6zNkfu|3a++2A67ddVhUK}NTJh*cY@gBVF$bRtQ#VvII!{b+q58#g8Z$o&d z`!j;u&v7HTudh2Xyw=Z0#_;%X$tQuAhsyq(z#YB6rSRnOlFt+#{XpK&$>4?loHBzu z|0DOS99}HN=Wu(Ur+}AVlllc+-zQwc3w;i$;OS7#YXz_L{!qj7k4kQ9c<>EbPv?>C zeH-dNapAe%54-T{W%6^72Y3D{uRA^X-(N4k=jg-ZH|zd{m-_xg0QdC$oB=#PQO-An zhx(i|gh#iGce{arf2KV-P^2T$xd#3mto}46Jz@v{nY13x`ukIsW!o7dWb+@GNA^W+4M=z23 z6+HWe)YtHtK7X#^b9LuY?R{SCBR>~(;AJY;g$pmM_T?-cjwr-}FAwS6834BHS;i3jjVUpEKv^nOww!aaTc8p88`%Ii)9ub(N`(Fk7X>r@PnVmaS2yuO*tD}jfO z_yq1Aq|Ybt{6O(3+&Nf0gGc(DGlOS$k@_57>hsJTp6)L>Ea36m<$Ozc`t(c+it| z_TagCAMUPRu{o~*9=%j@9>B9}WuJs_??kyT4dL$Px}V|R@lrp6NBa3o3@;xhuWMtt zuQ@01=$B95oYw^ItEce%QmLQ9t4rl|B!l}q$^Cx@um351a(JQjbGUa0Ij;g9=vFcL`5+l=WBeYAE|;1@|=n8eVDtHQd+pbq;Fp^ZdFOZu0NIlYhuMUAX&A z*;ie7sL$;lywLB5`0)7W(!UQc^>r$M2M>_r4&dQR`V8T@zTXnT)7|B|9>EKJe>jE* zca{9d@LWBCd+HN-rk=uGPx?>cm98g)N7`owFV%B+sQu^gNWFl^>I-!yWxxpbz)$^A32V zK7hOGAv{nY!ejLa?x~O9p?VBY)W`5lJ%Q)y6L_JX!h`?R{SOb-GkC81X9kb8K8Hu@ zb9klCu?0NU`UTukFX4&$67H#2a94c=uhnaKp!;eKckdy&Ige@Ye@DFo_taguuik|R z>K@#;{SPm6{XV=@@53wg0G{c52k=t&PYCz5&k&xeNA!ujUX0-38^vRIuHTm%!%KVr z5T2YOeJ1emUGkhZg$Me+QwEPeD}840?DgU~ywdN#&EeUV`Wz0gpDg>Qghz*nFX8T! z#4C9G|HN1DLSL6_c&YVkczUSxaUR>=&-p>GasKsR2kr+aZrp_@`uxy^#}AU{2M?aA z_u#&|4-eJ*@LE5|4B)QT58%0a2rsqI5T2_?aQ{z7Y;qXGgJ;OxC-CR#_fb=L@&b9^ zU<%Ll^V|#`JTTfEcLqJw>gIUACme6?(CrZ7H;parttJH(kFwv zHJTK*am>#^|Lvr)s<@=<*507sq^#Q!b>s`KdC;89dPM zljm^nQL?Y*bp5_T0k4mg`USjtws;B8pCi76d(RNB;K8%RSMW3vui>$N&a#G=SIWL} zp3vU^!4JhdaPLRrE?$2GgchReyfBomdBlR9U*87GJ_ji-|_TgSvJb;J#{5*h{ zx0d=4o}F;c|E==>{#`$KeIKch;N^en{)b23llSXlxZP*QaOY_0lfZ+!%InmGzKg6U zr3d0uc(tE+22a&za9=;)$>Glb%D$Sz)4{RMzy2%W{sD5_1>DomgGzY)2&rGfleN5m zSiuYR6+G2GHN4dGUBe@FCv5Nk=pnM64m^FhxC<{IDc*%AIu{S_sQ2K7x)1jcl>U8q z_-1+D2;kYt;sbcPko_6L%RTjdX?XNYc^-@4`3L0lvJpJlOZPv#c&GRnp6@Pw5_tFr zsh`08ABm^%BoUv&H2+%B|JM{@~PmZelKMOk8dvfq=uLJ{h~EIQFor$-v9Z3$vQjmK)>JO!t?t{eV4A^ zWAWhSu98m=9^69Qhlh6;@58M=fQL7c`T@MWvv>%Pb`~GPt$(z|M_W9GyDyafV|b;X zXC?69)>1!#C$V@6cU~kuh5PzL;Zcv0X)g1K7{+~LwNKWsgK~nM0`YlgLn+DA1wKg z;ZgaD|GPUoP6GG!^>;$o_dQa0c##};3QzR=P8qy7PVVP3cpb@oEQhB@>ir*X_lE*r z>i4)7bUkhfPY;pfF5&S$a@-0Y>Gv~Na96*dS;KezknF=X+}H0(I!|iv|Kf}C+|{A) zEzf%{+<%PZ--Xu)NxcV8wY~=r7V%{21{Sy!!Y{H|we4f%+Pr=$AmuxOBfBWIqhx&U@rK4dKNn#fR|f zv-*4v?+re($$12ysmJi1e&1{i_uOdHCxJUhh)>|r;o>R0K1zHFPxbF(WN=S^Pk9Cp zZjk4S9PU0!o|ETr{{ZmkYPU%09+%mX- zh&6eq9HCyC3hi**`8k(!XQSg=gP5W>fFM%WsPJ;CU(T!@ci__u;kn z3Fy}zyE*Ov9{)r?xkX^S#7p@c2U~IRE-Dr$0%24o~#=UJLr6@_e#@$Nwo_!h<`CFX55a zSMa2(&p+_$-LlRa9$X>yYj~)?uj)MI!<+N&Z2s^6y`TQ5Nd7n6*Vh;K|L1Z&cHzlQ z<$mSC^HA!0@bXY`AMWic_nAIC)aUsC?iBKzKY+(Ck^Uh(-Bs2(ggZBv*NX@qzf}5+ z;Q4XlF+AK~`j6qxe&Pu{J6e1KPkix|et`HC?sR1R8U0A9pV4nGp40abpTmPEiWhMI zK=B1U*Uv*sxcfKBZ3&O{`}q~zxr_8)!Q*>~*KqqedcDP+VSE4Q`nunNJD%j}!mI0K zzjfjHwc;K;yjr{mclGyMeRv#8eV=|;Sx*4Zbl(o({@vv|3gOXQ`VZm0K0ico_hZs$ zMAx5ZW4L#T^dH016QxfAFZAc!3A~(1pA??oRC1WY!=0sn1`oat4hC4@Q&K2*# zomWUcE#Qo`i|85@Ze|SeR%p?@c>@FRMtO$`^Sif@cfnHL%4Uc zcmxl>B|d^ze;1G8(eDo5yq=EX)!)Svc(k*;?=*o|cMwnE(LKbc@ah5L89WNaXYlHA z;yFBhv0PtsxWA8h0nZ*SzJLe%`=lj2e3QKYu!JYC6|dm#>%^x|Ywz3g1UYU_Pjo%- z>`&q)+`b>Rg2%6y`p#kP<2r8?_u$@PPv6WvguBPc`bY5aIH^zIx&Geq1YX}x>QlJ$ z0a?!sUVcz~4)^r$au@LEA?I$^U($W?B|OmIYhJ^Pi{!ZO;qBZ){ksQUc$LU`d360= zSr49FDD^(vSMS4}TM2q` zhiCfz+X7x(Am_D!NBaBPB|Na-v!?6!$5!x6uV3eg_8cSqyCNNUe!T2+7hc{;*4c;0 z=SY13_wFY31GvABcnDAQ^Rgj4(7&%9!!5TlJk&g=@Jjb#22btp^1<^L%X#H+|3$L? zIXpXFynvUd$v#=oUnBk3@I?Pz$j*`Nd4+nNcHv*r-$VD{{u`u!AD;Y7))~Mf{dY(Q z@a!qF{vo{5_W>e!u&2DgJ%W43%6ejWpubN#hL?YM?dCp~z+PUc zxI{<{)WxO1-b$>8}3y8r2W>Hdei&yqfKxc_YN0-iiw zd;#~45-;JE)-U0ydIc{d>9d08+P{Wp+Gh=SwB9+Yz5i>i@4$Vncj2L~rwez~J$R+w zgBRN0hr3$ehezrGJkUM^c%k(nJXRmVYxM|TYX1>D(fSzfYW*0V94&K9;HB=j30>!s z!UH|-6rQVR@c5Z>+!;Jm&*7>19A2mw@LboqfP1>05}v9r;feOI;NCNI|HFOt8Xl;x z;iJI@KBH2hZpJr+}Az>c&7U*gh!W1ozTnF%_oQZcK?Ta>IJ+| zU%+ei5?-k<;jyl>f@kV0c&c8*GkvaD!_!~9V)Gp09Npgk?oKCeyaUhoh&JxRoqfc+ z@aj`9-PC*V;(GbHpa-x2AnwB>t?$E~KT3T7FK_mu&2b0t_%`ApJn4uJ;n~f_BY2@c zf~Sv=`WPPQ-&GsK>u<{X6L_e9S8W3K_4jB}c=-kCGlj<|h-dUai_hTMBW3+L+`G5z zlQ}$kyxcbmc=9mu1>DHhLOwuI;E6+G5HD|n&xHM~?`!<_@;+=GYvi1*<6TjaX);qiXreR%M8nM(kV&ye~7Jk`H<6w>wnGlU1~ z5!`>eT<;@zwUhjO9mDen9JRR~6L_(={+tWX_3v!w@bK{GZTigN)luRFJUQWYoB9Pj zd)^y1Uc$o{ir4Vuhv#qV*Kn_Y{KlPUwf9eQp8Om!gomG%^Bu#z^{Jaa3H>kP6S#Z* zS)2MPy!y;*Ha??&;_Qv*@N6aT`_19eiSqt-0Z%_JeHQTGl~P~AbM+KXtYAAHqHDAHlPyN}mz@{%?@u#_;_9(tixEJ}UJIyjGvU!;7Ro zg?kr^PvOyAJcAd%5ud@!Ka1z^Y6m&rIXt_$cmYp#6<@%8PkaSW^xyBR;d|{VxjD~i z@6WK1J{|buu9EsL+|#*x@I*iV>cPK#Kk4JcL;d?p19Gs6CPwRi{a#o{jf9uJrIx4Urnl~V7)y?2TG@L2yHs6ITs zm(&m7@qNTYy6%S|Jb$3nNAP4X@e#b#&u3$Js@KIBUaKeY?8DMOg?nF;+@|p42jUq# z)z_mL+|zlj;C=mf8*6x-%6iuDVj}K5x4j=6{hme#9_#lpTzK|+-4F2KGI0-HepS2& z&-L#``0!N!UPK>$_&(AnfF~~yAHXa9{`Lg!zDqv$PvQ5}`{xvXjXvjO@Kk*U|KkrN z=Nvxyq4*sBl%I?zJ#x|ehL4?kEKrq|LAwcSMVoZBVNNF`yKH${F0xD zJI`zHtH*s$yaPY|f5ct*mA?@0!f*96aS#68?~C`~r|bHC_*LqC_|0`*0eqr458%JN zR*oCO@2l${!hfLqB!ZvNmwh{ehx&JHVt9G6)Q{mi{zKN2z_0%=sh_~ZkBO)7RR3MG zDg5$>Nqq)CS$zh7te#g6|Blwr;cwel`WNt>)EDrv{vLV>zgm3>cb+T#D|n@^M=N-G zh1A#ZQ2)KfHN3b~>YeAe_kU{lRd}U;m&v7HBYnDXN5A*t!9AT}i1^nUfm--Su|EJ~#w|eK*?R9pwzX!K^A3ndStUrXmS=ST6 zyEm5l1pdqS$@)|HLf4bSt-gTw|1RfS!L7cAFEk(bHSHX%-h&Tskp2PO>O=TI*B`@Y zGdbS`zS8~~{O}J*eGVV*AbFN>tFPd5t#@AAK3}VM;hh^ve;;o30eq_Sjo?-v!~2?l z3V-K?a=saSr0Xf*x$S@WSl3g-t-o_pJBNk#_uzIt`tV*y_dneBLj>>Xd=t3Ur|^MZ zUpd_B3wY1=KiukT_}G#4yRU2KVD%onr+Ef&s}JE_T~7?R`UJkZnXD&+TYU~6X#Wy! z^%Z=r{hinU`}1|-W9{$5t$zTY>;8%0Rv*LHnr8~XhwXoO&-OpO+5hmN-hXPi)jMx! z=djl6(SzH1eE3jbze2dxNARVdZvwaVr0}VpZw|NDmjb@j>!pI9uCKo}e4^`jC+!?Q zbe`OQJosGqLjbq>5Wdj$%Q zPwOMNttW;rv_6GfeFh(DeF3-n65iGN8vb?N56+v~Im~ok9^C4E_(=PQaI25tYwe%F zchl#A6u#8@9B%ame6IBs-0ExiO6%P>w{v*F1-k#?qaEe`oSf3Gx96D@zSP&d9B%i+ z0^ZgB72N7;cwg(?x3t$|^&Whz_mco_^&xzz{bRV*C-9lpXK<^};T?VbE#X#Q!8`iA z;k@FY}cxB41B($`b>ZS5Sa-h=n;`3-LM zA$(*%zrd|Nfv;@;!>vAtckKBMZuJ#>Y0qzO|M%zX!h1SjA8!2v_*&N!!R`JQ!xwsg zOW{_Z!RK0Ez->JxysPW4;a2aQ+RkC3{XMwV`|zdhf4J30@R`;paH~(@Yuyhy+^&}b zKGge31-JSdKGXAcPiyC3>+#?N?H|A&sLy*Le5Cs!hFg6CAKLzh|L{Zl^EKiu*U;XTbihFg6C?`wSqxB47D(E1W?^R3{0d;XcW&)4c*_)zP8 zxUDCE&viW!-0EZaLhDnwJ#T05k=_5{_VZK;A8Y>_ZvCAz+Bx*~=MfKX^*(%{_lFQ} z^$~om>rdcTpTZ~lyph8b+yC&c&Z~l3{_dIW^Sy<>Pwv47y3PP@`y_;Sbe%E$5qjT9 z;1j)$GWhTHIWUJ$^tvwLc3u^Hsn1=`yV~b#@58(Bp03A-TYUgu>U|@ETYU_lYd$I5 z^3UKiU4H?${7d*upOb62T58(@Y&Vk!=R{~$?e#qeV+?B&;y8aSw&j}TL ztob|dZJ+P8dOf=EsqKHb)d%pI)<!Se+;)g6ZlZ~X9lX~7;g0me5!e7aI4SZ zW844mg+9Mk@V>6!d0+c{t=@%Cwcdx@^%B54`g#<>gDd2FJ0ti$XUWfxlPx}j=kJyJ z#TH+|t$*jd_W3^c@weH0KcojAst@2ttB>Heo(bIQXYdQO&jN1sE4cOVyuZDEJFgzR zSwGzBM{uj3Z1LF^cQ0tKC)w!%n><5!dZRt%dpL0CCgRS8?LMzM#NE_);Ey^`+=F+t zuXj@c-8O z0o>|`@Z+?847d6T{Iyy?gTGCE4nIeI3Ag?$c&_!GPyGAy?ZS(9N&bDf^&h~~Q>A_c zxAl+VpVReB;nsf!ze?*DaO=N>-{=`KcjuGs^9|l3`@au={j;S$f`>nr`V8*=QoMpE zzZUl{ZXY+l(}U!Cg#TQxmnq!#c@AIedAjp<|7$P2^`?IpZhd_CP}d!Qy4~ldFO@!H zxb;clOYKv`pY}GnZ>-_g$GxO|+^MYx{=D1ET*h$glft{2R{@XQ2XFFmKGQyKaBJ}x zex}|J$MEL3@VOqZh8K6y9N^Z+{cL+ZYwgpA4_+!c4B<~!AH$!kK7}8vK8L?reF?wc zadO->JUmUV_wJ?b^;@4lynLCiAO1b{G5ja$Q@G_YhyPCNms@-d|I@Lup6=(`>)&B4 z-iKTL5PnmwAHyw&Dg5SIKZo0SE#bG;`Ze5{YW_ug{kz-x;rCJ>!XteS9K+wC^;7t} z)ob{JcGrClZ}$0R?REC`e+Te-kB4rq(=mK>ww!MUulAPu3SR6Z-u-<0xPP>K;A_hV zzT?YfKaAlWUC$J5{paxfTv`7T{;LzDzjJweox$^E{rMGbf3M!3=WxrpgikdW|BLND zmwi>{)rVW35Wd!R=kQ&gCw=B{>r=v)x}G(BaI#*HUuv(@o}c@0%X0|7-zhpT`2Ols z_&|LQKUjSUx8ttiXJ~zQ(O&=itA9^$a6vs-|0>Ay1a(pV=jH1E8G3+ zk4YaF{<2%>a{~N1`g-lb>u*aRAAW}qOP@ac1nm>RohzkJ2!HNRWc@?9ujd=V-S7T*9ugH3G_zm}xUH=-sx8Ap%ueSG3bdmIN;YVsdUHF;j%K7%;=c*6k zpH?5kuT-DH|3`feci*G;Rrt@eehm-xzTN#=`+R?|^?mrC)rasM->3H(_(#tXpTaMl z>3)DW$Gxh(o|`>F<{rT7Yh*4V{8wL=9ER}uz2&$OJiJu;#PEytx(lvuugCw;0h{Y3 zfv4XPFW_Yv?8zp)`lKj-!tZ^B+Y_K%)ME+Zk?}D|c$O$f|KaFzh}F2A zg@i}+1PHGXdP0Q1c8U8*J>d~O=8@=h>m&9M{#%3Rw~+9No&e#6LQe(ZUx@yslJMNK zyqv2EU$L5}TSNGv&w2UO5?(fu>j@Daw@H)(;Tdmp4j)CAL%yAl7bf99$rpY|_^IW* z-DNew^P1p=P4JQ?ctsPurU_n8_?8vi&g7%f`Mn-@5&ldim(L^ocY+rZ9w~>CCU`{? zyrv0WPxy~l3;T~n+uu+4c`D(-L82cZJf)MUFT!v6KCjx zPom$;C)^ZqteUzw+)?K~K1M}$Ylgnw zh<@`-v^`nk_iVxgL%IG!!Ut^PaJR}dc2Uqg7ro_fL~<&Yd|!u}?BUK6~K@ay&y9J>ijZNd7e1{s_+^yl}g) zpYYcNFC;uN?w1hWGvfb*NA%Ya9??@zcyEzz^7&}{T|2m)S%fDDo=14H;Dt@_62c?; zD+pg8^wba@Nw>ZUo_rzNetTzbe=6bm@AGjdlkjGj`S_ki_|t1dyg_*FyIfB$;T2;1 z$|HQJ7{Brfudd>H{Dcpj$kQz(JhBc`M0jN>*ApN-vJO*1c)?G2e#;0iTgdeU37;?K zaUsHwMEZZiulN5KqwA$!jIVyeYsI)+NO(j~fbbGA{)GsyV!Yn#36JP8FGbsvC-hWY zj^=NOdaNY8at<$_YQj4$<>gsJcu>S4wS?!d;(9`aPwC3_)D!-zr@24Cm1sM&nV1I= ze!PI|NhbV^i1$(n4;qe#LroTmxz326K*zeJ-LJ*7I8=(;d@4MJM#&z6>*)P z@HfQzb`9Z4`$WAH{&&HXuSSxSf8&HwqpgJaVokNO-80>!~LE`NN!tn&9Ra(RN1U zGn?SKgm)MFU;ZX|pa~vqf>#rsEB1Xtgh%SvY>2jhrpRw5;jf8xhAhH^CEWjW2tO*; zo$?6JestJ$yLx}LjLXQax!s$f*E^tJDCgBnNxr9gb`w5T8 z2MCYI2bYOV&LxEVGkE)|CVZlp_tg-ds`CD}j_`$% z^((^t9k~81CEEV7j-2}m-zfUGLc(Dx_p4&UKM?(JfbauiJ+_4KvJlr(PWTcr?gR<% zdW6qkDhN;A&h=Cg9-qhi^J>B)^Vu50{S&yJI>ICC=OM!H7W(T6&)v!OsJ7^GzE{L` zCgB4GPbNGl)_*bx4~X^N0>bZX&BtXw;gNWwnDAWDK7)ks6Xjn)xGDA*st7L>ajEHy z&Tk|>OeVajo|jJs;gR?-lkiA=Wf7h$)}wL=kJMK#;rrj`{*Xs_*>rAC0pTN#ad|)C z5qk;=4;<%uiV2U{li`XkpEDvp%p^QgUpa*5iuPPi_-WC;f`mu(R1qE$dNR~#dma*T zVZ^aKd65IjiuHo>b2uN6E*_;JBaJ=*^Bf@czbP4Ha8l}~tm`3ctr4-g(Jc#!a0 z1g|E%hu|T?9~9j5MBD#E!7~Z}nc%sE|3Pp+;r|poK==^BgM??z;PqHd_#`18B7Cmk zrV(xbV!<;BUn_Vn;SqU1;rSD}Jpsb^2t7f<<4^K>tR_6-w;{sY2zk>RZT}sDXA+)0 zj@y$<`0s?gpYUDcJ%s?_e-QFP!sAW}`w4F=c!=;!!OfUx`zyzDJ2MHtPsryI{;1%7 z!hbG!fbi!94-)>O;MIf=5IjV9q#rZQX!~af`Aou>3Z6^&dcplo@BrbFbc2Ln??0R1 zA;Q%^^Zvh{@KCWBFJhzfbxy=lCgF?3dRH>xfeTzu2I1pG{F6y|q8JCW2oH#OHHYxq zg53UG!dDCZd4&7da(fC0cY8$~NciJ5oEH-AKf(1B6TVA~zX8INXYshGgz!{@&qvA$ z4+%X%!Xxov1>t4GxII;bN8-b3!XxWZHH2r2b(=cEBkNHi!jFjk(0anF$8md9U$pd|0OD^FXL>!w(cx^wfr-1N( zia5$o_<0d$780H*)@h3g-yqh#1B6HB%fTjiHQ}R0za1jH?OEPGn{m?2nJO{|Uh}o8Y;GN7D5Z9?=sZJW>up z!Uv0VtDE4VCb*dpZU4%M{e-U34dDf5aGWR+)RqL{{_J_2|s*}muD{F zqaGCVV#4#qeoz77-9C#6w=X~8mDHW zadHmfzl@BhgjXKs{a!xdKRCkkRY3R}VNWsPk#)jy!Z!)|D#CY1@=JK69Mopf`HjeD z5?(g@2jOxqAbh=uTl|FQ26=vq2={j3B2!aE5bBphnF zJ(YxiSB!&Igx87nsA|G<`*S_DgwGP=R~_L;-sbfiBE0qt*8?fhW*j-L|wTrjA{1(yn|5*5c0pYbGZY(5xgos;; z2;VNsvzYLJINx4E_!QBflo9@2u|8Q&c$rwot{`0hB`=>!!Z(O>ZdHUAiFKhG!hbLN zt6IWq-MrkATSk}LXOaDS!n3QnpJWpLm{>Q+rRN`$fAB5&k1FKdL8u>n7emz%9}KkUfj%%Ow1y*e^~dJpTn= z&Z&e~_vU&s34d9%(=5UdihY4>!r>yK7KH)*(&wj$si*@Nj!Y_+) zp@{HYF`fnpA0_gYkrQ2>wL^cz;{?K?nDdNY(ej~TLY{DQAma62kW%;PMrO9~HcY@EoD1o^Y5R6SgPg`_cCM zZ;K1_%qDmt;qxZ*eyOMlUPbtFAzw}SrV!VY{DWwF)Mq(QCA@h$=LLjcvHQaI`w5Q~ zdMXI773o$IUhm=MtUerVPg)vpk0#-P;k?}P2#4dmobw5W`xB87TbIBpj}B|I8zNmWSJ)Pk4R|x4)e5gx9%zknnsJ!OPLb1q*;c%{g1i15PaxO~>*(RNn-lOXA=JHt6aX2@I{Yu`69x1nVeS< zzCP0b6TVZ_OY)DS?dc%eS1REdqWlX8|FP(2{DcSA@ba%9e5WY?O2Ugo`Kv#Pw&xyU zk4bpxGG0D;gsVF^&nJ9`D2H;w9~Si(B>Yj~=kWf@| z4dG4)Z|}8)mx=b6@np0;XM`VS5}s%0`U?qnHs|__2yZTU72zkp#mlFf@EqaK$v=y> zXMCjpC%p1DZchQ>9fd#m34c@c8x@2r-{$sI5?&L{IpP2KJSOa)LBeZ<|I`zHm+)tJD%wuJuqTJ`--`Yrm+-Pk|4;beguj&$UNM}P ze;wgnMO+#pyjI9(JsoXlP}FZW;Z?$(V#0%>`~!rCvUz){A-qcHuO⪻?ImKZ68>fqZobXiQ6Ay9iFhWT@TzINJj)3m9`S#|%T99n zdcrHk_zTZO+nIbH_lF$9|0c$TT*3=K z`-*WVm+*2i-jxvkh^VhJ!q1BMwvO2tOL}f5MBz{4wJ<(e_Lh<&#NxaTnqLguf#Cha$rB#C)NO@KRBa)r6PFaQl;g z8*R^75hte-UM=dYfN;2j`-7kG+^t-H1>xNy@ekp(qCZhzh_Hi5|DEudv@Ulq%Pql{uFKJ4$z@Ss>fDJ0x4%Attx;-7N;RfL7ws|mjHktf-y_yH0)z)ed{RSrrtr6n z!sv8sBK}PHW-&fi5ndzoC%+o4r?ZHM3kXjZ{fwXR--`J{1>wIC{c0uQkBR)Me~nHz zB;sC^@FSu>$s;^JG7lyE_d;fuw%27imT6Z&$$%^`fSNH>@8 zkQg^h2u~O3mJtryxc)lApA>O*i0~ZI&u9HT+D_l^dA_mnS^JE{1y`4S=e7hc)6HYRuSG;_+d5Su$HHr{EujR zN=2NLN_eWUvw-kPLcgDIxQ*wxf^f$a9w$^1uG+Y~`p;;4vV}jGgl7nU%OiY?==bso z4~cb#a>D-+@qfZAME$Bo(e`{dGA=a1^9X-GGA=a1%L!j4#GYF65Hc4iSC$!|8{k^JTm z9?5Sm;gS625gy5JKH-u477!lEZ-DUZT3!w%goh4sUQT%KVa|hu7YX?a!m|ahCOlQ7 zTSIsx-8#bag?xzcNV@feN799U3!?lXRs0_Lf5cA~#c@B+Ao9Tmp5IKuYd_~ai}1{A zoM#hWDdckqH-&rw;n_21hwUyRJm?g03*klI^M~aFgje6sc?seE?{Z#Fco zqE`P1>&YQJTkt%>L$`4Ge8MC01%y`$`69w!yoK*C7Zbim<2*q4OThiJgz%HQ&9MDt zgck|@<%Cy{=kh_q`wIOPg#YO&E?-Ib^mNW^34iUAn6N!{gg-CzhY0`YG@h?|!k3D2 zfC16R|&5Y@+RSfg+0lH_rA*QOeOq_YR)qV&llyHP57H4-5kRE#dAAz34cS_ zpGWxf!p?lc9~bEs5dKFY?#s%!Z@y{hVY1aMh;pHv(e7TzNqFcCp z9pSZYI1dpX6!OV~qRS1^xO^(%l|SG-gYcl>*@Tw~oChh>j=Nq&h^(5K2hj_!O`_~RFs2B_;``uWWuKjoh3t@N{8lbUogBH?Mb-@TWw*Clh}3d0uWAgfAGvc_!g2g`L@iFBR=B zhwu%eoCAax4SgM~e;R?PENM>t&I_3In+3X!f8Q)7+ELZ!qNiC0P7Ch=;C+a+!a z`z`$riRVi^QpeWqVu@>#e67UY5?8;&^JVGRC2mUGBk?SW8xqfxxL4wSiN{F1P~vi( z1trc~3V*0t;=Cv4yhh@DrpbA&#Q98(^E!zqa1{P;NaBeS&%V2{e3B$yB=Ka47fYP4 zl=7PaiKj^NbrNqb@zi@8(`_N~5{b8zcp$q`{uYTB-`B`nNxWX-sS;O3yRiJBwZyX| zo+j}!iMNq>P~vSR9+G&v#Ooz~tHjm&8|`l=@ob4_NIYNS?Im6$@eUHtexOl*M~UZ2 zypzPMCEi)$@L;2!E)uWo*~o8`cxFx`&y;vZuSVWg;<*yPUE+c7H_CUDc%{UuF-{SyC$#0w>!FYzLY|5D<`5`RYG0f|2=@iK`&C-HKL zKQHkLiT_ICl@kB8#A_s8An{s>|3=~=iT_sO^%CbN6U5D*HTvQ2BzaTfzn6Hj#Qz}i z42i!e@l1*PC7vbmKT14X;(wBOj>KP*c%H;xmUzCzUy-<9;(wNSp~U|p@e+v_O1w7kCJ#m;-e*AE%7lDuaWpziPuVe zoW$!SULx_3#K%hDx7JVWAj z63>+Q#}dzy_$Lz2miTFj=Scjl#B(KnQR4X$ce2JC1rk>!?w7bG@qok=C0-`+4ic}G zcqfThi}e8~n$lU~^%CzQaZ{`tSn{_?JXhkG63>%(SBV!%{C0^4CEiWq6%y|*@r;5- z|LGy|Y>D3?@nVVJDe<7hvm{<2@w+5mDe-Sfyh`HVmUy+qza#M)iQg^pT8ZBy@!a1u z=J#HS=Se(U;`tK4PvQj<|E|RS62D*Kg%bas#ET^UfW)(3;C8yuPwb6u4mlFHd?@lS zSK`()k$-s-_e3E6KVRZLi5EybMdE&m-zxD!iOch{B8g{9^2HLrPvQZI%k!xciOch; zGKqgr(o-(+2P7Vp_=6I!ka$mtS4uob;#CswCGl#BKP2%QiGN?>wG#h<#Ooyfu*5?W zm&d7kiI++8@ViF;nJRHr;?pENDc%j6DlAa=oFO+z(#NU#5K;myp zyhP%QBwi-*cO+ge@pmO2l=xzaS4g}<;*}C#BJnDTFO_(;#NU&6jl`EpyjJ4NC0-}- z6%r3ge5J(eC0;3U_#6OgH zox~4HJS6c$60etdt;FFEjsAaF;;O_ylDH}HqY_V+_%Vs6O8mIQGbDaO;+Ybc=Mh;F zm*)}L5|`%@ITAl9>Cct;DT(JvT%LF2OZcB%O(Dq#DfyAmw1K5KbLr=#4k&{O5#@}UM=yf60ec?HHp_s z{0oWKNxVVgA&JWytMw9ROnTtOM*mkNu1ee{aZ}=Ui6=|kA@Nj+%k$6-iMu5EOo_|$ z(=3V0^V4jJyCpq264xc3D{+s+^CWIaJYV8oi5EybM&f>nn-VXSc&x;WB<_=VvBcvf z9*}sv#7iWeAn`JZCrP|q;>i*ZO1zoGDd!Bk@}#UMuld z60ehZs>DMQZ!Ph9iKj^%{EhzKM&hc(+e+M&c)G-sC4Q^KQzhO`;u#Xpka(uV+eNJf9Hb zTZqO_LR(ib?R~~JGzwVhqVtwnDy-c}-0Cl)*-(9b&M9nE*$adWx}& zOfObgk(^hQjq?ps;4srZWAKS3dzqnuJY$e?{0-bTOT_3)+TjODN!^)1B*4lqX@W3`e#{`{Ag^OyRR2;7dSfY&QY#uVU(U#x~0L z(^;!{-(&_qRtGY8x(mP%=0?Yw%G_@=Hm^}K+}_l5&x6plvsFf|SxTN~7K7I`^#1;q ziDSbaHJPPGw-2?s=R45OdZvMC&wBbYcoBcWfB3rx+5)uoJOG*ee)R8{M)RjU^BDAI zS_y-}RwAWLoypjAmfDy|SkGMmcX^+Np0`=HwPcB%9e%jICBUPeK@48f`ZD(STN@t< z%QS-@0{qZh%HYr1>kRrbZ46^W*>y40+nC?4w6!HmhDQJ%@nBiLsQncNST;qFKQ>x!;mGeuiIzogw{qq z{ZcGcI7c#kgL0OtUo+tYRlj0Fz1ug(2WNHf=O&bU^ck_R-=pJOr5g?JtXSyn)$xlZ zi@f@pSXk*TR{&0!Cd!YA{l#=2yAYcWFy5!)<$PbOoj$hNcimIN?IIS&;v-{~_A6bm zQW@=tv?UX2u$QZ0+7}E5mV2za{2zP2+46m!Jq=~(4`t{NGYlB%(5pP~j!R!+z$KS= ziw72{dS3&Us@TuMZq4(t2S&NQ>pif=t#9(cUiXK{7kNySU+clfIooi*ZLnoVe2u}X z4XN6#zA_E4&Ek()XNN<~ciax=SQ&c42z#%A4%lzMU-YTnVGNoy#-;@fc-`J%qyh8n zIK06khj!HiYh7OCJ6zZ70PlOeNIvxRvV7(LNM7Pj+A&JZ_mS5* z^felscPzu}1*%!(hLh?KPHC`M`!S~Kc29A$aqjC)p+VATqP`treS^aKCfc_AU#0K= zkNjG(-!lNuBw-)(YBF|5%rTjIcfE?|o?1$vu547jui8z1) zwUGJAJ(uG#@H_(Wq~q7@7v$c3+LQ1QKKGRRd-goJ_hrw);{cCqzkp}dKe6Bb%X1Hc z=RSak9Z#|!{mZ>3ZHc+t@edfojE#&h zdz9o0nyQjfgu!^G;S_Hgy9J<WNdB(7YPFb${pQ>}DXGVgB2wnpi|`17|KmiJ3Id0J~N5x^c6caE`- zB`M*rUy@desp3TFFB-0z6j>=vX5K}N%_llKvvw{=Zw2kpt})okw0dR*cjv9(E(2ho zlDbe~a~fyE*VApn$8M&K?qc0>Qt+|mP|l+aW-=!(WxTvK` zVzxJy?B!B#~(ra+ydUsTu^ihGcajk39C+Snx9SLY|)hqIYG zhoG)CtmhmB#w+S{%Q|(L!WR9zHexw_oxG>}W}yue(T1I@=Mn|xDC*k^Tc)U66t-5j z0oN$u7XZKLwV1(Drf+3zU8C!ue_`2l@_nwrXRPON8>~=p&1RdT9arFEMLn;utBO9* z#zxw7QZ`?!Ucbr)>;6vwe$sQU)pXV6jJ*?OBbLo~eD5jn2(Bu@an@^_f`+P93fr!z zhZVL@&TqIJu~Ig(o*15uR8j!2X5LlUN=1ENVH^HM_9p%9X7cc5%mW&? zP=Tq6I?wVLb*)u%jehra%JxQW?nVsjxl_7tuL8eO*C@C|+4B2G4autyoC zw8MV=hWQHD(M|fp*YvZS&db-(d!szuh}d!roela*VQQM5rv&p+@Ikths{0G#s*1wxsm>_ zW8c@6P4|7B{_5uXkQ?UVChDMr54(q2)@z?Nq+m&{SM;3<`#{mpD(r;ZKEq=wHvch9 zU5#y-;kxo^)(bm@b&9@2VFwg8&hwX zFMR%{?f!}~XiEQ0w_i*D-!V??g-ac~nENW2?1P^9$iXM+t^KYUDa zoU-~}wLxLUHnqgY0*x;DUnrySIR9_7Yb@KF&ijAZcUkSVtM96U8;d4ePu;ONSl+J$y42=!x++Zjbg{szABo z#z=Iz;-<00SNPRU^na-xeS;Oa`&DbJwim9S4O83`6gFLPzoW1>8k-RJg|Aa5H!FLi zazK{u>tlmp*i%0X_p4#H&gxKmZctze?`yxNpWLiXU#Bl^!v23bhhXXS#T~OIh}sT@ z8|O*ZPON%}u{x$-VeEWkgAMmhhOZX);HRMvtYR9@+}>x}e#Smx>UqXa%Cfl6W%v#< zs9@R}hQjE%hnY$z+hLu)IMf+r+E#`WF-*UjsbQV^CC1LkI?-0ccM{W|j_I!sKd_%^ z$1ExJ3&t);8S1&3_< zQWviFop+^(_7gd z<~VE7$botal5={y742b?Cmydic+7X(!zm*XuS>k~i`v6wuNSY2V+LSJ3^#p8+QVUU zs14Ed_?ENV!|{0cg$#Hv!91P;n-g#a1ZF0cDR_HRGab_@NlDz70Rx*SY|enm%?kkf zw}``=!CMkGX27{y`dX5MTi>w(A8u=&Xb-h*pFy%Ay)~wDI{kjU4&CaTp8-SK87MQm zT`X$b5WYUr?g6~JAj4Rd!IotdVUdUhKlHuk=!MpTkrQ2T2KzSPMo^m)jL8&S=(BwD z#(RUM_pxt*<$#NryV$_4#(mNQRf@UR13R7OLJxf89EaP8m-Y0C22Ay63p}_frLOR> zWu8~Arykb-Fzmqs-(%DJ`LJ$c-|@k5r+zvXf~tucGwKOF0Y^U7!Qma)1CBTo@Orn)+qVadS3h+u=>dbi15jvWtoKrP*c9g-(F1DYtj*b?#C8|D z!~Dc}lo^&}?(7bek`F8R%jo7wtGmOz7KwPhw?&J?-QiM8>w4oYE$4TKA+6kly2Gwk zPa=6Ubv2q7YMpSk8+@K-p6Le5+s2{%xO5$DnU;?0d7IKL{TI>`YP-RQw_0ijw)1Z8 z2AkW(qu|AM38%Wjh77NDo#Dp2>)M;!dcgkn7AfvvBH7a+@klpV+EGXQcXUkH(G5;? z#1jxxI=zS@Gdd?!cY_0+-FSWVwtu4d*sh6qy{2m$ye_`oQuFTZ9q{_t?N)+c+#ZX{ zMt3vtdU`j@v}N54G-qQsoNU6VJB;!>SlJzo1>H~@KH~&yun5=KoYfs*qs{6R-?y)~ zP3Ztrl}bzKn_vFfT40RaeL1vfi;c-<}NkEDneGQ2g)knGX^$!hvMFYcMX19t#%f_`fx3!1!X$ETV*XHlY zr?$;nkFE1o%gWkYjW;u(;Z_65#CEZ$b6Gp<`e?fc@b1D4qcVf7$iVn0(o(~1r3Y)yg|4`5CSWI^iux`XDFlb^I#a7H+0}W7vcf$@U+)a1I&S z`!B6i7|tyD_P@KlGt5@pmpZ{&#a+<}*4f-2c7js7dut~+XLm2}1S=fw@=nm-8B@{; z-gi0&b%M8JofkVomCudWJA9+D4v!}|hj)Z4i7|sZ!t|u{QJrCHl7X5JB^juBaMTZ2b&w1`ji&lbM0YS zOXC!}LQ54p#qBK(><$mMjM~2=8Sr^)V@L+{PcsH&z^F8}cLtQE8Q0oDd0NcHcCa`Nca3_t ziT|h_>}_LAX$ME!7!%sTxi-d_cJM_TBhU^8w^awXgHdgbKJB2aElzh~TDt~Y-%f05 zM;!UpH}MQvHs@9%#_jeI6L#QMY?wxJTRQ z!4Xtj>4AA3_fiiW^%N-+W7tuz4sh1n5ic9drGdQ)Cy}4jlP;%0Zx4odu+2!SPlIDd zAs#;TCS6K{3*MKpA;u(MNP{BtIV>F0*pvptVvSj8P!a1Jo(3mkef6zjtS{zpYgp~` zZE6kYe7?6^L!Y?6Vt5c|Olb{+;?H=nc2d(1rNN}u=P(`ohh=+_VTl0#w0)~Btas?a zws61|_hwr-Wl?1Z*3F6L2m{Ft~^ZQ%2m z3wZN%Y}|}CP~h*6(@JI zu2T}nw1M#{PXe4z@eODL{hH&Z$y?34@H z!2_x%T3O&?tIJl(t-piU!L)ePw>AxDw@1iKISnMAI&s~Qr=JX10^c(*s`}wG7{IagGuGx-$8a6q26Ittu97&_jak4dUuuh; z;)XZviM`zz3(v!wXPxI5qFNQVq^x$*85@;#xtlpLUOvgXVb{7s@#6Isc~0+p zPPW8}X8;>xsSLmsT>MG6;J`U?%vlFqQFbEP<}f!oq1Iu1?ts&dKZR|&aa@ISB+=g-x?4JJACBPv{Q z=(Q>|IIOc4+f;L!1_xE#zFeTWS7~gC7TsT6KRdKIe0B)WC0#!|G~IxcE-&)W!)J#s zdAvya8rIn%EAHgB#V)ep^40%cwtbcVe);`U+~_rspnP{Ib%338tlB$Hqw9_O7CLbU^|xJ zcE!M{a)aVoV27Eum+*R$-P~-4x9sW>J6meUz13~u%RP2q%7~$`24%d727To zCc3=SP1vk@7n-n7wW6$1dMxr8I&P4`r-qK#)4a~{CIr3SQWJ*9#39)qqvKPb#B|2% zab`AlC#L&jlN~mtW`${4^Do>A!Jm=rvI_@iy}<>SuwlBO$mK&a()ArQ(`6#=t-5Eb zY>28)QQ0^Zt#2G(v7fsY-(9fYUoeJS>%`b$R)sHjv%7KXqG-5vS}Lt>S^2~>pjjpeT$*PVw=cp^u)H=7e!vp8sco=o8 z?!_nP=qBD=qGKU$*5mQ=kd8;GhkMfTP~*EE>%mo?`*EGZP)8eVh?HB!j&ufJoGbX93F;T;T(gO>~zKA!OWws3m6sD zc)WP`q$eKljxoG54L03q94V|av~0S9PhDa95f}7VtXC;k+v3+*%O*=0qUjEtD3>_% z@p70eeUr6pVo4rzX_s8=jH}Tb8oul-l*f1m?$jTJAE`fQPu_mL=D+luRQUW;cRbs! zKLih}Pq8QDw5;=0Sb^y=cSE+C%W~v-QbTrw;hQfjuvm$#^UY2mZq>X}S~Y8E)spLVHIfZ#z078SOOoIAN;u z;jlja>75KWP!=j(#j~&glU=|PwqW0;#BQ?o6B6;dUP;GMcZ$u#>jgGk5o;*bn4KAB zB>KI%-#yo(<%ZH%m>*CZ{>){Y;$V+M?;QuPyAtq^>F#%V*ZE+S>fPjnscIPttRQNwl&UuD30xo zlj`1D|HBgu_@me385O1AQ z(BORt%P_{h&}36g_hOUHF&jq*Y#aYhoqjvw2OC|MAI!&a2KS_0a2oe0oe;1k;u_w& zHaFg_v{^ysdT08FE*v67r!gNBo3&k+!YZ3(<5FMB z{dl=1#mXLc8EdZJ0_NcFb69p?JABM=%NPdO)p2$7w0_$?4%taT5 ztuWFw@p_s$6dzvTOUJ*Ty~{Tr4YvH(ihtig{)Q5F#EHglKt90U^?fG{c643pgk{#^ z)ikH}h7*F$4j(w#F{k@8Cp+7?9e`zHiu`NX9rstB2$xA03<0e79@~H5#=R2vHa8qp zjCb7_%Ed2o!zkNjTqPOmPCx91x7IgbiQ08fDkds<7N1w?%`H zU0<)lN{5bnD4QHsweEH4RVo~DWn*QjCWIoY=B<&${`JFa=*=(H+UbN(QD8_6X zj^`-9$EF^)v4gVw-7M>QKi2mi#dyyNV{LJGeZcm^qfVG_e-?vGhXXH1I5QA0v8wZ$ zQ!R0^el9#i8kx^q^MOv!>~i3OtM7yZ53Lw@@Up^o4_;rgO-BpHJ1joWfhD!qp&oXy zLk=m(L;pwsESu~*mfP^Xwic6Zc=~ldmK*+SD1D0M%~JH~Dh#o;E>$td#&{JQfiX^n z_w2?P6$UwyW@+%Y(>SlM|wYJt+kMryX?t&e#8z(XDbr>J3aL|!-8DE`n85{8B2$!({tKDUc&@c$b zG}fsm-rTF2hY*L;xTdAecH=6EH11;@dmolAM)df;5{AFU;rEp$;QMQJ*cGYXsUDmF z=~Fzg2Wtp-A3g5z23zmJ(e|Y0R=gb17}Z-b@qbU(Pub&uhZOK=-UZ;L62F9XY z{Y)67dS}PrtWlpC1IO_#)u|?|)s2lYxZ7jkA6_}ApTP&W#3UUu*+(&GYO(n!Uhb7< zVAdYfH>)4}$mX#XP8=hg%bjpl(Iz`#yDb&3-?D2Hop8pXO>n|z4t$?rkkgB}(rMN> zaX(ilqlAU_XJ00?1MjY zcrT)!u>N(bfn=3thTO1Iv-ok%!0UR=J;2R+yD^pX?&MKA8!V;LP#UmKe6LizH9pvA zk6-SCBaW5_Ox`M;^&VqSER-7t{^g+$3}Z_y9P(

fg2E)dU(fvyv7%?INjIhA&K!$#w}0Ft|g{{f7b6~(^waW78$eSU~{aAIzNmx zFUG;ySOc#Q_}cc3V+~=uM#Z;V9nY3V+x0{C5T4P+v6cP#um*!{@fS3xw`Y8gy@gX- zrNI!VwcEBw)n;qBT#q5`7|q0+Gqrnh#Yt1oXzZ#MH_pw5ORe0>?`Xz`;hP{>wQt(S zv7<@Y?dkK9V7YS~+nfaNs`}+hhpX#JZSZnTa_bez?A=D=zWILQo9>5joO(mi=i=yNYmI9p z2W>`~3d8KiWEEE1jfpCZa3sBfp@!4AtimTwm}c=SntPC&^|MBgOYY>cIvXa99+5cf zn;xU^ebf!C)hs8Tz%u$-6B?rr4$w-jRv)SZ!>?bs~o`57&ttcog@X!#wPS z*PVFM;IcDiqKl1gT+nMMeS-b4kJ9Q3CmyIVaDsGIF>0MK*Os!&1v~9J#;s)zW2y_P z9R|*;KeY6{;WY8)N~gKR1>2nlULUk{?{%eo?qcU;-PXGCaxBW_$_O@2$4PM_j`#cR z`Uy9#((0dK+2hMH_@vv5caOPy;83osb9FZDU&{3-Vh!TXF;uhbf3) zoUz8Im!eEK&KQ;8Mt&*5yqtuqH(unE6OCXZn`gxtM-$x_lGqt5&Uinm4PIVLYCS8N zO>P{@BQf9gI0Hiqj59C>vf>PkfiTY46^=7@gyW32!g0p6L@Um?l8AAJ6`yR4NgtO4 z15JHgB8(2l86)G}NG68kj8DTcP~Su^-kp$W%ui&e!r{-QM2s++3V*_V=r=nT`KHH^ z|5xV1a^E`I>RaQE6fHwjz9v7|P5IV!pJvShYM zY6;ipKmXGf{_E=s)*g_&r$c|Y_L%YgSo|5uMj6oCq3`m*P^Sl1eh)YkS9xHS%Zt~z zL0IO2*{VL-18-~I86G&L>C-&$nYI;&$+aHuP=oETmSH~g#N*{y19!?s}iwMNy{ z+20$TQ7Qcmdj=+;T@!3Ec)V-BEpDv`Kj-lqoNC(JZu4L)rz76vuxuFU^y1AWE(7^I zoHBZFe?mtKcd4bQ;H<9W-3Gli-YxUs+T?yu!e<_K)^mN3j@ZVxtz&WiHZ{B_7vVSB zAGndtU%h^7LVpMD0y)eQ2aI(jS$^MmcH`eacVV3^I){ha&gmvrVIPnAnFq#r%*|L~ z_~9N8u97`RYJ;Cg`Us!-NH_7M^+nzMz&cQ8;wOK`d(3$rc+>OT1cQx~YOtXcKS(%% z0iIFBpOmRRU`aci!sC(O6g(k(IKx^c7}g=>Tz4q%@Gf2-?3l8zJ04H8uHWpOvZ^~& zb+%UQFLX(n(;bH0W?e7MOc{nJkTZjL-S_sC^W9+b?baF5OWlm(?rcPNV|sTszq|2X zceb{>v9mk-pu2IhJG;=`=+lD@>0w}WHKT{Iqz7Brqp>!_?;1R7$1RT66?-2W^i!;Z z*Zsq<{gv9>Z`jz(#)aMR+G$h!%+}sCz7uz&Z+}>O zWrLNDeuM8;q_fm!#$g5z;Wsz%8x6)hhTp%z!xC3n>==a&l}=cM-{H@|@5?>n!1wI` z;`oR3slD*MJ8&oB+t@H(QTs9W+V#wYztaa+*}cx%&bGeV;dqa+x7l@paM^tWd-3?~ zkFWd&gZvEyyiUVo3AbTPiG7TkZ2Sn)f5zKZw@%LY?C|^qWxw54V{^{4bn?El(2$QfCpn%F?hl{_j!=% z(QhR2cXO?DwVu$m8Nfq2Ig@b{wp)F9Szj*K}X!0T-eDxo(XF@C2Y=wt)11ky1;<0DRa8Asa>VU$?@Aqqm)1ZghO^dr9dn586>A zVU-=Kl~W9VS!TyIY0S${*%NR-!2M>C1G`J#6}xr(20u{OUvcAgK*7U5mlX{!``D~w zVDoTW-wsRcW{urCn>XLVKDN6r+F2imiPxhX`YZ>V?6`ioLDC;^;O3lfumiuDn{>&J z9}{-t^>|BvADf1kL&Ey;*uY12YsC{!7Hzj%-^=^l?(S!4PT%fe6%Ku~gRPPE)41(5 z_UC+Kwi|Qd+^E4>=2)xY86jhz2FqMz&ZA1hq+gSt4?FP1|Pf3N;iDr zO2=o*Rr7T>ELYR`{V_7`DdN&t0;qW|N{Cp?AbcmOgO8i_W>{9S@j4d8dLC>+_!NB9T zcwFzgY_m2K!u9npx>EqpG~E-6yStC#2Zrz!6$3BdSFBfcEn9xWp1U5$;%Q8bV{!Ko z@)7#=sYjzqw2k9WDjKJt9e z`r2VUUamLXz22hz6WZY+Zod)!l(7RxN$C@|SoipjefT@K zG5Gnv8rJNn4G#+8fi5_wbVRb-X5a?Q37h-8jh(aMI2+lIx6VXiFwn_~VbSf_H@srt z_hx!quh0se&)_%XVust%dz)Rh#$8KiUt33u*o@J3xMp(?w6g(rNoSL1C;y#zv8iWz zuuRjykAU5ymElKl@yHdv{aeXkI#cm`R`}g-{0PAc3_tM8U)E*x_Xw;Q6sKu7Ja38j zyz2KM5yO>7)Th~x8wZmwJrmmGGuAuuF9W>nL|fM|2fhwlC4Fp*$01*KALmB5wwh>t zzY5>|#P3&)41d3BX!!e8#o_N)^$CB!>I*xJwGYM0neNEF;$Y_;*9{M!>-~4miZ(F4 zTrobhK3RdKVZ}B2RV5B%u;Dh0l&#+r;Uf*FPg=|AIxKO2ca;uT+&DB_zGJ=bfS)zM zAM=U}JAC{gCa#Un51*L8eXbAe?f{;Gad;n~GgX!l}Q`au^QcDc{H*h$wfue&Jf zvetlbDuX}fUKPr1R-pBk-58?b(!KG8ikkrLQ!2h!^%r|s@i4PQ_3j@IzJt2L1JbvfU|EjX8D_h>b}L4_@< z<8zg5SG(eZt>(t4W3r}}YiyI|{y<~98Y7VZZaMyMve{Y}cpakbOlP`a-V;iH$@p}$5GynjZAFL6c{15h4}?+=p6)?F%vEcHZpxbV<)`u<@>b5 z8w(IrmDTACiWtg%j;x5W0Hy^nomMgj5r#FnR12EM4lgL zkmnfN%N#^pXK{T6*7d&maop5#AmJv?;1mtv{u z$_(srxrSI4w@D2hn(1%lA}7YJ;S|-qC!BZR)G5-Uo&JQz8GDD>E!S4-3!3|KFd750z12eH4EG zVKVH(@hTjzg8WwDdMI2Eh3g@o|1R7Qh5O1ELm~fh`~9!*JSaR53eSVW^PuoN$km7V-#!lwC+;r!L*ehj z@hEsc7p{lG^-#DT^6%@y{ZP0c3irdmXFqV+;13L${ z(mtw2RLy#q-U)lZU0MQT$R*6$$Y?!K?Q_$>VEL!kALz^5X__NVb7pm8)Fm&C?U|EX zjTj(_kjl%aJ!!o}6}g>l4q!q)C;A-bmvHT6!JE}-rXzfX!9YLnJ2&Zn*!ORVzBOUF zdkGk_0-&RG&x-eUejj~G^r`hb`b}(Ij}bkl06Fxjy6_CaOgNJViuoFWdI~zi zgM?aMJEA>IAwXTz6L7eRJ_5a|3kM!RAEF5^K*|UJ+A520t(Y~IQTM!WMZ9kcoJf@a z0Dz>-gr~s{f(3`e{RJK25qahN2yhA2t-4evx1C8z$|ZryC`SaUt*;R1T?|7OKoph; za1RcLJ-lAMRAvW8b>Q46_qUen{G6UZIrwJO;0|s-xQ(>|eV>Q<6~cV4WZF)VHh7*$ zc>YAUnLwpsvdhcnm_TtZKwV34k2FV_c9pTS`LIXc_ZI@dwtB4#z8_%P1#ZAvz^32J z5Bu8^+{x8prd?+2bb;@vFD3vy*Ag6{=uUkPPS4v@g?rGfi$RC$X|18at`#VcfB(Mr ze9!mLGXX#~)Wo6~#EdD7jma-QcRVrz@Xh|NcGg4=1^E1bU1+%3LJKYXz2lPyI>mEPU^T z?+XO@ab!yieCIat*YV}L@bpEICWycG)|8v)dpHQ!sH+%27IJ;oa?F6?OvC0K&w#Pj zRWODNtbcxKUfzUw9j=S&Gv6S%wiSX+B9M`BJ5;kNy zP$$|ma}Z;_@(0{obHLJgQm#(r0TJ}7`3ZZsV18hx5qAX8nJH@+9A#F8PXH$O;^yY2 z2i{fySBT?v)FG;)e?~tuzhS>CSPuUNH0-zZkLfe>kL=g?etTHHfACu|`9&&)=2bG^ zX0JYKeZcx}4U2l9SR59^*K5%Yv5|$bcioA#;cA4zAV zSqLvpTY!VU#WTJRwW-T901IjHY;;y_I{s{AaBXVv+yNg@MXMS}IOSCr@rz%r0LY12 zuOVW6EeFo~YFWs5tCrcSHtSql>sy=ku8q;oqYU_(qil?siK^eniP zlA22B})2Net7US7Cw2~c8qc!2v7>>DVMe*Ta8l1rJHI>6E6Nh%QHy9|* zZDGH43dMeOISjnL>VC8a9F49!O z4&(@UUpK2nbHx$3aE`>R67XYcJfEGOnc1vKCE8#7DCTixMH?TsRm993t!N>5sbVIt z9`o=J{KF)t96hVmU@sM1Z@>h5GBOBvgoaz`w=&TAMlyKklT&Q^_BRr zefux?_PAVyp2EJZZhpw#E;x=jiyjpphhs4jCy@AP{}qSxex{vg?D$<{2W-SrY4Du( zk=%^YPhJ6p7SpEjX}MD=){LE|;p_VvPKBTRHg`@q#+z66K?dK6@*W1lMxMt}BjCdG z_R#V5<|7pPiu`M;QIW5k1Qum#zog!Cmedjzb{}Joeoy%AkR$$Q4-r$p3V@6fvp>T$+0rT~}UwLix*7zUz z8lTPAH~@WaPZaXF#NB+aWoB!EcCh!nzW#mOkAZ`d!;(K$0NnQTx}JYSP{XqXtAR)> z1RdcGc{FiUo*Nr$E55U446b4p3QzNXaNnOF5q+c_7U-uaV9fP|t-yFs!u!7%_uasPw-tqmGeRfa$ zeam}D`umm>22d!*w66FI`m@}cvH!VKiFfATw~iPVd|du7dJ6lw33CQ;^zu8o_;?p6 z^G`A`YyaZj?l9j2LHY!Esmh;_R|e(L5-aickb8OE7d7D3bP*hEpus|Z!8~s+UfB;F zE1Y>{pPImMFycb_Yc+n&J9`=1kl$+FX6FUD9@^x?Ug^NVIrXiHlM~LpY9=-ShAnCmW*`)%hHa-8r%Om_KSd zK8AlK`m2sJuoW}=GS;;~K^%`Q$;PzMFEo(azr)$ti0N&)uT5oXaQ zOB05r@OO-j*M6LnNy@M38RZvLnGgSK8VY~6Brmtve8xsG%>ykia7aITUmms3oFCw< zS!Y4-C(uB_oFcF>`3JApPSENPrJWzdYkUu{{e3=uaZXfh%$6`(gf@C>!g4%&9K`4JsPp=7QW#U<2R|Q($B7=_|)H-;4#enfY75 z%enAjcL{Dpu`f1>`gxHKz!!-GP*}5(#9B-7b0r*sdX~f{a7XC5yCSET$K%3PBs|MV z{xiV9mEDV_sgGhcEe#}7f7{YOO=EaO&sg5NOR@gJCFpRRg_s8M z=|_vxsRZjlahjPNURj*3CWp}KGbyF}6{n+VJk9mA5SrJn$T1XrHQn8rNfV1&TQX^B zQ448CXB0i1NoO*6_+~~qzbw=0;vo&rQTxohqz z>W7K!CpkUf{#gn(48VzK6OALSI`so|-WP=Xx+Si2!%waJ!E1i%>&I=CmpASUUww(b zj)39!1Xl1`=mL9luZS7rb(V!x4c!oevvs%~?T_##NrvmL?b0ua7Ro%hOrC(~t7>_K zCusdqv`1gP90UdUF8_I%VHpDoSnnWU6Pp7BHd2Vn7T|ZgzyNym)#n!Qy#E-3=5=J@ zyHBiKAM(v`;5HL2xEbm!M#JZnXwMSC7e(z7*`|EBVh^JpSmY2!h!$WiPl_>svTQ2h zOa!cI)L5DI;qC!$UlF{YkK_6#{LN!6;V(x_guBgCVgznH&r7ESMD15A!Vl*Vtt`S@ zHPFZ$6ZdoKhMsp5s@#OXBXNNUpOiUT#mNpeHOxT{9Weq3A2vPYV z&6}UwYoZ4O7VGHzH4%V(l*>pjfz|;u@-Y1H(x=fp1m`j9JDoa+?h2g-h}_-N7WvBo zm`VjSkC)B`QS8CYwG;q!`VQ|e{AN*mEVTBL1ut=MEjt_zgXD(Duu{|EF>ae?&F8*H zK@eQlV&I*$3w&7UY@!}}KxZp;W0%f0>G@|6$A^V{27g7+ifuw%mQEK1IGyHo;ohm? z$KZYd9tJW<9iWfrm<1tTW5Mhou%1FxmcS<5y?*}6zJZ%|c$E@@@ZhsbbPq=W`&@2o zgvQI<)6fpxg2$hEMrQ^WMDs2FW0hr%iqIZAy-$Q@xPiT4YUhtE2~(p0|Jpua%?aZO z;~V*AD1<`0hSQKYE4%}(>JkM{g(d zo9p)cV*3H?ageYLK&QOEo1%+g8|f6{uglSJJ+)Dh8^iUV!bO4SRQ|Og7iYj<=mw3g z%RjPEXDTg3mlul90*1PU6ltO0j9QIsr{ox5R5w%LzJ}M!G2+)D;X2V6A>-tcuSo!` z#-)m-Zp@L{)O^6%JL$8LK3jB$dFjvb^ox*wq-@QV*|fXUb1Z$FyZDn2Y1EuESo!sG z=jxk9qn}JoBzdw7*9E*^17!ne#Aq3}Lcud43hx$xTW7wbB7D3@R*LYR3VxdRq2OG# z$)76(TS#+}WSMMCQ-KsNuU09CGkWmB?c(bU)yn2)e}TF3#$!3!wOsTKlHpoRz97LR zFdvVhm~okn{{j75gYC3N@y|7=gKBLy;OA{HN?u^V!7N*CU;^^{=hfQ-i?@dq9-+XY zu{=k?>flV*XvLVWu&D~J_Ni_P()L4=y0pH!5g8{NJMrNb#o`YU*uva0p=7Q@dfvuh`@B^fW6f;T( zYVSydcgU518{9`(kMJ3_6+@z%nv1A*y1PuLe(=e_9ob&j*?B$nPH(VQUFwBmdkHSw z(TozxqHX#2?RGXmf`h=^&FsbJikEu;A|GDS@7%+Iyghb|^^$N3L5$YbYx{V9DxP~f=knh?3A0_7djhwGwwL&b#&kKeRSb;oIRLgg`+RdDj&*!V6n&L1}x zCZcCKy{<^?3}zogxKr?V|CIJf;rgF~pSpmrN0rFIPvFsf2nri)M7DfFtIbI7PiTzK zZTkt0wS$41zgZc9OCM01%rr!d&+LdU zE+}EF`hZrJ06#CFIbl~x?k#y@5KLc@HCWOXrDicDIV`bn< zh9;G@7QRp8o{kKBpL&$DTE0)~@c##NtDJT1eQICc%KCu%l(zl-CmbERQqy4U0PkkLVV+zJb8zj)`a(HLd_!R z!{}H4fHdc8xijk0qSs;&v-`CW8ouRq4e>MH3iqi?C*QJezDx7ojx?-GC*J1a#_#ab zw!h<`Lnq$}p+k-9gwUbxbKU+XIRVJXCKkK%Y@b;#k7HJZ5 zL9I;|^b7n9zTtd>Rn+mUyGZ2Gt3{r0kNAeix!u{VUi)pr_&gsuEzp~wtMA+X zd-{{ZlISx$!+Zg(^X2R}z;ebe72(9ge@LLc0)Lg}^j+n@*ch|b%m!Vt6OWA8uaZ4g zrQ=cv4oq_-9G**LA0pO4)

36X`Z7wUJCU#;a_s3Q64U3j*W(2^@do{ata7hUki7 z-VD(MH8Lnf*EGFhh&mhbtAjM&;74OOU-Zl%^>+0BL2BtL9fNS+!u^6R54gy+Bfv{I z6>#T;@RH?jz}Fy00Y{tn2yDABmL)7J4xI#ZZE8Mga>0Bw_49;l{r+~vX+^+5xOY&Wmq|B+A2iFPEg>X16LLppf@*wqPchmT z#;wv7EN?No6j6}p2KN)WA?kw}#b{jg@8GdBraPNboTkR&$(Dx2$Bsa65|ly3s9get zkXZ=^O5KzALGxlXGwE@##!3323>ubfAphVLUj5hK|Pth$_DU&Hwo zWYqZcFL!7=GuJtgRP4rvTC4;nI<#4d8H{)}W+498BP|_jWdv^6)W^ucjc?eOZCYp4 z$DFP68A!gv$0_LPwvA#|*!otR4%zxyo3(MQ-VW>OKz4s;9sS+jaPHf zdkfmuUQ({gSn@i&ACHl=ekx7jOa6wGdV;Imr0xZMsQ4$UY>@KD9x5BCY6y?aze@Sp z5?#8P2$!wnWgRYCdnqFX{8*$F^Y-n(_uIqX{O;>p4YKDby#$rkUSv<-87k~C$ku#t z0QR)+HF{I~kiC!5&6^xg#{956<;?r%x$m1JWXomJzNPmd$EN?0n=;lI!m-;`<+h`k z{1KJHS^5j@p11lJSoxw!-~)b@eiD9#SUNoZG!xR{18Ad=4mU-E#PqEaofXqJa9R8<#;gz>+AvVT0iu?j_Ww!uBxfmp`Ysa=r}yVN`$o0&}q_| z2=p@<(wx6&?F7gUpn(EekRKA9gM!;%WEX|I-=-Y;8`0mit&Ey7u4VSn_CDHsUPW>% zKdc=1fi9sfVD!AU2bxqG*yFFXVSE`4^gQd$;GXqrfSqM>zS{vbjJJ*RJt~*jzsP0V zRUq5`gVvYPpK%5)VcI6fRuvSR=g#ee-ubWwRQVb5)$!Vj@YCc235ogAR4tPnFi<~= zZvvE8O!zGo2iwTYHsuQB=7#kWycbXAZcr|ZkAKqbBtw z&E>ttmNnqBeH=5OX_Uo&4`y0$&j~a`06~3G(3*(sW-*^NKxZ-0I<8V@ z$vCP~UkR%h&cy?WIjll_oU7vluj_CW?@mx?vZ5_g*sQzXSGWu)QCqCgX<47B&=nbS zCD0Oxn4)NN6}D56k11?l!A!a39s^r+3{F55oWI&A1*diXX~yfuGg%XsYA^Ov9ebXi zel`(}>niyX940|~kIpI9O&9#iFTg6Qu~%GNE><%?wKJ@NewuIakLwM4h6@5BeYu}@ znI_VlHj{R{a2`Dyg{^R`?I^&pcDmHTb%zFMkQ;6qpy_TS6hAZIt`D#kfdY-y*Wv(+{`d*$iE$6`IxFrY%|89Xo>4QV&i)@%lyOfU( znec3`Z!u|;%5UqjMhF>}8bQSGFk%pY(}+RJ?xuzC5EJt0Ha=^hkM+FAe<0ZEmJ%IB z5l4miZFSIwSFgVXd1iR&o77PapL>IrXu%zIXt@#i?hU$N_`APBJIxTnEqwl!uTvMR z9m9{oHrKD*=U5kCr_;_Rgcti0&c03O{lW8Z)AFE#Y-@rCQO%S{^p-lbCvuCS)Go2s z=+|jr>?M5Yo?xGOoq8tPh@Xk%+q5QaiGZ>@ zW*9lOX?8|n!fSLo!@sXKtt-}=W!I+fiW?o@qD3W?g>TTU5=zz^w7Qfv|1H{5+D5h& zkJ~$I(~dGce7TH*Y&XkvLk*qFw&x9-{&e&dXo{7q+_^UGFJ~cqrrakjYt!oT&=#bf z&yHY-YW2L1vU@zQqwHbNyY*|+#upScWAuyeg4bwP1#M3)x>UiQRf`%|+=a6DRSFNO zMMGY)M%ScGFBwB>(%{P0#%eU7vbCZb^?Er46<>Z?KUs}hzhWJ#Mzdcrc2}cTRjm2d zsCyM_S~Z$nH3jY6TvbOc2djqApj%ZfM%LOPAUxr9Ysu^E+Ur)wH(0YbI)G^H{>~+yq3ydkQ*P5TIV_Qupr=cO;3^dw z22g8)Pw<{>rHT_1YAoJ5#bpjYb0dCj6o#?YMQER7?@PtGlsc*i^;6viskB9n9+U!M zxUw|`#A)o#RPY0VE)H1-=*PdYbKr*$B4$n=dlhGPdUXBjTNTwDseQ@LrO*E$@ z(~%^zYcgF)GMgmRg5KL(w*5WXb(H^$Ib$y^#ktCT4WQ42K%QP~m7Cb%+ij^~mTLgcp0^tox zHio}~v^Qd{u0cbhlW$g|Wid+`Dr^^r?p%ozHoZc7;(Z&d)7g0YLRFfP`1I;(bSA0V z&Z;ydMIKj^My8xb>wBb$jjB@pA_`L8ETYV>PQ%ibiPdR*QMotvZBb=f4ce3uxn7m_ z7Ym}6hQ;;GRcLf^AF7&OoHJLQOY&T&O7dK5O3AHWr9P#VEmi48X$83&K8Aj-c+9<8 zg{D5v3)uU3+|nwv{)uRW8NWgQK^SvfTJ73%sjAL9`(>uC10mqWc?p^Y!|K|AuYgY-Es z^Ym?A;pwNpVl8-$9e+h`Uxn?c!o$6)%Im7KeO0YpHCg*=R(3VEp@wy+2J2DN98r_a zsHrWg$yV3oUwgdjjCqyysMUZW+mzbQtk>At+PsKcwLvl7Wju~rre9oc|n znkm_B6X~LydNYZxDb|GqYNm3H)0L*ZC;>jvV+Z4ZpRy-`PFVJ~MCxq&<|a~>-HYu= zqytXOghaaOoWs&N9rU$Gpw1zuSpqGHw{FJM>iCJMr$Lf+If=DR;;%r1ldY^|HX-@W zruELF-dy>O`XX&#!ENKvSYbQTwvZ}}ba1a>dWOqJM~7Cc(XAY6ugU8jyk076Z7lj^ z>=Dg4VAC>PS#8rQeFSn|Hk5-FE>iDa@F`7g>ggMY_-so@rp=a)lvgdezRh~ta< z+bYo1GCL`7ewTol9^xu=>#&@@Nuk!tCwY0|2(&r=l*R%LW}r=Xv$XC4o?|j|%k&fX zO5aP&+ycH^gi@`SkJEfjS)Pc{7#58a!MGd+O2)VmMUz3KM$sHu?-NB!SMbz zqv*V&G>@Vteyvdywef3+>EZ`t(#V(__!No5vzk)6!Mg?@`w zMR>8W2b~?Frr%U)xr%0@tnXi6b5Z_WG4qB-NAlO#XwKx{USF${`1)#*#Mf8XB)-1R zCsG4BHan3H$@;iNa5NWnnBF*6_e44wP;Mkp!;p13fx3kZd>s(#kLJz~D+d#3QzVR- zGm)rG3A7^0Se-zVG8lEn>)9hpLnFQ((?Q_8e0r#l~~IS=zvl&a7a}(`P@YijTPOyv<6T&a?9!md1643Os91XzKLrBEf9 zqBvc+DvUKk!>b_Y1X?I9g%uig(jXwoZBG;|j0k^4E^E;94jk0*nhAH)UR%rNja%$c z9hMaQtXeI(2=A7-P2*n8#nbJ1jmI?6-ELfG&keE zx^1H{MF8U`pAy(M0d&r7;t+fC0rFVP@q=WA|Bwv=%6nD+3B3a~sxRa}vELRL58j`T z^!ki`sr-e08-t61*?qXNL4hXPfp4HG{xSJx3=25!UnmJ=Z$ZyjRcdOBR#kiVlF)nvZlU9uth9QFp7bgHbU29=%i5@ zWSdzMSyuWIu0>NvI~gU;bi)^;X;&Z&{_k*D?iEA3BeC;h>1u?(p5KgehsRR8XnkZf zb&uxe+@oTx8L@17>`S+gO|*3-W8kT>@ikjet`~)BY@|^J9T&|b8MIO|yW`0obYa(G zG|)`154{32(7GtCu>%M%cS<6Do?8y#c7CT>QOfd%n-rzafjGpB3!u&C0>PCTG(8x% z4GI9E;FS#OAHpfTJQO;XLAyd<6Ri&?94<=zqmohUnV9H)MX5 zJKf@IE*=Kv$jD^a0r&IPa*m*P6RCOLS}sd?hQyzOp&G-2u=SnCt&`3%6FR5YJYHay zr0;~GJzi3vMJaKGXZ|Lc?%7!-FBhO~p-<;P6zQ<8pDL69)hrmWr93X+7QZvT-?yh8 z-p*dj7=LnEfL<;TlyOCAy%3pJl+Q(n3~(VPR?KPX09&3x^UMmJGH9GHxIP^+(9aP* z~y-~4=zflMS(cP?+)PZm=tu!B1tf=K?W@jxkED`-A#ckHx%lgK`q0t zL$(+$jbcwn5_%P-nbFCp^>AExOFDH+4y;P2i7E1|qO>9{7OE}>(*|H{nx?y}GN^mH zJ}Di`jWbVcGps!sY*)rT^YZXB=1;&kfJqCR%lbRiO?;uRgV~5{?9h5C($#_JAPsU% zIn>sn{xYbbJ#tB;o2Vp=hg!cDfR@WOtr_ZWV9E<@+Gd7_+0@i3v(~|zoHfybysQLL zUb0-IY;NmaZR%ii5k8;WD~!R;6s+D~lULV;q#${IUFt0+cdtu>q~r_lLU}29RvjpF zCLeeQuV?;-b*Pu-pZ*SA*Zi&Dfp(35&)YQ9@K1i5dYS&_Z_{g-3tPh9 z_$}&X`?tJFO&$OIH))sSANeMp6#Q-9q_KWKUbngi{G0GT6!163|G`Mk>yTZYOX>Iq zO?|q|mDlOW(|7{!T<#4XQ9g3yb=veyCj&p$z3jX8I_-LSIJ(`msyyv=+EI92WrqVpEIsHo%4kUR;T8E6EUOxPM_+u$sg`joz8^I zAZA{~X;qz$MPgeZK9;As7V9*wPJ`pZ4Xab^Ou^+i3b?#~zeIP2ISrDYV_SC#T>r#2wbbAL^1q zL;UZf4u1x+_YNiuNv4CLWR%_`I($3{3TWX&NwhdYUWVtV#Mu2QG&qspVZ)Q$6)7|$ zN#B@63zJ%57FVTMJ5$*96pUpaL*$){59NJpvFcQdsFpSftUc34a>1R}MFOwOO`K*6 z@=TFhi#lY1eMEDN$QFyfb`o1FR>j+$WDJ(r7%7x3vHAIeD%8o1KF}OdZUYbqNrwdR zngoF@`uH%~;QQ#2|0LSs`|qRgyC-~vQ~Pb}r}SCG8@FH-H#JR$!fZWmo7I#(nLD07 z&!*e@HT_p^Iv3N(X>Awt*MTK_d0pTIaLfP~8Yvy~;_k(Cy0@HMI>CbRQY)UrD<@P! zpAEdGKSOxNEXdbqGH?Z$Q#a4X$%Rzt{Jrh6%k%e;N)EsbUayyz*XKdS`2Ivc!4~rJK)m>t?<@Kw z_qS!a7=%xJ|3kmR0g_u^kYb5qBM`WKW#dt$0q{`r@?v+^$uH|c=>lHI{fa!aq5@#;VA&m7Y!1Q_T!(2b2p7`-|kgY1=C7{~SRpM^Sn zU?9fjzxc55@xI@HfFc_o(&WFWvp(?$@{fuf+Y>{k>m#_lvvV_&sX6`{n(yV1zq1gkdko(VIo&CG(H;31|XeELqlc!C%ce?YQ;m5GHn z!LEXia6b-s1zHApun>c!!@BFQ0Gx!@y){pumV%COCjn$8PZLY9`1+mMQlK-;g8mj> zwh(UaL1uYnL}`NrNlC!9QEz z;SB=jBe$-2JmK(X9CJSxyI7Zj=l}&zZupl=2gid=;;fQ+LV!u2RbQmt0uLX%^L-G$ z4`L=1vL*`FK7r;7JiIdRdwLNCN>`sLKq39bpCM3TCfJDGf(6C;Q-Y50WdX!=Zd+2G zP+E#q4y+8cWlShRZxbv$0~{52_<~U3b~<1!V7|Kw{%f$c7lT(gqUdct%ms2Vu&ab% zjsOdMNOe7W{UczEaeg$}`|S{?-Q2*ETRNp@9EFVY&7DfgH@ygZnY)zBUs12z%|q+J~Y^I*g#cG5ZKm>$8>#)KSn8?sa?J zT7*GNbRZlk^~LRcx#yG%MXegY$c^*x!Z?$dREwSlWBI!IQ}#iAD?E%4K)?YIQ%LVA zQ5*3M4)>A{wA$v9(OF`BBx9V!hUH6$_|YGxP3;Sr0?YV^A!p z81`k+M;TVk`%n-T%s~R{RnQ0~rx(V&%ukj>0?ZPiE4fXGS!e(L(2d>-ftnC(D zYaCA_S7x2OPo#YUw-xRzmIM~X0x{-*h{r5%lW{DH7Xgd|F{~Kh8@3dZdBdP35{!Uo zt6pxu0okzu{L;ln0MHjk+60qbGt!|kWf};MD5zS8@#6Ss=M`ApD`6<)wO6e+CaqMh ziw12~q18h5O}UxLrkK`plP$O>FKqJYH$=ZF3QVNNa=CFhxaHpU^sBD&+d8gMoy`BL85#%*o*=ME3P5J;uFjtE0sX;=oUsLf0cnvGy z1Z+$+8mP%5G&W3oCOkvblu-ELgS3^;wU`zecK@lh9}`h5$f$GoC{Ny%QY$+2Xz3| zvnbFnuc5 z{Lj?TJ%{)UF;4wIQ=`~PNIx|(c&i>|C+@}w4NrA$)T1S-!E5zsYbv+CYE{&^QjbOy z4PL58v-onM`lYpQ_2^vbN*C(Uq{lj93Ky4k&efw0Wykm-x~t-xsYm^)1W(nYiB+y( zlt$KaPSm4iwSvd$(e_$7h}rhGbEFW&>t4h7%zfY4SC9I95WTS; zP5A)whkhTr>+8|H51qyJX!VCZ(c_~Zy9<&0lgNA&_Q@F&SJkhAbL&ytUk7KSIlp!% z)uZdb?kY?`kACNlt4BM&bb8mL8NYYX=5>FFw5~_vzj81dSHB82sYeI@7_489PJZp& z`j%S#DRT8&8t|u@ShRl%Uig->zlq-TE$#gVAol!xg6<1dCaP?`N$_Qj-aOr$2U z$xzpgt#AO^^Rc*40P$fVx;;?f5~)wZ5I%%_jh3V@pdOV9IGR>$8KxYMCg%YWBydEl zNm6ly_eoYW8BZs4zP~B{jC^04dDHPDNVT!skKpt-eLmg;(`Fm z=A;-nCsU5dVQ9R&t!@I)la{j7WuT65&BBC7)P{(_XL%V)v7&ZBWIOT^&v>3KB3m!w zZ3x3E24_4+H>If2&(U_--}gB>Aw!T2^Mqj2=jghs;A<;QL3{^|Qx}``;JIgMy5Syp zmX;X<5OdTFZh98R`W8}7vVyaop{DkeBc8!t=j!*HonYr@Xr%jOgJ)=``wEB}e+UWt z2i%M0X-6=GYA=U^N6J%&NMw6?x)2GW+BQ)-()5bzEv$Nmro|>?m#4FF7Q&6^X8eOb4hH-j{@bstXe2EZx(yS!Nl2av1G<}M8m$ndbwsZ(xYx3AJ z6nXk_cTrgy@`N?FEX{brLYg6Eif$@PN6YYVk0*KihCdlV`xZQDp?#~L1f$TTEFau% zWqAvRmJOjzOUr&IZ+(t+eikHcyXRg)aP4z<4ge2h>g`A$9j{|H6tP!uqw5>OPO-U; z8Re?k-)R;=*LG<7F^x`Y_Dzko(v5C9>#xVI(bJcr zj=4KcumJ9ADCLWB6M%UlMwXhiUc`PpEr#Zr)JUob9c8H`(m@La=WJs$>avNKXnyyg z+-Cv#4Si?e6(6+0EPy0wC|c8P8Y8+Ogt|!yEo?d=MUS^Z5+s4CkVCL?ohC2BCin8& z9-J+=JpScCZ{zU203{bp$38J|K&31xVS!2$VYW+~`d!I-C0TY*#R*F6gfH6Q+%}`U{z`a{4I}3ZXyFJg9#|TSHEvQd$Y*tT zXo_!yfT;bpaoT1l?b1-maf~qz8{*tqDtsP>GnmJ~kb<>iL!zmrD0Yknyi^#bFH6O* zz@tdZ7{V8oK>cXIP>R>lMm1?#H07wF5z$cY&ICHYmarL+XIf-y6t&jNVcPYC{U9pz zxF%3vGO#2j8sGf5GQYi>EDCWDzub9Q}Aat#bUc;^~Gf{fh{kqK;ILjLezuJ$knGx6M&9N!;}k$h(pXq&{znvrU1_jqs(RY6;8VFXWV zN{e`q#pYDhqMKdO4J>-R!`9JQS{&{NlJh`}J~Nh1#(;^s=>?m{Vzzt4CZoO` zvGV>{HYi>jAI}!WTYVGR!FVexf%Qp`nS9EVdD^t>jNvz-9yz?upBG^ux!-8{JrtV^RA5_}J&WM>WTYa%@Wfu^S2W8`| z%&y7SB!#tBjP42>pcn{`DzJ00-~D;=ouac;3}t6*$=l}uH$DLr|1A#1{~|vJIDTHP zmSE;$9b_EnpOIqZfDV{eZ2fVPiL-r%vhl_tx@ z2;;F0KmgPrCF7E?^J45}jhVI+y*+W*PxOyOgFN0HX*+woF1qE z@dX!QeA-T@aY8abKwK1bPS5~8bd6uW%f%iHANNb#oyb1TI;*j3n$<#Q&GdXW8Drd^ zf$PnKFLXzRAoo~}@jNLfa}2fk8a0uM8Snf^2Wl>K$gM zf}F%{6XxL|VQX@j%?=x@!)$3jY7<`z&}&ZBKBnT}pT5?bF!tB{HO*;{TzJ}WH`s#7 zapwY*B}3p#m98BK)J=jj@VYp5|)P{)b zD!gDr!KJSMSM)^&mu&zvnRPFytHAj{j=6MS{3P$&1MG%ii*#RXrAM>}x`WaGAiE;i zQ52JZN2OjP`fsNbW339bn$Hi%rw4iQK;JL;UQGUm-td7FYRr6aCeof2EpQipkIl$~ z?1g^F8v|@$@@|`U$_xjAM-LE6{sSU+MeO@O2vgh)TY~$BNt6LN<=SFdk+mGA`Rc zEf@_%cC~;&Iyc<}e4D_+;9!@qY=qm1#sHD^C?G6&^zweBzC6;H@IK}WU@IOL;kXj; z-*imWu8Hj2U2W%Ygcs4Ti!2Ppx0W6*?^^MR-4a}6Vr}e`v=b7$C>hOU26&>|hsz_4 z`6IQH%f#~@#9)gukA>UGcw-ul3-+euBBrCP^_JNXS-T$was+}qT&ye#9Bx}dUnBrN z{`c4pm}4$e&Ye4ViAo0q-)I$j;o%;D^p#=}b5i2eLo?M~fp}FLsqcxOVvn!JWzd z2jS)f%~cj0ALshQ+YF#b{1#T_;}v&_LG9FEEHdbT7Inq|?UcUE05x76;pxV^UcN_b z7jOSy)Hzu2HwGG{@EPO;Vz41l*G2mv2Q`P)5}&(A?dOl54*nHEsBM&FIH21mK_=m~ z2firYBCzn8q3tRj&Ngw}0|1SKQnjY4cprNoG5e%HLh>iqIL&1jQHa>BWFnm90YtA< zwO$(Apq7EIzh)uWsQ^2S`T7Vhr}koC_6iZ;b&U|y&%vBuibi;w6lrJD8L2ErO>Qe7 zW|}&PH8bgiRvbU3>*?^O*VQPt#(-UqiTL&4j|_IvFdCRF$EcLQUpX%PL5%M~Q9HwZ zIN;M*sT<3Y>AalUM`2wGa1?wE@wJ_6Y!e1X!z|Vm?OPyf>qNG^;Q7JV(Hg9oH7shR z08nl`vFGl+TzSbgafb#t{qSIj2b7&i2atQjfUldTQD-hN7^Z0xG`3sQPHXIN!C~R+ z;30dD-!t=3Aas&Xs*tsP2^r9GDYy`mBXI-zQA%;dZ&cobOhVN$Pne4O8e5_o>r}Q~ zO+ffc{#NIHvHo@EAYVU|(56Yu91mw75a%t_@z@rI__3MHWe1}bj;B7$b33q4O+ca? zl}lIK>K0P=*R_#4o1|;Ab#_#jFX`-5KIh`?7Z>hpA;)IiC&*65_vF9j{Ck9RhGPnE z72b%RRSBypc&;J@W=945*r1f1UXd27a)$~uMk|K!Mh<~6Ko6g(Kx_4*BGN3hV!KwP z94l%?1sY&)V2HZtRKoL@n|Qn;b@JOCD$xLcDmXiT0Ktv^n4J~rlpo@*#sPa{Md}#n zi%}ULEP; z^4JQrpvW^bD^Rm^4Jq5D*TMctZ_e9xvRGvlo#|U%iDqR&`TI!bV~FimoC`v`mgK3= zm(0BMB5f%p?|PATmcrB6($a}YeXultc0Tx+izL?`b34KJl5T$)ja1RbHv^@D>F{Y*t@IaF7P25B$Tvt3;oIEOa_6 zG>17I6##d;jTNZgfVW#9WFlg==o_iPXT+Cyu#|Xkv4kFuldB_mMSkygISF`d!Se@8 zJ*mLA^f4Si7v-2%Dz#PmA|C&^en7GZP7%M6!#ZGqkFn7V;X|TwL1ZTio;4n><2TTS zn8Uhhz#;b?Q9;t^y)|kjMM0|xSi=Y}mZF;R{*K0h)m*g?so+@M{TeM$T{sQhpt=Jz zI-pj>fvOqfHMU;Uc53W~X0+8=(}LTIkAr5r&r>2~`G1FL{v*g-AW*rF%*EXXFbWMeGW3?EO<`A zw?tqaIEZcD!Gk?wJi*O_DvtIx^pAqa3%N(w3E;v^;j=xJX-gQJlh5#Rxkxw=p2H}E zTMN%;+FAzItN?HF2>HLS{D*zV-Y60U!_BT9?L1WAa@8D`0iQyUrQ>DJpcNvHP9WX7 zT{xwTr;7%L+ll)*02Rs8x&StU&Vrzi5b=8D-Pe!>Q4dOiAY_?l&n^E>3NUyk>c z4dOIg3U33wBSk^f+ev;Ihqvr&szWu(hv%4EvffXlX-axa4dAQAK!DCru?o(qR%4B| z(TpA%PEM}jSm54xfpCMSnjH)(wGHJrlf&%{ydg&5?BzSTBBY3luOS|3yc2tx>f2?| zI#nNH0G>V@{pD@rbodNpogqcx(Qd6Y4t=Yyx_DmfsJdAoh}B=@rAwwNfG9~Duh19i z^%b~%joK{ZC0_3-!+q8i6qnPhF`zZR4Xnhwmtc*J!pU=sor|KQYOz}p8l~%(B9x`O zh-qOMh#6_P8}O=TbYS=~-S^Cj2<@{z91+1QN8+t83^tRX+;h_jBj#GrKzK)phfjrV zr0*E9W=6Aq5q@X)jRwd7n-qO#74fzJGdZQ!WSM^34ZUk3E8}FqUg{$uu9sazPm|-f z%WQqVw1Ve(ftB-Q5z!458qKVoG6*tzH~J@8i0LI;2V{(^iI^=irl!4O4CF2`@2VI0 z+X3yYNEykOM5+qe?(Z!;DYOtQXe8iC0gj^c4f@Go%z zJbeh^_Od#kB&cv{bJz+O187fhfu_m@A(KtzGK{UwwMg2^Hju509gF+i23j30 zvh{W@t+PXjK5s{_bE%&bwb`ZVj{BVpkOT|yTb+2sTy!9FERJF^rvAa|ek#vrEtgRBhli zPtd|=p(CiJ0;lnY29vqLy1C2-sIUnI!o5}i>Cao0aeUYu$?>XfO?6lg$C%}?L5_*= zSSNJ5fqV^n^nYs%MQbSb${={2*d#+C=qy^@Mvg_yFd5w2Ryll0W~U0a5q=7hjw=s! zWX(;wBz0j|4QTk8@MY3nbHPZ@(du*;NHk6_3NBN(5ZtFjJz=L2I&ZKW zMr>b`b-hRL4?24vyYsnIg&1)98^!SqKbim*ontJHP-vxG3K88D7n--%lu%cdwasU1 z^424Gptpk1+-t`yAbkvAc6*tYi56nAC98`}wH zx!@r8i(FRVjo1J6IsFK%5NEH3Fb6u8Z3J_lffuhpOB4R2;MJ45s5*|bZE7sO_SMSm zF=)OXi!^f$7ircS`VIpK;o50~ois{Ac4=x;Og6}j&R;m5pUQvf{PXh!7sR{4^)lpn z)>s+dQSI?qp`wMD6OuJW#`BDcm=S#bcFWpnnH|1s{=By`*ayNYJa`#`7ydW}e30Nd z6|#m*SO%;US7UkysQOOsKhs6b9MytG$O;u3sI6wq*I0KA^5NV2nfot+(@6aJTlt~T zb_45wi!zT5@Pn7r`}t|AhTEHt>dGl-J?dy74R#b979$<3+x?C^+z&u^-*uXY3>R{ll36-#Q=oCfFQRnA)h;@yH2@j`7@b;m%T0dITQ_4;U_jnL)!TS@Qg-# z-rV{_MJF2i&GwjR8mmPi+{TDS%H>83!bc3fe-te;d781lue(IkWy@|BP1%ltaF##z zNE99P8w;Z7YA_bML!Ck#!DV4YpAkiCBma-R_W+aPIP=Ee>gn$3FxAsD(=)R>n-dEQ zA})DBC`C1;UD&anSq%`WUB z3t6&#|L6RDAJ4PQ+i!)guBxuCdc*J4XN7^6*MBEG^}ND;4E=t zi*d=F19FN6@`z@f*Vx(eu$p+z|7O2`I$=)$&KE7O1*p*d;}ZcuLD_2qbi>>v%@5E% zOP>{>V;0H}@ETyu_v%vv*jlO+15^|ZvUSM&Bk(8s(on-jA2z$Q{2IzE@_Vsg_vfI- zP5}osc6PE?Ic$kj-qWI=-zZ{gKLc@Lg~;@dG?L+BgPb;4?7z(iIt&fW)&|Uc>We*& zz0#n0dKigY0XGb&QC&y&i@J78XHyLCQiClvVE_AQfB#SMoi5$8&d1}=XVzsKmVns^ z|1m*sxWPv3Ljk|LQ4O89ahS1|V5!g}<87Ly_r_dbVMYYs3Zv9E3pSi>z4{2iFMIU? zHV|w@p@m+(qm8IzUeMRPVnf@-*04jJWNY(mw%M)$da^HmtBr zO>4&f2*)wFsxWi1PdFrw03~iC#vQ~Mr-F4)jPVkU zgIq7hc(fjYm)DYif-%l59b<^daOPhx#yA#UfonBuib1V)GavCzbrqQwh%r8-bCBo6 z7@snndj{)ZMkbhSyCgwMKhN`NGQhms21B+ zhYjPSSE)2MWhwBNINKd|!M_<%Nmq%p-Sp_$Zh&J(cf`^&!fzq%?JHqwzfMlTj6Es7U5G&qa=iFa<-o zVc&nyT^FoA8oss*G!AmL*iVemBZWF!@TL7kL%qo z4#LuCd{!d$@>Cj>1eY`6K2=~@OW|hgePu1e*mzGuh_TVJkUBjW0e^iEZ^+HyvmiHz zbU5`EhxB3?Q-oAx*&MMZB+$`G|G1z{Vy0@4c z)8S5N&Phk;m(PY{F1fU`X$Vj()W;o_`uEac2$HiT4ceES2dRj`_1V-^I?lD5DRho& zS5lxT(k`UXU2dF7p$?XIJcX86wdSNjarmn<>D0}M+m1XT4o>Uvc?{M0xCrhzB_V=4 z&P_B|r_ky|eQ649NyM9Q5|IN_=z5|)6_q8Kxhb$P(z~b7h$OrTvy=4pDYQIEzmQB@ zlk_vmbTFw3?$J3}Kaxy?lJ&jGG{IG2(yxsIi?bLm;bGg$wON3&m?G5(j#e_;b7 zH1I=Mi8NG(IX4=Ke?kY^;Irf%2AyGMG0r~1$WR#mZ4^Q)b2cJ}0^7!cab zGx%zQtu$aqRVKJ9eMTV}?+LxyEg101CgMt6Q_Mq%H>LW)!RiMiCbtcCYt0y=v96jq zTx0#U@|i5!0$nOhkD%6+>;)P?c2>C-35Ouj?tFJmuzF}!z*(x9MH*XIz7s}SfpaTf zl({T80MPg>2oLn$5)}WUUSUsJYG2&i)mNdJaw7zhmn(rBpy(46HnRL963t(6uXH-9 z13f8ppv?rtJ_k8je1Fa==6!`-FE1)EJ8GBV(3qWNEHidjp!-TFc1+?RzmQODn(HZ~ z^^o-uG8<4)9gKD&7Dt(b7Ke}ha8^}_Ed;rXHG#Ag@`^9Pu%L|i<`v;Fiy)giZ^5EU zK(Opo%pDd+z`x9*&1$pp7M;_q+njD|!r`~Irw&qEb89PPU)!+(~h;r5te!9x&;mtLhRmWWAM7>seBn|)kbPBw|(6W@vwcsO*7q4 zGIi3lff~b2D$G6j$ZclUOj$?~ZVF#M=)UGdlpxatmwDXo59}!Bzo$Sw@Djwn%-P85AT7J(FVbql{nH{8IbA z@|m7wU-dUUE9|3U_)C<5m+M=`m4D2}syuFzXv35Io8W8xzTN@xY*g5T{w`J+9$2Fp z8&Yoe6U8riqKy{pvwJcfhN^>^K8HcI3lykA23UMnF~U05Fe?fTuI^#5kiL%vO+#?z%5oNw`X?rcoS6`ZM(PdTC($$DtY$5Om z-)}(*at&?T@3H1u0A0^oXi-1@Hgq;zB=)p2z*uSV?G`JtD%g`m?YnltK1^)-iX$LAqV=Q0QkEe7AX6T9I6|KqPH+aJ zDtSm2&l8P#yXQaYI22l>&EV1W^^P4Wge)*xTqH(M2k3 z)y6UZb`5BNY5}0zSUhZ$JBuh_qoowES4vp&`nVE6&X?nQ0gg&ZEOAqzB3!V#xI>rS zhz|{g*lxE2Be%0|fh>pm!@!BbUY)7Yqf^H+%D{EtIf+h36`r#^1Pw zKIL*Yy8*oc3$d@fx9I;;bB{i*c{09ESV!^if5o0Ex^F5qe)I#eY^2NFr@{eUKrwW6 z8^heJUj^$W(dNHl{}Q!b#&^G?Y!8xYfPlTk_}gV}iS{=Sbwl^Mj@8%<&^XCl z=)v;j9EIA(EkNVWYa19Y<{2Fr(ifXpeJ+~%2oK#hEoANPv5`8_qtEuRnI0sb@E9dR zeS>>FTm;3QY!18!d)@NV1z?C3O+*jp2cGc|3o#uk<<&P%aY z#LKuIP!+pi+A3RX4LG9RMI}Q39AMBmSg}H9sb{V>prtmD=d_MDc7$ProMD*AzSnTB z8SH!oG{n-lwh!xt!5r#^;p|AcHJ)>%W_C9yUwa*~zqL#ltd7+UWSOSpAaGWQt#T=^3YEl?bMER!wIKFzM?enOzm?7d7>~BMZ8Nf+Ln_ zpE#!=gev|t*a@x@2afhiA65h!vD;O4s>04uuhrgz0Kc8+yA_xG2t z4R9u`6)tnga_V9XI02SYv=vt+KkhpkSg5o+C%B-){FMkDhK>rgVV+2CSJ zdHe#qlSCbT0mQVKbJo`+)NOyyu5>DzI8Y)&=3rnIF=Un72W1k7Q2y zkOs!vr{9N+?F}5$;`Ng)s9gfc-3jX27IYxtZA_TNiK66|)Nq%UbTzg5toLbD+6uJu zczSY=_o+iha%Ys!Fx$OP`IVa?=h@0Qh4-)Go7;lMX2q;%LAli;<66+tYO%XNpxxDe z0o&fELM89f&Zl065n=V}AU9O+h6;Dpc=gVEbiXD?nX9#|)9+Egy1rxY(Ve>H`uC_^ zLw&(})V(2&crzRNCcH;Qjf|1+(fG!8F8a7;@q!O&<#QIgY}<3#U7mifBiq@WEe9P(`qinJME$Bku>-lr`;hMbQU|I|AFK9&5` z>hnJJcnh{Q2jAkkEh+bBd_YSY^D_&5d*o*mL_>zX?ZW`feOvU-=C^h9Xz|-I=)tz{ zgipOoCUlaGH!Q>!K)`i!<#HTQi+y{p&Sj>gQc;oH>~kp*iet;A1$t*p7I?o{pQ zRhR6n*|?gWEo2ti88eV!WZlE)p$GN&?9b?I1M4o5r!}-XkPFo==-w(6ndF1)tHa=hbO{rb{pLUZ2sjSIkwQzY`e$XKMG_XcQjz zy1(0>Y3J*)=RTziuZuH8$@fwod`dUI9}$nz{)g7_KU1F{=D@7^har$Be)u!ILvK_P z<@-PelNHP<(`qG2tzxkNW! z`M|fb74`lwc5y3O`(bA`;8QyP(R-&`(WqbWd97&UFWRv?t?2kK-<#Nqy8g;1isb#u z5+l{;H`anM;CKe5nRhd!~; zS(iTvqf>_bw@-A+jQ{>A9)H{)9X#f;KZfy`$NtDgrI-K6MSAN$aXd}0KXE+3us`Ly zf#cJbHJsXxv68k-2stNoV3l?O6=-t>s1fX=ePx&n^;f%~7!yz*W#1}9iA3*CfPu{< z9mbdzypr-25tn?5&cAH1BlacVHh(I%?O1e}@wtqnW&A=J`w{_NzC_MAF0-RDG(Hcv z-uR|{m%WrZlL0yR7Bkl%D!Qw{g^L|-4jjXI8sDh{04@bUi9L0ZJVLjz%a{SrA~UMXNS{s7X+puB0muCp``e>gZHsK{! z&svv3&)ds05UaDTJR<`h8-acqbWJt8X3!-q0i46S;4CtnbLmhL1;Cl*vGbrYT~nogs=KJZt11JIbAv?CYNsl=Xy8%^}vqtofUBT50A_t@1kFA8{lGwoMG`bcMSqH}1+YzWUKCmZ^MkT(8oEMWE@aH7g1znOXO7%?P;4De8 z(9jX7B6WVMU7SJdQynz-WU7NaZPH!?zgPN8C)3&Pbm4ekJ_cgHTq*~!vF=Znp#Q-9 z@kSwyx=A>kKagsQeky?(?}tPm*5878!vq}MURQDf;KmedrVdbr(U?}ZG(S?i>o)i! zbitpZKZmkW--gl+2!^>3$rMfTS5Qd4qU!if521wb@Wk2YS|_}s=wjdj#aIOXM*w?I6TkiUy%Z#3lZ`5Ykg zgV<2~s3!2udulJ<^U!I{T<1YYm}@-nP%&2te*trahc=ih3KW@m7jBpwWIInQ)aY^g zb2frU3OQR);RI58ulLG?GUgxyAaVK-19E8nzD^e;{jLsVI{k=Fqg+CGvR;lL&q`$& zTZogHdjuP1P@$HA5~nrZ!2r5t21*Rq`9+;B>q&hK*4x0&uWUvtj4p@05;JsqWyX)7&)9r44n{ z1l13Ep^DO1)ijVZ-TDeQgX!?YhKRHDKW?o4gZ=BHv4U7rjMWtUsAeCFX6sKETG)u1 z*EnE}%`0L!%v&5`cg-7|&UjQ5xah%H_2V4mDE>4w|J+8I>6UTUVk<4@lEwB|Cg@|< zqX&9a5r3hbZi8N^8wYftS(v+Z zwnZ;*;Xiz=#adG8dj7^25~e0bvs6})i}xf~@?wr2mSPckVTB9Oe&UdcwSAf@VlhnB z{75a(#7n5zAaivc(7q#ek>$9qU(?z7iiQFIXUvZmShIiFSboUkWLJB?Q-atVy?x7+dtcZK=|pI4(-vct`6PS z4bW?hz+i{^m>jA3rf+|Mx_S8004!!i>PinsMMa+ZxI-szU`2p-ctz?NZ|uMTP}AS< z6QIeyF1Y0!zlFQ3^*gxZ5x;{vZ~GnO&kKD2w8Jh1AkXOGq=KC8RKXX_;UG^s@efxW z(f&aU&@TwMiQ^0l-WC%&`GifYmC#gpJE%sH4G0)(1w0wt22zXN0u2=I-2F*d!mlF;FQMUFx%cHN!;PTOH~!=o3W8OPWD5L1rZa7X zj5k0TEW=n|a85D}hlyp9a!|xu5;=ED8X(|~ML8EFZM+M@e5J3NXab=e7T$*IHmz5q;f+)v2Z~mg&PG(tg>s z*QHLD5&Q<$C|zX_$U(9N_B1(hr_449Wy*e8KO?ix2(Me&Kh$fNVen>dk^ry^3Ca_B zg*a;!y6eIk;ks~8E7cuw8x=Potox7^z?m72ZW$o&3Kfh< z55*_sNwk64b42tmUpooGmLLo)dxkPSVrK<<#EWHZLVV#4tgE!h1u#bJm{3QhTIwE| z>Z21zv(O3|P>uQo8Aru6DA8ZGkv2~LU0IzeFL*m+nlbCN2muvW8=z=PH?|?1Oh-aWP6heh(ZwvVQJJaYJ&=~ zSkzCk?BLDE1*naS=fV3>u38*GIG&@fB>@~F^)3PEK2#(eH%xG5ddv|4y6X{~Hhdgv zAMdMw-A@O7KM|iZ6=j$B!${oWhkW>ypQFrGKRWSHAbdZ-t_Lcvslf3nmS`U;*(Zkw zHUwa&)xIHioK}~HfK?YlvOGQ1rU7*`RB&<)+~SOpv9LaDf&!E3LEsgfRu8e%L!Iiu z3ooDHVsapKu^t@{*hlIi!p=N)7ZD`FJhvW=3irir=ENDj>d~DzQF>-l+OE3PHPu*C z7eQ`}4)v&Qnh!VImB#nhr( zX=WAC=z=OAVG+rywJ)2-R`a9cdDZyFx>Q^(j4E$d(@{<9r^Eo9tVzu=Cb#UB-=ot&J zhA?umJ#mJ2iI-Y7yK8v2pxS`0--f}!J-6U=iXxVw&hI8CAOOK)cz)qEa|!x^D}53i znPfrVknIVuG*En?r>QpdnWt1iw{zQLP|9tg)E2h^&R)0Z7tt1>yRChQErTnMB!D~G zE0sqYbi^Ho2C|K2Tn2KVu7NXKw~=SHZXwTJ-2vUp&;}c9pwal@*Xe(zeNmg2n$4D^ z(Qn70&HbfhkW=Nr#5CHkz6E-$9{N0$1{+_nX{mI`J-S4FwI9Nn`p?aWFMNaF4>3s9ZGg^znjT6?$IU1LTiSlSSUI@ z#fPH%Q~3E5b~^K{DfQ^Jp0jIs( z8ExvW{v7n@sy)F?x7C-#7uMM1W*f@i0*u3JWrv4^n>Xj6D5hm9CDj$ozlsI z$-o@e7S>EA4&=u@Hj?jpJ_Y|4ZxJoiyzxNS1Pd~y@L`S*Z5Z@^HDL^=_3qd$@HE!K zYq&VTTt{>}!@P>4y~z>jZn~&%qQ{5q%RL+-h9Zw6s_{4|+Lk*I5Dnl$sxIC!ANDMG zk7OOft5Nb=!4-2_$P9KPVYhsUb@yQLRv(zKg^Wc|u0?L4tzV;=7Xf^tZ9zYbG&7KA zy=muqaOAMS&-d^G51U_Zl_2WG{@^>IO$xQ>hKd140-x8rvW^H^U6iWl6=24jYZSIs z37!(@&b+_#GlP@(+sG;7^QTKestzOhLGf z2uJOAA}QEI#l@iV1#vnUYvO!p-hntBxi7>ei<0qvq+WylAv&o8k`)#Oar;74z?;LU!m_4@ zV3>DPniZn+K0Yo)w|zJ&Q+~j@8KTbv*7XqG3|s=|bTEK=?gdTM(>>&X&I<`+=tW_^ zKFo^4k^5nGy+Y)=viVdRKeP&Viv^EjIYe=Br=#q2W?uJVnK$=(A#S(Vd9m$$W`P$< zb#J~G;kDG;nB%UI*a_V>)T0*l@$kbIjr0hVss&aCa6wL3{Hlo2I2E;(pBsSjT3JL3 z{dpI56h0YD2kh|_sUhIQpsp`ap{`$n8ulvsFcog6Hu79oGQb}qP+u>oT1Pj#u7)4h zSTb}9V-pxqprKTCO=Dlg0FKLC7DEMY|Ku2miOet1+uD2A!cYW^M5e7C>nNlVRsft? z7C#(@zeX7J9PD4PNwTd?F?3#-g21CG1h9?5K%=o?%5|PYo|}$mRT#!`qHBkTI5_h| z0o-v@NZj#2$OrmL=qd2$hI#K;wjwMrNAJc6x^rxW{eZxZy^5r(fc2W>0RU7!D-sAY zKkwjy6TJz#5Sj!Jozew;Sr<#dd@~C)Oo_n1YT7eAkUK&ix)j)09=6T{Q;J7@EcTsZ zqReEKN6NI1jl$F1aiz_cX}AnAMszJ%1l}U)@i-nsJ2M9D7R(0lXP*oLj?r8f#28s~ zgNUB-%(x)@-@|=^*kt(I261{*uQ{|#*AF1di@`x3HbiW-t(Mvo;uJ6MfSc$W zaXUzN?C_lcZT1(iAv6O2&E!+VwD?CRgf4 z9}m9u1~@wn0X})l(5Av*#uTY*O+oL36&41@v{3f8>42W^F;;rma!Q+dom9^w1==zUl)#H{g6?l#lyQDn{Fv^Nv7E%ZtpagauK9! z8;T%3=ooEes#yyHv_JEcF6zcg;k8BDhd2=mDAz!Nmv%{F|8U0@TI!|CvYqFpHZXX_ zj!zxQ!0H;c2;QK-JHkt|OdmKaO|hXq?swQ*ya>Tu= zmz_gH_cc7=r#Rxc0(UhWA4Bj?E|UABAtzN1&J|UdV@Ausg$E??wY%wn2edB2Y1w5S z0eY*eL@Lr?n1VC5sQW9%>_gU~OzD(>$gnqEG4nA@G7gmcWXyi-Q4eE2tkm_P9>5Ii z7{mR-8+(^gf2@ZNnGVWaGeyP{6JB2vJR0oq7J0N)9(LFh+ggN_Eq^z~9$47l-IfFJ zDd?^&N4IQN16M^*Rw1M;eHK9Uh)0wnU0?_0(u-ZNYlSUvwEf{S5iQRbXYqH3K`-SJ z9@S5HHi5}qD*bHMUIwf#B3)A_SsN&`UXS}5Iw0{gUh3u&OY{^3 zSoP9TEP;!>2wjN)%5;PO3+RKE*sh~rBZP7K)WVUm8=HxnEOFHV{e|n{x%?$siHs{5 z?~6dZ%zwiJutDpT2XYU4w+E4~Ut8&+O)h&bXu!;gVOWQLD$xAk-_!iy_tYW%!M(n0 z7b|S3qs|glG4pd7qB^mm<)+=DZQ-B&=C%pD;YJ5cgzf94<6^%s&lG7n@BSvwhj-rG zXVY-WbH@fm*;*B>K87%sZD;kAaM9PckuuJ<4*?g(w!ztBzY{HQ(Q^nF>HrMyC)-5x zM4dih;-T$|4MWwf$|KxjVOKW~T{BPOTNT6?FsCB~W)v^*h+y9S^_c6tTyi3);lD|CX(+$N&utas<)Ui&=_khq+iXZ*B{JG=cf1elC|8f6E; zpJ%TZgX9bD^iw~7vN*}xV6XCH^~}c>KEURbAKXiTnf$>c|C(Y>`La+Po>9zB*j}o9 z8Z<$wh3P)cZJzeP?pv6J&NU)P-D+CHgrTcYF=E}i1PB`s4)ue$1G0cSyEr?<1^Y|| zB~r;yU|!)Pz8=-AM>M91sZbhPBT{IrY93F)_B?S+D$Y-_IAToH=dqQku==<1QfLyl z3R7r4pM-KpynZBK@j?cr( z{0lpJi=GiS+gBL9DL$HCQReGn8WD)X$J`u~)B( zI={Y-C&yL#I@$XZi`;a9?2RSGOTSd0zW1y@u7O7t=;EHn2h_u_o2fT2cKpqMvCU8NL6k zn2KWF@FsX;DqkZ;=GWST&9SeI#oDXoEue#Zy zg|62wTJS{l;2^U|X#&e$38mrt$JU*O8{wUyqyG zgf@7jaZRu=28K5Q_+Rj54lVTs`Zu9VzCcM1A{Y8^HAVbJ>wZ(Z63~_+zr#Uq3;hE^Mt?b7J3 z2WIXsC9g!jT`&2^;-|~Y{2uZRc$uHZ&zP5?*P$)1sUwlJ^EGi4S@r$;LvV5T`}kVX z;QvfLI~Mo-Pa!ow^0BoM7nlDlv;aRdKgr0)&+bn;VBCuT+dmN(Yg_R={OoLX1f4kN zGk-2FU;)Xe;#N!WEAG4=zv9-rTQlgN=wutl599Jm8$=Hlrgzr8QH*-GXM7L1!`owf zK?MK-UkC1h4$L=DJXc5NUxCz(9hq+>_y;<&DY#+hE@gMZujrEX_!WI}rV9&-?&#Z< z`EKKPb2pZ{8o%Sav((x69npjNN8xuy57rDKlpc&9L#2y)vRa$*+qW0f#TX4k%v;=K zc`nmM8#d%JEG;wpl(y_Ve*1&lwqI$B&fvE%u5b5aU!c&Lfvnav)HQeztYoO&VCIN% z9)@2r#4`p9r^PL}60JNo7&|>2^oB4;^hEAZCgjrhhcSK=mtBX8&@#t{m$vaTenlJG zjbM)Gpn)UU@1bTH$sExwBS$jviml57TrMtWj$$j>f$@x88!dEBL&vcC;%fUCAjwk6 z7}i=6mnGvECSSktEF!L^jYlY4T05R`akX=N#YF>aEfO-t!Hv z-{F`o+w&j|5elb5;Dmc2!2!8awP$&8asj!~#{#mYb|S+v)|DNTRwqRQIM{#sLA$4Ieu(~U6QMy|&_Yn4113co; zHHK#*(*_=g7m#x#UJ*7|qD|c;gg5w&wW1DO{9VxTT$Dn+vgw{HbgvF@_CqJ?AaZAD zQyo~AeE^A$JN-s&_@pO64K!a5PK5%<@gCcP*MyU3{B5)~t!t zwKbJ3HCgLg#{GJ1L@lML78_G*1m@H7YzLfO*+SQQw4R`^*DK$;pifr0*b>*LR?nt5 zrb=s?pkIAGn^0euuVWL$k@Ahmp{sJO0ZpJ(;e#5(TuhAV5jQ{C7#?KnK+n}f1Mo4@ z@op9vz7b97q7geIhjKl>gN>=s6PVQ)0}>kDl)76yuPHEA`Q#>4;C%s{_QFPGvh6{k zOSXZ~?#p~C=v6-WI@2wG94c5Fux>S?4vulG5%qGmgMT#WD{4%=L%$rKL$kt0+s3pc zd>YMnU=36rY27Br+CRr!`C)V1OTN*$wGHwh8{sdgi2t zw5?ufT0<(TFY@fK&wDhY;SG3?r)f$9-uY=-+<-r5N+%ldMNR2y13sZCwQa~zwpYW3 zSiBl4_Zza!4cnplMUD93X6$4m?Mfrop|RGdFI|a+uNO1PaO~9F{28vVQ6}AzaUfN5W zQ)ss)M1Q@_$iftQVA}B6>1(TZQ>nXei8K)A*a4#(bUy*(XfmyL)H6wRAlMB2xnXr* z619ubLHCcEy+s~oM}lMw_2Q(0td#V*6e;7JD(EMC6z5m ztq%HBDx8QOq&5M$I1LUp4?6{G)pKR0uURXFX#+km{Ui%<0#8d>Biv9VVwKtL;%!7= zF@8^_wrT)$e-(-;C=ikFrrI*Pb_|m64H(RPW3%AL7C2pnCd+~zsstxh0a}T#pbB7# z0yC>Xl_5mlT?|)oW#IsSy$VE5BDIGnqeo>3^aZ_x2Rc{AyWrcHN&D=;l1$3;hx$~8 z%~`@p;6M3sx~6=GgR{hOaF-%y5IARo*40etHGD;xG$F=XpGmi4d;>G-NW|)&33#l~ zrAl-*$+}pHmLxm4%dTY6!gI+!U`O3cK7&@BNb@hNL}SxmnpBC-rTg*eP0vEcDH#qb zUY+5fIfpVFRD3hTL6yBLIjC$(CB8n3ovW;jslqN*#<_zgWJSPPo>jh(0Gm@{cd)k+ zb4lvPTGxi(YV47!02dU3?d^(hKsAW(@v+;j^2=4}codxFzT4NK8myg#!g+*gADqoXQk=_Er(}-72wYbH6NXR%T_z z-l|DOSseE|oW)V+;HoBy7F1P5(W)HTcUHZCHGFw3<4!HMu@;nBWfKnbEv9-8ska7@ z6CJAU)5tCt#hkLVDsL)4vidkM1;PVKnFt$eX$8Z@ zB-I=buSs`r2^V8^>}SM${CfF;mS%iHPyP0<<})iTk|4P}B0&xC*XoREex1QT9>Gxt zx}k%~6Bqs6rO);F{hs`c;o84kuLAr;U#rq7`7p!9YJt2Z?rm0^?}7+B8hQe2*^^`f z-|(D|Ghy&oIu6bs>us>9W?DXDxh(17KneRs?^DWeAgAFAg~cYi_0gK~P0sK*Lzl-m z{yWa|;=B&To@flF!_bj3o-eVsQuXrYpf7~H6jF|#h?fSIgnNV~VR;VpUAasH)=qUq z^q&_MoT7e!!!W%C;|kHgnxj2S@%Ze3_9195;ZHj&0TL~$F##Wb_`qw!H*mddwD&+& zE;P35+{R!JwuBqNALcQpdDwVQ#rM8KnX95qf4s|Q+(u^(G^oLNN4jxiIA{GIlOO&q zW&Q#W!+%@KV_RhCzGDx`P&GhURXUIQyR3087}Q{S6VIyuR73y1hXYvYwU2h-v35ub z+|Bn&y+D`pAIH}aeX1r9PZ#|%kuj)4x}eLtuwNeZQ+tVT@k1P;f^O?FLGN@~1%7Ow z)r&r;Ry_B85Gv?MU9I>)uT|9{KEM*G=Y4R3Q2YBJP*{V0x@GbQej3JKSmUFO-dNCW z?WU+_wXLI`9k!1AM{ONtzp!KM#G{-OGm;gtupBI8m7h`-8`W`G)qKT5rb+D#(Iui=Nc9t zMVQeaRs5j0s`>^vYPkI;b?hDfh|T~mz3|l0Ckd!#eU;93>iS`wozY{v7_7~g{Hihu z>(OtkwNq&t69JMIGqLeMEG58xVT&AGuK;CONK?d^J@aedFb=!C0CW!rBv(&P<6VI+ zI5WuhOiV2KlX;v*s>U6tee@vY*kkpjc*LU~2c@oigqF3mp2}shH5x>{`v1$5B^h23rzG8`OWxj{_EOXkr{3UbNj2C_@a;gY-}EfizN)Ww>dL ziKAtvuYVkM@aR_~I0P9NBXrF36zb{69pstH9pqWV9aMJPYp;$_mwb`Cv>MdKKzmQML9YeHJxW|n(l0fb-+Au`Z>fvd}aFxe@57liyOB_$T*&@BIUlqyz zHmq-mdIp-|updxC?hK$?9|Rm!I?Pc~XtV>l_hv^hPC4I4$$}t9$t}S!=(9nNGB<-i zkM?a|6eCj%<3g6uB@0K?(5@`JV+j|kP)Fs}Vr+<%RY>jUesy0KU3K#*RT0@Tp`;3g z>#y#~f>ypobKQx2@9GbsWF|Z(2z9e z9)K;=V93`wJ#eNn4Nc#M#PgM6(Xy_YKD0P5(}%Xs%k-grn=*N?s#KiGdsL;fnY>$7 zx|tb)omFKA4al!-AIYL6l@oB+#Z{E8S*);%I3cXeGC*(6f`Mu2K;k`lJ?c|u4UPpY z&}iS)7#Mig$EPGcNg0o&rz~28JcU^^Pqh(xAgqweX=vg~(B#FlPW7a28k$uAyaBnO<_Wb6o*B@1$Ua``Ds*jK$+_Pq`R&S;wCg`3|}X&?&jbm;&tJm?bY!@IK4 zSpz_a5V#I-8vvrqbN2&(j%KXU7@~ze9K_Oo>&uc>v)w@mBmzr=2>dpmO%DQ$Zvh(? z1bF&fcFF;~%3O97W)$XJ2K$ONmV=CkE&Ci&ybg-q@ba@k#9FEj&N`o{=CaSX-vM@m zgSs~O-w^Y{L4ETA4yxN4a8TQsfP>2J1=3&&=A@zID#wSCyBuL-h4D9|}Q74+DtNisxDgipuW}#mb{5fL`PN?%)uj0sydD>X$E_SP|?$r2i&M;G}#59synU> zFs{jgZp{!saV5regWHFo#l5x2#iwbLmbm9>IGtI$o~9$Z1O8&uX!kU&HiiEFIJXZY zyss5p-;~yQ9ne?2$&i{HwGGhc?EgXoeKEM}9p5jJ+i!!szU;Y$e{ySG0+@zt?EGQFsEwT$Q(LRRUMu~ zXRE#fc}2Bh40-le=g=aYhRJnP8eSs?x`Z}0ogO)Kv}Rhj9BN-n2!}`34s^_+{k8RT zjp<%(zP>Sat0P*wsE)I&F^$MJb~L7m*%!oot0z(?)!Qr~;X#A={Kj;vp>IHAn%qe5 z*O=xss*OW@l>DO6G34Ktleqe6_C-z~&~2LX-c8w}roRVg+S9_;>*4kv^WYu!)8+we zE5@_XZ4ZP7E0Fv^@<2j)LVo@lpnnv79H-f81n4=3RsUEIuxG!EaJ9SKL$SFtCeDv?wy)wIxP;aDQDlWdOWB`bPrN{yjE~WAr4}%i`l&6T6IVY4dBwdI zrI+h}LdGS=o2BoX53ajd*rhsHdJCi_C|AmVktTpYL3-*Ohl>MbAj4ccrEV5oQeeA) zP$YrRIb_Un5a!-Dd!yPO+(zn1Zr|fHliL?yE5Lsdt!pUaY_x)O7e;^5tM_5)tZmR?%?g4ImmOcJ$88pT7DFk{vA-59t zP(>J;0sdkcd1i&}VHva{ES&g@V@%NZVq#AMk2h99>fKnSFX%W9fb08lSQ_)<12@tE zw_LkBJmnLTrU4K*=|yl_r`S`l!%VSHWm0}hB5rsvC5U$3OtDe4Q!0w)r>4!wr0uD^ zXC`c(D?<=7E6rY5iB_dm#hosv*~s25-P)8vx#>}9Mq z&SdK{AzximSp$1jneSkFJ;l|40y&usP#VP!VwyCkbK7y&QHT)ymsjb0t z4gp}+N3_a_-P01WD8&?lSur>TobP!bYttT9_&)WwMaaZijy?N*TH&llu}-1T`1k2d zD0rj=0;`7>wgAF_-L(aJgSTx#cM_bLz_&?^%>%McB2E(%ldA1%PNR|yuqP*vWQYlX{T_W@^AcO% zg7(#ZfUJA6<7U1`%j*R%HK%0_gJ+u4rG^fQ zpZi_k3-&|}-{)7~p-w+Y*!m8g`++m|9lG^H2Yqn!jnvWa(BL15DtG)yRC(b?(LVT* zsIt?WqRM`69z>Owe-hL09oqI&2fa1)Ew$r2H0mw9kDtFKir#%Ic34a5_cMHtPya0C zKuhZUb2tf7-?!s0zE9KNPKIXa?KI@O_O^{?x!g6hdOUQaZmj!)Id~~tCU6a^FiG<>Is>|-%0FmBz zp~^n0bGJTSRAV>Pr-PaWr<-%yCX}6T2>wwcc3pkCV;lvi*b@ZjG!ONwPy4M%oBFie z`w={9_S!M<^SNXTWm(&Re|tSz5O50W(X3$1%z891oG}6(K{27*b!kGxK3A8{#W|>9 zU%c~0Hq8a1e>OD2d}dvml$e_7DnfVMp43%F8V_+8Fm^o|R>=$c@?00L3(2fIZg|5}1E43UnctLITR2^DY8{^oqj>z7( z4sNuwj*VJIXY(En*!*m5c{VG~Zo_bKpzdh&!2{?68nA8+$_EKLC}Exe1svWL=?60a ztt^Qx)@+$yvj8oB3iNo@4@3Wxs)ECBd$%&c0y0`W%3YYq<9A5b$1xxNjj-AKeB$PuJGyY}w;J^$l5#D(WJY zebi3gsk&Au>R6R+QLH&C>!^A__ft*q$ExXDRJK#qkExJ5Ff7rf{~pJr$5G=O#}NJ- z@FRuq?XxDnam9?|yV+4n+A6{C1oLCNq#cvket|yl=$wTJbLj4clBbIc5P9#3cc>!P z_y2TT1wQyRG+>&fZwDN;#P7@0+SM2?<}MCX*ITZif>9*b#79)odMm8+<93O#-`VTZ zkH|0wtqiG+{3gglGQLjYIRqA9Pt+|i*h`=gQOuKYx>3wxH=S4g;5<-ay12-l1XtEh znvpMnOw6$w8>TrAJ1AO@km()A^f(S-Wu^EL z!qmAR?hQ|z@vgO)cNbIxJpj4MJQ3l`X} z<0Kr0HhrJ8fZ<}ls&4|$g}bwaiw%0Uvim&QE)eqb?9Qx{gxxB{Y@$su)fY)iHLNK* z;(y&#R)~v*5A_h$db$Aoc~~*wXSYGU%5bq%t0LyZljQDYwte-@ufX(vk`3XL_`)7B z`w6y%A`QF2C*hZWB|bQ0=pT%b*1I5##nESzOFQ6VkjPe?pBS?@ehq8W0)&ee{UhY= zAKa3F6MR6F882(|WHwFyQkk!|!GkOq7bc-if5 z;1kF25!%i)h}`zG=c9ct#`Zfz-_d_eE%o2CUzhiG6vNc50E@e+206)#nDGCpL6Gvt z*Kqn}+LsW|qtE_?vH1qN7`*Qp4Kye!zN0_}_?8AgpcZ$~ZN*Vog6%G4pNs8rB|YpI z^ve_O1vz_F4Tr-V?Fax9gcHT@G#D3tri=zY9#a-EHk)B`-DgTyq0}jVT=9NBp-%MC zlQ0g1&Z?&Jd+4m}0>=73hQ9#2&@87nqnDLW=({b%6c_h^UZ@dyp!1IEyPj0`uj!Y* zPFEJaN0~jXps|Q}8$|EzZ=$tj^a5mO?+KLPUp!mZrT}4`siN*cTYZrCza^xN(e?qC z1PUr7zM#FyzFXc|WmqK7Q9LHpi`tLb>yM{-9qrH5hH1Hsb*b>0eSMwK3sn^}txnlD z9`?iWb!9aP6_^S22jivGFY4EOE!R07fJXa zUzfBFE_T1-P>XS}nwfCWY;Hmr@UJKk?VrDg2jCbnUzs^af|taWLg;C)0q7h{faoP{?!&D9KGfE8$SQ2wfJ zwG&ZmjUxsdY4B+V+h}mmdn+h=@Vr6#A<+;0up%Mg&UyUX1<&Hy6uT>8smPyw0}~|WRF$Ht2p^z$8hXdV&F7?N68oqP;s?+S$&nu z@;$X%rPHi6Dm|^lTu^C{*lYr&Ij~)Y$4-mVIf;1WkO{#;qmP$Lba=*#dkqz_?jejw z^lb_O3*NUj1o^fPGQz1Y-=z>OkbMwX&QyHYf{1b8%MGH9zEKWcw}TxW$e>e^^Qb=+ zIfn;Qk#ki*y&RzZf#94lT??cRb=X*^vuj!yj-J}uFe|9&cp3c;VSU8IG5b8DFPK)s z*v*R580~uj#&6N~jnGB=N&wj{`F3b@Obz1Oe%q~%N6-^32&}G2TIyzv?bd!eL#X7m z^*UQ#af^<+gueN&-S3;^`D@?6Z(s+H_2Q8Z{fX=0H(1Y~SoZH&pP>hRHAi6Bys4~` z>7zF$%J6*^4rRd5cdf^%IJoRx0DIqVjkTW-NwqY2J2O>pjNf`ij#TZ3KKA8T{Pb^V*JlYgXG-`~_`??t zqa5A$e6joJhi1v+?ro8u7G-iF@)khjM)>-_RJhb+-X+bYmwB^__jA5e?OaN%lm;-=zV-Z?EA7)3}A~qb+}@ z2C#kP$aB>vIP(Lu*(SjK1hs9DKL+oKyM!$y_lXttZ;O5IQVyb220JvMV+lU++a%d& z&-LV{cc55GX*d}=pwtgR=V$!u+{RF*hmf;R6>V#Mx|}sr?wUgbY8tH@(CL~M=%ckQ zh%iso5%j!lqgO*J%)W$M&Zx(6n-%pqs=HTDMRmjLtEg^V{aDCy;n7d@UDPf_X#GY=CN%Anq?XXuxbo$_vCt2Bm&Q^Xy~VHy_D~A;2h+_9 z44J0z7dr!Uz)I{CgRxhSg{i+c7W|pEGCYPB+aH3n#AkrB+m{8fhy4LV~>ix4OHkbE3Nk3rii<$7l~fL>`Vf!R3n8Uc82`G95H&bpL@EeeEzQtDOsfO_%-cV!+_= z9|?-ps(&SHzdin6;DE&I--|Mc<9Ey!QvwzWErr$uH0=Tw3hfP8D0Dhtq0n;MgEDLE zo){MT_#?jC?a?XBW1pqidsOI|$9<;)Ike%U>x^PIQ=v{^4OOX|YHd?#oN6pnX@*(| z>3ynIFjBEImUvh#f)_16G64?6ln1(cAlBK-Ckf+>N1#an9`z+eoSNoI|JDm*B-VQ4 zZ|@0^yZB393fIHb789Ez-#a7##jm0W+qP6KI@~X|coLfX5k=8AJ%9*Y47qz~t!NM& z9_bm4{GyqWiu7QEdA8GiF{u2juSjDyeJt{mUtF_T8xDQ_zl3kGjtjV^_zTVSfWsf` z4KA=0Zi`1zPX0}WQ*4&Z^ZHdn6h0UYlG#5N3fgve+-k|}6f3sNX4_b?Ss6hqW8wRI zvu8{!BImK6zKt;+WbKW~K~Bq9hgpnv%wMHgu$?-x1uM7vKj8!1tnTmm0N{Nl`k;=J zGmeh}_i0Ds@%Uk?(36E8PJ9@gl<6ojo%DeTuvW!;K2{2}#hW7qeqaw5;4zMu?`|G1 zev+AK^NSK_ogliXfz9#o7k)Rw$emQdd*1DNX-)zZhW%({k+y^IqrdSglwFMgUbmJe zIC`7RyNAZZ`vz-G^{{H7#7T=$hKT|FY&`2T!6i~>``(uEps~aF+BP@^Wc$1X>-z*+ zolp?o{SV)Ue14T*WD1cP1MKF$J{XI;Hv%lDJ5v{tsLGeY$-Cpj;0&)=L}{xK%T21b z!Yj^5t?==R{KhgwtX2C-_%O~}hl}%C2b?E0+yp`<#vGlzY)Fw{VJ!LJk8Y!*i#lG} zLIX4as!(f$%7d=1Qx5wEu1yZ~m)&|nL@R=NwX9E45&D?LEpC3oBr;&UbdXZv60^6& z4o!zktjCD{eFAT2shGOrap-06@0MgXgF{TnX`J6F5u*)rvkVzT27n73F9ACDkYNME z>3SNO>F940!vrl5o-^E7nG4A=(gv`oYcsW{Z>YZ5DnGKKPrajUp z8v86{clQ~CeKf}BoA09;`C?C;6P7FgfP?je^ftV)&XVyE9FT3WvChi@*cK=ja(gJo z5QWAnz6A=+EGQrA`!8xBdZB(V>6~;f8Mbi7fn>0s3L)Li^Bq9;ZcE>nEDl*eqtGgQ zk%Z4}VtKz$#_3R0-w@JKbaGfn{+uue1-X#$59G{B`WiVik}af{C0j^;pNuPhC^@lp z3N=oNdH~#*f3D(w>HaD-aqIO0awWfx^m@gI^mZj3uvxK?(OR{TF-T2-kAhkGWPNUI zwAMhKTB|WVi;8t>`Ae`%^YpPnx`vA)-8?>K&E3#oxesce@ivm%;#Xq0Ly~NKoRY*= zB#TlyQ`fu2_o+v)Bj0A)NUzBpi@9Ee_SfB_SymPpSy`MtGmEqLW^?w*Y-D%I;p`zf zoW1sM*6zE+w!g8u+L*gS7|o))Qqak-ca5MiMQKRUyxFrHG2QW-VK>sn^F08S4{ISL zo9bFuo!Uk-eqFncB{~#`^q8X|aa51l7(&pErI_=gfHe)i-2&|9YDJv31`5b=kOuSs zlOcp~uNDd}2&v0Mv^i9`X_&4?6CCassz5Fi(^41J2Vo4CGz-Z#y4FXhE(OQ%B0Vh@ z;aDv4hAskZd9MS|ZSh-h49;N42roqbyv>HXHfVLby zC4dj#9V%dwnxVhlT>6SgBHMjOLGu&xbR zNbe450G_`TJQv*VS?upwk2Y9?YfFA3zSGnnHQEsMBDnijS%}Ipcw}E{j|%%d7Lw;Z zMoTYUFQ9h;p8S*I3Lw*!z({HYx1d3G;B_WsBi$s-ifQ}eIej*M5bk5wBu)=aV#l## zQ`EgFViJe$5Tc0J$x}rRQj6BM#9OT}5c- z>-snx)Uja;`Ln`c<{SxI*TZx%e~U3Tw&`kY;PE$NAmJKq#K42-T;mrsGQ_rEk2BHc zyFV(V!NKUH5YFJmkcEOR!WIe+3acZ-G(B8+f0%YeHOp&}0^tE}r54lO7U#4sn0^a1 z$T7oV&VuiW0(xh!#6ZX8!!0PdNVkw&r{g298Pg%_vD)iR6%O7uo0WJSd8`Qgiocjc zIORsny0G}pIE%5)x2?%YJ7ZlM(h!k)4Ue^J*h0Y}VG9Mn4XaDSv@u+`Q9NBLFjhy# zc^WHyS~9l7U9W`b%3`IVor05H;~3WVTff~QAlCR};Pul9%yY;O46Ad%Hzz-oe zjSJ+d8eyEZ=^aSx@RCu?!7M0B-;I!3+a-9$6O#i^A>GZ6nUf_(*xS%&qgWd`onoPX zBD#ibo75(ffpF_%*@7V>|K>5ej8k}Q-ToRor`6-n0NB-+eAog+w| zqmS4U?qtxyDvvb4Ax>u{ej5xX6X1D?F$)Zn9;12#pO$w@_w!x^GE3tx3PX zRR%T6$eXQ;mt00um!%ju0BkFd#5|@LDj?2G0|;?<(?a$T6PWgH(>iC;F*C2Sa~CtA zh;jtoA0Z2T?2A+$N~{poNr*cZRghs%hND1J@2Ve;&S6<74*PASulcnO0csJ*FO0KV z1fHXyR8OJ4@VZaEac)=pIKA699*fs5)tb6W*;Jo7zkgRV_9JM?c!L~zP(MVSc zjfG_ng}TBJ$75}eg`Dmp-sVlV)fpx}HY*X&i?vW@O{|47&EnLyanvKu8XiYO<1+Gg z&$&ZE0U`x|>Rd0juoIfcKa3YH>~U!(s`t-9=vH+M=F&dy0i>72O+oqdNovb7<^6HzY}g#H+8AnODo1)BjXIDd5nI+D`;poN0E9^EPC7cq5Z-bq)s1 z>bX}*oi4$ns(OO8M6utIY4MuhLZ=7k%&&r}kfe4e@r*i;#4rlZBw9u=NTe+V*XCya z-EOAab94D2pVK)Q4QBc& z-~Rde-z>}Qz=h5kMl@=`DCqRu^bGSD{z_SwcXQ`15AHF%CL`8H!WGsgGT~Qxktc4O z2R!ii+`Ew)vGW{&9fD3gvpiSH#&(%DMXfK+V_^jS1Opkqu_d?+GhqC%iVWCjY$BZh z?DU?K)Wg~!pr5DobfkXK+6$-=5O#YM>U=D|NrJ;e~O63 zxF?Gh1Fi?wDC|uhJ}ri_Pm5`IR7Y6GEQ==Po2t3*rl>7M?HnL39q0s>>sQI>AXAI{ z!@}$A;2c=MnmOPnwk89r_g&eMfLJ71KS;DL>XJLUhG5Tw9FZz~C&O61Qm?zQn zs8Y^82b^MBYe_UEw%B&xOi>eaNZSczS0wh3afawf0eF`Kzkggt11(nDK1HJ87*rlA zS+gXXRIm@g&+uU49!3MHhH0Y)!#`-g)^g^ueoDM5zuYLUp~e%MpAc4 zG*K# zs(r))qrgU@rIi2KIU}q^iMK}LpkLog>M98$f`WU>x?6`(=8$Axk;HG3)?TLOH=JiK z!{W`oWCJg}PAZ)EHM>bW`DHGWb(1oDexNdmKek-or-9BpuUTz$YEpnl1-RIPETCy! z!S8VQy;$sfq5{}cSUc?w|7+qwH*Mb4lp}^s!1$bRan;NnB%c3qtjxYb0OG4n84DLcZkk4kiG`OpwjZ;M%G)$z}-J z@MaJhyGW33VqY=PSU#h-MOWCI*4-%dpVgF1&}AK9qyTDAvd&6yZ(^;I zVB)SLf41~)Wc;s~P(ZEqHJI_FBXuM)PNS9yKR_QtQs|cZG9R+3c+d>-;T& zXN2<+wfPuV_?xHUv}L{&1OL7krA(xI$yixu&5AWN;c$2{#Vu68oa1YMPKtwKC7k~P zE_ZiaEKF56Jzq(Q)Um3@{9Al%0rvfiUo@v3E$AsN;>+_IBesy>kYimHKa`pWD~u#> zR}&XNe6C`QEj%1lqPNEaK0M09VY$BZ7&|?*C7%Oz9sKTwP%glMhtD5aG^_EeOz7a6 zbK$C93nINr*JdNMjtbDYhHdFQzzRaLs0B0Cjqq zKID%ueMnC+p9P!Br*-jBUms#m&~P74Nn}46|BX22&zS;?4gw6{C*?p2(25-%^^uKn zG7Xb)79uy5=l&nmxeiFY4_m%Z3jTmV!?FoioqZIuC){(YU%;?^6y!w+J*>sz>uPN@ z7UirNM44tjjG~8+i;wUHQSe(IS6bssL;9r8k4h~q9hEv+bs~G@58NYCi|{xhk7%GG zKGR4FjF!YQ3JgQEJ~pknLOx`)l6=VMCSk|%f-ID1KKm`ppC|ZHFPP0`;DaWh%6dsh zdZ(l#eNcM9IS-klp%4vwQWutwnvkWgko`z+lXax`$(8un@STlM=)m&K5squDDUyZs z0x5FOb3wn^hba$h0z{*dj&!d`A8?(Bqt%W~SQmGYtfLYfxmgeej+1ocOqW1qJAEL2 z6V|tvRCYIq!eomx&WD~zxiaQNMLg|mrf^Uk@C?a@1E&^}-b8_@IkW*{N7+ESvs@fF zvTP!`N!E7Cv|R=gpMOpYBUS;pH&V`E1;R<3sRMFOI|YF-6IJC6c3O4#k7a%fgAE~)o)n@68*dO2EBBf<%|2Oh{v=V^z04gZ`toH#(%5w zw`%`ZNOq<&P}S}go2CFG9h-!^dBZlpnM-Y@Fn@K}Rw z$OcPtAZcJWjD+r2-rdJHMAaTgK>syZip|Wg=+qlcHaHCPNrNN7<plu@mB1pw1JqASh75Xzq-|u*o^ec~{RQhV4v7~Cf61Vn7jWB$B<+$!rwWw2j;5LW zy_ymM_YY7ajGwN7T>~Z!o9*KvK*n?l&>Q1m-;O}cU(1G81nf2^5!}=jICq9~1UfqC zD4#vE71`h=_R7Uijc;r)eLJ8}r@bGEHqbYoz3jI}N8qXxy4@@wni}?LzvyMyyAZU% zuo1>!v0=~hi>-zYwZCJA-Ni2&o9qgvhiMGd{ZN(^^^7+0q7BG}6+hSv1emR$H{m()L(%*wQXo zbluY0`Kh~K8|bG|er<}M=K8f|ep=_(e)QANe(k8A&iS=#erg%edIqRt6c^sPd*N#F zV6JQ>8yLZ1%0aq=RMwe0aLQYLV;U1WOdM;&9?bk#n6uHisFil_?w^-=42pnRLS&_0 z@`z9B{KmoRdeb2fv?UVpV~A21`5Toaq}!->f-~RGlZda=Jug8c-fIrNiU?I{5wsTp`4S9*bU#X^?YQ%>mXg+@^su;^tIUk@pan z9;Grh)xj$L>u*aHd7f-^Q>n4S8Eq9CIfE1n>4}OpU!kRN+pE$Br7X&HQxhhr1zY8eGvqI4m4QFv9-w~U5ojK~xEpQl1rLekNo++rIK_XsG}Kni ztq+Nx()@65-Y4UqNY5#hFt&_1TF5`Q6nupF&y<3L=y5c<41z6hQ}>q<6N{cl?P10J zGfIiGCH%-aai9Ni8S(3V9Y77VdC+e1kQn%24sw=1n24`GKWM{=``HJ%Op8+fpGu1! zrTimGixEhd64OetsFC3tG(aHkTNoWX{SWZXo1Ry^OAS=;ruvf(-tZ{$;JKUN1bZO( zIfB3?@3>w^e9PxviiPH7gQnD51EIkT;_u`jf(D;dROB~NO}tc>RH(;^rjFnAbzXbE z1|RsGe~Q)SL?exZ3{TYVIIPi+THZtKoIO7Kv#|0|{yw5WjS!^yamBc<(8XwFD))}8 z#oMx0vX4n1TX08CN=9RuE*E%P`qrYi-pYph=MUr=tl}loTEKm(#ERv+B=BOslXK3f z;*|V6UU4OnbCtxks<@~W#a^k#F_osOz7;AhP=oOQscPF;&D@LZ^QzI(L)Y`wqHzBl ze5ks30vx9|)eq_2e89zg%*+qf?+JROa7>7m_J9{Ml-KxM@`Ku69ks@|*9k#D>pNJ} zf$uf&lkSv^Y70q&aByWl7KT0;t@ebY2x14%D*rb000ndKYk(w#%%M{SipM$5Pn8;Y@ zc*t_bAFS4ipr*5pti!Bgj0@$?%dXU54Ak;4Zkn$LuHy(&Il$5iE%P<}*28AM7o5iF93CV6CE*f1 z(&TS##Mfz$DXcU+hzYvRn2mHxD`zVlkXxAe8mkB@owGncLd!7~0Yk?Juw&Z;+QuMV z3aB$|8e;2{Y+7Th7j0@9)REscXbcR}_+TNVw*`%3LE2wX2NUl_Y6x-fV4U`p_By?o zzwwSNWCGbRwK-2VB$#caq6;LNS#UieQxGo-@nY7OAe;4GM4h6Jp}SYCfpL&*I3l~i zj6sLD`LVf97GF)p3@6Aobh%*Eii}k(B>?K7xO82LIAoDk+X*Q;y5lSP#Mo zSuhH0t62MB%%E6M(SwfvAUNYwf@c(1uUYUlzTI)~=AJw4KC7ZAkEaD^&?l-1QO$Z; zyvXN|f4?KdJ61jMvHRNwwvBxy8xV6PQ+n zY(e1NS+>By9VAIoo-gN!1)jsb_a+?B9|?Q-)9MZBn5OIXrjkCfrq z!EPaoy^;l8#FG;EwUN5F*Pd^Kl)Og?wjG(@ayon zzd4EOkMYoX3|a;M*WzjXERbd#PgED8y8OPV4-iFPL6<%kzhZdKjCctWqE)0`Bw9y+ zj=A*9AL1^5>3#-rN}%#dO$osB93yY;m{Y*B2P;4dK?P(Z+$zWrrrY3+?~?HpVjfV5 zMZJj>55tA^j&O3fgI>7b7`;OzIf&Q6C_4c~kGyY%AZY-6l9GOcL67W+;gzJVD#Ae6 zz{}Z7@DPFSlAt|={w?QDCXIr4{h8b`yS7b9gGhYwcQ+6C z@FS54#)Bf5EN2c?;ik6&3%Qs?SfC^#W1GU(VuuvFl?pou9XTV^&=QsAMxpw*cP6mc z_rZ~51#A`DWS6MR&IiA)2~3t$Tqt&QWScw70t2zo|iid1>XXr^QpCLeO8}AN;yDv_Q+Wpa*#je+^H` z=P6^|U(??gwQzi0z9rBXV41$_GDNk^!(1xc`yoVnWPN>5)=psB+ zi)5B0ZItn-9F&bqGWZMm!{;$ak3U#18Rv2!Enpmb7wa{+>*#mv^RmIG>CWVyGuQt+ zd05Ykr|iolUWagN0_7mJ1))V)dsG|2#8m#|Ft=Od^S6VK1J`>c=z(j@_=#A^<+8pH z=pEbowNvz;VNj=le>_il8;<@5su0Qc@f1GA>bTh_5G%=(eatHcd$W&t#acwp^NL@+ zdS8v2Yg%`W+TY+u6Y+FEQ{nQe;jh@(^HQ~?s=QILV3j;TjYsx$HGutA^{yUTt5!yK zZ%^_J$B!y+h4T+{H69NxgGaiyXu>@+f2-+-0YP0x0!~pJ^aamJSx`gl$>(IYtnHI& zk&GEcATZa-h2Pfu;$yQZ;CJ3)Iu2({y}o$*zm~=sG?Q)gh#D=Fd7&fD!oPV0Rs)Y*^oJ zm10gybU6BqIQOJ4%JrqJwJadPm^Ki6`@x-Z-t2j8Zt*t$x8AM3c#fNr<3g=yUt9e9 zD28-I>O{K(;3*FvWR3T9p`8J-z{^U^E3}wp0g!c0)@~y>EC5Tu_?|G!_nAnqv20KS zUHyJkAK^Dqdxk#~m3R2#Q0=_mJ|2K_KbPzh7?0)_*v3YiR@r$oX84hEH><96qb!j7 zvxya2R*|-eXk$LxgyBbARTG?<=b-DdfpnyPV&Ln-AExzJQx;D3ab8!znvN3umFD$= zEZ`QUVg{3Vyso=%`2B#5{iyO${yyI3II5W7>^zHctS23*ADwYve2=k?&I|v#QAbBF z766B)+-G_Hz?c!^{ZG#UXzFqtD)r^yKg0*X)^8Huo7YtE?zJLo8iL!BHG;%U)@=j8 z&0mzi`ex+G4p{~T^Z|c5>^3Gt$N&XJ&YX{8x{z^I6Og)2(%$NCr zeFgxh`I7;8iMb0{tcR)Hv3kx@`2W@I{?N10@oHVv`D06i3$8GXO$Kc=(B~l2m}1hH zC@T<*)hHVWzUwo;q8(@KMFjNF@E4u~9~=_69f(b6&Qiq@c|OvkR8CJ-LApBkyG-JX zqPq40y%oI|@UNOY5+VYqpQtSqi17H3Y>;i3-tUF2I2^3YHVp8aDV1<56?2Vtny=&yiq{Y_(>sP!;w0!{N!e=^xTEIwcgs0o zOtw%gir{(P>IvfO5^qj_4dHFACK_Gwf=}L7GkR(eHXGwK z8l#oYT|B2v*hSWx2~IOmq#RI{Tjd;RnKf37_6oVC(}P$;Eq9X~JIaO&2`BRe7@G?4 zwH){$?yMO7S;AvXQE1Zts66wt;0OSJ{vB|@t zOLrp^Mdlir__)Jh!uX15wDVE38|*gi2u)`%B6xvzcqsdc(Cs*nz@L9gEbL%di?pA{ z=`k9JwL?zw0w<^GoV!>@vXQ~b4n_q$FHUkNClSCDx#LVEk2}e$ocz|uxvPChwzW9f z+d^`ilRU)9(SFXI=|}RClWY+{az%i1w{WtD&BNh|MuMa71%8#$FyP z+QtGl4vIC##nPDAbeJi`8rx$LBQP3v0e=+(Fw+4Ze-9J$<(YQSINgt@x6Mf&;^YW; zTQD(S<}S@LavHPx^GQMr+wfz9R?6@ zr}`28pqt0{izW7Wk`F-p(5v;bL=#O%&KOODdcp}UwVfsA>pIfA^|ZA<(cVnl0S9Gf z&OF35Hxr@qaNNup<`><3InDiIuFpnPoE<*nsE-!H|_)Tt)S+ytMV(_2X z6Zt6$Lepl0l(U7EU=xwuN&biXUfo(h*6|V98|&Iz(h>jXqLc;w%YL$n^f+0YA=5ND z3gqy+ZAWavbO`L0KrtU<{!4t6(Ea9G5|02Wg;K7Lh3|{i;U^xsY&s3tZH-7)K`qe{l9`O;FQ3olZg+$kGtY0n$c-+%y zzaM!JLUzcF-~X)spMC$s@qI)eKn@DXL1{|>+{ll+*h|hn3oJ=dyPI%smI%CQuqS7o zA(nf9Z;Qbi=UmcqW*cIX9!AOKdId0446fS8&_@|!sDXX?)-YBw@?`8ZXuE;)?jCvf ztjtA2b4lMsh$;w4g=>!ss0pD}81BkiNI54J=vSf27+IaKK>{hA{qOr4D(>))2t~Q{~22#N<-Qw6g z9hY>(KEEIVMxo97BkDXca9z2V{P5-6OO8YOw5%>r#RZw+$92U-en(aBgRg2Go(sqA z0E>VHfUR+xNuPj6TgvJy!(PWkx}^;H{Qx-gWjngOYlQxaf&5{Ul9-Mvw7LA?Z*`Vc zFu-~^Jq=X!If@wL@V%xhpSWin=l2sY7VZn&^z~%!CE8Zt{M+#Lk0uai3)!W;+m=gb)cB2Hr^hrTa24yp4@70C z_H(+J{!j5>wOfuaQ#>xjLCaLTXM{#EJ*gYu_-3%?0n_OB1%>Y*LWk?oj}ZheCT=JpqO z&IHW(ln4F|_k64Vf~oI;!8C*t1|l8+)C+U#hqM2Q)6kJ6meVN#Mb<(^E7G1W)NFZ<7C4%VT;~e&4=k=hPM@-Md^= zd@012#b$yoB7Lt6^oUV}3sTlV1sa1E^5@A}jp15dZj!gQ(e>f`5O2$N$;K0NR7!W& zAx@MOqU6(HAWosIQ_LcE=cQRiUJ)fRH>`J@W8MSbtai;XS$Tr zQUM1eXQK?Ote$ye3Ipn}4UB%B)$erB8k6bmNM8xyO8^#1EoErRu2eIj`h8gCCkA6o zg)45@yHj_$lLs-;?u6TyHEIshr&Z=uMdrbTNi))+g)^73!1Uk6JL-H(a?dc{r3Ive z-P2LZ!hx8QXLFMz?iJ$R!Yf$(qeCU4o0J6^$IRRQeyj5k7PzkXyWzEP#+2@eLH*E3 zcn{)YSn#lN!e}`QV0Mkn1Lrdm1%LDhO&souuk)1nncrfo*(!+2-(?S}8xu;Um|NB_aG^fP=}0)Ifa-s_uRj}ik^qJIlnIsPMwEryFw1#?x9834&%Pu4 zHI}Fs>A0mk9i`GnQFy?uzgYsH;d31d4d38!y7RIlrtK^@X-ilE>}w{p835m8vnOaR zIrchxh=gYOam7Z)Z;G@0ZaG}oSAt+fj3pC*V6>Ejr1Km(zbojFjXZw)zi+HxSqGB;RDS&%e?QLn*7JGaQ*mBde+s^6p-{n! zpu42ML7AbM+#Mj>9ixjE>L6slej+zdFU@#b#k_X@?6+CsDvVY^J3r{QX_ndVndB7% zypi8=4m{C;9)OVnXg-^@s2!N$vH|o}j5xTsk{w|U{3m&pU^xR-X}a^E2^z!$=H4D@ z3*pBBMPF$m*3kt1(a5Xg%P#L7qfCT;WQ~~~h9Bu+1`wrNj!P@7za>iGNMPLNeb@Z+ z1MrB3XP18mfzdJ3%RD84uIs_AIQf1DugC$2YMXbzZkDIrqrV}_xHRC+aN?Wg;k}5$ z^B9+X?sxFXFL2K5=3qeGm^18*sSvOmpz979vO_Wv&y4&L8!0V>8@$7;Hgi z4SIlCZ6kFIU?&@$H;{-{l#0A=~4{f2lg@_3Jpzw5&BJ2BDL>MqnHvs1ctL)0DioHmMzu|#CZ927d4+)YQqz1b1m@)@F*Eev z;|W;EI0>NsqGYy_sY$`MZq5g~k#3I%JYk+;I+*-$s}H@K`Q*GPn6Hg>b=ZFYB_76I zj-UDaAf4?g`GNNhmw?~*k^@M7FSF40xSW7=a~96>dWS?UA!-#lA%m@ZPZPj38jmCD zehUit*ukH~h!EnA~L+K(DHqhYlq|GCm9>vjg+6_WD0P&Ag_XkL3-MS3>_aME8 z%q^hJDW3;dA+koDqtvbGs$=aLad#vn5d84FDdWqvSA zAg4usJDH*;+!pzOw=9EA2MF7#vV|XuWee%`a{1i;QsBys-MKB4VTbjD0$tk1Y8sLQ zRUpF{&mH2jj^n7uZG-u(8CV?6cRII?PsAKNUvmmu zJsd8nn>y zUjMFgVn9j%zH(w*Np{^ku&jUTBVuA%f44`(g0lWI4~uPOiyV7Iv@GZES59;<2SnK! zJL^MLjeqO+FQ{wZV12dl}0oaTlCly4aG7ud16Cx*caRS3-P06U9K+< zSbYHn8-?Rhre_$;qMhMlNN$L4MZ3NfLlcwmV_xD}v^FWT@Rs^wZ=sjB))%w0Kq82< zITHv!1{ZeR>fP}G(g*G=f(jGw%0$Q8?(?1gLL9uW6DnUQ6Fab>7*r*`)0bjq6&NIl z`PE{P{x(__Wesa6 zCe*gk-slf|N#nm1hw5amtuI>FJ%$B6|FPBfYtix(|My>sKA&U`uP+vU5;OcuvGo)G zg@)q5CwPLce3FeZ4yYG{Io0#`Zy=V`+ahD^)9YI+>eI*u*69YcvVmuJ13KNn*Ypee ztw960!ui72ydhm~=xg&OZTZUA{A-%|wblGzwDjw$`EnfIlZy5WP(k{bKFEiHuHK#d zAlu*!EhQU_&CL|c0p|jjh%OYc+e^WLhv-6nV)9pm(%>McJHK@Nv ze!HbDCMZzd5$ysEk#24mb?W=NE1qFq1o)YRVz>iY0068}Vx2}La>YUvn>kQ-(cp^R z!oK%q6awW~E*PsnATrd-A}2wJa`CUx3(<4L_xn9f@VIz5ST5T$wFe24C*$J!X`Zh| zHY5Eo|2xj+e^K?pZ%FgpFR}}BU(ok`2I|OQxdmW4IxT;B+;7i%0LgCh4Q+(9Cq*j2 zlcQS^iM_j!{hxr1jTgrG=d}N<2T%Y`v`(^p5me#VsQ6h0r9=Cq;cyWIFmPXzy|LQ}Oh((0m|u3cHxaA<2K>B8dE$++BgYvGhp>j9`HYKirI2z52M&oo?m>dJXIr8(H}jE07tk>mDhiw#(~4Y8i1vEqkV2;iJ~-7Ie}z|`It zPw!Z9C?pkEp1X&w?=;-zqo@o~KyMXhKfKY`ltiS5s`@kzwiR^*xnH=fN0GB|S*!q;XNuyQoQ8Bi z#l2_A5&41+IpTilRrD+S0U_7QmE5(&xz_O zk#)j^!7*(+Qy+(CqT0^xKw6Lik}g2?-QKI;(vBCCjhH&6)< zfg?U;tTYI5kG%KeM_Vl$RyUfuRHJDcuqb!h&Us|=x0Mu!yVsA+c#wC0#64@=bWD{7 zqOT27`eEn~$`;(l9G3&gAEo$PBYL#*8PY$gXb$zd(%rF*5-_-!lkp(W5)i|xwdawE z@nWTi51*$#lIOj=f&KJiJ>tb`{UFkl%=EKixIzKWJk3`Q$z4`F3ij}4PL3Cw?fcPI zt01FMn`7)v@o)rg?G1~yu`x*R4~0?kddNb$LpT+67l-}G`9ADN^LxT@7|Y|b9MVKz zPomy8yo6YL*lj$NJ(0xc*#KWSTBC`kkiLXyZqyb;&J8%2;%Dh^AeH*c+E|%}7Nl4D z9wOQUa}-!zB{j={u%^hSbTBcx({~wSkXLJxA!cjZ@C-zB0?_TM$BxW^9vEY8M{Vn1 znm7`Zh=Q$R6X#`!<#E=IH1T5`=UyV!iT9_ufCHjzF zml*DuA$la;**Zh4NywaJ=hDTP6yKI~1W)0*n^MZ5wce?vk+VBB4e9Ht z7FzC*#$N}eB{o8>G<_|c#;4T--j;45`D6M>YMDvb^Bu^$=kNX|q``4~8}xI<>d1+9nW8GM}PRC1n3XzwW(%-yJ8E*)jLz-IKC?`op7@}#Q8$G zLlgk#{vr*>*1B`D!M}zYpp=MPe@)7*zYlr)q^BWPnj$~q%)vcN_9$#Pw$rU!{N2Gc z1V&YIUmC<=qbH$x6tx8?1^4?apzOPF2t42L2&c0T)Ylzp(y7c}H`}#cw z^S$iZ1~gnKV&S{LRS2XXYppi3KSpe-b2gUeY|x$*5(8rO-XR2xzZ2=% zacT<=Pz4O6Z76k2h(?6~k0LAS#AdC}&r(;)hR2WPjsnsy%08?>OT>?m4bvqbz7AEg zwQbU|c zvwo;97GxO1tAlj223Hq{AF%pY7l$6Kj-1}5lZI9ooy%Bbs*4j3SzTWd^UA4>UlT{l z$BcVbOsQbCsUgl+@U?wKG_L4t`ihuP(Hi!OSX$Y4s=C~%7s_NxMwo) zVaxL=-@h(ay=?cYE_S`_+gL*!dpWjibZ_TST_f_BW*QxbufiEp}j5(c3@DEE9hZ3y?X<}@WH3aZI zxeC&aQq1e=qGM`euM9CJ)#`z#B-NPC@r?rQ5Gy3rkG>A3`hQ6S9M}7$(dqQmP8l>Z z!#6jBre?5Ma$%-9x)6Pr`EKsA@ErUOejGC$sE5noaPokKJRE~3@fn~b&U_fYFoUWC z#Q+%`1Vai~N+>q&#W=-}_&}STyRegWhjQ-{w_R0;sxg2qHHJjm0ll1NJSmeJWL)PqDVAie{-P;P?zm z1yFJ38r9}zr_JR~n~gHK%|%X|NZ($Ycvze^`*KW@by$OS6bnlWprb&c21~&SDukff zYgFLQ{&6Y-Sljs8Ld}Me%v@DpuF`r{->1?sRbTCa@1R%nR@a%k<;Zi`Cg@Xl(Id3% z8*rNVx%fb>OCN!#$=?snua*_DOe^F4jY{i&&x<0C^*!(p-)zwlC`m`JHP$Qov1Nvn zhc_G^PAtSf8F$M(=%p9O69;TKOSXR1qe$dkJn+c{^l&-b%W?rf<@_pnNG zkMu9MXQ!X|wp0Z1w5Gyl3ABM9eCW>7V*c)o!R2`-cZ084wt_+)?kCo`n`}U}dztLN z4y_xxJh$q;4M6bWKGy8&1y6kh(vubA6zjQ!#(Ck47|+fiPZ;rgW^i(Y$B*1S9)Dx6 zIN<^C*ygq1{V;$15YH7)Y-@$J=Nt%({vlkz=z2kA8N#PIQZeq@9qU5mFC-g`=nVvX zmftn&iQpUJ6ND$B`Z&G0dj@*sqc>qEwuYS=09W>%fV;JPM8}y6aMXXReV{+d9&)x) zA~Zx06%!D@3%?tYA-es#{BC;!i9W#IInStPV~|Y{i`!|7`T5MlpGWcF10AN~IQgUG zL{7_kPle9Nc&l=o#JHJW>W%WfDFJMX8KmD}J;!t7GLWg@F9BD5IO#JuKzsh{?Tn)k zq*j<91y{oKNw)SXFp^H$!)8$Saz!jvu%k{n8}t~{WIpI%O_nM;dCx=th)q|L_WR&9 zgLNo(%iU;?Pc&E4cKBem;@jmDO}yY!_3_S!i$w9Gwhx8o8ajM5E;YFF5ML6?FY+bg z>o#8nXD!%fyE_h0ciEoK&NDz~&ysy>WLg@%0nR?RL=!DZy}-Jjj`S=t?`Mr=l6Vzj zNtoDcOBg}(>?}x24g@jxakG1&Fy4h`mJl;7V^Rr3KZ-qY4dw5NKM5Tnu)M&2V9rmsSOtuvoNx@V!_z!G9@ zp+-7>47hulgi_~MqESzq+$lJ|+h92fKRskDfl;0l19t~`=PM8vdSQG#RF1#E7s8&P z;C`7CRobE$M-wf|iP}yR@W3x@fE?;_E;? z1?jmu*m^(eeq{L2~3{IelAq?-&CnN)kr+zA^0`M%PxzZ;1BT}LLD|&fTHo`-sw<20`%Gfw7d|nc99R}fYV2$|=9i`)# z=;grUJ+Bu&V<6sE;q4f<;X7u~dBfM*q{e2Uyw!1R0U^TYa7e}o4}@B36ZpE6sv`}I z6Q+xMRew(pf`R&x6M-kJ-!~IgW>PXxm+NvF#4T&8wjlgy?a6~r`rCJ*Yx=s&B%8R z8-WEN-oVff9duyI6&Wz404!jd8v)gUw<{{*AzoJQ1yQ8x->Nh%npwntJ8OOQ`n3>D zT7E$337%m8uvp+&RSnjXke;i}z~D~naa%$#LRu*!24gcj_E$t@3_gZ*i0)+DBGQ{v z;wPtx<0kk$yWq=IB==s9frqMGGHuxK+@4N=z`oNv>c(+wci!D6AxPJ<(d$kI7vV z_T5%rz`qW-Utc{ADH}mErvQf@WA$|)3(B2+*`)y5h0Td$^bprUhI76EaD%C=Ko1}F zcp)ZA)_iccrA%1A42r%OXvcmk2u4^p$I0_7*4{^6K-3YU&H!nM3=9#hX3n$3n{XG& z!7JVe&h6&;3VA+->+ugn)lyCwp8#%fhxVwrC*ApNLnjrckfebiolL;JxWC`!@tS19 zv$ePvH1fX_k@%e(U(_?o=wMn@0>7O5Mx6wQncxTZ@f>iQ_N3n+d~o`LvX|JeSdF0n zrMP&diQi5h?ii1!;5wq8@&?x9aUdS<9E}InP0(`yb`$ws-oT6eI0Pq=-wzx3UM)gz zp#H-K;B&S7@}*Q9xN-~f%0H;CKzn)RZ8%B95tgh=Yy*|SbK{t-V=%fg%0Owb4tvPL z2i!a#B3_2TU{S*>SLe|!h z=oos^S$94&PEdm&7XOsdF;Ct1$JLkOJ#u-fkN0PacDl~^L5~DC3WD9C5eP!GWoHea< zu%3AQ2`6n=3IaJ@N%m>>V^PM%I^Lg(__CTn>5Natv74#f{*dk(D~tp8cDYMqpbj9;WmY(=Ook!gyYwl9Tcvv^Bskpd1SAZ>p+faExq3=LI$NKWJ^ z;BK8e?=+!@Q}SiDPsm1U61>acW$+<+o-mH39Qw{Rb(-GNha2PT0Smp?l*1`%r(r&KZy#^9_ zCN#$WynWVPI7o7DlMd4ipr!8hcgCNtzAUn9N5-2g^LEbpr*Oz;gZgPj=8b-Xuan|M zj33NDcCOTvrfcGW$D9f0&7KoDuACq2u9{FQ+^w20AU&eqnLBo$z>D!v@DuSQt~Z}+ zfoYWr))9~KZ&%)(Dr{Sb49GU`$X_LHGhz#*fekQ{nA~^!@(G|xuUha7li{{Goh-2R z7K2cCeuqbpHH6QA!)HiEa**U~6533T=wW-nzG)%j2=A0FC~zH-fit?}L!w0NH=+_S z8I(^HRiHW$yHXN0=A!j((!FarCIT|u^2R^dBK%V(2%Pd->2$|m_>v+Fk z9yyWz0ErL=PX{)&T5949$t}yexjN|lFY?M-;u9f0fx)c!GAa)w!y5(Lyjee%qw9NP zd%v&icR;5;nBlC`3C5j^ldx^{6wY<#aj0Q{a9>)hXa55RaSHTr!y8CSC>&py&b>C7~(C) zXTvg(&GB`>wA~Rr@b=gAE4bfddxK_CYYL@dcoEYfVAvp)kBr5&Nmw+^dQ)s<}sn%99`dZ&o5ojq|OL= z8X(WTC&F8V9QPwprINcIU8J{~A}%Vwxm+Hel2NxO`C$?{oLF!4kMn(wGdABx;tdzJ z-S|6SW(>SO+3G-|NFHpwRbSdu_M75$Y!HuMtj3nCmi>eIaDc&!JZN?z?`PS65$r74 zzZjxFr6|%16&JSKfJ4N`W#@~!cntu;H>;A3B|BFG}Aoq9jg>=Dx zRq;0>lIGtfOJoQOf3HXW&uRXvT$6(*{{Hz#Z`Z2#Y31iDJX5cB{hFWE ziex{pL^l4DvwpF@WP|lZ}^v+pYhzI&%XHR z^Dk(Tf4PlZij=vob=kM42 z@UstV*9qM4@2MxTe)r%1%;#@^So!sU|8>KSKAk-!?y;>Ev*U%Q&9--HfBZqMdT)OE`NtpEt@l~2cT3!J?|t`| zeBi-Sr7KjdRQb^==OXpaM*jcXA(2rct%T(TdHk6nB6+KxHB>c4QWz3+O5QF|XQ z(xXf17SHFTy)mDg;d*$zoIQA_Zk;-{-uVnu&!|@mgP3vt;m1Id{?L$}(7Fe9t?r7)ko$BtY?s4lp1z5IG5DpB+U`!Yz3<8C06E-#=tgvh}<`n`01A*07_;+pqoR@A%+{KKzkixc#v&{?Q-*i68iP|JA?p`~So*{bS$x)4%Wk9ei-* zJO0;yfA81+vyVOcnTKI!`e_+G|FLiVvGRY-i$yvaqywhXLDoA?C%y4-a-8(e7AMpB zaB=zB$}bW?S^lR1)ces@(VttJ{;@xPxB5Lhf9qfR8@nI+^*@!&)AMP+rx#8JtnvMR zt#R15_GkC+56|sF-OkT~bh6+n@npJ)kEUmnfxgneFiF&1?uh&OfBSLzd;WL$?z8^G z@A|jCT>F!M=GQ*o-7lC&FJ_B`@4kwHBIGxAS^K^bRn!fmwYu69>`SJrFxqkTKt?bt? z|LcQ0KXsn`EC2Za^t*oPPyCMk5B=b89ew7l-+S^cfB28?{G}fqzBT^v=I{A0zd4)! zjTbAn_LIfsEX`I1FQzBcY!RPL=4r2g(mNcbKRR?1B+f1;i{8aQ+nn^L14e9RZk-~Pql{?q^MKmX%@^7!X=dZQy2OFDRfl;%Fw-~95+ z$KStx{GH$Z^yFXo+<)>fhsPZaN17YyfBc_*?$3VTpMLaz{Tsjb_UC`#-T!E~cDB^L zQRAe?|7&aQ>FBb$zIJP)7H>U@+x7kWPP5xYwvTv~!DW1CQZya-VdR%vFHHRAzzL1X zG;Z4WVJ+!N{n^<{|0qkIpG_CNAc>oZ>`juouqc_ zcJi>XbMx=N^&5ZSw^hIIKOb!W!oQas{1MGztqo1G@Q4;)uzuyA^j%!icjY$f(w$y*`Y@f;N5@*O zC*$UBWB*x6=*Q)My+!=g`nFI><@LH4j?>VNf9DVWG5~@b6FoDG!M9)e_w?S%(h%qU zU9H_!f6p$HnG@)Vt(VPSHtc(&0D&<32mXQopZ^{7bNKDP|8Nw3`}HyI_2*NqkH6!u z`&IvYaW)&JE5|9~q{oyUdvldI>@|6kU8*Ibv}l+5fb=EGTgo*oS^Oux6& z`FLpZVJn>s)4{JYPs{&(cJssT0sg1fw$}B3@Qc6uw|?}${}PDB@`$Z`@o)Xb-)R1p zpZnM^f8^q)e*EBPa=XD_|JMKW2mZnQ?@m7btG7Rv-2Z!fKlPJ4-H-mlowtAQU-?Ua z?e`r0q5nPmu`B-&oWp*~C?2Iqw0`>YSN>hmpU)fVe9>8;TIl?T(`jk_sRN_vv%Vdn zT`au5BTBv^68(i|GN6-^0)nSzs2=Wt`Y3a z`d~2Moi6Iqtc)3WkWZrwB^;-V-Em!_|;gQP&S(9b``jIRDg4_x1D@N-h zpVf1Ao9~pDUwoxMXIJL)aTuP^#{UEVLH}Oj+Uei5C;$3ie5dnw{`wF9&5!=szxlJD z`xpNgdvGzoKg&74kC)W%@8ZA0{^}j}2kFtz|2zjv|GYeXFq~jEyqgaCj4y%@4V)$? z)6qZ%%$GkLeZ=Xbzx`ov|GnYY-5b&c(gT`vns0ynXMg-vnt03dFc0Wh4p6xLvbc9Ohf8ksI@;`H1@2Pi8SWuEw!$HzJ!f7ds zPkokQmJYU%L?7#N$KmUJz_Sr{Y-2H=k z{*U~`&;565!>8W-HxIph4(9zqx6wr^H?05YmPLB8kjZ$(rwU$yle8tbVEF)gvUK2a zbLYJw8d}o`()wNpL!|*5Omu?ObA#;p{R{fUyKy8uDW~aX2*pLx5$5c35 z9NpbL8;zdg+nr3$<{!NF!E2vS=hLv-r6(TsvJ>eXESR*}*m^V=&#EUJn-3;ghWo>v zK7EEBc|4p9#%Bv`hUq97A0Hjfr{hzOtI-ri68OZ$N2m!EaFFxw;t?HCut9B zB|GU=amCW?WH|0}?~FMx7(cJd9@=^MpxR;KU8cRcjJ9}~*_7!#s#m4&AMWjK?eKmb z?vZgG{s>cbl*UNVNA=F5WUJZfH1W}TSvOcm}XIeoC`Ytrh;;h8O#QV%_1*D>p^OmpA*bf8yf z1hDh4W{_f|`uuo0sSO9;X-ARA)5Qb%33|X_?`#q5%th}w(RjGie&y$b+l=fn`xrY! z!=C*DgYDL$EcL%#*ZKN;F?Bkoc`-xG3>P{s-K90H&-(W}evCRodVln6`*EXFJ+IzM zFPKS_W9INtug?o6_yO`JSTiea`iAL}&L{ErNe*iKdy|P7_jbeRR~rBHul~%R(r4z! zdcyf?=h^%`)tn5vlNo94jG`~q)gFDfiLY@q%ua&6Jqk`&Vyh%MI-8i+sdIzuK@0r= ze}a7#R!Kt-yMO;s=ao&Bp6_=Z=DCf;dN)b*eEm!I(_Y4G>J0`GnW+~DdogE!mj84= z*^E4sv;Vicd_k>sdrxfflzwI@3|J@Yvdwo!kJB*|!~VWit-Z;WHM_oO)<5O{UgNjy za=q6U>yvjs)w9%J1OK=6|E*e;L!~kN5-C9LUxT>{DjHlY(8oPN$ zKc7i2hVS@_e_#3w`l&hpW&gisn8&>=doi86=h06|Z*bmYKB~XBRH!=#{$9z7X*bkn<^sV2PEUx8moWSy62aXG3!R!{TXOt5@Ek>W4Okt_*9Z6YirTzJ($tk26MKo#V8h4vtn%5BVwihYCT|2F&2AT$!cwp?br__{!|GpWTs| zx#L9jYo9xySJK&VvEnSOY^4_*!K{lTGfGh}U*)O2>~ah~J0JE}(tgr7*niSYy3g9p z&i;eO-C9kGw7cDTkQy9yKpPRk=#K|<#R-~#p8DD!Fhg9RM3Va1V!DaRI=^(i{9x2O ze(n2}`c;-e`qfTa>cZV=F+bd3G)~g~>3({QYD2FMT3cJgIdH*reyP{|+TUZ4^>W~j z6}~jZ^BJS1B@-w2&Gn3Yu6^wfJ6jA#+3s{}cuaR|E$&XGmovOnskHWVh#>yjZ#U0+ zxl=^j^&Ytu;n50K4;JoM>yI$yWYT1^aoz!dun8aj=)OpMr|leJQ`-x4pJy*MT5ECz zDdiSzmS_n!>z%#b2ix_B%aho8WGkJ~0W@>anylY0|FuzF`m46|*ZR^!UtPZC<)FZX zi%tZ4Ttis$PWY4Q%xrdGsaqNQ!53e8lD*!vpUpHAHGa+uUpmLPCYj=WbXpISz1CJI z>Fy;m6qio4n@wm-Qt#|mZMo{a=I+7H(s^I;^)3tws`vZIv@NYH3GnHpp38%_TdiuW zw+>rbc9zb!SUx5&O}HYnzxHRQ4%@l>0NB6ljFsSliQ`g{%G_u*DLTJ)GYt;s-6Frb)Zj>PtGhOP{sCg}n#diu3Dd^|c$$Gg*f z`7R408xJkU;CiELC*UQ5WG-bnoAAs9L6VJ8cTRN<m3e9Xrr$xE&U3{mh7K87c+0-6KBSrSI^fQ*xQK9ZEs<| zuFnqf##jj1N-{qKE&__qvQaWhk9&RLf7A2ffS}T7+QZ`WFP~1%(-CJ5h<4fgyFMun zyKd>68KBF2DKOmw;PCzwcLcm6m$r=gEAujQ^R+&b4bF@?Pqlt`I;EcNrWj%fk$ep= zKWX>z?%q4QuY2W^W?E7@rnjp#^ABp=tUei(9>+pkfaGKMhDlKfUyHwhHx8$Rf2ap$ z*-2;tb1FMYW)3quWsSMsyV3y(`aF5italIgovIJAV-p3FBX7l$TvBg2UZA-s;W0Cl zZQnbWS#qT);bgIV8YO#mqu>lFF!9=PBzp7*@yUjv$Mqm z@8W2XnS8H|zJK|Wyl}E^KV`sqpf2FLGrXvDpou{QFOt^e-LU|HO#Bi$>yHo>Gsbw50i24BAI1$BLE01NPyEQ?8 zr=m$~Mt8s2*d#`=_h7T#>FhUZot=%R-Hx}byeR()-Poviy0-wXI(43oPvpAZjRZgO zp7@E6wzb>Q^vWHMT#4kuOPW5}B}Ar&o1r`CG#hOOa=)q%+{%5xqusAcwyZ~fl}{Y2 z0>{_-j40+}dgBvWIy$-;3xK)_vXo8xLm5hn$a3KD?C8yFmCChi(M0Y^Wx+Iv>JNAK zI^9+ydXXN^PKQY4qu$wQktJyw9qe`v+U>o4xCH3gMucMHeGsY+Gr9VAc)Uq)R@hBK zyVBVHp}FPky}%onH{;@t{(bzp4xhT={~{2B`QZXd35ZV?$;}=l{n3ymCg_DhOXu$S z{+jRU_s~tec$&rO#YqqSln(C4FV$$E!))GPmCjn#2l{Ztt4TN{y=+olbvkHeo<&5) zQ@&w+jxhf3-jP6~&k;^(GCS#eB|ZqR&bO>&dWbdT8)B_P8x|)=K~YNhVa`NSkO|@G zMD|3|&*o9%QJw$S){^$#_A|v(qX0OCC*@0kPE6^XLiqdV3N2+c`6i577Gj zwAM>yWV(Qf7nc(5CYbD&E1Es-KJRtiHAz)!efD~QS(VVX+u>> z!2PLHwfVVZdicfKWH_*yhxNuY znubTakEq<;Z8o~@6^r*inlr!cwYB`blm!&hGZA|3tMIy)`S!7|^ya@=}A zk8#I4-91Uw?$czFzIaV%Gsp9zydTX<>`<7CW$9O83@VzdEF_zx!UgVXO1}Jnrt#`A zUf0>->IvZY>Pla@-Rj&t-1()Qk7<@(tn@W`vz6hrQoXlvuYYv6fBW#(;jLSDj#dSs z-`=RKt<-8ORlCHE#HyR~BPPOpHqBBk4;iZ28OZd7TJV9|%F76(zj8OSwtVmlAOE4* zC2J_le&h@B%TL8ajH^`eRu(6$Qf5$+#4l*@6gWRgu#z?P(cF;*T^MJ9qh(h($QUIZG#O zHgs9}5Nbw;5abaqa7B09J=oq3$7GRlJmGlqPOJMU(U)qUF3^*j6Y2oL5(>5zf_u-zglCF^*(k*=qvm+FxP)GEY!e}> zV+`%57~PjqHiYGd6bB+$OyP({c++wh+#mZ)xB0+3p<2}E>#H;^egVdpY639I4t$Tc z-f28~5*?x4Mp3I7olSE7T3qtVqJcpuk-Kz;hbE!B7-bdL5G^&+h0Uj??Dmlzjr}G< z#)**be*FQgLw_{cC8z{=KIge3G>Hs1=~w%JgPitYgH-ps-RMZ#GK<2CCFjGbEKr_J zMEw+5GlJw3;W4c~KO6S#hbI8_BZ;k~u`TI?gG)==nm47o?J)FoH=4f`(J54J#!8Zwc)r_eVq4zwl8aZCkcI@o| zOolO(lL(i))7_6eg6r(|aR2^dwU7F+cx}<1w7;76Yd8V3(UpVAXn4q>AttA>HX^{& z%Gv2SYF9M^?^WyB&HPR=eW7k6(b zx1D@o{Z^xSzgEGljIc~A8*3HpTNVgF#^gBmx;e13{PV+~7SUj&VhjwKGmsBa=$H;O zx>A?-Cb8FV&ci@tPUF#Za?C}GxEJrXI^9?vZW{H*hr{Eu=~)&V6>U1_R`YWJ;Ap}O zlQ0m!F-}E>jo#_hfhFdUa3VXvxdseG&e4;Zm!5bAI@aM#kT%t)7dokubSUz zVJ+8kmVwL~mp+-q{l!I;(SXtPI35mk6?RwuBy_qNJ!WEPw)>GN9h9ZR7tflVXz#%T z!pVa;o6qP1*D(mTzKM`n9m8P7hzi9)^O0c8mt+jR?t~I&j|kGKyHDnGjYfYuJsqYo zGIVsv!nZMDvc|m;FIBz?f^7ycJwRa5GlHi>r)Tkvrz^MC*4~U{2CPR4VOQ{9B5?jn zbE~;-f6NXIi`68;Q`7X(+?iyJUJ>3sn2+egA;GG`&$StcDbPP;H4Z9<$W)jy#UI)1 zc_m#SFrP0fXLI`kXW^n+k)~JNv~u^Z&hC%<6)+zocOu=VN8zC8p{InREl6eu`-@8Z zacfJGQ?7AbpZ8C&s^bPRf}uEawDq@$)lDCT5_C>``2&o7!!N4PG$JL|+=-9F!| zRq*Vhv;HU=28u$*_>$3J+P8RH{=xb75j`Vq!?2Fi%J>8m8EHYwTKg)tv1jP~+)Q>`|1+`Cj@~-$bVu6=r^A zhAMb`QQv*0z~H)x>+qoU3a+nvg+#Al){Gs)_^|QG#%`+F@1w(NwAJYz#1F-IUEf%* zRx9^zMGYB~){b(!9&gs7ITKHS`_ZMQ5i^gFq{BqTT!?ygwU{?~1s94I{o@L5?;Mf^ zvD1ZyQ8N`S9(5ZJ<1YGS5f`hXe6)ck5Yv)5sJk$bt*wd&ljRvdXtg`>b_%rVZ{shp zHX{2g;}QC0Tp`jOb+#W>@P%c_nVh#Zl8sI(8gz{mrh4t_L6kK|Gre-@RHwo-w-Ok9 zmU~5P7P~jIsoCAJD{OYt{D=qxLWX|IBCSXVPPtf|7r4Voyf_(RN6B@LEzBL2aH81f zS45ljt%|~hxokx)Rcos=Leu^EOtRHtn0Qv^5F&GWETyE!A}C*SXLWXZCmBo?%8X<^ z3HZvJf(F(AnFbil50Cv9bA>I_b4^zUa6X+~hFb!^4_5U9Gh`}zLpno%VSYl^Ta~)* zpPcgTp%8G>J>u_3)UVaBM~nv+OO3~c8s{pz5)IFlHh4_*Rjn%nxaaW@P*0A}0;7K6#O^g_nuQtQ$V_4^?6ZM-3@a0JL{dp>H$v?<>QQ`Sr@h^IGx7nE2ZXUkm(kgZ z{~Hhrn=z8E#R^7THYExtJOm*0Hy?JFD`-b3H5#ptrN| z1SSYzo7AQNx9CB06N|YW^^Nhg0-m75u=g${-!WYV`5+^^UEmRGPt>+0A7W~Ov8dkd z?zc7%NTew(1n2QTsc&0%q05DpTrvk@O}W^>@rWQ6w_jAG0`AAxvkzWlP|{fifc4yT zLYS5UepW9G|6y{W7Z=l=?Fyufia2?dE%lEMmSo4{rj*}NZm5fKS2*5o26T36_p2+o z_qT4NGphIQtW;Ol(Hp_I=lfSKN&CVd=hZ;jl8NzDlI6ZW;ASrr$=Kg=jFz7)1$b3u*pPFLQ)i)q{IY@ABanHKVG}IesMj!h98B6H$lZ? zO**j&%|fwNY&K>GV=gf)x63bno!tRi7!BgXG?wKKsl#A}>$wpgRQy%eckbP}J-Cx@^w#g*UR%ZCnL~b9wcD-=dQ^s#jB_YetA~icbamXrZ4pW@ zq{V@U!9@{Tq*S^kpwo<6fwIeorH&(@pGC;&qQ@?iLr}{(`ACz+H=ylq#i*HOpjbic zr2|_nyys@}2n1uNj`RFlv`Y)1VsGmsCe}OCS*F|Pm*|5n6?DG7$X74tFt8>D3s=rL*h@*}9jAOTz=(#K};4MGKHqqFSIcnn0WNks+)UI(9FescwJ z5{V{yBlqcUdanVOk?76a$l>%RlHh3SKg#OIgtNaqIvZBk6++|5Niw90+RtaD7G*4`0|Z6fgu2bJv?mF_lDpKe@`QfMq=!`^9<&` zed|5XUm6PkUaO)$F&bB3Z432yv@PXJHzA0{~M0J|LvkwUs;fY(|>=;9aHOu<4WRg$8x4E6B4GGr zyS16nq@r1%i+K~94cEBMMRi(%@Rx6&&tInj951k9GDTnIAp84=*Ize#4kubCLUp$~oid0_ zoLGQhZzi+5C#V=i*c?85DSTT&&kn&g{8@*D5M5uZUEIeI8^gpc;j;(ubC1$(qhS!H zrfV@o1lL46!@*#b9!@VBSgO56AjctqReUgv3&s8|al^bPdE7V|znXtM~k<~$3SMY~r9e28SL zYf!4JG<4_&HeMzwKq8!u7~FWs5Sq0M&*%I$rZQC0W3=29v)hb>0Vg2;dMrMIS+W)6 zW^l+LCxfdJi*L9kC@41a=oVU88CGY+9_&TvNaA9IkLx>~WOIA3@tDBq0Vp|9qHc^M zj~kEBCG5&z&U(Z7jW-p?Quyg+EF17`MISLm(bhJ0*KUXMW^??s^dl^5ADu+F#wTsNq^U|g7${2bzfod;Vgz^x9{ z&4}_za`@F4kLW_eBo!kLkyHUK_oA>2LT+iaR>4wTY-QEx_uQrci1ViHD%zHg~6j1LOR1Md*nREjl+`UiyQ(C9;WQs0669d zZ*c>Gv*X_6lBJ{5#+~+ zN8p>yh}I}CROX)e@H*Rr>A`ggbTwXWB+yuxFgYGd13FE^FfAXHf=wf_;L@?MUd#d6!#xJQNgA_!da>@Nm0Wz2e=eYT#YcM}F%t|?dByzE?`twFVyiA- z0`^eJF}M~sJSl-z@N5h&@gfFVsvc}E-Y3kQ;yWSLMc*qL$fQx$5_BSio$n}K#vfqI z&A{T@lDhJyXJLCy3>-D!bMt{vPOJu)c(~>sqTboM#a$X$)VBmt?+i)n&89~Sd_q~= zLh=mQV31F_;i<8aB6x;@d^(dl=+cSGdKDJB;D%l z#XG6ot9X-@74diFpo2K=j|&J5WO(aIqvNl!cSmqL7QHxPp+R*pm;fb$^*Edo!zm}* z0w3E{)>p#JiF|AiC#Nu}5xfE^EYuRP4a_n{sB&C4#S{yGHu~M%;VInDv#X{*s-H0^-`l?|1qsk7Orf*G!OEp!)tiiBM7abM?yTH-;8(^JB|g90u^C&y;zSrRfq?gw zrWXxPSgAN{&ii$Z0`{NM3p8NSuiXy6ZGsAP_JOh1?k<6Z$spcGr=fEdmfCxPu^S1D ztf;A=A=CMB4^pX_5ruaZ_1B~Neyc9rwW6T80`Z-l^}JJ1f6?Z)(t$d9Z;CMB6k<`) zAsyC<;PS_f>U$yCjdeq^cX%>|C@@tru<7}tLNS5ah*exi%_9hb@f>Vzzj}*G2p)3b znNrV?{__?~98}t)cm!&wRRK6H1VGdJ-rCw)8Jv#V)}1yS270UeN+7lHdxd0R)jZk5 z#F6m_9D}^+_e}PZTq!n{!zEW_YZA*>Vq8rw2|q0fsDvYU@`ja6_qOj09Y zQAd%`!?+$|r9hvpT_84KL&ICiv!bci1Wh9^xX*^GXG5>_Rc=9K5#xviPYdabVa=e& z{L`Yvo(S;k&8U6=oe94LbW*6KNJgDb}{4(n#1$Wc{pEB4zU`A zBJpcMWIF5Y)m=w(VS};Eu3msDI;E;bgt?xJ>iEXy!*;y0)qPWtEhf7IVgs@oKT+`! z`o%+=vSIDe4sVFCeB~Ll&?py+4sD%*GO4WrMU@okjl9%2*l$JR>PFpzrXCD33pbfg zs~R4UIuy{1TjzqJdjD`f~nzvOoukMpFGa{&?sBM76=`iYgM4{cZn=`CP0e0N=yY; zNW3RudMrq1W;nw`ujDStQejrv*NymPi-E&FF0)n0CBtcwA&pZ$oTq&`v~R4ugpg)* z%0W8I@SVq_A+X7MZDrlAWRM1{y~9IdPCEbVg-x+^QoA4c@+#Uu_xcE{-3iM03!@YZ z0!R=3(#hfr9;JmW_wCnWdi7}GKH9gU&^fJA)RLs;&qQ?talu4NR>iA#x$A?Ag@Y( zl+jmA3*zKA@I(Boc9b%IV+cqx_eb&?2TMn#pUSweABXb2z4R%cg*YIp2|7&ifs}-q zBXQ+k#e};|8FLc{Wf_SB;q(c8C%&Fe;dPKX&dtN4i&@>JiI(Hi#i`j!+$E~3X&2-Q zo(+`D(Ma(2Je8_pIJpwHI(RogyE^=fht7 zx!yU9bAq87zOxyZ;sr5&pWAv|tG*TE@@s)8^8rhrgVpM4^$z|_U+xV-NNcHR-%Nt9 z_Boo%Ilf!(Z|Q3URUhW zb6G|(W~JO|HBeV3fmVfEg%z6}4NWf)61{rbeECyY>?28!gx5!{$%;Tr-7tQBI=?BO-x6JJBK|DO<(HSgof0Ftr?G;< zMPW&LgdJ8e2}9i8{BWyKCz#P7bwh!NwSi-`3rLSFF;WrbhXBh|ci6-O@Gv?!UeeCf ziV~IMh!C+v#Do>M$A|SmY-Fo^1V&$S#SW4jX5$sw!0KI*;+3hsyoCR-pdz&B``(F z7~1I`gkyN}$^PE<_9kTf{9J49#bQjz#MOMXvvt&|21X^rq;oH>)BsW1pUOmgk_hov zD4eHtlV{Ct;%s#Pt@3sgxbnt@$FQbe=XSW#eYg9l=0Eh0)XG@V!$i^hyqN6Sj|AtS3BQJss8F)zs7l8u0HAblcX*lF&&YP~-+}qo3!b`9}4!RHS(kLDP(|s?t*b!FL z5WooRD^L?IDhf$CIMh+E4kkY6j;xVS4h!WPwXwj3s*YK&8%KoCc5p-+-R-@HChh5V z3))9E{j!x=bZoSjV54zU8PS(w;oFn|4w65-WFO}7nuAsmyAcbp`0F}3aE{uqAc$sV zwJORypB9kmPd&xHws!YLnOD!$T~s3<$54WXx9Gj+sxwy}_m%=a5-AlokJNhfngSB8Cj0*kM@o6ueB`)!VH}ZPQQ|(aaBo68Ij*bQ= z>0MB}03(PBv#KA=I+mWIh?+Ns>j6H)mX(kbNE8LpW0T6r(^Kda2pga;pH3LUK?XzF zcW(5|A`j+{4}ka(Kw+^v10lp>JW8p`O`^18oG--*!Ypt=P;N@)5CEeGl`ZybIo#Br ztyu_)1COPo_YC6nZOfxe#t8`mAPzBikr_#p0q29h$VdC_9GScU;jleRq)dERAF@|; z;xs)4$P5=txO%d`>xJ-ogwV1)JXQEE2s&>D_{G8CFbpQ8&WDaAf$Hg8%HfG2haZll4myo_?T1l^6>?YzEd z7dn2Q#H+YbC-xDX;#l;4(wr{>m!J3tUaplGh{l6{jR?bu%+k&-c-SqYW4l)rvr{;* zBmXmTDhfn!Kp&r0f)@d2RcyCNZy5CGu5pPEHN)bL70N}|4H-ae@l%Lhbk zFIfpK%VAc(iRfOtTiv)*AxzT6|82|m=rBQXQ09%2V^!wsTLcB-?JiHvmGT~Hk2@*^ zA^;zTH>H5H==AK}$t9_I!&93E*dx`-Y<>h|-;At?vLaTbIqKoBRb&Gy^P|4+gB{8% zF~u~$R5)#&u)PTSMrn$x(OJ(vZ2);5k9*{a%qzYAjI^!y;OsYQk(mC+1k(DT05++5 zy-K~?5t>3UFTJRo+l=C)S!RH;FgN zq8}Z_dq96M20)HaP|aBeY*g za?d0JDNf)u%0^;MJIN(O1na;#*B9#GUK5%R-D0h zV1~(8M%>~s~5V2M)=W7voYw>TFr`4^dDi)ZmEF*X{ z+8xea`4psfUXOK_mx_%_OTdD_QE&7@)NL#cg?)*r}^@TS+enQj;hJz-KvG-_#GGIjI{TRSbw zdhbNaX0Qr!KFi1}ESYGlM1&wxflkva+)Q2vK{x?{1gQgT!|kqIqoixDFf2 z*AKJlh#)3cJZSBUZscCWGSk~267Mvdk4a{;*Uk^tH#>XVFxTP!%n34@ea?%tEuypZ zXtg;xU+2+M;TZAo?tF~y1$i;@m^JYYKFt`qJ{?jGcvW@o+f4uu24_byJ%Jd`fh?c4?4MQ6AQ z_#ErbDg5^xTX3-rdCDjA6+GqHSH{W#Ii0si!Hpn+J%YuuB+6#xT>{Wvgl7CXX0oj9`b}iCEb@HIO{>?LZ`y%OBe$ zD9j?4)C-m$-s4j@F^GMtFCd@zc6dhtO%GOZ^j)4ACHPK(Dr{2Wl)f4m^AFxmT2#Go zu{`4qTTYEAvj!}d^yuqp#-*k@bJjS6cmSf|!j({7i9BYeakMzh48BC}tE8>3WpZHz zGZR7q5o6Ysk}xopN_2~z&b5Tkx=9Kg}kLsu77 zTeP$T9oW(ziozV_uM}T+m1XQyi9vLTI@VMv;9I`h&`)OKVoFTExdWO2YZ5CuA$3D( z8xVW#CJ5lDVKAKw3#eEf-nq(qyykc)?IHeMc$(4b1ip&fqHYU#Wr1+kldatxv2^Gr zAk;a<8^XCAg!?wI0ObslgHF>9qk3Jb5c`X~QH3#h5p_y?Pb&!|5gDm{Mt7$7F8SN0Os{3kK5bben$NVm6nK3Wu{ay zfG?2^Di&jL^GBI|gxgA9M#jN_JkL*99j@7@A=q@J(|wSB|*h0!9QL4@llG5Hzfm8Rd~2b|!O= znoe(lY3gHu(X?8e&z3Ql2g3-J!|pAYB;ZrNRSr|Ag2?ME)-VYdm>E}KH>tkFG6tDO z3v*a(ov45XK^RCJ1e%JR6CVuFxI2ebzd$c8Nn{#S88M4ClCl0)bf09(IN(s04fS@^ zi*ibz;w!jb=9bQ23NfJ}U&$)zIAhJ55LVfsmpJo}2aq-;3q8-vkpGAiHVJwk6}-xS zmNUWWu!SeExQ5t_InP+Y**PsmO`DzO*u!G{@CDwSXV>EQ^+REX^{Ao(=01BsYznc| zF=7a}W4tgF5J6CQ3~0{5z3aKjgY;N+dDJL#`nkOdDbR2EpH89!{o*!+7dblWukxQe zN%q$86cd&*m(kiqts1Sb3v=!m?CdS1cUrqh()(mt27)8ww65%1vXQ}tG~@J})Oz!g zak7Akv|0@&Dt(6JEK`2iGr-Bago1DneGr1)bFiqr^`kPg-iUs}Nh8HUVEhwLnwWCqj`nN>|aGbI&No*s$-V;4C` z$FLv=96JuL)|7v0;JTQeRgS((YBKs6@m4rcbBL*6R7!J^+Kc7cI9Nz^AvEFRaFu$M zl|$FLM0ed(IE?S%y*3rGP_R3DTL;@zg~%2ai3MhTnXKz5BQ`>Kf%Bf(!*m_kkS)r5 zu;naqM&4#uqsGB|WU#vqmV6~x$D9fp;kf(*N1D56>fd;&tP9CSrdcDC@X z=lxsezT*O>9rte9l|exp;P=J`Bz`&kSZDDMdKhOO<9!)5@SqcyNv}-v0{?+H>iu$e z45UU-&z3v@tJpxE8zWn|=KG-*B%DhZJ&naDH3!MkACLjV5u3b(gWhXWZr%=2VgXEY z`lIpFePg^wmhrpusDngu0Hj+m7%&wAC-|Uz5`ffTESG^Gf2drwp*M5o7&eIr2s>&~CworgL6>Xg!;p0y9`Ffv zF^QLt_yNgTdkD-FzG;piNzy>N6+(~XpB^2$;t#I$!@Z5zSzgHLs9)F1dm4t?*nvJvcW`T-$& znyMeR3e;$${0IJ@AxHRZ*f1xgY(UvFs@{7+NcF1TOh_c*ODbQiRmjs9<@IzHc(L@K zbZe zDGV!LyWa$NWu;~yu{#;rn2lW&)&3Pinr*jIr@S3@|>2G56>vE+*eIuj$5JtP7a2vPm%Eg zv*IH*^z5e(N^l8$A3~I$aju-FdFRNDsQd+T6Yw0?$JJT^E_s;>1M8|Tuu`qAMGuKP za$s%c9+~eP--sZ(_b#%@KoJ*j6nd^b^Nz>3;#;gFW=CnRC4Ga}kOzMm&o2N>xKhZW_YZz8=BtnhPWO?f7UyrH? zLo#H=2@x!5Ws18$sEFEnpz5!1HgwNwGIW=TUlwwXo&6usAnO1RVvq`AFOb=z1bON1 z{<+uQZ7VgmLIqnJ>U24)=6hPJZR1%-D_gaUMoq7xBqeUuFm$Yg7Mx7P1?WL{riUIj+x>pQUeQkhHC6o!lApKfd zaMxB6AOi|FCSQo&_~gs@lYx=#Ws!&pxFNV(cyCAXCttqt$!`GlZFV_bSLxZiK0`ot zyQ!dVKkkO7az_KIrrLgO~=qZs~A1P z!C)exwamc2dk<)gBcOiN?s3W1QmYTe%E>&ag{zWkzgsqyt1GI5C1IaMzS2DL$?*bC zu@@wi;u8wIO+_Sod=PClpo=OcQ~59`r3yBM%g-nu8y;7v)fKQT|89b{^wB^YK^0|u z%OW!`4zcc)<}O@|32%E2c(cI)QVC^t*49U(i%8oR%SE=JUQwG=fR&QqT|Lsw!DiSP z4hS}Kq-D`>HDRmLfsX=5!a0Jnh3;EtCXb&|6B^j%VKa)~$^%^2wNqm5jpbdUZ~m zTc0Rd>Ob8JpK9yt;#fIWYeOv%;-R58OUP`DToEZNmrYRpYyd`k+CwumoEfdg5J!Y zZuckpKYhVtgNxyixNxIVW9$JAS(9Fs4>-uC`E?dh<#jBot7T;82cS#~v>==1A#U&9 zsPmYlnkaZgCUkU2uhq+4MFk#BgPTcBhKWQ?b#2WU7qV2bTns(rWzHtKf0bi-O9#&< zszB}0JpbxZW2X(4Z1gtZX1pBf$IvfG0n1OaCOBU$e5E3<=G^Ig1nzki`werF{sqP? zGi4oCms`Ntae&r9f)v3}-f;@^1=0+nxS4Z=D%yCLa;sLc)0slBQ<|cZz)`S#TgSu_ zttQWJSG?VPScXY3hez8O=I|L_On#DMN|nD7Wya_N_|kHqbRC2aFaxSNn)O-=l945z zbESmFxj&Q{545Jbrh2IVeHRrB?uPxL4Dkz)Eg@WPP#j@yWMj}(rZ=u!DNTO2yVVh- zVpGP-A>n#3tj-C0Vr(GG^d?VyHkKhW0&8`^mqT|A`3k2T9=3BZollnV626;_J1*(i znc5yrt27^%d~iGHYMp|Pm;Q3TK{&u2Dy{nKF4Q+$twytaPfgvWVyCsc*!fp#qFy~h z>C+|n4TCUHbn}9zRV#PunieBdte8+)tWucJwGEwOP1?g zwvuFcknKuVS42g)m{)B~7gt%-RX+^^=i=Ua)hpwxXX-1ooD3^N=`4nmMGpLmLj~UZ zl+9TJ%5viXC@e?xQZ_jr<+RebX}3dDl?+0fWf)@CW(SzCIbg4Ggn$9?C$)eyC+H!xWA6x*$k$<_tq%DU+6QCHfKp>+WgH=9 zBT#K&TrD%Ji9>YAShDRk*xP7tTUV(MUac?63locf;PxCbN|yun@&cVoL^^1OJ>eo* z_!6AV33fl?HFfJJ$UK^SKmK%SZhR(;&4mX5vkOEVgR>{cPo7*N{5*M@03G5GhW7yX zF;-TjeV}>R$&e6%3<+O4)ahV`0N2>%$eO3G;qFW8(BEYv0>vuLU{^8QY>V^QZ^IFb z5Y06q z-rb<^UUmJ}#yzT*-de$qB-*9w?|A@QW?2R&^AKU{jM1>_ye;&}#V1JTJ{jM5`Jp$FHxreK1BWKd z{R8)}y?o>AuRvPl^s|Em2tN%~Aw9`8Io@9{kQi?3+P;crl8Agica+WBH*U?VrBWx1 zzwYfu+bBd!U}1pR5Y0M`Ftud4?bZQuLTN+E1XKTkY?UAQ3belBY2hmWoHA%h7C25| zAPX(weQqmEYj--Ao6alJHmiQ8J+*-VtwL+KdoDT*i}P?E(~MDi-${b9^##LFQr`O5 z079cZD$&=O26>`=WV<{%sPgsTE)H|sYRkZ`wnDXEVT-Q@k%BVH`kGEOf1A`Q&_5(* z!-dpu7zKx+dpAIv>N8gwOPhn`{5~%zJz8y|k!`GuK1@jfi^;%jyA0jzf;7H+(W^wv zp*bXp!ea6+*sN&Cu4pDeb9`IsLK}8@sP;AQ;QdQBKI|Q<;J{Lah4-q8>Tv1D_*6s^ zUVe*s9ndCi%7y~17O{AxoNJJyi3`nmgz*X*Yjrh^+-Feu;LUP{Tebz4aJquM3NsBLD%STEI97N# z-xm8=aY~*ZY-B^*$LiG!h1RO7g)mt`o9^7#P$5HeUZp|GKdY@(YwkWqX{;Hc6MxK7 zj;(0dQc{0|^{g#796?ef8QV31s&s)U3DESY_3%;jBR37UW#grNfw#M&g*~VrY)Bnwk7K_=u@BpFLCf1v-CiSI7EGaP#jvy`XF4ad69&34Wo}Gu4D*-T0b=Ie zz-$|`O!H%uWWJC4V+6_mG-cC0tCmY>0z}n(SL_)XJ7Py#VW(h17HF(Dbp*t2Jz^Vy zs1{Z4C=DxGMg;{}E5P9(IJqT+d(yt9AY(2>pAetY8{GkmEs}6bDn@}(>fH=4cg~1B zyJ%*3rG@DMQ!WBE!V?x@5$23SbrMuu=CUHC7LUMUbP(wX#m}@81e9k{2Cv8^N|#(X zs>ZO5fcdSZETw?dhS;^7_Ph=&3^$(Xz5k`uTS1yLv|}WLkS3HJFMa2bcnyZVXhE2D zHvQSefLrIsm3OtmnNuZ0>(0Cf?G|||iytA&jW9oPKJsu&87Z}*rq5p`G@jQ=oW`&$ z#;i$4mGo`X69*T3zFg9o?fxAnpCudaALR_Vr;KJUE zF?m<_xwQedW4Gl3ycHTNXMpY86jdl^uWDcon3ZASP+8UN#Pb#~+u3hh#8;++iDIRh z>JkC5;>h|;Roj{Dy>d&}natU+55$FkfyzYR0&z)E0No4x0`j&pvITHjF1;Cb+dEV# za~t}_uZ2|WttDtQ2h&7cgJIz|jM5Mz5GocnquSX?h@Dv>PHjDF+qT=v8=l92KbUAi z?hn$_7^vBWFS7x!!)ON$=rW;fW2Wq|cP!QD$h71MLl*&Zayw>(!&b;ja}<`9`JrAQ zF;6UB0O0?^;@&}-5a~XnCK%BbKdiY&U4X69!+?Xq?~A*fEV2p&(N#U@I2()pkHP1%hH<?M&-)r6=Yvvo(7A^V2O1?>s%lXMW&BH33tgiy( zLikJO-v#VCkMR`e1!AK+*B|d|t2cj>r5*1la+tq{jqkO!ou@-sifz7=usj$1jpbsG zLZ}#lQfBXK^EH=XKI7SWV@_`L(w6~{bX)uA>yAtg+8!mlLI5=_s&;2zZ$VXvbLj)x@%^GQ1_MATj5J zK-&k~nPM5`QNkys4+xDIzpWE(fdW*a$n8C5yC+qq>prq$fw|}AXt6I0BBQE;V)l6U zch5I=H*iPo^;sAppfHeZ||;u|6t9G zjUCsaJl{5yM*Ckdu;1w0n%`o`Y(Ar$*m3E%OC|FT@f52|lW*x%leW5x>2RGF7=Yi1 zR=<|mr_wvF{^K{OZ>~N?t~T}xKbgEoX`kKbzfn+}BRDT%WX`72tGsdlrLRp66tG-W zPvC%XF=n{i+g+F#xS24i_pFcS0Wb#%aDj|tL2nKhQ{b&QSm0$#rj@N!zwQSo!|BdW6H*)~XeKpk$5vWp5DPh#QBk=dGb;t!riX#{=zK*{0@^ z7jKQaty)(1>oySzM9EH9u$vX%>j-i~i`o?S)(BcIWC>^5SJgo%A?sK0h>eiagr)y! ziN2!(#cMZoU%LX2VO#@u$yILcQod4U=o-{Ch7U{q6=^wCuW}BEn-0g6k?|G-)kams zsI+rCn}+Xpw55EszZtcS*xLm%P>*2Qkkeq;SNuatY50-o(?ZSSYV|X|6y0tM8g-|> z?Ey5mgxSGeo49As=OvKKD3uF-5;~IQfzHCJ)<&w-t(_c2tHDCC6ZHehsuMSN+EMp* z&P;S0xPzZ1s2sk|1GkNY=w+yXix&4(4$EAeT*Kvtgc>`<%RIxYa4a7ZqPxwSHJ>FXHP z>FSdx+iRvH+MT=%X9%x%m{!Qm^#)IvJk;HhWh8jYfoWI{-ZYRi&J!%24;$3DZANP_ z+^CoJheL0BMdCOb8=xRN21`=8U^oXvv&h0_Cwk-WxAO0d8|4OFS3Z*fYxmLSXyMo;c_%g_Afw% z9j7_`3l0A+HsGQlyE$|>$C=^m37HDbLaTAuWaQ_;3Wv^`!E>Mdz5ItX)?aBZS*at zmaRhMMCFLTR|9Bu|?>oTnggaojf}EBY zX(84DJ8U;HWBWN^L~l+x?9$x|M1)5Yu@EE9Qr)$=40Cqsa@9yCmB^;SH{JSw8v!Cf zk+2_tjT4<>3=bEUWh-&e(Uj`%Z`*IyZ;^J}hmuOht;Ek1NtJ?YsJaFgLwKl_spFyg z%|n5iJOl4QTZw-fM>+k>D=j1yU~w#ig40F4lYn8b8(t_CX%EB$4_`~!#E-DC;>MMZ zl@ii<0tnz@AEz$8{VF+cr`~Q8Ys{OfYWb`B;iGe&0~0Vfe-kW4pJ5_1%_Yi75>U@-_^B^mAlZ;LLhQ^=Wgj3k2_VYm$1jko-W9^ev|PsXU^|rV>My&(ry0W zm4a?m2CDR@uIjHMDk>InKBH;^cpHY!;_}>mc0imakG_GFN5oQw71quxxw)mTIooM~7qWFroJdfmP_x;|oRsGGjfiwS529XN20hUR`}yo>~U7=RD!#Ro7}8OWRUMElq2(7aVb$jXqejEL1biWf9}9*``?JpDbQL zalF>PM1rxy2}P6fwP2MxN|k>XS2*ss=00Bh+Wj+LM%~f5W5TWAl#Un#qkPD#ij*vd za>SAj{X_>{%^LPhv?V^+&6q!ZPde(y61*u>8tC!t$e+@dnNo7Ti~ba>qo!!)SO}R6 zZMVmUv-NHWbv^@5&v)o3&6k_(!c!hN|1{U&@J9KB2yknDpcrv~;p>qqx%;Z=Tr3fu8qv_Mk4hx{Ox?+WtqZp+p81SDcSCga7KA&mkR zol12$XGovTDQ?U%a_QyIQlMVDSa5aK6_;{QrQgsS6ar0XV5+C{bp`nBiku=|;-i>DX&U1O)|Z&jmqU?|=*rNMOhm7PBP7JLC?b+75NmdR!& ze{#FkXi@EUkKfOVnfUsZEiI$Lc0v>rlqGDuGQm`V2o?o&%8X=}#B1PMP<=WsR7|Z^ zr-*1M^hDGG4GH$uDSE*8^SYT~SjyoMcExW4skDGlnUw2U3<0_cMqJX8c95!>Ay9x% z4m=VPRuHVnN5fF~LF)LEy%@==DSb)uZ1O_&<7TI_seahick_GFDA}~xjXkI%AGqRo z|DyskuaI;@AvkRzz*>3s(vK2hx-pkM}3eV7+{B&5N6nP8el1?T@~^z zbnwwgH8`Agy0rH*1Yn=*K(&-TEEvOauIJkZAdOsFr@=Yox~ei!f5HCHdc)&Ebx3-pkBl%67zX9ZYTxzLL)U3O5R>J-3Uk2EAHaC_9w|a!8YHJ?l+fPl*GXVZwPzqng9DI#~co z5uYrOGR`23IGpO#yh6SPGx74iXbFDlF7VO zf$eT2FkaLlg<@POHcL}g_p1V&Xwau1)N=Y<4im5l71$1sXDaMBolM8mv#fKOfkvKF zJJkp)m7e|-IO#o1tL3k(SJ^h_>#(EZ98n6#I!HD+qmW|CDWXbtRrJK+1y{Yyd$pr- zz1KXe6WvkH>y&U)mNno6vLtNx8#@p0zDJ%!m!h5oB1?|D<4bE@2UmuiPPUm8Na;vJ zSe`>9q3FF=DqBJblavMoH}>INJQ9&*ZE{n{9!qbWULO#Ca7xtzEEl;_bL?7>1LF6r zHv3=@yM=(3Q6j72iE`R%Y3qPJ%!LAD@#&K}d}BPAJu8zUP}dQWUMW}K8ej+*qQk>^ zjU@nwuO#9e4YNfp1!Essh2L}zma`|@N(JzAhkPx#{f8B~vhS@va&xN$^(B-U-nk0= z*rs+K{fQv|YMh$SsMkzskfcp^%HCGg91JnN{Qeep^E~U)-7f#r(lOmJC4_7#B{Ldm zgMgs#WSWT8jD+>-&?NTCdF=u7FY29Yzv7&N)SG;gLJd|bVsIkOW*JUy*sUOPabtvJ zX?+LuW~Wxdd>ndFk+)hpDoiL?25+lsYaf2~vACw@#Y1jV^a&$W1}9i-AsfRF%L~quIoZ_sU=y1?R%W8Oew{7;R=;GI|qrw=GdS_uca(GY<2T&IKm_gRoifW9CqX+es%-e zk;g`yX&E*PaIRwea`O_P9{*|LL@XP4+SZ9)?n3z{)TrUcR>3{7JOb$_fTgp8eB8z9 zF+nbKYkBWgH~Aenw8GBQ>10&}6SBqXQSbTc$6uUW!m(z*y~?mcZWJb6Wel_c8%MWt z2oS@7^mcoz@?65+irrc^-us>@Zh0`e&=ocFa{W>OAtp+MXawX+;ss?JHcW!xg&!bc z)f-t}Y8Y*4CqK|(iwLLN1si$lT>%-r7tq4?d?Uapn~0v5^oVd%;A&X5py6t5xwjrK z5?XgC9|q_jq> z{fOECLMlx57%1~Pm24t5N6akq{>VPA)~SQ)t|>uQhp z#>HUQD`vW11fcQ3;XPG0m+m#ioIVT zvk?listB*C`<7RE1H&*14>(4N=%c`*{(LoA&hd!8(szod1^ZODmc0zxSh^6UyS?42 zm%bFuDZr6DJIpWd>H<@E3ZRf4o~?kAv0wzK*taf1=C>4}5S3Gr=#t%0n#v%5&P;5mAn_Z|h0(2fJk?#pVI{Nuehnzm+usEVnv%bImOpq3w z9hIbLHukA;=C{Eipdi%6Ha-^tUmPKz?J?!bRsWv|x_R$d?MeTIc0*RdAVV)ePm-gN zHl?SmxLjJ7#}^_Ney0FB&^!cTQcTxoeaE;&O;YNBw}1h+TRY%vZZ}Nia`bTrEcsoD z*-WOyWaE8pD85?huGVXWa~Oc}evTyYGe!`p(Jd@Bbht85@)>0EBfsDMA3PrkpF z?_q?ofi$e3k=ag8wR$=`xFw8Ay_`(IKSSAUe!`AABk{Eu?X zDb}Rj*EPe@?uyuV=>viqWf-qR?q% zka!RUx5%ethvdd!rWWo}3Bt+^H$#BT8(*gDxFzpk8Mflou2bX-j!U4FQ^DFLd|(5D z-D_+mgJeVp$M7jmH!W_IrqFhJmO(VPOr6Y&962bbL_>-S3=EI_j93Hnz@`4<*#k25 zM`uJM-TW9#)1{OXz$Qe3ygVBo|1M_8GY0j%vL z3YdXWku+hsmGfh=$)P7$>foFNQg$w;IKG|fs0p0Pn+<1XdB;UHwQPPaeG=y{WpElx zNdc0QB+Ho05@%xHn|+R965~v;x(ab8lRWMz5g>nG!A>f?FNU~mDHT)0nykHwsUK*KYWBpEt z{Gc{IXF~|Esd;}RYHc;qWMECmY7$Q|sN2MXUyv=K8f|nE$k);~n$9S;Ei^s25o+fk zhvE{b1{=nMB1*Q>t$f;#RypHxam>*Nx#-&CR*avB26Pi3DUm1TCW>x4W4*O=pC}yVA5&9tFzij-H%>0qBJEi$<{Hfs z45mhCE=XgzZB@F|+GA%B>UCrP`dMc?B-E-ErK<)?QohdwbTEVDsLK}MxE&1lk)<)d zn%7A3uG35^2XDM>kX<74Y^k8Y-LO|AFDh~jPON?Xw2gxNypX~eA|FZ$qfp1bryXty zfGem0#xHY;WkRMOalc?97^lgc2*ex8d1-HApJpgO)4L^z0-Eb7X_4V=D=u?vup%E# zJM3Yf<%WwZHDF8!)6%$W=!=S|2bJ0LXncI+71^}EQ1Y7(QOI!>N`yr*H_#>!>%2U= zAJ6;o+i%BfCX();(_+*WTlH`U=v7Y4(gD6=KkMdf<~6vtN-ls{R}Zad4R3wrpjo;c z7Cc8O3!yaZrU`J@#bXjM#;wQHJ9@xt;7RDb17A_B{-7mD$7LvPD$xzP>I$Rda5vjD zvqQX2`)QV?o2)Wcx!<-W#IidFn^>#O5+^HuI-VJN9DTZ}dO5{5Fd5vlcYtQC&)9dt z2EEre-cL~Qxt@-Y{CV7KtG?Te@iXe^3BVO6mZsqr0&*1_9c=KU2B*pj@oW$j9@m&uNj6?5B~x-g zMTAMM%3zhY%kQ|1z+qj2!0or5Q2W>*I7>hbX^W2u6WD?W84UYY%WDz|gbk#E`Nq13 z_+&-KA_;-~j{;W%J_uR;%cNw8mfr0AdO@y`DhM>gdkX^j6z}co+$nPCupg@g(xN>&+%Qsf2Q^-j!Wiv(;4YLy_9EKNi z)hImvBLy`54YQs4j;Y2QYOJvyg{R1UxdP8)_HWedW z4O0LcS|MH-j7I{mUbBV3fN3G3QH#vD{mxdj`ABY*&w>N3a9api2f17~wT&|p;>0wq z7$sA^IexXavR*KkzDTrM*e>V)@DD2n0Vr)KmhM&T2_U4MQyTlv+TA^jG2B2%crKDi zy(?UfiLQG4I&oT=3_ih4q$KQhpY8Sp_iV4*eCp9Br3~CvI`I>wnz`Dp-r%vAs=-*` zusoLlDSLN3^f=MI7C8TIJoy$6cf{pdBa_BOS(0CtW3DmR&&HHzq;D`(9g7JTTK zTLR-Pm5qu3Ml3f;_%=|^4V7f&zhb)sd$@oR%kA^GGWHg`i^KHP&Yip$WR6p|668&$ zeKRhFl&M>*wF2&<&E9WbVsx=Tff!xTg0Rr@`c(q<9T}DElyf9Gd4seALTO%H#Enge zcWbckM|*Q*iz38+BXC!Wu+T!GH^P<&Dof-cH`~F@&Ex_*yAy#A%5E5=2ecuIy{zqk z(6KovSC}c8Qjpk<_DIgis{N#Q3?hkC_D5jZykDbw_i-&InS zRvG+|vc)zt6dhhFP!%vf!;75C3x^!V6FP&WP=V%oN6x*E7YAcP;WX5l6Bhaoz8V%b zjX`^8djK;$-G%DtB6eO_nJ_zY1PF~`BpOl?16E<`#6U{Z9VNu1#C94)*N^fgRPgpS z!9A%?DLv)wI7{#m>1!vN+t`Bv2K5MW=_GO17%XI#!D1fIFaBJ}<`|+cg(?}k8O~(r zVqcTbjx(A*U4=wP7s+=b+%lMje_=I5@-`hCEuSKo^Xd#{l&kJsZk^rPbx3ig2Wo*! zdbSZH*j3L#EeBL{m}H&I^Mm9ym+&kcbvy&+6Xk#!rHnA3F>MJt9}*}XRBx|E?;?!o ziDI`K-jyQ$!V_`=nDeY3158Ond8ENuV3sVSq$Nlwd;5gLc6Zw6wP?$DU6S~x-Xm&!8uq%6mb}_1J#zKQIBEI-y*c(-RA--S{GEAyj<*06IuW3@T!`h$> z1~71lKjppdZo7gj_JU%Sf4# zX(HQ`K$N$D=BUc#5||Z>5=NFx2FGah3KI@Nm}Yx0Le%Y+aaioL@%TbFLY@tK77Z}0 zD_~H<0&@bGzEJ~&$+%)!hH{tqVzQffLMa{6PF4Q=AX}Un@^&S$vC`|$PRHegr-5q z5_>S4ZI*x5=iYYno! zxm6S6QEnfF9O0F?l#i#lmP&77>4J;-CT<7Jo!9wv8y7o`P5gbv-Wbrlyoal&0Xyp8 z{?#wHrP8M&2>KQfgL@}UPs5+shtfj>usyaTgD^9qVMk8xh+{Jyo;-kG3S?QmCjM>PdxCi1d# zU)K88x4v~b;gWiee)j-Qh2>KQ2TvoUO2&+hPaeBc7|C{z7p%m9)h?w{sldIb1h#mC z4SX?^6Hp}2)a9bHGNK{5z{T@_mH&o$QcIZhqQZ4%-RoxyYbzy{#A<9ifxCEo4ag~|A8LIXAgaTvcCu+m>+XTK4KJ%&{SF%lXs&DuN2*lFH6NL%%)S`o9O%(qq^{)8|(qHG4{Tv;CS*oU9>_X9{^ZMD!>b{6uzeAMXa^U~9g8(`9=Q2Cd zFiS#TNy^>br+uIDu)rRipK)XAd0&>UBUa18{LAMqRw!6c*t%hB8L`rbEI|f4Q*Y0J zGE71Du&nIej{{}vEXzb$Cf9G?l5c;mSUORSfRZ#8%Klq&Fsr^TPOB9*C_n!B&W7qo z`p*`Ua7U8&O6aWJj=_9SpOAM)sK)bu>Vjwm0|r>j{JMmG+Lw4mcSC~GNy8?OW0Dta z7H&LnZ9and=nd}eJfBeb@v}ulpMtffI}wGG`SuDq?wB{~d)*gE^;F3;kWu5+RE5q7 zzK0CFG8))+*pm=FxK&-4&g&PZc?Y|g z?vywj>}&?+7?{lGNEvMvpZB``eUKTz8fPM@1W#wXO%=f}>R6ZYH8?pohSi>D_m}J5YF~sD~ z$PQy(HOx@h()xi;W!AqAl{Q%ZqCNIIY<1aqwJR}-2H+AIl1k-jajDhXBeXCd z7N?xPIOPo32_^560RcV$S0X8D@XScG5LSlp_NB~$c_v-Z>&C-@EuT4!-&k0fxI4v* zEiJ({X?6yL+u#N}vJ#uosi3dWfx=^gfg2-P|Hb{;7mj66SB3~Ds6k%vD!@^g;(!VH zoJDjVV;mk^z4M%Orr~2z*7?Ic7C4wnt%?^)&-uiGmCgx#X*1TY0pPQzE-+`)8IUb)WH`f_O#QXy_lzYuG&q(BZo=}r&&`3 zyXZ%v%3yfTuCVKP5kkRYt!U_+d`29@5K$CReNNL38E_7k35LTlOo@}Vt>|)CrUDm2 ztXEMYfIj?!L1M1as}ge!C!LW1a<;k0k**qT=Ec<@?F?8K4?7v5K~3&jTp7 z!s!b8MalGQ0tgCD$#{pOiEAn3j+Ru`hm+CrxsZsOvgl)VkwHWrD9ahWTU?gFlWgVD z9LSg~-KPz>Xa0gUz%BiBf`?xX5tlQjMXB8u~**l^iQSuP&wg7GDfPW)!kl z;N}o=Irrm-8Npk}X{96C1bDdi0uJQzx>qO{DKy2syKc zWmlEV1JGngyn0d^=8-$c%u*P8eqWCH8y=?UH(K!!_yYW)VF~S40S(?_)o>bt^bu~2 zAxn3uP%Wl2Uq|aw^laqr6yoxIg;*w~!T}n8xs^$|D|M(>b7qD0dBS&RDcKXG10~jkH;~s%mlTakJf}2Kn=QCZtw!=hp@w7@K|!5XW|)8!#9Y% zDhVbYF+*QU#bg;UL9dP+1*$-+Uo%|J$%^C}BqLX(C>Tkg8CSq2#w^?*D`5uIdqUqH z8IZ^dVg$CLW)%_Iizq8$P{Y-_<2OpF>W)$P%CxW{v4Wh{;Az{@ZS^Y?o4>jids?^E zvA~9PYMkr68WRkC^I7klS$~K)*!BcXl$vNi?m6jy*c-ezIptb|m{1%A6CS58T3X5Z zBr}pP6vMNUqRYkU3Gwa>z7#jhE6dFgs8?!+X&iO4WXZO5bIz}VF&Sk`0Ysm$s3)B_ z=%V7^?>+DCCLqkE>y@$DJGnGwQ=aTp$CNJU`I_{B+xVMs5Ib1s#ZG{4vMNp(Q-3=b zp0$g0_G>Bk96eoDC}*{JLG!(*kC(h`2~b;G3Af5Hnc-Sno&8?9J$^Sn3uvqTat;>g zBaMGmw&)-x_TTC4mCu%zmi*vqJC6`7u%}Nxag0e8(mN7e?r7LZcqCo^>fBV9ShXQ> zf@lU~)Y`s|OKC>Tc-*Xju0BVhVH(2wu*uFyS3p=kt}T`sJIpg1Y<8aOLOw|o)?&ms zJFJMQDb27Epl~C=g92I}Z0s8`+2__295?#HXnF+i$4bq2TlCrs(+O1^-hU=$l`)(3 zJT{%(v5z&>1oLBRNjRBHe6p;rm|HIl1dOCQFDs=HZ!E8>Hh9xieSNZceUfT{w3y?A zy9%~y2|8E?_m>}AHt6nzjauOY4_lyCO9W9J@d)BwqJWa0wl0$MgqOu`N zrrb+r#dxN)71D&ZD&eI{f9>%m622qL1#FyFQ{Nw<3vp3!ql)kX{cP4X^Y^3?pW&&B z#HIsF`=7}#O1paR^|!^%MWaEe`wSz=$%h`f@CZwt)7Cq`x|B_q>K+@TP>;G^9_;TH z{TH3?rrnL;FtD2f$su@kX1B@}kJIBV*J4!W!Zcg$Zr?-R<{{~uWJMHJQUCM^QtFTO zrjuko3%Pukv}`My%;@nR4f;hn&lj)3Pbk~j-duU~X!%(U6Z>?_Cs39%S$aDw36C%^ z+9o-iAW4rUp7nbAKy{V7(X}Uq5Gui?l>uauLsdkPeaRxabZfQzVwQ_|#{JHXd4$-& zUhfsxu$>WN3`?vzeKWaO@!@L53CG~Vm_Std^?k;R)<#oD$)vR6X81<%dEpfS{vK8Z z)C|sATj$OEgv4=6bIf!>zVZU9`5t6Z;(}>t+k{3?6k%9osT89Od&5w!m zLRRbQ%EIcRVK#U!(8?}c$XYdghl`J%JzaY8c=_>o`51e8ZRyF%+R-t#%JSOi$+IVq zM^DCUhpSH?FY!BL&@UPvz)p8Z{mjF6_;Fsd?$3m?(DoFzDnI^BNxa#x_KR|Fh8Kea zMLp9)fQs4;+Z{DVly*?4fjg&G-4nZ1_zl2IwZql4M^i{jI`VO3?lO`S!|eA3D61zt zJ~sy5-^&Ihf{rs(QYx(Rl-fmn%zC=Ud5R}3yeA6gnWLux@CdTUa2Qww%tIA?B zid90E-tw~D4x6Por3$oVU0)NiH^j}LKV6!I%u&UEz1XF9?2}u$zIBAtuww+V44=bW zoPmHII^Zdqj{0;R{ge@9wx4oK*dmQMh4|1FKUD*tTVx;(tEzm!Ow z!K9YGDJB@siQLZAp5{o)rOuhgv<84J%W?f4@8@Nw9l2dCrFLmmp!>dL5tZEA-9$n2 zhi>PlJ`iImUKr`Qc289{tIf(;`is=P!#98;yN0`2{)ndOYtmJ#8!$Kv>vj-mpE6R- z2QZin(V$53L$ShO969hA@SCrz(Car_FR8?5yXO?cdV$Xc8?f{1_NLPVH(wN=!;Fh1 z#QM}fsjtsGnrbPi&fwmBpR!sZB_*WxrTo9!lp6_GK%FAtWb zGbZUR2jaANS5-M*4YszM&qEZ<3q<^@%*mN$-2Vl2xg`@qXv?GlK7RJ~AAwUV2xG8# zNtpmfF9$}c`X{GtkA5DsNxCOY}WU~oi4crf?^!_-uw zaLPC{=qAPJXv6u(E`SRe`yWh53FFG%acC*=DFU1HO9=~~TeTt%DoPE} z)oj3EQ9ST#^d<`|Zv4oDUkIQaX6Gh z9)PM4ICHHPQW^~m3X)zF3OqUGOqs!sf3CZb6q5+?%1^ceD2%~4RB6*=IO#1 zJ#(9QSw9e+xE$PwAgSJr-!Ur<-j>Z%Du}6jQZG72lWOpIg?XgOt&*CJMh-8s|IHqz zJ5?WP0(eefcmZj`*&b?LtzD4^J36+hH;F=RQ1`ubbN}oH7D47croeBcdbUCdSCMsSnC7#Dm?aJ7@_Kjf`1Ejd zXI0!2_}S5CnzNo={Mb2@qvH4&$tYy{KGnfXF5uD)f`|c-nB1K(S4=w6WOLY*=>8Zu z?0d5bvCHvhXx+$~W$cH`$@*6zaaLXqdqY`G4%THXmN)BOZ=x(FKv^oNSqo2{Tyv_B zJbvmkF39fmHZzgD@C#s3oK%brY%hVQK%vTlwOLw&%K3g_eQ+eVpTNgEu~E{#a0eYL zB|rzn1m)8RCpDG2$~!AQ;7o|j2@6sERSA6wE6WdLu@-|bbdy>p=D^CTpe8`|CDDE! zVtihmhpC0HhCS#?;)oKv#G$FArg=p??;OQ-^f9lv}e9oQ_PGfJF zZk)b-?<#UYonUTn@KJYY7talaTE;bjW`X_QIMPYE&5KD(9nr8N@p0aXU=Wm)VlyeX zAsr|Yqni)H7ZWHbi8oeM1D~=0T^(*jx^8G$*RLXmOV@=M_+oFfBhg1@0)3T+RyU)a zY?#ZMttrvbXNIRMWIpf$WZ(+OX9%rmMu8DU*R-3@{=M2m&x`CKNHM$!%7VV1G(_Lz z#b0jNzrzee0-@=N^z3KYzdZ(_%5PS3d1~zOEEy0YeHz?GLDb?qC~z~RFBM4GE7~F=;PM6NHLDp13eGo6=cL*V$#V6HUW7;7XWu}Fj06lh+n=$X?JhC zJ?QPXTLXu@HV3_LiNd}vUau`J2|HZJ_|I+kwJ||;ec@+6kN^YJ)^FYaho#lCv(fs} z(!FA7iGTRdPmd6siNg&x5ZRgE#ME)sr}&>CadG<;1DuY`w%%%cb=9;^z;n97`p9K* zWYg(&>pAVtjQ~Nki$D#XqN@Ec*Me$B;5l#`TCw(A)s$X_SgB8FX#|*whiSxoma1#! zU8%{foKMn+DZ#+79A5PM`-`L;5tg>0a>9(sl)w;5N_Ca6zwy-W+|HCiVG72&YyU?Y ztXO5=0C8^b@9k}q2n&R>w7mQj&fL<%qeq2-gPJZ{%QuBppGqxpj;UhHc)V=+3#)SsT3sTn~(_~JrC zBB$0B>#*OUS&L1XEfbwiwU#t%8oBZ{e_!Y;ooiuXk^dC3)GFh8U$YPA zM-Wth7?Y3+u()_Oz5YX7N;E(hK2u##{1cJ*B+NrnFQB96z-n47w6rChM>A*!gMg#b zd>9Z68Dol&4CKM3ut!2=@Fi58bxQPhfw{(+G9Gc z(5tv0>m_WzFU!GlY(STQ-ceU?4SY*pBI|OJ=SvTCYjd2%0_@{~4gA^-7Jo-drE1hB zR+*WfEH9598#IZC4FZ*d$Np1dB+EWkFVsf!PBD6G8gf5Q(fdDxIblhj;yhfjP+_T+ zAOCAyOHi5Wpkk_<<14rl;L6jake`*rlA~23-C%8H!1DHU&5CWSek>zpXvQ#>wf6?j zL7ZKHw=zgCt|%3s=kDH$bEinX?fu6#)roaOF|>!)2f=cfgkr=8t4mHVc+ z%;(T)BqpyU>pn~;@^UzCr`^Y#b-0d5D|mwE2#Kp_imW#8fi4axeNmt*Hn_UET9Isr zey!33Ju18M`PGU6QTxr!&2(<|nkD8~9};f*iTI6GxmF{Lq|Gst+F@5Di=WL?)MmCW zgEnrowXC4+Zbyzh;&VbI@*@Dm#lQF&#c?P#O|H#qW zEYBiRuyyKBWeWpU$16G=;2=sh({iX*masX*h7=d_P=6AjDTAdA=Th*fRf^kat(x2F zdD*KFkmdj2jDT#C??R@@F)q;XX5Au^m=JL1l(W4{0JZ%R_UcQ1*}wTUsDwyoJxJt6 zje=Y$@npBdTg`n;MT_>aEVi0Gmc_BD4Yo{e5J0orLi-UQu8p4D)GD>Nb_+BqdBn)( z)@pX^Ya_vdww=YN!Qs4yo^rkIEu|8ta_6S1T&JcPXxH-=h8cR|o)5lk8p7CMdm2T* z!jJ_{!%W1xId?wTUnebw}YG2G`j$3YoHrZLnUD5kP+rVSKU_Gp>n3OZlt$@>@qO7fDU0%;B8b0k0EhXH=7 zKN)}8lfXv|(9BrW!yxjNUz5j2WEv!PKuzbg0;OpaEMHhTT5rT0kPPG{@6E?1-FNuT zMxSPdER4riFw%+v>-+BXKQkl<-isNge2yHbw!o5dRn5%Dmy~~A>>Z@~nwCu;%1CLO z)!a;A@@k|jcS%Wk51a_PBJaEGB}QVr3{Jg?6J5a24Y9N3=EaEld*kG)+gbx>?2uav zx*{wpXCxzM*gGNJ)!MC(>5TT+eyDXLDsg*F!Ej5xJri?i?Or2wU?NL8phD7nTZ)=D0q#zNBD!dV7?`p z3kD>5!xa<(YqYkBTNdS?77hJxqm6x!pvj@i6=()3c`qS|8=h_g75m+W%3BLQllHhs z5;Vvl337_W#~gZbg;qysbO=<9FcnKOv+EB|aCCCBRj>A?rSwQp1axG4C|eief!(|c zYLs#p8LbhBV3`^g!h7Lw^TK)h`uy!h!+v$p+_nZ2w$>p;izJ%u=@2!*Ofjfmvpq8q zt8LVG)4B^b*rh;39uQK&7ecyleQnn53z&WU{cFq-%u*p2BDosqj zSFJ8f9asEnNT-;b6UM#Kx^{Pe_1;F9N+cFQ-Lse?#Fgau%8#F55Wb*)nGRc~+h0*={USA17 z=DI0ByQszMYPN_hFz7yuBzeDNp92$|CD=mPme45q-+^k8R6!WyO)gWZ@O}+mx(m)? z`EI(b8>yu%jZPE;K*?Hf{;Q_bWeAg8mG5~`7X&-r@_*hQ(-a0Th@t)w3JB^|YQ>RM z&AsYGsATHb*hfgY$@Z}y($M}>wKyXL7)G|-z~|H21{^t_=K5+_{8h5|2ph=u5SsQE zm=!(C%Q6t{tB-$?fk|VjeI>vDM}WLk2Z3MI;UqB|D~OS@8}QSQMxkk-iYi@7180NoSa znxQ#?i6y7JzKvG<9oeoGgGT04q|Z4!c9>j2appk3$jIQs z!S)`o+2?uF=Lsb%K4-Obc+IgjuYN+v0uailCxM2=&PMDOYuwN@khGQAg$(NoBUI%J z!DRdbFQs~v)B@U9ZxvyRSaRZ3SxWJ^g1{>Fosx+4LkK&%6T>Y%g|_*ULIOSg+3ECl zntk#^ZLf|F&(+I;Duprcab~>p8Gm}Ol@|>JMa@aC-oxCie&9IQrU8E-IWFGE3M3F? zAUsLXkcdJC;|P|jZxDW@9NQZHqvPZp3j)%ickB|eZu12J1WfbiI-Bz#-tq5P>^rrDuqXts zmk0XrY|W9VW>G#U{&|Ygdqsegk$pnyI3XUZuvRPyKuTbj+c)I{M~KSq>#f$q1SD;P zQj5g)oMNgT2aSgEHVRe3XabMw7v|}R18wXZNfie6WVE%zME)e?y|gmA>;Jzle)FRJ zy4*b2+5eYyY`6X@IJb#&gV+?V1SkuVcY`-0zONI)@ETCJ*MDSR^~u!4WFb$^U^3w8848s6^}ODzd0>k! zX@E~M1|sSkSXttE#fol6p5t0!Wdx2TQW_foNVQE?WcB_OF|kc*eZWx$Q@R_h7&usC zQoRzZB=E#A+W~|iWF*s-F3N!hAgx@UW)#K~oh6}^?%qc%dV9Q`nHbU)z3qB>hG%H_ zv$IL#0puVk57RhjnMz)}leaY}$KL1a?+;JRGx&K&{#aOF;~h z@kpzVOim0t=h}@X)=IeM!?%V1&TK6G3Jc;4(r2uo% zc~7G5j=wZn=2-+Ve*nfY46YOi7dT3bXH2Po=Dw;r#QCg+We93gVQp~S43)jK3IiE` z<5eGCwrUpzBFQ^Jl3$q&bA98y&RcZ>^x?EiZEimTrNQ*vbpbeos`{2KjMhbOJS^i2 zX9iAD4(o8dcf4^Tp{XXdAYZk5Sz)&{aYFD$QDAmXhSSMxa!d|uZ{L$(UrUt?tS&)%-&d-E`<+eX2YZHf1^18UqU;60UyTdMoY>O1 zsIWPi3}RF!lf>C{TN}%tYytP9gLv+-@@AFJJUpZ<$YgdRz&4gJdb_cu_CdKUMJ2iJ zugTE+v@&h4)raksPOQ68h1h&I+R!4YS?SQ8ksK9cjS@Jzm90n1bnS0IoE&;XG59x<-Dw)*h_UnlPiEVWKGHd z6*?9f4eg5AsJX>i6KOie*sPZ-gZ`!96LV3lUL`R&Og~jgN>Z`qpMHtfNw-N@U)9YB zAPN7D2#0|nA>)@o5T`&|b=>Zp#IpHfiHm9>(yqV&sLvfvynJ3R}o2;KCOE}?EnyENEXU)5&$gqMj)e_^+nryMC zs+ep*e(R}vwo>8J0_DS@q?~}>DkQ!pNOR`uK*HSZZnp0 z^%9gn9RKqG!}|T9ZF#^7uD%wtBb5FxZGl-QlZquCz$xA9O=LBDh>};S4S zmbBFsg=qG=wz?0Sg2x?;+-Ua5U@$r=Iaqj#P0Y!jjK>Tj@;N40fI`X@hXg_KuO>O9V|C(Zu;GrlMGsCH7h@!IrUP-Ap^?JC8lH`+!XWvzB6^aTD#r z6}4QM1(a9QFifps^aoCCa7b}(dhNm{4y`}}$-NKu36g^#IwmYbF@NF&4t!8$*tG3epf7nrJ;5SWIH zvyp*b%y>m*QzjByppx}W%fGlqAN%+-XN?tM+NGZo$$-$uD2%{MJp=Y&w|B5_B@{OY z4*Z&?yOkzpR@@<4pm-k1u~(3OJ}EZJGZT5AVr>rmS<^LrV_-?b+%Q`{| z>++D$&9$e(7(LwSR0+48yX2i`Gc1=-6r%YNZ9?!aoEO~|3vPtOkR)Px)3!r~!<&UW zPq(LFk}1rR;f=BHPBV*@^(qF_oxhR`G$TmDO7`{|?fuEQl0OgU7-EZd2G|Q6bLUC4 zz(#Zt+diS%+_jftwvgTeN|yl0%N<{b7wd6%Em94EM9N%C^ zARD3kv1uCBAbtVi>N`hMy&x~4myz$+G_L2ez3*i-4=m-#tB%a2J8!TJ*N8z9euvT^y$1I2G0wqUzbrzixN; zSbzElDD-IS&faDlvBD;5aKc9V9pnltkwQ;_7EFhxT$S&f$cVe3eFiyqNr(0}@zil4 zyEgVJ5kt#~wq_MH-0J@UD18*gj zh5@t2fkyT-Jkoe{8GM!MxPU!}WAzPmPq?RE!lyW@qpa;8+56)VDsD(B+;XUE3q#fa z1qPF7M=gke~l>d;t&vDv1tR&4MWocF7gfDTuOO zP+(KTgcUQ)N{BPT$YZ#we}N+RjDSanXOn4dH%tzJBV!vgzAPf!{Jg~zG*c4teEKm} zlEfiD8J$s#oDl{#Stz$w8><0CTqg2@W$pxB0C&~$F9-fTlm+y*s~Rm1L!eBmS1<9- zz1H6L;8kaDyQy-*xN}$}iFOv~7Dp4R=TZ3At)Tq_z*U`?6@g`~RtX8<*wR|U-U|Q~ zlZ4CNUmG=qp4y*MpVsrAUl*o}=$vGm2lmM4?GGYUvb))aDu*?tMSu~Us!vdog{+pu zZCs{oV$?$^>wq|V#4TF8>}(SyxV9{Dj2|Ec*&bTUDm{XKF0L{lciyo&n56Jxmc{M z*$=f%%+}yX#l9i3*!_tjSr4mIVkTPK6e4dFGNQH9HlScONaZa_Iqq)|oL?5du$~&c z=8}x~>Pt7c-tFFMv9V>eHu~BLOPTx|QU7cuaw9pcQM0*aic~`cJKA!EFDWOX>Kr7> zv4$D{FN0clEPI7B1cj_(L!B0qw zX@uAgbunz^DIO%CFL7}m7P}RNF_8DN(uVhxV)Nha71d?|%K^qt1MSvF!3449^BQpS zk`!#JESyv<rG-WC4&4UP_Btv&%zQ@HU>gCN6H77GAn5QyAo6_) zoHj(3b+&2QQfz#rE=?)6&sU8+P{CQ(VcWrGJfvi>bg(K)4*ZF0rYqd7saPxG`_~h68H%A)j#dw%r}t8YjpYtjlL0=n3tH8 zooJYmH?79P0c)5Um{9;}&lNsBB8s2wOp5DH@Wv}E60rN5X1LOiE-0~VGx;Ed)2cqB$#*d=z9H&Sx z3wB*eAXVaJvjcX(cVL`~YN(;GR4wJk$}@3H2YZF3m$*cCnb<}R29xF2K9iO*aB8XCoQHiv2=+5;QPn?nx3M&W6gCsh5ycD( zZf3fp;zW@poxo!OF4jK9+S;m_*4#C4s*BZ@0Zjs?&j<{`@`kn<(X*7?&5uMTHjs)Q zZ^(i5u`pq7@BpO|Ih!0}7t=lZFAj=cvtRsEa~Bg;Q5^6h19GulQm3+C>5s5$ew2!! zh(IZA#PZ$AL<~{l#1iG=L2-AJEr7xX!;eQ39zny1Rx=*aFMg#tUxDo zyDBViyQ*T&RyF_=@5Ey{8!nDGA5w{py`8lNy04^Bqm%duDLkqTK0!Tic?n94ap@t6 ztYezhD-J&?)Zg zmRU~lD!DR(@P2QC)U->6w<>faBLU|6r2j`qhA#!0T z67Fo_WJ2=(+Oy&D)8XTzM@NqyJvm8Y}_h)aKyJE=nxL}5U`S#7fMmH%Z2odfk?JGv;O6x+%2XA^-q8y&x`+i zE5py(TbM_mbMmy=uBJ-$ztBZrlrI-@6Lj*d!`k^3KXOY0TniFHpk^ z*BdcRLIa|QilR@_-eLLbWOhQVz@woLwM{573zn&nQ^$*xG0>AmhAeQh6n88y5@*Ab zV0Ew-!o(#=m^fz$m>eWo*P&n#4V-XF(Y0%a4W0uKuC(60bnttmp?KZs>r+c?w4m{0 z?3G@mL+u?GZmrd<;J-<+PmJ)oq@}RT@ePmsAl25PC^c`qP(2tmMH*=u2PveK24YGj z7I!tVxPAS$PW}7N8wwZ=Z9s7&8hCfYw)HozT*0`hyyQ6N*0e;$rZwhfyoZ|hsHL*Y z&NEu-T!o$JlwM;;Fs49DL918imxGaGrUvRJ*cF@K(#zF;@}CUMbek<9uf7d1w6pcC zQ_YIc?J%dZv?^=%!ywcs2Oxy+mIte!N>vi9CT;|!!?WALo$>$jH2`8wZ{zKbj0+#|K`h6QE## z>N%;eq^aq9>W%hTW)tK}HTF$7wC$U(Thoe~HQJ4IKp@~=3W!jbw%M=jGwX8k=g8r( zHhX6-KmLc94F4E{m`L7Owz*aNark%8+7bM^JV3+e69|_>26(SV%+*f(zE2ptgQxa8 zIfgZgtvo`VHxN~;o+F1-#8@`V0nDzX5bIm}dfok0q{sZ!_*o{e$fefV(;ef8-T_H- z-Ul4{P;l}CuJEupl*f8#^)#s!Z1^$;r39eHBSV;lII|@-4Tg?9F0I_)0Kh9~yHwd+!^O2l~h{ zc|@d+@jBESS=V8i2fWLe*VRNooPZ~ANd6(+3X_1p1Jxp7 z5B78+`6Ot623uf(;;&QD^~bXQZowCoGDP z>a+}(j@;_Bw>R-RtT`5v;Gh*_^sJ$@;5iNmV*T{&H3V1xkAwgNjD=X+hahhXRY0r~ zB03N&-R$SvX z0oGhmwgMkp>S?5nmEwb(yt4@|vbA!N?9>S2245z@C4o8`7{YK?i{-}(Y}ZH=z;h~$ zt-8RT-@4Pp2c&Q7@{_*~#bwK7osg^W&jp?c$>-5mQR(V>2xwJ|bKYa5B-&q(? z4P6{h<|VQW>P`ND-ZtjLg=hM6FL4j{%fvj%MS~5Mc*wO4KCZYE zM_1F4@{35{gHbTWDx@ZllF#U$+^jJwumn{!9`dn4uhrJmF|?C25r9oJ&co7-m`Krd zo1s)CL77-7;z0Fi%=<#1`gQO(c+Vc#N%{~#l~|vL?=o*Xy$X&rM8wPf06xnG6>?p- z$Bazikg(oYf`fHg46G}v6kL=;uw5~AeR<_g3ez)4MH*yw4NIIka4M3+fd|#|#XyC5;A7 zUE^-+QNvUm@5~wZO7Fn06?iO9|_S`*bH0Qo%3IFW;>o8F`K~ku@eKAh{Vn<+Ds@&>jr8(O$P1+N3bT#qU*m zo5VDPBZ+3o)ZnFYjMzd}wyqMJ^g1nqW$%@4-XQCH9*fnbGdQaiQyU~@ATnsFV8zJF zOxJU8#sPo~<A*G3Ujq#gb=HU1{4yfEXZ8XjM78B>NZ0NAU`^H<@U1SHEAoZF~zE%;42HS{-7Tbn4$mke87H!O8vv9s|z^$0NG6H<)1 zp^B?|(Cwse%1h5cb4ZTZ$$lqmm3GRb&3$RgQyqObxWS8KioqZ?uRr8{#A}sEvV-kTei+m>}59>yv9)2FH z_<5P30irjkXEsxtgKC-#%=N6wT(`89WM4VY-^Z$04Ha9G3pBvCt5kwOPY^Q`G3V6E-xM?v02Ex9Kn^|G6S|;3t z$&uRANLgCwDNth%D3#=DJ78Pu6=eXs3Mc^D=7?22l%wgsFGgutTY5zTP?>TrRC|oe zIV@XlM?Sh==KjoHJ3QhuFc_lvi?{`i$7}La*8O8KyqdXW zPai4Ju`rr+v-7f-?|7ui6a{xcENPHooC|-sh32k2y)A?Jvb`gDg?jpYRmQr$6*IIB z>W)s=i)+ZMhgI$9n4{zeXnHlRBwoHhWGBodV*q#{-r}jYh6CfuSa3!NGXs_iBSp3Z z_>95C7z{>N&(@W)?IRyX$B7kdfG;x%(dF3V_xvd%_pc+}-yB~}GniZ-|D8ab-xqB8 zx8T9JKeM+2Wd4dzg!1cUasIC2-3dg?MRER@IE>I9z!f1J$WMP@h)VhKXAflo|Muf& zzx`OSTg7#FY;CiGI+QMwSww^A=O6!*k$|=$WKE zPxa726D&~Pzjo1^T5rwS&FL-}unwICF14$=ycG9Ez+;>8S4a3{iKEA`Jxt8o46Vx5 zBr~U(6$Bmxqt6)0q|VEBq6frRF>LBwW#)SARN zhsV z$`+?4iU3nXh`=L;DSdx{QOvq2GGan3GvXtEMYZo=>y1^Pn%YOV*1xStY{qbJq1%CX@rr`{%31>B~Cu>U1(HH7w z=v@T}X1p)OLbd*2#LIx!;re+XiG!z!?@3t$V!$GAU40n5rAx8;u4TjybKgG)^|W_D zMez+z0&pkMN1#0UjasT*^f8K<)RW}}=Z#2uF>KH1-sXkltL0=6xm!ent^Y)BJm~LS zDI3L`m^h%>=vBuq1yUnxtTTBd*)Al?6a#amhjI6LKVv|Cl2Q>QliUqfM8D-YXZNjBywuquP>;)*QD zc^>NO?F~%BXvXF1`3l3m1pj% z+x7X3W?qMHi_;k7CU714j~m0W$?#6IcM|(N)y8q39qf;$;S}6Tl{x9(Rd(J_W=Wsi zvB~}v>@_J@!|!M^-MiZ1d%54Z+PA4+bbp8fs06{)nSg6v*`2g;o zWP+&&I+!P&#w71ft(t(w;klxlIANT6K_YG;lI=q2$&ZL(77K?^X@8Iq*t11_F}B+`F1e4GW_NB?xd8 z@W)FBHvvJL$TZ@7vYZKrqil|q3jbBhQ$-uZ5O_o5DV-M*Z=jNzC0Dtr z#m(uCurtN|>Sn%c-XIN2QrR~cN8otVWQOGn?I1=O*qu;f@L}DN9V&3M^I(nc4Z8L9Vm& z#*8I`i9rR%%gsz$T}6(Cn|qY#sVk0D8dbFfY&3@K6p!h-SZYTi7-EWP^QHcRdo_mV zmn%yvNGGkNexyb>QfgUar3yPtlpW)o_V;&012iUZ9ZO8y(Y^PmR?Xg?T-J9gm|_$6 zcB(eRUDPt)4S>Cs_)bF{&n3PaxY%oVUv*k-#GoB)6yb*6ZTs|@?B{kNQ>!!bfxmF% zTC>Sd)I=6}qE>p&26e`^Wo*?WNh8Q(%qtc%Z0}N%84p%jf`oAx#UhX9nJZ7z?AVI% zlFeQ9pq8%?m_yj2LhEaRAa^rLBc#@2Uv?3%8cN2HM?ADJ@D!~5UU&%z6N9CP91ca- zFWy|SyuxXeO$}uan9cMslQDF$hz>R|z=c?mq*6}HMAEnA$vC`mY^2Xi7M5daIU`YV z`vhg&PJAciBF};r-y}hY6`qDlD!i|6cTd!cs*Dg*DPY2We=pF-X21DL zsZ6iGjp{*2tWvkM-`=&PJj)o6XQ$J4Czy-7tk2w)`Ttt0*UQ~zhX*=4uWg$zIAl>U zoq!~I)$k4uEdIw1>n@d{X}4IA6>p@p1-xBjJRzEDMT5MAU987`C@+iY8SE3QC9P!f zo7$cVF}HZ1rATA(y7;FOPYge;$dX#J7&H+?5Wc2^y!snp^js04c6;vFWZb+TAD$M0 zL92nH+*R}>^R`uCT<9NtNghRLt{SO7+CevARW6(k`(t1$`WZ|Q$Ww;#`c*(Z_-hnK zL2J}jP9w#xE-bH6SZHP8@sHFIe^$5<0OValm9iKzR3v49nhjS3mWb_`psnQE8f3$u zz6kIPNU1`qgJHC*h*}iLnV$V&^)z29-%ZPI9Sam~4w*}vV$rtb1K<2_ENpx~JQ|-- zF2;kGUt%mG4?9n&{IdLeHgNZ+R`y7?&m0sPrBn&Gm>A{*hFH8YYkw!|vGLQ|MgE@C zayEa}bP9_h1Eo$Y!kHQx9yL)9F&z+)3vn@BRRLQ#4#lh-)b%~3Xj%-0 zWD5?`h}mXnP0XWI0Q=VW0e7=OGPs_@a?6_seM>k8Le#eROgjUoRaz5N`Ql9d%U*8E`GdYk z?T~WamA3~-p_Ypp+f4RRV7tCG<*}pGh)Uv5AN!&Z5d0#`9Atv{DkXL=sLe@rF_+f> zDxRWAHC|-EsXNT5`!qos4N?rc>sFKg4{#TE(bsJO&?WUI=RnDfD&}38rI1K6!hWoClE$wOt^iJOoZrm;XE+-wX_pGEyBVBejU%s$htfb7mdY*XX{6J(`zP zv?RpIX!L&otxhgJfgG8B@YyTGakJZc@yZ5XCJAP`Qr$KPQbR-?tW`vl;M)%EEZJc zuqu$uoQpU3{^sCDTzD0n5N9v2a)Am*2r0j5^$8aY)4~ zXq?BjwC>T{MGD673p!4M-cSnL8DG7ffaZQU*K5q!rS&_?$f`zeoYUY(`K#}yrU~m; z3Q&@%+ft^c({*ZB*Z(g_?{fL^5*Xo~^u#Chh*<-u!lWK8NH|;gzSyNOciB2X3PV_G zg%(=zyKKwA?P8^NM9}p?>z|(*6h1i|Uk=Vkh5l{W0`0YLR+iSD7R#W5OP0Kz0GCyU z!EDtXdy4;&Gzn?|*q6Qi~Q32EWTNq;!OQWDFdU zb0Gz~Vr1QQO#V=2A9~ii^G(ktlT#FVJnw~IAqFCGjyK6-)mRr+XFY}mz<|5S`(w8V z^DxJcFs+1eZ~X$7N9XY@+?-kd@)u=+x_b~QUc|7`91Y+L^S*kRnzE?OWaa^kh*~M> za&~c&T^UkBNJ1B43hCMGtV~oiw%HsjQ3Da%H^}w*G3rcE=t9`irh(y4k85o@OQOo< z!J9Hd>?OWEdGj`2RJJ|*Rrz?-#_?!VgHJS9aS4T|i9vWVYcZeor7V!~x-Ozrj&GS@ zX5OwNlfRV`Q6$ajK-6^T)v(dfWF?X#s*6AEDPM@F(#!D&6~-Q2SnU{h2B}mfR7I0T z0~yS~c5BdFeXm3^34qAg?#Z36{giaxc5m~AASs?pJ5)Z~rA_>7)T)WCzBch?2*x*L z*~DsC%0rWdJFtAi86qd%GbwitZ&al-)xO~r2>Lcm(?ZZeBS>BX06Dd(UF z_0)RHpRYf-`@f`;R=M^JXXCDrFu$BRmnMjrSS^Mx%8}#);v4EUA9k3a8Ax!kI>4V1 z?{bh(zCt238gOVZV%LB~F(1`r_5F=L_|3lPJ3SEmL?eR$8PrbQh9(?IXWpT?sZKbZ ztG?Y5>38aA7uUKPt~^#y@IpO-RoH40opykTy}F#R6S$CMK+Hjt%L!8?V&rvs;7-2e z*)-Q}Jm2SymR-DAE1^EiZgiTGm>ITKea99m1vWlpP_gzpNF$fd?Rd1ya?{FW z2Z)O5jZP%>5u-LEMVg@72>$YTXEM4z8|zmFF2Z00o@@~-5F&DTX5&tPZ~J{z5Pv-^^6f(-(@!H$*?wlb3%mDN7N4@BHd{BcXIfN zHN>l?12hZz9bcV0Y*}Rv`uDwE(g=S=xb^1hz>556b$pw#t+W=4kFaQ@gy1Gx$idJ7 zMPzstmPG%Ssh_2WF$HevyhvI0Wvx1naiz;&JRyhi`EGl&+yop;S0Np2Q7K`pCm0Pu zs@`alL=`51R_#UMFz_D8ts52(QWYAZl{gMfR}_WS$Sny@QRoS&>R9(gNn#>)csRi% zoD^x!bcH1T$>PoV(|Q@mcpWPB0#-g(8?_Q65;Br44C4`Zpp7+K);HWz=$uKSQ-;ub z!6HY7;>Cn~hNugq?e&cQQmVg#_;hCd>)dn06j4F7MG`Md1`|ka!Ub9M zcMKOyPiU-ANQcezd#}c#mFv@V^xby9N5M!@DqnWE-?ZqkPDND*)Du;|5V0Y#7#(1f zDP?rVogUe18&?xt7xm_K{IbU$KvqII0Gg7?d+4QL1ohj!}iq2-csnu{j zeIO9Ov)NkVoR1b%^D z!kv9c6a-nViV-O&;G0;7#4Lxczh zlDTLg(yLNWb@S`@WzYN@xP*a<$l^|*o(CC&AI0p(!W7U-;4kSwnSG#tcj{~Y)LT~x z?@aw$BrTVuF6@9$346sa_CMffC@(j#8JU$Q+#86iTbyEB&B2a0%v3(d3HsA{tB!3# zXBg`Cj*GueZ!Bj$&z;P>*^kujg-f7QfBYYsJnQobXb&ub-~|@HXd5q;(bvXICbM{G zZuY)WDly0ez<&G_i;sUS{^tQoR6)JMmxXv9gh!e8XlLl|22%c5&=g*r04>oUAzO$I zI4b`4&ptCQ`jh%}b&D-)Q#$z`Gknc1I3vAMHonjR>{y%e^_~5|M>)IQxGyz<%ktkM zW~sC`_n=L$5<$;tdDnfuSA{mm0?Df=^l4`p=27-L2L_(L z28MYOH&+dX8}TWBI{bHA)xm>5LD7>lqpSY(%iM+Uog1DA)G{P6{ztk-ic0Az=3vBx z6Glq1U_#bf8TmB^<0q(MDv+(?YDI&pv}T>wfW(A3*3QV;3|GAMW8D_3_<-~A?`qHq zEd>;iiy2zFf^-!;0Bq|4p16bThjJIRt{c?-ZfW6}!Ewe=AaM@tgYm z7Yx7hfijmL{!8&ot55iKl)0WyT%O)|$tWQR#P_J@Lt@(xpnjIVRkWN~a}C9m0u$UL zjqO~7edpOQ5i8Y8fTyOqBEU~FH%PmDrL2(;Wd7MVs%KNq;Gj6@5p1qz>%2a(m5}U& zEJ(^58y!#vhC!SpaF`xv%kF_07fAgKsdNRa@orSQh)g7u51dRH_vp2~xMQh=ia=TY zkZFmuN>Uy02aTOsaW#i$AmPAscPVFLD*f|;$~?YK)^bX0F-#Fn&XZaK^^t}C%>?I% zVS4#Sneo~NC^5t3A{dXGaypg=nhsdEZXrU5gd!Vf+yIO_Cgac`NBi`68GSU(0StabNHh2-H79wE z3I$|pp?^ntggTL`1yic0QSmxb$8A+eCJ=@JZi*-(2$~9tLsZidyWGijB4tL&K1k`c z^J#V2k*p7m%jq!|7y8E-aYNiaMa;9bOBBVVTd+{TNo6Orf{f_o1eYR+3>L(m4Np#F zGNF{hTZ9}fAsFqcpGHw1jX?ZbnKk}!ID#mNg9OlZXRs!Xn*uPwsI60R>bHNQ1Z-oP zm{L~&0(QAd^FQIN!KKV#R(3owNFX;&RLnwvg)S*7p}gC80|n_1^lbtjX@l-4jND>( z50*aU)9LkPQ~<|1JPCTbkwPq*R|4j$A`26No|AXZpsZ>yq>d_klD9mzDyD{CMkxaL zn#_`xT%uWw#9byRP#ZHFOP}QnY5dj@R68PEAdbjYz&#urJN7r)64|s|YT-+CBEg8l z%q7cd%rz_raq_HZ%R|nnC$A9sgeNk8N9U3z0G1ep#suS z=4992LxF_kHOT@W><6Zh~MrS@Lz-!Zd7K+MjH&LmH4xFGh_f>E8%KT(oa2a$v?D zgwPr?RXQO@&xTT^hQE?G`-dQywLER9q-4_Ll5(Aw%a+A<=w*XY6YM-s}erXic`+1 z!0P#|0r=W599Ckf0{T!;amr#LS|acuaDYB_Hc3*2hT&zqGeB6*gNr)DaLh~hjOn`) zrn7Tb2LPkuPl5*Lu?lYW*r+$gS*W3Qyi$;MrKqtaT#wNNvtkwTEoL3fn9S^85%_Wx zjDIIrj!mY5Nkf$M7~(whAcfD1A%J2rijsb6krIZPA6uUWLp@?H`V_NWgj}kX#83sn zBq|ASY1iDM$VY~Rg$ZG4%aIT5E8?xYz)R&#rHMs0kxjblwOYh^Xg*;XM0NsRzJ04W z^QzJ_Vim|$dVtdUA)JZA8X3@RC|dhg^Tz3iS8sV3PJIDmfSp@fJk)z34-yVD9%A{x z>wl?4ufL_C#_M&7KLOD>82|ShPGJDtxL?}M<@GILyyv)OE2<5m~N<8u*VnU@DPVLtNi9_TWz=^dP$me!FUD{8J}4~_eQfzRR{-S287g(NL&{}eJKrs+r+67)xQG=v!$Utm zQ>}>Am8cb=IP;=W73KRro9AZyuA)L%jO*)`Eea9x>4T5|{vn!BAAerH2fcDr75fiR z%Y+-3OB}o@`zo+&J$UwD{ME;Q|7CgM<*ae0th5r=UqV|G9S3n= z$bvBan0ry_8Zhj@WFSv)tk(gutcS0*4)M4HxOKmw*no%v-CSjr6&<4MBNDsSY+(*C zT5M&3MOLp9ZsDSuRwX1U>a+Xltj^Fa;MBHd6i6T9wqb~$X4J+A5pFbgh*J zS%7St10{MDp$mKua76s#iqlGgB$t~qR5FcJcT%rinqZ;$%a+SLu^AKes{HxKjh|zr zv*gO}po6JakaDmV?rp+yP{pG2F#x6Esn8$TEl#chVfH&Z{6A`u8DQn1er^aiUcW)R z4``+t;iN|6-o1k>iM&I&PMHD1mg6qug&kd!h=xZK7`e6RJ+6wEdNM7$0LA5R72o`A ziIYT^V`jNpsIbw?JY$F~Y81sB3ZREl8Tsu{nS4yRBY7)=7;Xg#=AsEzul|z9Jf76) zsdMSzrm^D5;6NDox_t}y% zz!Oc>&UDl_S2t9o)c8~;C!*g5N-6QU3KFuP3wIR+9HdN{(3rPSJVD-W z^m7>{ROc2d=F6$!;`AV>ye1XqTT>AtOQw0z-ri?PwAEKQyEUB4I5_*-_ShX|rAZQm zEgSIe_b&58$-Ztki{Yl@^4#(97bWtAfftZ)VOBEicg9IdLM*@d_}LdYuvm0|ICL1( zlBI#{&gDmTLo#6LkRe@36=G`r`vxLN6novy^TB2dM{SPlNmZ;ZVl61uOBP{%pWz{QlRyQM2+n%P6l*M!P$XxL zJ0n~&Pur8yG83M!=JRtIJm{7=aXR?M~gIh*nZX>KR z$lJ{wR9`!r9U8jd!LmaqZLu(c?9) z>!kCX+yk;=q*OrTy+bVZ4?q(uyN$J)ROaf+5>lBb?_|dFx)j&Y*zm$jtfpeLY`bj^ z3W#P>HhL@%sj^LSLvTZ=)uozBI6Cfkn-c`Bo32&6bp#Vm-q0<%cUFdOvn561?Qe_8 z80e~Y+$Fxk+ZbFG6dirq&MF`p=C82lfyAdqxgu$tM#iM8!Q@X|6`V(MdI>wLeYJFV z|DMxnB@o~i*ri!+GJ2iwQw=3$DAJl_C}K1PSyY$?=#JY|GWh^-HIuMH#>NT)N#JZC z#)*~#D$E%jHpOU?8)A5A$qJ0QL;n{d0;&+HQ}4*%RCkr-Mo|?(xy+?DPnuwrPkr`R zfV0=Dgqy=WnQosc$G+-@g9s}XQ~xE;Myd&K&tGq$Mb6s9aC#|hVpVa5M23X}1@m{xX2?)}GZs^qy*MT1IAm4m$I<{1=3Ga4(qtTOct&l4flOCce7v5a zRU$F8S>SGF>*AA7PEW>SE96DRfNQCi21w*DIY`2y;MR&g(S2YbWLd8CzKrMZ#H=WI z7TN9*jR`(&r0r>L@TiEe;}DN}Nj;nz!s6gCx|D=6%WuX@@8UFRNg-2HB$B|=Lr~S>o6!HX8CaBpzv^|C-2b^N3ccQo2pkC7+3k=SV0MeWa5|Ho`Q>Iy zx}M1W6dT*km+ckB&}hh$!$kEh0Gq31d+adVnKVO<*Cw*BeE_u%swPvWq8YS*ym<92 zxIjTJ=?}K^9EhcAG~u;Nh}s5ttP7VZCTd5UjOpQ+Zmer~P z=V>pU#~9{do+|l7wC(f)@rp=fc39XP2oX$s{bv85XG4$ps$gAso-;Adg@eb;B-d|w zW$_Z(AQpROCdbE_43F?3>5X{K%y`0lywXI0bJT7$zNRocn6EqZaw<)igSEydVT+KC zi{-T%KhV6q<#o{=PM?o2>gh79H&$XkU=VI2X1md3?5hSL%HdnQ52Byv^2dct9Fa@_ z<;~_%P4dMRHi~H29Dt`CPiW>ENN~CT-8Bq}8KR-z-8}S0 zNK6Td!Y`!%c*0z;i7aiV6i{Sh26$+~xAPlG3xFV_1XvTY5-A#8SoI2<+<<(+qD{?( zP+}K?H8}8|97?GM40_*^yYyPXaMR0=mvc9NIozi~+z6^>qBLha$n6tVf&BSB{F7al zxCyk{h2xVcL*K4+fULuSxG2gF>4I8Bh}Xul4M9#-zU}#isZToos>~#aR?cDkAK|NO3eQ#iNs-6a9S-M)p1(k$u@|wcHv8sEnh8 zR1*ZE$o;$GHoc;j+4aaxttkUUbDNno>v0=`*kk}p7K77XoD7j{G%n!BKZCn^#8WW~ z+$;W%K)Y#?lvaa{^znI0mN#XNd%{|ksDUjqJk^3`mME8H6BjysN4_#r3+gk{A;MO^ zHrMqY#n(q@uMa1eA5?c;R@0Xy_WJoG@U*`@xQi;3D4k$nBz7^)5Y@6OF~tV6-{DB< z){&?_i@a-X;lPX@%QXCwCwG zp)v^!<{cZbTVZ}{YjZk|4iHtD#gVvM-^>s;N|!@hz*w*u2A@jueJ&>E&SsQ%k@+C_ zEKoC9^q=Njw+^`Qj@Xj27^{Na8{~ltxS<}C18U%9t-ZaM9SU>5CY@8coB^Z3%ru0< zzN5UAA~~=pRWX%VGF_PxJ{#)jVT*L`GKqR2| zSoe;H3(Phjg{`KM5!ks+9lBH5!GCeS%0o1rZad$Z8Ufi9< z#0Y%L!DA*Gb7KqlSeE|)jTyi?Xy)?L!V?d5`J|r;vi)pb@rMT=KeJLbhC8-)p2qqF zQ8end2NwAw`RcN%RsTIfk~)nbNh2uE&MYLvy2RI9+DH&8mc7@;;aDM{TJ3~p)^nyp zLM!l40fjoV8Sw_W7VcJw3CYuDQYJGE^Et`Q zIXv^5f(VEN;{=Mq63~3pqZUn6@UeZD&C--}f?7#aAAB*x1>Rs6qnsF!y8}$*2U;3(KR9 z{jKm4VzYQTi~7T+b@9nnakA`xyWh6NYC}&HX&5!6ED4~?^4uV3fcFg$AbSDpJ}3X5 z`CwP6gN)gS#jm`+Ib4MY_o+&8az)}6+3X&yZM@`V1BNZ#tMfbGemI(*h}nrr`oT2_ zGi+)``XvI#M?y!whims15Et`?7KreWEGen_4h+L1f@V^EW-yVw8aPa9CZIlPDXVM% z4vlj_Jq`*_kuJVoI^|b82z6+nc7zXI7w(0Ao!Vtj0t`-&SC)BNL(7)M#KlLy?3CPHuBP>*!G6|4A3J=3HeKruR*$_qyjJz)n0s8c0N7v6Y1B|L350D8y|Ea;ZDR^V2JxZzRBk{sf< z3&+evOPRzBf1on9;(tLlCvISXnue{`wt~0q44DemG#2JXq@$YA3&znRF<<~#*8O(B zZ;9p-A&@7bxi<4DTd;eXX&mjE0R~Mk7s6ShlC=3t=cD0@)wlt(k^lZZ_`oF**CYt} z2n;Lh!xI92&USKC-(;W;bB0LcvI$e?ukrG`nF(SfoPidrjth&Gvo;^{6fxx)t-zpVIwX zP57SZ)SNIqT1tF{hEeHeF27rk%LGdt<}gF*-yw55lR(N&yLIijMuSAW;8oY>ts9A2KDH=v>o zW22S+5pAItsKLvPmHArZxY`t^3r2)ls3ISVj`=20F z4CB4I(r51vmdz_Z8l+4UfWLC}@vu3-KvT)Ge zW&IbRZ?candrk5$l8wu6v0Tm(yrbafz>9H9I$ z>Q+NVG}aBF!bCD>!DE@l==^foPCdj8oI<@vpa*HY^cZHu!s=ww;u$QH1=H6Vn=&o}@Ycrvub*t|H4Bj{K3_lP zlM~k2j!~T9>67}#vfN=lLmgyZ()2#H)bABz%FzH<%HN`mdAIkkHC%|$WA4o-@D^ie zPN$=(3_%5^(vr>+ZzjThatWN&+~DO~b&$EVaK=S;vVB=jXGrE#Py{%TaZ&{b(_wy( zK2{x9J1fEO=nEomDCeba>HO46g=GRaGZD??w!0;g&@AD>Mj=e~!nu1Tk=Hq1 zIwl?Oz|l0JMwa#WbqZ-kj6phsgn{;{f$vqp@rhs^4S z5IL`?K0bGUHl&9$OO@@Py-P&Roo&iIiBi0eW3}(_A`|WdBigCufEd}MPw~{)5+K5V z_}b~vA+3!E7R>f1`0HqO&4*RWe@@xQKxY-lpvP~*4b3n7{ER{K^oefzljmgVF%{4# z&k`nL>K;HaqWgjI;t~{}_Ub$qyl@!))p<0F^I0q_|3O-rfdXp!zjdW4?{pVX;^(14$_2BvMPS*4G_`YO?;AKD5`j!!Ky8;n1M>R9+7fvedcgw~nx>GA zkTfAw0kSb05^p#Z*yKstRIw;J8dz}56bscfHUcri8ZXQanq5>$J%>o<;ZDG7ze%Wy_dySaZq&k1V>0m1tSr&#>^fOrc!AdU6}kW#YSpd z8G;RSxDDY;0+N!1RL|UOZ#Tc4=K&tg;c7L-L_;9uOIt}R9)$&w-Y0)tR=8Kvb@Z(a zVaUQ+eCoMasfG@}J-yjDn;aECPlm36Mf#IyR}k${;#|@}NJ&^P=iqv=@3KR?>uJhw^ylgK_^jY=@@p z=Y<+Gew3r0jucrkF>6zxVYsexL}mPwsuwgV%Lev&ZN65DkT;SUfvCvR{$MAZnX{Ic zrhHks3iY}v;cF<%81zll*8~V#*j%H=JkMhez!8zri6VlHHPunkw9fAcAo+cng@+9r zxK(VNo|6rMD0*RkW2an}SYpSf*_qz3#3BO+&6^NEa2E(;H|O#ot3_D$On{+z?VIh5 zgXi|#nwOYB#80TbU+0urmI(J}looBuHK6tW0Hnem_o1J^YL>p9XP#Rn>x>RETA*>ro=PVhild5jJc46k7D<8(R{oRHxouGqfZI!^CgD`Db* zZdQE8@-bCk5O8C3_93JX3u@oynl#&Cqch{4oGFxRjeU4M!f4{n8c$A-bikXJpl57s z@q)Qz$Vqb4&baw~tHbc39b&5(Fb&WLR4K6q9o6$XFFfFJ1tmR-U zj3mGhp~#wWq=Y1ap0@D&(K*E#=z%{B-##Zl9t8dlj0~a5NOIfOEun|Kt|jFL5oS_u}9lzv_q`}>x}Uu991{TEzdukk#Jh5$i{$| zNn&uONm@+d;ptjZOtn3-ag0dFK#9sX5*-2m)OoS_E9zN8Aw#xQ=Mho{ypDK2S0X|t?Y+FQM?&so4*qQMjFyDkI23#H2<-xUYI>)(XrctqT zA_nE;_^RCPZ}v(`$h&k#kA0s0-biJ4m*$dzFH?ybNT71i-hD;=pZ#`(IjjhR`*_7@!LeZ{7uyP_!Og;BIvAjv zEO<=Yx-Q5lwtG>BQx(T@Jk>*O!q6!_*&7&?4ABev`gX9_m8@`Nb-YV%kZ6Be1m=tB zJX$4mY&0fcR`p;`cx1gF7XQ##;O4R{i=tJPO#@-B*oHi0%QkB`w?CwYJ(a&#mS#nJ zlkz#;{}#93e~TUq%&~XDsb&hK5>oMK27vvOq%D z3ud~)Qbh#CyN1%AmR}Z!B(g~USc@8n?@XPl_o}UyBB_Un|D}~iq-$ZDCEJ>a2*ocB z7vo>qqG8$)dgiCzJ~m2BM*x3@rP7U{zm^thS^j2WVWGrayiyj;$Dcuw;Q;<+Gs!$Z zRrXPo0r}Q1LjK$3p~;W!8!TID^*t-4vqhLqVB7V$91-uL`@=i){012CW(i^GN$BsV z-qOOtBL8K=pCO^uHzM&wo*Dgy2#B9MTzvHG>C%(O%a6y)$8bE>mY%Gv9Ub$N<+ah1 zXHOoFo{ZNHSD!v!TI9#m!|8`b`Ncy!u_P~l%9%1&dwhPCs$BfO4Uo@e%qInmbZ38Q zc_WzV@MyKbD4o8ZQDW(XRt;LQ4f-BQIk)vU)qI>ld{dn=19Eib2lQp>!ttv>%v3mN zu4Yf-+Cjv7t`N_Qoj(>-%8Ff2c8AdT79cK?>ACr0|3mL;n!vc{Mp6(WI1*g zw3^#~ybKQ>>RlPbGj$q8^V6LN|*%FPdJX}$#9xJq?eA;j+GzMo0sQK zB!!HDDnL*2f94<>Mp#&S5i=3|&iWENM;@&b#_RQbJlz_v{085q{^MEws9$wr671|l zfRK3imzmc3G!cNAUQ}F;fa|ELx~^1Nwmx1cw*)Fgch{_AiRS^7h?@DlE*)y~);wYJ zk_^gQiRejK8Pt#JKJxUL$boGE99E9_1dUawra%Yz+=iR7)Y)SaeJBz%Y)7J&{Q}Xb z&zB3Ok30D*?y2+ZHVH|T^Ruk$RvpGgmU*CzsU`_ za!)iQeqM=KcnHGM+fp8kI^1tRe)iix0Qek%gE?BKtXAEGP-Bz$bS$|gHfK{g>Wz#= z*QuH{P&xfFxvRnA6p*YJ2c~Rg*zpUkE-BuZIQtU2>$Q=w#RUIK3GM_Gb_FX+6ErHS zV@!(c$q648r_u|RU$wG?E{{GueOCJb_Sh<#0-JZq*J!^a5A7vaF9a!ov;bML#0d0B zb1hDT61^jrLA)!BD{7+m`O^Yx zCyF!Ipz%eU=Bylqg?H%(?3+ zdiYPqHzhTM^p!Cr5V24a*$7big1H?USYkxn2VgaNsONSY&?-I&m-LC^tCDXw&sLXd z!OPk5)5inlWk-%SqtH_C1dK5BOiACy3WF=Lrs>zDoSXjxW~E3mTP(m@dIT_5IbHJn z%{dGrkItxL5xrz^U6rr*wq%c|-?=>pN=PHGgs+u?pXDJ1q7ven&QW>m;y2MQq>~hh zR7xbtsJd?c%WE-bZ#*$_xNzcI#29m8?1AD`o-vFHObH$PwDNH>dvtcjLmcCa6V9@k zA@32wjoEHbNvTYO_&|USv7B?cPbu-6yS+d_gCuayeQQ3US3{a!LY_)AHrGy3;^oC~CE80ey>T6X~aj}))au>ktM!q3j9P46djb4eQkiL#t; zTkwJanxYMiByPtsboLvTo}9+Qr$C|M+_2_)mz%+Mbp1~84Gj^;uNSx#NJ*9UR~-r1 z{04jT!e9qYDG6s*`67zx6llziuK;DG8H$I@oJyr6;d?jOc}Qf6h)r3YGM6zb519YT zT`Rm%fs0^eG@X3;7xawU_NY~)Esik%|LnbcY@}&+-uKPkxA&rzb|qPo*ZOvLM#~;G z@6EnY)3YiT$!>1*wk)z|X0=KUSyk+&nwRP-vWHwtwh~KDY_DPoMvNp7;2<(=Au=o@ z7Nj6fqy{7-aiBPsoxp%%1F<9bVvB*~%=`p;7l+ge_#KGzwsy z;~@X}1;FKl{uXs7xf2S<5#>de4S$V$VL&`$K)gBmc*egfz;>0LfhL5%&hJ4D?2O)l zk;>3Tnw(;Y!b3GjmsQmwh?E7Pbs`Ph`}3WBUUm;XK(I3}!-J+#zq3^F8ndKr!CQAv zgPEbUY{FX^M60q(vv7 zwpyiNgUrVq2KH3(Gf1_VJ72%x%km7yB>o$E|l6i;LVx}>WiJu!$jRRB$_MdK2~TX4|Er4VkHuu0PqwJ_VE76*yBl! zzwz;E>KfNSD!ajh4bfS`?MhLv9wF`M6c&J|wAi7_$9qQ%72uuR7Cwvlw5djYAzmT5 zkB&o|f{58!opt(R0S#l)RBS2&Z%%A;5Ghbf1<)~|&tj0O3SH{!J?2O7FLJ*l zUS51#%q<6>CR0;|bI7MruI-ce%wBr(RKUu|P4U!lW29S{Gnpggl8;SYH)KGWUO41- z(@Wb+4L#5XOPVw%ns;v0r) zqhQ)ZJD8vzaKwQ0p$j4k>Oi7+j^o*8@rW)SImla$C6(TQwhBN2%7FMvRvo?3IbPeX zP+ECyBZOH13Aazf6|UkdL>!oql15Qdy$=G?nxU5PWUJ)-D`ilm3`dzLKCwpVpnZ7E6u#GuzU7MfeD zkWww(zqzosXe&1s>I+Nv5HB21;lyBXDm+F@GrFh``vZ@1!tqLb#=2r&hMu1N4uzaP za%mJlntqDq@Z>$^$dmV8wxHR4ILjwH;}4+KjE}WINsh)bJ-}KBSE>0}>}RZ{2i+gr zJA#05^=51LM(f(n%+Acr_1*DdZmSJ{5nEI=l%6KT4{R~7L==T7Jzi?Laf*GUy^aWIR(;4>p1Ap2wx8ayp~~ouot<=cue@>t)}AVDsqb9j3yv57d?tk05%3n ziCTeK4UAjOM{w^6<+GP9k~$}xiNKB&%r}4%MktSKi>Jgb8s9-NK(SlSnc-+;3whj4 zBe3jZ#BZ==ME-y(fa`Laxf7nH5c33CQ5hEO9pJnOyoG3%VM7kR86_HBf>Svoa*V2+ zWVkEoPAnMjmA5&n5RHp3Ugy!PCrl3&+BkcA5!eu)%tIq`rjv zGc=NU*$0<&y=MOKKs2^EXB;HWI721e9?MLjP*mW`$PvFx^5;7J#5u~I?d7H8be z(fYj=T?)|IsHVvXooPx7Lq85yr*(CZ(+Oj7vRa}^Pr2Y6=Qb|O#`M)m*Fy9v4h=4( zrGat3)1~-n$31BKeHy-}+c@r3hgCREj*>J`O2g!)i9u2(jG$J@Ii+`DAp#+5(xf1> z0?#XZD-xc3umHzypRVTR>T8M~=!xmbhtomRM5+=N<1;93sj)V?Rl`67QPT~To;FTR zpqqKgAm&Bee2^^3gW(E*Eamvau7Fh*IgLC=WCF-hSG12R=aElV1Es!ys49a5@^UOK zLlrmY=EO@4G;)2l(tfJ+bH1XFs)Bc^sg9R|=f~kS=|hsX!a#9xnJu?ract*|7EiEF z+ve!50s*vqDLD)SMx=RPC$M(CY3-a*JdR3!_paR}D5qH8SiS8Xm;sKCN(*aBV;~X> z2^ji2mAk^;9G=XGAGo|e3KTf~S5@PhrcCi}ToYtB;( zkc=%tl(qpSkA!{@FOVTlwNx?vVW@$$im|~zHRlGd^&BEP8N;07c_^D(OdSU5gKp^% zPSreo*nMDSbzE?;ASL(h+^+ZLXX%LnI|%!h);!C$c*bdYs)J9(imTXd{El; zOENa5PMm?(nMcnnfq&hW2usW&Wr_i4w5$PU#|O;8N8NK7)WEKE*4-i`tT>a9dfJni zm0_7C^i7BlqpDu(On2vFo3f~5k*arfw5#cG5U_!@I0(VO^Fps0yX~mxAVt*eJuCn& z9*;kGwFhXa2FxAsJoLU(bCvpARx^e6(3?{EDG?uL0`Wn=1zJen+=#1#ol>L|gBJ?|TPHyuy!1=72MOS)`L zqRJ4a=ZF$-Ri_w6{vZ-xGwNAL+ofae!v%=V1>;adQs5uobDwS`ln$}+6ura4!;rMh z%P|Bf-nCDMF{c|nHm3RG{WH~Ds z?E`fS>7ZB`u<&Hv4nkpO(P@Vv8d<*=aGijaz7sC;_hmO2;2*kD$l+KO3=*hLF)z{IO`ctWohLg+AsMG`AlKqw%S6{}10&45pn z|9tFw=+wCGk?Cb3ip|BE=5nnHwWL=gAOc)5(KLJ2cejTX3x;HE-j)w&CEkN{GmlAT z>gBbK+iR;+OYcIHl4F65J3yB@Aa#)hOInCPiA7jrs<6~-)EoCaX_tDI8hT~S8Hef| zcEL(d;!QO`M7xS4E5RKh(s@y}WjXZy=_Zo!%%1Z3N#dc)T1e`i+ZNV@h{wut*6?RfFF35_NccovoB)Cs+yw6<)z)bDFWYLndFI)QkPO zxhE|;OUN9M#k2Yz(e+@eE}#Iq_!lE6wh+f1$fB?pjb($kA?&XVZ&fjtyT=6Mp$fGCML3%ab+AHmqk}URd{yTCS>pjYhf$SlY_iAA ze-@Ag1f@Nj{(%fs-d@=(M&Xlo&hU7GY9E+OU_u33%KU!1zb084gF+XwyXZw4ku`Bk z%r7ie1&_`#3)E7iO@-!}mZS|Jf^N4f^*@cKfFmRb_m6kPr3xo)KcK2t)Mez!lGZ&` zp~JVpcW0-CdZN0iFt)sZW=#2)18~X10GD9!cUtQau`ljgLFT)oQ`6IYpSeD%9^Q4z zRU&CkJ6~(+`qZls#6;bizIKDJmAoP?1&$WRw`|**F|Xp;RYSuWO(FSOfK9}$rwb^7 zu5VoNUDwucp{jjaOx`e$7rq=9joT$BOTMaAvxrEfJ4kQ{gO&a0gm7)Ll|sX&`G;#D zOpqjz{Jf=hOh_b;E#yL37w3UGav-BCA|x0m^mDVxoWzhc$HRmN{iz+8cA1;N^er-E zuxG0rr$9#yZKYb?>o7H`;h7;Q3Rq@{*qraTMZd|bSA^rM$6LBkxjlpB$j2kXy_ntP=p@O#!iV8o?J{ zGbE+(OtHv-QJhsFY*6UV3ipZXQlvV?g5cRK4uFDpZ=|J1Fq>YYb33B4siLmR4P$JI z39BkH`}iAf-n_JOBIS6!9Zf^DEMHY767AvK@`{H12t z2B#Dl<7uIShTyU>Ekv{;AUo5RI~teITnntV1s4F54ZO3@R5GhONTE1%*)UWrU>>!`dMz?|$ek3;s9~sTwy=`A$;dkzVT}ON@VW?@k0;uWQqvMf zw9_(z)M&VP5sc%A5?@!qt8uMCY+*q%w|JK2wo8j!RpEp*`t1&g4t>IFzT@3 z9KN_3Pz=T-tw9;{RNsLYW4VpjoxWq^Cpr99;ytl|^RcpHoGU^nT(yyJN^9HP zTLiy%X?YKfX@fCf#(4lnvFTJI0;6M5$)>aA#3`V0Qoa+ZhWS{q$b*BDj&H*XHMskT zh+58_ji}DQ%!e9{a>f(%yD^kV`wKOWH-Y>BLAGx5@$Q+PmzScDXThvs@TFtE&eb_4 zvfthr_dje-ex;%??J=^0)^Vp@)os3$b7-&}g{L?K+Te<0EU;vj3C4;*ToQDG_Dd=< z6B6l52N(N>ooGkDm3vCW6Ys^iDoU3Rvuf*joNVz^_yLcnxi%p#%M`VzJ{$kBL#wtK zY94b!?9_2gRkX4#`O~&ucOvH|g9U)h7}b~uOBAahaRU9sITw>h?kQQc$FFvP|KUM{ zyu}OBrHoUG8S7P)S*}N8Vqk`uOxiAhAHo2s-4!1yF2m5%z^@ zvk5n-CrIuE^t-Wa%|jty3Y7ytQ>ju0b`~RAWSNo z9u^`#C44Z5)kAQjr(7;7_K+EWHkMS1X-$f0Xi#PngK;9>htriVAb5Tu5=4Q{4@c$uF~Td$L=Cl(cvRFvUUMy{#=s+>;r)H6>$ z^vvU1lQ*9^xb@_{SB~{h_tp~@^Z(-GMsZI$lTSVpk|vGP>TZhXj$+|bJ_~Q%MjCKa zEH>{DPAbIi>jlbK=0ix31>rfP9S+qA$*<8TIFP5V!nd9FNSdE{o0zTPl~g1qYjl~; zgAJX62D4*Ouf=?)uyb`G=mzE;I=>JrFPz3#lhb=COalWH9OvrbIZ@GPKgZ@YVFY?n zVFib+vb!C~rN5M|iF%*6ddoQ0lxK&~uG{-vY0JYfHwebqN>Y=8xEnkUyPk?G#NuNm zhMHj4Gs5FyzNl?ziPixyG+hXbK8Y5E>6YXQ73nYXJlBTPry>igzPMb2c^iMuFKxuS zmXXjxncss#@rppqu^WOKMKu*_INe1rI|DGQvc*J$<`xzqPx}#5UU8*w-6$z%pH07iSJxr`8A%|K4VMiw@0}KS z^LVJay==|6g(!9O(Jf#md(~J?#4ruIl08{`d8csK+S*SL(j4MFaa!ykliyxzq9jLM zU{&v-OaiE}T^!EYLanwis|uM^^44UA29AJkCoDbNej%2p4IrF#NI%q7H4jj}?4wkud&iH_uuTT>&+u5vE%%SOc+t2=GQ3X&;6DdnH+>NaJbb!Vm~b$)jrfR9v+hXs~)YsqbE*3CBQQT`K^ z{7P33?eaB(o7Do0#XzhxhEg~zei-1OG9q*?)!|UqkY^<}H5|+KW(39LcGN}kL|6ss zx;OwHkipm-fs@E{Vj9^y)@kDJ;GG6;v(_*v8q7ihB4$JR#Z-wy{%}YcR}+vkPoI!k z?$ymm_&YS1Na%yvE~oI6Jh)lV<~{H(lTmRaOWClny1qf&KC=d?kg8suu2%7NG9nzH zixV?BrpovT94Z{qSTt5;>2|jd_V$OVM0U8ay_-WEG@bN8yQd&3v2rNpnRjSsWr@=p z=q}+&6)En9ZGp`9qvF~9eF;e7!MKYbugx?&L6n>vlU&^3A7cu+;O67WKn@zh*6B-W z6#!wc#E)%}7iQ3#BYOh1-3>NgThCop09Z6LXinx-H&w3~qn5MCETm{qWJacmGA z*c6{0sj;JDoJou=ItjK9YE^n)$8vZAwtJqMO^-vRZ48^maW_BhB5dU&+h z_G%+A0mMi^Nb=|)kZs&9M9W2O$Du5PuF(AmOKPo0_3d6;$64u97R@$WU)lmfG)~Lh zLbWS+oE1+E$1>@-P*GJI8P^E(ZNBpu7o4G!gb2eh-Ye3L1 zVbU7=^{CSVO%j22#9bK1BG+3;7FgtB=$!PV1gYt@U}%l5zqqk9dUxTjKT-}O>9m#G zi<7oMCmKlcN>4stsyRzuDUFdi|c|yDbZg+4MiV>TJ3s3=8FZVj9GYcD)HXDaqV5-=dfaDZHl#Z;#$(3G{*K+%Bq z0SnIYKp>e%Oi&qp>*DNIsd|&C8tC(o%{ zS*nj(+3@nih+i3uHKxLxF%OT1bjwHawsYoE2s$wg(eHHt zx>@NIX=<<9$gh4ngcmV)g}V~WBUq`$psLAb)ryWH+*xds&PR0?4I*_+m;2mPjgvKaUy0sIQJY6xr zExb;&g5RW*ztFU<$R71|fbsX%Q@R|P+mY{8iJ4aqDBFvx6;A;Jt8~NmF9DTh2 zRcBxf==5A`T0!`2!X{j0gps#MJ9KtozF2{E#l*(wF1L|J)E{7d1%n`7u8k|PG6fNfqn4zz zD4<#~zux&x48w7>p$Ptcbe+zReEvM=d;ZB&FH}q;Z=enVjjE@J5|AJub37ddiibL% z=9YsGLpVr_ zNBq0@=z!%uLdSOy8U&N*T77OhOQKr}tn4a}4ou60z_N|j|6sUt4CtX~geUblfo}aw zlV-7X+|qbxWC+?6so973Jq-hh3|4PAWMDa;0hIRYV<6yrT?X&6-y7%}hLJ#lR@;RGo1{Y=k{ zzs6)+r3~&u^W@O8*cdd77b^_QN_&Rm((;>&2uE--aHj^T;>!zUn>Du@4lV_n+WG?Q z-t0E)O!nKUXm?1%HfG<-Qe&mIS-AXi78(YP5?dIN z1%`=NbM^F6@nKbF65w8tpD=xO=GyfeH@A0Mn2xo%ItMSl@7al~r&kDg@=yQD_Z8tQ zzrSCWC?ckedDt4DyvKW(2qclgg0%3uyro5;7?~A&hxM9g<}j6zVJ%3B0Pu_Th7hbf zMg8Ss9RQ1)zyLwqU7o$qJq8)kwd4YkM7cd&a{?8T$W{|$P2L8izL5H-N3R#Aggh@U zAz}rVi8g6QzxtqMSy0nR=E&%6C&3U+!0wNOsmLzX-f(#CGoniT~v>S-Q zs;}A3g}Xv?_pNy@PJjU=#apZ^9c{S04-LCiSC)(XZ#5yQ3vvbv!$yW zfU1MZDY(ckI=`Vo5}TE(^~0&FtGq=DK^hchBS1vjK%U(j$>sw&Q#{7qbWea$$1T`J zXC7}$jzyJ-Xq0Q3l-{$>I!MN~CB0sP*#%E4pdA6wHeu0Ht-I8giR%y_bF0NjM2u6Z zeUS!7%cNcT)Q=CPOE$N!GBr4k73~QKqK>SsViH3RAqE>Fw6=UrBr3JG(@lqF5y(So zDA+?9iQuaeo*G7jj z6$ojD>05Zl_WtNm?>@37Uom)tD3PEuL3K)H)JS7Flt~23Q}i|W#oRzmfG`Gn`zkvc z;mSoo?g#Q{1N$-3`qbhzEU5XD5Nk}iu+eahGpG~-GYHOGE9_`qgO{2pOY~P z^t%+`#R!xdGS2W^2XE0lcE7x>oM3|uMd76f8_+238wk29J}9P9A&p$?&54N#*9sek zP<99KMQaZ{CW$&Ix~)BoFwN9N(epvS-PK^eO|X1GB{Hu6iQpFNiX`LFq=Eo z5FD)9H!pQ!$WUDhOF_0rE{w^+&V;wYvnP0j@ppltb&Pumcs6;U>fv z7EPQXml2ZXr&lK?YM~`~;^KzcL{_p^hjOGEtWf%x79y@|+_xyn+HSc9w&~}PslZ%% zzoY0u8^Y6}YDKIsH%3k4f>wBMeKkcqPXmIgR>)oT+Izw$fe5#H`yn;cF-J$meUU7i zO@#vZk0o3UO3 zX+9$i#dwGvaD-#!G;~ol-LzV$*B!ml++GSAEra|vb}_am6S+FN8$Bt|ys&G()l zs?gcC$c|YAjn?&Y&Qdb^kyq&bwS7 zCSIk~P}L9BDqMiYWHI9qVXAJBppW4wv?5UW4NQ?7YUkBGqL08G=@M*48(S#uX7I#+OzH_=!OnirgTknwJ3x zHsHX%Z@SZ~ogM5TF3P;%ezVhwP-d=u79gN}k%~{PLl&3C z&ns5aLzzM6uf%UY2x+uiwUMcW`O?go{{X&X9dqzm_^yB zt%6!Lq_9@xxynVvi;M3JkgMaVnjKMKmc!U%>;)uy@}ZJik>E9B3RXeCJuWN zBkS3|#**`qUPVd_m$U;BP=%bR02E_#Dw^R~VwQ`W4nq8Nb0btVNRVma5V7Z7sMLd` z%WCuU8wPcvbPms_J+)6-f4FoZpaIjg6x11*Pq%G}#7VdkA%K(3sZ?Y^=dTL>F-4%BHrs$pODJeJ{=C&h;okn`mI_LZtV@0esK z?O_UR4%GaX-eZM8kSF-rbWAf?GW7^vfsT4nx0>=$D+Fgt_*?_EAZD zN@b5spSt*C9v{b)K{rE!I?6g@NDW~+wi^+Y`{b$1H14Bm_|CwP$n&pD3la|l@itEJ zF5K)z;WPMVHm$tlCwbAqgFmekFwF6*%4Xx;$~Ov z;J`W!ObB^b+%K{mx8d0qpXWqf9$Ig5*1mFYWULxDPZDvuRrer4?kab(%5b&qBhJh% z#mdK?0!Qfzy%2C6W>&E9B+Q5?6vGl~DV~;Gd>JC%NzZwd#nJ9AgP)jVmc0_{Gx6fR z#m5JBe#u={-EBL^UPZe=}u^U-_Z zi(Akc7vLoHi7`Y=*)z2vZoaA;k?ixRIdSqfz%(=$sz@?y&9M;FK;XyJ0ZfTs?8{oC zzOvQXsO4gy~L?3dA>G1VoL$0B5zX++jC@2H3#!F3_=n|kRygn#e@yJ=Wj7vC4LZ9mG@wVlHMCU4cS4w=S16Z zlsC+m-T)NQYE)bD!K_bI7J-N^li({l&q0KU{_HWpVfL)JVRBYENz~n+NQl*pEM7<6GUyzd$is=dA zV#6v&DlLF`Xbp?m#f!1BCbARxYm8KF9hWf!8CPGh_FYgXR*6g7J?bv+9X{MJ`nwjA zp$J%t?V=(Lb><9ViphEuBy$09ap}wo8LE_ZysAp?GGzPE(;Eu5 z1Qgk`$i2S&hRrZBl?~BWLWY|q*1ObKo3X}un z8{NUlqi2)y3>~k^L@y04)=?ScQW1z7*9VF~+!L!Q6tlPJE%DVXG^^oCc!kL910zmA z4`e5YAg_bL{Reb;F;4yGDISa70?kQcIA=r&!+^|#6Lli-QLTn8sz;kRgDsS8(OQ&6C71!Jfp_kqBniU{T4-49IO@h4gqj8d*G)%2=d*GPNSAuq6f6xMiQ;uM z6i5u5{Mr4N?DP;;Q{@HHyB~6&U)X}@3}t|`(iDg_?>HAa@S~We`ki_Ox-2Eutvz4; z)1-tvkJ!b(dHYgJ4oN1)G$jWNj&nWOg3C^D4GJXKoQ|Y2x*M7*Sak>&y*Wid=IYfO zSpqluG|DtY1)>PVI7Vg7ylUs-aGWXSMD{lYz-YW|nD-XVCCEu2Vq&;(ZD1Q2oFuZkQp!u^%;IZ|X~= z(gxF)JgCYHjhCx6KIt;sSQaevx~&;Qff%QQmNRy#7-f2QtkS~wrOXu%mXMahY@wq^ zms~ujbJ*s03EPzQKvFFn563r2$oL*2>skd#kI_(Q(TK?e;>2IB(9b|(%w+Zvs0-Qf zKy-%q2E?n0kuQ*RfEPHR8W;@c@q>L3V|mD?K)}Nq*u|LDgfK0!`NRX~IAlAb44U*$ zgjo{>J4p9MrAP};TZ>nPIAEY~fuEkgBWuVM!Bb8yk56j8U=i<^#%sU0J4XmkITaO* z=xMT5R&4qsHg;gsBHCXNoo&~VcsPx?6);NCqnH%9yADbwy@ zi}ra%Jdxl|=3DR{n`X8OQ4Av(seQ}Lj`dtV!TdzUU4P#U6c%xZz2!k0p@BH9idg0#JSZQ!W=o6%RFKuRHql-75ZG& zR9a=(=k45OYU9&O1W{9J$-(V`>bXNt_KoPEaN{3a3@qZ3SZaaUR4CQ)C5^=reX%cE z8R2D%Gb$B2ZIXTvleB$w%vdghUEx4h^&+%!w%(2pyeTn422CRSjHh6

btE* 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

?xB=eR0ttcLokB9OluU)LM=rv{sk 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¥nG_K&L4nj=ZvLasA#||%3fVmT*K|rVD_VLCo$@0 zas0TxP8guBu#FuW@*ocqUc**j32oV1qQdyK0`%>+1d;{0a<>~ydR1CgrGlw zoe-0?pY@LS%=c7d2?vPck3&0~y7Mtv#webW+S%$x8^fGmsx!B#3okr1@>=lAN6y}* zf~=wy_v84A@dF}3rhCa?5WxuqRj

QLjb?Eb3N9f%5aOjl%kr^q!SEwEBl%5XIC% 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 z%0A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 z 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 z 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%0Ad~$?Nogwec)D#c-ed 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

sa-&=6?D$96Il{*Lwuu}6to>0; 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 z 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®SgjAX#in8EEryE$-%HL8J(~~Uto}- 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

6eQi0GvpR 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 _FBfAhyS^V8 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

@PUmQ@`m`-;e^ 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 zΠ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

wV83T+@U8$qkoN6hJ0r5?3PjgV50Em5Uz zRHe!gv`YQOQR+IYR31tNufGPCV_3=QhHiu-S63_7>C6@Rl1j45b&(_2F;*_>9>F`H z=UTbiN-i}pJ5OZqFfhBRPC=C|vW(%!?D-8_W^@h)Z&F|CEo55%;KS(`j8E{9BAP6* zJ7jIB-~}Aub`R<@{B>@nbXps8D`k0o<_*a{4`wQXW@=5o!;cMhG ziJt@Hljq997s+R1e&)z04W{s~#u}RP^ECP78QyRk`84?1Qa%Y_xRHF)I8D7ZmFsCc zMikc6VU|Y69JGmZz8lHOA7$XoqB&HL(85Jrxt@*pgI)%jK3K{HOnbK4a%ZCvPr(Tw z$cTgj{Q>&T46tfvt(^)Qp>mvq9M0ATO-DU?b7JyVyS1Z%b!csux(Dqkaks|tig?x? zA8qXhM{7s1HI-v2ayVQ2n_QVxeaqGlv~l+T*e0z#GE(|>))gYXC8)-j@oqQ;F;oD#uVb55VexgliW@$+!4>QuZ{Opfm{&bbSs}so!gv zhyf8tknhOZADD$q-=c`;bl{WF^rKK~nM#WG6w{C9R21&Ihh$Ry4#k3CNL z3VW>*=KeD5$lVtrjFg9)AqjHO6gGxEIYftKr^@nw30ZGE)9{~$r8qc$(RK_C&R!{4 zo!6ZS}~x>q*H525vt zx)Z&Q2EV}i?GY=r^p4O30h}q=9SasCF+9YdIOT0MDF>JuNF0HnbvC0d;jqtUoJWBH zV1bU)(nv=n*k%C)HFF97yy-)8>lH0VMCW zQ|lfk)hz#fG#&5^?<}kD(Yu|e7`Rs%@f@3i$?K8^lF3ov@=HRw+mLg<$`FSPMq`=i zGw>OrUmyv!VJLtQNt^{pJqIA?IRL4r0NK<@07;Gk$kbyrAQhu!s}5u`^df7=$YBfG zIwp+sg1kH2ie^07bqc;x2`0K|Ui(O$pw! zTMg4Ns02mvrKpiN#&8aEJRqT4fvNm;tZmtpuJ)Q8`(hy%WY@_SZ5z-Es2!M~I%wZ2fh7A@j9%L|1UNT=k~+6>PjbtLpZ z93fCO%-1+bara;xK$d+KjK)FJl>D+~ph6&-ltWG5YOe6<0u3kBwnKap&NaXe`n zD3?K3n;!>xy{j2*_A^b!~oYf(Gs1Q?nK>GU+#934NvClcB zk0B+r6U$LnfWscw0W+BII}oK+BjR|#S38IF>+XREcV)dek&6S-d2EIA#UsPx0dcO; zJgt@@oyu3>n#wpM2DR7iQ>dfbs&e)H5p1MMqTRG98&V| zDwiBn3MWX~Kxqw0>ls8+5Wh+M_9wm!zG(V!yh>#J{%Ho?kztxa_szgGb=n#Mh^W(4 zaRfS;W&7)ujFe+MI7E3ftH8h&2DAUMPe`Hec7GY9D%}?6DRfMN?J%?>&30{#LlTgf zM?gWq34@!yV6zX$jo!mh z`1o2^#B&1D%l^O~S`h}az&|b(nL#I^q~cK~WSxNi%adTByZfO5LvWIE+wm>+9uVPa zD}y*SRzkrFL%4&(rg?ih}Eo<}YiAYN!ryybyx)PTQOC8TQcM)|ue2HfYOA;Q2P zGLF!zVT*V!C#=Mjl2bU4aJGCgV#3&xLuAC$$x1dVKGyY+1qd(Y5Ccb}hr2T>uCD!6-;Cxhk+GRw}Mp$?bBq80f1)$fX5j?o#@v) zbXX$KBaPI2E`G5r`lNGhq_C^`zCOva^_K6$b5}bcAaFTq8V4@f=;TO;?sFc( zG9*R?PaLtyTK1XleUm9u!O^dXi{)vL5I8KfXXSTV+8q3HXwcpAG#8WfUGp=U(cCrm((i7mgf-tiUj!xF~G|HoJZ&e~w}luy(Kx;8;2SPm0Em*w!;O0^sc^>SE@p$QMR zM?~#{Rzn2ss0TfoDLqrWs;K?tDN=ias{IfAaB&k+bpzL;0i3c?6SEY+g`NjdrQtv$ zelYHBaKwU$XKFJp95?_6*$kf|Ie@;w4LFn*J`?(&O2#mS8z51XkP5`f0N#xc5c%M) z+1E-P9MoYtZaw0Ze{a)Lbh0+DP<#~#wZ2#8%HW4>g|XsgK=ELWxl~)^z;}nL09;oO z0w{5!4`%9(rkp9rkit%0Vu;HG${m~v$@{t~tO5*LIeLm}8>)(iBnK^BkL;E$G2wk3 zsN8jQn9|rn)cGOb$1IkEuBbS80iX4vnnhjjd}=sQs&V)!;`v4c0PzYe#S%m)kqDEa zM3Sspz9{1P1exEXRYZK=V?UaO0Z-1*GI8SCz(25-~nFjCo*boS|F8azn_gmE_{ zT;Mb_5y6^6^5!xf-utFWE-MjfAkz&--C`BbnKC@>nq?RX=#-6KR_e=GQ~@^j^Glp6 z2-)M3%z@Qw2| z$ml#3KNevOBu=49TTRDKAUBm$@vT`HGVCypZs@VpJraCc`F(p_6dxPhoS*V;;q!}5y1FDVl z^7JScK_w|nMXT3+%FZea(P;fm3sHSQ0}43n0j0;?q9|ahwh$>r?c$>>E6VLee_FnZ zkx{F0*+>Q9akRB}wcS=@M_Ye+QQGRL+Bzdd|9slmmwLA~Sp~`t89rPVDLzT z1MR^XDMG*Ss0j|!!-a-Lzud$pO23qY^bpCkq9cG6g2Dkz4tNTV2bWJm5*36Le_{s= z5ATTXV(viVu^cTwq=Brrk~nTsayCEFaBUpX3AG6yZE8<+USBa(gyK~ATc;pj#d|&p zA!R###jg@DI1faDwZ6)zYK#dy1nAHf&+Vwbnt^+TE9tZI?`U`-?fiety$N_!Mb`hH z01W|QI;gF2L81l)*Puj$iYBZb4H^X%#U+X&ic8c)aStXLX`5Db(9w5vUUbwM*Fi-F z9aJI+?&6N)hI_XS?gB1j|3BYT_jcbbh|X``=lSzIr0=b|RdwprsZ-~iI(5pMXkNIH zI-gaFc^0NllV%PH)zXMMzwmO+WVvT0Ldh2$IjNy}cNz(mH5j?RJk^n_4Ngtv0!OZM zdKd|Dv|)2$t%zcG@}WnrSCVTOO#LsEW%{9a9m8^(b_-Y5(v>Lt<_R^nao6*21nPhF3@E?$vU#p#oq|hBE#xq*xXr3EeTk4D zCU$Hk0SYZXAr$BdoQ>ppqNtexOhRSMBw>hU%8jf>qo$GC>|zNl3SuM%m5DrHK+d!e zB?iqQH5#Ao39jQAO{0P~24X5Fm$ z+rV8ip-Xu51;w*NJhKVuacZpkFc@ZY4ZU*u>Gk%w-?lWc1#$ zhtd0xT7fThKlXm*0uQgeH%jctDyWE?|6=@Ww&M=^J_pii56*+i!4Zzz< zkqyIp?(fdoG`O++@FBfOk#~-b4W26DYD_{J!#B z7QfK|yx;!G=;81ohTn7>{Dz<;&O>(T0PiR4X_*ZTKV5RyM-MeQc!vexy`Lf*hId2` z-Wv*Y_`S`+d)*NR?-8BA`*nT?c=yf0`!>1jgEub+?`oRy=^_7D!TaE|S^Or$Ie5oA zc%O8^0#+Oqq+f^M;T_?f#V($Q-(7wI-nrE6(eKRxcn_t>hVi?74&L$ryxknUqb@M~ zE}0mF*Xae<=5@gD$Ly6o;&Lx0cYXM+&A~f10Pign*)Y6+cqWVA8NbWnci#UP{hmC* z;N7wlct6NYZ9m`k&B6N|x$A?sFbD6yX~w6AuPCx%c)RA{UC}28?@12cvI7j>e<-F| zmj5~o?$Ht6YuNep@VoUdz`KaLJ$kq|0B_~5g7;k67uxE0eDLsytnUS@ZLNwNWadN;GCa2;P-~J zpa++G47uyWZ(|PLGXn5Vr^tr!d+xFmngDfc(>2NyP#(d-ewQp83yl_ib|H{4{~$CKdU3Wa|N%<{ppAG z!@H8YJ$iVaN1qR*6& zRu0}v0`Q(qkqzT_L=N5w1v&hF^hcwI0h=4V-yIsnuY>4;?>oR-nS=Kxa@R)>6*+i! z4Zzzv#)8}+(N0`%-lW%hc8V!d8?lVyawY?9MVK9rKx}(? zU#R@#$*E10Tfua09r1RYiGuUvS~nmVc;xlrSuaYRVyHd=gv==(09P8o$5AMC zptMxyNO0cit9g7c`Pj`eLKTwh8=-Rgm~dB+ym(_5#R%0_#%4^kdnltg6FH4i8XmBS z-N^@}+y?}c(+Ia?lg{0Txn|8&&LA5x$GQd-Prvo&uy;>iH48*|HsWaV$G#4Lr~uGe zJ+?hGs+mZN$~2X1Yf9}hl(sG9Ox|o(wb^@jHc{10P6Iqo$ zXF{yK-_21osum`X>Sps2cMWzFWGneqz6B1QY6^5}6a+cSzVE7G`?{IPx1K5J|IuN? zwF8;B{dmtnR)hg6$ASg|3p2j#rMa$q90`XU+&u7D(7PL1SIfQKo;ts)6&mdty8*h^ zZh-dpds4G#LZ&cm%nM6a(m-;jE!?)hUgWrzf?cY%jI) z3)_{S=a;`ETYlA)Z22M?pR%>+g4w57p?X#sg6zc?^&J1_N!(%_d|Db&#J~hYa4Wzm+Tk%d2J>$ zxoO=^;ilz4DI0D%zxGh$KTL5C&H}7wZ;wTfOP$#d0B>`S3-Qp45;EABSwS`gcGX$B zL(-8$G~wJEh#T;&R-$@(6pR;hI`1|Pie8~{z|#07)l|jCz_*+;1)JPGHh|5WZ<~~t zy4Q9d%7%VLm5>+&#KN{GZ@T8R!jaE0qLrw2q8HK1`l&|)Q%X^-a8Lcw9~ky5+`tSV zD?G4wiQNXPno_6G_}EwjX4Ct5<-R#<2g*V`4?hELKgNQ&){tYSuqpWbr47RPVC$SscWA3wfUqiTZ3 z(!avwnE6OoFbOQva(kfx|Nib#RIEi33$i%8w?=8%ww`vlzx#QJ$i8<@!vDSdyFbF0 zP#k&+i_=llp!-{5kmhkcR$hP;Tjs)M5quBj|)7c*6q4d$V z?>!&n!2R7zKi5DbM{vH2$6vm``^MbIcj%EJ*ycKOVf3n)<)s#o>Prmm<&}kstOIBr z<&{S${afXg(UkdRc_ru1ms^Z%E<4_$4Qegd`Uf`W-z6cP%^R0nX%Uf<(U7-)Q>saU zD@}(}`oaAh&v`brpOzbFx{<1#guD)DgA#J1Nyv8@U%Gg;FCjOEn>V4Tro#+_%5CE& zw-besIETdQ_-$@~UF+IN?`!pg4WTQkDcrnPFWNeK#goF2dT{l1{A{&fXlywV`P}b)#6qVTfW~4A8>n8Zag+2IxNFjfY zq*iYmge}0iYLHeI@mm!iQz~Y?oM%I2M^{rZzdctu=J)KiavWLa9KBz+g^6AbAh)XN z0DQk6vLx2+jY&!^Q>D^;^sh0!k$MRnD|yq5iG~Nd7j>&9%ZleHo1sOt@?56)*5thk zbJo#5RV^yZ@oAAgduZ_Wi9Cy33xv}8T~rsy4EUrV@=Mh~#ublE?s=XcMXA@r`VxN$b(?FEOPKl^1K@IsNV7m9f#EGXmRo)v(Ww{<$9ax& zsJ}p*?ALK7iCzF-hm^Hzitd7*%0P;Lee>{%hobX|7Fcf}S&w{Z-CX&Zz_Qj{kVSJ%A zp-f+H-;}n$2s@ zgc}rdR-sq5v4D2f$c&snObv zn;IC=PQh66i4VqxuFyJ%d6$yZ=r7&&>*T4xeQ0mdsGLr`@mwMpvPU8`o_o-(j^oMT zFrL=~jT_I|UNzo$Uc#$Co@et>oAI1O!hdBvU%W3jp4)$$8_&OAVu-BS#1NUO=xjVM z`q)QgoALZ3H=cOoc>-TBp0&0o5&6R(vg4W5oDPgzV*#eyiC3yA6dpcceGv0HRARg!zXm90`1<6v(awUitu=E4EXQ=9A{=Rol zZoK#WI)~`TFS7Bj?Q4h*AJEx&$3OHCoeP?LH`aP@tQ*J;4rxQ6rKi8jwRE^^X-%QE zbo>6DwY06@k{>krx88SN>6u$3WjS+;r>)k)tM;4&4kRGR+EVLzB%Sv|7x|OnRcj(` zg)h>!m0&=$^Q!elS~;_8BGx*2b|B-_QJ(!5)Sijl^FctKecH;MR5GQ?=^9_q<0|vu zuUz{idBr9O-;ZoVd@L(yso~}?$P}8RA|#1oI8S45K@@xSeMdC7r6G*Hz?%T`EQBVF z1ucYu14qI|H2KhEUmA;u(k38-Icn=n1`}ShW(@Sy$XYEh)HBVO!hZIk(c&=vaHzz= zi#d3ea%cg}qB{6em`K>#D{3!=C8+*yQomjG9DBGmQ1?C5En#e$caiH=zpZu&V{ff= z!q~Z2IAQEkoV(!6uacbVV}clOFX%0k6U1JRAzp2QKP~B=I2KKwjs7k%YYS@1M5dAj z+wk@8Mc^!OU(xN;9M`C1%CeYV#cP0T;N$xf#pRg$5amq7{y7sVfJ~g%TZ4*$Mf|E4 zaXPMP9qyD1iup7hTA;;Rceo-uJi%vU<3l)rKp%FZMlJ9twNePM!;%m*!JW;!nSO3F zp!%Gy&CXvNB71g1tR;8N99JH-p6~j2vg_kry!tHe&+iFuC=NQeiGR0VDX*m5=8v`}K5c%`iaN-!==~(Lb-scU2|hXa@BPyRceBCWBnOdh zZABx8%*?K#x4{;ImZl}D3C>VM!=k8f@5tdHx+;f#Xlc-YWQ zu}8{>xRyV;)lvH)GBOQ|jLxp79|*Evzn-Q6Q1aB(t{(<(8+qyj;DhP|_sK2ripVld z*Kgs~C$us?ZnKu2qy#X&p|#Xw@ovwjlcjVX=3-wIPJWhK;9jkF_*DdnM4!UF#GfRJ z!=ws)kHd<$J1nJ>4#|?)PUHrc(gOo6T^eZVG}qEbuBAK5I&10mx4f48rSv!7CpZ2^ z`biIR_sJdjjjfgc$$fH#8lZUDK%jDU%K3IX-n3Tz>igt+*0x!ziv6_;GfR7WL6ag` z;F;|-=ECF)$2%5%-gL3(r~bv7Z2H;sRf_;Ez@JY(*HK{~$GZ;ZHNc;d>W=|xsPH_W zH=hn&Io>>qBALk6Jj$Sv+TmuBZzWd~ARa1b+%)K?oV?O#c$77bCZFAu4Z)^_q z-m@c*+5b(S*QN{|j@KSnot*>&_(0PXLP~7}*cz6RJ+5~% z(mWPwJOTEhFKkkBtYV0*C%yn%#2z90!nRXbZaaniX)DCOOCy?pHBN|~1e$_EY=Oz5 zwqD3$X2jXFiukIfP{*6XI;gG}Gj09E z*Bn{uasECEHaokuqIos(@RwFJztAv{=Wz2ent8feX&TFO#r#YxRq^sC6>DCvXs$2h zAgf|oNcKg-3`M_VF~cl@{ePs6^1|KO6*x??AkPEA*%!OI9k8cp-p<&vPfb5%j#iS) z$IJQ6L{6rM!R@ePdADh+eN}HeYz1HX+hHmV+aX%2>!>8k*y~QB-1ZWGn@TLfWUx!g z3R>H_KRq^yARgL{WLxn?b`+oT_a~QE+Uc}WgFoWHg1k3I&X`mYCZny%(itN* zuWDUgJej138&qt$jld&DGCBPExbmPrIDLtTDJ!+J`6y=eh(y|W*&kn{ml{Qr#;)Nl z;CeD`WO)8bte5jgmh9NNvM~IQ>XHFHTcfS-7i$-I+p3<=OO&@zDRoY$$G|K&Z0|S9 zE-QML@NzcwPGO)^xhs2@HJsVojE_^!q>Z10DzAeXG*9{2GE_}3dU^N?ZQ1O+% z`wVBuY+_A|s70L)Dp#fl6ua}tOk@V1c_!v3FGlwm zoQX8Jr1Tb~k7Zx6uWeX5&w)(j6y?Uf&?(naMC#IK7icZsk1WZN{(9UfOu7Bag5#xlxzG>VCNt&gcQ7o1a1N^xwWiQ!z6!F3t1g$fu)_$$Xa7)tr-#6#Oi zIwTXG7CODg?K&2Vt5kTLM688;tOTKFL^nK_GoX_Px?M*MqvPdD@d87sDO4z^Az()L zEgGLftP(!p1=Y{!pL1)DF@ncMvD10q8VOjXCptnk=-ohm>fS+2FUPIgI-r z)of_Wxx>F3#V_Rh&0(8ue2SWu)Obd@-2R2v-;3AR-_vOHxAu3<@(uO3&3Y|{lk@MH z!kcFMOIHOJ>?v*hdw%}ZU$*Tuce~S&fmPeLJf*bw$bACS(IxCsKSZbOjQJOpYo-1a z+G_mGa&_!<#sRWm(S)MVyICTIk|OzC6w8TcpgUFBf_;M=+=4ug z&Te~vo!5x3-1?&9EBl=1v-8!kqUzWenaCfN#iI747PVKMn+*O+vOb7SvCLd#elpT{ zJM)tf9s^4i>?0ccJQJzaimqkr4)PC7bZg*83GKK{KCP=maEr1>U!aJ3Y%AM8c(eX` zy*vrp)eje;;c>#d#7Z#Zie3&q>dQFm-{a6DYtIfyGAA*aKV<@S^3sT>obAo&2~ zCXTz$xmvGglD?kxsxa9@A@!J7u>W@cH6K$<6gW_1R|EOm1gqe|*l-8`nln76HSoXf zU(@`VqqZqfUe6!dm4yoHw9?h;X_}t0{xvH_RHSOeF5cFybj2Q7egv{LYXbf?U(v_) z_}5H+*25-tZ61Hwzh-Fe$_0_<%i`1Kca2 z5&ZS`r)MX%u|Lh@wXNoVBCWQyKi%LJ@$662dG&Sihn}Hvh`rc1b$+CT|APH#Hrr_$ z6Zm;(%8H!*Y2JyZoJNK+yoo-&c6IyhzWqr;Zzi(nY0oN@+sb)=7f&S4MD8LtXn)!% z(9+LuAYyA{f4Z%4k*V@o@;KfOID zI|***15MNa)c$msHW=F4pT730T%W3vYHxqK|LR=#T3*d{@1^6cdwaMeUONJG`|iE> zR0F{-fpt{TdH;QVf-vkz8ub(3tfjz$+`LPCnTGT zwXn>y@4WkW&Ic8UV0GRVLepFr0*mH_JfU>MJ-bA~Tooc~2m5U<*^FO( z{#VK>R^1=%cV@{I_B*oV{K}=>yQ-eL_AwkKXjweo_)IG;TXa5u4(`jJBes=K8zI5U zQ{y+o5AWiV!C1-e*@P*d7-iaMF~PH|02Xxhxlx-2{*@V3O-ooiPI7DW?rv?4-BZ#C zK-o1KL=f-85lgv`b@Whlbx9#O595ZH+^(ocUh1`o&~@38w#?yt-i;?3|bp$4wTg~rayD&kIqb!C_9H_VHpXkxkTO< zdLe*ob4j!JvZ(;Cj2&E189SnPWo&d|>h(

A=Yj(u9MwFRuV8S^?N;ew3vP0ZNdr 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


r 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%0DvOPSpJfH*1C_=Ykr~T3kZ?%LL(M`01uE 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Ỵ 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

qFq)1QYf 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≀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

pQuLmlP4nFBbnaK3 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 F#jWP(i)Zv{W_r(Q&@DE67O(N^?Q9xCaiBV~3pd zYN|*2YpP7=O)8<1NmGpw)i)IIa>GPsRBk|q44DBrix?yiDtc1mgke*C4hd)m271a* zgNW8%)9hKznGq0WlPe^$SO*o!)OyRGX?nBBW240f+iw)h5Fwz_{~aNos{F_S`9VI> zwA&z$jl1-EcBe~!*s(|H;dwOet{(KsrAQThevS0ce&w2=p}G17n9%w>iLKe=^CZYr z%|MbFnqMQ~_=+ZpCIUy9Hw5iHv|un!1MwXR<$@g0LVvsq1?kkm`21)vjH!25pL|p! za5V7s8=60QM1Jl=N91k;0V>Y{^X(5Ck%iuWHzL0a6pcY{L{`W6pN`1uf|Axm8hStj zvAAs}0waQJ|AAfE19Cth>0&aY*pNYrwg=MMDpT|Qtj;ZUoh^GaP`dwKM5*^9g)`{6 z@Jb_|1eM1tkOS+7CbL<>PD^$u!zthtjLFvB)16o!>&!mk;gH_OGcT}?UHyR5PU#K~ zRrk}<>R!LIOpd#Pb z%BG=F44Hs@k33WPE+c8$E6}idkKmWC764)iS=xE<}DnY8n+v&jJBBq^3u4e*uo9VR?@6q8}~n0R1?CWR0*XB>J@SGEHS{(rXi_edEW)u!*ZwIJ}@l5 zK&po2p&uNUgY`BojR)iMLNa$^yebYgm=y=hYBv3iB_C)+ewYR4GN1O6OCz9BAsbcm*>+2p7XlvpcgF7Wy`@`W2m=5sgT zNlA}FlCC=4vOVtZxn>?fP zjdBiDP_P|@0C!(x4G(HMDe=wF=VIxt3Ocb0P`fEU*$dPYTs#to)ECWI`$jTZtTVxVttQq$P zkkxmp10b2!i)aA_vYKw$sQX^maGMqf`TDopTIp}BFa|S8(cC$0B?iup>Qg`QxJFNm zpNYZ5+8J2Y$K3j;eZWQGB_B@le+!666V_gJsx@eJlEaMzj854@&p6UwQSm)I$n0_B zkgGu!yOnY!(9PB7Ml2r%03-{r6@0<2))*f^(9to4-D`i5i z0zg2PK=X_tZLE}z$OKImxU4O_+-)5dadOgUT1<_GjEl$>E`F%pGK+XA!N?kD0ek?G z1eux-gfjBirukHg2>rS)cxXV9CV9d^w-!Dmxl{Q-D9xS}kc{D*vW=}iWp(0qZ=>Ou zl~E2bsZ?v0f3?)8i{UQnr>2fM{U7u2D^Dx%LIgbFbydt$!(5<|eW({|^g_)1ss~N` z7um>?xN8pIVuj09w;stoPd~{a7kCY~!PsizZW|Ul043SDA9z9(HXt@)s|Zl;vb=J0 zH!S8m03H$Dy{3*bFL~}w)(m9J#xeN>+X(&$42940hw7|;$U$)mLr`Go zHvajD&O?p7hl|gMNK}!!19jb&!2ngCdfq?PhYvi^Zi!Mzt(=D=uT`rZB?Z|6n*%9k zD0i(lW!;XfF?prE96$r2?V`wb9#-i=ov=lnD`+kNnYUTNt8MsqgKRJklTR~gE1oGJ z?G}v1RttJzpgLzJM`jY8=Z`KE@1LlpC7z}hJNyxravNi&POI=w=T$@X@eI`(VEfIW zDMKdB(flLG*V$IOq2uf90ZOm0x!nlNh~FU?0Fa#Vv$9sB@y7F2@3eA{l@(Qm7WJP} znhtZ>>94$m$GY9Msx3R7tb#knE+hXTT~oX+6hEcq9;AeMZxQ4Mhp@!%}-3252` zE9*k?o7BLrZctWzm$~}%VXW%2hDa+*8gzKTTVEp8Z8+n;FJ72^fuIW9W!401=GzFQ zy61=Y_xVlAEbP0M{COU0z@=Z*JLDl#mp{q!Teb5nBP}NHHvjaCt(agwA5{(7br~&e z_M3PM%pu22G7x*FOz%)4u%411q zZ)nRx%~(~%%4?5*{Wqy6IXh>FQfk-*#{yM}m#mMJQ&2CgdDTa1sYEY%6?J{bRwS$0 zTU8S&3ID1xavCWiJrr>`MMd4}QHd#$Gq`)bB6-=misbDtCDtVNS0ry)+~gnGv`Z_a zE6drx)mqNV5HV*PccG(*2Wxuuh`RP8>RugqR7>J*%V$}30p+c_S3{((%St8tfVx+6 zk7}uyWgFCQ`BY_Me`R7{|11ORUd#TkDs3)p zWUF)Cj<6Yyw79?jN8za~A;l5|-L^-2TB3#B(Wc%Ds<@)S?9s~bV_b*S6sjs*UYSd@ zm6mvVr*}kWH8oOYe8isV1aU02Vcu)FBa&kzZ9#s$hPxwXuR_yYuk<;uu-Pl^@k;l2 z4Ud}b)()C_plQNgC^AbTevbPv-0(ij9vs(6ehh?{HWZx2Gw`^n|`r+9v z8`;}~?3Rt}1s|T>vXR{nvRgK?7kzkk%SLwTRWA`_BYVk*XSZx*?+vnBHnNv}FndMM z%OZ~DOb$OVU5C#F8MPx(9=|-lwVZ0%V8xx^GB+NKi~$f2&Y0lgzQ{zE^01pJ*di8x z@X*OoCW~AXEc2D2zBLAP%A@Ce@G|WkM9bv54>>So$uSkkTG?_n$X02)!+IMzz@~GJ z>~5FIrR(^aduVy>k0PhBoz(V3qNZ|y6HDGuj#i@IeZ%xuS9Dghy0X8aLWD&%qp`O6 zugiWgH)n93!xN3b^W$HzRuBKrn)_v~4obS;k$T4H`E=}0c%_uMRhF67B2ToUhC_tJ2iQp{x$8`#LRHMK_Y( zQZAK9{L|uT_jBPK3#GvDk~Xw6LR<$F#>XRL9LG=~pQ^@W4vLh*)2qhVi|s?Xo{HIo z6wa@VM8l6&Mu?GWBD7)F_F6ETWA6+wrEC58g~IgQ2&$EK#gdOG1Hpi(i62GA`M(<; zaDiE9k3Z%sdb0uJPxEMN&bhoNkBNe=4T!`HKIad!Od5$bikzH!6L|mUB`E+>?dov; z?u&!~Hj+k~XyK}8a#UZmXLGEu*F$Z^3VqYz{*_j8oB!jHKp^BimrKhPiLAp^PHY5; zl{eqt7cFJi+;je)$P-VnUQ&Gp)am8-LF=W_9`&3XN@&7lCalk9R=jR-uM2{&8{Mmf*dGkxV}x%p@G|`Ry;x+4@$ctNr#M-Me#^hhK4P#5A%C{LbuB9wR^vttqFkSQ8O@7S zUaounvVGg>Ud|4_4YiXd`~qI-%XxG$b&l*VmX1%TxQbX6vo)eiT}VQoVk$XkbpYtW z^KwdRymE>;rO#Jeuk;f2Ha7X6mo{46C;)KE6+(t)Hp;7zbA<7)-V|tzopyD5%-g_~ zA34a_%+*$8qUtGZief@=O-1RNXyR#oY>q0eN4+>NR{C_b?wydvT~7JVi59LF_<|I8 zDcBeoslHh0p=e^A04!IY5|?Mt%xZc;;qqAGzDTXL>xCF&Y654vSI7=fg#(qs9|vFc z45gp|lm`If0+4tv#sDO(rB7pmPZt_&c6N2g7_H{<)iUl=o{2%8v&a)KZH`gH+@SbW zK6&6HYRFtGQfXBigXjwkN$fHWfNH3Wi6Z;GFH)x81jCtS>VZn8CC1A9e%ULeufr|n zDO^?89*VLh2Z#%mxwO;lST^Bbnml)?U@SHmtGv4RFpZYFDo9qdql$HY!E1UGL()}B z&pw8l&mchkg&4*m+vnbk6}}NAODyyzFY&@R3@D{z2@(#bKOGD{Epnf1hnzk}i&s$8 zUR83TeO{$XDG=ogi3>=KCsvUF(0Jn604PrZ(0LAMJn=&M(+k0;xv5X!wj+hjlZ1-t zzfdd$(;tq^A(PjjX0^l$U-g>&vS{e7(aAH0U6wrQ^vjaRF=XKXAk$^ZAw`!a2cCUN z^2=utaO5p!&@@1v_UEFRede`$ybwcYZww9G)KwNMY!^RzRYj=ROFZu->LcBTRb%RV zh|HGmD_3GoCOuxbUHRKB|C)GWeZ271DD&}HXpPdhSb9r5u{B=!TC`~w>6oNADlL6W zG|_47=_GxN($^S#-~3f#e5hNgjmmBMf*4H9DgdzJpRQ( zTfNYW>T$i~iqWvdI%`1T_88G&q<35T+Gt`uJh3+G6Mm07BEEehW(>zf2m>0;ad)KM z5|=AcOjJ7d_T7;!qQ!Q^1rK`}DSm6OAY0G9`I=7 zIzFqRQCu*A3W^oJ77wk7B1azO#*snOjXc2-Mqt9cCRVs3R=6`3I^+$w+q6&3ko_qD^4VU8st_Ci5{1h6F*@n4_Xmo@e6_=!7~Tu?JGd3Q!$N ze)#38cuk5~LLpNm^jws=Y2kK#5~(E(vMoZ->20FDZ89mACk@dK~n$;P?{S`MQnoMDO8|FI5lA+fX;KuL45aDovtQ68q7T5-Y);`Qyu-w_%1mYAO5|Z z8^;3ve2APo7SK&oq6cY3AB0%K4q=f(aZh3@nrF#+O8iqDL?SN+s(Tn)5d9Q=5$+UG zMd)s2%k&1LGktZaDxe2BI=5SYV#K12Y-Ckg8U*{wIUsbdM#-e0xS@QhQ#kJ z4|$wR9uM)Gr(fz6ErQ~6>=PY>-=GIA)+0x;K~vEq7V1hVF*?#BKC06#;5XH63U`W{ zFwZ!}2d9^iq zNJP{Fjj}{@u+(TLPN=7ENey)Vq|b{4fu0Y@CP6bYO1uF^<7si4P|)4v0u`>-OMQqo zq5#y+l5lawLz9b^u8Z$XGfe_2&{8FivnIPFiD;_T5iP|$QzhyE%HfEp%Kr@!Rjbsz zh>Pj=s3C|KF{3mfV#QO65|>B|8=Z8P(H@X;u4+q@60wY~=KLmwvIm%C(^Dk#Hx}mP zR3^#Q&X=+9;H8IigP~s&#CiW*U8{D*?8(cPoA3N?7b^AUZ{^_cGvJ8o6 z<3CbeORl=@gE#IM)pCH2!_e#5>XkA~q`YkFywbP5!sTA+COOZ@muu~KM-5ha!I`69 znN)W>FBbkd9t99fK!w>Brt;6Ld>+YB9a|riqx@VeztsG3QNdYiwM0vqk68KAO;OFw zQ#k?koInk=8r({rz6!MPG0l{CK3yK8hWeu%QcIx%E5uecmrwZ@P`~C1n$%Li9tAq9 ze2bMwl6Q^*xMnu^mSGt)QmzUr?HnmZOB#a9v zA;={G`ip|}BH>`oh+>cYar3dWo@-89_6scYi(;N>_8yA$Bs4`nJWyS?%1d~SUYx`j>(`0sx(DDS_070#Zs)XL+ z3+F&L%WCQt-yHL6^(f)H&wRe1q)8t&^jZyfJ3q7Jni-wt-7EuqE{`#oTOLioXA}18 ztVLMvn(e7(YKWJvPDupW;G^Z78sx;3U+PR#ah`qlt^;rn&SojH8G@k_OdV7g(^zNI zSe-rcSC!%rZ_%_OPg|wZ z8tS|xdB%B6No_*YRTgJ;g$YP`EVMt4K!@JeoLk1zTZ}mGMX{SSA;MA;MO0I0Pt-J_ zOGN6d`aSW)D@>g*X;bM7Q|X&*swG=%J!&wnTi%_@XHLfK#qy)r#3fm&TdY}kn^u+D zWOmr#m=OzYaKKaA_3cZNu`^*cTM1&Jbv8Wpny{;CHOedQ5QS=aza%-(CR9@mAZb(+ zEp8r7vIsNOD~5b7#v`71n|YQc=f#VgE=e9|B_}dR8^+NUpdDrYhJZ;dyyC4Qdx2)! zjPG7CZiGV^V8RqrCAutSXJ48;=^Rd!U^t8yAJB9l8hXbIaX2y_wwD=~L_Nf^7hIjI zAT`!A0zC^yVxi})4g`IX>P0$y^jmJ4M#{vHq3cB2H3ERNYO#Vj>RIv%j)S(ROUh<= z#d}6;o?F}k(aw$)Z%{c;T*Z>GKDoet?=xK*E8e8S<0<}?p8%z7KKtamwIfJ}t~F^Er6 zNwhzX5gVeF?eYl-@uBv8sVPmhNyLdG3-CVAK0RtPU(rn@;#@D;HDH*_S2Oj&(o;?l zEaz8t7zpO@7!!PJm{Y=Rlry4>zKv?V5fGJb?j6k8HJUGICe1V(i4`$%(|RG!luJ2~ z@OFsKMo)0eA&dElkW0&r@oHIFT-@Bb>4rFWf9`Xazyu_MtM_}PJ z$3wehs54WgtcO^Vj^-}&Jbsuq(l`G7w{#<`t9|O;fTap%Tk9A)TY&l!T^* zI4~NSOc-ZUj0^gORU&oZ+V2Xr}7>n!Ri7UL)S=!Fj#=c(^$5}@@Z5e>S>k`LQraw@b> z`4uKsB)73)3Eq50Ffyer~@ z7))mc0PCjhEr;Wk;m;i`cqw*7j_x9jjVkdaryfbhqOD#!$8Tv^h zFs90xJX&OjwmtYyoh;$7s04YH6%;te|FaTZh(RBbgckE)ae;rw^08n8R(QJn2V@69 zQngH?ywUQqo(fsRunUxtl6CO|B8r$`2@?UVgaxUD zsX>A`U^!}oghmqlk`zS9vD5z?Zxzj>%4j{rboYq*KW0Ls77sVe#)Va!T1(-I+)-uz z^Czfd^|+q1oR@UR`lr2Yb6*zfg$aDFe~9Tb{X{~Z)km@dob3EDcRnd07a$AP^o55b zs?)Z-5Ik#wz&qbucWC4#ix7%xN)zE?llg!EPUe+eWliQ=f|rRZ(;mE-%y+w&pVsoL zk2ww$g{=d$&`Xz|>m8xBXel@iW46w($JdU2; zyiuNbqKJ0-OF8^TsNKyOM4+bng&IeyYFSGrqkmAd-sB^yTGSp}8p`q4THrF8h;uZD4~a3r^?Xvf;HVXS zq&8JICWSqsnNZ38A^|hDnY~7{{E=KjmkP(~^Z#aWs2VEaz5qx6M}~kC7U*plpnJUp zimDt$jOd)DF}!Xxh}>uZ?l1$y6f2^MOFE{rgs>1lMvcP^U<}SX#hl79)c-pTrvD(b zIzyHfA$;|cz8tWzbd%Gdmj!ZKkosnFsvhS5*$54LAckw2zgb3!NNP#et_LNuDA`n- z{Aq}Hx-pMkLSz0Alqv^p*BJjsm6AwUXPd%}x-_en??zxd_l{QONx9+WeT(2rF~HwE zIJ;$-Jf^b#m+jiXW<9VCnl#XmyRAH6(+eUz%?bF^1mq(9c~yg^91ehznecOr?TN;lW$HL3(vWTUQ*eB zgds*%BX)=HI0BIm*S}9P#(cf?neT&M*ZN*>o|inSoL;(f3ca-HwIjU&Lu1+sp>D9( zKT&AdqtF}%nx<)NW8(JS0E}$7_`|_{NwD};B||8og2Kq=w25DuUp;g zB3`SAffw@i$Ag|XX=`lK4sIa}*Pkj1Bn_T?^LbU8vlAAZz*CnvF47svoL3aY^&z!g z{zR7iD(bpI;reX=hdM8*_g~!b=Q6;J2kyafLXS-A zL6v$_NExy?6Os3TF3tqxeE~2m|00^ryC~z=aENc+K%3(UpZZ3TWYQLE-t0n&g%GK1 zc+}dMYSG0F4_jOPE4ea8q?}y`u!eeT8Ara|IbAL44R!=-{y7Oxkeb)@8ZF|6in|(B z`(q*mRFdWO|J;;6aSW~w!sFP=cfXB$xxsy{7gf zaqRdvQBLG8TQ(O__KyfVE2U)Fb(HYm`M7&6Se7Hj{JLHl>he-Uo!h1|7e|}8YK@E~ zub~6{0SKDkFbU*q1SlemlXn47K_4ekzTaFhh?F|s3QP+$_rJD&ShHj{WwJD|dI z{tb^J2#gk?*rcl?xg93~M|zEw*tA&oyl7InexEmK?T3k`Z^ZupCYskjL8Sb|01sBV zQ7QWk@8iD8wiv9zb2$Kczki{!U5KQHKU>rS3}Q~$r^eP@c||NoWFDXC;H7D@!7FsU)KIT-6W$67+Ca4EcXv#9?9jExmlrO z*n53_StkxwT*Z8yljoVUvvA6BfmPfJ=gx>`vwq#~F_^FyqRo%w_hbC~s+qmHJWbaA zi}N(j%!8Uf7I6VPAJ>rhEp5e^DdYFTyi%R+gsC_-vcMiYO81hmoPXO?bdHx~GYW4l z$}(4{J}~uWe9%5l+t$I-OJ!sc`xpq9WGm*?k%hQG!Y5oEY22nLLn85p2yq)A%E+@c+Vi?jL*;c5=SF%B1J`&xf*NY( z4x8r+y!_32pM!fgmcNxX4Fz$`Ud!F8P`omEdEe-Uft$RZYjUHZm6tSBwiZS6Ur>R@ z0KiZKa7|G()ELcQ@73*Nc;#qg6+ILb%{#2PgUAYNkX4oIRZ+F&)66bEsy6vojLI+R=gv2Vplx$YCNAX;TA4LMLGsP9S=Xe zwanb%=|dE}!fr48@F7wB=>lz%vly&w0m*7?H2*+sz!e42x{WM>oa5DP z&H=W;jD@Z!;-uk%O!hR~&@`$Zz>d-}*|TNqceLu++-T2a7LLX~3-MM)xezEIEx`k< zvcp{38SQyByP0+SIQcaXr5V+Ptmo=yMO%vI1x4Fk(PvAHL{~@rXlQvff1`2bMYV}) zq3z_L#-Ty6-k?~S6^le%sg6HVB5QJQ=k{{y<9dRGSd;NE-0i>A=1wlRI*)LvXwP_c07GE9dmST!Ee7!7uEDD4p>1=z7DF8?xOH7FPUe9-iYTwKA;bYnPjWU{}H~hhz z(6GRDTa{ue+!F0!bJj{aCq#}lT#j(=kZ7VT8ZM`Qn7*5bG{>a(01(qQ3-w>Gp`w6# zSl?eRSU%z!FJ5V2<0n3Ai?0+yV=2sNaV$CT*m(Yn@kD2|r(MBVjj(Lj`E=~_V}$9U z;u=kNt_L5P!1KUTGMT^L>4_+4nIMc#4!ppsO*E>n%|-3Si`(NTc6dDmD_GiMDYS;M zs5;nkK3qLt9}Jkaj!YE=2Dt^4C?^bw6^%t8g6Yu&3)1cJd|1oH5JdH*A$_ifMGVp(c1|iDo$33qhULs$+>9BUfJA|UIX#e8v zu@gI~M{_XJ7@{`DLQOG72@s}pSt=tRsq16;ZAzVsFe-1aBoYZIwzqlF6Yb5EXm-ov zA-oc>>;SsnF!mCo@>sqzRBc#!5tK)j2;^d|)asxMwq`pzF0^69Qb0xnnuZmM5jdmf zQ*x-*0_|C)nEZ@l5fk2KfNY5+t}0L=qFEAy8Dz?{2AQ`W$N*lbbra_sT1aA2PZSMwT2(NgW#RYpZ*n+^bfpE9f#Bb=zP-HzD1Xre7D zF6iSPZ}ke%DoXw+@k5U@8!=Lfn7OYB|#XRFxrd|K`I9CDAr42IUO+?+U4-~y~0hF$_5Y?$Xi4JMZbq1-a>O3@Y}p) z*aP~HYkD?9$K~Y0^oka?vbjM;MX4CWR@8L_bYC>_QnYS8d8OV^Y*E#*k&J7|IFA1P zwAB%MCtBA^rCSZ?Yo^6y)D`x`u>cG>M-mwPXyImcG9orLw$B)9rdY^A*U$^yvHWdd zB3Y6IflL9&m|1{*i!S$tPBg^u)*Q{>r+oOY3pW`?UScXE)pNoq7TRPonaY@zg+2{& z$A6O~tr8MsCRYMN;}x#=81l1E1DQM*2eq#AD5qN-X-gkE>V#zvbC>I>!2INTD$!Gk ze~H#uKq@({j4SoHXOLS^)+W{+wY+Zs;9IH^YuL$-rP?rXW$dVRv7;Je$x$J6*POw~ z>4x0si0+yZG`%ISa?VxQv%5I*Vf7J#iXL&O=H$gih-~E?^u_9s8l79`=hEO@Z$!`Z z`KCnr;}7m0$PIR9v{a8uBR(pPI9g5)QsI8578Du=MgZj1wG-pMB^#RgTQet7VVvXv z`r}CYjg6dE^D%dFfgLLKRlc-x%)nLr+F>!Mq1KB_$aNuqs=tL2I`9qta6VnQ_2f}E z>VVBrd~urTWp;5_YeV>%XIAUWx5?>Fg3`hps%g`=HJST16R|0KdAN2cdWHjX+BgZv zPS9~@De3GQcWx|4idApn+ZHzZep?6#qUCJUF-to9lQ@Xx*Z6#`AYTgtb}*%#f8${2 zBs30S;IvyZ!!yBbKS#l~Nl<0a}MyS{;tAI{8QJ zF^-5en@&5NzkvNDnT`z?pTOg#EcHLYK=@RB=9KU2 zB%|O2XcFLRrukF)Qp{5bi5p7DY^Q(ykC=xz{Lh#Nhs3Yu?J4HL$!S~rF^{oI$8GA6 zr8dwJ$|>e)ka|VTBjhE6{idtLJc|9VnFsjl_p_L%bHVLkS7UjKd7DlHbTCr$eGP>u zC|`upUo6=)s^8^-oF|OFI;71cnpEKC;W9sz5%;ICwh(me^6^2>wt1}1JKQKW)fdfJ z8efxJWiJ=jl(MgReZ^SKQ{q}Md#`k_6k_7}9)`5tMU@O;d6@Ebz2}GjV-t#L^4z-p z=T{_J!uK#P`Sok3mvlTuGI$A8_&?u>ZhU=jQ+dsi@x&VdjUTlmepFYqt}$c~?j~#9 z@=&6Q({Bpu8guLRmrY+?QTRS(rAfn&y&iz5+g=_ISMBCsd;F+_@uS|2C%WQ^9dW|e z65G*=htRxh%_gloG`J=febNnkeK~amdKO|(tn(5>I56s%nI&wW*H~D*JbvQSoUI&U z42v}k!DKyffpGfi85E5tsNi7deCa<~1i6(=_qb_wxxmJltHlzN%Br}BCmI_NiNroZ zfL46ON+v(3(V|$QBbuz@wmq+By^S}8Ah{>1Ya@Dy8P}N^dpLecW02Rh?*dJ03tNa2 zWZ{VgSxrWU`rIjmg{N0-XCODevd+7Vf3V|iu{_}SH}^Y!ufl7Fyx3rc&CX#Kl;&@Y z$%ZUV9-H`%Oi6|51#@M&rg?R{K&%BEgd6M0_}hAHw)*5i*u!yKSFlv8cpZ!G&;sgQ z(q*aSS_qH}j`5OHI0Pq5;F>L%X$j7+*sZr6lN=!7na|@~TZ!7{56UF(?@Gb9z!G_5 zE1o3OB*!mEf$8#JAd~YmX(el$zlwL+n1EfpKVS7P z$dteGu<})z@?Y#<-r--Z@)NDR@#uKV@95LxkIDdkpIEFcmsE;AZ;%|cZ!3?E{ze~@ zmm?hj(fSEK2P-xZJ6T_9AiRbzYG+|y>6<3~Uc;?mF(p#q-kJN~ny2>? z_s&%8R_0n$SZ%lbSn{_P=zWZP_jt#8RCfmIOzlrTIyk8>cLMvw5J}nq#hde;Nsszyg6P2*ouffuX)V#x4?;DIt|7( zk$K*-RSm!RYq;`Be4!gq<(z)dViS0Cv*6t2n1tro0H#9t1fp`8^}I%|IMWm+$v`e6 zi#!Nsz4I}iSc$S0AotzVcN_qUkwy(OnU-h5D%uic8E08mdjozXPZFy2g{(||kmMwf>|0q|fbIY?)|WEtZo%uLnK7K*N`0CdFJfwpyJC&^_(M~_ zcyn^(U9W(Eq|!~|ik8PS z9n=i+$U_<{=6+y-Z&RbNZLk4)^W!JHG`vm{ye5{vF3MhfyTpp#gNI^sG=CeE4j{zY z{MfYrf_Uitc>W8~x|Jb(6@8MCT}p z_jQaV$*ph5QJ>g{hH^gkD?I$^4PR7Sx;-`;)@{x4iZPK{k0`aRW_=e#2i%lv-hyFM z`Q1j_Z^8v~0LP2W!1#d6^UOvZHiq9eEWpdLd0Xkn!PlYoHL)o^Z0b-Gx0^`WhBxGZ z$%H|$g{SziG5i{Yf}n$=3vkm1fQo`@_*JH{5xg7|B50_~p;4-~k{}bmZ7in8b>0U~ zDw&5ZQHd_yXiN0*l(@tTo3vZWSQXNdO9AVa3OrfZO;ZumkD;KoM&kNz{7uGkuss(*-jYbgX5`u%H%s>CCb;G&IHHTBNoe} zi&H9Ge#Pp0J4%Rd0AbhHq}Hl{Zd!V^Wf7@vGxp;2@uOa53D zrcIra73ucd9$N-6mUg2|8{wkmz)iVD9RW^z7QtrP8ebvrLF?rJ#Cs?omM9~QX8WBrurPkwDB}#yr)*!D&_2m2Xa&j(xb^pJY|Bg)7L(Y#OOV+m&s3@-;7L z<0-tn=EBUNweYaOoX^5&?}fdw5(H^i@vH%!_UJn%rHVGkGGl3i?g6uIR@|(COw|W| zaoeKU`l5Daj%BXvM{@sJUtEE5X2F%mv1*QGhOz_hEcDjfNj&Sn_0e;>1np(6K@#uk z@+volI$ArsC@b804$Jh|%52|H6kZmW(PayOS|p3x1z7(>aHMlFs3eA_}2{b zt(+UL@mA#e^41_v4yrVOTH(6#2LTxM0UC(Wf2_Pd2*t1mDp&*Lurta(EShm`IE5)Q z?6>8p!d{4qj8tk`*Az=)vnRKsgT8(FiH_B9<;pEQNx2G$F;`u+>h5>;?c|uie3|ZB zzPBh?-}mibOxYSGYiQ=h>G1qtQUPzp_am`?wEroEtN8Z)h2DwX39OVek*%s;tn$TJ z`Yl%5Ow8ox=$>{d8hQg;#WNvZdG(5Gh)n@Jd+&@?a1pxi+HJZXyF+h zh$YYqyS)+?Lv*12w_Y1WjZ zjZdhP$1?G?*3Ah4*UCH%)U`1+xdO^{AAeUpPAf2 zoX>?_X>w9O7b;6m!o9!Z%9E3dT&N;BslN+VB`0A;pw#N*q=8;~VsUa3i+_G*mgvW! zIwuH%>)iCjLCHyjf(Q_u7yi$Q=O-tfA6`B&oSXy^6Db?rZGL7B){jGRK@bGRko3f% z$w@A#Yd8p zJ_3r7$w?zgpti7*pP85G$D#OW5Cp}?(i0=eN%SF01I5Qdad~pm<)FACIq3=#h^(-m znRq3fSm99M#KD4~7?qwlIyq@{5CQZjLGh{Nq)&n3)5%GnCIS9(GsVx$EA``0d?pBj z;td@+n_P-uMMB0W=<2?VN8%f?c^S1G7i0Z}-XtS?eB- z_+IC7PAgnCQJR24+@&31CU$$;c;Q&Y3Nq7HC0uC6p2$vbw%*~2@G|X>vumj9q&&w6 zwp+zm-x8436thxkA7+3&P8;v(2x);+h=vXY@O_j;1oxH4z^#N-E!Q6hP%+rRJuEbN zh1YOuX&1Y~P%1?LDc_{9$h>EBNT{wuwo*8^o}mpaiThNWm?Bx8)mAW>UiO@$)+@Z5 zQBwe>+A>YicInzuWw)+8!gJ4&FLVFa&DGHX-En)!hFaCGw!#YYQVmrGq;!(XZ(7}V zSFeD#;`-)q)K42TrrNX;rQO3BN;EQXT{IFdh|TNjMKFBxrul3~-s9*Ynv6#Jb7XbJ zH-5sRhYkB`Il3?MXZN1wd#&EI|Fo9O>vZy0+pmXry=PtMAr%KcQ4Au*-u}*MVrO5d zq5e~{UC9o8O_`His}~8j=n2iQg8h=g&U(@GK<%Jzw2NUCeb{d#x2>-a{DICipFAA+ z-pIN{x|UoApthk$s{_Lw77xhZ)4ie*QyxUlZYpxiZ9hT&toE1nkm4%v@t^`b{qKaV z0z-p$+3jTWx1fOhD{T3*)2}Ju8E$BKQTdtvqN%PtA$;4S?1S4n6z%Lf-Fsqt{l&cp zc*7z~FQh&vQr{D)FFG5ec?ah*nfObOI%=;oYL7wf(yu#e2jr-o*hlSVNTF_7YVCOU zG$^39PR0KN>=LP!WQOVU)~Jvyu^2qf75@Y{U9HmVhk!ek9iKOdNR=y4DkRH*^Mj ztLb1mFDi?2E+Ml~?LJE5sUogMP!#h&f8;dR5r^AkUL=De{p!S0zcPmj51t>nm|yj! zuc`a=CqvNxqcX`i)BMcm3Z|*O4*OHySMoZ*!}DbaV{N7`d?}oxeXdgYC|uKgo&p$> z)e^50MMH_)XzEC|t?Ire;pzH&md!#?3K0^lVMa&xL>#LD46 zHf2@*6aS=0+(0R&DdE3o#>1TRsJ^41So(n#Sx(5E$JgF= z)j40)fxgmgqF*1RysN{>d^U{^5_XV~tNc!XK9DMBbzZz``xsAqK((>LpY&=G6-ATG z2Gn045^gR4+&8xu{+(QdXwO*I$GQ<@`F$|TAo-m~v{L(qt<+A`wLaJD|0M;ei+|P% z!aj@NeYH^G=J!5CFYG8P*!S_ic+pmH%H+(CPoD1GcP=Tm-a}0HGBEX5cWvG8YiWhs zL;mM<^TF-p>be_OXidv$rjAQ+XRUGlE~4?5(|OcDn}#UI)bkFSjY(=y1dF6d1tabN zOHi#hsyE*~+H3Vgcc0HnKVEbd%l!e>o9^*VASzSdATxS0&dQg%2lkl7{-X#bwEky5 z>nV}`YL{}>0ZaXKkhs)8dO#9V>VRsPbAe;9aV|s6!pk{6#?=)rA7rA#Z#lm*cAJ50 z6!@!DGH*!wV-C9ZU6YIF?Bs+$B8Y#Ccnu}%$0z*$LG%w4oxvSk&{w4RcZ_+mO)Ktu=HDe?-4{h>q^sL1)Nieh-t#zIiUv$urg;rLbvZw*BE+L0v=Lidues zgr(~Rxg!Fd37|Qq%a~LLnK-N3#H|IPa{ckn1h+YL4QM3!M;YyX#u^noSi_vhAwkbo zv(C9v;kgunjg@;fQO&*Af9hchoVTVJDuVT@=+nt;3RS%=Dvw?yCQ3K$T699|uBFI0 z_Pp0a>)EBz|3t4pkVfuHD;6bvYck$*N_AyV0@Jt9e=m%tCl+Of?ue%E?% zD9Aq-X9jJ_47w&7+FX~~G;bGEXki^mx21~fL!0VRsc1iWaee4$eQH~jN2ccO0U$*B z*vyzu5HWAJGBBMU6L)8{UmtKvB0@??L9;4Lv2a#T!9^F-&@$er>G9Q*7jWkq9sR@-XOiq zbh2O4JI?~=B)#)3a6!@wQ$ja2=-@b|{bXr-_rRogL9$^epFGxdQG0hdT5>p=tR0eU z7zX#+yZhHB=UkXA$^P(ktk_}~K?=GrMwp^TS7*6;!9c55m$$@0UB`F%b zA1oP>Y`B#0sSDb>&q+=lc~i3CBOj*!FP&((X$AlsPPZOxtWRG{zr4MuE?rliXe!Yq za6>eGE4}j;YBm{_lBU7Y^aDfFw+~8xrIc%A`e~8w2P){pk@Vd|)7OpAIxCrILNAsJ zq(l=t3Eigg-NX@boMYG~wqhIx$D5whZ(F?SdHsSa4t{V|#hW-aoE)i6G>Q(fuUOwHF4O*^q9v^$USnGs)(W@>hLO+bveFW&UOMkJcp`=Jy|uH%?+>e#po zkb+p#x_Z>=n@su_U!56o3o%~PU1gH}$#|+JLe6OB{zC<0Gc&$j0IG5wd{=l)T)f_o zW_|eaqvJC*Z=&5hJ`=fL%Z4S1rZ;2Z$DcPxrW+HX6GF9=7{m|^YEN*I4p^rL4B5MZ zAc1xZ5->b^9FwHSPq_q(l}F(?_lGc{6im;M?{tul`0c=q7meeMMvyN`KwtQAe}Wz> zVBPSLRY%!tbzW7WGzB^cVD$2~V3ttkzC`G~d~#JPb_#E^JtLLSd#XeD@e{-)aE2Lv z{Ouq|7vXmd5@oE%%{3%P#)hnz2#&XPg&)G!!OS&g$k`-xk+he;{Xt5S@UBGYV3wZu z5^QCeDud*uB)`KShz#Tig(@p9DG2Q$*5I*tu*g>dwSr-g!Hai?5}DDQmdv2viWFiF zlebg16e5UkJct{aA_hYhi(g_~v4H^uUhXOLnJoH6cEz!kc6&R>DsJp07KfpL!(J*M zBo!0!DqFNmSp(e64T>lsYA1i((!Qoh5ygeefh<9mA7y?^Op>@gNL)fOZ1s&rLGn_f zjzI}Nu@6`Z%uo_{jzo$O?#&EyDUh#SlNo)9(UC}ru{+7RT^(b4Jj9*T&5;#EzRbC+ zk(Etc5+thi(4nwI#33}(U6zuF9T&)750bhp3H5h}auI}J)Ah7~iv<#XoYyScaf17o zw$gBvyaE*Z38xgbfiV8)b{avBmrMYQDBUW=ZM}hsZCwGFNF$L&79Cs_S{eX}eO$-M zvqSjt9-t}CxMDs;*9)|YSfI=$s!ssVA0s#qWD$gJoQ)c?a!s!Ltq@jh$AH=Fg)sJq z)NB%_BsdG6Y;D^SB#OXpmE9F2J_I!PG?r6@S)y8y94yQ57@$Ef>;yQNHZ}Ds0H0ST zF1GQ=K}rQNXqs#aFqQFnGAN;wFbeQew+IL%g5s^n6^35~RZ->%mY3pKkn>T|1{XIw z#Xy(ip*}cvKmnjy-Uu|JLAE4YW;M`9RfhQFHEFg9KW=Iy>I1loHE+hp0`?=jH>oV2 zLf7f~G2kBQa4fD%RCFas*9Du zmkVIKmAksGSmsfEv4P>%d$?L5^D{$`dIgmZfNQqk|My$scIF=iDVqvbi?Mlo`FcNI zNsq)(PP}W7ET>XcZmn0jlhn@C1K38~imLStPDZcB za$!wl-tN!sQ~K_su8%i8FqEbE2-e``(e#ue7Bz$7sZ$)bV+g5vdugKSWW4E?Vz22_ zS`r;`*T_u|lqQ-^$C{4mylH!^iTiQ3NE|juFRbb09UCuat)R3OUXy0&L$;V9)#oW@oYm$Ywdn&=?;APE{vO9|tC zXx61R!)%98^krV-yql1w6;!u`tZ!Cuaa)B!Q-cg)W#5VP-%i{Ca=FQ5EunqE`Ce08laG#>Fl+8bsSGHyetH4WoqFDj zfs;4oF=J3DX)g!!3G*4NL(N`KYl4vYd?kizTB-{m1PO+ZZXVki!%IoZCzkPOu^T}A z3K=m^di=G%RQxal*G1ZTp;m53fQ2`xXhG0-AEhi?M_~r~_^OzuSu24Cc~pf5+0`IB z`;ZEj`*&y-Ye5x+)JQ5!1&HBlR*6!SR4kqu4DYb!WLr{w6MyKo*aV=$ugqr$ z<^-XnAi^+_X(e+AMFz>jrGG>avZ#MYF9gxTE71Nz#+vMt0U1PZNB&t!tRRqmfhbgW zSP}?6i9>`QF^@_HqJAWq7s%B>P$KpMAt?EZlyovs^3|lI_{57i|VTFW5 zN(C|tSt)tt#HGn2M5dEYlAMSo2~Wh*pCCV%W<{rDWKMi0LNDh_&__)IN`y+v1(H&d zF<)9PaWWCncxPw6Ks-|zy7QSndB}Z`blW&D(QM$qC>6KNY#d(Q*Wj<`Bbxqdi`R6+ zG_NT!Io_0*5lzpYmHzh4(%PwrHJSEgH5XhQq{N$UnCiLhT~(+z(ezw2{q4rk@p#kU zGzhvZEhKz?eYz$&&vt@LP;qA7rbMISiWzE$qM1P#FzB03j>`-!z;h2GveawpuDfH~ z<>L{Yi6*2h8`b(d+AdF|*k6s=!IthGe!py6JWg>CsBFw^*9iIFo=#dXf8W&miP}>& zF|%T~@hloC6o^goX-#A*yo&^EKDAh@;FJB!;piQIGwpJ>W8x+QuR)e~t0ebS^n*aS zpFcA8Az^O@l4r@!p2%WL3HLbE%Gbziq~v*Li{Iy16`0;m1L91Dd9#JNw z+V}{S&{DK^P?T&N#~G37Jom@vu>kQFWoL#6vQSCpg*{|GGAVQa=a^gMC}tJ z-1JZ`f6~fB5}T*3(ew?|>qA?ZVt~Vj+Y+k?ujS@cvw4Mf;YS-K)nZd)tEOS(q6FsWv?_=W~F*;Em9i#dCSLT*D_ziJ{uweMReOYc!|(E zcySjAB9K-A38pxNpH84e#hO*qYB_xlAC$)13Ag0ZVwEU0 zDee1`wG%UuJNwdl)TGm6m3X^G9wQ(t5}Ai10z--APIRB+PU6RMGAvQ~D#GhJwSznd zXx%p{6Zuv=^Mp!f6`aW6Y*Ip<4vi(Kl555$5Wy0?#Fg?`WN{+%_kyt-b^O%0G&Nvm zs29tm4OQkR4kJFt5r7=|By5!m;teLoGc|43WQyiU`8cyepwh~7OVB{JYxx?;_jqNO z#&U&8_k#$+E=|SU{ohG{$IjW#vCAb)U(^o2%KJDNS%coWQ!^VvbCp-gHcs0)@|DIz zhWIOVwXzE^o9UWrfU8C{7=+%n&ZeVoMZo%_Or@0%l`&gS7BF7Iz$6Pve7 zC8ovM6PGnHi6?z@Y9|@Sfd6rSM7}?miVBd{cvBH}Fr- zzNjb(4?b5hEYN2zjLd~>;Esg{-vMFWn3is9^1_2BKwEX;wurlh>ti*x>TeMMn?L26t@x_)$FeNk%M=yZKmVSRCGTvfV$ zOkw??)VML}`s%{^($u)>bbU=>{m|678XN-^*4L)S)u!vCh4mv+J`C6$-zIGhP2O*UHg0qHeOx9bLEIaSk<#0 z*zn+iij|{-2gKX;(w(A?S9|<3u{>y}@#PND%Alduw%-;D0Cx>71UG=7TTO2bEd&V= zbY~m-z6R$t%O8%dQY>Q0ZM zh1g>#v)p|oq<-}@8RVF~`#DQOe^4j*UX)HlpB$C#lcTbIa#XfYj>`7QQQ1B@D(I87 zqw33CpB$C#lcTbIa+K?nBS3HU`4jr%zy7)U<1>Gj{`j}t4CVL7Z}FY&k8`X)P7fgH zowHdY?(}aYLfz|+brPrAom;Kpf?{QtOrURXHAgvS4H{~Yr_ z+dl_o`=_&h@G=h+>5W2EWGb-@?kNsGcoUr|y!;r=dNF_HCtl~@>4>yD*8z1~xMhRJ zG;_!fgh5MN=WXGgFM5?oi32Zqt#22F2O~{pUJLvVV0JRC9N0wTHXtuN$(b0fyn`8I zCli${i?^YjdRDQ2C9&F4VFk}YSpD&Wx1CXNgYsQV1}hnTURN?=(32#NA;ius*~>3^ z3z`2)^0cwx#4G$vZ=__1{IL3}vf;rEg1#28Gi!?c^&|yjh`KY&Ytg;;{4MD#!_lf# zRr;=?aI~c;)l!tctC&!6s--x6*C0ZJQZ0khca;(ENC`mP9}NU9}bt@)f$f4Kvc$wh(GbHMFF!okeI?s$tfd z4k`-%n6W~hiduefQHm>i_p;}p3sb9FcMlBza&!0}S0#tyL8UF^eNozHvtRKt-wf3~ zp)kshPfA7ez%X}SiJKK!?ak{|;;b*teW15s)&cIYSv;C4U|r?O=v5nMZ4W41PI0&W?l~! zUXHi5-Kd1`D)mY>g_nB+y^>>6M?gPBacni0rf=jBYkz-KTf)m521tEDiDY8Wvcl!+ z&kr!1jBidi43rv$K=u#RSw$OI!)&b54d)1@R46QwRsAeZ=Ta|#^?d0lWU^&WTl{ zucC(w8?rmN4 zUN6qt3S&In*!;4})=gvc%OXmz7lz)6Hy^X;=FKWzhX~EDxX{*k^JbBt1MB8j6iS3% zB+jAUDAWm#(wkpV1gE@S^M0#q^A;sx*{1z2*Yt11oA)RIg5%9S0uHXpI4uI-HWjZk zq!0yeb470>RbioSq@>{#>5R(8qj30Fs0 zTo@0X5+$8-VCi@OO^N1RDvHbQSo1!sTk{4-$cBSM`BolG=$i8wARV$Hq~$547` zKBA2A&>_RO-SX->t(2bEHH@>X1aEDIc+<3V7*}YrInVr^rRpT3l&;V-jPrzHIFzFv z!zN{l&eg$6SFG|l&n!4JyM_rWQTeP4`T+7Oan17Y+1#>_vqgdB5w35h{5js=@fxqi|`$Qr5nb;oeiH0j_pE8cwE^@Zo+ z&Cj`xu#3K991gu7^c}DHxN--FjvM4Nt+`!@5+Og{yw4$^SHA2Jfb^(C0Md=FT|v4_ zIP9hY^YnOgx2wYQUh^hbg$;yU6`my|1l)xNUEOmXTm*A0wgQXEMDr#`!O?^pO=z|x zn!6nZ>l4kZ90h)&dB5Yqv$5t)#skjV&^!S14u^p5{(`H*rg-zy4#ClQ^E(bfPuww) z9u{w2Ed;U5Ke+}yHH-)15Ct?Sw-7&8Bn;uQg80{6{L3+23#g$LiIJ;-cX|$3k$MV~ zNUst|9l|+KFPr~WyH?0XzUDx8#&k-SMT)VekiHVj{4^KI0hS_Pk7d{nXR`;8_(;#o zj$=d>&*GymyNBSiNPNuyv$DsyZqi|3CteFr1I(CzO}s-&C7NGzyn7+hyw&lJrg_%! zj;49fn!ovw>pz^%a>|QgY}YWIyE0tkmAEMlB38NaO9VFLf@pUUI`wrC>-t9c5f`!6 zMXYm2jl;N-cM+6gS-AgK1h-DidM?Wv7Xeb;Adw|Nx`yLt7qQ+!a7Ngr2)o9OL%1PY zA4~b!Nl$4rxHxO}#SJdsV$Ivd4dcsp#|`+>;kW@`HaKpyIc{)C#vRom@strhD%SoM zgdRegaqX)@mm0TIoYo&u+HI+_M5XCc$w>J${MoN)?&0H#-iqO}(YgUC%H)JBvnvC1 zT1k*!4&vgKJ&6?cbC4a}%`s;L3232Z6Sz0ycoZvV%ONKdL5@xqJLo+2L)&v8qqq;{ zUKBoU(Zd}l<5S@AP>+%mmG5)YVi6o2uSlSO6~bzQm^Y#JbfOXmyZ8auA@LENse&9pBkX}?P!M%ltYZo-GHJ++E8rnF-{NW+`6Q`WFJ@cQt3>3=U^|1+sO7k z{SnDU?R)zHTSEM~L^5`V)|J>bFWu2UNyiQwz}l1<45)H8Q`o4ZjE zB@kBBkJZmVBvY``C(3n5m)a>a zv-4|{Ga_NX@(;>2dzcxH)n>`b>SvSb{J?%}r{A;E3fSsASLvwepv8oLz+vuyW1rOO_O6lf%%#7t!O2>x>#~ma10zFi91zZ3KVDZB1$C(BG_6}dkewBR zZWWr(>&M5H(0UBrn%x{aj4#5G@A~l-f(S3);;kRwqI41mU=vOH(DwZ!c_Vu`!O{HH z@Yld!qyH{$qChwyGi%5kd?K_SV^gw)JizTwc zB;_4mqO7gJ#w+!Tf}B?H@6<*R+LK;Nt&XK@J?kDyqqXJvInDDHgV8Fr{EUWZgcB5W z`PEYNBF=7flH0vW`8fQLtyVlDIQOQYf3W|{jIThd$VRXy zuz7S($6=TXUnau3JB!m_Qi-T}Up+wE5UTezOo`tr#x&t;!|KzM*yCuQ^G2~(vI?M* zm<8E7PGm$Wg?C3v){<@fAg| zwn^U~L7);|C74U=)?YnKT~vD@^c}RDTvC5ad%;Ti?({f%b6kQye!Nm@DodzAJP+Qv`*P=vsd}I(< zKkZPfa0jf%p53))ppxOV>-xnjJ7cMXI0|V) z+z;m*`p!4>&;B~p&ML_HoC;mvm+u+PjK#4^&LwYM8_N_G*QX|OY6uPtb{gZE$0Ca$ zxGr@y2VIAS!v=){ll9LuEj6nBu`ko}&C)B*cP+N|jZ1OWFsef)I5Yc?Lkio)6ZdwF zo^1HQNy4m1i%O87AvYswgU4q%eS!mW-i)$%SnFlxN80QI?WFY@Ee#rh_+ABH7&}Qp zhAX+^_E$VFN?zCH(*NErb2JQT5Bt9$NC^u5$bwRf(^tyC(U7z2sQdVG!6%Er=-*)& z0JPMvx>RMmE{AVC!PWzz*++EaVt`MUDDS6p&=Ek)zROWC?93eCdy?mucwg^1O3ysv zUP~3Gz5f1}VBn{+_Lt@$a<9LYNGs818q}2zyAuCE{-Bcou6&Dvk6&fsa}@GWVS%4f zd5)y-=EKiE6JGe61pifsUvyn(@BuybS@;}1hX0c}dOn(ue^?gY(c@(<{oR$nfRe-h zsb{nN_m6Dr3%*5AUBAJa=7hf$C{s_shD{b_Yb_URQ~W;$ptV8Oe?t=I(x^2Ut#X67 zIOtz9v4^vcHj@+YZk7w-N{UdAs#TAYU;>(9L0Y+D8i@hd{Ontm+d0X%Iiedk$=e=w z?_vJyCQK#E;a1QGfB(y(0#+UOIwJU&9DSrv9z{?fy`5`@9`sB27m1_yokc*na$)fL z<+l03dz)wB|0}~EULaiyM%`~76C;f)k3S;@5 ztr_o2n$Z-vh2m|p<07G(nPKqxn&KvwYoL>)xsbW8F1+pPa`C@7mU)2n!*M@KQD)Pa zgy!rT3B%zP9E0{A;0`vhAI|D?VMK{>4?2)p)5(<)U84K(X$3HgcXD|CFueSZ{^8~0 zisG4N#)8dpq5-pVM?UY0b|Ch!U|cDJZbF&jkxtZ5%H3>t)1U#-B6o!->G(RXlgC@ zbmVvaV6Wszc=REKQbDnY8Fp7iyyW@V@9~Oi^^M~WrhRWw{IcgczWZ$ave$4+#Kg^G>Yw#e zkJ)p}xC>^D$m0<>vnb)Ef&GAO=cqNF+G0x!Ii)G#sOW9t(bAkB*-qWO5)|g2GaWfO z`5?K%@b*_GC9gQM+vnticBKzPsNbJxr ziF1_LW{HnQG-t;Czzq%mg-O0SGTro*gmnpNa+pbpx=Uvp34=Dvi|156&7EgMHc*=l zRA&RCr2yEX9)2}>x9pQ1cwleY-h~gBg*K49^utED_fQ6qEBTg~4PUgEbNJN9qJ%1>Z+%iQ{ z@|+;CR*9ZP;>3{ODBDm^rE%vpKk{e*)}W82!N*j66!5|HU(~v5VBHJdbzE@DI?mJ9 z;WJ=}hwCx#iLOOCIu@?yZHRij>!I%`<`>6PSt_Lv#sprDrxSIPMvx}L(GLDN{&+eb zj$%7i|GJh8jb=)OzKJxm0BsR5;rhe;^(Y;IyU=PSi)m0clKBlNu*}odp;Wtg$_$mN zW2tvMh;Zz_8U4j@{i~F;N90u{Qg6glj|BXjhW43s1nc+4!coo((Xzz*w$hgfAKYq* zr*=_C-ibi6##46oJe7!N*yK|Y@jF zGs=513z$H0mV^x?piNehsKkI~r9D;7XJxDs)4`RI?JnD=6CAY4@7zjfx(&5(-1Re^ z!&6$724GdJ5*HziF|w&j<(z3kjiS1Os0xc>#3J?B5pnn-5nOAr7NkK|Mv7e$v7BJU zI8!Ii9u0RTKVoyAPT%>arGuxKo!T~Q&>mB%U*@_h#L*jRNx>CEhK_`3B-dqWq(Fzf zSdmpCQ;OhjL}0eZ&6JxeugMf)w&{9xJpG6bYYn<3HpblglAXU9y&v|yuZRW9Oh$-5 zrSa4;E!Ejhe^N=B(R%&eHz`Q>IN`rUP-Cw_6eyMXW~L*E0BT*t6Ig76JUeWNaAT0b z8~Bai#ou{Lb=W-sgoBOp7ts`IJMxb|Fn{aSZJY725Mz!u_8_( zfZe)5)3z9**`$_V|DL}x8qPbH5?p0GJ;G+<4}|!Ca2OU^f71dT{l3M)L-sS;gwH{| z$UvuwA!ojIxj1(%sSab>i(0CV_F$4x>;-r9HZh6VhKrV-8nkj2_8D_ zfQlT4C`&`i3pwP*ObrJkco6{=rz|2*3I0MvG%TVO)Lakn)jA_m6hcX{NEYY|?w8)S zwP|Kqq#Ob@cQ@!4!X)i!&p&A44Uha@cxLT+*nii8wg%rv(3Vy#*$?}dSb+p>#d98C zUgqJ*Tw!!HJYnDnD9e2CMkTNd*y;b=;Zg911m)8Fh%HC8bNGWT;GfDttNmoZ@A~1_ z&&&Xhx|OzoUq}vZV3tCF!5;Rn0=94c6D&$UPF!8sHzd`;r`q9jd&eZ|zy|hTm532d4B9w#49VNA!a}cq5SRu=5X}5jiUX z&m)KZgpI?m18)rD8;W4qll=vr0X*RJSb=C$lpVqW+iy1lXb)s!uYa>L1ap`Ari4uP zrGDs8bU|`L*oB5CCzQI-N0SpcyCsMJ8FGCh zIpG2<6iPNE#|@EuX!i#u#|?EMUd!f$TX7d9$6e?`Ba`DUve5od6Msc=Tv@8Cy|bvK zBRTG3DNVKeMagl)U1(5p+$AnFG&ydB3ynyQyVQju$#EZ1D6`TQ)Z`qU95>P*`$PPC z%v*Do&l9&m_tMvwvH-oZ_YbycOJ5RCUoY325-*Z^!AhMqZg#clAwIN1vsGu^AAqri zsMeZU5vT=xm|=*zQeodtA%7jpvR;=N4dw-v1wKoZqNK|M8*S%;c>a#}v2kURDUB2| z_YtF~OY_}a%2K@Kpw@);&HA}b@rd6I`eh+n%dZ8hvw^B?pduS6&j!k}fno)8lEO)) z+pg?eL5!_mm)VM63(G3Xu21=xpD=c|D+i;an#l0-g+=0=WVr~}LbH=}jh9dH`OokJ8|S)o`%j1I$*zwkF`i*0ys3uv&q6e6Xb6*S9u3 zEe8*+Z-wfsd=_O-vx;L?vCt|d*VN%?H_@B4{ZRchMR{5+s$PP#dZsqU!_iGFH8*MD z5RP^dWO7~@)Gnwk&0!VOR#gi`ks@y~TA^wgWuGThLOF4mgRmY}f>@RZ=lEf8RarRJ zPAdc6^x<>dF*r_`9lmP8wVa91@yg&z4KBqTzB1SW?DVf-cF;1Goi#Hl3%))6P(|sB z16 z3@#{qhF|!!mh!hx4zSx4`?m&Zs7D$;J9Sy6c~AK8ICWis|FGWxP(V+8AN*PCfoA~E zL!Vs_3qBFevCU5T0G2m{Eb zMZf#+aqRUwd@F@VMqwKM_JUg#_K)*0{-r=V&s-B{SeMxNVU6qm0zYaxM0T^ractXy zbL2+Z$moRjKnHaUtAz@qvgY2x?7W2wr8=-OnIsBTw1gK@bKr{sj!vAU>mJcEj zMNhdpAyKD4sRgacfx~_Ta&q|nVfpl*&4#Z3>|=v1as4*soe#3U{<)Q?v+M5$$&<>A zAeye;^KXC!%S9&W3TnW7JXz~tI3Xb%C0Z3^1J3#2%E(ZQdn7W#eiug~N*f(Xt(9N5 z(H7|@-6#mg@EvPfkBz<8^jbYOTbc@EO>5+d2S*W15X^?Lrq#F|iZwlFlj}Ghq{VJN z)ast7epS<<<$A(Sv38$mQ0{e9ItlE0Rou`kO`2(z|YQDN(PC-q7Nz`m6@OCbgd1YZg#s3G_eZJlb7%y^ zLn7rGX)_5B5pbz5i#&3GwipPrcNauv1pbWi)+e0BWJBBLDAOsS6Y)@=X(yE+R^`15 zTWHGX@IMC{YnT9zN0p7;Sf3IS!}R8?v!<`L3aSi`{Jbe-?qEa+ZSMTAybp4;i4OCF z)hJwzh1SZ>u#AYdMCL)p4;Q4E=d;MKDfTiMMd(3ayM*Ot6Tcri1PlC#pjXq8;5srr zG$QN8cxEo}A>KHO&FdtD1Dnn9O0Fv3XQQF>c;}8J5qeecdLq?;>1UUf+~Ia{y^Edx z2v%wMSfI&tqZ&_*h|tIhXQ_!nW?YJJ=3->HjxjM|mASjK*R*lSBSa_?>B?8m^)SL?zxF zu#2X4ljJ$WGjmWZ zuWCQQ!63f2wxJ;d)E-KEUm8kPyk;G@&co<0tHXB@gReRsI>y>+a;QG_oQ{Gk>QY<6 z3u5?76TUHVSn5I=|k`|kU^%lT&Bq!YLSVYECKv~5%|0{S{vkDO$Fd8bv6 zM7OkM-|>?pT(*zrdl{~qwG5G&F!LVzJ9lkHtBfJxtX+0=5Q{!Hm9r&}7e-%gzbe@mq>g2-DaJGTt|OJ3 zYTJ5>k`2AyRqJQ(ie)BMNF$}Tw%@GCq*!MB91V(cq8oHsrwXVkdB#7tC+_Y<3Y#)h97S{>toUw`c@v>**y zVMoEd7bxeS`7NX->$>X z(AP^9rP}{@rHW;&_5J@?c_!8$SR!I0;MaoSyE@?4?EK7g&dNOXtjyk7nXB_N|0S7O zN(b$9X#kpSr}KjEY&)I)-;T~~J00Tt$~Nm%bQPVyY8v`r|M=DRpt3>#cuOnpy#Dd4 z0B^S39|Ygoau=Lc?rgs4AGNdpURcVWs->^`b6f2MOF|(}jGWnjc>t6PF)wp(!}Xqd zE79JtYweBnGzBCU55_ew>e1$d;<~%f0#GKdOIk0NnNaUhORE1=x z*SDX-!BXJbSWdRJ%H%MJOD_AEjMQLVz1==$ab}eH-02H{j1v=%{45R`6y;E91t0## zpP8?6|Jv{4pSYF#G$I-J>t@{}70j@rHYh4QU($8{j@dILo-}ac8F#1C2QuqgJ%8|$ zYmTGyiV7^GGm1C)(1w2{g&{lqp+7fI=Au2dJ+HMWa`q^1J*RUjlK&D54$T^#Sa5vS zFg-xUw)BMGMP3v>M`*utHYxk=(~Zr@fCmJtKCHf8k=N z3MwOS%by1cDs*UMP#xjWS*1Pb!ZDpF!#yjVGm_&hEkyJQ|F5Z5U(WfK z^pZb%V^E-kTL%RNyI%zHHW63l|E5c2NbYFl_y^GDOT9vURMDVz*@~%@Q9%u=7N8It zo-adkL2oG!HKiMlxJc52lJC(w&c7@3PrhpYXDO&R{e*aF|7=4n^j!_ z!I2*S_JAYBg3Aa_(ra;~i_YSIas#cud|~7tsJYtgAMJOs;R!Ea7WtVtVw#n^uz_1> z=?sb=5zPtc{K&7AUcwpuo>F}(9_zIJUdd)u4kACa+=or2)0uSz#$#ui{}r1O=={hJ z4B0Ar$xkdJmVlhnJL9mAoAFx;WzqSOpIT}s*-%tj7Wrq(X2C}k-0T~$Xwt+~3O-j2 ze}GHSbVlWc%3ei6|1&`KiyW$du|oVpO@0z6g8sF|0WH+7@ZS;@FKNq`SS)ZY1SmAX z&_5^?6$;^a%;Cu9|BXINj!@BleQ+&g78o-GhJW0+;PS}0tx+Q!@=&6hU%)R34@WK} zKr;n|trN^eL`kbQUb0Smdx5GUokd=}1Wil7zvUf93fja(MLB?1wruP8{UjzEW94YvRAR%&4e$`A3Oj|UN{Fr?&Jr(oSW3l| zfS6I1{ZyYh-Pg+K&~p zNNE7paD1Hr^P}RfBPd-Jtv4<0TBWtWl_k^TaX$_-VkPDksWDqd$atsB(qvddW&lMm zz=s2%n7j&F?l|D$&y4~6qrj{1DSWFgVs5~a8x&Q-R#X{rDwL~M=rvQ9;bcSJ00YOm zMn)FxQjx*Fs+?>C$-eJwLVO6p0+p?~Apx{ll@odJ>nj0uD?r0+Ed(IK64tR5V@wVh zbP|B?+kgTgbZS-(Wjsfh>ie|-V_Q()TRvFduLkvnmI^xM*;LCZBd&*C(a?<(L-PSB zx>Y!jI;u9B8cK~S`BHqFkUfL=u-%!dZbpf#(10^5r1L3N$klkig>Ghtth$Ps#ajK& zp%DBHa)M>YV+N!aa13=_BTI))K5&^E5R?w?@d7rBE7Jn5bOc;!`XEY%14U(0Q|v_@m0yJ9o|anY&Ch+m0J(J1xDZ&0jt)Y}Ne zk)+$z6_8#U9r=R-PE;pKaBHf&I%o@63hH*F!cr<6#iZk+(RC95Q2MgeIhHC1o4%vo zoQTn&mfA>a-yNvqv#uvK5#-S?L9fi*jnRuK+;TyiMsz2MYI;>lT!W8UX(E@6WGfEH zlDjm=$kSPJDy$khW!x@EBUS|FSS@nqQbZOcOR-3V9Q6!=h{QgMIX4%jS$5x%W%rDL z-9EssJ`xByF?&1dAZeFifb||#=?9`L+l^MM5eI7qQBCTHG2JzZ{N-5>ZKS$bMrWC> zT4tG^WrTWFKIhdNR3|{)h;bFY8FkB?RB2K7H_;N%)6gekVTo!Beb1^Y>fHlnqRMdd zs3IfrX`LFXMLA=%czI0Dj_{}BxPl-r!ujv9f+tI8QsB07Wo`Q;Cc->aAr#O zb}_h|>fv55iVC4CL)7E7+sbaqCZgf@_z^+j{Mslf_IQyR>O5T~A5lZIvTPtLu{wQs z4oLBvC!r*lcslz+r|mhY)XdRPYl#+`KtMxJ=hcXeriW4aMb!%zWpwAw<%R<#r!?aT;p zDiQ6Do1qRn;xLBlU<~h$*rH_9tL*)4JVa6k8wgcXS7kHv)zY459S_xgFZEh=DH!7(^OAb~{kcE2doaMHogiD?=%OtLd3m*+y{#9UfP5 zZC=T=vPuS+mgX>}uT=V*qpPpffD9vEeNApC`7!e3YmtYrZAPJWtTG&oi&ki<691^Z z+L8wK^2?9&G;-=CvU4tv#jo|(=~SGX1655`&Z2=!uJCNVwVkuXOiif}GhA2Y;r6n% zYRRiOq|s^2p(8={A#+adD!zeF^J%FDVf!b#8w6t1&>n44QKc+*X|R^U*et)oxxP@= z3cNatQPj#OV$epUR|S~FNH3l#%F-+%UXt%n^=IcRy%vVhYx_D!9xdEB>Cy#v%b>SL zXIQhbBL`vvlP`4}ks~p%3azhxai&%6qE|+ixPeTK1D!F50}3ypiz8Y-S*;n>vCQ|( zC>;)9UM*+JSXRd>nMY_$AzCU#0gxavquFy|#SNYf!ow;W{g=lgZGv<8YQ4+?XX%dN zc&4Tg-sWoX(rYkb2+kQ2wiq50NUxI z(PZF<;+`AeZV_%rd19?OggDyZ&Ki3OQss2Qts z6B46Y9K+OwE7!+#7X%7BheiXtROTy^(CsN;$M+yc$ZQljM@emT)Cwj@gUZZ^r3 z-|$6&{U2kvR=tB3{k}`?9v06G#jbcazA6x~I2qNBzg82S#Jq$^^&bIl41igtn51Fq zqhERRR^?-kyCFQ)N~lD{GE@Xb%^FqW^gMWpSP??nRPuS1ybk>%Lq^PWLC@iOhx!{> z3}>pu&ygaxT1LZ&W^z+fHY4Ei%m}NW;4?oExX4c*2$1sBmP8$sJd!XN4k|sCrF<(P=T3op zeD$(`{7lU`YQ1v4RSM-1GTdD6HgB|Qt7^nLhaZ@<#PI*!ywPDZkxa381lj2Lp*wXx z9Jc2PIX?{>&E1Dv|CGl<8@=Y|t@8Afa!p{tZVKOS}x-QA1s0Ib}SJ#5aUoiOUUsr@Wrwj$2fsA8s~5(=Y?je z>kc@*VVaYJXO4#G6GzN#yE;k_J#=j%Q-nLDJ&0A!=aol2IdxZehFaB*P6&pq;~QIG z(UOXnRj|;=qYl@*P8e9n$@N5J&_%BMc33Ox*hr4wl}|!vt&=RP^JNzkFycmSjZ|YT zt~Lxrmx(rRqJjmO0e*Jw&2tUj?yMRnL`6>XG6bs3PZspM2?mCA}Zq$>7 z1aN9lO;FA4Y6Vf<-0qrjJs~xtdSa^JVnG-WZzodGB?S#XI_h`C{B$eVEFHQtruVT$d9g#p_ z%QG^&MY<+a^AXaF7nu>ClK6rTM;&vI5OTFYM#$CP2A+g_wd%v_>1~swRw|QUC2p?_ znezeUg-&}}&p*ZhZsc*e6}Zn@9dBOcDs4Wp5^gnBi~urOXWp~V5}v$!&?j)Ex+G2U`$)>)TVgH#1_LnfkZ1)jc|+tlcKa3?$M;MJXz z8FZmEPq}sq`u_gF=YU+#U@(O*85Ejhm8T?k)cZ~Dus>|)oY=)-Fd$jvOa}ncA|HP# zyO4bwao?x&L6cc7FS#n8#gzeQ%|ks`^k;}HCh#_?+nBg=l8L1jn4q3u;9ag-Fm%XhHgH4%cR`iyK8M_HH<^bQNo;l)cDqLxX- znA^NwBhG7n$?^3l!b&~6dA){IFhGOR$rBh1Bs0jszmu4X*~MOXb1Jy&E>^4^6zk0` z-tNh!zNFUzEk~D&JE{991J)uBHGbDVu}Tt7C;^x5)CA=8ah$NrK-Qikq1TGv&l&^u zjv_tE%JI;_0R%R{Qh}fdqcP9f4gG2FFkWShRkFYBHM3rki2?}gDXv#F{Ebpp35ONW zB3#@A%^AprvxT!*r9zx51lf94`Bm8@7;SGq)XL8Vj+SDTwqs+xsTD0q%5JMm-43~@ zOH20EC9nCY7MZ*lN$_I?aTBk2pt|JUpU`q~D)FN^qP#g$ zit6Jf7AlY8FC;nklMG8eQc1Vsol7Vg`zZ}n9hMLkF0skEk?2obKkMp8u*!nn*jjg; z!{?Q}vUr*maY0E3U!PI-_OAW}KkI_$5ga3_f}{A<*w2y3^uU!E!UaQZS3)%~UvMSB zpRur(PTdWEy3Xa3_j)-_YVYjlfNP2R3kN)a;9nACgtm8`kJBlmp+<%;o4ZK+q8Y>V zvLf#)sY`zA%S16>xogCI)w`sECH-Yw)s~<29_*u32(>?Z4;CF_t|1q<1wQ8Wbn99A z1~&#z6XVWAUf|!qfj-Q|{c3cftFfWi)%hHLb-~uc@2oG)Z<}?lV&^J$R+#(tzs!AB z=^=0)04MFt2f(xXxAWU(zpCqV%MF6Mx!?J6={Glq7mU*>Vfws5M}FQLyJ}L^?B#q6 za35co{jc)<^68o(;RmHyTQhX_LyGuR&1>NY&sD_hv%jZ^Pu6sWAM6He&B^eBySXD* zG_U&AazrQS)ASf$rCZ^s<^Q z_g+}@LU_U7DPrz-$`6LW*Gf?OEg23O#LCp$QB6<2^qK2Y>*xgw8UaCZ3_k?`IA07i zIcgAe=5ybE?;#~_(4N18C{)lMj#Q&PfWrnHyl|LFn-aM!QbA<6a+XE*4uc#G?Av%>xf;K)KSknTHHdr3_wd zr2&AZ+qQ)fMf$)0wtJ_#*xsp5bHna`{w^2QDCvzV#V7UbDl4q{)_3joYBUg8*ugz_ z8Vi;Fk>6=_%pPGYZ-150GVwL~W#8eI=g)&TtEa)WzLcOEDFx&mrZy1h*~DGkN;49{ zdS<8p7cS;E()>6=Z}2jUBM0@H+9_3z33nTkG)gCUEji6A;9iECnL_9(eH3MZ%=}1I z5u0=jbwFU2ty~rdx7^allX{12T9$|xiC-(r!blZ|GO^4z%Q+^M4bxo8^RFZg_R>&T z2+(p|@3?lwrpel5CXL~NQ4Oko^XLGz)XWX=pZOd&B5Twc%1NaGo>2=;br8-(SdCld zB2Z53el}dmu(t0WR5vNEl$-*pB@&zq%@AEDze|YlR8f~3kLW$mhX+3vnQq_RTqf)C z9(0Q=f`*^t0uM(T2w-(61&*x#2>LIw*LKbf5G~@F{!>Xy;j19KsIVdA+hDEN1F$^+ zP%QGGC3$kX&bUw3y36bYBmjoo!K;TgS4CT(vFZuRAUfD za9S=nJr|sj3%2BfvvNVHDd|5j+@A~1%?0P@g2`NPVJ^5R7hIeRK9mbSoC_|=1s}-; zAI$|H%LSL_g3EHj6}jNbT(B({T$2m>x!}Pd=wH5=4v=C=geA}(zxYAE=uYB-`mvhI z^fXOTvex$(C>{R^7BAx=f2*Qc=+r8{*o`;8Er^`X*p^OM%Reh0cJttMMfIsp{s7Q; z=HW;gC?!~GZTvI9IR*6RSb2*hwN@VbmaGv`7dNfTa{nuqx-c@`vTDI4t2;|9^}lE& z&?N%A!O&f71<`RIGh#%vH_&?WBas4u(ot)Ppyw`(R1g8^Du&#{ky88U-pUYLD{*^~z5 z1z8ml{_XSOB1(yfK@}>-Ui7fIuOo5Sfa3)sE-I2!(*6GDEQVc(LA>pM+`eI!AUKrR z;}5ZzKZR4iBP++LP9pw$PCW#aD$(Mye}GeS4GX@UvYdL<0P{Gt!sX24)FNVpvn`vF zIPj#HcMJD*ekWifvWrz&voz|hI{sd6IzdroZ+YPHnW>I0l=BmRuh=Nn)ir@CCu zJWh2GBTf}Kl9>O3(N{`@e{gOer&Opo_2Y-meSF#pHS`Mxe}hqMQaf6^uW#bg@@Z7!0#6c3bA%2 zg(~dSYWk^H*HAS%=wE0!HYj2B+hiz7c_m8*e ztqFr*Ru3hs)I$N73;`fJ6u}T7-AQUu#U}|;@YR0==LRrJttG65@6ExlRDAS3KlokD z?}1^`f3KTc6DpWJ*lYDe;qUG|PaFOkjtzXT31{uD;5aJ-6{q`2yG&>G-=aj7XpM}b zgIZuNglKn@v|kqY{O-G2MK1V;twlc2fv8VkKm0)Vqm9<9ja(lD6qkkB-fAtcJ|}=j z%xXa)w9JBjcy^CerxIP^T}>Bfe-d95}| z>iuHxQu}oTN0p%ALcmc$7&U7Ul6 zy!Br)8maZi1(a*~C(1t?e3u7ge=PWBMU1*V>p#AAxP}Daq#nXMy1ejHZM^F|*Gsc~ z%aiC@@#gY$N3{KSKW7^$uD&pGrjU@aoe>`H!{2`$n+7MoMY@%i{-6~Dr zjOWc|*-7UZQ2vSS;dMs@a5TK`;M?9qN^hiVllESC-KnUTDVmGGJse*5^2G4EXC`w0 z)1U7b_~U|Ua;So=C)7{oYCNoa44AcY3FMP_*TV=bb7oGNp&>pVj%W`|z**~%<5naQNVK`e2G)IO_bd^#kC+oYSvrFN zFxp8IJ>xl|PZ=_8ow1hX#a15CCPOD5T>{zV@4PolsYt_U#WLJa2JIM1`QoHSUzu5< zIb^wWapWPx25CtbaLfRbGb@X^l_xK$!o&K2a+t@L4i+>A?lvMQ+G6Ls3=Tx63?dIx z))|`w%NF(41ERAH{$t$A%b7gP+Ri^S*_kemv>`x%n}L<=49%^2VYO!`F+FcaX}vck zmUN;^?j!ztvsF_kf~*}75JtnR6l;wI2CBE+K4)5!u`=?aqG zaX}T|)R!2xA&3_K`6lxW%`-vt4!$0a=;T5#&^l8!g_c>_)S2ehYv(gh@`pd*8F~+W z#`|jF-4d*eR3$!Mpy(OfRmmm9_(Q268CC`z9zrK)32JbG#gSPqz-q?=cc0J`r8L}B z`@HoT3hD+4dDWju16?paTq#ht8z5yAvt|g&3qQ~aJ>5NmXF!sBn#(=oDDYYb-F;l} zkJwQcP`4f=j+GGAdRDFZHkG7P@|Y@#-3O?J0C+Z4d8Qj}-S}Lzro8*T5RH4_O;$@R zOpG3uNpI=2xx+GsXRtMx!Fi(|V3iSn3S`YY)Af{n z5hWcNZSQg8T*Nmrt{ZE7CkymcN9Md)+kW0F5t)^WOkG()iJ09=qu8LT@KP|@pTgyg z4a>7dX6C$6AflPh7Me_e#dHuSI0*zo^DJ4J6`_Alq4}G;vb0J@o*^_d=Y4xC)Mmw| z$aWG_0#wrE17b5@TK37%KAH087n>4lA1*VkgWFi?=3zYKr{CTpk%9yaL>J69*(PR7 zeo;Ni8=IkNo?v6bWTZU41EBtm0>}ytcNzi2;z-;w-g=5{7Ir!UN0jt180k&m4bUN; zB$Guna>67}x65MDj9)j)MIAOb`ApMC9~UP(0?wLz^wI|i-$hE?$`k@Y67-_sWmOCh zu2fUA17C1W!VT60#X@7Ai8nqKr)XdW7muk=yek2~X=wsAeG2Bu)9$1hN`L zygyCR?;kz~HApPLboBJlb)7u;9bJ}(c&DQByDClOF z>#dvG1Ml>~rPw9)@=jkDUc7GKvNv@o?lyA=xUe(-S~tYdO-XISt{sDR9-jN$(3f#w zJMZ8eHc0;4f6bkn>}1FCW%pq8NX)S1%W}f9y9f;Z5zWORe=Uy7hE# z{enZ``SSKC<4Zlcp*u0n|A-U}o>i|dFk$oT%$)_|Pn0Ku%rf&urTg)o-|1V*D{>zE zw*S=Ms0OBUkL%uLX0t1+@LwxltGk{4xp(9Y>sjrY0r~%^fxRCaXKn+;uoe6Tz5`e? zh`(08PBuQ4gSxWK8LZ15UtR?K^-HK`>UDQ-nfc=Mj-U7XO~Bs->+NMBA)60sw&ypv zmO4cf=~RHxI>6&RWGQLl@LYcFAsn84XSUko!L9PSkqC?LC^y1v$VLXBd*+#E zZn&OzqHe%P9PjWp1vJz<=e~R>AP7xa_Gd>bL<3O#z#avv?oyG zNNtXtcvGHtoVryPzP<4pN90@a6k2ZPZNF25(|NYe1o@wP)8?d>IqY6Y;X=! zSw1E*3$4p6Y-BcS3={dXm{4aDCQ8m>D$mD6MlijV!$jsBCh|Eyc`np2nh(3nVX>UebNWX(`d;L+W7de_IrSayVEsVJTs=iJJG2Yqw3aV zFu%<#KWZY@T6{Y~XeF^&t+NJ;iCjx5th(fJKYcGQUq=hIRih}9s|L`j#U8Oi;g`HS z-X5YRKp7YBZdsP1J9i|Ti6$2YG%1bRT+S1Flnb>bYed*5Ao1nEz~H?C?+?B9-$2Cb z79O+xEM|u1d6(@^l;CFV)mZD+0-k)(qYy0Zi1)n`O!79wS~mmFtD^^je~b77iITSx zsMxi>L_9AM`os%S>im5h(_II zm^ts`1I5LGUTP9tzY$6DwX%5XMs&|nB9tF0tYv0MgJYTwcrchyXKv6Cochk{MR~1! zR{O3PyCVeGFQ-9W5cR$jw`l;{Ck@J{hFj1Ti9FF}~$_N9cN=xE#rDu}3Vn*TTK~} zS^MUrT>A$66=x?FGk_Vy_m-`>^~vMi;%mFu``hEM8Pbk5xBl`t=lz@PYlr=t$IdLt zx1KuAl)gWY>ceY@W0|ulkM0u|K5<)ucH8)l{(auUTU0}C5cb>G4uk5j@S7Gk29tiw z;tp9{r-hGO_<+jl{v-V88^3ClSFHkVmg{LnxLR(oh!=9rmTlOvr;hKnEUsZ)m@cN9 z^YG)l6QNFx?^x>={$42XF6Pa^&dU)VaRwuUkUfqD<3No?rZ)~pG!_|^(`1l{f`i6l zt;VAF&gv&L;MBj*S1T}kgf^-jCL+XFt=av{;}YOcd#xP>9)2n%p#GGS8C}`+NL&-{ zL`KpSM$#>1@xp%bA=ebghg?@0AM%y59PL@Ws)K5!dXTEB^wnsKAcEpSLY;qL@!jP} zNJq(j!>W=aN0>!>eZTXSL20kXBMl9~Hyd2MAE=Z46yz8CWi&pQX(B%lQz##xZAYwV zbH8D|fNgm~-^%pu0k5AM^%%O#Gp>@rm_|0A^i!66Ils%7v^F+G?tyhD!n7ipDpUMG_nxDRO@~#A1pQUmLY&TceChxH4*r z+xfd6F!?*bTk$|zh#iGx+>pYTEgyc_@Z#g66m%G@%I$E#d z9{=iP;J-4&e^C~Hnc+_l2V-_Va))^MZ;l6kx`%&K@JEI44`tz({UDOl`v9+@W&dp0 z9CXE&4A)~JP;FDC7z~KTobWvzvrjZWv3pT$Xf$=b)j&B6qz##6tmn#`kQCN^hUdNw z#;b&Asr0nC-$TnI&}h7xCt3))Dsrb8Emo5WcUImC>w8pKg8E1jn^{&+-x0pPJ@V=s ztNM=Jy1vghg?;OgUo&)A`{wh|w=ec@>g(zG zDYrma-`4y*#n*SV>I?We?HcME8rGNNXYqel-}Jotw&v&3Z>@cE`{wHFrutSuN2~t3 z)rQaZ`!8tUv>&bSa$nyd)fez{##rjRI;=0p&#tZO%ahNGx7Lqk+trUKMs(z*yWN>- z{ELV~KhD@+`f*$rclmb(I`Mybk50UU*V*xwuM9QLEq`8~#wOn&^Hm*?ny=n#++W}D zIdPa_2=#tjdMA1uB_2(k!x&oa4(&>n@;Gh6qbI{3yR)eBdOQr8bT0e89nP#s;!R!- zN-C8yzNloMuI{#TIN*xw+Q*z^D&q&!o;zI*}tub4}jMQ?oL z&R6df9a(%WDFQOfMok$Q=WKCNBvD0qy-)QkjmGDc5{ACGs?DtUcg2zVG$eJ{68~az zr2Z4Ws?WK`HZKRE;Dl#PQ7tP&rbrOPo4Jq{kB6wKy`klqP~WNC=%U(bt;&rys_V}| zHMLwH;u}FA#U(t+mYr`nNBFWw@+LiuKc;_#cNpdSY+ZhsFW*+>yXBX!p?t@@@*=p# z7hcR_E4_(7!W*UB=X}r7G0W(P`l5eP(S`iU($SOh&*qgE-k!ejcolxo3j6t5_$w%{ ze1swXN)rM>Rd}cYg1VGHzQ4E&y#BPj@^Md3cVBpK6|UeN; ztBI?c$M_T2K?fUdi)-%rvvx&pB=yeh?JEQ;BD=O1*X>^7tKOlgBwO`fRNWE}?31tJ z1IpSMzx+IuZlOc-#$z-!piBOkW$bbKuzi1M#=F95sHVDMmu6sQ5>AD&+rBq%+%e=_ zM9#a+nG%%mTu`1cylnZMRsOk8!t&XCqZ;K{l{&oJ%=s*kGtM)S1ZE^W-Q;k06g9V_ zSw-#xsln8^GJ8KoLo9Xi*r@!;KV?)#Q~fcMnqnQIy*47>yf#u@+he6L=9}_(iE>z! zYrdBd;jwV@c&ST>WCwD!gKIA_$F>5`nK%ah1w(Ery^hXF%kBv6z0{THCaz#=(80dc zxUud|Jk`LF=2z#o5Ld)0@e~zS#y7W(By`@10HZ`Z(am+rBBjV(kfo%zQ8KQ~%??O{ z9Jwa(pih@f8c~tNi`MLMEbYdXy7wuHaM>*y^W8Pa2s1ncMy;*apr^IVc`h1iC%YXG z2?^@z@92!Z)|dqU=~yIK8Sc_o@h8+j?ltC4w|=!1xm-ostLBEj!*{+jMm8+CNGAQ<5{|1(9ONL z7JW|#WZsRkk}WmH_Uq1*NTQRmfRpN(A*^fRb8?Q`+(Wh0FTpL2Jmyyw^p|U4iVb@9 zD2)6vP`Q8HtxIQP2S}*O*Sju#Riytg^?n3u#_Dp)e#eN}Dq zy3nCoT5dt0CbI{iAzAAFd^94V%>nC$ba_@Um9J0tVnk=>`(XbezOsvkF{2fxXc%9w z)+INsAJC>GlGs&0WFrT|AT^*{G(MJTAfc3|+!k6-n)(L>3gfF&7nizksh=NgKhJY# zY|=156B1|E>{3Swv1ayQWV9F@Ba)Fx8#FLWT>B?fYRy2vKLUWHzmdf8q9WB#qm}@I z)tQ=}^-UAH0^%N-YVt5LntGuQZ0`O0G`=3xcT=5Gb-@-xG=-lcHL=8f_A4BhUSk|0 zy5c?bdyTfcy6{TdT{j;_N95^R>3=ikTb^{ck|!4(zUnBt$Koa%`hK?~-E;TKz?76M z_^D*zSD_@t)UjuJ$Y%t3znaw0_hmtzC&)!Jn}G{uC<0_lgX`uYCJADkhiDK)cMp*- z3jbt)o6+FbeQ5+%3#cBT^qH#spZ@7FdiuCWb%Id+iz-?vhCd0_E`=NzHKh@tqV)W% zJejS>n&#+e{i4_r5|Sz6cs)xKrko$T_1R~4D1&o-Mx$e`nG2{?I zyyYPV2;xgHnem_Nv8h1V*lqb!-h4M{Kb?bPcT^i=8RuUy2G!%?On#rgopWJQc~nDMo;Ok>Rzj3yJOPpNPCHU zZ+e>|oog@QY_ga}rmwtN#O$c}SefNATD1`P^VN(#O~NRK*wf>lxl_D3pbWD z&1#tzKUhGK`d1llG#Ztuf^IVJ1IwuXDPFl9S6EkdKZ36M!Hf1K?GWt20{ryv&I`&pgi5!TbeTIK0Z$<&Xx7Tmu=J=ewzUMbN`#Z%O z_uj{${Z0K{5R2L!{hDA(>Ua;P6VuJ1--I7Uh;R_0#AZ>RaLlfxU! zH#V93jTxT7*HwpDBPYY5wSrH--pIm_2;frz{5vah@FTVfZypT%p%#VmWhGAA_{yjo zcR2$XL+vM;22e{q6|d0U?Qy3(0ktg7=SCGzLG4CQG=XWe?LS^`Nq7iv6}2(CM3omxkz)eu6AYZ9R?SQ{85@*-EiQQ%~N5;rpBM~^W{=K zBjWvvPBLY^GBrO|syDVxH}~NedX9-poK1i8m+vnFdiPz-2%%lxN6Th&U~{NmH}W$Z zXVr%yzXw<%`OjW@-)S_LbI6jW5Xz?rB?95F*3>+fwRe;wxV@9K789 zP9 z=+&;L8kd~smp`%b(Nu3_5@k1@r~OOZ^Q>GEm;<3!N-$G{y7hcNQ!L5)YD{k3rsc-x zcMpco{Z%8}+Yv^!V#>29f=2n|O!KaBw?@>)3VceRw>+kC1DKp1EvpLzsHl}XkbWrC z2d&rRS^Y2ob~9MLez=VV^?#-x3KbId6(}gyWAb0a<5We3hE+tyEsn44_19ptH72bz zfyUzR2@9|~24l6y_3n`*0|U01^)r1|aaLsgu+&t)(HVbV^J>iwg-riQydWOBZ& z87;ZVOv^V1CRdp+ zp~nTYr%JE5F}uo|v;-fA1nsC!uC+Uhwq)R8Q*C*pvcCXwq=97IppNYrLW}4y)2yw` zKK4<}#8N6jG<8FdcY9-Jb-2k(Qbk~FB_WXNjO4()O7%3_-8r996g#XYu)#2znq6{? z%%Rx>d##cM8rWK=-5yw=&+h;q%nGATvPc^`*Uy@oaSzfsZ;YLS1(+Q#(fEwXGzpG0 zG5QT%OzY80Ws>oYR!0&TtN5b_VV{mi29PmvNA7F0;i^-H!u@rb+BL3ZP;zZxsv@yg zXm(}B=dcRx)I@(_?8PEiQ83i%&FGt1UV9oJ=dsx*8tMdq%kMUjZNgMf_p50+(y;v_ z^&8AuL=bwq!}xW~UisKm=A;8S{a7Jj6rb#EH`v2<6x=%=Zq>`c4fk;Q_G5|Q9`D`pZ4a@krU5VjB9{v;^k44p;JZ9*&%^G>G7?$e)HD z4k5@hF{;GTg^uyWf`}GotA;g6HBceV@&t0v2k-^m&#Os zlw&0ED$0v+Zzjke`!9e@{=rf@Fg{NkIPb={w29P@<4yd# zw&b6ZQmkL1t=pxpGh^LajRUS-T9?Y@4N}nUO!v50)*17fl3ksh&HpDLfO8RL2g!47! z$56g=Vfis(`F|qP>EgojqbdI{p67@;adcSze^vfn{^a2wLHWNImLCz8xBZ)k3d;|p ze0^d0VPW|}JWt08%hynTNMZS!u>5{1UsYJ1*{S}(yz+5vgPj-+L2UnKHv?f@!k-Gt zf6JiHYi~tZ_$8jFKj%+gdwWuTUS4_IPCBt?2y%l!{%Rl|KelT9ZF%J(rh8cUY!yye zVJ|-}^}Z?3xn=0FJCOm_&%gf#W960)OnJ`YQMmT5K;@YWi};fMMSchOhzW-g=${^* ztv`@LPh_{SUY4?%bVnmOJxhw2q*KSaTb2-Qqan{={jS>`=*JE2W!|++ zFV8gMjn(tzJa>QLpKg_!nHwyC#Ic_$fl@ybxaTHYUKZ#U_OLuAufG{*bAB z9wE%MJmk7~xV8HMx5~ry5?q;w%io20gHc%dJjx@JR-lq!KlGMqf6O3=E?4+)hp%G4 z2wGG|i^{?lof^;{&7*ya=$`hD(S54wk6^elf+9QzhD4qj}n6+ z$?NQVmp>RJf7^}+k=fwmLG}YjUOdSCZ%r+X2idnRRcdB_&`gL{@gV0Qwt9ILFAL&9 z>igu!gWOAXX#ZS1NNl7|Fj*`JK_OTcL-tWP2>N_$d%|z<>VTcvlNS$C8Q<8pcJB?d z(6TJK9yGh6U2TW>mUb9C{BqOZwtnvg?wNl!UaoOZEZR!VpMh>=`J~W+lj%Tjdu$y~ z;+(S`i`f%T=a-iO z!iAza{63x~2$?yPH|e_k@-jfq-@1Gd|8lU(*M#LaXe%xgsXv#GUTY)uL;0-g@K$`q z=1AgNzNb&*kNjELKJ>ik<{QUiE0b<#MZ7)Jc%WAjTL0Ivh2$Q8lem>*ytMncm0n%& zGd}y)R))fFP;Q1RUthJJ|Nq1ImD>vJ3yWXb6`{wzNXfpq>bcOq2F~d z%CCPRET6ZZhc}vKbT?%p@C$eCfSW(ed@i3d*i@K z3L}XtQB}ca&4SoYsnTA%Md}Z-XB9OAQxnTHH~P?)4?!_gRJnupKz{|E#+IB+A0?~HAv6$DIbT#+Hs)Y$~LT;5F=LX@~W-eL;CZO2w!xW|PF zp$L&Bz)q5W#m#^hJlU5BYOsg8K&XP4ydpu3 zle&ZMP9CmUa7Tvq9Vy7YJfs$5A>@3NSX%QH!DbaEL$|3aHk6Pd6QH!zJkl1!^;lo0 zm(u;W^UyuEz&LbgCu-7;M*2{7@-6;pLQiRbQTj%qr!&r6&)Zu6c9h=AI7(k8m~;Kp z8a;hbPltJuWI#viIrE%p`J?-#FLa0sy`Vx`(=wI`?m0pOsLZ{h;X!cE5q7sqx;O99 z%t&v&c39Ilpwn&aYp~r-SsQ2RD|w9ln_MeHy>zC=Sb8<8CToxT^MEdM)%*P|!5hQ~hL#(wCZS%A|{m{bg4f)^x&Hk%jk6!St+8nM&r)vEY z>VMw2+g}d#KlpxR|MVQl%$vP5Z_*yyKOK!)(EjO3;AY^vcV5jc0!MFi|I_m`gx98l z;CBw-Z^?rnyG?j=7}~*RJBr}-1L@+wD__N`ZyhtAwkGgMuaBJ(jrS^w9bf^GyLVSsR)Lpnnt4*w zN}#o)IxLi&Uz>1~=i2~TTZ+UUh{Q7RUl@loVM;UlLPt=v8|l|WeKj_l(xVY|FL!?Z zdNoxX@18d7y`5tx6#*XJxWth4xC~_Jb?e$o|pdF>3(v!njp>b)%EA+fgbm=Ge z(w>Lx{#N_f>|doOj>ZKd`_x^1IG2eu^dP6Eb>*YI`PtlWG_@76x;FTbUs}~{2^TcU z#kdb9j&_gq*%1a$7+jg0%YmkjvX|p?+En%WELK6t%IM@L?lwxKYD$0pWv?%5KaZwL zt9yMJ>y-Lcab>ST#kKE5Q@<)>lcub8LFkdBI^Vy;%bRR>xAGhw(GJ`1c^|@bQ0#qk z)F$5uFAn(DhuX&{VtFTSpip%~kILWUDN)es%U$$<*w_z=Q1TOh?9}SySUQb8l5SPW z(WUMjwtKNp4j#xfGn$MAZu~K7S?n4uS^_cAUUTI+mFIeT8WqK9A+F?S2XT0wD6do< z^%l7~J&nhGOnEiCV(xE|4K8Oq(cN$!DVw_ue>@u0vEkdeSFWCoYgJFn?c#HG|Gt~W zQxRm0KwdtKv1OZJeeL%EgyNfMudj%=;&zUWUeV&(T{+5H7VQ-+izL2*MjR~N z+$PRMK$4H|B@`mstKW!7qP^ka^}d`?Am*SZ8h=SH3i$jHe`Ou-4)2VW*jL6z_T_}M zq4O|Pz{{)54WA9GtWI|ATBSq;t|vTEm6{lghN(tF?8+)jwTI}tda;d;U;}bABYah) zUh@S;ywMk<50|>1tBeI%C6`tu(+XL5(;kiMChULm03#TuW84s({NNZVXBXyn%S9$g zzuNB53U?G%1>>uHRbh!7NyM}I+##Q9(u&J``pBj)qC6qeeZ5i6Mr+RszGe}Bv>Ouz zX}10PiSuT;cjc?xi@a^QG3RhIM_43L5C1t&(&N%2r}=Y%lU8<7mk=<5skj0guRF~v z;`8X>vnMrV_^ktnMXq*G5FtWg9~J`S(I7m9$S&E0JWE^eaKGr*n}e66{?@EDe88>)MCEaFM@fbv>Fa zI$SBBv}l*iitN^JEc>@&H*-X5{}1yIN>B%U2xlZ-p6%#cXO}D_zpQ$RhO9!vD;pC@RM`&Ar}BUd*6g>Q+jkbINFr zWlN!+V>QB=`HtXf9oKvj*llSO`x$Ej+y82Iry>wEIucl`UVmYhCYNFpKYOJ>K9K&+ zZ{if`drsjFOm5Z*+;?g2x8>`Zq}I59K<$wmFgj*#2WXQXYTIY`asRvmwcab z!34Yu8kGXn_MX97ZBnKM`;P-^n7g2p%b%{M$<66BLxM@j&j-w7c?QX-DSrLx&s*8t zDJuYeOcXPIU!D4GO*O|(bv4m|Vb!S#!v^*GCN|DiQM=QjochIYLtn_!Jzu^g2^J%{ z#9p$_J(Mq|g=`bL3JdZEY&;(Y5J@bjuwCdiDES5c)7qZ+L;d_$-c;S8#a32fsI|=* zQ@GO7=8@_Svtpmg<@)9zs9ivpc9F^=K61lw?r09?yvlRahtPWT5YO$JF!%Tlrf#*2 zeOg};{Sv7+^8v*n2mUm1B(a+Q zVq?#6)y@!Y=6MY#XXd`V{s0B-Om{LI%u7_O-|hTwvASLdpju|QF)!HwxMN2KKpeg@ z03Q4u17PgTU;t=w;|IWjvwz6MU&*9j0+U33Q@^A2Caa3n_qh22)dp!?!5MrU#9-~?zemu4{zqVvRKU%n~0(0Ljr zvowJsElM?Il}SUEx;j=i0-Fq2`4SVV2EMW-hsVw4n?cD@gc)ye#~?GXv3r3D!2qnl z)$y`4Q&Fr#7M>BDKF7F+z2kbnXiTfx0j7QFnReL~Fs&cV#FP}v!d2Z@C>XOpx`#bA zXNs~Wu%`RW4pGQn)QH^R>d_F8UO$|A{HSy%U}Ye^O@;O%^PQQzZe2v45FN;g-Q{P_ zYiLVGg~J$`YUc51(NwLscwAafF> z6#NmARW=L;^4tcnDt_d-I1 z)!+HEsq|6n{VZ0MW%*@N1B&y1PHE+ikbk1^{AKHSP}=AHAp?q8JC=n3ptnA|l|!Ts zE~1h0tHVC`{WHY$R_NdO2eU-jKfM8R&pjFPTl6Cux%lvj#lByCfcSW-%~N1zPjH^Q z1WrlEthf9l=iR6LBLkD~Htr8{rX2G$oFkW~JL?O0tx3Qi5SwQj{`&qbC&w2{(SBT} z#U`=XD$|R3W*|AmqN&;n?F=XTcd>1U#IC&PUyj#mz5X;2tkqxs!p?6NJ&-A1kVoK@ z_{PJp&Ogu1I!ro<`Q|Uh@`vW_-`RBdBJZN{@ob?aCfV1QWKi=<>!;)^+?80>VPRDV zzBF~%7+=Pj?;CuvX(|>YasK$xMOy#9G~FItUY)$4Ox6;uU*TrH;1`RRQn%J39T~!R z+G=kNOAmBDeerub2gTKq80D7V(tqQ%{S#CF#b2^YBK11p$FE0K-XHhO%BLm|Lclry z_jj8IZ-gT=+t59-E02H9=D=Big>&G_=Xs;_X8e*=is1RCE;Cp_3CYUSK;*QgZN9Dn<)Ri zt$Ee1Cef#-c3L}I&dfU6AC#kvo}_2<+vscJ7kK`bd#@+y2g3I={QE!U-s?$PyK4q7 zwXF8%-s?&Fyx_g{|B&p<{yo!CeuVZt{HgQsM+QZ-%LbwB?(rvDJW*UI8@dy7LcSzD1lj~~XLK+Jy~fYLTSNuLnDpUy8(ADMfvC+Ype z_tX6Q-E;5tB;7WAKgGZQT3di7-?PO(JxzbYvygu;P4?wpEi9*}>F4swjUNLse+~-4 zgE8r8{K)ke`hj@3-22h#v4!u^J@vL9sV&!J|L*BwLE*xY_mwK{YoJw(=bRoaUyv>r z1OxsP_Mg)Gsp0&1n;&l9zbd$3&CDGcVkpc@e;~DJx4)TM$lt12jP^)>4i+t7gLPtw z`&r<7-t$@JNj9%i{d&rbP`tY4%;9Hemhnux5v-bdrU%*a8LZCpl(Wg55^rwEjHn38 z*}O5t*Xf?p_8GqNN7&@_^~wDg+nE*Lr^(f<`7+DAzcXi_cz?Hy=~TrS72ZK4aPC%0 zM)ChvpS`bB*BQRN^A4@&Pqp106wvWAql1X5xTHg%CFL3Oy`xY4xu-n*KI%89KlCRX zzW3R0Q@h^!o7yFOb=$*Nd3v;={Y~weP%Y6bt27k#CMJ~XNYyeHLteNO^@2}+s~nff zH{B!8qWgpE_Eu+ZQ5nC%80+F%{_#U5dj`n7#Hzc<_2W77{!;h-lQwbm`~LpS%y&&n z`u=e$VfJmG<~f-Uh()&$nOpxfH8V2}s9%9T_zXLO_j6v}gBJ_@b-SY|lELz;}5scF{8KWvK;r!3!)PFHeCGyEmCQ z>9xJ#xC-O)gcWN{kOF)^CQs44`a^lL{@js;t@<uBAUhdK^!*g3j@^HU0VY)CBZIJv|$Rj-8?H(IbT`%>NlZsXAFP zRvx;u{Dz+V<<;wq?hYI7&txC+`@>ehf6?xN4B{TxV-4+lwJrQTuub9bGcft`%U_rQ ze;)ibTMB(0;2<54F`wMyfX!sz5P4YPZYL;j zppJRF8>NKe^C-&xU?PL zf?CRpt(MrGL8keib5hEvU@6V)Ybwx3E;R!+Q>zW(r9zA?ebXZp@+-}0V*CXUqqicTXMr#Dp?G4lgFISIi0EDJV32IO8|6ua?*c9PY%2)xs}lTA~?D-P2(lh}2T@ zKyZR?8N^Kd^)y_#NnS;nB=W9R3WC&H!Q>3` zr|2EjSpcnj?a$UnKcG~@lt7QjF?aZYCaUmD;H@hQ7K( zsjedO+`RN+v+Rq){@QC%{L{Kgv(;I>Iz{ToLQr+;%5J9W+RMO?kCV^B?nes7C!QA1 z=Ji?)(1m5y9b6>wYpct5Xe4o?ep!#wwUPQmSRfn2-%ulQ%c?K*FMWWmwTb6ML%8=I zvPSQyM*oJl2mfs;KyR4aw@v5aoPI!c3Eeg7MXGR1-3OTWaA;5}XN$`LvS zTM@Z$UV4S6r?%2Nrqv_Q*QmlkQ{tj_d!=n#;igF%gAF}?QYV*a#x1(@P_RT27x8#d zax-MnRGSS-itu)Euri3>TJ84C&{t?B$v9po0JN)tXa5o|%Gj;AYx;lmD9|&W{`!85 z*7V)k_@#j=rP(-!P}T8$FhnurX$$u#3`N5CwOYfBJ}?Dkvh|RwC@>x_*DH zLZ$9yBBb{y_@yIGG?iGlQnwtrP?%e3nrpMNe8eA`LCalKRC($kGUHqDPx&HuzLsS1 zx!v-;r?x)jGz$4$SC-;`yr>AM8vKp!n6R|Ya}><)Dr)%K6yh%qA@WLZ1AiNj|2-`z zM9o(CZU34&)(_aNBvL;g-f$oZ8(~Q#QAzhs>Rrd9+AB;Q#4aN81esnH`wh9(aC^7! zzaguSaU97EL1!pZ#T$<;BtwPdw;st*AvqBw(bOPK1g4DN<+yonDsU?p6X~uR zgIZsd$}~$Kutq_(MXu#OYge&QY9Ez$6$|A$Rh5Twl2GQv{8pjdQz&y|QT<)mf8uA* zf3ez0y`|l2FZF#lD(t(ngT70Co8NacfTZvKDFk*bU48eI)UwT|*}hXb_1%O~Zmq0| z*8P@k?@_CLdpF%{?fnL$eP*q1?;dMuZ#&wH-pKEVry1#6_2VYw2h;P9?r$E^<3e-o51~1C8~h)d z-3Yf`i2*r#5cIAc3pyn_rR5qHT5PJZa`P6Jiu7c_? zjmUSlIf5oCF1C!JKPRRTTIrE07Ev+jUA>akEm_;F z1$%VWdF{%~?bFpZH6%8|jg%6=RBQPj^&ZXj_Y26d#`8~j)N(5EA1hpx{R`s{t1GP? zh$e|mbhD{#Q1S=8U@ItKWA;3eyVCH~PHn|hw~uenH{Z}6IYaDBO5gI;G^vax`I*a^ zmiYXT0?C}k2uM$~DY?QrHCT)Ef{?skwByMrC%;~IkKbkdOQ^m_J^$veqOxb8Bfqk% zRas7cPg7-A=gt2LzDvKxg93$;pYJ2Sl9Q5`v-(9cSVF+E0USnuSAkW@*^@q%Y;Yb+ zT`*~UQ5~NMW$buO4?n3+5@PVC%-_42PNnHT*L!B5FdS-WZoL|q3ch^5AE{H?~zqu^2*}f`5CzJl}Y9qm*g*H z+(8hKUMtxk{wy2e3IhY}wnm+aXjqILeW3HD$bhDsaR1VFJSXy8Sy;7SdDS2!PI_&( zHF)|jc;lvJVE0}>QGyaOtm!)BFx34>n+Dn4ExVk>!Mxr>03XDZ$}d^sV6>}ULrzA__bjE~jH#l~M`vc=xi~8dA zs5wOx2KKyr2fNialw?LbDF^1*DxK zG&u!!i_o0&b` z%vWalnbV9XV3SMj$b*2)>F}736A7i4;KK=8dwKow%x%WEKC9tdH~6Obgubt?fOF5o z(N>yhl#~`Yx1om~N5CW}Bc&hC@km#!0%=d*8CMJCC{X&zWTWYalSUVa$&R2;?=J-V zc?1s&!2uq@F+y;lrzzhGSj0dXHRT1MGU*Zg@owwNA&p(sH>Z*H?vZ~?%?z;wbDJ#} zo5l6I-_H#rJjAHfcr?nT-8e8n?5q2Pl$hpUT5P93Fa!>e4KS6MO}=-61@u-B=8B6M z`NN^eqvp(zp6)lSdFkby#L=IDTc*LKvol=x*N;vJ*n^5&zeQ_zpjn(_?V=A zB!At0Py*2K#v??0Lyx)7k-u&R7{d8Hf3;`!yuW`@0nJKV7fIZwni~#F0f;c$bvD^V zbvJ_u_g@eeIF<;rb~qX)G)HzLA7-iXfH*Bn_?4HX?tHN&m!&R{ufeRL;l|39aN~Gu z?HYG39BRdlj*Rxk3VYA=xyG$*f&}nk_OOe(%;IL@G-R!D%NVUKpBCB|Sr#%C_pskD}NWmMIKN!`!dR!rWu_!*}>dd3o!%kvq)oc2q$)da6@4n7$&KIzimQ z2ryt&ug>e}W(sA1Q>wQEaHETk?7nO2gfS}Svf1Eb|CA3SFZY}E|9?*Zr62wq`cFOb z{|EYgKB)>dwIJV=ZLl5xN0W)BFOi9>)kzI~+da#P#sPmqE_9Ge*|c!OkSFpR4V)%P zLVowM{#CxJ$&&@F{B_k9eMM@qiY~D#t7FL&tD{PFTN^ETLq(KpixfXF!1{5=AI-NlcB}S>`>}?vuFmLh;^4HZT84aw@3Z!i z7h?q24uEJA`458CDTJmN{*$pa3})>Q5G&7_g@MV}9d1K&j+*^6u-Dwkwf8bTA!J8O zL4T?`gKT{o1(vCftbH}IupvbI63HP&f!v0Z24hde;{UkW`1-MfueS?TL*D^^gRd$0 zZG8QRhu($OQ^Q>QNE!fHM4^7ez8he(X8*7*YkRA5u9L6t64j?2AnJSnuhh3sSf4B; zU*9XJ8X}!7z(_0d?{Jlj) ztD?vq;^|L(0sVnot$9lA59!az)iN8xg*aTxjlTVY58E&Jb>MB?euEG0_j<;|brf76 zUsnt6g%B<$U!y(Tb%A`1d?!!7R_<9SINOo011k%Q{Tumu4|lTUOM#27gQxVoe?e&= zUvE4KrMrcc=HzRp4UY7OdGhsI%J|b&(1Cp2Ea-Q@YW&H`SDlBxD_=gg5fA)-$p>3M zd8=?>FTY#)r;$3Q&+X+Kyazma27uywNfYUnCcXr$y*D(2et-a)rR|;|&4A+5dzxG$ z;89*-P0Udy*@QigHtP{WkB|CnY)&13v2#KgT3AX$PlsE#l?Wjg3KyTucT-8Mu3vOf z;x!QKitp0$18sF%D5s!9edQDux9^LXDV2usGhm(KQOT+wZB@X$Ejzn0eUx< z@HVkp8LqSy+dX*S&FDU@YgC2i1ckIRREO&&GvuxO&GvtF%0G`J6%{_oMl{(b zt-GY?@K11Lvm{nD_>-No9bLbt#^U(NHk#%yXEX)z7nP4AAN5H_6LvoKOXzJplHoaO ziba8cp8l(iNY)GdPW!v1xR;7e;&wnc5?&xaxX5#|zY|8g36~sf;#QQDv&s2t=EugT zNWCt?iU!STtO($r`g_}=bU$EnAv~?~(@3>%<2=HT-M7Zl^{~-DDIT|$2YLA*v-vOk@;rS$ zf5Q2k@*^nUDj#Py|K+ywaSo$==R*A1{FmFv$2qf3^kYvVXE~Ct)6+1U<0HKCcR+;s zL0jeH%;pE(RzA)#Aa9kAGn*guKgq}GQ%h!3a@u`rl~82sEBK>0?}B`sN>}w?81R^jt4&>Jcaob=} z26`H0HG_`LY@Lr&c|JWq!hD=YKeo>28=O@l=s`f+w+?Ku09Jl4N}slDG>brj>#=lwa*nvk^Q*`{~*9TF3HhCMrPZ zwO-)6JN@GDJkb9m{Wf{8JpDHMX|LbPuHTk^`xS4uuivnm^Hm=Hh}5~n(JCM3a+;|b z_L_QgGRcv&jriNV{F+Y(08s$Kt1L!XICljM4E#?@juGVV4D)?-$t&+ux8%wzeph+= zt(yJaprDF>C7?+T3`KieKF;mr)6BtBE%`hH_&;w2KU&LL)mxa)Gw9!KP`{idvrs^vUZNk&q^;Q-KBc<2K7Poff$V zwpl(klw)ou;t$x>XZ_c0TUQfhZz1~3@AhjE%lcB^{{ObT=I4{dWb(xny(@}8GV&!j z%b*C`xTE(edHb1Z_`7#<#RwN~PS2oRIG$SD*E(RmNsbcmPY(dqT;LQlINn#$!Mk3_ zj{yEV3X8cjtW50V)VN}ZeZP0_*gI~BmHBdJn>s_~diXLkDC5r1J2Mmfd(n7yx|0#9 zcmvKyzg!FnP_~X~8U^4^Jhm+@ja?KpoqX2|)W#~?<*@S{wkKofCDynus}*d?Ib*w( z@S`<$Nx^Zh($r0G8oGE85&{qRJ$ZA+O+{DoT=vuxzH})BmMU(WbP3)M+rZ`?Cc_gb zN^g1nZl&1z;tTMs6;V9_bS)z9xidsr^yx96&3g7$b;FLnK2`H}WSSLL^7 zr?5R&pjKrE>Oi$C{!mS5c4zVFnrUg!o{!-LGP2$FC;-W~=Yf|0q&*T9?>%_nwRS~5 z{&bqY*%-M=-)MWrCHUqdq?uMvr%zvPDOMQ|Tla1kH@b(++)oV|vj;7JdgX3O?%UNJ zf?R;3OOU^5Tkzcq;qj;c8~B3W=;9og>#Bb13}Vy@;2)QywW_}r{G)~NX`8D;`t#sr zh39LV(Ehdcs-?J41`e)FC&K(Sty&={n(V{=&s#1rWit+zOl*hB`0=H&fv)%uHtp~C z9&>7Ujn{_0kNsnsvfu4A-e%R`@i3fK|4~O_7Hi-OcPoNJlh`Nh0>qxyD)tHn9f!3g zMe`G1vl`S*7-ZFyRf~ijNsb$o2aL4|loI9_|s}SP{8?imY-Rm@|x#5Zm63 z-|cGwT{2K^+Gt4%Oa#I4gfpf%{!Rvh)P9-Towd}h8FQ$@Ewl+zOLOa+DAzS|({iyv z%Rtr15~qtk8+yzii3xG`L+Wczg*Ut1r|RocX@zdCp69wrf}J<+54lem8qQ*=Jo0tB zmJxSLkJ48#QaEW}2cul=!NJ10yM{9h-=)!!q@L6Ix(j7{;0e-kdTsC7`np2PGObJX zRLfR()YcgAIbH(rti=FxXkRPP9B@>?Jk?^;J=Z?098NZguo%~!aKGAV447UI#~dZ9v%W1i?kzVjUIVg*RIiq8?BYXK0S+qTPAcv z2OIK^nT4yTmuP!H04M8&|(Hed$JCV*>hzcM#A%uowX?`8z#!@$XGM zXYcdlbhyq)L;!HEKrD@3ygyk$)UrIx2ZIXP;-c)uT4C z9V5>bmrgF;P0ooKr9y@KVhmYte(_awT6LRc1f&?+&Acja0;WW0+a}x02+)>zv~5A# zCK_)N+7d&%N88DJw5h_WP)d8s7ZDHviBW=Y&CkI$z58hJW)syC4Yn6qm&~jX0ZM1F zM_2d6-`f=h57xN*^ux%*xc(DAs);>G&j%*!Utymt{Q?RsobTO|tF0ftc^ke}f|!1& zdxn1aY^?RewLD5+2?j1|YKkx4NJE=S2BwbQV_-7Yxv1AGzgs=9p}Kt$JV?vA9sgn@ z_r1LxpN+-Shrp&jyY~9}cWVYVbo@!Q&1~~y=UG!WA2NL_4iy3GR^xV+YK#*nnsrEE z+kbb>5k*Y02`JGARu@?`00T-|9WPs#w42-p3cbCm)ferBmtvOPa(+%aAHmHi)}f zzE^EBc2QH@6roYCYGy%8^{>y&P*hV@Sd{f0;>4=-ZgtRbt&&wNC4W+7<#&G}T@tBR5V(PT<(o*mB*)2S$@WGOvTjpg(dYsM+@UpX)@F40SoX252bN`bdXj!Up=RUjA+OaP*+K~r~=eXoU zMt+)>K<>_YY`h(1(DI1j#LQtZGaR5{{;kazAtLs52HfJokp!25QAm>&o?KJ$86gQ#X0G(-1qGNhN+;Hn$BRHE$#J z)a-+=8hRXYoVOXKQ!oeK#4npY`E*bHymiIG{7M0U697-;X?LstCj`K~;%ggut62f^ zkB>HHa$A@x_^JR)DX;Xjh)?(EAH~!SOxclJ=eUnI$w!~P3PM+ZKEVuiT@wOZ>#zZ^=E42W@Bt56`>5$pubtf4oo z%Sv72B6AGi)YdTF+I2dwG!!IQN?&@>aXK|K-)cLVGVVLnUQmw=i7CFEO!E6qQcblZ z%U8AZ3H4XYjUuQKkh7wU$-XT89V#JVvy>i@u_a9J>2ieMFon&hkNbiBs!Qn%zW z+8v)eq98=E0tyw^v?iJwQ{raaWSe(4EfjjTb?I_mq3NJ9$e)R=pLw?HqZ9}}*jv-D znhZ8MCywZ)mZa&a-k#of7eMdLLfFvviALz{=jpweM`##jC;aOtJkG0$FWL~?UUQH)R%;wSYa!0&0fd?a9 zd^5|dpRibRXFa-}v8#lHXlV#!9lXK|$7-lr-s8ON2RxL|E`31fC&_Z#RzI+}oHzC(`(KPr<= z)eYqOto*gs9Nj8UXI%HeGUu2qXT97-IQVRovoF!EXi?;|;|!$X z!AngVCh#bfhMFs6BCsRNA+(lTy`3YokBeFuWvg6`N3~!+s9yG{W)YI;hIv%+JXGyN zROx|%ym#`zHwySuN`e(qCJDZahaaB@KaWvhq@+6p@b6q~?Wh*~tG@Co0WSeBQmye4 zuE!<=Z2Od}JPIu^Liu(nkEd98G$%pC55x|-TRfg|JR&wZn?Jw}_vPQ6M|o2i4Sio% z`H{Z-wJLvIUim|O`G-_qb07HcR{5iR`TRyMV?d^LCqUyIE7;>o3Q~T|d3R;p0Xr!O z64y=scvQSA9i6xSkj^J`OTI>ma^8N|9popmmM%D|q)*6$50)_{JS#JNA_?q;{wDKYKFoT3o2sC#PIweb7y9JH)rGM;ok` zp|sgzFDCNPYnEaun_^gbr3;&Kbk40f!bZN59UDD@aL%YQa7*f#!Sm=@YmK$|Jbpp zsIN-nXHi{=mO)?+q1dL96zL z=IiT&Q)~q%*J10#I&$Ap>{#zCN341*xEitgm^AC+9#$!N4Noe;p-QYaA+03%Z62N; zzel^E{~CIfzfbumeEHgiEzeoMw$3*g*bow?61VgvRBAi0cL)9#{G;7#Q;Xv)>xuUliZB zw6}3|&x7#2Wi(7)H1lq_9_p=W46Oh|gJD39xz$@^0EtLn!?UdXgtvY3{5L!|dr#8~ zalk`M?2ed4_~TQ*9-+)6ZFTwa1j|3d0^iHSNuI8R=sFQ17_aR`*I?15n9ql^@=&B9 zAB=%e|A?=7_5DHBsJ_wLt8d9D~mH^qjbTAi1liMH*S zy1tG=b8PRl(1B~?Jr>)oe38k2tR%V6?-!(o_N-q&c5U+No;=Cx<7m9OB0Y6C=_cVU zvfuyMJ@=dX4q!K~rl^)<9NhVg^mHO~jSB1gj@m||e{%bMD@*L^I`_cC78OH|Y8nuE zF1sJNvZtXlBO_K3O@5^*9=v1?mNOvIpS-u77fUhnywnbz&#M|zI3ykYOoekGdl_}8B_h9B_Ldd-K+mH#{KhoNNqu?$9E^I%+YxT_#nioiHbkj!WCN+RW7yqM{aJ{lJa=q)u zUX@#cbmR>>v7yI1SFyW5J~j-Oa4odJSk&ysHfmms+@xhAQN*mfDSz?rwA^0d_UU9x z)?&_72A=IQ-rhjAc;0S1_;%Xv0f<((Wh%D4Z1kTLMqAQ>6$)JI*=Q>t?>X0cDOlaJ ze3y}^h46Gf-4OxdPw_)~HZqG(>QoTEm=rD=^YWLw)Op6|;+Ns`^}c`l-%J180{^XN zp9Pth&kCtJkI8Q(`dsKHm#&}3^WseKO!0U&-vgeLglExAVF~r~Mnpe-7SlZABOLdx zornK};O|v`&kXc}wBwF8*v=OmQ8XCq zAysP&i=&BhK>b9cN|YF%$A03bj9J5)oi-Uy%5%DaKUn(&JPxbJ#aeJMW zKATd0T+aHe7@yER=O0m&Dz??R*PHRo4zbfFWn@0Z&YhHzQ4u?5Qs($#KF^+%snF+H zlQKK$bNHmp&iXuaQs!2Do)ORNtB2DBeCCXuVPQNIi|v?hewKiVrs%9?RN47ps-%3&wx>j85o$<$CZOmA{e>@Tv zhMqHp$TUTaMY3a8F{ijXHKu3v$S>LIV3i`58PFBuDyfG%zG>srLsOX-;K0G<+ODfT=sKSFXH! zZ49;2`$t`8pJM0}AaS2P0Ihk1*jnP`fW&M3(Q&)Z5>-Jv)x4qyg<`4OSidflZm~sT zQKP6LYJZzYAu9QmC(kSba`V&2sAJ^cVRO{sZ}`*}nXAf5^*EJq>YhJd`ItUp>`YerCS= zU&v1zi2v{8=dIg*On&~#Te`2c{M_juZ%ckA@=CsmYjgT3D?gu+tS2i!U%azj`AJD%v^P1n7{Cw;31hZ@p$Nr!5~`q8_j?gaNQ7=6v2s=g{qO(giBOYX zk6RRo&~^p7JqACA^2)IZ0odgP~m z8}jqu-}B_>;kQHi=_CEKZ=U`+=@OG0_sk^w%*xNmd$%D!Z~n=X7|Ks@6eZ9IB;D)m(xE>o-p}&>RgkbzkiV@KXre}%8%lWy**Vh1so@OsBwp& z<}Gzw$&bHJhige}OQC%I5N@w?ql&*VAI(o?Iwza$IvuvHzHqz9naRq2o_hvV!;>!9 zrob4I@W^bp`*~X7`^on3ZRQ-7$2ao7!8gC%cIaEBb)nJMX*>9Wjg!UN!DJ>^G|^z$ z;2l|D_yqA6(hMC~pV-Ol65F`UwhxzXM|aTU^oiY`Avf|F_v4b01>;Kw^NlVGk_lsm z(c7E_{#3C5Z{QBgTU{6AlNcj&=U7{?;@o4N>&Kc^_CMbviSP9#K6i{=P+-BM;asj2 zw!ar_Om2dQ;5r}xVQC&)uFFTtbcVRmPwsXh#ur-7l_aSMU|@y(i{GEg58Lwja!_*ZMfmO=i#|W)pZtuP=>|ZshRG3s`yn&z z%si=niCQx)tMlsAQltGJiE+3GgZt&lumO+aYTN0Lhn($U6ahvL=_4hQGK5#luqP2sD*xtI74g1kQaeHe>GBUVVt)^LPDxy?Y z#jZkttJvLq@pVf%SlwY+B%!gWL!Mv$B z>@SeXu5YR5`B#lik@_J5TEd?^epQ|(S;%_D8+z=MHVLxXBKc|L7ewgvv_2t+BPq+6 zKKi(We4S4}L7gX4Cv9GSBW*qcUYL(1*XEBIx|$P$SZ(gZ>e}^r+R3u+^Vm-2pXg7t z0*MnpV9LywHP#O+ z#gjnp-blfdec+YxBqw*Tppt^T@X`+&A1A<()Silky+Ypx6l>V~Ygw4FYp0~ocRWi$=3!g)_iyo8*k%3>094l{?dZhe|B%s`n`$6Egb(0#L;f>DMtUHdGzlh`iIl5 zR`i!hr7~*Nr(yepc8nGEJ2K86?|pS~?ZZ5U`tB|FWc4Ww{sr+?(v>%&$=(P#D?X#p zW-S{PdC#_9jKMklasnvs2_H?m*(=fy)4De=PnP}sDA$C7wlp)s7XT)oPSfe(ea#6{ z8M$>{U-_f>GQWRfRqa{*6YFb-s<$I10!!Ug#t53alkX(+3WoL`;S|Y>OAS#ZA;09r zA@Pm-`nW)ORT3}oOg@%TbtC(1X*p364 zrFC#n?ePAXpIgb=XXWKtHT-PuBJfc%x&06Ahpme3rD}fuLVFn+x6RID$&|=*{rbe0 zZRxOZa=$(;Gsq8Y<Z`x?n#y20K(ici#=!{oJC)`@z0C>+7eH^^%jX z`FmS7K86fR&ePIIfr5S~bJ9w)UNCc`w1XBg)aqq%K=K<8>(hr;_2HSjTWXFMT^}$% zA$b$ON5Q$pcI;f|vxE4O^C`@7+f+SE2ekU`)@n{sBXbFyl+bTmRgr|VAL0E5k%Z#p zENt)#%i3N49`D^VzcT%F_ao?6MKGqdFFk6CX|k*xFJqpw`iZV}ywv9uK3$ZlII4g| zLc2A|5I6WdTg5;BJ`4`jo&u~SGEXa`Xl{3c^+6aK7$yO5ci!(?-p`eJk~)Z_mmrC0 z@S}QEX19}2nT1;fi%*6G)>2W&q)+nWkk@eXmvCPMMA?c^M|fK#)T=s2C};9R_o&19 z#tO`?vI^&&y9OFx5)VU!?ni-$AtK^Ih%+;X!2KpmXys}`BGOk$aeDh@xQDM2{O2CN zv*1S-z-v>>m1g0O$-?8m4re1Dr@YB6SSK-`XZ`#JaN4-NNrQ?pIctQ zUrihwZ%JlU*ImuwIr&g9muow!#uqo*X#bNN88yDW`ylPU!P_wVC204>@Pp1*+Pdh8Q*#CU$={b3-7ut8IF4y0dbFD5!n=el(4<8e} z&6CPDkta_V`}e2meW33T6#gp<@S8l9h4}O2sq(+G9~#g=p=vVw;Vj`qls>=1c!~Yc zh&pt);SiHr`VsqK(P}S8rh2wzKV3h^Q!`7*fFyk2EZiGgn`FC>b zC0j1Xeqjz?%mjRQ72I|}+?I;S&JW_JzS0YwSLfb(*${6A?|po@W!(?2n6hXsRsm^6 ziO3njBEY9zizE)yGog&n=z{XbPcg?z&9L~bNaFAMB{y0^b1AVL3L9?jPf7X2FvKsB z%9r^PN&Hz~F>f@5GK4g3Zf_RNOi^vo-u=cz5{-N#E5OKGlp1M+9QYeKUnhM#hBrD| zFpb|@n${5tgmL`P?{ouIvs>QdPe+NkA( zz7I^@z7Xo6Ff&E16oM}T1QS>R>GyjA);i{}S{=6Fep@@f07RDV`q=@@MZlQN$l(iV zj_>g?sK<7S#(Uy9d4XcjUr&W*iCBqY*Z5jwpA;gdN*oPi+q@}w-46s(2Z!C zi_*pkztg>$S&Y8xsWY&P5CDl(?Txq^OZA=}D}mIsqG7Ppb-KU}6^&`pXzi;`jVN*b zc;yT(Ow(;-Oky87cN_M-2#j6TW8C}xwWZeHiz>g_3v75C_Ix}L?_e~ zMG_zJB%7CFzwss-^)izyXYQ!N@{*9(yYdrPAChcew6gCj5kg|?Kj#rHVSVjj zV|w_o>eTpQ(Ih8@<1fD=0OBlFTGw-tB90aBLUY1VKq7A$sTB!gCon*L9)`F|Q#J) zndNw+alH0aEerRpPPPPB8&sf@U~y&Swz+9J@z~$tZzkQO?_R&hXBeo*Nms}IDXhHI z)I)s)yKqE=^Qm;8?)lOAU2nm}{-nu^wO^mE>0g4-@S!I=Sd)+#YLaxKq-uzf zo~2q%P{Zo`{C~{733yb+(mtL*fFS4u5s88tB`OMN5KxfC1QMA@P!v=Y7Zk(@C@3=! zK_D;_VH~3Ig1{B87X=kBxPr3WfZRJAc%=iau*Vv_lN&p(0_N=u zww4i{K-^93CD0mHT)j{dM{8VO{na+($;|D5j&# z4=HGgzw;6R6?&I^TNx5-^DX9TP0v>CaG|&~BkOXPKTaO}Jq&^5t(F3`o7+j`Vg{-RKKNi3*OOXmUF;tBYy) z;9Ptr&a2njtEtT}=B5Y48d?RQZYHY5VKv`e#xnzB>O0Oxz=pUStBq{D85Hn&oN3W&mv{q?)Xj&V_;sWJYD9Gsgel1|<8JWw9qLa+s* zi;(IvP8ACF#-i^?Qyk-KoBQo#ZRYdlyPJWuaXAFSv0iMA7PudeMi=eDgbDw{v4Lp0 zgV~b4n-5>y=YLbTq*N<3Q`?lQAfj)1G}W~2cnX^qSmt;$Ox4(rZrJdEe|3%jYlQN3 z^9cSmiT_$)gQbx(KmSlddjO4yK2|~005;2B1HMN!zFBN(eCe9$tl5v?ZTR}2u_+Tt z$ckg?REqsr5Df-CjS9Kn38Q~tt&SVf@v1a-wxWa|%X|;NCnvzVyzB|p3Ygy;wjxH_ zkGKzTEp#zIcn01|X&t{Gl_U{}BA__o62Lbh22dF0og_BD3}b_^g~J)agw$*V7-RCp zK_)I5J|P(3auvjme0-mbMLy7nc(h4HlxJ3SqjvvQr)EOGOpZ6g?>XL827rEDL05Y{ z_%zAz_;R?qSdGhbXz0X z))L*;9c-%*ZP~rRN<2>8j<(nf<9Fht+tX7)5;o)b1`#uL_CyVW-CyP@6>|Z-)KSb^ z=RZ|Z$!`&jC)OY&pnJOOjc*MPKx(@L6)<2|ngfPIyUl_{bmU4@wDiBMR2li@Fl#;c;_@DZuVerG07Ka^8aUI$ zg~o`dWueiO54bNbS$(7nQut+Ka-lffW!u}dm$-lJUBFlHaOiXp_bMDBRC1LL=-%GlD@pWuptiODrUs=6A=iupA#r|%+|>lP9;sm< zFu3buv}bWwL#hhoL8Kjm_OFFqpxgfhgyp!F)qZW=eh%A5z6!R#wjbKBr`w6baDhL!qAmP$o$dSX@OZCL$G}jg6`RF5WK&n! zByA;!PuWk^RkxqR_A_<+7qa~xy8Tg(_7mB@KDUZ|naIcUAaq_^9{uoQdA&m+=eGsS zO<*lskOe$#OknwF3i(fNlKw1w1@QW7c>n4Pcp>0{{%~*H>d#~<023b1@7BlpU2eeQ z{O%P1W!m+KNPA7U>1La=b(`62a}wL+*+qiZ^K&NKEC$>D*XMU{%ofs>bAFfPu3@~4 zog!KLzJeF2tMQrzxi;~VehGa~tOk8~q(;-XAzC*FQ|P<7 zSsC>8X_$`?rb*wngc&5vX!^D!Oy_uxAv_-4(eUPS9UI^#FwPfYJafx}S6jo|Kh}n~ z7PkhedZpp5ph!63)g?ThJkjvnG4M{}F0)enGp(`E^d$$pM+t8x@QCSOcLzLLpg6Co z&)VSp_Xv}JtoB6yJxj;YB1ra;rvWL0kjPcjBBOVZ!lJp# zw9DMSjy>bu!F#Y2z``1bHoh~m0W-4RyuWEN6X0{33}$^BOy9W40h$?;3gl(4YV%dp zPDOb~^1M5vKf|JqE}inuW@kAK;su!a1q=_>0^q_?$UjzRW!ej&qF-pftPJ zTG;zy7wlD?zl-jc^ghixzG#LMr>i~Nqd$}0r*SyC+u!EN@Tga)Ek`Y5*Q{lM!@q*w za9scmYJH?5>CB)cP~*5~*!@jcip4r=zZj7irDL0;5hw@GcK-#QzftRqT1E)6S!nXz@I1hNTMDao3G9fn@@j^wev?g!z#oes>~R^gxBqVuYJDa!AEn@{A1KjCQ`r)c zHdWE8*7v395v6ag7#gc@bo2yox6nGL9mD6aKwf&io*zd;>)fxk&hTE)I;)}mW3)~l z6qKoTU{5(zje1pk!fot}RKHwt$=gMa#SiQ@hg$&S2c8tUx>6Pt8^kMjF@6JD;0$Bz z)8^5i!vv3{3W9Rs4LahUIWLYi!G~9rr7cR!%a>cNk!K5%?lPrpX;}kB0aH68P{M@` z<3`lV&m@d|cn;SPtIROOwsG(>P zgAU7buNomuxeC6N&g@ms>1T{7cM6KR5m0)_DsM4A(<>$k%qV-vE`x#tOJ4}7$|q&St|l##q-Su#admN> zzu0pPTY(=HzF>Si7n~(3k?RTkpO42lo=W}F(Id_S{xDuxcgh?^L=t->hh4Z-{|{aw z2U>1(rjx}gf+w(KH3XtzAP*{TM9AvIO?TFF+2)ELo`{+~aqwYO6*Bg5b`vs%>z0gAribSIQK$Q*VIJ*n`r>3d( z>(6VP>qT_8?Cex9&P`#qVVsfwaDTp|OQs!+{-%5^g1Un-{I|$ZXJe>w@tJ20qi++I zC%}E@9C%GTkuUTQgr6?8LThY&FBkcmsyOi~q`5nVfr#P{&;vWJF42ELgVqAS>uD6cjMtHQLw`rYnR;uGfHP2fpx>yH#dtlIMQ+T>Us`kS^#w3VW8hFFyH#_X7N?{lYW7<2(ap zp3AlO^VP7gAiZD>X!R2Ccdqew!byie(LEOc1`T?uH$48Csdc<>>ihvnC#vUvv|N{O z=VDVY&RZCIC&r(u6AT0+_PXesL+9Dw4V4fk(ifHrJzxJ|C1CT+vrjeY^Ne)SV*;4!>pZv2l@mbd-BK0&68)9fJx>SqYMhQN z$2wkjzVr1b&GqnHvymZe^fLGS0RZ|`e~tGiA~~C!KeSqL_?LX)YM#4%;Y1Jgy&U^6`9C-m5w;#gvi`k6w7{L>$47xXn3t@) z&$7_lw4_6QYW+}MYkb_nO2^}>dS;ij$J9zLTb88f1ygR+lq9KG!&8?Ar^5iic8tem%1pQI9Z4+-4Y?n)K%#35@704F`Cr4{2?tJcdC@Cj zv^#zsH>dL10FL1>t`b}$=m0ObrH?V|+xm&$1v}LDZVx_?=I(VEyFUpyj@1wedTY}u z+!7Pi2zsf5UDJa1CHnrZ<{Ig*0YcaawW*1?%GaXrR z#si%LMuupWMWiG;mb}5*3E7^41C~P3hmD`1_xcpcZPYw3aC})+ZX+D+UJ6YK^rXRk< zo=X}$pecb4^^G0`Y|9g0bVM5Dp+@_J);G!z_`hk+lPO>PPXS#EX@kr*(* zfYGCfZ!j84_x*T{@5;ja#2S26314CTTh{xp_@4J~mGgemO1xi!_ZYSmGAWmqICUmU z1s$*=L5xLMPDQ@KTYT5!QRfF2uHXlQbR$tZ$ykpiLF5%>r!76C(cj#?fZqTblZiH@4SEx3_K~+S>p)TH%PU0jVC^ z_GVaAj`keCpqrWtoH1W3pKhln+nJ%&{#dpXwA(=`$L8MOCx&gz)Q!5Gfx4ZN4(Yj1 z<>9k_ST66Ge+#Pw4rK@St0hl>exh(*#iy#ahW8f6Z&6!~cQWCTJ~GYNXF^xhGw(Sw zzQwkk?swFr}nqz|2Z<^T|e> zR@Qd_eM&myfnu`0iWK;mHC-~bO?!{|4kz5!4cG7hmM9fxPuENyE`VV{zU$=`QHmOw77fT zo4h8craF^RNm9y!eO_e@MYgY`VRo>tIL6}9Bu>0tjAA)V-#ax4t}wJE5xclB2{+YX zMI-JMci|PIucoi4cWQUMxde^Z7k@k7rtqJ1g&ZwRFTuqPj_`MHiF9mtqYjqJ$kM+# z1Bp{n>k)S_0gfdkD>?oR>_|Xfn3|8jbZ~VEZvdXJRR^)~H$cnH>LGhq%j(_0xnT7M z=ouCRqn44FwxRUSC11KsFPAfR>ova?#l~+HH z%Gt!JuM5+=pmgw6{)%&KnOWLP^GUQwJ3T|oP9_w(OGOnF!rCYjY09vY{BktP~!wd_zPv*`)^!eG__~1*Hw7`wgEP0W)hu+g2 z`0DE_5ZhwUHkc!6zM+YgywIE-QUp=81?CXZU#wB@5je!eIlU1@Lj7C{e&{17{9o`? zKKubD{Oc=%|8SY`cONbXe!nRAk5&l(5N`P*WhX7HsQ;Lj%jmxapYx?YV;XFq=Hyjh z9xio4UI_=cVSdH71kDp%dcQ#x&tl6soIer_D%|W%CqKGPvh+LzevFL6eI_2Cl)*+n z;*^^yZ;dVzd2QYw($HK>L)vUeLo*jxKlbXMOOA3_nZ6nxXl#rMe3^6?#FoD1J$n6hm8 z?!{9@_zwA3guZXhHtAa>g71eYvhc;CtQ`7wr~uy*buN6fqVT=#9Qc;J6~TA^=O(@h z5q$qbk%cepzjE+J>Pt{4-dh$w)IBG@Z@^Nq={p8b716h@jc*$Z-^vkuvmN+iEnN=2 zyI`4?hwsyS&qd$gr#bQc2~QQ_`}C9uea9iEp2%CJ2)_SBkwxF6a`A0e0lr`DITyYy zqVT=`9Qb1W#CeVSY}=kr+`W(BG-zFKZ>bVBT`3J=`&!` zMrHx{P2{7I|BTRW`X@r94cvr<^F#7grfb4|V@(EMM)WE&Ok2y5PA0lj;0hp+nE7DM z?h5Av2mbAWF-1z_-~4>=|7LOo|J@&(<6dp>_s%}Nr2B;_!JHgEi*(`xyAvz{Yc1VGk^SpV!OZXWqr~xBuBwv2KjZDq;Eii7Bsyf|HUG6Tr|<-^nW8@mv%y z{SIS~0FPw3;X)t5+)-N`EZC$&7i{gUVD55sFSOafgHwG57ZR2Wi$sY+aIuEtw2;gFO%-3 z7Z}hWVdSmf+$q zB6H_VdvxxCvCPqVv+TKZ^|mMjAcl7x^JjZtY~$bjeDMFKD1!g)_f7eWo&R;eF#r2g z$I?7OH$IMZW4hf9A8crLV|>}&NI*9#w!e@Y%z?iLPv@k6__YZBsTTgR^FPY9{_v;f zSA_pk*r*lYpSks1_%Fd^Zqt7bp3aH?9X9^G-!thSJO88H(tmm7+Amd2qu|H}Q|1{~h=bEEoSfVV#rs<=|iP^LgOk9vIv7Z+<@be^VI2 zfA=&K|JeB-{j%tvTQ2@D!@#Wo|7z!h|7aK^HvS$wos<6IaS{AeE&OBWf0SGJ_beCx z^Pv9{Oy)NJbMSOd{O_>w@BOYx|JeB-#0& z|4;TG&|`L8`T|Nh{SOLza@4x3uA9U*;6o=>^(-Frrb@hbNoi`_3WJ%{_^>Q$%-bZ! zfVM|e4UOr>`+#X1jcF1wt*tS2(xdn!=y5Mi342R`=WntDyk9GDMj}Nvaq}x#oWez~ z0RNIK86eY6&qo0j4!W6K3IOX7KK`EJocjE}tA=EZ<<+e}x_Y z0`fx)sTan3D>UKGG{n8ESEv6Fw4c2fXiI3q0CT?xAqjINB;hv;n5TLsV&Jk+ZHoF< zSG$$f%%Fr-6VcnXph8SQ(ohOoaj3O!R|R!Vp_3VpP{f+!OV>3dw?Ft2@3Y1H_+`z(4829SBE4E z*%0>ex}Y?j7yz4pj3E6aPwolcbL$sABn5OeiAthjKXpG z&)_QtMz{)A<5zHKebo%7F}Zd-^%;-%A}C5!8mGeyEQlqDKh(5OkvXoKS?*zj99Nfr zKbzs$y8OT5C!?qlcJVxp$3eF|4dWS7>v@6m8Mp&{58OOkWDKuCBZ459gJbAjs%|?d z<2R!-`f83}oAIFG9iRbbADse6N5Jfdm^jpVk+nf@tykre3*bP=#>nsOd33`8fssiV zrrd7+2ViUk>=+&y3mC$HMjMW`;IGE(`U$KripGos8m7zl=b+pgf41wh+I5US+oe1k zyB*`N>(65SsPWh36IiatUnS|Ht66lcGN@SCwhlohTcDW0M3ag74Q#%XaBOBZ<0EYj zlBv(iToSDxTm@gFHDRff)`;OA9CCnWsaNn*vy|`|SgL1wWt(|~r;Jf(L+EGn5yJk! zjlA#14Iafx~qt^>IvZA2B{nQESgI7vsYwWMBCQ$oTw zH9LXmCT~tH0@0`KFU6Z(sN>K8ayRxsBjCUc`~D7iUlP@Kpb&eMf)3&QDC8_uX!2Jx z4QKjYfMY7imVlG-HTWg0T9k(N8-&Bi!As4bNA?Mxy;-09ZN;f=)#W)XCx3xycD}}T z$%yI~K!t>nM=dMz6}Ed6Z*{v^|)*mMSY!?10HNPxYM-A!zQ$&a4Gmt(M zoF{tcD&dd2Y}icZqUR6)bQ8Acx|sN~0JH9yCb@CzYD*6=NOwL@iXwes+RjGIEB9d| zP!+Zow5jOOqj;?cto6@nTTj&1 z_5G}G@?kRT*DGCr1@r`jzX?DWsjW%~lf!z}_!pwyF0?0bZT(b)dRjmEZMai({hF*F zHU7H%Xh)Qr`e~ppdWc1>5`@*f1eIrjvh~xo8bw~S6r-PF=Qr|+YfJ%$DGVc))1B}@ z14a((d2Ss>)-+tc#ZRr2#8zxypA*yy7BWqLNBmH$_6k9c+zBk7(^!5#4p^=S_Avw* z38@o;l;T4@A2J`Q*rP6gP5xxKtjo_hWmEOw&LGZ*55m?40^YfJgz7=b?<>SCKU2+% zn}|j}8Q6?CY>_wWvn9f>Pof!Xo|I79naZV6&nN084_rdj>k{?od2$&9+q?rw+RYC3 z#}r@KV$tqNSOgqWy?<%MbvDj)w3zahF1lBWTm__@*g>M80-GZW%W(Kr5iH#c^+XLv z3O^ZY2w2J0X=4UpQ9gh=Ah^m*T&4fRBB0~5R=a=yV zI}H4RS%em;b2fq|wh6R_%+{}7oA zr^sB$!h4rX9Q&&V>jO8v2{DtBcM68%0FZ-N%C%V*I|Vxfx>> z!{^(;`o<3!Dw7|4r*LwT=Cy^P@tMYOkVeJ-6hY#K8WY1u%wi5bil^<G^?UBlGyP=vhn;E@uxemL6by zRU=*hE!KD1nYDGfpXH_=PnLF3Gpy?9cAfM15(t`sOR>#)e8X>oS0?K_^f-(kgGV1N z`&rG@-__@LqSq(FVwnEvM2I?5fX@1nY7 z24XT12lMH8$Y}e(qK7=r|9PxOxDMz&kj%EpjUCfdq-Hdl0 zmd3hBRvDKq6{Y6~PJ+Hi+Z#hs-R#2-qATlFKl5j^QBSFOm*K!Z>@h6kVgm?`o{fX( zu!r5I+dV9}l0#nUR~gXC=@_WX6Y#dMZMBynBo|-+MZwy$?N^kW;?QffXIJl(YHe7} zv_sYvpxOpB7o(T+QBCV*$9grW>z}>@^_~1VNSE(sxhb=GY$Bt+BaYagD)3S=%5}IkH^Ggl#tU;HPPWJj0*u6TylF$YuqOt$)_#pMW|g z?Gy2g;oSZWp5j#cnur$eqzwj_pD8nu8Kq#?P5cfjw4VLZb&+Mu`^Dmwx!89Glf^@5 z42u_+pRGflBWsV0$CjGwch?xM*9GSwvE%U`mp>mBO`FAwpXyUsx#kLKf$vPB_897! z1b38z=VZnLpMBhX5^}w?*!kN{aiN67f>h~#YF@+9y!=mjVlt*d(XXf;((em>*J~rj&K_aSGojEK80Wo}WD!j@<7#3mf~)-#^P*QR|n*z70x zg81r;$!8kzke~P0j9}H6=|X4JjZ>|E5&oUk225$%N$H~_^F`b3rRIx$5DX*P!cU#r zrum=sDbMEmEQ1Hge1C&I?gYZVztM$Xp|B%{je#5P(Ze{kK-X`~`lj3#kAnOy1zs^T z)j&Yzy#!O7^TjY-e}8M#r~H9E@>$=f>pN$pG}PDYPNTatk%=*Et?SQXeagSJzHFe& zC$L=0uO5%DIRM5StN&JXN0hvh{tkI9B3hK!L*RXrrFv5gw6pUe{?ziyZ2MYX{iqWw zuSGE0P5FqG*Ee=p^4ib-$d=dR3mx)GDvP|*uTq}8ZnNZd7_rmx%KJo2d8HMj;%rbA z%j?-Rk=Mi9A+J|O2`SjLeEBT?-jdI&LG%BCd_G=c5zOWP2_t4WX6S}A|Y|Ao~}QR^-cLq0esb_2XjjkZ$jCD)kOfFPYi zw~KV*Hcd-9tCH!p!aqf(Z;!PImJ8qGx2%tN-I2+UvYt7>R3&e9X^*;Iud%En-Il+5hG29((a?4wZvZjv!VmE?gS#N!(M)Ai z@S+wDP4A3g=lVQY?!OdueSe*C`EQmVFah|ZbKz6zOf7KFWQ+zn!OZr1)ubDaggXbG zO5yKLYbbQ^99_d^^?Io;e#&|&;y?3P>m_=K)QKNujB{@_c?4(8p@#n&hG9PaQz-`h za4Q(J3Yw%nF6*U}Xe2xMYzh`YFTSgnOPOo+g3d=06}Ctot$hSd%;HhHIBT8$`ckv_ zc@&!lESG;S6m#w9r(w@dWt+RJ#>C$sk>SHv+Mv3cxM7Qr|}k9dm8TnEm>=Y_Q?7)v_s1S=ffC@ zOB2UF2NGFs0FM%<{Rbzwi4YvzP?-G%JOqc!_8$_1M`Ug`*_S?vz9mv)x+(giG(O~=|1}Vm; z`H6pqRY&MXEB@FRFy(ps&)T8kS*hjugosd!oKCv%9mVJXK0LHSBXJ8#RQvU(!izc! zZR@<;6j^Bs+jbm+9^Qq{lf<2aol`Obn?ci-N0EpmLgc2!YA>WQ1512#6L%r;--u$F zDgv1fwk}(*v@zeCCUDRG9Tfl1zG8TdV`>$J%asz%$C^~4@nE_|&9>GIty7d`i} z=6A??cA+#wYI+Zia%-J;a6g^U*OW3R>z7o93Tz!v+)EOf22J@0tm_nXD{#$`dFIEe1VWYxuJo13u*m)JT5;{Q~EO zRXcP#W=|?aec|kv3Gc`n=|^w2LwOE;sqxsV%X3&Ra{0D{q5Bls@g&ITE3C|XzC*eT z8&`uo3L7Kesl~>3qU}tqLbJHlMTWGDbEF{?(Xs!LW6>2~D)r>|e^nX8$)%Y{aqPZRFqxHFK5Fqdt+MJV>r6 zdp}KVG0)FhD6X2Ng~IjfQ^MoedU*stOkZX}7yQl+>dTW-kcKo-UD*k5xwl4E&^v35 zWGq0TvghmB=6tPcYrOn7054Nck_T9Faw#YoGifb_=osHoe``6|uu}S!$@(G(X8g_q zUEY}GA~)}IW8sY}c+;64OXFs=qMFUL`uZXsMV<%Zhb7Ow@jKF2?me}X4mY`rF_&37 zEC$q!Gg`Cu2xbr6j0xK~f&Mwj|No6VKK-8v|LghS|3~uJXoZZ^Ti0VeBJz0CvyjK8 z7^xU}+zufrS03-(R;C2(Tj-Pkr#yaIBA~A(Xj2})=x@p6Y~U3Gy(d*`+44BWh zx&zT^F8^~7X)a0q-=bJ00VP-n57FW-_=6wPNpzQQc>VannOLqs(}j&jr~>=f@-1Wf z8Z6USGi#P|`4v7fw+ny4PrcVM`+Z<8MjaG?I;PC~5;+BnkruoUi&5X-XOa5cR~#S6 z!lVS-Gl06L?fEj0k$KfKQl@B$??q!0_5G4pZ((!+NO2J1HJR)M}Azvx6;C9i3ZZCEOBGYMDh zyq9HO@GXhwF3HOW&35$u;&?o1c-Dr{ALe@%)a{(U2JM)9Uz7{{$D>~{ET0aQfxG+k z{L@v}TgH0A*UNQzYh6Bz<VGI6Wo^gLx;MTgGCW}kdJ+L3}CCXvD;Pj}=|0f#2HQ+75TFkfzd_a&YUm=bc zStoN`nJ2N4mJ^tsT8tN&fmx{w@i*X4l|%{%3+>_#yd~JXQMeB80Chqtc{L;a6CA{l z&KrXIb2x@PFF+W)o!!AX@-45K_~>RjDwkyy>>k;Ixg3*85oa#P>3uLZ4<3q-!?8z_ zE7Qsbs*lYUWdb=OWp)5UP0*P^T^gF{1h!KH3%#yxT?}6cFQ9<8V@rzoLRu40I}C0# zQo0KaNX9xH^csLpA!M5mpz7zc?s*5uXUTt-&wGXJnA6^0{V$jPQ@Lbi3TQ zP&lQM=NYpFtno2Ccw6RJ&+UyN=yyQIn&h*VlGs;|$X|)(CejEy;uoPqMrY74^4=P6 zI(fS^K^t5{zHYpPZ$$oamqSXNr#i1S($Bd1mW>&M#72VxFZ~{<#2H=nd;2~iuBgD3 z`$ZP0xR2vGJ8&i&C#>OPNW!K7Fx>y$O>v!ruFl;5--HiDBS6fNWfnYuw5gqzVUzGu z8-L%@^z2sK^*MuJhlF5PI9hf3+`o}NcX4{l?>t+5!)k`Tn=ti2s0JrsalO*lI(`Vw zFG*5b&!stm?{flR0d=q@uHE4|CG3g6hoj|iLl=8;g0*wt>p+URmr~QoW!SCuB8TO6 zT=^5&7hcD);ZbDXkmty%dU-F5&e~ACyYt=bM)*fa@~mPYnCQ zm2sPOVU-uJnH)x=SK;RmohPFhQC?X3;_6sF z!}bSUKP%b`F2wjwd=n(%wBOQ-Pd>v;t+ zPQNWzkKd+W(avBl+*B^XlH^7KB*dpW8QxES!F>!Kvu`L|kFBM+(32uRII0)8;535O zbXI!$d!Q~VaJLN!Nv< z>YX<)#}&hV81Gme!fwoJx)S#y8P~!b5sv2gb`C)C%SA+y@wG>m0_CRgVPqQvUYyDX z!8v&E;2|=yjWHC|5E$I*L>p?#(@R#sayj22?UZ;Mo!8^(xsy?8Z=1vMB|Cy1KesM2 zmg8IKk(z>6;EZIBXJd0HIjZX70TgL+&t#?5LSY{woIJp9? zaxAZ9Q=KvPdMx*<&ydd78cTYTLsRH?29^!Yk3v89DUyE4aYe0v)y#P^J`*m(_*}zo z6}EkDG^BI({8Ho7a}g$Co+NV&kvTq3Imd@SV@$)N_UA%HQ_9kEYK%)|6j}CSBP9p; zwsaNvAcc@loK3|sWr(WymEaSH`2oMBWPIoJMJ2B{m)*e$sVneE^;pcmg)QD_14gRT1wcow3Cyc{LUgHlP{-ASbV4`^0Ys9BYJ9edT_Tyt+BCjgh{7D`qMUbj2I z?cKdix5|8P->fJTeixN))sovBqzZ4eENroH{lu_bzGzj^xg=PWr(WqExjYGXK$x|l zU0RI4b8?tQ1dT|$BIkXUPQ_n!cj>wlgpjCy`Wph(7K2@VGpnO?1*^Nts!o!kdPY+X zeJ4J&tHJR4Qm11)uUS z(xIfYd0H2CBVF*s(scY)r+(xZO62u~rK$-=6ti0{-b5=PYdzqmL4vpVuaaDeV(TwV z?#F842Cq5J^@D6JHu;6+<56CuW_~IBKj%{LzeL3qwte+yOhvQ568>L+hOLuAJ)z2Q z4!A!hAOauLVc)pEabZttOXvUU2)tbo@|M;_Y|Y1V__|{rrMs&;_+W~pdY8E(I0Q%a z?|~)SOIa!pt2WHPf8vG&8|O#TtT5P*`ke^hP#Li*!pf1r{; z^R_>3Mt^pppR&GUyuLm(S40snmb#Jts42RBD(g4Y^(V6aG^;+>*1CQdsUKRTp4N4e zSf`z?^CasGuzI{JR_|xaUHyRj?lwX z$EL^fpMcv2;2cAbe5k@w^a$$um$1G`kC$10yj9<(N4nGpJs#9`;#kL|$9=5xxK+od zM@`hx^nj=4e?X6gIOQJ8AAV3ojjviZe=L|S^hmt~xZS76>dPO2+fv{hLyv)T%b>?F zT|a^KO?nJweV`MJ>J65?jk*9^8djz2I{zOP>Zm6?)7`0&chgjQaHD4Zv+YaE_rzx`=lSJv!<78(H6^$DOR- z)v9mPBTnjr9(8q{bk_NYhIujTTxHd<>9GbPQecq`5As4AW4&T|?n@$c^(1g6oM~{Iv+k#b;?(B2^nYTb)1y3Mi{# z9}7RMabawl;bWXyD{Omg2dFUW6L7@(MI2AdVz`Nl4^Eu-YaqIsY!(-3$np<2LVJtS z@kS0P!yonnT1J!avdNotlN@fV$*quy&`fpoqnK)~b+vx1b^>hz6KA#QsAk-X0e0B# z!VjhC^B4VcLZ1X840nNpKJ0|1&!4Buq)!hZhF;9N$Vs0~+kw>+8Y?G#E&^7h&&vQ= z4t;9GcJw~94El^_lNXil=mN+H=(BNF41Mb9YMof^C$t$uA3v&ym4 zDehn=*nHseLD-(S1RjUq)ZTtjQoc5+xSv#fN*D~>46KSzot1?weS|odjsJOH*`Snc zMvYyFyB5Q$^I;4M7rPUzZ%R7k;%8jOLSgFR529uG9)n#yk^m&h^yk8O)cQLouuDyz z3EF+b1`6w}sVUUHe!XbaB)Rb#s6js*_dd*U$4wc5HR_5BQ9{RMu_p^7 zp#F7Awg|7v3?NKPF1GFgr!ZW?7s_NpKKUDi!@r}M+zPA4$W7O>??(=bWGVo?yHX$F zKEaX6fOE=|qB>PYHQz8el`ko&oCt)>S-|8ctyR>wGi30;tPYCaNbxLeo3RBHUHhRq zLiUV06v{zn)E+AO4N#9)!wx795{M#zUf|v*x~Oh*;Crm(_GP=DSR4r4~doQ4t*j7$q=^$cMPq}{!`5zi%TK=+F2Wi+2#l13-c ziXIZ{H;MXOZT&!cIwui5We6U6`XFLr)hKptRC)Cn6`;UCA8QWTkQJ*^{y)F^OFO~+iqNrg13=TP+ru^XEQ7O?b>IbL-% zE>($(IbN?LbX8qZx)+pRPzYD2VtUr=Nxp*ty_S$$HI_B~Dn;;-61IN=)fY^nD^Lc@`N<#r5Q_q7W zEmfE^Sa2B3+k^8@piOm=u9Bzf&`Jv~$Y)`7{kw?2*KWXq4opi)fVwHCa?OhrZ&eY{?!g)1%c(3e1-r; zpJo8+T{M|k^Nd@eJz&6zxl&BIYu2);)+85t4F8({LII;sBvHAeu=h2uui15=p1+& zmVd{@tiTXYMhT23;5ed_#3uRA;vqZmIC5lC$|1U?E)n;Z+od0-R z`Z0&?n0h0D?W{)oP(n_$jJ?-&tDzw^8V7aA z7MBx9@DaYk#@RM$Wru2xmZ5k|hCGN;VaOKv*kZ^k=#QQ~o?c6a)My0RKuJ0+X>xW> zAQ#Nm9W%l}PYKK7)MeS4$$pkEp2~C6F=8HVE6NHsPZh?xl#JExk4hkbo*LScScw0} zk^sg~<2aL_FrF_R0%1E~d}1bp!|&izOfYkI+xiKq<^azE*QcoIdL$Zd8djP31{0uh z0?Z`i06wY>h-&p)0&ih>s^%Z@*IYn|KL8UzbaK!LKn%Uj`tWWwJ)jO^oy4P0>A3$| zx8q?u~HQGf6m(ymV+oa;|p^&_9I#ADiEpFw;rV6 z@^-YiAbh~$f+tpk3&1ne?BVYzV;{&hhaNBTfE!eDWF4aVO%eJ&a@M2^5TAu6)gW|8 zY&kogFU3ThQwb2CN4hc)$ew+9J|m~_+J0zYek~B`e#BOA0unZbftsWit`a15K0PRC za39zUVKQp;otiDFO!*>M*&P@T4T$NdBrAz%(<>0{fVl+$qrnd7S{4kpu;=pmR{|6u zsmFIw4zjem9gP~n4)9hCO9^CoG>nUYIVjW@)l=|cO0Y8L`+oR_HiFB)h_D008>(wR zln*oTCQaUm8%RuvV$R>`kXFbp&rKoVCxGO}7!xm?It|sn=~SIr4T&+&pB_@VC$Ty? z5PE?063fKp|DAv|R8NjTY|xhLYR~s3L{D3>A5ikOJD9(jpA+CmPJp;58IPDAFhPq5 z!ykdAG!`KNb8cp@FHsF~nvRv>I=3cmx^Mzt=c8G?D1cK5FF+C*4^BC#_klRJ=+%;q z%-UFE3JN#M$IK2{j0G9nO_mazUi%&edddQAjb11&;=0AA?_>Ou^xXuvH>>^vagWfL z){NO}mw&0eN$)N&mjlrVom~Yyohr0`j*csn*2e3o0eESiVJ2l=en!a(ygCT1CA?>y z@R;Hu0J`I$4U`!7fW9W2uEEDWSfQxXEyCeeOMBpA zcz7x>{)nhK7BTrA|3j8|p1ZKb^IS-~OcvSXL*aaHw#klP3ufZ+^gQYgzH*q)xKSGp zPVhhK!JdQ9{#WvsW!%B8JM>ee-{Q-}LV18Yco)WOrT1HD+WR>ez&pU!5Lg!1Mx*Ex zF0FU_z8OoRc%Q+rx%_a0*yC}xJfshl@z0P4Cn`HlI%p^#lFg=DI81Q|??b)yo_|E6 z|C@}*poY2+`_O^AG0QrLjrURXyXvse&*lFZNRoybs?9`Emv#Pvx;#edD{MPlL0x7} zIu#Dqz-~xkog$o7Uc?z&uYmWxi5eE^i?qhM!9o=xcULaR&gebC9C>?Fp^NtoZv^^$X(p8m1aIMu}{?*xt{KeuRJ33dGrS`YfIV zGnq;k@fgr{J)l_mSs1)z0(?SVV5#t}eukPdKeYIJRI}UA4>VV!RCDo^P}2@U>eeM!5gu3$tQpaJ$t|*Z%`AN z^@3Y8zCK;g$vo_9q+acJ^mjc8u=XkK(-`CE^Bo(0w^K=BOjpJ1}B z?4Va0gvUL%=LABbi_Q6l^0pL0bKKK_E49`2(H|Hed#Gcy-&?F}%g>BbSlBQ_w2g0U z{Y%eFrbeRO4~C;1r`x9)bWZ$k#a`8U;@9ZE#BUf(cIxSJ@B_U@?dPN+grx274*W@C zjDVSWykk735z0KAYhO*844*Kg1y9})8wYnoW@?%hzh)i^NLLwI(Vy+$7DpO`0K41Y z=1H8OdIKgM;@XIa-Un9=iezG_|0gDflh|d&#L)XUObm@)H|=Qp==6-Rc>+Gwm1RCw zdtZ~fJO4o4)4Fa$);)waWBjRap{|T_C||}a#(%=m+X4B7&o?^&ugKBB26%vT0&CR~ zRLt(RT>KUpzB4XY!8`aa!*?3W?h~L!2W5@G=8Oh7CiWBFWCus4i=POjoboG>xft8V zC~PUdA{4&N!ZX;Gq{}G7RjXr5H(Vg8^OhyB^L3ua>+D{VMx*6s@q(nwR9=s5_gbEj ze@~ZqxIf%#K4#7gaib5zpeJVs4ATj{1y1N5SihT#ML3~dxG2t?_vs(VS28`1>;cPe zELPoN_4cbm$OjLDke>@4ZFlShn(u?aSSr#jZFwrYjz1MvcfUc81NE5r;tAhc3d2gB60A^P>o6@Ph=S=yX(1a2IHypyi=OW}0C=|@YXR4k?VdEj7FiWHG2vKODQE>X9 z*Zl)1EPz2V7r2K*qlkx^iDv{%BkTuV#q;Vy>5`xA{TuDc$pQ6+E`61yw`wTIcL2)Q zfF8p!eE~)95?w(O4bwH7v*uT9kGf7hrAx15=?5%bg1!(wPw4P;j>sLCAq@1)H~&%r z@_DNH_fzw4G5(5tp5>3gsXiyF9bWA6ALbMHKe7WyUH;GU#Irs5EG=yDY4?fYd0qIM zPK$l2Lz`%6+{>8W(n32fBl@$7gf<1cM9`F%z)BmnjD68#E%Pnr59&#E`a%dc?Cq`D z0o;(TKNH?Czs(N(0l)UV3sHOi;l)U%1L}p3T#dZZpfqk8@kx=%(!IQq~=X!;w-3 zIq#f~NNFtG+E4*js~b%up=G+Q)OwP(h>uQ>{!D0@UT$FY>qn&1L{4;IK7JtoRZ#ld z?Ew1Ayh!NpBfpUUK?muttq0dp?TuQ-1|sVc#G}uvmIUI)C0fM2>=cA!qAB-k!7I}K z(fw#YsM|li4ec)l+!%TeMEjba@KBrd#Q0?d*3EMP=6nvFjGyr(CLK+0b9{k;^F8<5 zqu$qwem^+!-l31JyAM02VP3*mEyn0WDRa}g*A~%*1E34x^cy<~e}&1s$)Lv!wC&JB zrX8~MD5!1vo2jqiW|`Y z-3-pG?vCH=DyV`UL5tlKp?ij=!3mV-6!uO{arauSL;8<&WheHkX)R+=6ejIb3dJdi zOf&J)h=R@0MF(;=z9y0i%Q$12C^QTJ#((p?suqix^cFU-iEg}y`CaB$)oHBo+w^_l zHzZjgKabl2enU2O&2PVe4tidX6OlGr0TKpH%m4h_q)vas{jK7aEm)0 z_kF#@(}?of`a^`tlo9YtC(X+iJnMY=^CTWfNmdQOkf@t%^o3i(Ucal>V}u?P4AA3Z zO^=sQM|A+5V&v~IL{iJ&b!bDy>zYGZb01_Ow2bTRh&>mK$O#Av1t)|lELZ?{@y(u7W-*BF0c+P4+a zhDdc3vQ zrbp&aphpeRDTW?%AzEe9!?Yuc9Skx~Gsv1P4uT~9(;`TZE*3$KB42^Cr{xf&tyYxh zMUdC`M-wC;s8GMqK7g9j_CXAPbcPn!{BZ;ZH#mFT9-AJ`e*`^F`AgAb21HBKqo^$Y z_ye#kdHEW@3)bho=W@m^(~XaBVpKEM8l%ILqUr~5VGcl7I+=KDuB zp3Q+fff&71k$`3FD~q11M@c_3ciZ%=$$oA? z|D~TcJ@ct@Dx_znSbBbqxkA&kmxi-#mrc*<8vv)D1;>u*Nd}z%Lwb(=0-^EK)6R>Y z|BBIT718q#EDud`IPBA5`9ja5zuEL$xE}rVq5m=TOry%Gke&&#^n4bkhN=HGoN z@@F@~sb|5l>A3=;@qb9q6x=tXx*>b-dFZ>&&7(i7h@S84EsLIwMhZQr|7z2-{|`W* z8TubX&z)2a71FaxEIqG)k)r9jbcDcZLpUZq69{KD;K#^&9^m{R(sR;kfJwM1no#A; zA7_v%)JgV==y~s+vgo;Wxb(BzPMeLxCq-SC*J=bCq*Yq5u;q2dG z({s-EfHTa3WAkT2!1+I<=VaV)qvkY@CR91}{3u4vRz%PE-^-$B@Fk&V0{dysM{B-A zKgXm0G4xEQ3apTx)nn;795#TaX9ErAt?f2FdlOD03yw|C%@B?Ap=ZP6)sXu4PsjAW zNKfxWozwg0uYjCS;ob%(-<3no$6~Z>MdbW^S2Q_Ie@5$JLeDwB*z|m9E&AC3{g0vN zVXB4-=~)&1=`lY6|B3gmAV3evG`21sqM!9IiK`=63`g zAnp;1t{j|QPK0TuR&knzqfh(0BmNa;AbDn;3W!}Bf#*V#spx&fWEzp(rw z(_R#ME!+xvEzs+--BesNLB|++b%%%xy+RYUJxO5a)&H41RTk<0W#`xbCefdrtN*_` zdnf(BAg2FZEJr95>3^Q?{}xC8SF!(~OKkrklK->*Pi6jrNdJ?gJ0>z$#`wo*x^wk^ zr?Yp`{~9s>i?|&?vc*%KR>VHz8KYXuKw?E_D=d= zGp7IA*=kBiWc&x~{%>~le+Bywy2SP$D#YqPZ&&|O5?+{r6KWOSGN}87e#pC6a6l)G zh3xmsrUwVfDVC|9`b(aix+qP47!*N_&oU`;71R_5SCeM|8ZKqMgF?UZ#%XZ*AlO!R zPgt-N1$3?J%{hkK&S!!sHDwWfLy~F8<$oK3neAH^FPkdxiUTh?{PyZ^xS`@1k>9CH zJYv4x>UoHDuri8( zNHBDD5a=00w-l(79zr-feovi(FzJgMB{zN#@nbsP*Ff7jg-yDbOw#)oSo6*W9D+z9 zi1kg2WnV_S(7uMWs=1tE;1?}u4o#<4c?7u*M6NrKlPlmO{WS|(1sa0_$X5bVO0sF5Vj>lc=Vv2cNYGtsPZ^-cBkDm7a@{7A9#~sW zUJhP*9DRwQNlhRep$Xz|f^{>49o?M+zlw{who05|tQ(Nw`qsSTGJ-$Pvp6H@@SNm) z4p!4U;@D)@JK{OUWpx>~9*HMNWI&C6mu3`>W`s~C_v+K^@?@jMdy#Spz>)90*T}AK zJ}84Y3eTTtCIvH~$1o-$EfqkZ9itPR=#D8hqZ>9AnYM?ge3AJ@b;^a9w8cP;9MT{= z@N;J1R|I$-$_NxcYWvsOe^?XJf7$B-`OW=lik`DYrjvj_H&Jz13^@QZKc-JQ1eWTX zg|kP&GaDW`;(CnY{3cbn?r(8=8OCPNRD6$VJ?8$&?7(86WTQe^U4bbU_ZWp1>V4+u z`;Q%cmHjX7d?6AF`Mq#%^!vcEjKD@U=_n(g7ZW|iU;i3FcDEfcE$q?m0|=Uas>Tb# zzMc)>rP~DGwmHPN_8^m&sK+$(7egLm`6F1($qkGr9FiM&a3G8qKZgyf;w$XFI8Y}o5vf%8>VP0NiVjj+SOeSaKP z_-UZftjk8w>@qe|*!DB}#&$e!(#$@yHBLkl1D^Y< z6qZ4M-bP;0ryM<^0LD~S&E5xc0YsN#P%kH!yxWk$k)GRmrpB$4*Fe5iYmM7m9M7Aj zy}ha<@mjygg*_{4d-*6;2uU^t?aptb0aGup{#QKD#F`Bvo(>F;Sn~PmF@V<<>1J%8stQgla;`M(M}Ee^tMWvqFNM?uobu=yyCGv{B)28IKu)GS?9 zN4BNM=MK{BdiFlB1EIpIK3j)+$0^I1KR3Ke z$EDzG5^Y1O06o(?Wn1erY@sl-USLyK^*t>q4CXD!{S9LN#%-dd>LDQ#uIj)WY#nW8 zLl`bg-|SEd2B^)#Q3_MSns9%XBX?h-%7Y}C!`t(HI6GgfhZAw$9L_!JE%{cD z>JcrTa_TjUo#`6IPtTmp|K=gQ4 zMGy6OTKX#4jQK`PVsK=V9nTjV|IY7gK)>;OOzeo~bB+M?H{N5u=KH*4yNF%!a5(fOdS#5I_fxa`4k3)e>(Q zKf_~2r2kfRD@t(w0qc4$)gx6vC-RRQ#fanhPiQ^o!^7+n<`-2<_sX~y&48$yUsbTL zaK(hR;EF5IS1@j2+g|jjz1~mwf_l-?+U+3vp+d@u>Z8m;qjMif$Q1n@f2KPPt)Z(|sHZ`-qoM+k(!X^5JlY3GBmk~Q=sTG* zq@KH1!f1E=I)qJPew15drovOC=XbIcmPAQlfDOL0Fzk7rFSGg&nblWjR$uJ<^^B|F zFw86p!%L_n=OMt~E#cSUBQf|+mv<-M_jLK=tC{6j@`q0jHO4Xac)?f@D-J0@EYA%v1OCWe3 z=Atav3CFvY#HY8~^w033#i*sN&by#CZGHitQU2&+5XKYjZywDSxoAxYfkTVPQW&=! zKvErJAe5|(f}kKUq4%|((>*R|fq5z$LkYp{Fwo%qZrO{zVGQrCW4-s4#N(4(BSAh% zC&fUif@46?s-I`<#gknh6fW50c;Ce+iF%KbDEPwh-fesk^*$Z%dBwQ2ui>W~e))v( z7cj{HK6%0V#2xUl$an$;;MWDo`u%;@`wW;?_=d$sTWN-R%(oy(e|KZdcPuvQIKE5N z-&L}|Tg>)YY#hK;DsqAL;`Dc0P$Z~l_~bhl8{ayAOz9 z{}Z!-9-`$$pQXljlttjJ(BG}HzQac>GUn-z^!$MKiuHHzI=*9(fxumXH&?&MCWysy zJ{B3UA>{q1`u&sEdtn(LOO3lx7QttR{_b|`JK)12Eg+X2F{@nn`hfx)76gbn0}zTIS^l@&~5#{k$5H>TN}AUiT&cz;r(K`=&yz z>KBv09ql7)UKXdmGIw^?>pwt$$))3AcjVGbOOZ>@j%h9Vj_%LHe2pOPC0{k7EY%UJ znw-8V4~^#h01C!ALAg>;E^Py4uhvj@7nH?myklas$33c~tvnc{s54)RhAl85qt%OSHwL?ijW7_(i_={zZl^vzO4)^J+ay z?q7OXtKOffmiDlg$^mY2xAxX_JKtkwA#H+hMrPE$LTZQ6PMomSHS z%U{vX<2FocCs--9M82oSVy`SS{_=52Vy|dQ{a$H>!8l=Xh+&}i{QRjk=d}#%y!NeeyDJMfYyfF2>y9zH1nX~Ik^gG& zJ=j-YbgXUZn%Wr_5lMolPa1LPkK^4q6!a+d|9Nru+Lyx&f>?=?6mB*{{uiI3fGNl!{@>O{uNV;DH zm2dNvk5=U)+EiZ9TK#;Jj-_t#RP!^l?pqdmdOyp0U-ubbsaMi|a~oqr3v=fJUKS*# zLy80A?EQ|m*4cX^_BOhL*!$_nKa|F$}k++!(q<`YE{17U|%fL%U?Y9 z73UXv#D-mc5B1%)?+dh9Q81_XF)6tN=QTH%$9vh%z0yR8Sg-aT(Hm8tke7_|q{0YR zIUQ8($z61dhmR}Z68GGrx}pZ~^lJl0tD3?W2DiMqb~kCF>)B1@p9~IwAU;K&f}0R4 zMG9v)Q72v3Cipaj78j)x#RhIu&4HeV!mRWl{^dtusP`=h=S(j z_S{bB_B%yYZqzp4y<9`EbZ{|$a+)p+`h`^@#Z5m&LBegihx>=F{ShX-&AU1o`>E@A z9`h;LCGRzMWakNXa$uL^amd_fq)G1k0iL!#G%!;H7)te-gOvqbX_>Ha@Hssq&eLo| zu7V5J4WT++igr(*Yv3QB5BQ_ix#YmveE|QGn$@es@r}0WTQHhS$+|7#RiEKB<%2&q z%{2IKrA<@2$Qi0NCCUf64As76G%Ky9QM~*6Ee+MFA)7yL`@^24WHt}g{*`nHv_+oN zMxFVy$mac02+Apdj&;UsZd*i==oySy@K*2;Qen2HNi%n5$NRfdL(eTOl9Al_GE}>c zmIzbAGv5igrk1v2VoMI5>@^x!lR=@sp)je?Ey&;^pLacZ$^2-+W{96RlM3A5DHw_W z#H9pHnn^(qnKZ^~5LI=Pl~VNmm1O}q}Y=jpiB=m={Bu{B>&{q&4>+t0D#+Vm>J zb-w7D9Js68b2~7MtmD}cUtbu7V0;95Zg9mE1)QP5rKy`Ou~yt6RxNagt80o5w#2cS z*JP^ugL+1uAEvV($`m*?C~z|c+?5`kUkjaw;4So(UOcD7RpZZ6o?(4Ce!^05n zWv~X|Ewr2-xQhkwf7GS0P`TFE9Iu+s3LZL7vpZ5*BYf5w%F?B!rYBv6PdZ6SeSJHp ztDP!QCu_jUC!$ugP~mIXI(3%-=K)~;Dc0pKTjtF|Bo5qD06KX@vy8AlaI1S!RUc)0 z!j+a=%Zmr`+!v>2)_ll7EeQjTjn)276tIdIl2&sjel1!H`77Wb8P8>%ue zTh8ysoc$8q{R(y`Qzii8{^Vgy6^uJPjOPX8Szs^=bS*AD3r11x6+~NeYN7<(71W&n zd#d<%xRPB400Z8@MWMe?XyNVxV5Ld~<}i;y^K1}EdIX9E;V6$l7I(W!^jbg7d(tJ1mkpIw4v`d=DDZubt23j)SN#r zi@vYEZ1mk*)eG99aDh;0q3?6RN*ygQOW5q7L`|Xc{AWA@%XlELR>d1*TMD8b2a0h+b&rzBj=@%@+At&FsXp+=KL%88e^!@3g36`X*C(zt6?b(sUNj4b@pKX`XXRH_F#S?Fx`E_*^18VOcLD%oC;~- z==wta*_8T}jh2^BLBhKvn0(TAY9U`~`81X97yWn3{W%2f4JM26+rh(x2if}6U5b~= zi3IKXU${yi%j*K!#a91^Xb{t9Bf!(A?p{v2eX#w)vJbuh0d~)`rT)MpAV4<=)5afT znWRUSpLEvoosZY8!>mBw($$Q-{qPSv%Z3U6P2NtbGQ2)}9=wk8c-8d;uNe5Y8sB5$ zt>nQWAeoj2CwLgM1miFdqf9Uc0iz8+eg&In$=mG_ zD|s*rSYF=F1`NbKNC*VMej9oKVLphpkq4Kn($C0)pP}dUM|Y;@#Q#RmULKX`bD%QJ z)1r@1ITln}(eu$tRHGL8x{`^Irsq18a=KG27!@AIH-`gb1F+lB^FgX*(eoK<&W~i# z^Q&i#o-e5Sb5w7I!a+izMZQ)8%hPkLN8nj1&oA`|Ob~=CJp$QcqMIuH3_TT1GO;Vi zw-T;!X{atqN=CRI+ag>GAIS(;-sH^)SB^@Ts)mH=yCzHtM-up+lw$up#b~tcFQ7Qt zqxkk=p!g=Jx9a3n!Y*df`Eur4n$A-^jJbj_&clcc#&lq`q4RN6^K`yma6p>p}Lo&GUm9qDy`cc1m+44 z=7U24^B&+qIa`iSvxc*ThwRA6(^9C4JiUXfKVF^&3DZb0d8+T!wRSV8#eXhEVr)=p zsP2#a$P8noWf;$WI5UiQSulXiNU}`+lS-_$|6!%vGc&kTDVyWg;?=<%*!DCXec5+( zeGwgPf&i_?_Y~IVtnp1S&(h=ju!k{MFdp$Ro)nBf0i(_M4x^eM->Am-SH9*=s`;R= zd6jBj;cI4(?*Y_ge2?`tBC7F>uQ5NKQx>ZamKfYTvzF!UX<0~+K^k6m} z0+{as-)4Ltp=Q&f;2pa3pSJeU|409m-9fVcNyb4wAU$dV|C7}`zUbWm%>P6&!tg)Y zjqHqmlWl7izj=R?(Ug?G$tLevpFHxYQ^qspdN z6jsD<#5lLv_2N2Cr6PVx=Ut#ei6LDp6ICNfEbu-hIOit2tbIxjB*g34wUz%!W$eb% zoKUUeNt+#_EZcv?&iy2kDaGkx?P~v%gUDLNH}}|s&$*Q1X=MWD5+%s% z@jxKd|08xb31&T-?#ZNA6OS{UUY(i*yMd=~vF-}K(s{+H3oUOdO+ypjj6dCSZ4Xp6 zA|-p@OzO#hp^xR@KS5jJ)Zs1l$OrwpE?N0~Qwrc0=vVT){|F0;ySBm@@2x+>cv0)@ z1~+AhFHSh~ zZ4m!rax^`sTEnP?PYCj73l52K!rQ(Pi8nTn?%PIw`TXY5BLe)jKX2}H&#T92XNoC* z8@2%SI}G`J#* zUkXUER=wsm-fo5(D}1;VVBc-=(R^1vzJ~uc|7Xr8UM~G#o=pIz`@)lS!DlseD9*TB z>PJ_NrhXKrf7qFg>#tbc;5jZfF+VR_>h0jOqlCp*m=*VQ@T;qPH278M?&FutSBq@m z?HUb4sTEvS-iZb3(;T;;9bednfc+`83x&`%Z%)70BLl`&>==Rf=-$;qNW@JzV?~4`1*Lh?NHMfM34%8F4QkFv*F=-B zn(M)uKAzRlGsr{Kge}y~0pib4-6(2Mpy+605O<@2R#2kop1weT6-ZPURC0V{gs2xt z40DA#H^a+#gAR5I+;=*sh zCny9~ zd|+DhSZEQwcv|zX_4lf2%~JfMlczObs=t$_HD9K`H%x1OReygot@*F|J8@d`eEq$C zTC;BDMX#II+@QZT)0!LgHyUfsjb0aPZWk>oX^1tqj}|S|F-`_c(8i+ z*`_b%>ae+K_1r!5=OcU7r|I3fm_>4$-k1x#oTi0yna(*)ug-;xIZZFmg@8Ftf0+xd zbDI7%m+{YOnl*QK{rUaej{0+lmz$DTypW+~Wt(m)aoReWY(2}JJa9Ug5O{nqTL%|I z$A!>w`<~G=xsju3-~6lZrai-UwmbLY@0#PfVy5%GZL2h7q1sz%SZC~({7={C5+&bsQDx%F{HBqNcUj`f z5q0Zpo{0amWJSNlH$BO{l~(s+N>=dz0#dL0mESdI<;*l`CEi%MQ4onD7XMnG?|~6_ zBMTK*E)|adOKEG~R9ekju-HrK^@<>&Fz4f$DW6$S-#=@q#F;5r*Hr2S#!bZGj}1ah zZH-=3qJwYuTIcUL2DT+`6avm|=<*#ZChwcAr9u}Iev!zke;FOm6CSuGgb$Uqb6&j7aXv!QBFM6YIjk|fp>mR z^ixipAK52Eok~&XU8tp=|AwCX!|7GMpIX ziY}K%#{Il*{zrk^+yCh5cJn_9>wBu5WSC)tb9{q#xRr^+g+8Y4qXv+Xgxi z8T-(Nn7rTSXug|!nFgwtRIa_%W~AS`=x**&OC5uRS#QY&;eH!PPLPZTOo5jsel=@p z4*9q#x=R>mqxdd(eeuK`vN9ZR$9B7l^h(!%jx>7&(X z&kTs0g3?1MEs!^fb^UuiwTCH<*Hhf3R{e4`INjg^greoymv zWg+6GFf?D+&!-mg5W;TO#fmtMN~xEVAUKiFbrLd<{CSOHGr|P_7@WWcT1= z*?CIigG=>yM0~Jcp_}%bDJqSyDd1lE7bCOyYlGXu${vhDT_JY*1Sj)nl21N8M*d zCkI78Gj6Pcd$9Ab(}!NW()((_=C)Xu5o3IXQ-caGl9j0HOD-(Z<z?DCI$ee1^sg=BMOG{S92Jes06ZNJ+{{A5scnlD=IWfz^R3C3>Z zI7**~Y(s>R?^gCA{}8@^oBkU5_3M{q1tzC7hdT+#mjnZOXbOs){ZB ztBZa4>6Tt|h_}lG!5#eit|7Eg9-1dF5Fevz0A~?nGxN!f_eo)fL`u>!iQ}TLcd~=}IqRp4Zog}-~{lva#3o{3^L%-**GOyL_ZB`vN z1zs1$SUj^baZW+W>#D@<@JW7GKF&%kkE9n`{KGV@x`eckH&p3zVijqwPOLz)fSJObV zBUUA^gdO*Y)^W(wZ*e8B5S<*F-MN^xFS*APgYHFU+UmaAZJp|&>;;sn_}7%|QQ2?F zwS&qwEeX}kqq!^Y@SV6OXpWZ_o0BzphM#sIrv%t7CtbChYPC-2mS_&Oj}B^Ia;|UY z&*GdGaXPb%*j&xV@!W4FFRR<%{MvW>dXmc$=M-y$-sdWAgsatZkG6$7NS#B8K<6ww zr-}o}EF)kL#ao`oJo{XYgLe0bytLh!yGhD#a6j#Ce`Rgk;D5@;y081R<)hTS-||uH zmgxfl-0 z?aW|(qH4bT;^b|L;@pER;Zk-3)p)Mlnvbx?Y*Wyb~^K`s)%q^PhwaS3JCa~6)=g$2JOeb%thhf zwQOqMe!0lW+c!O zx?$9qzJYT35B4e6=3L7drT_~Zc5QHn1mI^``b$M?^cQrxz3u^N10DfTsk#`J+uq;N zM-!k2$$=Z?Z*16qYrOGP#038U*)S#;Io+TB8EJakaZ}jS>`&f{5-S z_61hrHwTvy154&cwzc0>#kY79ghpxo{s#R?c1vBox)jWY^nOwy2u760u_G?(YGNWw z7)#D*zFTK@1pV;p`n0clsQbf;3e<_EwM8G%IsM1afB0WHL_yH6x)n9MB!-m6^9a{c zTQr(#Qj^2-Wq^1#-JXY^F$t^-e`wfX0e%wqh` z3`Oo*9f@}@a%Uc4hlSUW!(pLJldkzlY9zWBW${azCMD}dkaold;CTX$82l56EISC4 zijox-Od!ru@+p&3FOTquRFw~{q2Hg4il0z49Qs%P3o_j;B-QW%?r<*CzMo@La+lG^b7>2Yrd* z5&TeXM;o5zHTLm^jY_koV5s&Ja+c;4k|Cp=#(&oDo9)$I>I++Cf$f*`?*UuYNmT*d z%VWBhlLwT#Lp;b?lnvGG%ZJU*J+32W92^cWvSSI=_Ltn`JXSNeB$s8t=V6o!)gDA1 zUADa8?L5u58_jtrU9U%MZ21`H*0y|1a38dM6uQ^>sEqrE4|D~`ws_$&j6R!dseqx1 zB?y250j<_~GZLQ#Ri^D7U|*SFrU_ldE};{=fy~EFsC|ciiI4hHE@y5I>;$=f^YHJH zkhj^?j3Y)S7xhgKi7{WZJAvJH>UjyenW7ifYWAs2PA^o4pIptq#Ef8c-Jrv4M)UyS z{3=>tM!cG6nGvOj+l-h(4l_dbe7BxSq8X9;p3_pv8;;UHR6}X`r19%+p!)oEPvRrp zNv6tWapBkHHH+_r=Tt-Gz~>LIwDi!JoxicmND;P1gtHu2rA-q(2;bhH9rUmuzjc zfQU=o9?_tHWbwsh(ndSsUl=__a9B6KV$pdQvNgX{G!FKvf*4q_z7|K#6v7l9q1Jl1 zSp??0uxvzKg8+0@yM;vL0caLRx1EA;@{9B2qH)p-F2m8)a1;u9yUUsv*l{JBFypGB zsn*csq6vnRTI=er+0~DiZ%CCN754{Bu?0Sm?V~T#q?7;@q1rD~!b`SFZM3TK?qe_Qf>j5e#5sg4_-OqA6 z&NuBXdXsd$(K?k3SH)9Cv|%FF4i$QRFViZ{a|M-9%-`zjaH`Tmw|@mu(6NehAyx6f z9E4}|7+o?c)f3F9pBrwiH3UO*$RFF-kUthC`vfH1AyW;by7sW6$b}JbgK3=7qF_H( z$Tc_l$)7b_5XHglXilwx#b=7&qMg#SH9@|~Hwia*HdMDa^FB3H(5WdNTEBZbW6W0v|WEUaB>qFcN>z9vW)=q5!Y3R$MB4w z<{};F8{Yg)cuYhTX5$cvKV9^M6??j9Du2WA+luDe-=}SIYUeT{k}RVc^tuRR*FdhW z()vfs!bv~8rz8h(WV$3Af3@g23Sx8?f4<0U{(t~j+c5cVF%_0SB6^qi01E6@n zXi?Wt@*qtXM5CcF=7UI_ZJe(3PK=&}G-GV7IC zd_*|m$*Tb=j2PgAA3EXFx3V87b41BeHtW3S*VJKLE=OMxO-joY#&&#BaRfM`w-%s@ zDIEQBW{Mv8TtK5Ndi<%s=y6jlLyOXETJ)RZWy3|_N%LLH`)#?YOMF4)7z{+^J%5Vi zZVr!G;bQyr%9(mw(Ha_=YV<~=mrdoEPt>K0*;8 zPn;>+dbK86q|Osf{xYe*S%EZ-JR#DwGeSlJvYAXs{f(dvX<3mj)FXNG;!8udr!%mLydsnTHn8uyve@R_vV)hF#n$DP5wa)Mn<5^j#wuV=KlLNf zQX)IuMj#g?faxIu%4D1u9PUtS-tN+AuX zbZ{FDsLnAu^dPpTeaxXMehbwVX>L6OQjj{BDd{QOdZh*n*XR1JX%zUxl*qs{p9=W% zZ)teZG{2@nzEJI9uzh7>K#>MH9O*}pTkExZH9{fI);~KvC|nuO22;Cf))qt5UM>}MZK+~4C)O?t+nasg~!e;&*U$qD_R`VjGy9CHC-Pi zZ5jO;FOtoglCqv?4o-*!daZ;yD+>CWdziU*?gi4Hsl{8XFdNY{Fv6rJGHbjCn$f|i zRaW+0b9#(2cz4V~6Qm$;Dq-?UGnJ0?O>O1Lqm1-RjpRY8tmS^D>|5V@mkm62@K0NO zRs?g_w6FXcI;01I5(`188bi>1bVdL1^FjW=UMRS<15)M~gk@+~S%&zOyqpCyRVA(o zEJK(tLbbb)RGB!Ff#69#v|qaFzC{1kMBr47J(&?@_Kr;t2X^DSRW)N?DOBlXpTfUzFyc*Bp<8}Snx|1fpx4=;1i=_;W$2I@ z=7(O|%0M*c;_X``V$+=}S(WNXq4a(`JZ#opuz&zr`anURB zz#C-zQ_1N}?285|&S94~K>JX(pk>Lk!EA~9!^>J)qk~wrt34&xN28UABV@t68!O8V z`MO(A;L2J#ET;LHL43#T9xfwTTZEXcz4WN|I^Y%EoiImMPS&$*hzeW*QN1??SToxeL|G|9hs^$%2&h zLoZjTQk*<{LvqN**iXBJZsClVTfH~==J|1(oxXusx%deq$cmdc=lVFRfrO%Uf&+%%^|Oxv8k?5G&>o^!;J8R#JFPqT+(lG==Kk3 z2fcb0e|Yo(Z97g_ZlpX#rEg2=rRZoa^rQKIDQo>q1H*6QcXub+Mn=y*obrAcrDWIL ziyD{G{f)6RMU7*~J*Kuu4`GGo++`z%Sw^XI_aSX;$z8@xK5oSWRAXjdk~$x{rx%pJ z5k(<2hX{an9`iPe$tIIBbqn}enK;>015;58++`eCrKR*yrsN~Y?ND&3`7bXC71~^V1||YZMB>R>pM!bdqJR@t_h?QgD0}z9)W@jlRyrfcc!-Z>&ctoqWuTtI zn9L~pl@l>bcIshjNj6W&R>8e|F~0X|!t2-h5x$zz+JB{yrhDK)rAYE%3Uq8(juA$4xqnU?PJ8X@7= zdz-A4i4)~Nd4MOu5L82%4X-Q@idDwjRVHo#H*9k%hjuPq>lZ<}AuZ)jM&G`nKm{je z75t&p13WORAlmkcEI{()^~+=J-~CT5OFA!r>7^o?^yVl_DqXM)xw;R%`|qDrETD+G zQx-pY07N`4wx%5$(EV4%7Pd?Mg{_58Yj2ylRpMl% zI)~Aln2VB}(zX5klWpI~`yEiuI~Q)OJp>$fCNb(Pn# z(ef7xH`jEGMtZeWqBX~<|AcI}Gko{1eNH@3vamFkFK6VKJpMDzJ;K9m4;#brlpZSZ z?pBpsjrEtinSc)L&vn4cxJO6lG(DBkPdU}R94DiOY#$V!STX;iljNK`FdVxHkMQHm z;vewJ0%z}TSzl1b0gz3+dzIg1!^`7@AuJmf8MCZv4C;Xl*>3MoM6os~@AN)FCLW!)P3ep0%1njLN?bZs%mEOU?J<+W4eqSw+2(;$V` z&z|3xoee1%DQ(8&STL^>qY5?9=q@QLK(W*}(qtVD;6il@8>4WNWFzzs;ZXTU;OT1K zGuPgW2t1FY2Cg;e>Qt^q1X6heKf|zT^QMZ@yqexl9z*fPT%YK$seOLU06@7#@5+=Q zU09<&AwB8~-J4dnX+?0)K$$HaSvb>m+?}0Lvdf~YxMzE#a8C{#*ZY3rzjU<2!iglM z4+|UiGS=uA^QtNi?t3oi8%FMoRll=N#S0B4;Ktkoq7>~l7=s^0mX$bgtcXN;n zcmc;275cjbS^m$in`XOm7W-=-!F`o5N^!oM;XB?Shje`(wf0-qLS4M5*;kdYq}bJG zRjL&_2%<^(8t5hN8qCGWr)Y)ix|?azUT?$i*$#hPw*c%a*O+f$&lA`eJlJ0d?CUfK*lV-EUI*BwKLwkBR)4~C z4?X0UwVyrs?VF-xQFxyGOj-JJ!nr%dkD=N7g%z8+WO+FBY-70Jj+*tYM2I&HaGS%s z?Q%voDKQQiC(12rdmuiqQcC+Gf zZZaTFHZ97Fb}UN_&x!A6XL=;Gi|$z#niJ`gGdA7{x-Do&T5fc=ve0bOZtb*RIp;6k zt?B6A^=eFK6eXK_E^yy(JtAlB@%+cbF9jwk*e2ZOPhUb;HfVNpV`M^uHVw-{J-KdZ z`3=BGr?BIo#`3I`QcGErm4bIGWj1D|jJ6bwcpA)cd6SW7#l zQt10!1bH9gm@xU5TTDn{(d}(=lv+9FJ-E?*O{gd(&n7v|vC0l7hsiB-liO~Xglg}m z0HC|4rf4VFqJD56aS*`*x#*IgdIVrQt$&t(gTK|IckblPChuM>lv8*^R>AFPi`C_8 z_d9E=W)IT?M)>)>5U*u+v^e9R^(&*vr)YJZl%N_%8~V|A^lkdt7cSxv_7i)~&hP#B zg@2Iiy#F?Y9DNV-h{&S+@O^2y&4N7AaO7Dcx94a?q#ohw;D6-1ZHjd5Bgv9c;3DY~ zgVQBW)DJz=B{L!>nS*lKD;>&{H+DXmeYr;RG1Jr^EQB^q-S2Phr~B-r>|x`lb(9{N%;-x7cPQ5xy!2HNsa~-u+DgO)Ta@(gff_YKwJ$2wLhCAG z@`rA%&6t{_ZIpK*jHmIz_VevWzWbgZdTTQr-$(6d?x`|m#jjoM{RFV1%eGv;GIU{XqU+gDRTMnzdwbTE8@X)6j6J!T7WD7U=a zCnusP(aoJzl5v!KZlhEto*YbZA)`<1^n07rs_t3t`WnLH#ujlonnMcEOJSXF zjgGe`3tm~CUa=MPC3D{g^tPXs*3X%NllSwIkyHGu{ZEE*QGWbi1kM?43A^s3PniF# ze=+TS#i~p8(QBj9EF?PB(Z1@as~!oTV76mpp=fqJx7|&*7P|ep&XFCd?%%vaeDO=! z#q@mKxb$1q-sY^NiMo0*Mj}4O1tmy(j)EGLD&f&zTfz_};N-K~JwMD6`iS^_wcW>g z=YMz!4<)dsPz5HOFX0XLs66UPnt*A(ueN+DyCpB|Xm+3M_(_`bPrpLHyFnf2)zwj4 zJxn$K#Ofd$6)$zYW)WWQX%7>5pjpbc=1+Q1*(^-^sxO;CLaj~(SPpvWRNp{PH84xY zkL17;)WEH3V8#4g{}7lp(1!+0RTGFb-nzfRY7m+;1&Q$kw?5rT#{xx+zMb_wG>2*Q z7AHS=npt9B+8}XXx0zz;6N?9sjW%s3uxfE2T+%SF6!c90W)Bm8xADh=8dF`Xc=|D! zw>#@+&t-(aEj~4wcf3rr1-!MYwx$o}-`J4E~4<90!c$}G%hGWnihxVoYi$~;{sfzh7}!$pB?k9!+{hyqvZAK%XZN$ ztX5A-?ZCa*{rLo;92~eG2*&QCZN>=G#xPDF`f<8l&nzdOF5>-q^0(V~1<{giyy|jo zytHYVFH@N)9p({X#||^y<-W1bYD|F{+Q@e(wGVB(OLlH^ zFWNL`PFsHt@o?U{7&wmsN6V7dtByYXC8fVcIsg}(3&4Fmz+L<+lh%ob901;e!Xi1l za;p(xvg$oaz0@@(A2pwlC`Nd$2@QkzZ-Y8yJ|!6~=E_coNBJBMp=EZ})GT)4<69_P zr?+UT62C5}oVHDb3Qa#nOcIb*fC14D5CmecZhmnVEI<>NSreaP2x)#%oCf$vV(^HT zCO+?z)x=Ri)agG4vL(4=S-J3=IDxdv#EpeOUpRtTW1B<@d0g261g{RP>|qx?;b~f1jgC8{Al>qXo?0$~U=A;oc=w|$6L_Falh}f(ap+|wc z57GwWgng)yz5)@DdIi$Ek-kcvs{BQC|B2KVdGGrB{Le;{zef2Nw9fD5^A{=q3+12G zI)CerhSFooU#$H5)#~Ryb%s(mk_wkRcn*4)Zizy&nfx|VRifodA1SEci`g2E+Y@!} zUhL<*-ZYhwNt17b6lX?Lq$6NM;!d3^0_h6+WkkG}A0lEaPWeR^r_}xh5H8{o`{6Z*N#k8s|D23WGH$dPF#u>%#6%Uw4!!dYrIK4m{;-=G_Byh{4aEcVSJ% z*ZnHLEKAsHUd!>byJSA6PVx84_4femhCJ~)7P;vL9x2K0IkpiBvm0)9`A2CSG*89I ze~+#ZW3eLb3@a01*(3K;n(NS!|!Q+Z8>d*Dv{5=)P%y;(` zsfz=O>dy=MFNo7fOqHkc{=+82d%W5mAiO&YZ|>_Oe0GJ%!?|c)Nwr`+M` za{r#q;5c+?CdHTYeyzlJeBwkB5p-Y98>hs1K5+zz)k?fniH}+0i_3uLAvXx}Wy*?M zmOU}#l24+!CSG~YihW%_Uip^_DRfS6wywXDG?dS?NM&7VyPwO_mn8c|t^J`E-m=)O z{Cl#57vj>Xf1d@bFq^4Rtb!?lq@AK`r9yA(W zYAsMwKWFJL|1}l6{@)v)eKrz4yPgWjm2c008wdZelU&&d%X0#vu_%vkY$aH7+;`s@ zoCgJG5^$PkdwpS*Pp?(_ZAyR0r!VyB9_dwr+oS_rN>D30ZKCS)g^rXamt^r zeA|v?@-09o?-2xJFB?F5?C0@2oIII@=Y7Vqj9XzO5MLu4-wN^AbIlQV63**e!mZ7F z7TDp$YYj>wF2iTA+q~yUvvUv&AyhKJ22LfQezYnaf6CY!@_5sLoumYI4Y!i_4cQHh zIuE>`7VPA}-zuz|=+j1i--^hQ;+j5;v3=^DzJ7Prf6UiEMfD$0eeEU`)73BjVXNOX z-^)K=@3V8M_XPEtZpm73#?EA4k*3w})Da706soP`w;r{RZ;d&f++BYHghG1PJ*Gm5 z*Ph^yTf@P;RMC%~;II7f?fpl8qM%2j*p$z7tG=;*m#h8PJl=Pl4&H0Q%kb99N|K2N2M9QS~)pQrk|Rsr44RQ*4s>$mi~+Uf`W9^>o1HG+Bzt>4C9>G(G4b`L~C zX4|dDc#sNrEy!OUs*`z>zMJ^io8OSa(;+l{5}&atrObBuN(6f+*WobnncpVuW$BYT zyN!p6R@Wk$`$L{ktyH*hY@%!+Rs5_>42Qtn?pWiNY(%?Jb?y=VmMoa?iqp_4e**E> zq}IyXHVv$Ts8JW`>GZDil*8_xF<|@r>l`*f+uyMLs`tmL&t3$tofbXPk*reMJMSKe$E>|w)e0ig7u*vm-;HkrK5)z zL>RVpajrxRwbNT$tG{rA;nGR<*ZBH3sQ#P4Z8IMxQlFS4UOpszz4y+h-aj<1ODw%I zQNaR{!rWlm*%J31XhYHzys7;MqEw4Y{Vtv)*0Tb3XXdgKiT^>FC=i{(aeINTMStk# z+q*>VedqC95dqIbcE)o#Q_-szE&2s4gxwIM-M&ON3KL|0uuy*g3^l8JV%VB-oETR0kwik2R|9)kymkZ8gz)7!MF(Hkm>a?`j0V|`g}r2-2_i^|QqQrXy4OtH$wultg(v*S{_331sI$`aYQ0e@N4 zeE+*pzxhY$J@mT=%15N<(r~O9Ke7b~9o)xu8ymXv-2AcO(3KzX1wamp@l{Ml;dq%`-8!`mdlq7c=&NFi|25r(iuy$E14_F&6IbS zHW{VgI0K5BUY9(uFbF7nCB$ws)ZHY<5;e%lb?&tuvZ=@>`>R)YH>yy8;;Vyj=w0Ff zbiH?m@ONf}e@%(Ca55lLo7n=V*RNGy8a4xjO-jR)Jn)XNcE79L8sN8Kp(L=R3Gx1~ zuh&`i9`<~99`)Q)zEZYvZv>T6F||3nr2Lqx^U9Aox5F`KbS%9Ui%Dqq)w%k?5$4tH z^n<}RNFLuc__MR!M4fQiNp!=@r9Ku4;b3@O_!&^Xr=qnSqIKLoep%QUMc|% z+*+SnuGIBlkZNz;0)wVMx+OmIaAoS~HZ_7Ox-!m@BkUKBS8%d?T%Mc%2d;6r+~~gU zE??t^)2JZ@!vfLz8o3D2ByMpEu%g=Y3)Eq{SKu!AvwFraFvXiDy1$EfIL`=f_GK!ROM5VzwN}rJ@pBZ+ba+R5fC@96ZZUce2O) z&MGip=_lBa1a5PuK%q7=Vl#8DsgKt`I{Ip(R866CS*sVQ+CIKowjHK{YTV3VJs@HS z=VMupRlNW4g%Pf^;4GHh5B5t>`SfiO(%(_KUk{M{tOJ$t6&$W0@y*s=$_h}RWkD|R zypQ@pW#gA!$uv=)k8HQgFjSL}Eu=2xIoM#r`?AI9C4)LF30hZdF?gSG{68-Sz{2>> zY)_n75b1xHx#xvqXjr5?XkS%5S4R4M6uNmg(zG~eJR`fg^x`0QSWU`8!`iP4H$9M< z-@4YLn=}-_K;=&;P_El74cV2?Xw0t646w?f+KII9%0D;q*PRNPjWd!5ZY8do#BwDg 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

vm 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%0ANHcv>) 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

7p9;}$(@SEgR(CcG=1nR!<5;*{4m6p6 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

uC z{`NY4P}>oBY%M}=baWL!7YF`Kj+EHoGv;>W7u#O>eJjh`Uiq&U_4}XO@QaFt1tHn5 zz;ek^gjHX$e~b@w4Yo~iI|df}=lSfKZ%qzo%RVogjA(wb|6ZR{%UrG5 zaJArD{&#(mYaiR4ftwWdk^aR4cGvIDE*{V-f4BPQWNU#3I^iIOPZzJg7Gvmqgl}p= z;Bp4`Auy^qFa@7#egJZhHu|S_$@MI_@6~V5D)vttqxlEpYdN2I*A$;m3xkgPIT+19 z<9+*LR2fr@9k(*5regmAcBw=EZ#(+}A=hJFV_~t`9v^akMh2G2>{jHV8O4q&#GU93 zFXP}~r=(+?;ul%jKxIdeSwzeGOSLMi!cr^8$f{FW+>5lUV6CN;9m#+>GM-C5dQs3N z-%0o#LPW3(zZ`M>QMfQ(xZMIOAIU5lLQ#~`j8Y`ii7+XLBzTegsGH>)Rk^Y_w0t99 z#MXe;u1Zx{pm`LuGP5+gOmo%i{iVy@L3lcXDmSFIY=S@h2ApIww01N}gd7|EL(L6s>pRtyvj+n{Fz5IJCUqb(2P61^mi@*)sNA~n8p%tS&l zB9blxi78?x5|U2<0G>j`*qCPt9*wO7DblDHk$~2|hFMH*xi3Ft5#@fi0YEt~5B!#YY? zffRYnc8WQI%E0aA03c38y(mYGO%3Go?X$alC+xPxKg2q=7*{gvGN>^~IbQJ`=f2?> zsIK~b{anEbnf2}G$*fv>8EM2_C^4i9LI<^_GJspNF(>m9nW49ELx)oU=U+_K1K}r( zOY5%JH(<`HCg02 z@Zu=OgU({Oy^;BGh8z{CK3Kg>LxKA_CRkYexJkv3Fd|))xf*U)0$QfC` zyT2=M|HQtd3vUWua~_{2EWX>0Zd+4~OHB3c=V<+CRBD;+uGKaDGSDa9U{(u3ZAa_kni*%@4;&LKfCtY!HyuC*oMgAHwc#a(*&+O2ADC1e zSa_%HU4&a_*~%LNa~;M0z6iY?@OjaWV*fPfiaG&#Z+)?UhDXd(-~^C&A&p)HQTIq- ze3osU4G%laUWfl7|58>C_-gRi_8wC3TtqpVH69N{ly3kLxIRUA(~52D39(Zk`k!&U zgaFXo3DE4*!1!#uvlf`7`Iiz@U||KCoP`W8@e>pNw+7~31JKzZfT&0S*7@bD0+ZbM zc`x8wB317N_-jyAVV*P+5P-P~DQpLR0^v=J}TrB-@WF(tiA+5G;pDg@H+BfrSeKKB{e0D6_N{v&M`Cpk#x8DRarB zd%0p6(}!&U3^Kp~`4WDGv-q8VZ(#1wz(TA##}5sRpBb3+Fc6Jle}FnlD=C{9@I6PM z@7X9i?44sk_b|{woXS`EmrCwhQjKxzC2BSrVKNXu(iOml8Mq68IE@Kyh-V|hID%B? zMsQ?2$Vtyg)#5=a52o4{{S5;Gl`D({j(jK8Kqqpwpc*-hvpD0FXU1t~NWKxboB7}l z^Qnj>--tWSe6)l4)O3<>#65_c(;p7y+cbYm$(xzRKTP}jWkXQlVFzwIVv)TZr2z(0 zraN$_qb#qh*nf;OoV>|C5_z&Taigdfc@ipfm zPFq;UWFDBDi8(r)S>kJ;Q$|*1W4)f`g8tF5(Y=_foh5x4;`(RF_)G@5Bw8}QPjK9z zS@ogpS^n{Tu~VRBLQfPI!QsMI^EGTL0JxnCA~!zJS`?OL5t1DK_3{cbR#!MU8SThh zsUN??&J_uw#g6R2{EWaY&cGwkrxQGU@ha#VqGdLTT&)iNbg(<94VGDUec%^fG|;x* zUz+1TV0+Ic6U?4jF5B#;qnms?Y!I=x@xMU^D{j=`ttf@?gn~^I{O`MbE3=_N@s*wR zb2=mcLYB!q=%O}#HXjC}YAy(gj$eZogUSq3wi<7RY2?SSV=zUSQ;#4=+?;y8EFGwt zVyYq(&LNSbJmLrz<61CSFfxMo)MP)LPItv{o6!POaB|oq0 zG~Tm2B-^gWdv<}FXTr~MKEBV`;_~eptNA_-%^xpMsB+FH5M?vL=M44Va3ZlJFI-Zz z#cjL!6L($*%)QB(d-cE9(ZMMOV%{6_x)olBjFx0>)9OFzujl^(dwp3gsGp(LcVK(s z(aF$&VoTrw-13#PY~8q9|0sU9P8eLY(&l>r2H-4PRnsn{HgPX;Laz9PiD3x3Vvjv4 z0wdo92}%3=c)t-qdeput-v&6*r$?${KA}hUg3HJiV+!TNrrr3E}37q;09?( zy;5m7m0|~vS|blDApWuQkKDO*;yD7R?eTL#pF8+h_PN{!r8mQM@D${V0U{E`#ZA2* zW(Rp`JgWZ(%nHn!*yCFMZTv$4?Xgv5pht;fRS1D7%q$d;VsYbY}YDbn4+ zrR)qnG}E3D8N@LZKW}&4Rv;fq#S1cKCo3lxci?x+Q7Q1N!Bi$|7BeCv$G6*tLvHEZ z&r0Ct;oqP}${&!VW&>B=mJ%PNp{5c>OG$7Vo}t{)sTHlaExH3`3PO*`rMOJM#T()L zt|K0e>W6}(v)n}=+I}{frcUr*%fSLFG5cgZUhBtQ-yj~s$L<%Fz5fcKq4E%@+y4Ed=kqQ`u}Q(vqsjcd1N!nAcI@@egsUMeim5@z zFsTkNO)8s(zs67<4EVBbb`(R@M`5rH@{u4$D^zr?5nZ67O-6Kyit0x6SrzRvqA#kb zj9B_80wcXc`va*^6r7LK>4k&yy0xMxpSinbuhaI*5qD;fJMSaiE_8F@5Bmp_jAxf{ z!*@E=?rZ4R3_a(P%nY&#?`6tc2bQI6?7USmW;d+Oakf{U8TLAgBk;s9zUolFBYVL5 z$BqkQp86OGn(xHm`~R*510eu~SGPQF-0cpIw@YUYb?Cp%&CCei(y_dU1#GX}`^}y_ zytOgZ!G7u@gy26ygskTdXtcf3g=3@R{$pUG9g|OS!6(H9`hdm)yb=ieZX`aa=wEqs z)9^0WaGcU$n119M5XOGU5G@Z^wXsPJ{|dLiZOIEa@RIPjB{i4v$x|&TjIr=18+|Od zyZO0r-&&*Rb5+lqY#OPex{+I`q9&U(6%{sp1XIf${Ndh`$37bie740dkx!pkM6lhm zxrtJV86ZSWoD=Z9gUThoo$c~z4fIP!;AxJbU{;rlkDp_41|37|08dHd`Qn+pR?ee3 zf4C$sG&wl<9Nb0~4+MPvS3BA=*}oP0|Bgaz?&7g(&97r#fmJ>58!kLQd$dWb|Fkgp z5ccl%LT&hdZ9peJQ+bsaShWFb$1kZFDqjRXKGs%K4zggdXS$2_%`5O9@A#*jM}Wl+ z+v9IzI^@f5Sq^UVl=vFpufGp(7T;`-bccf2I{@Hsufi5;==kE5w!F8}&se+cJInR#nn^~Z+| zUt5f^c68H(f{qEpKN|n7!J}RNRrUHX+bf$~^`8wZ$z1KL&nzDPQSpFH1Gc)0-kZMy z_(u9Wk2VeH!k~o(5%~|yyCP4oVI7{tGc7Mdj%oGB#tvWW8c-v9y!dLQo)3Fc3r<*0 zsigEhCtKe9+NygvwvT5wx~{BokfQ^}L-kgzgd%Q+xzW+rme;qW2zLSKr&-YBKOWgF z>Xq-imlSQV`F@9S3f2{bN^p6=AAxw5abJjX&N0vVcqC0)cjor*;xJ9$ zIwBM7!Okvh+JKr5c8Bm)fN{aWhfxXUZsc+_5SHz19D9_nR+jEonL1$G*8ltMMH@L1 zMp7x{&;1Ho-$kSMI1D!b)7+ac;rm+ANx|alGTeDbrv|UNp7W!fN;I+uGnQ#zX~CyR zraO4EU1sk+7?Ap&uVkX*4GoL;(Yy7-c$hB|Lf_z>sWq72K;oL>3%Vo_oRTe%H|D*Y z3Cplcmcqs8aD)qvxcr^I)!9@012c}pIcNW*|u#O0mf7;}~c2VY&{ zTjkX1kB`-cH-c%MSBhS74FGB2&1y>K8tf%>WC1VIWL}_3!1e(?_JcXWX~+Nk$T!S! z;tu}eC78jodb)b4*jOOC#J2-t0`a0aQmwc%VM^_6NApWEqx#eX>?Wmo^5AeS(qTv- zT0n$K{V0tiRK&Cp^p8?KC3zjTMGvFzutnkjATkbSNZcMINM~>JJRey8sGuiuDXREG zN>0`k_y3#>jT9h}uT5dM0M^Om%tJV2i14$37HbplC5RF4KN=jpMTx=FA^dWT9U0H{ z);oylU%NCj1FA0gFPaeggFhF$OKey_56Yg;#sI+YZ*tY|(-_or9;vz|7hizt z%9h?r+Fr#0>#x`%+pD)?{kanB)AjzRXim+dk#>Jx!KPWbHShrTqZ+dP_yjd@0zUp? z9)$YFOVYC4cGG$619qh`=4B;nQB&E9cs7hBb5)cLWOSs8vZ0I?swf-GsHUP~DJ_fk z^aLk3uzJkX`2-`r%cHtOhMQ1Ws|EUN{>5yB7PzUOv96Gnv43%xscROq77g%@2DC>D zEN*8qHY3l)A{DUV3$&_q1@FGVrLJW>KF1rp@yT4c^SX{7?y1G9^H}!P83AY3RRGav z72*Tt<9?j!M5P7JZ$Z9hTe1B{+t2>;bqG#93g*}r?Z^j2fBUps;6G(2%Exw6mbl@P z!)S0+-Rr*uvgc%v7hBF?EN)l21O4#|W6?(2)QyYQ`OkCPri9(tdkIX*HPa?#A#sB{ zaH~BqWn?Td8;M)ofq%~rOeu^d4n$(hqD^>tJrCVmY^%Ij3)VQiAdr#U?fm-_C;wJ@ z`1e(2VO@EjXBJ|Qw0C51Lo;J?(CK7g(Bxo=1TLK%{GJ4^oE)6tgvMFLYz>>8<(p?s zu+1)EXeC4A5Gu?FGkakJ{+6#rY9+I}j{*m_;-RQNr^#>+509YqMWC-9wcqQ$~_&e1Da@(9bk--mcQNx=r@k6VkZ zjy3{WNFe2nNUdDWLeUs8#|iTQt1DtYN3fa1m2YHeoG?^twL}p?+U&A-STat`ag;HL zfkkH!^C`=05@K``vjv4_k9&v2d_W)z38cJ<;KTUSy(dOYH!>=vEs7ZSR5OVy|B$6& zNmiHEk(eDwo9$`DUkfqaC}R)at}drWt9oots%Q-ZLjq#vo>MjF?uI*&@U=k(ga5 zG<)1;5)&nmg#=O_BKTGK)BQn=7_z03GGY+Jo@yp>87Jm* zlre|_UZZEWvdm^72Hi!eB{5ATMmF{r637_~Fnib#;BAS-SOj=mjF{8{yp6;t0Va?$ z7T|UgqXf7;kr;~rLp)9?zyx9lFoB%00C$oYCBQoqiLnUq&KNPN1$ZZkQ36aLXDYzC zq(#ZEo=A&DelduRj!7-QI%!ezOCV<~zd0mE$?x7oVl48zH%3fq`Q1xml>8FN8OyJo z#Hb0Fe=UQ_BEOhxjh;y@zht!`zXWo|@|#a$l>EvZ5FgnV`8^aPCiMh-h{UJ~m_W{0 zew`#n$!}L;&sgLa3s9qHQp;}_iBa-PAZIGSWu+uW2{5Nf3!5wg{CSL+)B^lDiHX7x z(7b>#dm$m6R*GG=Tx~20wxybiJtT{wY$51#)F>INW@58*wjymJp(ISiNSrj5G{H}! zva}YOAM<-~ezS3tG1 zigcxxXOpBvN$%J{I^`f49(m)keNqa%j zu$@sV=eFZ0%xMUA18AU$B)q`vUJZ7F28ynQ2195~8WP2|V;5%G(wIA9R=4wj($SfBOh(r=3I%frrq>P;-1kRt?m96H&JUwHPHaBQ;6r@=+c_2M}OQ)LBc^ zlsp5qOgS`0?Zk{J1ELzk%n<l$n3&}db4n?zBIdIyWy^>;E@gr`rIdMz`mD}n zlxT~T+1cupQdUdUXLT-XBwv4FH>SWeQ)G;Y5 zEhXxdViqFmvngg7#2lA04>6~dvPNP)t5TLj)bY8jil|dcSvygmRVlL*bzI84M4eK~ zI*I!1NExj&JCv_jXZa*RW;AI1C^qw$4kAo>L+*Mg-e%g4uv*pPfp!YWVHsFxw(1PV zI#Eq5Ll|eMz|}^~a>M!pB~H0`aFP&_JQx8{Y~;}z10kmLA@^Ov<)Q|rt6D)Ags=<@ zNh}|7h{tLsqK24LrX>fn4JA&wgeWB?B8f0Oqu9lxaRy3EX+-V@QX-q9z$)tqgA$gB z!tSarwG+<{)U))7SXZWD2SGxK-KY@XflM;xI0%$rg8V49@Mx=n5>q&l%iYpuE^uh= z$!fx&gk_>I!>Y^jiKjV{60x>SI}b)3N}O^z!7-ua6y!&pjrg;Yl$f%LT&^*jWm^qgv2ITY|fpLyylRS^yF2x&nyDF43wOKz}iVknlr2?QD8%$G3`j0t_8A)yjaji`9)g9k&*&t|PN^2#eM)PeQTEuBoWd}T%HC_t zZWVhFsAZ$El&H_u%1oXlASe+a4jR&lZ6Xd&#GK`*w(mQg^2ZJxdPU+ zDpC|*i%2yR>&YSotY=l4yu=!prgmcezn3NotwowTiS_?bnt;sk1;Y-I?60X)RYL`e z{Fp|Lod0qohDVyR2ZQW{y%ssVwN>^NKkysQL!oHMZJQjvVNw>hbk-uc;f6`s&~~#J z-g3jFfjF0|N3aF%s@G#aXx@l`9Pc%M$mwA#9Vu^iGG{yEZH!O#FwPZZcRPyzRs1ZG zvLBh%7c)7+(Cv2CILx59Wmbz@X0_p#S&augVy>Azxc+wgR^0zqj-y(z8W-8_cQSd| z7J5z_Zl-~XPAyQ@r3LK=SJhfvr_JwXSUglW?l65+gVoNspQ>_D1?tNyfBws!Q#h(N zq;gb!hwi6KaYYAL7j6#W&ri?+kA4&XAF$(3HEda4k}v-hEw6+@eJ{_`?}Il()qC{# zsCus&!O&&sBK+;hNoWE5l6lX=eh?yY2}2b*4E`vG;VL_Q_&#RBUF_DvjAkY;$QN%` zL_3)EQ$*p@%IuF}J>jF4U@tv05#$)|rcH&rm}ov#9)dETG}`{{o%#%0;o2<|Bs2j* z%vyz{Cs(Vs6|SRe0&vj9r5d^GwlNo*tCjRYMLEE(T#LFZ3FTcvS&18Og==BBMt7t9 zrzj9@VNG1r0B#hIA^jkZbgQj!{T`HBkAv!H6s3={-fq^zfjy8}(YzB!^ERsNWj(Yy zdI+WIQ5NlBJ#OzN;Uer5*()8Gj9%4PT(1I^B)~rlquHAqt-K@uj%BkAN zda8X=?+dq&^;G+$-WP5k>#6ohz0LpE?dub3Umy0%7j7TxsrE^|FWf%XQ|*&_U$}j& zr^Hg~ePRBcY5V%d+Six;@`c;Sda8X=FR^_hn=-RQ>UQ1$Z~DoYYb;XA+NzaOJKjo6 z|0w(pW~gfuh65`o@stW%F_^1bGx&G+EhyNH&@4LX&Vol%5+239z8L*$u|}N5(9baOI-I^dLpAI?X%t=DpbKL@vdjCtQOIRc^hRMKhWZien& zhYB}iPMzC?yF6R3N1&B~o7)lkkf8@KM{b?!gz~@#eebsu_E5QY(~Htbn0=|kc=OEe zJKkr`#YgMyh}srS8jhP517i0BHH&^RwM+a4#QzJ#Z$N~*9yo<=IUAQC7JL-9Kh z2;XkUpPxAKr_zHzqG-d%p=3MyqY2P2;RkUIqM`mlbqRt2xdhR$>cJ6xGI8{I~{mA8n{FnscCEL;di! z6Zq47D0~dJ8^Qy+I~(eMTE4EKzF^L#%fjoTDEA=lIyBU~<{Z4D!Bx~zFJRZAhCJwNK9K} zn9ANErUMpC@1W$Ts0W8HLem>|+?BBS*R_`y306MkHmbnhXi!@xA4?KAvo zJ^)Omb>U08cQn-hsQg1>+7iR$X(Xm27EFyOxf}IxC`f4S4Lg36(GnieakOF8_eYdB zDoprs4exFvrbECqsO>oZG#>$`vSs1n-OUa4-!I=zOq*kvoSTX1um#g*lx#&k+&Lh$ zriLBg&)5|n)Ddj}L&t4anDFDu>;8b44g%99ZQc0Od>EKKp>SR|fIe7WPfYK}FlkN1 zbjX6K2_?6p9^AJGtx=>Qd`ZWi21-Pe!i1mRB%-l5iP%O=R*BelN{QH}FyW^+iD>Ul zA|UsP62X$aOGLZEgrD9dqO&)N*hx%QiP(8ciP)(y;ingg$n8xabRx0}gnmka&=n&5 z^d=BFy$Qr#VzLUv-ct(1UWExiy$OW9H-W&skth(Irxb`zg$X~s2}FKx0&$3#tW(6H zQwqc(g$X~s352sZf#@P8t3Y&}QXsk%Cj9gw5M`ykNd#ubM2YykH;D)zgFC#;6Q3(| z_@P+P;vbu8vhXCy2G;^()yy6f4WvyRn02yUjS`sZFqn5Z3N2ddKHf_jiZ_2}h!vfy1+`SHbX7Fi@;Che(v}U@ePS zP#}P0)39))dy_?Zgd-iIJHp$eO+exd^(qs!lnE3ovlEF@8?0rK2+9JGygw|wo%4Q7 zZ-lpZh}sB$7~KveT4S%`P)Bh5d7Gaoj@oC4$X@;K&&=JKq@RN*xS9Pamtc zn{2Kn{PzVu5Pvy78{^xVip4o5i|dFWEf#x9Q}Nht@^~2$q{m}VDjw&XJPr{-dOWTo zf@B^$O&&KAL3%v)5&;Z9D~~;;CX?HVAU!765&>2K3FFvfGP#oo(qnQR5y0?I7|2xy zlXD0^JsvM3e3<(Ql<2sYa`RVf*VsbK%mzg|v zrqAO}B1q?t_kE@6vy>V)%Vs&6RmicNxUjmDOHr#Re1XB=9Oq&GL0cDZVfJdfv8JBFEl_uC` z!<&!O8e0a|W0|kGJ{-0I4Y}j+`K3shnBEsmN0eDc10I>yg?+Mt=1DNn@|wG8l7%1x zZ6^EkU?k9*I}V>-%7%$)vtT-`Y%?10$h0o(ldZI>1S@So^9kBzjSvPb^OYP7ptS&# z?l^pQDI_MQM!^I{PXmpH8#1j6`{`Q|YY=VDX%6F_x0+v?SVzAiZTlEfFM}j2<$Z21F+jq-QeL5ka!aSVbPg zMz9lpdKTj{!cVpsz2q#dg&ZO{LyOU{4MIeayz-;5C_I)Hq{rh%B1m2p&`1;>=cmu( zb|OgTF>OQPu`_)hcM?G|k7*Lhc3o-OOwJ+vWFFHH6drrh=dmD2<}vL*;c*oaq{m~3 z$;mvX*(W^q5Hi=`pm5uoDKY!OKR%PLG#f!cG{k1~1zQJ3U_35_ZB+HF()c*k{H|g0zlKLc%dC z*JIe&KAg05Zrw4*Zn@#Z2geP%@8O58d-$Q(9)4PIvVSd>bZ*|>Bu(UBMv`8{|xwB40cS$1Glh4ADnHchabHs z9>L3%_erRLUVaVZ^F~|*SB?7-x@5!%!+pawVk|<{&hV&mcs7)bxK^Aw!k3rtCajr` zhKBK@3h5H?;B03@!?;lyaGU_>2LAmiGKY`&cQ|&8FB&lpKdW3Lsv9!HSCzvZqh!Qf z1aB-~-BAC-?mgi!u1kauw;c>0ZvG_vNOh@~$vYaxUsc$Y8Gd6<<7MG3(NBrxPRH8t zhB^DMXsDmi(IsfthFiLKg%8i!*av|<4dbrL_%M99<6WTx4kDmqEn74TZXcurKcr)A zCK>^E1JHq>(DCE$HqddXU-(4Zf$)ju2dmZn9j!p|5 z?}T@Cw}em3Y3zeQTf?}^Gq#6MbfA6c54ewjj&~Zy4;nF>z9FCkKcwTG%BqI`T>A*%4=)jx_IvN|s4;XPjJx4$Xen>}SX88PaxRihn1ci?I-S2^p z1O39g+B(C#n)iZ^iuQ*3`P~~D#-CrX-><{niXcao>B{KV`XiwgVTOmE913#o=bEYY3a}g9e9_d~KI`;Pq?`u00-q+j# zI`SLpAL(9A*#og};99v!#!N>O$iOLljEtu6iSBTCAN+I>SR*1D-q(RWDs%^qO+iLe z1I3h1Cm;hqBm+`siYbCZMk+D2_b#T}K!;UKx1B;v;k5!fwuzY1B?WZghjeUkF-1`5NFk>8czYL99dua5R6m87!XXB9=pv?Yb0Ho0AsrZn z#*8=@L7^jsn9i;1T~7Cc4y&B*J%yaYT?TaQZJ?ae7Y20Thji?X%PE3FM+!Ne7V2G2 zJ3)t4PCHK_r!ZYWN2kasJ!L=#enQ0Pb@r!(4nm(xR_!z!nTP9djowE-Q6 zL{8yALptz7Iu6C<6hWaQg`8g5yO?%?46B%SokC3EhXXRYL`>;q12XVKGP>eoilC5@ zN=)s&i|OZ}!z!kqrxsIa_%biacm%FGAm($CRl4AS82pf!&*QR+pb!IDg&&REF*bQ( zo$E}NSd^PQmeVT;GUOFWQ^qEUD^jM8jm@nf%2U_ix+>a&P(>(F!=tD+)==})JR+Cj ztD-Z!n8r;lkBTS-Z=jfDQYMi!aco2Vb?|HfY^->x@{u@ctmu8$RUJz2yDpFJ2HvW6 z%G${q-76v(zC3zI9Z;GIopoaJN68~19HY1{@7@{L>8{H=lumaIiNZ{&%%L2etgP!q zyuw4G_k@7L)YYsKlPyXWQEUNI4p>e@A=L#b=m`8cowckPsslNE7DL??WHbZ$Fv zn0lCXVsb-?A&#xUaX!48Vyf76euq-Uu2DD;1GAiD`bkQbJqRru9u>V1C`=v8Dlti* z5D*0p(OjdtH^tSgYgETZs#!pPBqJsY9*A2foJKiC?TXUCLJz{uqX5`}Lj>RxRXlZcnQNd@R3&=ZB-ThuCwl%gAaE z;0vpDaP*8=JtGA8SVarJPef_wRCr7_S9t+n*t{3qJR>&W(GK|g0iV2Xp#WFU^_nck zVX4964zTh|@z`YV)c~K!-D!0ud&@!qpC)_lfS<_T86lIso_4@blf6#BPh{^M?IwFi z0(_d>^#FV#cdw2y*ADRMG1ub-_$21qW6X5|z6{_qW^P3t;3sj{8RM=8@YCaNRS58t zxa%>wdxsbB)8j5Y>5{qY@tWMdrw;JbV{b0NCvvx<&SdZ05WuI&UOV6?vbQQ^vUgfL z;HSx6C*UWtmxmr|ZoUlQ)8wuP;1ju<8)L2=;L~I7G%vs>4qcBu##|@hr^nnGb%3A5 zU1yBD9>7nJyLW^DKZ&~@le?u}z&|tYQv2G?>G>Yvr?J(t3%5|Nik8(uk?sa~aCcYK zP`r;;PxA`r)f!qfZ+J^H)FzECs%2ENY`7#FUe}VbhTXNVc|UY7oK|+hU0ArhFKX!D zN2_Pli3r5dz?pbUGqfj7F4|(KWZ6$iw!Nm=$za3yI^5g|9bC~4vuZ2wfZKW-9>{8l`Q)u$p+XACmC%RU?*@P>HKIuEUR~c224K@HPrE=)$CvH zjmXY}m|Z}F`Ie>^Z8B7{Y=K3ramFOMyM56xh=df*IbEg}|9w2!Q9zh2W05lcm6u zS_+)$NWnd!lcb=`n_3Dy=}5uc_LHQ*Qr^#Ip zz$cpbBV)|91AKbS#p?AW=GtS-bprmGS@$M$v3fm;yUrMQJ%FFy;KlOwB<^}l?qc5| zUG8G}n!sI?vDk7*m$R1vvW2lGQ?c2QHdE~YZCSFJ{KP&(+Wd3^v}LrKtjq=EG&$)3 zWXm{>G0_gt=`F#rN=?l~CqSn;JnH~D6&F1KeP%-w04=-&n2orY2o;KRjt*HxiD>|3 z8(&IsH(Ok2Oy?1KFlCo=rP-%kX$~t_niDrng5L+-Y~blZHyikN(9H(k9B{MguEa)Z zv?qL`@^E;=tfS#AxD$M$c{Pqi-UY&QaKgP6#>7-Rj@(;ez1)W7S@UjKOYrh&=~iAI z-PPxWyQ@*8yBgWu)pP)cEAbd zoxs!_ci>{?K9FtZ{v;QgFqVt=P{4pag0Xr+)O3DPOcR+ zcMP*U`C<*4{x_O$72X}Y*O8+HC$9z1Ty5KkGb?xQF#f#+Us@~N_926pO2Va*u$`$9 z5WD;ad>@^WM*hL)%nG-)Q?T5&sd)FQaGQ>HtVJ0IBOCeWL;l%LsY984j1W!}%8XzT1!eGA00pND&+t@!B!EcsP#gbVZev0dgI7qxFiF5OItnmf z)Q;l8A3~mh_kSoFvz9Q4l&+DY00{jaeTv|u%(^x zfqbDYipP}-Tlh(B$R48axNL)_5ACF=AvE)HhT0Ii^9nvs6m3WF-eD4qa1bv$!9k4A zo%8$aTJWtpxO*}EclgZvDMz&RT|0}A^847v_%3=XKE5O8p4IXFz^TV~^(n?T#N_5v z4RGX7O&H;ujS9oXw1mV8?D_=xT;`@(;fNYK~`HQvakHzpcsRx79L! zFXQ-ar5Lwb$8Rg;xRv9#)jED#t>d?q65Y!2+iD%Z0>>P`NpQ^ZD{##5n*_%kzXB&V zep?%p#&2u#_-*C*6~M9a3&;uM7sMux-+04~@oS~m1gFNYl}hHA<2O|eHGWgo;P_2d z!!mvot3^4;x&)yb!Nqvc5&{ritA?emunk|9D{O0{jLggJOZG|4~foe*pXm=Lb>Y z?z}B5Rw{PD?XUw-OxXb_R>^rnRJl8^g~iGOvrIbB@QV(#t$cMt;>CW55QXa7j zDq$A@n6e8{teUgNXcXJ)&fCXg6@jT9*cGKxtW34wp~{;pP^=Ke4!QFVvshK&sU_$@ zm>6)-)dKQNsag1`TI8Vo7?l6qop*xe7trjez~i3bF4!ITBhylYD>DkC;3bC_H5j>s ze@5^R&V%oYZenP#qoMvsQQYUvjQ%hKZ+As^GWgYo`tL^fG4xIPdmj+10-oB@&*-<^ z(BLYFZs<7AGKb+&vTYk_L*UIYF*CGbc++d!_J$qb-4-bc4y9d+m)J_S?bmEmw>9i= zZ94|0Hk21_t0$Jy9N}+6dBL`IY{T-&!Q$K;_;cTqLCB4?JhZ?}heq(6KuQEWUMTzS zHXYzE0r+o1Yc@WKT%N+M4HWP z!ll5mIk^e%$C^+sI7(wpXqp_HekpPM7=5Cea1C*knN66an!v^g4z}Ym;6U#rwxc=L zj(Y@0S*#uU@=Oj3=Q7#w;v;O|XtL`SRk%>lAAA|u5IYFr7laM=l4^{c9t-KN0kaUrcvkegGP}E_+4<5G_Nz0oJW48e7{FSZ(6p9zT)h=wEqKnbqy^WQ@lXSRJ-P(2TG-N-5bDiy^CCR>DVFi+*0xqlSnT^` z{g{DE6`FB>#L$+0Slnk#Q{wrAXB;8O-xpMwDF2+JQOaZOe0tr9@-H~rr92kXr&ppV z|B|Cq%6}1UisCOj*hgPbt)l$vjvOifh4d??%o>NC<-eq&Ma3r^`KU;ZJG_6A#-*}# zBD10XA$n{+RCx*ijNl(=+=nVhL)ktgZi)|8_HS@KRA~d@l;yjkA0R|2{!z3IA5rKqgy$PwOVy_ ztEr<~4ISMI9sN*cTt~Mi>geYjw0O)0#PqbZLiBX&c2iGFQ%pUb&=l%v)s(oNR!xcN z=@%SzmZrpXwKPR^bt@LiN>@vJOkJJO9_nh~Ee#TV zEe$gDbwY!vuT_IA`dYOprmux3F?}r!5q&KU5q;gNTl958L#VG+L*n{cH6*65MWAB( zTId&jE#xbGE%clEI)Q%bYej!tUn}xs`dY}3>1!ch^tF&L`dav4>gxpZsjn6Jaeb}G zKfS(grM_4u7JrM?FJ3HrMAn5nP91hYNQ0!&+yzHT$r?T+uawJSwyfNj&2 zp50M`J6ob*tvb97S30AZvC50uLgD)8Bc(BI-nKSe6rJFaMGAGWQt8Jl)l3pDh+-x~ zvZ>oG^JAqk6Cl^r^p-iZ(ip$UHTAw_9<4M+9db=8z%sdFoq@?UGr=gpoccq|vzc7- z#4H0O{uonkCYL}l^8ktWVfM|8ZZKwFnhF7VzgwyFQ*N56ZE%hHzS^b-G}TQvWPX`26i&Hth1+nXJ@Ew}H@gNp+X%=F(p*tdy~e_x)t-hW%} zHlS%zaLo0ZuWPLB@sR}oh7;M7^A4BzPGsAD_FF`>Kz}WG zTejxkulaU#Y5sF228zGYHPK)E%`PqP11;~EJ2R^J_H=2!p6odnGgJ`L0;4lE|L8uN zFO;nnbGr$S5aDbCYk&J1QHO40!jGm z3W!yoL9_=_6L9We}98}{l4eEMVe`@_#pRn6m1L~qJU zEXBgZT2#ar;mYyA{fQr-LO^S@`VUReC*BG=eZcWQNL(5i9JI}b7p@h0B)))g)%u9{ z-avTaRN-Ujw)_41nP%UFsen4-C=ci5fIlVL>JDJ}MhSlWMGbnJXE4~GyKKd|2H^im z5N6fR+Pr2**13jph(mGh56#XO6uV?Bzt-y4XWtwD9hN3rW(&as`g?DdqPzHAlg0GF&EX~;~S-XzNn%03!cci21o5D zWFX++f?@(*Z5KDUcM#qkn( zzV;=*-s#uhi~l1Q@>WG^b&}{7xuw-Vjlaf_J**$E>VG04d_Vq^5tZ0*Q2$0&^1l&B zYz7TiMYQ_QvD+ zT=?+r@5w*S@`c9VAb+mE4u8DoBm8#0_S@d`4d~0Ity=B`;a46KOSZC~f3*7Fevx(E zXyEj&JcvJ~Ws_RHD=DazT77l_#N*9tp@)_*Kz?lVv2q=z?S#La_U}lfT;C~l_lAnS zp{H`nLi2OWLREQXp+!!6Jnaol*0y*6w)eL1`kPhTxA=H7+Qz)0yYuuupI+<6 zBL}rDo?bNd6~yO+e?3jL-RkM{Mw`&K5fC`_UcB|p^Xcypgt)Zr4*%inZ0gwI>Geiq z(;O`TAm69Q0f1A#fbj_#d+iAS{?DZ)YU18#<1|Mz#-9SL2tYpY+G650C;ZA6)%X@( z7=J49!iyr{rERm&`kZQNp#=zBdLID50|?l+n`qq@{`HNjtsSkq-Fhz}a1k$nVBqBq z|KXbgZW=K_P)Nk?b-VQoq(B<4FH1uUF90x|+*<4|)K3Ws()_wb0bs}L?qc9Y2=Gh- zOi=uq6JGxX)z(4`5X=B#_qy@KL6E>;7x4OwYHHyH5K6$V#qJqEOF&5T>l*^C4XwLp z0WAVh0=z&0121p*_g|H!7GhtS?j~OMx@YO9zOoonBZ7#M%MwP2A-aG_wl_f>eP5}i zAa>|{GQq1nL69Z4C6$mz^yPKDD zo1+;ps5HrDQHJG_Uf^x2W;>yR{E8;w*>`YRs3?~2rXVY*;*K3kMFlAE zgWBZMF9?Z5?orAK|NhIWc{eZ?HB~Sbib}!$5Tas>Qn|1~x2Pw;Km%=%3NTDpngy*% zkUj?DFd-Cf!NP_(2?e>PenAlq;;KZ@M!`u5m-aTS6;u#!>KPtIcbisW)@VWwrJ#^c6(KJ)m_6M+nv8=3lqNiNSf~Rd zpyWM=LcaeGpZ%%Nvk!>Duz^ek7fpFT0AL{H9W5M@&KwFPzO(+K`~F!1|>H%L_w-ZL#n1JLwKNBluBq;l9x^)4NHa4 z6!oMcjS$tMjl@MFo9N*%X{o3KV@8!xPny(euu%sV;rV4FXg3kT=MtRU6j=*ZC4$Pf0&H11YU5CgHN+nbz1*}0J&^1jU zKnD$^g`Psm0XdcAz}!Kj)MJL=fUarc5GJS;H4Bf6X2Fe%X3cP4Ua_E19TWj{LB*PG zDptREjmjQmnkoDHaq;6blZFiUpliisihVVi{qb zsMD;plgX!I?TJ3bz}Pf3P0FIDgFAQ`I1Vwlq%(AJ{mp#D7E^%z00t^3ut5juWpb2r zg>9rN$rG7gCLQW2CzGpeEsP^nNWnD3$v|fq<|!YOr)(`jg0=l~^}rAxV}^L*W1Q(Y zs*nn!9#j{sr)7X%9%;sgmQ170(Rnr_BW@L<3GjI_03tN!kD6_$(Qtr}an5{_b^N)J(z7HNcXqlxqkA}K)= zG=Kfa2a;tP`W5rrkFt=arpl%8;5 zPZyHiYSqsbvy|k|8SeW-4oKvkwe~X)ZV7~MD`k?~a;=Q{%&Q}k#nqNxb~hGJkD;;$ zxlrH3xK^54+(3@mEhlgjX)0|AX>sFyRDPfmyjo8np(V4#ZW*|uF_?>W`$%K(#@>;} z;EfT-;EfUS77AR`Qmn z`3`Pdt@oydfQfvCciCP5qyzzb@&>pauzIt$suv4+B1(o7t$?IGcbAirm|nju*AL%= z1xKDg>Bq_;RvNif)rUnZELfFC4^60WK%oBo&p-V)gWgbfJ7uzavuHOj!ltO0xEp2cxBgHOi|_mNxST zJ4jdLxKZlI4WwvxvIxv%do_yf$xmjkw?(&(19sg#o;^gm5kCW4^_J}E*iXLrpl53| zGTw0(eJtz9Dd_TS1qX2UTeNi|+NByiJM^Ax_(t4Mb;AZVjYl;GEq3%5G_$+6JspnY z(QRy99rF;%W&L?jtt0y0?0}m|!;#s`(-dtO?>I%|w-ls2O|0EH&Cwp+G7-gOx2Hwl zo_)VNkM*a<;Wu^2bDXX3i!kcGSip4Use_*5j;+zn;80DX$J4_RnWcK*ZM`cSFMEK^ zaZh`+alC^&IhVbYQ?SDWTBQ<>j_6jwW~*nf-kc3b$=(uzIi6pU?{-`&=wx?Io~QC02@Wfee?(XP28(nz zI8IYk05*Mw0L)@*C20LX8LjW@rW#NTF#ZLMSF^px6b9_+_iTp*yEA9avr%&+3xe~feJXV%RIFWTy#Q80aTmb0{Bt4#c|fNgFv+^nIDKasBNh&kl%cO z)uS}Hy4}$)Y=R|$symKDV5b1AQ{w>3UOWJ*iOPCfsM~;Ri=!QKITeG|M0xu5-*Lv15`NL_0Ggcu9MHT2$Y($>NM1s-l{7|y_Ebm>XiEUinQ@SU7DCfLO>CxT z2Wbpw-Vumr5t^Mn29Zf$p)5x3&dzg-iZ9-!?**i&I_fy(5#ec7wsW8na08e_06fPa zFM)a6aZ%8KUKb0g0clEHEj_E0igO=(cX-S%PW%mc(QnDO}SmYbzB{WTr3xdarJhxC9z*1_?j`Q^BI|vN; zM3d!78J0aR!YfkqRu2HwI{~Liu^1-|eHy^J3UH<5b@4X61+t)}&I^f!T>uT-+AX#z zbxLUMrm0e}R&UoqbF=`zoMMsyqPFzhIGQBF)IJSZ6c#j#rB0p#;QC%j3fKS=?d}01 zV2nh%r_(F}a(z1xpx^QAq51)uiy(V(0j`uFF9z))Bd}CLdqR1q3wj4Io8fc7$A00$ z4B8-tST$Uav;Zev#O)Gzpe;Q=j#h?X?wkh3loWIdn#q13r>7u7;&5x4$sza}5&K#6 zIz(d+w38mi1DhgZAIqNVrh!oczPJUEM-QNk3R8r?&_@8d1HJ@6Mua=!S`=Q@5i*Fh zgoiiy1R#6I(UTC!wrOBjF4={vWCW;@T}q8>cJ#pbfG@(KJcC1Ij=>dS2+bDMoa|7N zzqpm`0F+yZi^K>G&{II!CV@g~v+yS0;0$LhCuEldk7>vvcV-l36n-vDSqD%v7|cylshSQ;1=*9lu_7zk7@g-(+gxM&mOV= zUEoErvi}XH{oilee?#mBwkZ4G0eoiI?0=(a|KVYQqCjsLIl}=!mC28^1LzPo%o=L? zvvb_EM2flt%HoSI76W1-a?VgA1W4^bx33EbfoNzeOtaGSDvcnn8N0uwTg+y&nf@ z7Z^%N1&aVO@GQg4Ir@Y--s~)Ic1?~q8?%+{$~>=*OHScya`ZD^-Jh%P@amO$p1oeo z;tK{6zdyt6AEj9)iHCG9gtch;;mK)H(juZoz7J11i)a?TEJ|Gskw_rYi8LdjKsOMG z!=7l+FcP^5HAls+FKs_USE0m^PESn9Xfx+M)Ogokf;A-%qb+!{)HaIyiZqu zKf=w-4*rxo`FppEzu&><08eK%Qx9T?9?#m2J%w3&utzeB=dlkQjzu3INMghD0JA2$ z-S|NOiC?TF+xJ&!uk1r~5j*_2)}1T!L}Y{5>e;HTkBo16ec8So$Jv4|>_6JpX2B)*ny3b3EF*t+z1pW8gqes?(vQr=sk_dhO+=byc<&^ zN0Z>T9S~p2Yic*=feJqp;=7Y^&IE{`3Gv;jgrI871UUlcdx9pJ*R7@jj&?z-Id=F5 z+G!{o^vVUew<+8J_kkSF0I-?!G?4_{F+tRr_i;yhuYn^;E%QDAz6Y})M~7gz2Y?Uc zA;E_+D zDVn-S4gzFQFwMFd+&YiR9a$&RA(K0Ry!R%HivW2ruPHiU%49%I&~cZsGX)Qk-vY^IT!X26RtB+@fBWdxw9LK!C~77E&?1auY9 z7Sd-CT23hxjIcP#Ho!QY4ohIfEW&_s!6RBU7kitH37ft{WaFTktO1ZM2EfrDq&m!b zn$qf}yA%vAi?U4zF-b#ER6-{%5`f9DNz5N483WCtFBkCAB#bTif!2^qgC^57MMhl8 z6b&H2x+rqOvVoj3I}<2j)eHgQBuxR@^bV$GoTJgj3*Rv_GwBH12I%tW>6Lt%#EUKX zj@Fn<0|gKN7K=zyhW&=bW=y~cDg%5&WMv8#TTrew<pq6| zfNi^YMVF$uGBak7KZ6FwkQJH^Vx>1XMLG8ZebiKpb^^4={0k3bok-z2=g@)cW}Xks#X1CC(UrA&-M04y;i z+~kDJxD@#_DQ`14#>|TdzyNI_3jkZIVuKi*^kg_6uo>ot?pSd}%uOb1z!1!}#Ml@J zfFp+Fn=FudmZEzm$!&(nm~RmQ7^YpEZvnK;ivBPmskZb4m@;QtAUa;f53xX*Oo0|) zh9&mLzyQoJRKnze%&vy$1LjvT%QDF<%dpb4OfV{d43U?!;<(?*%v%KaF~le%E(A;38|3zfMH+^*9VAYf@MgqVVeQ5OtA#w zG|2!lCRq}}Dw7Nm8%SF2O+~K&MkZT^u`sMKMwdC3A%=zl#^^H38b&Y7vm{7XW>*4a z%X_K#7|_UkE0ca0U8Y%?Ru-enL`&gL(QVecj zHbn0F2L`q_J%`V0>+rrkcK9*OqtM;{oTlB#-|>x9V=OusnKu3?iA(@tH#)_HX!pQL zv(vfBxY_Akoc)dFIIMcE(djzr^oN+_pwk06P1{nZ(P=Cetw{Bv(>;U{)0Axk=gjUZ zlD%ek6{%Bfcsk~-FuIFKcMo6!g6=wVaLn38bccAkEY*kZ_Od%nA({pT&F+{)&Oo^= zb%720W8N~OyKZzBz{kUN_?x^gMO+^Yie2!xt0*R@`C3tyn_T2i|A^+)% zjs`Y9CXJiN(PurIjQAXfJOkeB3VfKq==7zS_t}B1j#F%RNZOqqSI{6#%Yp^>ISzXI zz1a`E7&}yRy3etT%??Vl_HhNLe2&AO3*PL<*2NB0ogQ#(u*JnL z>eaMNw4qR`HUoE{f_UO2bON~JEE8}#6Yl~X`2JY3P4EV`-GXh*`xsEk;BrBSpi(NR zfYU%5r+tjTUz4@*(GiU;c#LzSqc|=s`vIKk0hDpEKa;hv1*r~$zrX^K$5G6IfP2=6 zoJR8`WDx8IqB(+S%=<%Nk-_DHZGuIWU;$18c08^?1m_mi8UdM)}1bak+qhh>(Tw!>65pSC! zEcVMIa(o7eO&9R%0Dd@U3fr0D>k-M_4SY(&Grq_>rh0lrGh1T|9^ga_Ru7!>0V@=R z!4_s>3I#nNxTgGmKei+~l1=QA-AJ4;rz0;$Cn;eW}(H~<{ewr!ZEjl#PqY%nma8-kaZVNZj} zvU&kLLcmAl7;sxNGD@)p6`az+c!Ogv0yz|s>J#3@mB})(>(o5*Z5`moWUdL5w^2CA z)4qY{`XOkEy*K0%XuT|OcN6Xr`39D~qM!G)jD%Ieg=C)1O{}%s|HmSpQ#AgVS)C`| zwE9HHlvK|yAYd4O=pnW}XP3o1ySPP2O#Uz?i`57A1=PY;kJ3zjnTLt*j*&=EK>f(MRx8t4X0TG0LzA4@TTkKqR3WD4kH;+|7P zUyT1S-i!S=F+TxvFzVour6j>H>`lb8Jln>^H)kw-?LMI*7qf9V1QUBY0peq+E$}gX z0c5;@E;Y~7K=j1}43h_O0w(4zFrWC85+6eXGMH~7?p7=x72m?K@U=UJxzjxz^a>`o z=?;jGWv_sb;T2%Cg!!e4`Qi(PNr1Qm6LTM!PkgF~k}miraUhjH7)H{jVd60V}s zRU=8U*s6y|l3!0J7m=G9~Hzkqk{P2s35Kz6~y(U z!uIm0u)Q)WY>`o6i;W6f>!`53H7ab~qr!G%RM_I9!geAJ8>F%#{ErO2%fqkpk2%fC zcB+??i|~>S#rg8yO>e{7O1ybHftPN%`nz6zex807FXEi~c5LsK^^7lE!}Sc#$pSO? zK6z_XfAyRQe(q|+&%AE@JlGq{oRJxmF*OfMI&HRHzMtmgK#svVoG}k54<_nhlk3Ke zjOxdX{??2h{lV^Bbtn&6UO!?GYsRlHj|sC1)Q86C40-4}t~xY_?zN5>l)^|zJUVjV zZNjW#?xEqf8G&APlnpwo*g7+=wx&!Y2ht|YDux~!KASLKRn!a`Ggi*@N~U>pkE)+T zV`3|EoIa|4jur(Qs}NYIFv8$Wmy(WtM+I|exND1aM>Qj(1-PV{Z!%qYYNJVz1_Gu#|A>iS4gW-`}Y-&9LkvZ@7bM8G*_s9{8x zBZ-kj(}*em<3dTb-Ubat7-@!(V7nDPnvs(cGma!#5+fs09FsL4EkKm@Kqv)*Lk5Pj zGB`vrI4kEup-7#q7Fw|(LPqS@ux1C=5+Za8JJ>L5M>1fwlqd+Bi)&a<1P2i{%BrHt zMlLQ=Ic#$VbE(k`oUb~5RBM&63`3(xS-v!8^_;2S$l;V~4qH3xtP8y0VgMxGb&-a6uP%OW2F$+P-1N6$oM12$uvH09z}*K*)3s zCPG*c5J4~*g(YC21QwvN5IjUL?CS)AP`4md@qby!Y%W-PuQE!0;r~et4&v>{sQcFL z@q0b4hZa{ac+^$9^ao3pEv#Ppm=%7gRs?rH89)Z~4Kp$G(|mKan*fxHiAKG>=`{{$7z<-NE*!2SIZ{M)Qez5#!BW_~q@^M%f6WA)cL zq`$7q_NO@=(e510S?&Zx+Pn_U>2>+T0f)jtmbprUU;3!FE%M(VUW*isN4|FAk#6r#W*d&CcYF8A_YQ2ATX9 zdh9>N8y9Q{*ky$Ky?oEvHUn8IRA z{6?a0C-LjF<2Q^!Y(U^TZTOAR69|A4M;4wQrAYC759hu*w z(}RS!=mGwZL65PR1Q0rf9-Vf2jKO;X-6=qK+URkGLx3J*$OOCYlCHZfdeGnD_|RUh z{x+nc2(46Z)KRW)_38~}JVWqytl#=q_SezBK7Rzi_&)km`1ha_KRE(blccEemi=6f#X)4Oh0;4a zW}niXy(9n12KJ}beGMY6{}?Rz!{r$v%p_EpAq;v- z{0a|@# zw_UC%dGAZflsuj*t2rro0hD~2b50cmNo4ODU|;}kLQFZhGH?ab#B}y<>?a#0pDHA_ zp&c@cOrlxKsj zrh6XlewBN*Pba+E+o$}4TP!z*}NMi1p|B$0?V zzET6!05nk4c1JjHovU1Lu+{_Z&=YWl0Zx&rU2c$0XohB>8R%!wEq%TV+8goBs02&{ zVYNlc2t){2;z^vDYsj}Z6r@Y#*y({Q!r#L&+Kj~zX$`ib{u)#{m#5ebL(MS>Z4*vo zz6$T-SbiV6aca(+LVwNiMk4AK&1om9IgU0Dlcdx>XstGHXW~L`hRUtQV!V5o$4TAdh&&9L7 zd<1(Liz~wZ@jjdt74T}C(Q<;)Gp`5d^ltGX)7JfHi8d42W-;3MLf1b&4W|>M!OBBf zS*18)E8u>H?iLVZLnMBmaaV$xI2HR%L__}I@d@6Q{b-q0`ze1|S2Q?2F0on+A}_N< ze~VGjwu#nKVXv{V$Qz7IxD}c=xlN?Sr$;<8lX*ugIfauMyr2bd9Q4GcVk$2Zs2!)8 zos!z=r~q*=K|)u7$=&K+o7}@;jisOw(rX%B1bESn+VQHH>iB*b4c_SGPoF^48?Qb+ zILI(%q6AS+{?2pp_rYTR{-~6{)s>LxDjAr;BR<(Hl*24iTeU)R3srAxgxjs^wC6WN z8`)SR|}ITU&%lt$sa3a+aAB$k#i+Kixs$8)vd`^@l#`~_M)_Y-2a zRL2<;Y%Zzq;zS#ywUS8((qbzHF9e+pL*vI;D~ zrC~ARH>8vaRjHwO3dwlzR%+iFZ3VGI;%L}8Crc+$LgbCoX_Pq8UGW5`juW)!uK|c0 zpb~MxMWU+J^BjB*SA{S>CRitqQnGEaE#`LuK2aTn`;~<_Q{3V0ms9Y$=8dodU44op z5a9z-pJ4AU{8SfXRD{Mi;1A*e1uVfYj?bZwSwqW+9N!oQ zD34n@Re&)^to?)lgUch70YqmWq^3^645lcG`|$4w{;}>H{taqHIK_+;Dh(MHoQjz! zxmeoCx?-00vBYE3Ff~J|lBJU@3H#5nRKvPKe06VpanJZw#XP|iH4JzVR!#PX>KIh{ zRBVMB#&dpWMYt4@wh0L&j6;T{QX`COM+Ao45k9?*!E3qR&P5h+qE1TS`1iLW9!8-b zKQ&t(1Wv7hq?$*V;G{N`{K~8rtwZNZ!(+ z4ZBBZD5oY3Z5U5CJkNd(T9CB@1y~#mctI-)xaq>N7&04+0~>2VHF)mpU5M2+XN41? zdLTT$Z_6(RlkgzSFTo`M(jkHZWD~lv6D8;vO5i$#3ztf{AOH|>T*BN@n|OH;moRx4 zo5!WV?N{*@L`3p^m*G{*3aMdQ`&@eSnrWHzVb|76IQ9a=y zA}vCf!Wof7*(N8r?q(&~zpoe1ALdoB^p@@bhl5h?2_GdBP~i!7oie2t*W`(j^}=m?%S{Qf=^URa$)y z+ypQ2>aZV?&fn1=;Idn*=fW(Daoj1@p1jDK*H3t;nh0)gtiwAM7ya0v7jbPV4|#5V7o_zH0o_<>IgKT(;ul_0F; zk`|`KXtZ;rIVqxL`<#@`I1(a)8#sGUTq0UFZ^QoR#Ly?F&{&C>w=e$EAq&R0S;M(3 z+!%UrB{pUDU_38NYT*^)`1l0=9f>;+Tm9@dYmL6>mC#>ta)}Kb%)f2@;R)baT@2Vt z&8PAAWc(%cD>Nr+JW3Ikjid&xBtlShv}lNNN=^G%9z3YkekY)B(O#XXy?SRaI(MwO zt#{2Q(FiZtjyskg3lt$s5hgXTu=l}TT`{2{ioM2C72MB%oSUWW+dOP0{XRB-izH6x z8#FLm`$fc$Svhi6UB(4J9{c~f3oaeq1ut)e3(l7Hqp|&OXQuz{%=EvVqx)aJjUK`O z;zcOL!ScU+Cu;d$ycok>oB!<`>VG?F?K>qHvH9Qhi_?+(?-(!7?EZI*mvW=}Uv!<} zfAONw?tl5JxTKT*SD|hCUm|V!UqRaPzd$*||5_NQ{V&i3nT$9PooD!8fyw571t!Z~ znlNSh-_BEZ|10pN{jXw*<$r}Iwhj%B01gF~;eR_b{jUNm?SDZ?))kl@s1#dS0zwGrg{I!lk&>>i_C$ z{cpUgOZg+ynb2R*q2RC0?NSuzfbr_7Oj~#!CFOu|RnvJL{fAaRK)~q1@uN5=dexPf z#~VZZ>!|*E_^Tdz8}>_o&A9?3a#t5!Yh^Ne{Z%JFx&UX0d!4NCcB)TGtlkLN1FRmd)|D7zwD zGagg-3Fzbq{+-0XbL^-*dKCYTAN)I|~zmGq%@gQgEGU;BcU!$5~8jQdy{u!z;s5UUd zAjzj8v(^3aJ%|KM5+r|UQ~0&$LKaryKciJcH&}fV-AR5^_=o!^<4+p*KClguoF@0< z-!txAvfY!_JFu@0Oj=Qv1)i>$c^Lu3(0J{IA1;0%7{!mgUOd9mN&cMU&!9hy<5>cs z8l-?&gcJ}}NCB}3DIn$}1%!()Ty3^Y!HJ-)rVM|{%0(nW`BEmJ?kqh zzDt2?ppMJvhk4n^OM&AAFJoc>*!V0jdHAY=ZGe}}ygbKJ3rpNLFxzDpG05ixKHP4X zGXw|2*OJkQk%U^4kccV4OEn{n5`HljkzsUC}fgk=WxPginsB88O>5M zx#WU0#1|s15F}g*dbCiIqF~N^zaa2u0IazAp4>=-1eWX_aeU6-{twvqnNXS0?E6f- zA_Vec-}(CAvhn*rtc`zS*!e6p$6|=Z42uEAkFnWJ?0dhm??QfAJO>{dXJKv_&!5G5id|{ z^8!~4%CNq`6w=sYr0$PW_0HHxno2CJef(56eqBpE+yYAj?- zUT-H~IzP}z^c#z6idI|}A8~xA;Xk^>e`FG7MEfmr#vix{%XM^Sx{l5^g~GKq6ioj^ zKr#Tf{DRhmUWmw%UL zn>(YX;0^bo5hi-x!Sv=UZu06vn4ti`Ln{>cvIC2-BxVARv^_N6MPk-+q!%v~%hL3z z)L!U;=fh|+y0J~5`dwV%^%?vjvzf^zf$9?|$sU2~vna_Hf$9NdZeMVrhzQhZFI~~y}l{4IIV>_FY@e;#eF-)39-omNq$|q$<;DDcwiM2#q-zW6tJ~0JMI{7Q_L#$%e3)%97oeB7RY5UpjGgM*>Tly+ zqE{>A=8UzldNtZlYM|t%{z5rnK>h_$Biii3Rn?OZ`?SKAcyf!e_=RO$&d!EyWMSw+ z--w0Ag)UG<-WVDSkPKmP4@nlW2#I^=08u4uBHk;f1{0r@@v%2uHl{CqYY-dbokHc* zPLx37k2)M(brgfEZTAeY(PecTtJUH{;;$H9TGL<9`kP|T%rKvvxMCB^_@587#Q$xx zZOL#%vRNcU=^R!D0VbAgNi8@QAsC4TV_T)IUI_C^vVm`v+D|ruO9q@+zNAysURV#k z<%>}8>|IsE`GDHcQ+Qa_^h!;2G1{C^HPhIW^T|@woW;KZe%;aEYB8LfPChKd0X0~S z_nM4afelAWe4Ybwe+S_k!69aP>Mn#E^L9eub|sF}9@+SV=MTp}1%E=w*yL>sM5qV` z+(-T;{*}05KNQ-Zh`(lQzuRh$9*oUclwst@!qd>+CtS%V)BYCEpN&7+Y>l^PwCB;A zO$W4UX0kkq-inh&HUtPDhv7~96AD@4Scdom8-ujvQ?Po5+dGpU+q3e$R1vqSq;~pS zq7snk=Mj_m!!z8BQLqg<-)$_cSzDNFJs@xip2&^=2*kn4%c{uoyZzy3zKrN;oaWTD z$rH87@@+Ju8&wChDElGyZRR)AQa>4s(UWiQ_2WFGeQ0E~;1|@`#+gDu70X3rY0d{Y zp1&m`{(se=R=)s?uM+Ql7X|MdS-Dvl9iJ{7@qPaKBfSVe!nZnC4rEbW>Nh|)R}MtT z$@-t8X5~N~%d4i~(Kit;B0|AtY;;in0_!IOmaliUI^ti#eJPHM-)I(d;@6tR-1tPZ z=!}2BnJpi4#ZQ^VQZ?UYZC!kyS^L>|n_2v7ya`2Za+Y3G>4_wM$_wLr7>Lm={(ry` zzi%LFL(kPWe-~HyOO+lc`+u^UK(hle>^ynj;l~Cs+{7lFW&JrI-|zxOx&hCY_OcTM zj?4eRUh}2b5_?}))(>H70|4nKuV`?mUQ-23|G!LYDesG)o9BEJr(~JTsC~>}#1==q znax4QE#u$PC&6#$nowRF`an zf-I=*5^j(a|3j~Fk^f@c>Olj*D(?>! zm1I8;iml_~*(T;W@ecGaGMW=VX%x5Q#v9Dq-1uIz)){}rtaZktX00p!H)gFX{?BG@ zX}k_ap{SD-m2J{%L6lq8{7*&Cb@=OjVmQFGEg{ofJeLSs-3* zDG1y~0&`p60f>3EoziKNs{-@pVdue$O4y)M7ePs`(rcWaNX9f8@(5dlZw1(G1phEE zR+BmWJ%WEH4eMk%6yQ%zY0cd@kRgUYFUp_IgW9|(%oySUb-(a9n_%E~jb@OFi#aF* zi_LSqe4KU=Qv351`nkq>?Xy3aiyi!T!@ijJ0r zR@b4+3I}fAcY*Z4hL45Usekx|B_e~u$Ggi@)$5c*NwV%S#Paq(QSbay1V<6hWtUyez1|r~aAc|2Q$^#KA z$1%=JGIAUvmP|5X25iVk4B2i0Q4*weo{nqCgf4gr`+Ze1WDJee&?aH-a;BkwSEWV1B*^YG@*;zA zH<{9dCy$Eo0K?rzT4bM=++|3Qq(y#TP}~hNp!K6F2Px?fo2Ntw1hA#auIXZiWHdcQ zWRDvelFPKk9i|8=k);d)n=VBp^l{LTp&8^rvBCk>`^}8OP%4!z8HC(t$`8gl%p{F;uGBv8?Wj>+O!44cjUQR8QMDCMxT4rpZ zF|%^IGqN%xzb?|o2zMk$B4O+n7*%#oEt!;ThLUIZNDmXqh$%6%GXuEONEc$HXFh7C zXFf0KnISCSW1eFWap0uN&-^|x!N;JcnloP&*hVTJGcz>Q(o$#xohoPZC7@%^*_@J` z&1A2YvY7}t4e4aAC*%a9o!UJldGjSfViv-H&f&S6p?@)zyjfe^rE)hzaHEb>WP!_I z0i?D1gi2;R@E(%8;-N<1l1}4H4`QZqe%PMI8PFin6B30f)>>(tVPP62e`X$$C{{?o z6TH`B@WM*yjKQ`+h?vnCO4F?}Is?WnlF}JNA7BPs7@9aV1NCnq4@)|wGXOv6xN!B# z4x8da(oC<2CRO><#L73v<)iqJi&m$rdf&hR~bYe7$%eq=2BaSAqgk zsl3sEeK#146B{LOG|a&}Bjt@Ivy}1=%^(fTx*)RY6w+R8@w?1iMp@afoH$^6v{-D! zz#*7o+}I}~Kx=PkyO~Xz_T9`Tja`#sQo(=F9y!Y4$wizX6e^oEglV5Gn>2`j2x;XA zYp)1aI<3}dd8MI--9}O~C?Os++%gz&nAy!>$BruJOmUNp?*mB*X;MdobaM%w8U zQf77!Fo2Cl#Ae8iE&cRK zm{xKcxWdHj&&WP~^@=x2-fEzE8hlSDuGSVG!18)5I8(|Ahy^m&9KC#Q zYv6GahM<^aR|=)lTpv^J6u0}tpNe_gDz2+X<+=U<=-cyLzh`<>m=$}TYxo1YR1vrl zeJY&)2O@ z!Z`N=57HU1lQshkt9Vq@(aeC2AOkK3c}eO0F#|iQQZ^HOrF(RlVpy**7xtMnB~8~z zuZVG#GMQPi89Tr)AZI3hI%k2S=XNGAO7VtzKF~6qAN!(}>Y2lxwemfy`K8F})oYss zDFpQFl_rfwn0oKcINai4cd0kq;mv*=38OK!&b}Lm*yHjMoM8WW4wGz`OOoxoCCT<9 zOtP(=8XPn^Xfe;?o5iw^!mW`QCAbNXEbe?1##lVD*zs{N;=}PE5W=#Dod={p*+7<% z4`7SVYm{YSr`EkF5c*~y^h9nTw8R+*Eu7*HEphon-!Jrs7Z!7o$Xba~>qR52zchV- z#B#PJn3(s+)vi&OV1B%I%q19RXIv(EzprDOIb`AbarNzz_WRo|mcMJJ{cb27A?^1e zCQd|Z>PH4nOKL`yI8miFjCr5Jq6>eYT$lWm9Wx8bwMcY1j_^-+$GnqMIB59O$l`SC zr}rO|r#ED#3NQL7slwUodjd_Qpc#oYGqQ&NcEqgV$f+BP&O{0tD{Ht1A*kdbXFf`E z-Ngd9O)`obnVK&aNPbx+X&jP3yy&tC#4TvM&GnTl$tC{V5p#(nF|UEgX$#a|Gp)En z3CVw%>eO6a;a~}sl{)5qy80fcn%SCZsqJaS)1ZE>spw-&Fm6HWL>AuPj+kp4`F;(= z(z(VJHppJiWUuB*3eyUoGINcm;eFCIYTEIlD^EL~7S`e`%0T|x5i^h@EwF(|Is>^v z1Ub!_3s(Hg7cIz3E$UR(-eA>NS@kt29uR>ymC#%{A)FUJTpIHtrZK0U!oMm-bv!lM zJ$!4BG=#3NX$}v+4Sxf zV9u+^^qvL^>L*JcHj8Vldt@Yir<P=HMd*ZU0-PjSvAQQ$0uvPKkW1WyP@AHKRpkssR@MTQOZakEl!aYP3G z2e3|Y&0^U9O|1G5YbThrPj+F^!ymrN^%H(H?!e0al5(s)R)1sTieC)+LciknSAWp} zb{5aXN+7l!da?DUyoPT8BA?~&=FcXvU)1?Eb8iTC|8J1D8r-1r8MLV8`5jqZynM*X zYkcD1jj#znC&+paE7Aj7Wlsyf^ZhnAuB7&(lQ!u@uJ{lyvr=W+*WZd_xRTbl(Mh*- zqLpmkFPmX{*^USJWu3?Kz4AOCXpjfCVLAN(+8)J5T6s=-wL08`XPokkRmtXj3U|YOh6Im04FKb@(}eZ+>vB zDzUTRcpJogQr@)VMf*4TegNHUkVgR62@LfCghqLAq>1>o&7BcKnz)8^p2( zlh*9J*KBP=+M-aa;4F=av(s#x#uZ*|4@qWb2wpr%9AXI)g;EuF0!nlb~s^ zubMZZlikkhYOXjV7(%P79_e6P6i_bh{ zfj02Da;JTtpeNF3UzuHt>x?~w-g#wui}$`V&pGeh+rraV!DeQ8?=9Eg@@$^#*LVB$ zhI^uiCg1?@IQE75^=ELrW9Z*E(z5C>*8cGC-QCy??Zf`Sr+hk=XIMQye$3N1h})5njg!dLKH?+tuyU4;3}wpzi#cdzTf3 zZ@s}At{4n%jpZ>zAZTD z(0+10KPxMka$qQ!2z1$tF7bSx-x1}*ZFt1**v&!K3Nc=Ba~HEV*^9#{UX;4@V}2~E z76B;Sm%1$MMrR-E*h_ z1WGv^%Y}LZmwt#46|?due~Mkfe1u)dZ5R7=wDYlu(QT>GExR!&;5T~Yqikk>lpxN> zeW@!pKx{MmT4eOa4vfC|VUkHYHnW~nq^mRgDmD7*Hu_p?^u-R0zFso>%Ko{V&7?1R zF1y~%n|}T0?p}HR=kASiUGI*_L-p>L@mC(G#6a3)*@Iv2mJ86UjjcmCV>AF+u0t1c ze!OQe5dO8BUoh|$O(CUmz8_hib5RpoNv?-}%iZt+{eJh9Kn~(*S6rIB((B`w7S<_>C;~Q$3H<+RF~q|dsL(5?@`8C;a=8-9%ol>GVzW+w5YSm}2R_%$3s_+@>2F!7a@$Fc_TwMk-v zZ&FY6Sgvoz;zl+Kf{okJD*YiJ#?~CeMe4ik}vw(tg<__)oFYt5I5Qyo65-L(L+zo82umf(sCvq1{ak?Ux>dVHR&VQUy;T{#^{Q4+*?Ox{ zy|tRH@p`n%OICwjPyG?!_J~Hf%Jgl4@Wu$9r_rYo4#1B3%k`L_@@f-Ee4j*4`}EV` zRlM@^?BH~OA6dT_{~twzgJrAEY4uNHI4C6yCVC?Lb?AAaUt7`y%uLQ7rAwRq zqId|jdr^$M>YjZ_b2SVvDHGBq#{g`mDA`9?#}Ov~TslG%Q>3(_7flCYI0V6gy~-2U z;#-Mom}Dhg90Yr8WDryG%s~h~?EyL;LGp+UtpkzW08j*}DX0Lp^y+EaVdhiajy_EJ zV05R)1ybyY?$0cknRl|3%LeUnt zo=@$|m}y#<=)^_icVLn`T`b8WDH)1{h3LA;R-fC5SFU!Q!4gaqTIy=Srhz z_(&nFsbTg(x;Y3CWk(pq)HEVmhblp5ZN?z-ge4+X#vpyhAf{rPgAfCDfX+uyPa^X& zy9XJ20g52C5fvaQgI7$zW|2T8$CJR8!khp(`%sM?)d7P2;(#E`LDAx zoS@+U=Q4f_cyk_1Hde7r_ZW;bh;yOJ?ft_x*zhvX$uiF%EOj1TV`Z5>;4OmDSnMv5 z?gIKrpZ>7BI1pYhnyzoH(2pj){O(JiGs};DN?LL#^%&g;2NG`lfX# zp>9iPQ#b1%jNK4M)I`W)Z3jv?jvG)wNQz~2{cj^^>D`ni?Kt?dDn8eXYoETU4mb5+ zH-15iLSN{f91y{+KbjM|!v|743|O&e-J(G^MnJlt*@eWs!Jq(4@Ix^?n;W{rANt*T zbcTwpczlt*iC5?vz$}i2g7vs+hKtF8Hido`!xdqv!X=2joq3Fw4B#LC3P$=Swh3)I zf?wjLFw}#_^>$Fo$DV=J!(MGGJF7uwKKp9AP*fY6OmXp*sSh-_ie}VjFN=tZ(9#h2t7EV%B)Uu@zUsCyblM zF=F6&j$G3>u}x@G9KYzZS#W%hKq2jI3?_ObppYcQrJ*b*3j_RAF7Niw+qWe(r zMYJ$6k$f>qUM~nD`X+Y3B3#5nJ3^aI;1VLRhPB#5O+qvPt?0R6y4DH;1vJoj*BiNJ>>wO>qrCkrw7$wpg*dFP5fI=b3sf)vz-)+ z31m{}j^fZAmHMMN33GN$=yw}1p1z5{Fd|4=gfAI6n1Na7j(ee>iuez;aC~rDovGw{$iu@b$)TD;E^x@-_U@U8t4C163h z0U1O8&7s+dHy_1N=pN`nc3q@q=CvZYl^kOMi4~=r8XN&Bion!7Q?X;P=9@7Q*Qi1ONL8 zff%3A&p49<0M8K99jr&-ykrMR!O5N;;%&f&t@aST(0*IYb1gaAs>670)nM%>f(OTyuBmZps}l6K zXy*P-MKty+ga<(nMFf8t(||L>456z;|ye9^7ppf4&w zl)d%_@J0D~WR8%qCV|s8&@(>fcxYSr#}4h))9kuj`^_0FJzxdM85~45!2iyCbXX<9 z(nw*2j&rHH`^xp&lD_hysL!!Ec(5;c0j++9Rw$QwHkavJyuoPh?fML-cjo4$y@{uA z%Vc>Wjk{Np3I;(XapQIe@IE=m(S-bZX%(40kn92IkOxqiSKJo+tv@Ni`L?21(_kmG8s+&vmZGw}sHuGB?tnJuc%Ud5(2rL*PQ<^A5X#m??H~R6y8-=}Ur&`g_WPs9 zC&Ww90y8H(pXHAxu?qNH1vFj49-OZ55Dv2)h%VHg!{0q+u9*#5ka<;k9zV9}Yp>mQ4XvB@TE|9oGI(yz;&GU# zf@|7q_f1+DZOC1?vfq)dy>P9_^rcn%v{j!*u?%K;iZ?v>gJAzeZ8b9;V-7sd3$yGj z3omzgqesVKTD__dP2W(bgZz;THQMA={KH$h>N0LzPEnVA#$}|2=4=V-r(hV#N` zoi%g&vPpQM5^QjQn!$$RU<9$jsWMEsryyM!42Vzvmk!_%Y`C6Xg?&@5FKW|Q@myVT zQRWQPntysCD=!Wr4a;*!@E6Mf&rS1($De<>DC=BluB&#k_m8=x)tekV@h)KX{t*g+ z3ZRgc*o=yy{F;jw!4b;n+jAkH7a^cnUB`CDe42^e=%=ONmA_>*FQ_3f37WR*7_Q3o!E*f^7^9TtII8@?OIYUVqm2vC#fyYP zI5z5CZ55w|VElUoe;w#f`=zAlDG$%c@rSQ}=N}*)w_f8~esk!@Ip(Q#J>8|+tLFj^oF8^PzVHOrvw$@|Q9}IYeI0zkHK~DM0>l}J-}_Igzv%w<@yzAIreAqpb~>0fLVwmfBvOEpr1EA=mdl1qUOaf{Sh_M zL%EZ-yk3B6T3C#)-L>66bL-NdKvJYa=+=jp<>A*TIojVDiJcnD!+8@n4&ur1JzaR; z_3)=5{g~PmA*7u$sZD#eRd3a|=sQq1!&lVp^BnSdx+k^aYaYI9_DB0}(i_h2ENJx> zyzR$nuKIEBq!>fZ0)G+SzP7S2h|PsH>xkW>P7MU;K~%FgTca7#Ti|25=Oni-TK3xD>T}q3E zH5KsBM^aVj+x7n7AZ+D9kY{5l$rJwlr^uKx&pv-qTd)rqb)U!O%a~LC69jElr1qNT z30W_X(^hT3B?DZ%F>WsPw=}*6pHN=3$6wSK94ygR^K85_UFa?lE8;skg)Nk=Ddo|D zZ^g@=hhl|(NxI`aDZcIYhF7gw^W`|#w!lGzjF?px^!f_8PRwPWrfbTa*F1}r{-5&Y80UCm zvf-n#09bIU?DMbj9sM;GQ^;W7HOrBReMv;tL)4-Lj#A~(MoX}$^bqE(Tn$-_#fmaH z%<4bE+;asWm$RS$f{70_kdaLHv+zN*;$Y7V&t_T$@5V0hhpC9Lxu&hCBV5x(=HYYH zXPkp~h6A}b*>suu2XlIpS3iwB^?dJM)a#A*-vm19?|RQ;%5}J`;N4rleD5t#^~PxY zChgUo-sr`f${kI3)8Z?5*EebBr1rqf9m`+G*s!GMJ0^9&+9I}0{2O-ra8_3+;--{z zWwHvY>HV|SG)|mmP(GY~M*b7p4o_FmMPW))p(p6sie-ledWWM*s~?TM7!XWJ?g;1PSH|Oid>`Xt zZ!(O;b3g4v_vHfIySEy%l?p^j(c?E#MDXtr!~w^`VXorU_K3~pq~-e$&TL@6&SlrZ zob++Z(g#9#_0=DsLvRjb{plUyye|fdQnUw7iH7)&B=HE=RZRWHVnYiIG@fYjeX>sq z;X8BvSZ44SZFe9<@1wFl{}<4Cl(CCT?+rHR-lAGLMO%IPPSHm(??Qgs z_!2{bv96IDD8kFFp=Oiho)Z7%bJTg-UC7RqwCNPv;xEE05cI^_*T{<7!}(tk+W>p& zFKFN+FrQ0~g9=TiQN?l#?5S8*>KlC*jVoO!tq|8;@Xv*R#fkqVR?)O#|C_tFfseAf z^2cZLMgj>>P*70NV55ar+nES$5Uev~MxMY#Lj%>;w=}JkRv|GjzEp+afadv3XO}JZ z-*&s*rN8d)w|4FJN4LMFYP;x`;c*xtYsR~ja^s{X!$H-0Y$DxR~nZcEiJ_Yv~QSa zc+$cx)A1C?@$;6eNd-<-^~;`=%zq1TzG{#!cNTCqco4Br?&~N!sQdpwgCz8&XJsPx zJ3bg8OvzqP2j=+wHMd;l?Q5cN^pH+s2@jvRc``ye3N zh~LduFa88j8~(KsuRkjZzpRs=pZ!FBR=g%ZzBlB@yIy{Nw_AQ*56RCjyX5C*v^ca8 zD`;nEBYdovl8EMOUq5>&`(daZ=2`s(w-T~ijAg+9)TqZpFU+zdXHrrA+^qU z?=X^sqy@Q&lFXpdXvUe8E{J)FCLc$uN21He3F=V{Ej;F{M=`VTsH;aYvhetzdK43@ z1FI;0w+*x2i6Q+by5VhS6VO)CVbWmwtEB11D@027-J5F8i)4mxyb>g|@fE(71A?>? zKi&6AGr`cHLovHX;c!1(Tl`iBD%SmzH&^?ymUH)`zw-BlM)*$kEXRCk!%sOM8j@6# z3};O+WHuKR?E(9S?_nv;-ic-68E>AVdnGP9^)`&wR>Q?JW`FooTT*YeM4dc!U)GB# zPuJc$h=U=If7W6-Q;)V~Ys+2&d+A1V$y`kMa@fQr?~_%z%%m2l?pQhdM`)b#Z8Hx! zH(r%hE&Dc)FU@yf`joBO{acr9Fot=w`+^=UIr;7z9f8eC0dTX&_q80~eG{UwRr4VD$KAwv{qgMB;1uj0_zmnkt0fvt?GyE)r@*IY^iU;B1Qgr>~ z@&|FNX|MZ@AeIh6FyksMXm8oiwK6u80VH!7cRXP(l+l_f{}_(Lmg9`^*w|fZjKO-S zJb{B%7SFH6V;IN$RBjyxiPcT`aLD}ywRpmoN#)kz%nwz7G(`3>Ln>kics$|W{gMlC zt`TdGHHIS$k>17k*uJ*ii0#TkBKC~JA%ZhtksbyByH1t6@PHKf;Ir}* zY?E99^)Ww7U~RlxK75`5PtRUBpI2`!bV@i=!jhEU1mKaIJXM=ih!6lP?d;#;XiGmM%(w23Fn704pUX0X{^mF9ATkTnSqKmp-aJoX}hC4m6s2N~iV!Ab`3 zX2HGK0apZoP*E8uXA(JJKQdAfnFOE|={p4aasUQ=90B$bWl&LZzXLI4S8 zN?0iw6^7R6O#nv%0bt=O{5XOY0mwRgvF@ul076A&pqxqM0B(Mki+T|P zP>S>=Kwl0JIUN;(n}{+*l_J1qKFQwx{INm+31>=JGPXAX&a(j+n(-WfA!`z#9jT&? zdJTb6K`p`oYV@HTj$lQAM!dKe162_KLPZgPr@uuBARIu2T`o#Z2tX;)mjHb^0CG2u z1J)8{RIUiX<8Z^ca_`?PFm+J;!udH2of6KJummieC<;D~GQtJSfeCp3(`*go3jPw# zl&~bXH~ts51}Hy2&DH=raG_JenG%*v=uLo&TLa{pPqQ^3o_|gWXG&Oddv5|<+#0Zv z0H0!OfbC!ClyIhmCAQuKxVSaoAOSwb*1#kofP^z8ESc1s02j9gib;S^u{Dq{1dwp1 zgeCdC32oya#2KUxJ;0cV?o{{)`1A&ywT}R4fzc0b2}MU6^0{CKk;sz1J7C z@`~k{onvMp^ES@yDt9I0LFRT?Hz;?&Fp`x5*gc9Y<(L-0EQwkxT4mEvWTXMNeT13R zkriDS05l0u%&KrWAtGzl1E>u0e9Yhi=EwHXh6iHez4Je;Uff-S z)~bfc?1vpB(?1yLrtSOJRzOsvP<1ow@8Nr5`*QviwSC(O2J`OiYx_!4)cBVb5HO&! zeR(H6RzSe1tH`M~#30lz#HqEcAc3fZ$f-h+|7oi#;M4#))d7O`!>P;r5Vcu)2BcOU zW)A;P#HkSj&E!-FOEpVFSA$be;W1GT*RXCGGQz3gc*UulW2sr%Ut6h(a_YraYJ?px z%&8YxsZo<_n23ifYWru@ram+sL`IF+ zw?_7o(OYFzP2*_=+;>#TLF;aX*ZD0W+4%Y_jypTUKHVU*Okl^6T>c z`4yDBa{St#waWFEPwQeD1ZxiYb!GqjDt(tA13=}$60H3itJx&#r`K4ukx^Im%czzs z$*29=syU?Tu|6_jK_Ec}U_hdGA)4Q1BV`Y`0gwO9JAhzR2N@M@?ax-t?nBh(!DG~Z zZB-kI`suY*i^-@>{W7W}rw>v8D{NJ+<$PM#Cc&wtymmx)Or4d94hbW=AFH-AYGMEGU5D8HD;e8@*aHE^b|Qw=HpJdT z5Dwsxmw{n}8c!SeLJl8!-E4Rp-*WI#*3wvTc_|;mOl2YA7Pz4;mfFH67?tY6=NT2x zwZ-DOwwRu4i^X$ov3Ra6UW^`DJQa9M{;mB-Jv|$>Wrch2t+4X5!*P!|Eazzl!Ao}2 zmDhC6^UZJ9eGhi&{+wQy3dKADm0xGPhu_vi5g$MQpKGy{9dq@I`1swi8Ev?Tk6*)u zeEc@ib8kGp(*kOXzEg|OIKQ)!(Q=S7+;~ZBb{?l|z&XMzh z8Jo{zGRtv7CgNON#@*8d%+5hW@-1r#eik=xIUIz39Wm^PXyxu&=4=I5(TL;4;`HGw zpIa+$@!q~LZ-f1=ostF1g`#K);>qAQT%P6>Em8 z{D9)ie!Nz+95rFqiR-YL2b05cEYp?GUCxTOsv1x@cTg5H*Ewm%c5av~j;o3o?bY%( z9f_+5g|9^6TN27$$#SBsGz7ghT<>q&ftJeZ&lrn&2OGm$olf6M9h9bdojgk(ze1rjHYA zYC=t$qcuSts+!p0;q7=UycIR!{_$8%&`)=1`(ri1zeUv~6Sa4xrai2wSI;z~Ce<@2 zO}asFYGzHOd3YOYB9)>z9birG#cINAL)G+G`U!gBLjBY}`2A$La6efFzn`)%+)vqq z-%mLg?x&o=?_ z7#OfAI$459p~yHYFREYMs;-LGyy&kNZFY5BIM`@IU~; zW6cOYi~sT*1kX4SEG`XpmrvgDS$vsrA^W7Eeq!4}-2Ag}0t0Kq+S#{!4&igRBwK@9 z%R&u@W?PQqPNT|q(r~>@<*6Hj-S`dxH&KP#aQRNZ`&QTww*;8Qf^Zg%WS_E&!OO+y@!KK zRIyFhMT%`78nm~492_5(LJ198!{_neLp2yGXHP6|THi4f3y zs&ac2p_78pO4Vc}L=id(gvK8TBG~)BO3kR;6-DR_5o*9)du<;EGuk>L2<;Mt&M1Tq z?%fwO6hgbA2%Q-koYHm@myhjWp@L9G_;fHMd`1vT7lhIUp>%~%dLlyG1fdgx&`Kh7 zj0kOuB6LC!3Pcdv7Dea;5Sn-ZZJxMyuSy+JxigATr`bc+w)cV~+FBwA?G%JMV?FeD z3Zb1*ggS?!M?VVM!<(ZBjR+qLj$jX?hcX4BOhG79A(WYj&{jdHLl9a;ggzodTcZed z2tv&fgtkTz>HtFa1LUf`hg9mA${kUJPMbZH(RL&_rtM$^p&f$I=~xf_R3Wq@iqPqy z=+VQ$DdAugp)p~U5&lpR$`*vO1)*$(P!awvLqJI2guR>|UIJWUMm z5`;zzLZbzt(F&o_i3sf!ggOPGW+K!=gmy*|>J)?=5rlR|5$Xg&83)j*8G8??RD0#N zC_*R99va{FE~M6m2twNgp%bwl`mI7}TNI%aL(!v~FlLTL5#o5Vhu;>2#tK4X1);GD zp|Obw?GS`c3qtKg2p6?JRkC4UeL;<4@IT9un@!F|^ z2o6L$aozDAP7mT$6c-=wNz_vS%|yPZD&v$DV6*NSWQ~RCRm3&>nuG=5TFfUcNUc~N z+zS8fV14DztJ4lw(5wh%vkma#2FIkYv zxoezqtyqqWg~Od>i-f7(hH%YFQd1J5M$n~A^`thKzhVSos<$EB9=!NeZ)davGs2ym z>XBPkky~s7;+ERW;+A+7y^^Ev7_q+^CyeBl0J#O0_W-zM`DJlSoT9H-MQ%AovLsA9 z!7a@ZZuz9sPLo@r)6NLD^gr!f7v+{Q;SV_NB)2q?TZ#w7Eh{gJTjI@y0J-I=H5bS& z&E%HS0ddQ!%i@+eqobmU+;W24k}w4Zx8y{)<&#cT)!fg{|~{}i}0$}JPaJ24I3 zMQ&*)w^R&>TLPEGE%ByH^HpuSfGiWpEVTn-mZr;MmN++rIL zvlL$zv&7pj6`uy%h5nn1aHL|yfAg!>AN7cz1pPMQCqbW0{Lo($Kl_7c%co-NHh|wV z!431kXyGsv{fye+l)dW^!6v(X?-oR`(LQnSPDIL^gX8zU2Wu&Shatf+*eJ1wH!y2X zaKzr@u(`J}yCayfw^KH%@k(jXx;KouTQl}_T7ut)!zQNvClEpL+`s-loHY?}AAd3S z@!_e7fcyCH)5O;MR1`QlBVGAvI-8^Z74d$W&mV~SX$HHVN%VP$TcC>b&veegr4(Ot zK7f-L9XuB@b`oQb920rRbr$+Lh|?y#GkL-#E=S?XjEH%BxAi)S@rcK_u+K@1$2`8L z`<%ph+T&Z)=Oo7S9^btV-+g-Yc*blT&&bmqi+%S!7zK_5kf%GA`tF+_1&#)gr#n{o z?t3;091Gz7;G%e+iACs6w!aoTPDlaG7twcO5qu{W(RX4IeJ2*tcOqOq`KM{{owz=p zaxo{@nv<1XDK%f9PTVwOIRe~Z1Krh zsC+V}^9NYNH6wyGqJ6QZ`MRJIz8b(fK&-L!R>P$?vlZ~w0M-FEK@y@^(^umT`fA(( zUkyneMPCgQYxrtNU#G%XV-$QfOswgvv7i#Z8j-&Kkt!Cx8fJa))kuY}#$@a*N3b4+ zJ?Bx%SL4ZCan^81SR~@BZ4)eeX*u>x}Xvc9l*MoSYr#VhAV4k zE8x%ptee>cNr+-ihmOf~=$H(L4oMwHhYk~KICMx~XThOk95$p)thutbpb`!pk-q-9 zDi#hMW_@tz$byT(-PnMRU_A~S)8mvw$CJ6)($^9eNjO`)I~FSMj_LdX)^PHOV2x;B ztZ95=q!H^0L>lX6HFWwg8v&;eAZ=j_Bq544oj&fS)5qO#`jFIH>GWYD4W|$3>QQju zxD`$xCen2JfT)Od_5W7I!s)}T4^AI^heJ7nG>7=D%IV|DT=DvFNLVD{Z1DhDs60TX z^9M-75hQ{%qJ5F3X^DX*U7bU$u@_gvWihiA@C*UgIc$O?M6sr4NGd%;QsEgQsdvyb z#Kan&A=1_3&~10XGsMK2%VH2Bv9A6%RV+M1%=+LNG7g?09Lf=_ImGW!o*_@>iff2N z!XgQ0i<`(o$#fqvv4;DI^!2T9ADImI5ff{=k3fjT`uaaqv2Y(T>x28qt#BXVP>x{D zAwF5Tk35+x{v!?vizJ*az9b8kFUfTN0Bg9EM6gD*FV?gSG0+6-QeqtU^`19yd>m^Ud^#9}dXD=we5d zB&J(VU$Vrh^(RV6mVu~sIM{e{;dKLhAWpdhT69mMh6m_A7R3&{yE3!pTl?Y zbPXcigbYX40!Q!&9Z^&o{Bu+q{BvNF1&_!Z@Xs-!S(1+rVzGUiruZaLAhf6m3%0Cq+@Fbn=USOXxpG?QDJ2f{6m+RNgWICJAF zUnBroCV-rG4un@6D=&*z;;fO1X7b7@vP8lf0(b@8W6lbqymD!42qv#Y*AODS(*GL5 zx+t%VgLe+r5XdVzy)j z&gr!Z0cJt}C}x3k4ul%@$fd19n9LGgg@`aq|Emz4QD(UV&N*0xAhVQ`SxN`OESAgS zl{kB6zT>L4cR-aVYQZdU&KZCf!Y1+MXrVZJr=pb1(oSYcSjGUepnnvzz&XccmUv4? zrCw|q!(^7|GDd`15)7IITSnGKSQ(Zu*2OJjfI3w)UEoMN0Mo@WXr{|mzRp3Wq3HsL zi-9oBpqVaJE3bCbrHZBtTq6g-Ed_&Sx?JTeCE%9NgIR0?;gy0xGhM2huXfX=ilz&^ z+y=rcgJ!y1-775=EHquVU zZtZ}WWzbBQs!xUKLf@R1V!k=bkwo|3@tggxDj%IA%17sz^3gf1e00uFods7Ap1TI; z5Bl%G-Glx+aPWZt&UyInoQMC;dHC;ahW}0w{ySm%@7xXloiP1(Cc}RxOlOZf;J*{5 z|IV%O-?WccqOYff+!{CDnv{|>S{f?4q2;T|boDGjE=e`g&0cSgZ~ zXA%8(vf#h7i2gg=Qe8ym$I&+Bsjasf zJ&iM-94lFd5VB{y(Sy`%TnFp0{MGkg&z1LcV(+)azh9yo=R&-5y|LiQ(a0lhc?id5 zMb1m%VQfD}1Dy}}Q+6PO1&&2?oyHF5oI>N&T-`X261MBc9=YlGf!yR7IWFHb^Nkrf z-fb2f#xl;j(Rd)YXj!MWv;!~C^rzhE@h_gBXY9s(^k3G!UH51&Phj!?=|FPP#M6b| z^SFQd=Xl`Nxc&!lDS3zPJ=CQeLuUG1U+9`?xW0(Hs(0xV&w8wFy7$8_-P@C1c|BwH zfbN@Q)s0C>yntGt(pA|eckOzNFzz!ivVIgAhuh{0{SV(1Al(|>^HB{b@1B60qG#~B z=ovW-Y`XW{J1b!TwU#A4ZI3w^;U032@c~+c3%}Dsf5U5&jorGpIe-iA3#|>P zvfA%7_PdM)^L77=6IAxl2lH>Tv{a&(mh&F--FUJ-GQZ`U07%o~?(6lX8AGOnP9L-W zk6X@%6RuyLw_NDaavkbb{$kEK9{;=v(vQA-=j+DFb*{7tXm!9^=+8_+|Kw}0=;)uf z^4TN2^xfX$?M~Oczr=Ir8qnYyVDn|$sx#MF@tmYBdj!wAuOP>yJa9drYwLBRpfvPP zNNOw)qW{T(_i=4{=ntz-_xK8)^mdKamcEUOyj?lkQqtAiHCkIX4iI0mw%%}Cd<7}| zP4N|^^EcgBkjdXnUqLp1vwa04`8!hTeaL7+cdea=`=)jOQ|Wpm%0aUlUDhs%cs~F` zt=A{ETbm+Rp6j3{uRPyoZ1t`I*G(HfWliPD7CXS`?@MfiuV6GAGul@$mcL_L=1DOQ z%Uce%W8#|X+w6hPHP-4Z=|IpczX8^_R*b}vv z+DD?Rc_VhzAG7`thSWzm$7f27Ozz-X86v9Ya5;O7HSs}CG_wa5Op%XgdG2s({*PHmI3e)Dj*@wVF@ zbk=XlaNBpejNDwOeVu!JBa%|x)_s5>X&7?2tsgs$MpyFV7G!YR4z?c5Z%{k`!hpEbP$ z7;9n<>&GtR0Bb_Joh?B{Yn;)F-1csl^`P5&NL6$K6{S0k&2D3-S&`G&<+N{RMQ(c| zD@u3UcRI(TeAcuHKvmOb;N&)TshW1W6;5trPdrX%UDm^H>p@jj2dc`1oOK&p%&LsH zo%a2#iM0E6Zl>G5WjslPdKwhzm`;S=R@H2A5xhCgZ8XJW)a9}^yRFTrW~AHNj%u=< zM$jGYB&Tt}sXEE2NQc|l*Ez>aFFCF60H`nu3P#dP$lxY;bDGQ87{kckjUGZj5h0hA zv>WL*_B*4rGaB6{LI;S@NT+?LOJU@+ZX$)q48%y$jmfHuTt^Rs*6TD?OWW68JyOA0IHgH2-^wmkin^FXKatd=Nx(meWWTP(~Wf- zo1Jk?x67?~!DSbW#yaiqxfCxrtqlOGiZ&A^VLGHMx*6-^5$Zzspp)1`F6p71iw&c1 z=jIIJILf{FILaNgaWvuL<7mPlj-%TzHjZu|v~gs+_&Bl+-Z+|cv2iqM(8f{z#m7

w{vq{$+@{0iXtf1A=?$wXl!CSS_ra83!&khMmVv7F4aKQK0L5} z6BtktLcmZLqJdXL5wd;I{nJ1TvwbH9NWt6LLeZdX;ZC;j3TaTbF&i{YiMFw0Ks2#0HAWCJBWLuaL?{8%LvwnPwBA!Usgbd^S)t zJ1^E1R2ND#aG5gKofJ&LeRn#Gy@sNlrrDW9ZQKw z`kABn3Ro6sT`ma-N?f8GOkoRYlk_VH2g@emIGKPpf*hA53Dem^nlcxWgo9zquzk0a zh@i$Lio#4bQH-GeMd9EWL2RTAZH$TQfr-Lwwve_{zoKw3Y$vvE5=l5AO2UDP!jWvC zSY7>#!ojh+(8hc;@%HFY8JH*>%?66G)}JUG6k`pon??%SqRktqC>+ZM(#*SvC>#_s z&v$z+8VFKcf+U0xVe_V4Toew1aaj9eGS1;Xe44A`Snq&A$SX*aha^9il6-%9GS)eg zvCff3+`|7 zt5V*Ca3g{ZzeTX^MjTaM-pJb$HsYl6C!1pSFJ8I{|MRjDEX?6`8V3-2+JBc?tXN5}LharOH3h zmM;mY`~z+Ll4g~Epd?>n5%wA|*_Y&~{Qb3G^^V-ny~LriqUk29u>)|xetDP5RlcND z=-fBKD{atD%J(Uq$2cEw}-={BdwX`2tDDWxBXYNh_~$ zFcDXql)qRC5bg!zg==99fW@?7aIp?9+Q~MM0r%zP*ij1Z*nzAMwkBhJUH2ZVb+@|$TG8dPut#(u&=1N(T%gQ?*cMfq{&%wX~z0YBtPs~(+Ph(1a(rrLI zw0*!fV2#yn-^4cX9jxc!zK6CW&hc1BsiLPA39e)hXJP1!ssmWOWw~f32yu`^AkrWNUU6H|F%@0KY8eky_zMVi#%VnZ z0|}V0X)={i4KiS2aqAQnk_h{qsw1%0q#86H>yG{ z_W!{Y=lBLJ^fG=f1)Y%X=9)RWO7Q{~bg^`c*AsXFFT1Qqv3`z9xelD+9K6WlvAJ7d^Uf^P`eII*(uVDF|-F3u09xMN(;OSxLiIMCGunzMnPQaQk z7I&G`q=mc(db_MGSYAg%*k&{YgB`5kvYzFtl@)YWtl%PEfEzdgnb-m>17pRPH4|g51>3i{thgDg;%u=jx})Mfpwb!ZIhZNHV%Jb- zWH7Kb91JL5@c~wc-HHHM&=NjykKY6!*kCO4aG~178(hE+5GKem5f>)lQkXS_RrpvB z1h8j_C!iU03KLXgeL!)+;iyD7OA7Rn2#4Y%LKh^$!&pncG?BnPo4z99?B$At+)p49 zINs5e!4V0Vjr1=PcEyW??!gubx04t86$y@bZip8NW>1(R0Rztz3D6lPH#A3OLN~dA z+dK&};c%QxI7^uTC39&qfjb<1WJ334%7jUuKqhb)4VFyEznDxo5HAzX4XR9-b`hCS z8qWpsGQsQtQzk(AL}h}l_CLKa{4mqmfSZZP5=uCb6%qu4G7=Ka17#YpQo&bQ1f(&n z0c8l7Hh@z9EHkG1p}dvGk0^Un(TkEd5kVfM+f|`kqbi*Zjj3~`$pJI9c$@<7qr0Pn zG^VnZx;8bnTa>hFYMg?0#&mOR5Gs`%ZL6t>Ra-gY)M!&}rQTJg#*HtfZ4>pZ(y=U5 znrf<677Dd08r4*$N{_P4m=1*+RH{>HO;ckkZE3cX8$qHZRgoK`x{>XS=|!ay0fU{0 zjnQ{vny`-&j52#v_le#!Ri4szs+n<`E~ez73Qlxew3VhtQ>`TDDy~(nq(!TWjI(AV zESjLN29HOneFmLJsZj=>M{mCpJQ^qW2aQJ|#Rr{7DVYbEN2gsHkE#VDqdj?uEE#?B z1*8Ay7}$c*rO#jC;dv34o#1ojsT=|maydHumsPR-(ANH-Q{Wczb_lX z*K!a%YHK+3oTU--+wcD2)t-h!Pg&k>IP_i1uHf15tm*lYB>B&%vb^FG*wk_L*+X|m;o{iK12NmWLd5JlrMGkqFZ4gZttgqTNf-jj9TC}-A z={%O46x`5u2G*-me9Q|^CtQ|@CP4i$5i?q5gks&?u%^(`4q?J%YC;qRADvARZ3vvY zij}zG8^fesYEsKL(xfF(^(Yl%#>+-vS}RpY6(tk-4jREJEi3L|PIFSrikXZ?Y=Pp$ zBj&8;%vMPzW*(;0Co?MCP5sF?JB(w%a$)-D*v|hKK;d5z1jQGi7ZK_x?gmz^gg{SOwzLlmG+hDrT3K% zW@*y`4otvQbo=+6F>riurQ(Q2kM_J$>#?3!(^#pM zG=TL94Ufl~9CI!!B2+3DJulVLzbP_xHLHthdXWU#9ORggDx|6QDF(V!zbgYZ*6-%1 zZwW)CV$>@;;1Y*DCaJ_*S+LUampklDyCK^37asO4;dcgW*tdk?Y#15#6VUbD|3$+d z6|Z z>cKU@BJ()>S(2&l%?hdMV_H5=!N=+Lh+gO0=GcxK)^VCVPKieqc%1I$`$})Ka#Ll; zjoYZIj?>a{8ahrn$3`gEnNfQ}Id3Ht`l9#5l{p|QxX#NQ zq;+)a$}}$IMCY!|VNPC|hLX9UODIZ?(}Qs;Fi!h{)JpNilwL&NnFVvf)-0HFShHZN zxKFCx%!2<4OGl@&tei&cVDhx7n51Y?N^H~M@U%Itm7)imr$31`yG7ldH1t~c9-AFbJ*`|;)J-F6XN!UwJ+wUlIM-&yqIcZ*i`SN+0FF%g?@@dYOk8!?y zg!AR|m@m8So%n?#Au0Z#j)U0bqns||0Kk)SF}pdB*)!bFHgO}k)w*1=^i=2OGm_qL zxCS$6SMopPl6X*`4F%7)hsHD1Ij`$yh@gF`+LjrIXDoaf}) ze%$RJI~BXasA4B}d|%C7ipF3`m@ge2gY&wMG#q}uy?Ypny>o_t+{xWINe zj_h|qO$Rq)vYq^c+&XE}$96W>EMSR%8YvJe`-GJm4lls88=bRK+R?yvkW*g7+?(+(G$h4_9==6!O4+j~ z4w_T}r<@MI%_Jd;$tkF}`8ohU$2qug3LxMVgrOvG1dpvVIR!h)q#Id9`bTjJ`sbg~ z7A$k~9nge~vX&%4sd?z)@rqH(a!wp3O_1rNFbb2<67-Jn$+y@&fK7xvmNEc9?;t#i zc8tX7dQnEfjxtbzsy~kWQ?PMNqGR;DChd5KRe)iIPY~@!Lo)5?U<@AcN!bL&CrCM= z_=HJl2y79Qx`j0!L_;`s&^MT;6N0`$*n*a1j)~(FT1Wdg{48uNBG03!!sE1D5u5o|IG9a7*R zxCtzRDOzvg@;D~!7Z5Hrn6|Tp7Z)za!n-b4xL^u@bqJSZnA2YY;c_gzlXQ$1F5UlK z!o_S$Ot?@{v2_CzE-zwk-&eRSzyzOscX8ozBz)kqg$ri;SA%dl5{A3WpbM8H;rB?z zc;RyHzeBi~?T8AOBUl``1mW^;wUBPg8+S7HsJX7^h}kS)wU|IjG*n`8gtbNO6F$V7 zCK0nFCNwzVcSS9cL@OlG0ErnNw?y zWEL42FO2^cJg8o0ac%GRT-{gm;9pxROgKEp9#|Xa(K2s2o)glY zZ;C0j+|Z5XwfK2xtv!Il)nd(CF6DhVwmN)s5%KPz!%KLtNc}FS+ z+CI=vM{)7=v!NtKzb`xxM?WGMdJ?4j6JsX*#Pb{zbXOZ&W`&wLi0hTwG z_uJ|} zNY)!?fUY=W?Sp(o(;3a!iC7L}j=C?$o&RUxptLi(vGc9rNOEbbvB|pLZESRUn};}2 zpljk9r_tn@vQB#`14TM(yOW+N&>J06rnbS*@%82g@4-LUrR#p(ij(827Rae_Txi3o zaoO7HFMAIqIqE8`+Ok!EL4IgAyGW-kg~neBjg5N!@tnf?)(H-6b*Ecfy|=LbC@@Gz zbek*VJ>cm#qE(fz;Mcyv*y62E_xMu2>@iYoQ?^#NwLEE_+vdC8D7NBYy&*hU&-!u8923sd z{)WhDf7WozJp!x+8kRQ@?ZNqTI?qr1TTH6ZgK8jT85F;2=QZUhhYv zb>9QFTFv3{l}~W?>@Y&Qw;;!={eD*Vy!t@8u|{8Vz9($4Jo8Qa);A!aEc1+6*}AXF z){1?LDw{oE)E9c!S#f9|b}6jd>N&%*oq1pDsl%_gE4w;XUv{i!pKhGMd3&f66-e=f z2EcTqABvr92>-{B@phrnik>dGR<93bpVt;xr`>PK_l(VPFn~-8+x;cJ&J0Y zwACm!ui$#OeZ96ifJ}HJpsn`g4$ z{j{r}^*C@aTl;;%XnWH(LG9S4~@5kYceIYqZrV*RD&s*78<1Q!!wg)4knD{aZY0t0$>6oL|SZ3?UDa ztE;0)*Yr;MdNk?U-br7HCgE(m!~#DPNs3f*HmzFIR+kK4S1{b7t3Jb{wyr?4;?Xl@ zx3=u(Af)~lO5$Hmp}#-_VGsqjHq4~71!c8}r7 zo#635pIv0^)QxtYp_hZ94LCllDfGLn*&gFzY|;tG`dvI_FC`ax+(VfXj8nk6?^^Ui zp?xl1fQ?m>j_7D~54yz14m#v9+In_4Yu%c)=8O0lZmpSspDb(5c>H8qYi_{LFl)`V z_!(-g$;3~FwI&rm=~f+G>Co@IR`;&W#`wgD1+NtvU&9ybb8zI}oh4m(=+dXG)t1#j zTJVGR9FLEP8Leak8yO;B_kPgs^d8oV{B!cMi~JsYcG0rE+R|S_rWEfY`&?d9xLQZ9_x4Tzm|YKt;XYKsc+S$kXkJZ)zI+I23y`n!ex zk~1J{*P9gEcr)oOMxOo*KL1^qGGd;#aL%>a-ue{0)ih6Aga_Tb1}7PYQ>wqfgWy(= z9ATStXSRQ~)idSYsv7~AG{Rx4z7~)qLNWl!9AWd|J#>gos2T>n*+)PY`?u`R^eD}t z>ltTOPyj=SIY1bUn{83lMuYhkYO@d{YF41;$#n>BPHktB;I;@{1>9zJ2}(H7G)Zhx z6E}SCzVP7`2e83gYk}^f6rLRm+|H&{7w{~-)tS~j&m@PlE;GqL9r*38y4?h(m_VSo zyXtxXM_Tjd5I8a^X5dk{-Hi5U+dC7q|x!%3~% zQ5)>IKdwu%yp~k`ANCFN3{Q5r_1E@5%eQ22-yA0`Kf~wVz{hG6{;+CGd8R7>;4Sc& ztzZNwo2)JSBic@AlC9txfh_%36OwEzxE7EUZRt-;NQ$jsBp|8U(w9w0s;yuYAZgXl zvWzra!F6~VQvE$X4Y3tmkEitNhxwFlD;SNZjOzRNlwm6vgQua@4n7UF72JTQVbytj z8fGiF5l@-bxqQmB6^zAGR`qp!%CZ%V!;@B%&ZptFf}2eC!w^@@cws&i#^We6*$@oL zQKr384l0rQ4riX#S(n79)0yW)e7Y4Cfj~Wqj?N?~ndtzNBa^k4L*|PG$ej#uGQc3! zRuk+3I0fJofI+XfOt2f^RDe?fPQ&;&!S@2325=g{L$swoFu^kb9s=+XfYY_5H6~aG zI33`0fHSnEkDA~@fHMHj0C=djbcP9@3Gh&WhXOoITWT}Gvj83j@GyWgwWVWBum|8w zfHMKk(v~Kf;39yt0L}tf)0VY@)1(7HlluT3-m*t{?|BGd=>T*GM!If<6UBiV|C9uA zG;jGi-c^GLV@Mql`>v|Mit;fQlUNtyPSj;>SqPmC2sv94z{@R|-9Qq(XWwAo)-nvI z#d?fAb{sL=vKMhN<62%vk#FG5o|a!A7NeYcVJ9ZY}=>VGJ#XL{-X zP94ZX|C6_%`k^0`>VG)*rnjid;sjBYbS^&-3)Nfa9(KJlAziDCuBC%WPi#SVy1 z{A?^SQdu~ydIX^N4|lGcL0bSe${~)z`_Z%+v<5bMrfk!eg+!vmba{E0sQK@=i<&P2 z)u6X^s5P9I3pIZTaOei8`D|gDUTWTBbQKwmQ1kRB8ayrTF*-fQnL-1CsSzR;Djh~c zoF;#uE6#MFqMy=OvxII%N~aeYZR}rYv^mu2A3~=ef=+kkQ>RaXPTxkPpbb6LhOhy( zrT0U{(^3>eq(?Cc_=6cx5~R>qd#J0mmyaT2p?~pcQmSxDSE2ve^g@53)v2vmTR0`` z&{j0M(hq1$=Yy&qqp`?1iFprBO;2-ZKW;3X_!kV!H0{Urj-_vFOI^sLOo#gryMR^| z*!?sh)jsq7tj|M^0e!sUBF*#~QJUr5&tO%uPvzajGdY08h)r+XID|%9@ zXE|X|gFi=1&wF7k#_=>-7X`K#Zq5d)RNWy-j=UE}N|Mv|!u875*j9B7k}^l+d6<%! z?X-EW2aiCeu=9F$U~U9;j3I|p%-2{w*0Y#Ka{Bjd;wj-nO?8Y@!Y6iEH=1+AYtGs_JK@>|A_v>WcYXL2=(gM<$UX* z;nx2JiL?U}M~_&rEjvW0!mM=WjbLv(>ww||>;q`&k&sYC5L#$9v{11XNl?|`kfmoi z^Fh*dBqbp!2}#h|-O1Y0_sk?{quJ0##mPv5^6rL4T5BdjBh7|JDo#NXw0JkP(racC zw9;&7rQ%d1L7l_qT?NmGjNf=LLpa;w(XsFrH zP{rv;g4XYbmYQZJK}*esmMYFb5=?+@XsYpM5;WCpXsY6&NP<1k4Q-WXCP7=xhPEmm zh9npV-OyOACKaKvW7CskoW9T6MRSs zC>5l*j81;!{YR=4s1q*SI47QR)m`iKehf|V9n7y>#zAP3Ve3+c^-&~hA~{W^^-&|3 zNSaA~ln5r0W>Oy&f{CP=)JK6}BB_$%)CVS#v&@O4C=WcE6G^C!quR2AnBC}a0z3X; zA~_cm$)lJ^Zp1{g1QSX8PuZ%y)F9KL^UyG~T|LH8j~`c%81K32=H!mX8z~gO5bBw^ zg`6vba=fX5c1cf@$2jgWT7;aOl6enm6vf%-54@`_`xXVKzZwVT`M+l^wC=NSz%s%y zUS{F7Aj#3m`yxi8eq0wpjhssmu1n~G($jq-F*!YeeiM`4Rd**O08M(_1S00V9%s(0 z^+BnMS5GW2^1FM8hPHaH(Cm;5_6(li=8b1gouN1g10)1jHMFBwNWf0ATpP zt^mol63kQ2V$lD+0;Jfm;Nv}up>8NZs;y)c0BO}P;QcgP$#r-bQeBRRA+{1+zi~Fb zx(pBLwvy3!$f%x+hYVZE7(5KE*6}dZR&oO#hE-3+!!TRPjd;kc{sJB{Z6#yzkX1b% z4_UU7ad;SBJrWPYZ6!D1L950>(_GC~aD^H?}P=f_S*5<4uB|yJCQ-av@=0cp7 zU~!EU9BV@J^5#O4mSDO_GDf7$oq2O1L`%SWq-DD)GA8BCh5Rhxv=Rh;*Mv^an+wrd zk_srqW`ha+Qr=uh&5|@gAu)erLcg3h7Xq_n2%yxqCNw{9E@Wj%I-rn~FPYFOd2=Bq zOELh3h{VBj9G3Cp3u~!S?u@+332} z)UeH6g%cZG)+62{U2^eD2eKoMTR7CLH#2|AQQX2oqh98*SZ{NK0hEIh0CZ1J{RtZzH}*JcZc+-A0)o{-O1I}Wmf7=tS3KHg&j+6*;r9z9xAdYM3Hqy71`fn z8AvIzgIr2VRAlu4aXN(2wIxBBef}cKY`JbUQhB-Rz)8@#7{w`EBLwMX5#Ttdd=oJB zgY_=D+1ay=y#m%#x|b}B-47$6dkrAkaxWvP6)O3KU^6B8<*5))OKz4OJy1oKf$R1NE$ zCnhE&55z>((B64sVnXsjOjKn^p8C)<-5N&Yqhey0p3z7#QI)RaxK(RYT|s)Gb&GD@ ztozZkGOZSpv#(U29S|)lBOs2lM-Z>XkC&kJl@clwO%7#kjEVxUJ=V2(PF_%0oh5i8K~a zp&)q_vQxPI0NV%I0j>wVC_2fTLT`)9cXA4zKLPAR2TxGmw?koxS5cTg!DSo(CdQT;V~1YAR(j9 zH2S(=dfaIy+=Yapb*2H>1?%GmGhr$chSizIU>6J!tC=tj37K`KVb}#5M6H?5$-Ns1 zS#_q72v%JBHhU15e+3D{>r8`@n`5ilgWBqQ#T2P?Yqo-$TmF}VrNKI})wwNL1;kXV ziT-evc&yss+=C>S6W`h^c*QkAFrsOtQ)un47`L zU=d6)+(>6!SLmCQj^8=M5uDH`c3YbYCz@A{RjyIX`a8XA(u;hV7>$`<#?pRU>%YQI z>a0(x`OLBn)&HoiejvNJ?7y_pbEtJi|3S-1@S)e~GK1j5MdumHsinAImni zctjK$TMHZ4awX9BQaeJdtCVlR35uguJj+v353J|Fn~0MXx27OzFE)YlE!fj3PxVTA zz6FrB9fjU{j>a{(4eQ3|@M+$2(fxFmcZ31Xoy@o31j~F2oCVqh)P_jIyaKJe3!H0c?SWiO=QYGcEP4|YdHzQjzXg^B8p^yjG zC$>98I8ICDR#v`c51)9bDNei0w>0x<8=j8vX?r9mP(^Jf4chi-%Wj9VU}D)yhSOIu zT~0=2WUWGmJ4%9X{mHeUZ!f}r0|a8*3JnkfWR=1T>ks#$ZvnCudQaLw()sd+i73hj zJ<9L+5)DuHJj5W1ejjIcUP>Gv8mWjdSwky`i|Itq1Q2==6Twwhn|*GgL!4}ADXG0p-Aj3%N=v8piC9=!4{vtz{eWiPd=OlHK8M@|tCA`XNJ zg?A{s5NX3fx8+@E{_=h*zgAU_sQuMA~AJ7WOB`H#+90%xU7hDLR@C5+v2W!`MSotwI=u?I)}xhvoA8Taj-M+4$Hi ziz6{h@ddJ!CT6LKW)V(_jf+BWpuN!BY~%Qd^215(rf#FXK9uSWq#B}eWEIZ&h7I_I z7K%xwGA{*y%+@=9eRGQLpOcg=YgbO3NVPQtJ3hzhZO;jP;ezjDj0_2_W%yJ|=^MHaGsM2>`YRiCZ%cON3l!BhePTHDG%`EAXD!u^*5Qfku`CM&UKjdh z7fpilb`+QL6`hVeD59#lHSa?C%ez9`(KNn@cg`ffL-n)RCQWvr|3|e{p#R-k`B$46 zexse?PzK+#F)VX1{C+XR%F>f-6WnVzVaemoe9~3_-*7bzAO=^{RrsL`AI7V4kKCnW zEr6D|_oHl|cO`TAe9Yy+bO7@qtj%;5JegEIJ~WLsJ51MfLuK&grSJoYqv|9-^%VPsMyla4gB%phtMTi54m z_xr~tmu+2alqZ*UAk=~#ZB2+}EWQrVjK$aL*0*)cWhZXbmOh6XJjT|tgNxJ4GbEgC zm7lLC$$L8^7B-x{5+Rd_D$q>4w0Y2borT`AwORqDnH*GCO_ZJl%J=vLXTsXD2Y?eq8l6=efzoBSe6-ZPy|p-@cE}HD*=4jJ zOShQckaOy`7H&UW*z=c$`g1@0OO#XA2&bfhQ_>e(%6?H}Y1>ftiv^apZDqfB+|stU z>=%z%+TJhw#av6_`2+6f54fK{;C}vq z`}q^){<3X&%GQ^3ThI&IOMVQ&xK7rW93{N0W078dvxMbV`MDn>60jM`Wham5$=lM( zPVUf?598;wo*cx_c}H>w?t7Q7Fu;B~2F`CE(c2D|{q{w@t-kEHMS5EY28+(2^oYLi zP}#q~sP9`-_U}ddz7qn+-~#-xz}E`=q`)!U0DoWL4FW$Ua121ej|e;{@Y4dvkOce# zfv*#Ir@(g!{6m2^3j7S1S?91t{^qhDzNqgDl>HFxX%{#KGT;XVUN7(tfo~J|A%U+E z_z4;8w=#7_Dyx)C`%Vh{9Vz;Kfj3Cer$k14 zPKt(9K+#8}=%5sRy0s#%>%?A=awI26!}2BPzS9DSL;*@42z;HC-zg*8xe5fuc`|#}!KGFLC_wY0^KyEnRSf7IIw)Ep!F+=Roz(i3J(+ zwu%jl&2SlofAZAGcY3>jgYUxlPH0`uDH!4Mo!&V0on8u-WZq(Zy78X)Xw-*h zzlBf3U@7x+J$}1IY}EI9ub^OluQwf~f91_Ds1|)6rAv#jSrytb1r;C_Go&|aq0ubz zOeNx48C?`lRK@)4vqe#MA#l)S&2p z@6B=auLXHROYwogTa3l%zx9m^&_BL>ORw^~ejO?QgPY>Y53u}Pmd{wM{HGGiztH3b zFn(r5&#BYSIfcfixXoWUPQJo#r#ffMu~yG6!cOPXv8u96WGbWba@@`MT; ze1ERMgJ5&UdFFuA`=RDB&W4Ir>C0$e=*H1m{z=nj`Cqu(QiKm`d_Ho$XJWU<@5{$9 z3mq=Oqt8nc;yXSYK!w&u&&2aZ){l#<=UcX5POs*-sXv98AFV(6BK0?oX6tJ_f3@y^ zDZXgk|0H!U1s42%u;pP{Aih~WtIx6GzYkS|8h#NU;giJFU;lmdd(H7>vf{AuA^!Y< zU4XsK(DPtKE&zY+z)p~K&lw||iM_T6~f9%#jy{6N|h8vZLR zHuy(9^8|mQP3Xec(rCgrzaQ?AYE?5>yIPugByN3!`pIb0lV6b@GB)UMHKPaU_ow}^ zUOuM!SH@Rwz}mOA>>m;5_lW;OY%y3Oo`&#JmjZmRRHMJqM{qs-0~td1uOKT4JAcqw zFvnVRU8wL(D&?-ZP6S@&dPeBZCS>acC1d#iOm@O&h}?vR%VJ7yNWXa)Sc^}-l-x!y ztK?s+59RdzzFhbInYe+sLkOK;1IG3Z;&u;DkJ!g#C7{6s=8Y#!bZbU8i-^ft(6m=o*q!H>53)nUZf3CFUY zIu(bLLUlerzT6I(@kK-MH9OMzu=5e;qom(M_J~x#6X+JvXJ89OzvH11Hx08C8pjLa zjHoU9HY%|PP-^vWu<1E6*9h5G@Eczpo`BUq187dJ)wbeZ1xczl1d?Q1;Z_jrEmwh0 z1e$DH;Zjg+EI$%~rr1^#C@6N7XGEZ>wiVMA6kE#n2sF*M!l|IxPrfk%9b#MIP*7|p zr$(UZwiWj%D0Y(DFm$C28MYN)QBZ6n?}Wp=vZ@pxGp3ZU4#Xu$BvB0PU)8Nj|B+t{bnb2DDM~gdTknmXPqO8s-j2 z4~!ipWS2CuOyBP~e(@c?NRG~$EZ^@$V)$R@PiX87!z`2=)wf|~-75rWEEt`Q7o}Ku zj6noIf#Hujb}c^193AEP4?^d2Pxn0Z$g+U*VWo@LisAS#FYr59h{*TSv2wbtW*nm1 zUzJtT%#7$NsT0xYYHB~`1NL9q0`wv4ihj-e2WgDOa!?zA4|*3tNTtcADEMZq-ec6( zBH4S$>d}6^&Z--4)ZtM-^RB+NMZOC@qmO?V#t1$?*L6F5WjeeEt^8V8`}J1*?$poh zDcpLr$o_T_zHb@7#{*}l_Cn(wk9}(q7VM2@=NIByAC#^eoAJtDtcCVXg=gL^vhUZ8 zVn^ZlcXfUiqvv?+_4?LUkD*T}w7=^y{^Btn99?KX>#^_f*!LFMcNW^u724Z8MsaqL zeGMz=LfI9C_?pFjKsV;wJocb&JeaTB&w1=?bUQGsC@!+E^BD6VEVQ5Z7^S5}_6EH2 ztZw||4I&7?KlnAM?FKl(v=`cU>&9!Vko1sl@AlYx9`P8fpa3A}U)wD|E1U7-eAr_w zU(N{9fASMX9@UMym5e;*G3rD>8>`mi8KsBt0|K|p(;MV1wZ47!htjiO#h~*!QeMM4 zdJp#h%<*uh31iZcU9CZlHrXr|NfNy?%89869%C}xv{!zG@>D_BfN!4vEOKE>uWxy& z&3R^$l$ZKWFqFAIu;|!7n zq+nNyP}pthF{v<|)NHookY6CgE=EM{Yx5{!veZNV?&xU}^s6OX&k5$t{;5}bt{;Z$a`7>%Z$Y~be`tK2XBiB#!C08E03%O?TM>V4L2mIbnMks9jh~)Er zq-!H)*yy7=0S-60Hc;eQG(}N_pL_gK1kwx#vN^cdCB9iUx;$zxzr{3f2nNsTb*@|u zM^gc17r)SI#tlH7Zu>EOe3O=qwBbm5-;Jp%l5^nJR_eBIbJG(D-iU7O`1II2kt@r> zPds4qVON!U8}4c)GY~waBd99GsS5DeD}gSWHJ#qJbkQq-H?NC6WW$lAz>Q$my{@|I zTn(|3nFt=5h2UEr1WyzpsJaiq^Y`bu(ePk)U4bKSZbw~-Gq31G-K^=3yqc4ax+(x) zJmsiExq0r>t~!*OSJdgMn{_Wgp3KT~pQ$UD!RYWjcUN5jyz_y3p8ITFL7^*eZnvur z_2xZt&Q*u1^B(`$RfpR17Myq0p#ga{VOJg6koTf|u?|PQ7vLmY_x$}mD}*2D_ePJu zWmc$oZYAc^A8rB(3Q}4@X?(jzxDAF7Jx-TWSL*&^^JBIzk&RF$^3aXW|BMyiV8OW@ z->}nt0~0jFZbJ-Td*j~eMFrU6rU%f@0tdP@z4|c}bw>B=UC3#E$9^-u@=m#4K4WL* zCi#XPx$%v+9h=-K_+spOe4XyVH`!KwN`2K>ZFTkaR(!!ejG!cfGC-p1lWZ}_y5|BG2-~a!dciwp?nM`IT;Zm3Uewp)L&U-G;d7l6CoZEAj zyeN|BE6v2{1J*n`TSZRcTVt(v9G2bt%{xA{CB5H5eIW*YmfT@mGd>O1R_}OQEhN{&3*|HY9TdQI9nlTR_Ij)AG-$Xjn}+ z4i8}T4OI`YiqMS*u=ltk2MJ;IU>+X8)H_9s=Z(qO266`;z{)$Q9$+iTcsziCw@p33 zb`T8@VB7iC18fP&#{-ykEHcu-wveyj0W7+IRS&Q=WC9+f*~^!y2iP7`fCsSS7N`f< zB2tJ4*ppQ(54f9qVqm&lUx(Ub?HubI$Y6E7Rao134x_~)kJ_TL(O|FfxgZ8;>iQZa z*t*Fz6@3H+C|gaY8+}itljqo1>cb1~_}nGWevcgLy#T`p27Dd{mh9y}Mw3YT^u*$~ ziYJyvE3EGR*r`X;9~ZRyQxSV^4LVfc)_ik|G~YaD>r0fHd~aR;q61BH9xCw71<%bb z;#MPWTRheJ5^=R4rxE)%nXhk3YoYZcOqF6?|Ksj_AME=4obA}3j%B$M5rJzOQXF8q zLXiu5MxN8Vm?g%@l|IhE{sj_Xxd-6|z-XW&cPe=1oORAtF_W#iQ^7Ikdd%_5ZI9fk zV3l({=lnr#d*)6Bqnt~b^J}?H$(;%|IoE5>59PL3?o==d_VriDZSUNvU=eOjr;iJH z)F*c;n1tKXJ)uXo+^Jv_Zb`p0^e8oVDj0>^(QgYq>YFxD9=9 z=uukkRIm%TpmXp+a_pZw6%2C@Hh&YCL>>*uojMVZVDQ(49@%rJ-Wk|PE@HnkP_3Q| zZR8VDCD4ecYOyH08nO|=?9hw*_twc~@bFG>ZOOAr2@CK&E0PZogf?HR^&CH1do$cc zUkR+SKmC(l;HEdWa5{GJ^SB1vjW)5}F@om37#A%BUzY!0L_l+ocP<&9CMzn|2!nzl zEdUd@W8nX!^D^VvrD$t{57l5kH|sp}C!|r1Dc@HR7Wk&=j91_o?S&~i4EwD1Xug;D z*@&6~q=c2K*my%lJ4EM70M6)wCBxu04$s6tLjJ-tt^JT1@!kH+?=en{T_#$gZ-oV@ zRp6V41-D3peShrO5)UnN98UL=M;rrbRAT4e>kiAu+$wn+cEruWCU0*LUX$G3Bajfr z$Zli5EvgnbD>iKjy|uKqZiNdXxLV1FX0*TK^4^`6zhr7t{wQpbh2IripT;#@<9+RP z;h2MSSF+rw)dg)Klom_)rWA7tGKU5lUEqBXC0OX^L&O+Z2}072!dH-6kxSN7Tlk1$ z2;)$z4bg5V0qoEI1DFp5))ZOTSHPa@57AZsHh=^zM~Z?F0BUKD>;Lfylh?u`9U_(yWn7%IsqqsIu zO?<8(+M_Ahc6c-eyTIXOg$j94I#OAQH}g}t9ejSuwZ19vo&nA5ae1p?8V&3_cH~|C z)5lc|w7Ik!LB5jDqW5 zx!zaOV^J0TK%|Tu>Ha*nOsC{ll&e&R-QxWjZAFZnMEXowA|@nGEwR7jU4=FpxTpb0 zQIDu-xw)SS{1kOEabma+fY)>8dv_u?Y_G1gE?NbjF#Xf16;@I!VB0WO0SBylHIVAu z4U{|zM5eb&AwQW&$sHuHz&p?p;;D2qAF+%Bop{POm<9k{Fiqz zs}*p72PI9sgVT~G^wkDZ2n)UMYu*$H47N&D!{t&64Ij!iT%kZ4Vk;_lGn^xOG^Uc> zu^ewTSOe?~?xb)*%R!XkZAVy^ybLoB+abu%VvA$PEDpdX*TUri-rCo4h|kF_V;Yz? zAJ3Y!QF)NdJjkUR{mD^z5X`*OxE|;lvwCiYwuCO5Fj~FWuJDC4(!6Kf818^E=|*`6 z!hwPX4ivC_u)vF+tq2po!mu@52uu3}g3wopLjQMhg^iAIwAOzm!;s<7yMh1MTyb$Pdr z%**giz$Q_rb!g7(?d6N{DWmilnRkt^6x&6eJ@gO3_!x)Y&)uJ(T+l{e8cYd7tu4z(!POzwr0a^m+RG zw2^tke5L*IJ}vw`)P9!!9{rpfd=s!a)!9G%J#2tp`g?SKK8=?H^p68aWcP=lbl^P| zr-ygv$h>qkFdCO_tVh)rx7rsEhW-z{iEjkl0)@Cz{$Qa0w;01m@C0Mh|L7DPd6nY6cVij z6yR<=TUf3j{J0lq#{4K74=)_`!C%F zIIOY)WB{0u6O4fZ#LZTwKrY8`bp4Mm{TzaiZU7LUR+|ifLT`O^8{oj)x2e5F_Y=vW zkS~N4{*X$bLV?r~>OWglysq6frQHjNEZOI$T=E{?ksPzm(ythrdA4a z4k=rp3H74S82dBt>9zm`LYV>Em01w72jJ$4rohi5Oo2Dsn*!-!Q=q{2;2;b3E6h(B z*2XHhhUiLr-~reJa0)|{zy>ow;51|!^hG4v1Gm#2fB`_00K1u$6%aBF;Cvv`90-{K zx>YdJ7q>YuM9hI#K~S0l>4E3KCu+Qh`hOn4Q&;)pU1dv8{Sn>>cLyv*X0S@7CiY~4pGvL`D0I&j&1KFYef2XVen|1Xcl4}SEwsa{Q zTrp=@mTh2jG2yd?4QVa-?u1dmT)k^y4-|U+v=lILT{N>UReaJEY&w>iWG8o`v=MgCL;N?`M^gwCKuR2Yx66JuXhJK%;zfXa3H@+W; z_wWcu{}FfT?|VVH8{ZGYd$@+fFj@J{`upBc?#B0n@g6?n=u={#{=N^CyYc;Xcn@cB z6x@%M?sM9p+>P&t;61#?(a*&D`ukKUcjNn^cn|k+^f>Xl{=P4iyYce+uv6P>x{C9E1{{1Pn#AF*bRfvC{4dEU< zJ-)tVP(DP7PEgI2@<)k$*7Vmod^9s9eX49`)s=KxkPk!vrX z1PB(*F5P;U_;(F=?%hkimDZ+L@3ODQd@nloze5u2*#C-2`Nla5e5FNh%t}(4F@;Zs z0gqUkcTKArwO@Ea`mEx24a3?6kgs%VS_l~c$JEhT>RRX*rATKuaK5lZTX;nEeA67V zTql3w8s58Fx6=U&l7Pa4=5~AQMYrcKtmbPO<&4PtiC?>kZSXvtzo-FfbeK+r#m_>E zxV4rVO=;Byi z=(3G;Uz_ed29Ix6^nY9xc^IQUVy!5@mK0=Gb3Vg~{CD!;y=##7HR*GG4WJwD4~D6a z&XKn{3h`NQG>U2@)k2}>I12u2(-z`&81;_)0KRX~P&bN;qEXg!~tS4 zJBDD^hiI(3?Kmkd?-s&e#Q4( zPcdNVr{sq#^K;I@9o+zz{fDdEoH~71e?V7t&T=?y;ABp|Zyq!gymz1FD5(9J|G+bj zd-j2}Oh|WO2!y5x=92R;?qzl3G{eA~z&thIr}zD2vSQ65j*Rk8{CI(`i%)`y*#CPC zU;%D~G>{>s^_&-Ja?B7 zq@dID0#u1bkC8HR!ayW}zG7iYI0@*IJ*XGU(QD*{K}Z6f#ll{uB%n>+(qr@gZIpKO_gKlGCUt}ZX0_s7pT&u_EH*&(KkPSMHh5f=w zK(QQCito;}krRd?3G^Hb(@Z6WYN7i#lB55~2{#}K^c@TPhm(MAd0CGzVB~~P10d{( zFu;@qu*avz00V3qIpH&iVAq=@@EBfUb`N6)b}}hmSwi2EKLYeir>u`_p=tz=+N@{9 zMDSK}zA#W^vy1G91MN40XJcNlkaVzz8Na~w%=Z!8PYfICHJ=-N_N@bH7T1s z@1D2Rs4|C=;X>}2Zy^zCocj^NGl(YBW00Bwm96Orsq3o3`A&4V(JXMq3HlRw{F5!rVC!F5N3nGnsrsa zwOS{0jvpd|LZE1(7%+k5g7OsW$GaLSb0P%hx&u;%^PlF!qN6{V9zq+0QPS4eSZZcVrdqMghu0H1FkOWy+p)eIdjx7I zxtz}r^(|1966EMw^NgWE-bS3Ii%)t_P<DJ63N7BFC_}#Qdk%~zKKBJOjceq@^oo9>5lR%C7fR=2ZjW&l&wW~tkx?-L zosU*~d7&Pqhi@JfhLOTG6%)|=I1i;kj~C3Tr*AG4#&ciN6S%fw0=ggPp)>mF5mJ2f zpf8LR23AZ!|KmJ##$koCg}r=pp)ZUS231Tz2jo0d2EEZRi{8F@P!~oDgDWPW2XY=N zgWf|Kp^p#VxWg%2S1|#W*Li4+XY~j+-#lmwBZVOq6VL}a4~;QXkC5tZar>r0TNrVM zR!l%Y5f zp)8D=4y%{|#yt;xu?KC=6#Dz-L01?l+)yzAeUbCf7i0=X7~q==U16l~>52&h5CKT? zGd%*|hMM~`6%*`%a`j>^c~a+x*F_dwBOgz9R*VW9M+BuU?htLU0Ei~XjBx$?Hq*j9 zIbQ@TWPCSPGYV$EM=$v+!KT1>n>^uYCYQM_5pxJSVew+z75EmBH(=uxq5t3%_tIP) zbEp79kJ%?X*0Yr>i^ltdTYtp#I0k=8S&cBo#yM$^Whyxu=Oo&euSdf0PML0hb|s6l z$d8e|!?LLIRM@Z&48DLpBD%b(+%+%f_mFl8i?jqcs&s)F;8x(J+xLWBe>CEx3rk`P z(BX1>k6|Xjy5`X8*KUBh-h!Ek6vv!lZb+bSB9@k@qywBx4(XrJLw4LaT*7?c#5yw6 zO|KY-M}UMkI|7sg)<7B|Tzd0#@KQFzd9JJ;agw@w#Fj%`PWmS*PaOQ9+3#3|UFURS z2b_0bAs^Nl~D zeeB(0|D!vd&V~lHG*)0d`>sEK6`fS9b-=+{hxh+;E9!FLua#(oDTj(0kAod#SIz(| zR*+R-YYu&7CkIrp1qVf*x%AC@@imrly^K%a=4XMvM~}C5wEA-WdhVZ{g0)?kJ^vck zVJ`e=2>HtX#(1>u4SPoYpjE?M-G~}@MWwr9RV7?Utf}I`L}--WsAO921r2EVm5sJg zd&27@*6HuFV?E_Rr`U0rOiIBh_os2H%)Z+SMx}kaVpZX&H2B+HiKGfgY|>iSJ$aMq z6Fq+KP<$q@e}LGH|2lJN+>zTy43`3FG1Ywg+I&0ag~x;OuzvA%hbFxKO|VeEV<=z%``k~liAk{;9)Lv0i#kl6g zCY9=cAl1`))ZS521y1xi&RJJQTs+obrMo_s#G^2RZWlDFG{LkN2-%lsymSC*Y&7rQBo~J zszoZ*dZhZ09<_gzR3AdBB`VcJNcBlQ>VPPzs%V(*CF|Ygup_ksZ{d@gcN*5}tzJ;D z1dPALUT8f9QJ<3ww_`nKE-f52Ab-i%Y=tzOxOUmDdGEGigd-C;P_@!lvC00%F32tz z7UAY;0921^`x=6SO>~-oCDIObez1V7j-__ytSmZz@>w z_>O`lkJc9~nF&;Vv50$5!<6_LEIEdcidW+17{awkUrnc@muT-He7xy^9n6`@u4fUU?p`1 zP3u6w;@l8XonfL*5(`u8OYj%HCf<~rEglpH<9;S+KH7q9tTA||)`Da&3(ufrs8%1; zK>Y8}{o|n0e^BlpDJ=M(pNZ9lqb+cy6-dV(Ka7Lo;p6E`dcFKjY=T*ICfEM-SPXw= zVX!picKlf2{vY>2eTb8(?ykZA5qtXlNeK5d!+X>D z+e6QUS*{PvEW;!ulc^}L3+L$P7hBb$h*+1>nNnx|s#`M;Wz-wH$5XWl((zn&PA8F-(lB zQA^JNZv?<_y+hLC)2Wo9mmD66nmIJ30E+tk2c}q4WlaMjUrNR&_ zOJygr0U~5BMM9bOX9j~Gm%=G)cpf#>pBDr|7El>VNz}8+R*R6mr-Y0Hw@^dD4J=Au z5=k-5JE~MdG!%z!N}+;O@gzk>Kv8pe1va5#5`G1B5d#&Vwvz;rDfya8PgRXtPmcq& z7itSOK*<5&5vF&5QNsKORFHxoMS0kZw^#)H)l7p$!QOmCsyxfdyhQ4+N*bzfJ@cm5 zU`j>XO4cLY?&lG1oB0(CEG2p&b`VBDeLFBc_OQm6Lyd@j(DjIk^Guf*H>3RpH#%_f zH@Nx?OfdZHgEzR+EnltVQ3Qh&oe_C_1L^A$H$pP99zdT(%tzu_rZW&B-f@i#mG z+pM}dSdTZg)jOHXUYJ<$Md!!UcX87+29KM*RJ}9Uz`HN&7w2twT+4{75OF`hG9DIK!uBf>kKyq05^;Y!=YAej@5w2Xg!)s!@+{Jcez{a`SPfxqa~_U?m7* z|46479q_Sz0=J%mpoFo*bSd@$+wVKY*TMDbH$Q^`Mc?C2+}<=6*Z#3NmTlU?GYilv z*!qPQ(iR4Ig9wk6pwS<%^p8!ooWRxmdcP}m)_ZvIog#ljDj>-38WDWY4|fO`c>i7o zqi^!Nth3he>q-8G5$+EVX-sg9q~UL{qA4X2ULKVAO_B%`b^05|xP$a1IX_(zRjj~_ zK#IMRu943dz;}mD88E|KHnqxx4Q}MAGRh=F>Y0b~aT=Ltw#h8AQn`{FE7m5<^q5&r zijrkXD9c-7=2&FZ56%Aq8^ma&31}n`BY0MCsm2>j&275W{WBQtQ6d>iYfQJgw_8-Z zlCrqnEsasBT9~ArJ_edvZ*{b?snx42B;vbjez9wBSm@v6uPlz)!6){)@gE4i6(R0u2DBs6(+hq(P zP~4Dx_xsE}9l1-%MJC$kK1nZ~YslRVQ3|57kt)b7rg9h(@^}%MoLa8va?!JR_)s>x_V{4`d-T6)1& zy}7hbm*nBWIzI$#y)gO~^|0-Ots?a3jKa6k55SG0jjF#>cAdDE?Rd`2{D!`XaoFLa z!@WU>{b04H7F5qZzok0o{I2TZ=l4|)J%6}5Mz9t8jGd3 z{pt77`DI%7)K`1Yzr%uk;CBrV?xBlK0F2As2q_vG{IL3T`eYa_F86V3;fVc(V@~-! zBWmA)SYXSS-<1&z^4+@@zbB`53j{ZKihB|BQ5GrV?}p=dZ{YBMJra!fU@7_)Kds1tU@p7y6PT$Rc?;ks&b|d0rMGPO- z5WC$D4b-dspwK?L>CvzI#}2RE!^@fAhoQ9}7I+_VWc$Zv)MAM`c6hQ352u4uYELnj zS5S&(rnCV{fl0$$$12o&GEAmiKHidHWCmjD#F~W6pt8UilZ?#jkr`4SL!QtH2KtS0zl%zQ z+8`U5o#n%=C{U<1GO1Trg|h(x^=yhHNg*8?gRRm8VQPU5tE&19m6N~96+A7O;KczU z;gE3hP-geo{ovMn+znWE^N1rvy$2m7s+CTsr%ElzwCk7)cq^xNbM?B?-8Qo4PL#TZ zoVge2*Gu|%o>3d%<=>MJn;`)CnOuJOw3Qgk`b&Wna~KQ}&PH;O#3f-#j#=j#$)RJ- z^ZL4w)+8gXqQ+S!@t(PqP1n=EZ?>h0SKo$a&TpCGtj=$#lSZwt&S^P-5?VG@4{tew zQd)M1>{kzMIf3F@>IDRZ;G2#}bl%cPs$WV9gf^>Y=oC2dg&&>O2{B!RmGA&!Vt($E&N(@4{Z(A|m8t zW2>Lcn7G34A{IWG@wHc~pDNyji*Huqq7D}`H{s$SE*`DNMGzN{H{s%V_1R+hCkbrA z77~R!L@PCZS~y}0)|3_5pZ*NELGz_J!iyPz;!+_j8Cl?3^7S;#a=tg{2RI6G_JaI1 zYZk!Q9Q6qnxb0uScs(_rmo+N%?*o*i5t(oOVxWGJzF;Rp<$5yxHb?d8 zbd!a?I|M?3=B>N=XSuf1->tURR@z*$)$&Sus81+VX5@*Bm8`)%ng*@H=K-0_Ve!> zsK-i03SA?2RJzxfC4<_U-hv21K3%x;&PD+ z`-26LNp#-M$(OE7=%@45&9l&H9pQdA1L^Fo<{-qX$?l+q1}VNE?HXpgn^ay-ri+0n z=;GP#wHcz7t7Zq+`B&Y8fp5vGh{X|HEAclxj0#AFCZX>#Yc0||%78$ns>3Ar` zTTcV@sDIoTdlNp7B&EM$sAPwx%2ebZKI>iobUc*uzDwiwKy~HaSPw15wt%khASw5_ zbktz<-K+f#!$WyHCGV=7SzG+mhr4%3p||MS!e*|OqU*FJG1gVv?miWnR!*oew68E& z08;y>=Y+^i6}(kyKxW!ZI-}b7J)I$0uNvV#l}=meEXaHelsSO#@PHEo=C22Y>2$i{rsYTR!0JA^tS+b`O6(fObQd*rSJFPl@z51zB`D2 z9@tgG*@hYpZGVhNAM+LF3QLdoz~kUv{zzeDDu6S6dSMuEB@1(gpK~sw2F0Qmv(hH{ zbR(XZo|4NdRT|{}4qk6bVL4cAoX}?v;t<9lC{^=;R7#crlpf=Y0Ae)ryh2nFKdiZ$ zrAP^vg7IX==^VaZgBU^*G+1eqe7Q#oA(yHUuGV)N?^()nkH)9q1ba}+#LuK$JTqF} z9{jo!4~r(TS@o8;2OlcJvyu`%YuoagZ@~h9I^G|^zpxVOgDRllV36Qp{IjAUF^)wO z9w4cL@8O^2$5E70JN(G)Uf$N>2eI)Z6MZtZdYHEjNVfP4iMofRIEJ4_PPbuQ1>T;* zRSljIm#=}?t+~5VpgO0JwD>6 zHJr8l2qmdG$e$zn9k?D5D4u6|@iBi6;RlU`AIWJOpONG>tda;LK0pB}b2TmeA$e;^ zO0)p#dQQE?XPmZHEG>-$&J`BV)WepxvqQPBkJbQ3AZ-OiX#U4|V zpc;jge5LsNFl5dC9Q&V$TGIL=;+9nMH%K5ZdG|%8z!~+DZF0%xFWDuRgg&S7)Ea|*e8cR3yn1e6Z+ppEiARPpu{6>>v(19K8jbklKw-DF4@(2w9P7)*}F^TFr9O{@ZS>r3LS)w`tcZ3y#fCZWY zY6Wdd#ULo&Rxt=am=ps5sC2t11}O?roft*Ltr4amN$I&vQm)T zMllcy!0|}KPz;CgsZtCIliMf;NMh->6s9K%inxx|Vqo8}t^~4{p5O~s|F~d!SXYXA zYNHqkQV>X!VrXI^+5^%lOaxww?Dd%Xh#g#p)(61; zc(_kn`$I7As{L`*{^(ZwgVqJKh*%at09u$h?h_15m|jn*CF_gEq4@>`!q0pBArwQC z;W-6jv@i*KBRYyS2Un%XpA(9%Db$F2lNP(I!YThJk&zdkj|yeNZkR8MM$eE*Qw!w z8j4{^%%Vb6M!-j;vlszlhSCTSlTFMH0Zf{YvS60FlPVlG7!GX4cLIOsSkyR79l>`o zb=YogO&zA93=dH`(F_ls>AaogrYfz$dE;`2HNYsIG#JZH5M~8&WUXj~9SCVPv-=_j zC?kNvJg*#98o$Kn{Nk9{ADr*R6J;5c92Rvh_J`8(VreK_LClK{qWQ%t*(#Spy9-Q{ zY*w;U9#Y7Hd`8|aIVjJhFf^f*wN8st869j3X`fKdaQhygi3PDASM80X4Pxb}V#sAc zGM7tQ*Sc{;@hmwkPffyu zMZ$RnD8iBK59o=)WjKlZFHo=_LAz&x3`y=5rvI*5+(5i z{72YJ(w?w?o@#v&hh7(t(R}$b{L&NUfm;;*;>2+L;-GN+PIu01>h#;kM~sie@Mblb};_?ZJ{F5Se)Wg5qO=5WAbGma=g1rd)T z07S;yNtt|m3~y!VqwMP(YnTJEK?_Pv(fCL32)Y`vi=6y@XcB)*iun6vi9WnQKwB*9 zEkUX8sJ($=D&`RWqvDU;OK!OEys^f;aAP&-E!zQuK%?MZ*!nga`AtggNr9en=rioBZRC}Hj9W*(}8Z)IEt=gF5y z4QV1Zpbb z%VTNFW--gMX)J45A&XizcM^Z67V&pRNulp|q$O)=UzCnn0l09q*~>rTnqnjmm(1RJ z)CZod_5XQNgEc;vwt-(_e_p(tMX5H{D zpcVLMFLR~?o_VOo6Gt^)-jfCGrc}R&H#I%~5( zy$n)>-Tm!RYS*FVm;^@oS`d3QYJdX=pm%1Uev#EFo<|HR{%$?4Ikv9`dr_+tN27Hq zZp%~zs{UdsyB1MU>?^e>Ek#SFMX4%wgIbinqH=D5(!y7#c=>Izb4zIvvrGX^31iH+ ziS|*qcJ@)XL8o49b$NFkD*uqU1cZ8;>!e6S149W?L}Ua+WCTQH1i%>vKo|yq$q+W8 zxMCD4iUlhP4)ZL0x>Ml5;S<0!kn9+n`Bh^PkW7;HreQ3Qpt8(2e>SP@ngFAs3bwJChA zD+?*>G#z<)4hG-p%0mi23n08uf37PMsmWBqn$f8kNSwm*F*B($-=36N$kMf8%R*BT#DLT?6?yf1SEoF14deIX9^ z8}aPL=<;C-9dOkyp3WN)vC$hq?96Df(QITFvQlIY7;)t!eFxv@ti&NqQ>iexf^VE1 ze511%2ir~GptFi^CUx+Q&VE}Wzd0)36m{^8&YCqQmfX*4vmi6i5=tO;a+N#SIJ|)? z!7Yax_bE+7i!KP-;8O~@JqQPll+ZjXiAThQqnO)+cZnTGIkyK<6UKp{+k*wb4_rgi z?LjPH<8`4t3Cp-L!VHEfI<7NJM0MLWafqE3Rbl}}{=(HPJ`S5nK_yJ21qXH$GXY(I zB3rR|$(%mNY)D3spj`<`ZjcTiX4=cY!Vi;RFnkRl`Y(tK+a^&~!`DuG`2hXvM41j> zPqLR6!OUUaiLxKQE`kGbovR`kQAh@b0)~iSKXTse`tIgD#dE;a5I)COl)rmYI zd#LxMzy#(Q8b1lHV}4G_*_>bV?nLU#JZ9x056C+5a0WhPdoN|Gl}taESL@8_FY7dY zra3JWX#z`-W^UWvW^6A?64TF=oXqKuh?+jr%u7d_5LBd@**Mn30IIx_UOHHls#?^w zn7gz0DRUQnPr*Q>fk;Rr9d6L)On@ISIK4`7*x&d{6ANUm7~53Q7n>oiiyEzS1#;&# zF+CQ!h58j2$by!@U?wewG)gxYv642Q6V>lO-5ZB~|JG4(LPVz?r#eEo*)AX6< ztfcjQRX6MVjQSY*Ubklr?0WrRBzD=0(JRwC0u*R;pJ4x-=s^GfdXKLEVMGYS@K8(i z80>HKRi;FbimzY{&1_0wb*eHYE<~CV-%v@Z(dt=YX;$xp5`D5o~r;2Ob~v;{z|kokPu_41_|Cm7cvVwz4}0d0v~BIj-JPeWAG4-!Q}N zhtGx??)6xxJ;VLJmA|#=p5_DD!Cloy=(6DeoHuxyFJuQ-%F~^m=9cW@LFe|r2&V?K zuz9Zf1U$K@SMtDu2Rl=ES(DC>Q#{8nWM}PMj_+(`-yG<9?LhYEdMi^b{>a}jjT`Im zi@lfl-HQCDVHcdIxh^}n5Bb9rL>;!Bhw{hMy(<6j>iMq^<qZJSOr~yPiK1*}2N6qGHLJ@f@&yWqC?L%=Ul)l|gks31V)ND_=})l#6W+3>`EGQeQ*twgT(m{|E3q{h zPO(pZ79R(KTX4!9&gUph#WBKD@CaUcAq`q_uQyS;{DtSZJI(&wr*QhGXEJDay=OCi z@3l(c=^?>C_4JI)(kweX|2;!~r)idY&wo$VEQfeF@#4oZ1SNETp8Ju6fCY|zp4mv} z`Fau(SJ-yb*E8i0+PHOcTfBTl=*3-*REhfQqR^8E9X8LDn>2SILxM9F&nn!lv&!A( zbkB(2X~E5&&2yclyKJ7#H))W6&xn`U_>=MG14y}6-2WSULHj9lo$j-!N-wRn)uz9d zXBK(3Cq-gxNmr@h?juKYxj_{I0SkeEg+QkHpM`)_Y`#IHLN5f~ ze5eYsy)2-8)b z7#}J`(v;}gbxN$<-Bn8T=sG2C4;3P5N+>~~h$bx^f2!*mB^(ZI%_<-c5am}|aF>YO zFo);0EU1kP&nN~K37|cA2VF*JxX*#x8BivOgW#OS^KS^=wMwux-Sa9y%?+`V%D1Fp*#q|_ogTe?xirex5D5)9bvFuu9P?`-YaIsW0gx0u6G=D@6)xq z158PRR8{xBs_y+dsk<$Xx~F!r?tSB^d%vXXPWxyNESb-XrfS}x1)DvS-_n9rG?H#@ zh8eRV8;_39%N`>)Hr!0Xn<^`!Wh2@YypbClZf3(!9(2zxSg5OV+-t3{j%lI3WyAha z>{eWdt(YUkM9pz;PN)40rbIW`3IF~d$4<1uB|yfcw8B+njDn0`-j)) zTzWvAnJ+(IL5nA81Lo)T{Jb+0=I7FrOV)_F2+Hiatw}W*Tc&*4K-FZpDez^D-Tq?h zojymcYtbsZ3+F|+7M;UF)w$O)=C7~8$xMsRVQH#AgZD?%a+xSq{N9VsA_8{4%hnZl-1*j7XEwC)+eK{EtuS&oW=L>K-L=9@ z$HO)0(#3vz1!GNtwToB`K2UcbA{Op~daQbh1$%Z6(qe$Lex+rtgUNb8%Q^;=l@G1z zUAnwGkB4|yE#21Qw}pGAz}jU#2$&B7=7RwFOony6&NCTi&KA$)YAv{5jGZH%$><#) z@NCYLv8K(ptFb27;2S-gVU;&|w!-AW2-D^h*}?UmtuT4y#>N}GIe|AYlTOGRxv}Af z#?b8rn>k!(b+=gIvkzkd%^PgNRzF-wt^xhWlDp-0)j4{6RfDThT1! z6$IcF-jR*YNfA=$QCu`%(s zdJ2*nPh0)A_@8=5?M!4_4w>X>K1c$&i6u<)F&5B?B+bW|MT8h7){jl$B8EO%ovm&ncsE?~Xl*UL> zST35@82oPHgbm`f+%6LKmADAo)EQwrQnFFtAA~3TBOv@EAo3x&9Pt0kb%_)GJ21au z68*Quo|HD+oQ+A0FgF9vJ4JlJc?`slMQ%d*G(n4Lf)>*REv8)-`nuL8PT%Wc*v6!< zx7cHALtk42ecu*b?u^85D_l;B$_kV35h~v!RK7>3e9vW}a?R?*sr))R4Wu&qmTfS3 z9XkbPFb*^B+XAqi5>^3h5`?{I;QD5D;uLxT{iVbyq>wU8bw?1eJA#1S5d_lhX=f16 zP>6_th=_oQh~RP{;`jZDQ|ciM)JCV&Z;S5@EB0*6>V|oV25VMqG7-sUh>Xn;8Ji(8 zHsi9;<%v~^(`6D2p6GP(a^fWI*jluVuaa4@7Kp5!$kv&=c*E~&kQq;wy#e+kw?A4<0X-R%0BQ#>Fd5;nRvZ? z=(`y0^jm2svlwR=Q%19d5wnC5vxE_|LX3D(D$@AZ#4F;51#48qD-|)zosy{GQjy_O zk>OI2;TN?cf0uYg@_8onzMlT7Gmq}VLNFT!wXoK!c;X=c^oQL$vAhevSl;!pdoPxE zJ&ZXwPxBEQ9RKdb0v1`m1_-tVYvt)y`84aNZC? zSN+PCwRJhYK@U2B&l*4NX)fdZA1adX-Rk;tD_vGsoqOROj3=fRUkhKe@3@!zkV?_D z=xpkooAKMvUjEPOzQ4Vk21TF%OlDeBXu6d3N1o;rwxHd=Z+7jS>GBJ=)ws@;UwEd* zHT?hL7Y>2(Tf*P(FF?X_u~c2ueSZZm0(DPXr z=}V5A)J5I*>u~|^!e`4SW=b2m-om=Xvt@&EG>!#CetbF(f2rgeHtf8Xz>Nh8ymdQz z=wVMiOwq$$de~bJ`{*IY;pDqiJ?yK8{ji8k^Ubih?st9Dg#+KGeFIBaO(Zv6>idmj zt}nv?qOJIelzi_o@RuwsoB3JO!m^^jm==}|>yCwG-xuq(S(cHhg=IojS*X=!Vc8E? zfZXyTw6N?qMWH9%vaqbj|6BnR#`FH%)oIdhSXg%Y&8||S8zziPLxo6siCs4=EIazA zu2P~K7M496Dn!zh=!S)5`~TQgN}yAALl>7_-XAJNl9UK9ESrqc&fQlRmccTPy`t{w z!m^H56L!9+?r&~kndNoZrZE?mVUbxg9NnjuwxoDUv9j!BcxBmbrj=zMm{*n!=#G_T zSCXNy^S`?ah25~S?5d&vQ}AJ_6uWe*(nTZ+sp4W)|UNB zc&CeN%M|Z$p8u~!Y}Ux}P~L^dN+s3`#)>sRDzWM%7I-7swPk-*6Ip77(i8-o%t3G& z*OoQ?C&%hytu4bkGame->>(^JYhE6>xjPn@nHs5tgzdDEI1JW#BQ>>eq{LP({nc1p zR(7Q=E*tmTBpT~k$SNm|I$Nz7b9Gs`vC2AMT~^ll>awz~tu8COf>xLP{x?Z9%CYWP zUKVbYzb=hSf;Pn^L0w*6R(1s~FH8S*60LJrlIzP%4YDGx2C0v$L6p{r&^z%%+C`hy zeB^fou{Ce9-`Q>MxQY(U0R_WM(3fLd&e!tEbwa zB1lD4L~!{RnSJi(Ns#K%_*a>QNkx?Fgib`WD`k~g#?O)<%v9)!IG34)38O<(OxoCr z2|-uNGP4u^k_2tWL|Xcnqac5xfAN5#T}Cy}Un(H5Fb z_(>8i^?i&a8P-mCrCGRQl+#PS(rn?6lc-5GY+0iw;iYDwnkcEd)Jx6&_@l&Y!nHSL zPo&^P8w(oevMnBpzCH+wlm4f|F7ZZ-OT6H3tjZX8$F&%8Wg*EZw6Zzj@eXbAG^uF@X4iVcVX?D zw;1cEutMpZDwsJ4@zOx*LTfGDiP(y7bolo@V5yUpdOPm)-8dwF(UJ6dJqvR_lGj*% zRlT=n2jkrE(ht!>5_z`I7CfH6=mK_nKTBT1G3e(rc=-AI7XH>+`TH?;wlbc-YB-KQ zmjOTcGpV)(&&l&+Qj;4hmm|?}!`<7h{;C{0ui`hys45w7vu<2G? z1CX&;3ca=YYgV!Hg*gq4y$h^83cagPzZ)qOB*1;bAdja=@wYQ47QfJoU72O6WpIx} z$_y^d*joV`Jyf90%Y;!GWZ7RLqvuu{ua^91Xr?qVLWZa~+)Oa$ow3dcOw~B>*xLR>m zIS5McZ7sK-Wj2!$`+d)3#IE&BM(q8b7xFaA1; zTU`raD7}i!(J4bExNoRc!Uu=;knoYAJw3-RXxD$y(~K3nEuPufHN0IGxbODN#@^zC z^7aX<=UARr+v0ibCare6=dmoUcDLuT8?;*eb&uGukwvVpQ)0jF75jDX*suGX@pJRZ84?66Hi%-tI6TGSwKO@EfuCN}mpFB}64EW?e zIF&noKpR)1{L1`#1zD3X9)wdle*F8Q(33|THu5?r+MX^RXtgB5v>SgAV%j`jCC#+% zp(#4o_R_hwx6ZX_)~j6GkvLu~uKnKiDLUKs(%H7R&bECzVOuy#5Vp~h3G`_oZ{->C$20gho$T=@$Rso=CYX?yws3`v{RnBTK(9<8orGhlUjmQB-I8V%bE+P3&68`+~7 zwpXwDBu_J9!w5#~19ZsSa>Vn(Jk3(=c>zvd>pU;O$?E~n3vlv!#N!d&G~1`)V5Brb zHu$SKzD*mqO&Mf-UuKnMvUg$c0=>)5fl6O?K?|<-EIYs@w99}^2R+LG4o4-qC(y{Z zYwl*C4+3~sEk&@|D#1?dj{(FLVEY4L7AFb~V99FNuw=D+ShCs=S+d%oB!zMHQHAjH zn(p~G1S{c+5y3vJKtXUAjm=)*XdUZ@M~s6|7R@c@?a(-}5S1w?o;7o2N4 zYzPtAcm$`9UaD(jH~HlhoC28Dl$861_R=Ls3DhG)VaLT1+3t{>ad74em(k;3)c6rp zYgrqVw08(sms)t-Fmsjk^wOoLw=O+Go~Vegqz70JDY_3(&hSCtFvCY2_C%!Tg=a(3 zW0R|-qz7^=8UcoL2hx+O^XZ_jOHW^2dIrblo_M6EpI)l#u4L)4>C%&`OHW@39~s&& zcKy3UdZzr&N$H`3_OLJay%%i7z5Znp*e0g*rgBUu>(p}3GN>)MhJ)ILljdd6UT0!c zyRWz=`&c=P`&gXC$&D?D8#paPXJ&JCcJP9{ksBLsIx0))Jc~Psk-Q9^L@*g+eMjJN z(&9dVp}e7`wV3L{%>|6*SxZ|}JX;srvOX4kNJb61uea%voT^K5UtN-=sbWYnw2w$~ zhAzq1=#qS`usTjET}6|U2Brkcz+Ci;6ZHJ622B<{K8X?3XyKyY{>Ea-^R9F)+Sl|y z96xmDU|a}#?h)9BlV75d$4;tam}l!C&FzQh3#}%*!8UEig6=J1PkjBKX!(8Jua4G zAZ|w)j;qtMwk-Ed#}O5)5x{ZYM!>t|31XqjQvH>1A$d5(UcRSLHdEsq^!#BK%VSP# zsm2KmX(Mp`8C=8RJC=t|D*4&gX}|Ah&((|VawBc zk7>&f3)%8CNo=s?CDk|}bXdr8rvYMvDJwa4W^NccU}G9UqGPMvNRcLkmo~Vmc%31f z@v&h?kMo($0Npk)rAXaxd_^;v1;sDW0EgSa1l|hLufixl$5m6yVD~n|1!$$`>3KHG z22TTCZnWetI-PERZVUT`iw>ph^8(P1bU5HSKG)*ji@qy@K)M7~=wjgx-52)3_KA9| zlwKK5vcVH{{`$)y7R|k!JlbWM$QXNVdps`!4OheFzL1Tkei80A<%aFfH+%2~$K)Uy z-pGv&H_brr{&n*(U(hhy-C%{210+hP2>bcqBTMz>(z+D?^x2p!39X3UX3J_?9{34r zRNw`l@R%GVJx_E3db6A&dEhN4HpxHm2WRkI%H*w;Ry@kYqv^<7Zg3Qnyn&zn2mX-B zXm}$x7TmB@y~d+dD6GxBGvrm_50+q!zu_r&g9YWRMX{c89}gAl+Bz1?!-=0$jh4W- zCy12wTo5T`Eg>n(ZYyO&=ZlnO$CNTOm6}QEP|8U9q@*l6St-koSIUeWI+HRZMM~Lk zm6RDDcP3@V$DK);ks_tc_=-}-H~1APqqBUGGOLoZ9J7>VhosC(+3HBrvWq8T-eGR0 zlC(@EX_;=3w9HE^X{FyuT+-G@O4^kL9sl}N!WF_~@f>t{DX0PecoEb4z85K`7eZpH zwH4FHKtM1DN4_X#U(}6%)n5-OLyT5+BBolhVyY!8rdqsWYUI$Fm>MZkOxGzfH9qc4 zOpT8_6H_C_P)AtM%@{M15u#V2gmf{*1UHpozFADQkeK#>nBoLcD#SXpaHK-aE`DD2 zp&UPT|;Rc*a{A?7f8>oHz%EPfl^d18Z(P%W#-q3k*)Y_ruG(Ggz0r6?O3Kz!(|Dt~ z_h|)HIs8z3(-U$f1AWB^3oEe4yN7DssUX9OftN@n z56F-W9kC!IWZ=$FePaad8zZ2_jzI4lAN0J4;Ych^*!q?;s}d7=e{g2)#zKXtu$N-WV0bP}a{&+QZ7(NLa~k3oHK#YARUCEap`NtYpW8 zmCifi3Rbea1}oWJgO%*WV8zHSK3FkQH^Itp0V_QWSTPce4_1r>7*i8O0I z2g)n_Ss_;u_`?-79h)`rjV`E#G-9wPI^eGC0^V8WF*L(#dB0!1%= zt34EvM5Z2AJ1F`E$gZGh(9CwGP;4lQZ`kB26zLtrD;bLPVVHQJh=VdE3W~0c21WH? zI2k^bDGq^?fHoYuLBOFK1{k_QfT5eo7}c%x{1Q`(Cp}j5s_=_d zeyx{sNXPv^!a^D74U)9Ak3Iq5Jf9|MX(@hJ&BgPoeDcqC}G{%5{ zP*|31!)CD2=8>RND1pMMS!kAs1<6pdrsXU)EJg0neA*Z9sE}HRY{NR_E*eoUOtWDH zG80L1gou^}6VXc&-#C%j9^sthH>*rJnT#v0m*h%gFIF1cB8)6k_2S1jQzr2nT&A2N z%`Q`FZHzA=fY}5?)VhPl_>x*cjKv0Gjx|J%GKE$Ur(y*$hKSKE+;5CFQ7t|_jf_U) z>_e`FB1bDw{Bkr<+=SPigQ6OoN&*x^gI3ejpcMj|bO?yS2riRJ*Ym!FQ6tbl3V_zf zMLjhekOcKE;VeP(y$MsqjHB1)2#)^0Y0+@>B&gI5N3+}F=*!;-;b<0GCkBpY$HdWi zhrtw%W_JgUW_JgUW+#KAM$U=gsF70?9Q`eDG&}~cz}m#%*D@6tWf@eaGrrsLg(<(G1_b^C;bF(cq^kF{5omhUSG6VeR6 zFAov$9bc$}ZzZ_Q7^^*w8{K_ZTNe^GvkM72j>toUDhU1`xiZ10RWnWsj+bq-g}q25w)3p5x%k3VTLNArqOA2(Be^vDm{ihUB#crdY9E_&jbbH- zyhwQAMIx=u7_V5Q;p!)9Gn+C_)N(cvJ(~S&N;#?(EoE+ROXIT+97%9XF74{Z=%c|Q ze-f$iCxIRB7!^L!W>lE=#M4vB#(0S`6JvD>_A-K;EZB!e zk*BIrWCS$A5pWb4!DTYS-^xoE&jMeJq8L`hMd$js=qzK+$<)B6c1RaQAJGo! zf*j}q9IoA=E+89=F5vh!VO;5gqA0pxqS|;CYvlyS5<1fY7y?fgnnJ_iQ`Imy0#N~K z7#w$(Nd^4*%L&6+V0si4a8=dD-irU#FC|Q8v$~jrW9XnR(p=HhMRUjMBEtI|yAFNP z-b!68kgK@Vg%(p?BtC>5;ef8IT?eiE)PN-Rpk`Jkid~rqBvAQ4|i@M+deZ8SB=0s5!&zInJ=UsZ`3OXXsG)q^T_zRs#F&JkEpTsp6>?QWM|a{fWOTyhHEWJr za2fzK$Cg{7X^tlFZwDQXcA8@o%AqvJ9cb`~asQ47onmW_#ODC6Y7X;ImjSa^HAe>> z4R|kAnj`w0Lc*GZGYk}(wyQv{s*AXtQfZ?S#xvciOfi&(?r9Eg>*Don2k-E4c(xnY zv7Kp2pH!_}!}XH{9diVX59* zS_8jZ_qdx3zgq{y@74>mY?f_-rLKsh8rn`!MCb~-6mX!8m6N-lj7&yXT=j9?Zb^;F z)Am&#*M{Qjw*G~3mZI;{2~9bN)Waq7asAOhhUCU0S6%3x7dWo^xSpnF*No0;mj&ml zkL#EY;xB@aYhC#cR0+r3Mi?QX_QS>Q>-*=~PvwmV%p+dcn(q*rS!qUhM!?lqqS zE#Trc>|fAqW5nfbmq%&XlJPIdgEMT&_!s0c8Ma#8@n~n;(~KNC8-X-ZWUsO7&URfO zWazjGb%2Gbwj3Tb@}sh5De+tP3G=jD`u7QUYA%7N-MTCSK$4zzUCPt$kFz61tYc5R zFM|eXTa%~VC?XbnZkZyMovesuCo5vv@rsy{LuVppq(~9#x~JV}B4(6@B4*@A5#yUr zsGHri&n7Nr?VNUANgldy{kw!KWFFl8nR2sx!VxK>9lP1>2LggQOm23g$Y|^dz0iqL z3GdzxogbC(j_uHCQIcb4YETQIKxZ^}GDgezng*Q4WPF6NHmk>c91kKOw~z)rIQNB#5mY} z<5LN9_1}zx-CfrwTsO1C-sTjE{lN_)u?acYT>+}9`O?9|cqL~@3!rm}_< zx2Zga`o8L2m!lz_96@vMbqUMg74Kd5nZXIy$&4w7ZWT;%4sDMqoq5+S05uh+tdy$= zOv#RkDV=w`yWm|nj49d4c()8=N_Jx2Esfmb!xSTR6Q*>tcioOL#VBhSQ;hP2F@>>0 zOXIG(){SzeRqC|~3*RTowQlM)3D@5YKHpZZbyp2+4?dl_*4>Dl75L<#4cZtqCV!Su z44U{x6q59383rG%Yv9ABRdJ6os8g_IEF(VfF;X{yPdB^P?HGIv%7nqkC{GxC7%K!m zSN-aCYTL{okgzCza{THp?4NMu%{bJc{OaDC-X4cK^Q$`^WLG%!mRv;`L9uZtzM+z< zIMhYIx)&XXB3E<9^zZ$@$Ej{GHDQVTq&n5zZ%ddIW^lSgIo17nKLt+7IMw}EG=>7H zA$<*FsdYf{^NB8BlW?jV?!nQlU?QJz zr@FBr&P2sXgUdvjHfER5-E4dzYTZ?jx|i%2s8>@GhKx_RN8MlaOqe2O5Vb0gy7%;s z2BPtK)SZSlQ6Rciu1w2eLj&mwM6+XpXuLyTUGS*e7DThV14Ofv0Z}98_ew078g*$4wMKc{LM^|Dgj%f~)L!+adnryZJ$WW!^tkFv z7pVL8>4fQKM%_&1OZUlhFSHhTE49c`g7|#teh)3DQ1_Tzb!gzmM%_e)HLs%XCG@3x znNc@#m^8GjF%A#rR~_lXGJA1e_Lx0ZImcW#(|jK%3>a4(=|&@@`*^~HG$Ze?l_TAj z6FTx%!XtyR2P_dsy5~_2g};xXX(O!Oj(wWg!rrjjTfm(-(rr6ptDGk$E z6+vR7&Ry`L8(k4(hakA?iXc0Aw}?h55?2I9t}ztBCGw&hpCT~o8eI_>^@*+s_;vf? zlozI6b)jn(0$@i!Weedg|5EQn|-X+=wpdvg-*5-*gs5|&SqUPTe;9(7l@`S z5^+Hw*TBO?n@ZguKLf7Uv2EDPnf)BwW0gZ zeW4+m+DOEI?$W&>wb2_5-Yse)@p1pFYQsFjWx(uJwejkOsGi-fI?uhbe69DZO&H8{ z=eduCo#&=`CcmWNydL_fbqtHcyIp_f-ENpQrgu9Rjz`|&c>s*G+Vj8xEx6G$Zkv|1 zb-C_NZ-Aaik2o^4>v69r|GD4a1=xNuDgU{X4#U6Qg4U*Ze67=e?*1BT2%gt*uUwht zg*%>?=%98-oJ44)JxTNNx7PoFd(~2{fpOrre!rR_q_I!mUV8q zXVe8}Rvm)HTGso^X;{Ns2)FlfA$yx#V<-yk(j3vDT zT((0DU}KuKV^^EM*$(i6kH@g9O`we1F;IsJo98%=Z(JGmz)?r4F8qTM^tI{es{_zr z<{WYX7RS)Hqo1DRb@JgA?rU?(TXKZ()<4J*!c%_d%=&a6y36L-e3Mps z)`qItihF&qRka6DP4K+0XEKJMPI)$0Yr(Vn*HdtM)yG!6$PRw&nSwz%xv}A9E8bkN zB64={0<6L8F>+(WP3b&~J81P+Wt3j9c_vr$e9tL(bO2NFLrZH@#DRy&t(N!Sc)yvB59 z#B84}c&gD7cwmaS0{Q&5NZIPx$L0jpmL?yY(PS&?)Ki3PCE{c=LbkG#m96X$`*o(c zjT|}~1~gKnQtrBw%?@PCC{9$_`tBx?Eu$!HWs6^5I@!t=*~$)9Nw;m4ez;;zS<3Zt zh+-uU)XlbRkTbA0S}9TLyu{TV$X9mp#J)HKOC4B=7FcYI|UntZjQu;j(vOnBZvloHTm|8h7D1t8X~ZP{Wsn4r>P&? z@HgvSEm>@!!7VvbhyKzbQcXKF1(YlgmnZH zmk;YkCte9NOnh3o={^Q#!zy&cJnz`2sO{Z&U?S?!@>Q7Fmm#havC2~o69{S&4$LYEbU_vW?UJi6G1roq+Xh6_x@l0o6mEcUehljSG@+_OCmF~8AmQB@4 zTW~bhTO8kL-rx+@iHAX1BS51ykp%<0S0@e+??$&G+RY)N276&`6XFMi|DYtkG5mV}>@xyL*W*P%~ zOvR0AsJyYtKp<05qnRrzrAuqHAkVtpp3wZ1Em$K4OpPUC#4)w(zUxz@lT(9E4h@;7 z#m6p>``yFA1E(@)QaHjEWhenSmCgy0SU43LaF}5c(MLehN5Bpd0^|5yPO=6)n=uhm z>3J0sA-gZ01$3?|afst^N|cV$WrgZdiPysnZ9_5Ki9>FWfRWomTW2m+&md<7ZN)3w zL0figXzP5Og?*`I2eQEeN%yE;n30`;Tf>O)Oa*P(iMcg2a*GezjMPog*3CXuV?vuz z+^Eo2^R@}vjG{(|Hl}o`p{*NTyjnYiwuvd7;F{|E%uoY82n5&EKo9ON2d;hgt;BJS zqo&bu?Qas=Gyjq>3Cxh#`*wlET@Zk_kl2}{*MrDeLE?RAhBnq79qtgzzNk;QL{97M zif?!+F%OGTtUax3kjS~+xCfln%qpXo#RrK->Ly6+W>2p%A<-aCR7hO=rU?>_qDF^A zrgW(xu^S!F+B<~A=ecsPQ&em-#5F_p`49*|sv$1iT@HZk@u!5*p{*P2&{{fk(D6%XgT&A=zEQQS=-5U7vt2;P|9tFI1^ zJjCk`w@=6DSWk51;Fiqw3BvI%JmSSwU;4-%0FWbl2spCG03&+{FtRsUy1>6g7x<*d zin)0FqHElG@kabU`tO8MA&?3(L^m7%)^)`0R}-d&86*A5MfZ;&5yZ$y|2C(aHEVNMt6f7WehQKH@F?xmL>23@?iP@XYcz1tSZX>?}c5s3yZs;Xpkn=Ze3E$!t(d) z5|=s@kc8MTC^`J-7rMe~YF}v;P@<9qlJ~7Q3+v7DeY00G>wPr~bb*)D5Rm-Au7C^T z4Q*Lg5S4}R=XvIwxpU5)bMKjR_ZM*gxija?IcMh1%=3Akd1mG_$t*1IXma370n3n3V^=aJqp0eQUD!ISv)>a0W5hSlrb;7 z5E0dY&x1Wx_;3)gMiBlTTy=+CUvrN!prt<=q!CUmWm>w@xaw40uy+{ig1`J+rwhUn z7e9^?2wiX?nlZXAFmZ?%bwL+07Zo5VJu;E(}l{NIg1EB%Qeyg$KpXUUI^>rzz!{}{>&;LksC6u@e9E4dcf zgg^ODD2Gr3A4cnX)Icy#fx@4x86M~flmmVJ<^;-tULvwW6*}KShYAYyuZhRVR|?Z% zgOaOe@X*Bs$|04AQt8@Z#i{?QRVB(_%{RCZIdtC;1Nk@oQ?6mQu!eaR2DZEGRas`<6su-(&#?W5&()zOc*+a{Dee-K_eKW1Znm?5W+w&)rOwn5B7VrnWLgFlz zJI@YQICtWqybh=(>}biWaCp8Us={&S943o72Lv=WK|pg32)biz@*h7m#@F;&fx2pC zsH)yUPvxy@-c1v=syj`$U$@-2zEpkm1@KN_`Sv+0bo$7I#`$cto6tu;=U6D-oMeW^ zS*MT8<}1v3ob%|TqyaalX7RU}hbAu!sDw{+9_P^dNLIR5AKiXufIgBHoL?VN4&AAb zx`$SJdZ0d<0IzVq*^u6O;Sm!iQL(Z0h?q2)EGA75uo@DRCb;SjHFU-jV^~ek3RFWy zjnAj~B(+ET{O6V6xJ+8mwV)fCiHloL_@c4&AB2x`*ughCmIrfLI%P&ZGYpL>k(b_myQ|DjMw^Fp59U#3<}*e`Wu^`SCBo-$4<1{}?2Y*+ zfHKq1K)LS0v2YLe&fy*;nPT@K9qdUGtY21jEoq&6!!R-RlGjmnJZrGqZZXDJhlTrE z=rM=T_7uT!U6lwyE<4zHwk#^Stdr-d&UgBS$n!Mk+5VC9Tsn`rNSDrJF4Ad_)_@OV z+Cw!hPuSBzD!MvuPkVG2ZcPWNC||_r0x3@*<)LBp7*hBmhKp8knO66&hpaD;#KHaK z5_rY^9J}LhJ6LhsNYIKhIqejTWZHIHqqm968JKmV3DwzXqqeD5s*M)GTdB9j_2%7gZ@5dgl$H5c7jgq&Guu_NPcIz0c?kFC` zdwaw^WQcp)OZaLRSheXZxO&Q}-m`)VQ9lFB!flg9ArMd@5Ktiy>_s84v+5sQh$eg) zEJ`3{bqc|BBy;db20uB^DFjGd-9m6G6|CJ;h}TdE`idw-izviwP$3sw6Q6Jk5xFKx z3$KaCZZ5PYO2)2V2WbYw@=N<3iJ=RnhHvq(Hvji{CQ=4#^LeLdSey5rn_+EU0@{*_ zMSrpQIj}Z=287M&6lk3VYxDMMN=}`Hn?D%FH^JK6)Gx!@e8p+R+Pn#eAf|6Ti5~!K z^8jXTo-SCMx1rZz^Ol_44Q6d_r3wK(Z-%uw`WDUNG8(a+VUY(FK+Sj?U#}-%RN%M6QShi==>-73Z3>uDfn$N zW=Y`Rrn8|sA zE)ui7*PDyklU_0FS-3IO{12(FjJrR?A3BFZqO6fotwY@-qs03a zNk*-xGHQjDQJF(N8I@lo87-VcStp~iEbcLgTxaso!+93Vs4;1AQpw@cxK>~171v-g{o7!TarjkCO3vD~N(yJC9c6u4{~Yb^2MqR_&n>^uJdd|2I`)FR5XPt-F>b z)`(QN9)e*{|!N*u`@N8;;ey5vm{9mnyw9LFlb-?as2Ev?2G zaX4$~MR>np6m-f_LKlABSpL!*{n*mO@N(wYjQ^90DX(12m~!UqY)r|==6e=uQ(($H z9P?m`!se^Nl>7s4b248IrX*b{kA^8pGv-Q}TR2RSUso`tgUNh@F-4X&gDJ8+8BC$4 zTukXe_FVGXc)e#GK6y977_=NK)m=Qy2z{e^Kd}tj(C|A2MpJZ;~z(;;v0iO=0%?$=0S=J2r z$ns>shn{l5rvrIv%YBQ=SpIkdy)MT9h*m87mU)3CfSiyB$k#7811ONoyt)>OrcN^! z#Wc~cDo%f@ijJbE?b<(o)m6rSUd5s253><8bb2-pG3ZbSA_~rA3uk|Y2KFvI7Oj`y%miiKz}a5V7+~Si2T7?)1<_;{h;}pw>V+B*?E!>sT??NRKVu9QX{tEC z@p)n@pOYsV*PaTsE8fdc`_v>I)P`d}-GmYdsQm<5(zBNd@`P2h;2H%X%Q7Zp3AR^F z9DTG9#jz4im-=M}lPFL}K&=%8YGuwQP%CrNKy4?IpXP&F`Ct4{E6eMLT6)6^wN@6? zb~M}QCpA#p6S>m57JIjjGe(c}$ZYIA;dIvBpE9mD6?KQbi&6Kp6LhE>j%W0XXgPtp zn>ZF|;3}Nc8UxqFtyx6fE~FXlX4Lh%NnO&lu}r$wiZ!phG-PYEk8%&~qkI5v070{M zsSb5lhVl~dXgKd?%7R(Hy2!&i`xC~1kxpd;ZBb*r_v6MDsUq*a?_lI@vK-`HjlL-N zfSC|{ZbLZ){!T>GdaT}11fSVhtmpR(^w^s7dj`53*dCjlFyK@3Y=X(m<&a5Dd}@j4 zd}^{3rk1gitHwU=Vt&ss=q;!>*1 zzH6v7yVm@^a+EQcrO(%Bg_WV|c?Ug}x1Ns`jXJc(xb9R%a5we_gIV*LkLeV_e$-R| zl}qx--n}XHB*)Dthfo9-S~H{~P?$9}ione4Y)-71M-e1DP7x%dD*{;xb44I?&7lbH ztDQZh4|ySYJ-e7i6nao*9DWUhtM_EaA=fhq7ZmZ2wuogDdPN{Vt5*c{woVar50m9p z8bxsIa8Y$J{$Fg2VQFFt^}D`{dKTm;IXEo;d7*JVtGZ%NIqQmFU!v0$CLEUcUgYYE z)6w!Fb%jFvrO_4UZgVr%uROZKa*?Z$*-9~Ju%hb{|VC>PL)mE&YXT{ZUlUdg|jpjx?@bRc%}(*dphA zRHruf1rISS{}7}0JXdY(=9uE^5B4?XRvYGi|DxIu>l1y-s;D+rwG$1+DzGGF4sWsC z!&~(82pz%B$Xh|KC6~sr%FEcby5b+_7=xKZ%{Uht!=XtmwIY4!Id~b za3#Wvy=AbKdVL@Vhhz36Ts;%#ps~^(h4mbp?P=&p>+EUhNE_|ZTdnFXV3Y!D`|PTd zoR9Phkzs}NZ10>Ij&8E5H?JU0#p-nkc3agOSGak0JeyYaH6sAv%OjC9e(=&*Y|P?@ zQ41O>My+|ZWbA^&pv}7n$HLrfAzogw@XO%ByZOC{S5_>%@Isn+J6ut*@YRtV19jf- zu_8VFAXZc&p?}4~-wfkezlwz;!M&G$9YlFZ0Da!YV8^?82;zM!7XD`?-|bVe@Lizq zPj4*a%ia|Wzh1(zUKIFAv|jHKe+7Z_{HlRZas8o`CE1y z<^(~G2i`U;1X=~oxbueCbFoDHGJ8{dqGdhD>*EcN-2^ub-LLPZ#Ct385+z=$#QP}m zzDhiy#LJX;Kg65X!(o>|U)zGxH8|%>mDQIFWun;CT-pPic)*#*TnC&{H^CBruZ<+b7l=OV5)%mAO@~$;VcLSgJV=J~n){b$0^iX3?EjV{13nHQ|JG z#9wzQ+Um9vMcdv%uIpe{+@1)!wgY=(=_fDZrcBn3_&9&`wdCl>Vr$!vl)iyWwCDq9 zSYM0AQAfnqwh9zwN{c3y7M-WGsEngUWgIOk<7iPCM~lihT2#i-qB4#am2tG_JZ{mX z+oJLDi~owF!G^0Xnv6Lu8mD#?v(p;_S~Xcas~;LLDOxp|;#N(jxK)#>&TQ2&!=ton z`f>abrD40jcg{;j`5(e~=5Coj{{rrmR_%yY{H@ol(VHPoM4o;XDhb_k2zsZlTlPY? zq!ov&utGuUmX_?6_GWhY3ZzjldaD;D>P4w~(MP@Lt6n73i!$}1A6;+5#5x1|Fa-ArB_4l}ezIrwKu&=N7K1TX#HdhtNm;V1yK5shP?ND;JK{?ImeO5It59DAvS(b37&`9n zAspzqV;8j4C>9-PrUcM}y$DOYS7BWo;Fiq0n}?K0`;K6D6ReW$j+G}svEi|4;0jO? zSh?fCuyV)2V&#ql$jTiDm6baVG%I%;d{*u_Ag$bSkQ#TIw$qd@;F_$e?F`zD-g8LH z>Zc4XVS8~K*Tn&1a*DO{qwORJH9{=<0;dDSf>$);5)0S993$*Y1Z0UIAWH-RERj{P zFL&a!RI6n#ENZH88i+sFd3NV7hDDMnGN3gUO1FZ;b7w~RE2<M=9#o|L{(<$Eq73%Jmn58 zlw0lqL%HP+Gn8BIU_-g(4mp%t?!ZI2_} zX*gxIm95A6W^&7OLu%k9Z*q>Cx}>j=S^~oC5^$Z6=K;hSS)vt zSdyQBy;v+-bj5y47Q3C`lX6CCkUScxA)t{O0vf52I9A#dVPhV(?}3fE+P(+2=LY*8 z*q+-uZv;2;)F^#1O~heZaXjYn={S zc8O+dR^`4&y(;%TI##*wQMAf^kG56rdsMD+-=lYx`yS=1-1lf;+;7?=2bZLVsRmwR zWxUHf#B_IEm0{Nv{2{#SN>$2(rY2%r?Mbkxx6=7t)GPu9#stH_(|9O93hl( zR0TPnpc{-F@j(Q2O&ph@GFpm$XK$F<31pV->D?zCK-SnQv;Ag-uEGg zyzfH}dEbW|^1cr_(1Bwgh24yj$_7!KqRPO4qfNk!)T zps7h0IpRQ$JJF#9a`;)D+?gb+c2@7autAn?g#Nx0Y@IaUHbM-~5in*X1!g3>1v4HU z5JgndRDF8PI013@rt&CtsKO1cP!Nvl`}tc6+)SYcVz^nxF@l@KNenmfiXgc0j`Wu? zAxRe8YyjN&J#PYT=uFCNL&e_AJR;eaikjd795um%IBJ3ia?}J5=BNoC&`}dSsG}x$ zU`I{x;0`5Z0S}$)xdoQTF0cQ<1s-*yxYuN{T;S;i;8`hw=kj2a?+qD6o3ToZcRIlp2K<=9P zvijLW%h?Fvz)gr(W*f%Q>`(}x?v$^KP;P}cXhj4sF6++kfRV|!f2pIB&^9xtq0eP$6 ziXy*hVgS;cf<*T z%ctL78i1BMhuN~pw6io2E$LjU-Z{|H%7K>l=E<}_J;+p4lQnp$CTjpwP1Yc$nyi6L zHCcn1YO)42)npB7s>vGIq~rkHq-CGvhI>`-hI4UqEO4`T4&0>Kmr3|c6FKF`^bolD ztw7wo_gb<~@-8QMfS$^Sp2Brk2!Q(Bch$muhk&tExbJY)9awtZfhf|QCK4SjmKGJ3 zW-naD>rpCMh0qPXT?ie`-%=oSKiyymO;TI3m+z+>BMAK=Vt~*)4hBJ}&fiyr(4GjP zdM~0egpyBjA8=1AzD3-my{;j)w_dU@ib#tst#<2?ME$AQ2cD?^W=VSLw|mEC%{r&z z%!O!_SghjATPT3=S1hdgV>~wgLkH=}+HaPO``*y;W!owiUIgqN^>8H~8h1zab^9UM z7d}0{;$u%Y+>xSkstifxT zUY2?$M!$`5`h6V>@aVaQHSex_G10K5tnNs{-n2H+@;2Y!&;R6%7=3i~yHkIUH>??6 z_f|rr@f~p84zGKmgyIL?oxzjVCaU+Zu-5nDdRg2!cKze@=f@9k-rHwf9EQc?_`qQhpW=)?#jq$KOaEx_ii#>3J zb!3}8u-ZD(EZG?6(1#jOB1Y>=FQV8)JpGJ45l=VT6Y(^bL5$%A5F^-GR!xS_pfkt` zu;p%R^fO0C-Lk%tZQBys&Lj>4qi_bMgeja2+jc)6xz@VYYB^%hx!-E}yFKTZbpFqr zyNQXBQg4Xc`^Q*~N9?&Htj53FbE}CtWbPTn9Ky-Hawj8;TyK};PA<)z+$VQ(-`vTG z+{tCRll$dP?w>okoRXWkQk%F^o48VOas;)-A#RH;+!l@87Q4kJTdV$(q4vOftNx0i zaSmy>30=>CNgUK0u=%V0=BjeypQyj03M3W?rw|VX!WmT+<8M27{io5>t=ik!1&3ID zs;WQV`RNYozjS9xRX@9Jw>5ejU)J8c(oL9ARmPA0_A2+z?5YGw3PiAC{H9dHzHgpR zU+HxEflj9%rP>B^@HXZ)akT}Ewg{RlvDlR+ zJ6cCr%!h#uzhJJQ#R>a)$KoC+7pr#gWv`$gx6$+`H0&6w?kHBj;=MiM9`eV%?InD* ztI`GqR^4G-VV-o)3KqN>RekNY$)XSls1OLK5D5075LmMQ4=zL#zKre0?XnO^X%U5Z zc#l(v_Dmr-l?vAGDa30i1bsymqD2&9c2%FkYvLnrAtKjAY2h{Tz{`c!1S+P`K5>>? zh{!bo%CkcI#J#%ZZSe`kLf;TgNH!Cng24Sw{K2fM5R0oJxXC9q;WBh+^4=Gdr#PKh}muJvO} z^inXfmtq__WoRjfGcYwx*RzLm<>rt*EZFS@dKImaT&9#DX_ z5sdZ#*(-B;`QXB3ub(4(r{?Z^VPvnrQ>xQ?vg{=s*(>94#*luF>b>a03!=U}^IU=r%cJzl?lg)o-k@mqKOkv$sIyzl95E&Np+{c0YRy zI190Ib<`^J1wMI5G#)AZ;RC zoovcA23k468g>%Cv>Oi4A$5%*Bvdfx7?Pfex0!?iV99)bEd$7G6x6x zIXJ)#odXA;`4|TVIyf-M!GV)mP!5u53}cu~V-AFAykPh1M~}MBq6HtFL=Olb>w;h2 zPh6pojau;1zDLOGni>v&7~ahu7Q6+*)c2kd zi_NV;9E7Pq2mRIDGZ6<(>fsay8;h>_6h8;D)cSt`-RZfY9z-%IQqO)rC9ea=Ncvar z=9~EHc^I0^9gGM1R4f{b)Rb+~U>p zj5+dd*P+8)ojB647f47BZZU9K{2WVW0v(35;rR|)3iGJ^beBri*@3_c(;1hX?v6{y zKuTa-LWwt+oQzE7P@-|YP{SbrSf2kz#!mv$$T{XSbz~0tj%kozBy(kPZTS$jc=_;A zzAQ%oqwi2n5XUZ2{xI1c@+~?yK^BxGSf&uPPzrv56Ji>R7GFG`%^*7;e78^8bRgzN zXD!8M8ta02)R||2-c8g_7!2;}SZXK6;|S7~9IU~x5m(R0Y#LX-#AOf%LYqq+$9^sWx{W>*OY4 zxD}k$V6`1Mf#t95?_T*Mo)(tBq+kBZwzB*sbIKo@N~{eCls~HaNb;AADu2na@+Wi1 zCx7ybB!Bk_`I9f_lRx=#KKYYhB>9tXk^IRNl0TV3@<%E7W%(n@WR|~dzTf#^CwAmd z;rq>&!DQ_O%+XvwOvvCcA%nwGEQ7 zB#vy`d$u~t{RL{3+#IzdhWwRc?6wq2TaZZys&0@@=d-;n*xpOA>h8s87C7lM6atK% zth-Fd!6a++x|4gp(XcPKFe+X7x^U!UWK09(De&{Vel%J9Flt`;U>JZs1ZL|49X( z3*e)JV{PdAZ18!@3qDCd_`DCbDZu9^9P@w=Z5|8;pZo)V0Y1sXz$aN4_$1B1N9Gm| zeB{>^@S)wYyiJU;Q+_ZU_{a~210VVI4EV?|WWYy0l>s05R0e$LDHnW_3i!}zOXO78 z=G}>^l9apPLmh^}MK1e%qZpE_o?zkyC_8+hEYnPZzpzSKT0j3O-p%!%I9sFDZDKR z7_)@81y|jKS$+OwEVJoD*_d@~0(RLW#(!P~texjEU_Jh5HegW|DPy`Uz}kqM1z?Rq z1Ng>txdAJj3#SNJ&XDxj2Q2R{%bb9v5Zj-u1FRhcSmf~K=^6$dy2`kJX>F6^QUWHC zO9=tFlqi5p2?1P66XAyjnf-1$(KFt}zgXvgv@2ar6aHu{y6HZs62Gl=96><{{gQ<8B0E4ENFIfpmV zl$;bpO>DU&pVkZ<7l8Vf2AlHt!lR&)NqFN;$;oTNDPQv%a>^TCb541~XVh_(siqws zZF*Vyz{tQ`gC(K>%tsV@ZntStcFu-m$`u5Q3F_Hn{8uQb8GeAC#)OD=kFk(Vx1Y{~AAk;?CO{U_uRmM1z9-x8T9ieJZ%xgrby)K;Z*zkaHji|_b z&j%QJ7d)s#-h-&6EaXl4k#`Z=L?CZF#{!WznG<=#y6Ob-COZOolO2J)$tcJxb2dR< znUe;2?*sB?W)lRw%S=p=S7u^@yfP<0^2)FIkypOqM_&1cA9?8wFY+d{kT>Zfuh$Le zBCmR|f){zIYtnFgkN04O3pEDp1Pp%iSg$k^jer`iOL3}jDI#FZ9VRfh+gyrY`HeBc zc!h3YHMWT?L2*E*=3&x|Wlh3j7pVYpuWa|fN#e*}NnXd)C5u+Npxw?f z1+;@nOz7N>Krb}T`Y`cA3m%h1%RdYEMY9n%IpJ>YFT^8Fh9b@>|u;+OW7!qf&= za@APkf)g(fHy{^0+{ExG3cf1xr zWkUP8X(7X2y@%UnG*J&d$+qX`^WimQ)whtpo8(XUyNQxM%c{Q<$$1?w!pD$TRj^k) zs;Y23yA#;^RlS~lX4RftNf#)M1w!y_871&%i|779j zN5Be1xcPC_O$y|e9~y&Tdb&n|6cu%D(uQ{|H?C(@+3YK4WwZG%ow8{SRyH2)MPgih z8s!km=HqC2&$K}Bu!Rnh305}dQv@FRMIv0xNxyiyOTSn+51fYzMQi~R3u(l##fq+M zELY{3D;t?>4rQ}}+01pr7MZcRvXL2^D;t@sUfIYm>y?dsTd!>7+j?a~Z|jsz4hBXs zY|&3YxXMO7cSomeNC;Tjc+cIrPNQs=TuX*>zWHL|%gLv5#8U4x61X5*o&hVrZ(O~q-np?4>zyzBK&N;1 z8R(tQp_zr=`5VVV4RUhp9rO8)qTbPJyQ1Flss9evJNmg4W4+@)tjJwqQ&cvgsneD% zGDbteQI@77nH_#c9J+wL3RS1uTL$xSbrj&ZItq5hIlxhNbC}8z=Q7~Y8Q}b*RGcAC z!Qq%a3BfaQ4jL=%(M?wMW=u-8Th;4mZpy0O2oBz@R`nJzr15uft^aJpwf2& z@&q9zKifNUo*mB)S3Tr*!2j~8iPW0-+BfSC33j;E4b7iVJr@IA+%~YoeLl5Mvcv6W zcDQ9%Ct_RE7mfEEvErYY@r-bYs^S{7u^?&OMVSiHiXyu_b2mqxm5~;EkzHPnPI}1L zrf0CrA6no_-8CF5z`h$-Rb-dbI$FtFmjZ>ZPfFe9^o~Jp__K%!rCm0*QnP+Zn$TMyDgd0iBjni&G%+x zCZg&clBjwV6IIU>MAd(-=kd5)xDrfMy@TokB*+<_%{#1?6gb9PVI+nls-^>Uh?bZ< zz(!jh>A0K(_5{+4M%x_eaGV4Px;V#tOGso6`8==ki!|OXoTz#fD$+fqX4L(3Y>o17 z$t^1LBSS%!l3boLg^-9+@Y{5pu~fhRTgF4JE?}u%dJ{oIM3(A3M8VzW1Bv0+>Z>+mm?jw_b1jhg4Vga6wW1gB!il8%$CCOH?2_heA=U zk>1>spYGXnkyNJ@ReG(k(kpYwC%y8EB)x@GRO_Tymc^Y>$4Jml1_ ztVblL&Kwe(h{C*>IT$u!#=IzV3!}^xj%Q`|w}Z*4gU~_YoOYGHQXW_3D^IzKUwKNZ z{~|Lr`DXGQ8TI3@8%t@AXQp2FHRJ!JBF|94OnuAjY~;zuO#OY-ra+!v-=LTWd6GGi zC;wo-0A}h8@+1pGo}?M_$lSsqkNmoVJRQtT9gIA(tQq8y<;ftAd@6%H@~I5+&{OV0 z#3C)VX7Sm3XBms=aYal0-kHY#Uxla}1TA&bSF#~0A1!qnISYvTGTOigQ3}he#yAS+ z(TK?Mnt>>*Fo?3uAWG&I4x;4O6^QC!TIyhkl4Z?6lq^pMqU2K}lbAc~%HA*#qp zo!3s9JIz>Nj~`Cz>#s8Y^D0_x5S-K>oSuzV`8cUBMzssHTE#JsL6sY=!ntjVXjLF5 zbq_%+?@HPtAvG`Ye{_nm+#aul)W7?paaE`g*5_QF;GO*?0bx-Hsjo$22q=4*W6C-> z*EdCg1_I#>?OwJKmWPl!anr?}goDPS_3Wo-2Tj+7G+Qj)2`{6xfwHhaVF! zn<{fsM#e6MUMI3q=Yw7OU;MBu%j<_-`Gy~Mj zmjA^M&a%9IaF%cQ!CAiH2WNW23(i&+I7@O+UU*P}{9f)wDE4 zH>8(;+!$htB-A=qollN2u1FQDe=10*ODqSgSA$4L?&UKfq3(qS6_)jl98)aoU^cfz zhRrS8%FaVV?e{zvKtipvwG~EV6Y5aE7n-a@h5b0+4no>`uxutzl{@>c6Vch+67DWz zjSb$#B-CN>Ua4`Nb*|K+&PG?>)>-Px+gf{_Ik&T|cDxqA8(L(bX0mBIo3W=bP+wMK z424Ao>g@n+nEbsjGp;*TjeJ%xP(M0Kr$$T|s2@Q&gc|t}TGM0r2dj}}PBmiYNiTqb zTCYZuE`S%VMv^X|o2wC73R5S}vdJ>n9BQPC7^uUk5&2*BYDE4Yy&92k>(z*STdzjw zZJin^(of5yZd#8dYbW%B+UQyI)A5Up5wJ)<9bpRPM;92^v#M!c6ZF%QF4k!p6Z+|i z7rL5eJ;y=~SQHvi&49&xS|B0~s9w`p9j9rm=$b~B!d%nHTytoeE~1|fr)lJW)oU90 zfApG0zOC0Z@@>7Qp|^FKrpP^=dftD!8mXL~%{{$fq%kTMxu?U=+gE+qxO!Ek<8V*E zc%Dw_m~c-wq8ws)^BFXF$l*^0ln<1VqwjG&#kjo_Eq_H7LJ(bFSEZkfp&sJ!O||7aTBpiATBq=_O;vBF zRQkyn3Hat-G-ZuHAB*qb06HoHL9vfpDmjJh9sJ*n_ zou7C0i&Z~+Xm1)VfqN9wYrN})R*o#2Otw{PyH%g6I)%e2Rf9R4QFSVZv#Y=>i!MI9 zN^tGZ03&pME?S3dzp6Ac7p=(CA=|I&6CzKCY`>~+)I5oI76?D~*2gLE5Y2w~b1u>B zdxphgb8AK|c&of(;l}e3KNInaiiHiJn5|f};WPZ)Nfir!58~PM&P(~SU&X?aXHoK1 zAHvNKRP)V}iiM}Zl{0rR-tSYf==Py_VBseQ4J>*=fVs_?DB? z!9=q+ydTg99@7lbEEX$Ub4zoSUS7yPFSIS(R+=} zyS;ceB*VqWGnb-tK6rlbMm!aR&LN zF3D17%y_#lK=Q=g()D6)2?3ofhk#F8<)ckIP4ZTsX)Jl^)%X{R@O3|Yy!|fYKcPCx zHce#IcnE!O+~U7qT{Kj%jcdb^`hL;i2q=M+L$TZ|f3%NjmU^KoYz#n^h7|E;LI z)wVb{lTOLp*b5qZ*w_V!Dl5LfDG)V$(*xIwqbU(EfQX|hafPEPI}JeU-)Ss+K>*Ty zDERPD<3FJS$en`N{<<@~020io`(0F8egM%r$%_E;(m;FU_?i?}+L8yrK~PDl8wo%j ze#bEhAYmDPHv|BPRl8&uxku}O5wJCy5wyna=@i5{c(c-u-%*26&(f(@-HX_cI@zi_ zg3YOqk{71H#q=LP%~o-bd_%t;}ik`|h3uDZve5+Kq0_k3biq_P*KmxAN*5(`R_;L$l zyeMB+Ceu2Y$~OlpDV3u&Zr*i@#3rSvIul2HsWS{6C1cmzaWcz4R3f7X4>!GNufi0` z8hh35M9VfdfVRav{?D@dDML%x5ZdM#Li3r2n#`f?Xw`xd-XX|2cUQa~?v z`~ftp%!g*KlVfI#0RjO51OggrA&`f7({yu-y$K~=jS>@IMW$p1xe-Parqc9Hu<|7oo7&RyWa23Zq0GP}TfcbqpG)h~#JBcn3 zd91cy){L13>w81pqskQ8*_6%HnDP@Qext0A*4207zfz8~~IV zX8@2h3k!f9NN^kv1i%R;Ic>StBVvd(Q#hIsF!~8c6Rx@g{Vp3|j2db3=jze#m{b6l zlp9xp3Y>#3W8ge^QZ{hrqdD${$``|&MYi&b|CF? zMIdl4q4kh?vD4>nn<++_2pC3%yA4;}0i%cd8e@o`Dn4UJAA@S-P#@#}uVU!m1XcX+ zATfU9Gavc#pHcGyL(fZ4%mhQjdH9MLS|Iy!0T{ZnUt}>oDvL76eBVdv|jtI!(NC7;K2;gy?$b;^CFz7yL$D8;UgYl!C=ZXANFJtUT zm!TT;Cg`!QNq!qQt_>AQ7YZ8tuR?AJNuzK;&qjL)M16^4jHsR#J$I!+AT&no@EOZ@DTtDfX+&M!L9m#*hS0v1Hgi z5-y)#U!H<_tJ3}jW?~+T^Ob*IhA2Tie<#cwjmsk_6--=4= zJS$hJPp_@(WNc#b;+3Y(=A`~uFqA(X3d+T3I|7uuZrG{94U2#*XauA=5OjwH{fEPM z9&KozlWLByeV(XSTj8hPMK@lJt=&}DRMIegPU>|mzbmUd0x!$fMD@NEY4XJAwZO5e z3mA0}|WdmPYzK4^@1 zX{tLt?w^2)bKU{t3RG3bq$I11^AG7%MmU1(i_wHaWvt>@pvq8)S9Jph6PNZv?`T!V^ZT<@hWsnJR0e&u zGgXExgkNQF#%3zR%2F8}P1rp?P-QH6Ak=_C_(mcs4xjgZs_-l!U>(B#q&8f2$JpUp z`-~wl{m~#Da$>39%UX=9PSqZR-^1GD%~qZE2uIu9juHs%QHN&q&|7%jO?kA3i8H^b zJ-U#$yI}3{@2{TF+QU0h;BHe6aoj_1?9L^{AlB`DC|G-}45dAG&{MgF9hv!sW+;LU zm|qb3pzZ)4Y}UNHrn+qf-`o%vX@1V7PFwB#xqleLT>2A18sY@kw&iK#x>QxhOYdZr zv2L%UGFGEo$xUA-?BNY4hfo|Bp>;iqBbfFzk)eIn3_Qc%mT3&jD|G$Znv z7qOU!97GZGdJE5A)oZoc<=X?anf$BywHf8m`PxhtNUzPf5atd#)K7pmOM(Js3${A# zjeB-Qxx+1&6>2zGq5AMHsn_H#DO#yLe=4~r=1(Sxq#aW&aSXml1&P7e^gwMk0bcKX zvpv1@4!bZR6ct(BT?u)q)w@uM-PdRg%IR5wN~~xvY{$8^*g~Z{3+i9C8CSJO|D7cC zUz1M%nNX`AL^&M&hsF=7|A>h#c#p(C%qNu0Xm0c9Kg)&U!bfvfbp0nwVXpsVt~vBy z7jdhH)_?Nv>h<4q0s2q=)%^O8a_D^hCkv$4e_V(t`mcMa-fsxhe@m_nHN|-~NdEOp)~+R;m2U_rrkwIl zz8%;4?{CKF>~PRu3oYmnGM^$C-ofXapOAU5^K4mEa%3mZQ=RYh3y~*?qp?YA2E1WZ zzSjqGa5!d9!qqcz4jL=%(M?wMW}J=IZdI?NBhswujVoN%`=#@kOLyr^=F*+^Xbl)t zrae^C@&rA8@#?re?a^VlH67ZIFJg3olqZn#&@g%oDSQ#b1)cL){m!R=6w4zq&|mUH zctHFd(c^DBSaI7(u*dL@_9+-ewe7Y>Zxfd@Fxy5G$+L-bd8(Caqb&(m>TOItBiI6$ zCW7WldlQ89CA$@r!Hw7~0Ddg&8Q27R^8L&dvxn<(@U$mU^0pCH>Tuj{9b?rU#iMv{ zkGO{nac_GGU+t-bsyGpyr@cM$9NmvMM$dIy{z z_y}0XM=|U8Ji$7?7rjnpG7V-Ok5j9FL^{Jdo_#``o^%|CVq{KHFd-d3T|F})VL)Vh zx_UxFqR}D#%Qw3$bI9j?kY6MNYjG{kIuIP(zHy^VbIv(H6=%p%6mOEE?y_hRRKtoCd zyjxf9xq1m4@r{kFy}}S>qMtU^4D@B~$p;r)pYSJCA+9SsQO_k*zevD=LoquLo_He?!jT)#s$zF>2iUxb>yu^`hd(XC)U2Vm- ziUS1Sk6IOT7`UraVPwuX0w#%5 zatou(m9Hz)4IRvh9i--!vbxG%DUYl2m8V?AuRJBy|I7rjk9I8Fd20)^2oAgkVlp$gFN!74D!gQ zGRQ+uxyX}LkSFQV-+LE&4hQ{xFCYCq^%kbTkHeF9xmd|b{v@wo&#LVx!p^RRoz#QI zBI@TXJ*Htd^*iJLuR_!fg0u9<@3SE)AMbNN)VzSGTR7%{C|XTSb_sZ&H4qifqhUr_ zs(~o0Fo?3uAWG&I4x;4O6^QC!+UH=1l4Z?6lq^pMqU2K}lbAc~%HA&Pcft%B>H zPUxV;2(%V`n{z~&MH3B6>vM91(t%}H35Y7k44EIII)`DoYXNKdZ;b^uP4vOax(foV zV-u}c+;9BnRkYe5ctJ0JARDdnF)U9(wF|V`%rOJB3g@;dqSbb>WhdV>rxC@lrH~fU>^-DaVF+sExCYFg>%e#zSS!Y#d;U z2?pB&yj6r5^pObMmI;?4Exd820VW zdan+4!*L1^MVkoNy^~{XLF!;v;S|=uZdmu6Ii+wQ>?U3Ci#AChU^f{Bc4f{cuq$)Y zz-}i}3g?4e`Ct67E6eMLUHOI|cI6v>*rhkTu$#<+-Hzt)y-)+YJ%B#2YXP_Yr^fJ- zri$|$xF@E%`pezMwWosf{wfCNn^x+;IUIZMJhYzx=QfT7g0sTEr~zja$0RM!2~XY| z2+meVfU^|^oMp}?;4E{}fO993_vQm<`Ct6tEX(T$XZeO7oaGySaHcoB;A~}qb4Rn~ zeo_O@J(0PuYtj1CKQhLf^vGettf%O=}(~z zJ-dP-TG&AXZy% z=BEvV_ezcHtaIi6=xlW5ZJnjAysfp@xt_DFcDxoqp_g!Z6P*2#&awqpGq}77W#COH z&q1M=aCsAG=Qs(Um?!+2PEXv4{`gHC%T3TwrkD(tL`v{!u0tXow71iJ@25W z^49aQqK~V-Z(Mh(8u=`Ch+_%si%WEB#Dp2P5#+pa1ihhGf%oX zF>D?+l5_#Q5U;vWBgyE*c(N4cYDDImLydG1F>E+BBLAyijmZC_S0nOmy&92k>(vOo zty3f2!^C=(MvWXhY-nApJ>Ij(7y;A7bnAER7qv79c5-mAK75;TJ*%4LwQ|-p*L_E) zX-qg+=icsWnpZd$YQUm!uxbV@=F}l8;w$UZ}oP+c0W>=l$e56;1 z3@e;xd*{q>bk~xL{`p3L{_;rVqT4Tv#l|dd7`33GV$_;fOU5oZ4BE#!9LRLDg?M?z z!u0zPe=p*d6$}6CVsa!OuBccz?4uk5_2X~O1&L$rS$x^QVqpmmv&ADIf&3!4Bh#;f z=nVna3o zBK?a4oOrjC>G-={0fOB1*Ui!B)!`3A#YaHl*OFlWm;B7YSVKBp%yI-$Ykyn;J_s z$H69uueR<^fbf~_yc%1(sjjI69J8_1>n_1y-BuzP+&jp1XUvM*6Yog09M~I6&$yJE zI9WU5+x*ejlA|Ast!+P2`oSBxrC&jV`&v4VmL{&jRUp_?S~{t;^gN}dWgIOn<7jCa zM@!2%T3W`@(lU;gmT|PSjH9Jx94#&5Xz6*}(n+_aolWw?GgO!KFPxU9ZSj?2c4k9B zYbR@G^+UrZMQbNh+}g<$w{|ksnXNtZx+txkejI;9Y4GmvwRhJ=`5(em=kA*R<3-$A zt=bWr_*<`8qc=m$=%|5PP)Pu$3(<*v-L)5uq`A9pP`j%oyQ{r<9#Pu}WKu7Bs~08e zMX7qxN4@B)UL@3uGWDXLdeL9KD5neVx}+!>q@2yuW7V!}xm}mGOAixW_nE-1d+)h~ zeOERvpG>(Kd2XXpEN#uZIu6^_Ttv_-Co?E>qP0r z590=UaUFWMuNU_|=6i8A&l<_41HiP6_FU16iBnLgZmrsTdBSxhdhg+Z_Ad}L#5i~| z&H?!3?>RvH@T)+g{ybDI2*}@rZoJKEX@JhJX=!4;8cE~sye3Mkr~jtM;ACwN5Xh4v z{Ux;{CqLqL6H*0bm_4RT51%l5fo_xoWZGuC7-LXN)Z+X znUFURDUmiLLG>nBINKddQov=yW7EJop`x~O$ANC;j)ULI9S6jfI}Va7cN{oZ?l_pP z+;Ms#q<&J~%xYM+qyhZ?fvf{Qg7X#$;XQ9g=J5zLJS|zb)KF3jc-Jf zIx^TbmQS|=$jYxr`75flJ^Ue8+MeNWDblup>WQW8e-VQM`S8_RX(P*BEU+d*C@F3C zLE3uxq>WsyEL(9`+Gb`+o4g~XP2Q2xChtgTlXs-F$vaZo3C3bF66XwepF_=KWq9z6txatm3i+wdp z|4b8opQEs_I zALW)i08(zb!yw#JB$oa!OKdQolq<28E3pcn)Sy6#y_X%s`GnSIwT%(OCRDmkIp9Mnzd8lhg%;9e-!aI!WmxcFA#2~yIXKIDl z9j7hhJxoR6)d{b6zDT84$`W3MUa4QO@a{k_X0HZ&<5&P6^!PY-f-TJ%JwiTd^oW2) zj|gb=NJ3j_PlQc-)V>Ec?P~iT*t#3+dvLtfw$2+>e($O%JvL3Wcv_)7=27fhUyf2C zstErOGbKWVf6L!eM0hIIHjD6bj$u()b=fo)=3cfC=385CL03`+s9;EPO=httF%jFH zF`O+{$sfXS^@<@0jcVT1l)w>fsu?Y`al>Pu$3Eh0Ev?-5sA}cDM_()VJxW`-@6p`K zeUJK9?t65&a^IuKmHQrTuH5&ibmhKBuj78x9y$0W&%KWEDu0;%_NP(?&NK zX@*mM6LWX<&k%#z@NZLtkR~%Y7f3@CLehS4k>)-ijo&dQ=Z1NF(q2kVfA3A&tE6Lz<~sNRxDt#yk9Xk!CoMMmXL4 zNRxDtCJv;zQzDI@yUd+&vubDc&I>bSZ%2@iokxT#VT5ocAYhCUt^{0l2gW?~*(jow zrs~sU%n69obFPe1hblaM4=XA{ zV{(Qpc-jDX@_P~mJkeRT*@lq4nRmiwTS97r2cXmh4??L49*9yCJQ$@WctA=`@Sv2M z;DISM!Glw3f(NM71P@YCLKalfX?|N^+wAiCJzS_#sS4B~)F8ByV-)oQRIQXyb$PH+ z^gt+uzK@=Y3Rpfj$_U{`LBQB0+$gx}4(xjKGg0KuLj#7zH76?aKQb{&?Ww4>6-(6w zYPImU6x8}DH4UTIGaMt-`s5@=td?m`SB!6lz|L2EU-rQ&k}H;UKiM0|xHtH4J1EQ8BpgNr;+Q-+jlJy2wL zZQ7b>X$dsH8XlX7?PftXn3Ae7#FSKxHKwF$Ofn@^W0xtZ8skh!)mUgss>V!HQZ=Zj zq-qQ{B~@d!A+@Q+=g%V3jp~0d8*s1cy;|;G36)VK+mIWCKG4KIt|l*|NNq4M-bs*0 z&hVVB@ux!pBYVQ40;B57J|_@USB9$X9ieKQeP&T> zyVLw;&wV0Fm8rP7|0EYT%Psnrf}4-f4aUt@j**G?6>1}**d8$zG2rHvpA5oHzXwg= zCJ~4P;wBvk*Cz*VCUfHE3t zz(_1CYFu>(5`X4jqF_UsD5JDUTvT_OU6!w15~Y$=0Pc&Ow8ESD?n~)g3IIP%HyD8X zP+PK#;AV~y0MA7X0Q`;1f&f_O*DM0?@dv%m zxbF=eU$(7c;YC31Q4d$*p>cOqpK>u^;liiKSA6X0hFfpEv-}E-d=}TnDT~@KiD1@X zJohTfJ3iiMZ^Hevs~TRK27OF>jGp`S9cRB|?1I-S=k*>x{8dg)RmIot-1ZzjbH?>} zO*}jYo5b73E@+Qce18$LZfGvU+R29LWvORk^xGJx-`BBllAdc=^X|GA6Af$1>W(Dr zO=}Y^Z}a{A{7=qUc|JZm`rWC&#~aoRuX`&Y()bQIsfX9SP(ty8?vC|IYZKM`S6J(N zalI^V9J~H;`t#$5H}CB;E)KKgas0pXi||dVfGJMBa`FE_InjR|zxYXeQ+-+e=~Y}a zr;Z=~T*bm$*T&&HI}}5GR^0yF{CG^@^R0M^V`toOp%beffmp+uo4)<*s9X0OMdmJk zFS{DEs-tc>y3Zj7I&2RdV;$LI4;*0~*=7%{wvIIKP1*buGip@NpngMGf9VU9%|tx? zj6D%gH`){NG?tf)q1EbxM$l~SplULk2Ax69i!FCsqn|lC>X!AD?7=9Zt#RV;K?-MJ zs-42wu&ej;Ioqvkt(GJ9ocpbozuR+uNvDU+xtlmoDfNc9y?>0=c*LGN!fO1xJ-3>8 za^{{vJUN`)D|a%o$n|zf?&Q+k$$fGs_syN0$emo4JGo!(yn%X23W$enx=B{y-C zG;x#Q=xj6zPL!dRJj5-zgpBkQlI0%Z%rDa5*ha7ISwp@wnlH`%i4Qax(PF?%J|XWUgh4IU6mj?g8)~|pOlQpOax}+M_hrq@4P|;CWW5CibCSgE#w9K4OWWL#|lZ#9DEN-TJ$38K~!7IVa4<2u+}X!*!~ z-c`E?ip{DWJpEiqK^sjsL%WZ$>W*RsG~U}I?je8N+g`#~yDDvPY1bXb73QV)tYER7 zQPtOOn=A@}fC_86Ekxv+0J&hHed4bp3atsy z>K0lPW86YSt_dLsB%+a}WA)jE)x_CVW7os-hmY*m$4O~oz$Su2vEHOYxAw;XAY*ej z*h}HE-DWSH32W0{I@LO|SK6G=^tB`QQKgX0SvrejcpAn(o(3Tmo_QoMASDj`evzL6pmD%47r zpIu>(hE>;q04oun5=gV2@ohVGN-tENNP?S!c~6o$WoW4*xqTeT<)-l+Dk(hWLUM6{ z6OV)kIFfskBe@kOk~{x>uH+u7jx4#r5Y~hkFa$_$nIj{E3zyt}j^v)2yXS_H-2P6f zPV32%n{XtzjKdj2`Zs3RnI()~3gxtmI@x)(66!cY(HPvY?`{oZ@fS#lyr z8TkOK-&kQUg}UBnZ-Ke-7A~N*-^^Xx{p>B^5XCCxO;06TUdP(QU(%-I|7fZFkfjf`}h!f%BWiv9^mLOFKBZ9Jr|u>>>B zu~a+!#__tNCH9uv64kFWE=E!RDQqnkC{pI2NIwTfxSQla5oldTk%111402H9WEQi7 zWYoiqC!?MNVbm`;>-D2YT_@RsgOlk2;hA1=&x6DW{Me`kFYSATeATJp@B>1>&xQx@ zxMycZW#KRL-+v5*$o~Lw@s}rI__N?G&?2{EU)$Uo#6gRE!Fh+z$p)jtVkMUUfC06IFdG!3e%ceI#utt|MYxGh%y54Rt z2YRo=_ynxc>+Iz~Z@!?uLMb^8XFB6_%x5*v@sdW<4Tm$jVfq|DWpw(-_($%fF{T!m z&SM=0uLJ3@X^+-`DP`J2#JM>gd9RM+)-c?fj#BYOj4qJ!1X3OvMvozdFJia=4|i?p zqIW`8md{J1p2rMi-P`a#J``)&*3f)YsyPO7>&B9X={Kd?+%LiMITr>uBI=bB{x#i+VA-aQCma7ERmu-qEamf0^-B5SKq>z>RA62y&wXrGQOc~LgFU3SP z7Ob@*9W3!kZ;EbVKT>Hd4C!a_r#w2mha%VZ3giE#3i^OCEa*QP#DZ>tvRsa%-zH%{ z3FBy}bc`?(N4D)fTOCdR617V1l-d#R97r*q77>bG(8iMv(W-mU%jdJ?Em-nPu_p4x zX!bnmKokO83ar&k$J-=@^tzLKzEQU?w=iaa@^vv;fe|Fxh8}1lxsLBPr2rU@{}|pxH<6O*aMir1fVb|R-u)*@rYrYcN4bC zt}lRRKA%QFBm3=SR@8`nE5vo}H8KD{yeB#r{J2K>OyL7SKt2EjG|E8W_yAtEyY{5G z%5r0IPH*%>RS$#TOZprCCl#W;Uc(S|a6mRhz2$|dq#vSsp*96X-N-QyMA7EcV2H}^ zY!DEYEDWNOg+Wx(45DOi;UG$WU4batna$e_8DZrI!$Fk%U^s}9U(Z04{6Yqzrn6o4t5{^ETUsDC$-WQOc17jmeJ~$U@QygT@j1K=qtt(8^Qpx3d1tX49jG0 z;jm18UBNQi`^@ANjAinJ;jm18FdUZ2uV=7Kej$Tp@~I4#$)_?{CZEb+nS3gPW%QJb zWtM_vM4ir9=G{fC^1ZuQM%{|BOgXH9SkC=ewuCmZ<%Kh!=Vzwy{2*Xt6P_PjbrZ6! z=w&R~=|kDbc5K4>kK)FEUWK*wIPn&+HmM{V)~Je^m+?=qc9Aj~^4%T)MtdWbFr=A#^=!z$e8MbI;nB(dKa*?YG0lB&;fU64u zTwN34ImgizScHAhjyLfyc4!>!N*CDwwEw_(lDQA6#BaA92S9)SVdJV$v2GjAdjr;e z<>(J+)rmFY7W5J6GkXIUb*D(58PE<}0TS4FdV%UW`vw|AVBSuSG3JR)08rSynW((sGZwj$ zRg)2qHoYwUbYwWL!a*Rr*nDjEdh1;FSoI(f)r_2vgFtq(F}a7<+mX}=_nn`fpCR>W zBZy$-Vv(y#0*V@+UvrZoA?{X zHKJnm2hV1#e&kIZRv$zyWnp#FkJW!c2?SPu1g+!Q{NcswWKOIO>rNC{o$Ls#PId%V zC!=7s%-IC1WlkEbz7JTPnHLcXL1tot)iM(ktd=?Xv08r3kJa)GKUT{({8%mD@ME=n z!;jVUh8L@oSy-KPvD)jlbg^1JO2v!S)R}4EzsGx&%7q#uc>;!Ec`Rfa6Gy-q*9AIN zxIhswN)Hn#-EA(=tM?mYlII`-rh>t+;l$K&A8a+QJr&WX;v6|x-|03Tq94#9I?=v( ztnb%Q0)gn$(ULh3-O7pRCQenc^R{5?+v*5Jx1u1r%-ICdWlkDI-@r6EUh7+CVuI*0 z6B9(2Ir$M?e$9{Q@(n+t%QyUpF5mDYx_rZr==6pc(XA{*w_HT`I&WP>S5KVrB06Kn{@quNK`K2m+YmqDRO4s% z8rPc&?zaqMa4-L-4%}Z41@4t-IRWmsb1cxck{jGjT+2mp$6jk*zT~=Air_x%ukwckjVGm+HWMWhijpK~Lo}+B2T-X5jP&c)kT(*Bz*-UX5dScGpz5A)vIlNUOA` zBMrMirz5R>MOS*iAAZ>wm(rCLZ#6m@|@vlPyzEl;!PJ!I*FEl7VcALvu|?3fJw)* zH&m=u6`pl6EpZ}Iqf;sq|GKXfrgpxPtH#?vaNo4+aVG%wf&WhO-BGq zuDWr6@@3sms3YQ=qP*q zFrN>*qESQ(`S3}4g%6*OlE@lG+==A8t|8$C$*XAC(;rpQxZeKB!rPC41{ny*+mE1| z1{u{mjIlI*zD6mn3{}rN=&8K*%yR-!>$wZ(1=24X*PW_|PQw{-@FM+Ur%n&;M@3A-Lu`*L#LrNJ-(!1J(SF;hsYGVMK*RcN$}|n8rZB>PJjt z;HsO{&%MtZLuh)sM*S4kd~SM=e|gTho>f&fdjPAdLoeu5Rco-S@-UCmkm(@GA%;w| z(efcx6)`CW51GuTKs@B5L^m3qJV#xpBL*v0$EhkSx~h_;FjrMF*Bq*91D_+H8#2j^ z%~h4m*j!b~T=l9-ep#=oB0+@Php8A`Gx2#-xSScF-3!b)t8u}!Bsb@uRWWM zVKx1QZ1q*N4w5b4t^)lNGgKvTLG(`pzO%`=dR49Uhd!*eKK6`GYwa`8S~X~9p|$?N zu~3e_+*-?gZl|cVRQIBU*`n4G<6K!GJxXio=a7uGmj8${clA#7*;?2S16C=QxmB*@wIQ(9TFUds~eg>pL#9^Qp0WFF#LRKpX4yy%^Zfyu1>_Z zrgweLb2O5FLdr9`A_|mupp6B|=#nR*jIQpmT2kPUZAB%P7teL@Q>GWsb&xvdxENRU zjB_1k{GThcFRYIuvyl5#Rq`9P|g@Q@mPkIb>0h;g(->hm|g(7*UW3!03+jzk~IUW<( zPf9NuZIPuTu@WGi;~euX+mSis^Ek^d(n!5)aE??kSa#)U6d&uC1_gEpx~x*Yb-b*M-x&>*QLN#hrcSI&*yjY<9RatDNEv z8#u+CHRTkNYx{ZFXC zyds`^R;?)FEN+g0FIQc3lZYQT#O^Qs&R7zT8DjT7=KoEV@>f%=$XEZKrQC?v{Ym63 z=G;H_AjNpjU8s2QdS{qMvlV?FVs{q>A`-hxl@*QHJ#*}I!i;G&;qsb>F#r_ib7g+K zgNfaPa6@5YcMSxkJg%9bJmne-%2Te%pgiRo4$4#Bwh%@Hk`7CW;I`CC%_j<`xd0R?v)V0@Bg&ES(PPX?dlQyF}cPi62)K9#{I z`INUUTzo20x@(sD-F=_2ARkwh?sxy%`2VXwwm?w2fA+t!fh-@T`*hU20J7&f<^eK= z(p>{&;XEo4xsNl#V-*HumKl)A+`<8w{JH{U9ZcyS3}mvb86cD8$pD#rDg$KlsSJ?G zr!qh$pYpba3uHw;_q@mIuKN#Tu|9tI+&BEf_|L1D_TPffeZjrin3j*v{RgOafoY|` z%o;rA#M4^++j8e%&QMknOty0uhSw-m-td}+${St-QF%kxwyLp+ zN3*yji%jmVIE-Vr-8!JAt`VC9N^9y4^%;W6z4hO9Kpl?B{QycJfchI~9nS`MNQ!dm29aL} zx)5Iq>q0Dm$=xr^Nf$1oxf2CYC!_HG%A8GrTIQqy>P}>G&j-}$VfxkB-6oFIh)lnJk+(Vm&aEhLE^{`4bD5I{&O4FmHy@nK z|Kf*pSzbS!%QyURF5mFOxqQP9=kg6*+j`;L%7XJEhdVI@Klo5h^@}U)PBX#REip!@ zB8NMeKbG8KTyH9}UpI{B^{qQ~$R3WveH>a&Ap2t+i-_zd?&Kn}cOi%S34rWgw{?-g z-EMuVrll#mKjqEu7=u!gz#aapEMBJv78zHhitZ}}f&16L>!ADUSVRK%ucAQ(#=poh z1>=K>a}yah!fZ=E4}rVigI)lEyVmB*FqjwOq#?Uf;r=%9sgtcruR1*HrWU@EtH#dn zVgmOt8bbN6x)Ff#e{|yj#_I3CXwhN=Uw~ zS3>e_y%Lgd2lo}75-L)+%Ok21E-`49X`F3z$(dnroZ+q%_|Cx%UuzEIc`vf-uCZ)Q>U^_c-y~oovX5raI6DVmic^6QDupxU&5;>VYaBU z;3$=~(W6wBe%`1^+D?v=<@eWAx2&+YJjw?QclPpuMb{VusYBX6H$&Q9Zcn_+!r6Sp zjUI}+eSlyW%|qQj3d@!^+tYZV@-!?|-st6RKgsz>7~b{@=h+^`+ur|bD39flc-zl@ zI~E&t%h7!S2RLT&wqJ#27QF3$r%VOciP*gn>;eoJS`~TQi@fdYm<^jY#`u)(aWSrP z>7Pr6+Dq%*RSm9ovg&6K?d|Y{Et^SOJy8i*N)KHNmw9WuRiCOlg~KUTgE^d0bt;Fm ztH7!ZHuc$HQ|DtOs!BpIF+0axRFy_%VitKi$6QqP36ZCB%tck-sCg3WGM)T&>*Ex7 zXqG?uML^erw-OZ#4`U70+#1BoD;CZKi}Ktv5wECNn3xcYRV@0{WPa|XiiHn<9E8dD zUB;LF@F@03R4i)vFm8ST>ud2&NyS3D9PbZCyidiVi{6O`7H%C(Z&mUGy($*H%rwh) z3Yz7mUuVNV1kLiVz6!VmS8s-9nd$J+z|eK$K;PYlW1=6^9;#kdX79wq*P$1f@hn&M z<8G2dw;|%-@I1>^{hb_7;}?54&+;T#IIqLd!2-$l74{^UJ-T+0UK`x8ED~rnOefTh7~)uxaV_I1-XAuiKNbHiRz{xY&Y} z_Bb9+wzT8WyX1v@k-!BrNA|bt=EYJi@rE@6>)I3c#I-abO-#qTK&|VHe&-a2F5_Lfvk=^-^M*mRg#Nyyzi; zB&1sgC5Io?_hKuqKk}xn0_LTH1h3Ss>|&)|yIFG0?!A>a&;=qj1tcX{`LQ6r0xc_o zqOg2F&ok%DJLkM}-gD->`-30vKku9~bKaRbbLROx&pb2p8T7zVLe@@Ob$Zn_W3zGB zfHCuW0QXXjI9qAf{8a0kyAs()KFiA}lV9@6V=%w+Y2y1U{K`6c)J{)&k#6w>%K`EztD}|2D{PiWSrxxL(!V=e9%W%9kFt6sk1~bi zk&6zO$27~MG2ipb0GSjsX*Y?PGz4^tBmzE{nGZqkG@1OvwZ<};U52+%#IpN=<;^b| zzl7@8n|w9n$x`&nG4qy5{T|Hgyb6tmzM}9t>+nQ7jpV@-+DyxY!#(VVu=9RBcw)uH z6Dum7$P&WvMCM3%QarJ90G`O|Xz}FD$>MvsFXzV-`gcd;iF|L@N5;m0JBhuMU6~ ztA0T>IdL0+9|fCRz>cV32r%4#+8TtHa5k zHI~Ng(|T(qZ!Q>bKx=3bbR9%~;vbFQM@5&PUCD;aTj--OT#R_E%g~bKU#cJe&wRym zkiw(^RdJ3dR%6)ciLCR`$Bf82&%9A6mLsg!^f)m{^c6bhu%Q!K2TEyC3?3zSWx}w7 ziL49Yl~P@;LG;Si619}7>dYdMQ)d`QO2Mv)q*U8Al$57jbIGYv_#ljoCOq76yxL{t zeVp@Zm9+{dy#eFgkqt1fDh%^n$IA2s!w3R`5d<`dLjX%lY^0=#_f~riCa9L#OEE$9 za_3oKn?G#~FIjRMX$E)Q3j3#-zlREwx5E_-I_)(O3O`JS(P=lMWC4>CCeW1!Cewvs zGTfge$duCP09XyXlOMsnKq-Lm8C_4NtwF>lO4>bT@WT^b+s`0$4@CRDXXf7 zNy@2nU{V&GgGpKK98AimaxlqNiVBk*Nbj8tgvoJb1?|GNb}^8fE*xD57$b$F3wPat zk-r~nj*;YP)??%`sV4qsjByjF@Os7whSwV)On!I`Bl-RY8ehQc8+_$~SA`H)XN5*{ zubDC8YOGMJIC!$RU$;8j*t53iI{=fJBhI0vt? z+BtZYPvzj1s}vPpJCJm|G7w%D&??hVg!Q@pri*bc0tQ>*`omp!fbBTT7-{^+DdcSO zV^GbinEFo=?+~Y+c?Sae*jJ!24g>m+@I3_X4j4&S zjJqKW=o)KRPl2xSxtdd;2iUv{v35NFD_K+u33oIvEZJO2${1_gE3Xo4D~nt^&tg_8;kBEU*YR4<%0Ij|v{O|ROB#P^e#Kr2@LbM5(v9}g z=8k4$zbqL1pN|CoVyqtn{9RY^WZ^1CK$bZI(lrRW!!rNP#l}dPB|nf}Zyc-I^H(1? zZUt3eoN^9(LcaV7oxX@h#6A<>LFkKZd=;oK6e4z=zKH64HfLfF)E8+3>Ryc_TIh@P zrdNbB+(cip;I+2Mzg1(TiqtzFEF3Qsv@>L4y3(B=K^@Xg2Uth@A@#_ou z55K5CJ$Vh>F6|pphaF|aP4s!&oDXN90 z=pKjpw?1l&ky&axy{0$;Rqg1H7&oA*WPUx2l}yhIbxI~0J$!F`LZM`C=c_;^qtL_a zl#GcBUQB)$G0!Q623AKX87q#GktLfb8CjA>$#fz=d;}#UUq`EC9{g~gl98`cNXbyH zovCDGCHzW8zK&nX$ba~i3|G}m$yj+xrlaZV#|A2y1&>A=l)_?CquD!*b!=BN9b(c zY(ASeo3~)s@y?#uWlgGN^qjY9+ zh_??n0h}eN_FcO&_M+>o#CpM0au&X+7~1@Vuau!pFlR|BM_a5J=IF`u1Lt1M$@2p} zYGk4+bn3;-!;l%QP_LVK*L<}w9sVe#Y6d}FOr9T6Q7MhC9UgtNR;#X*R}C8^i4r<{ zsH9X#H(*j;Q#Wi<{;eB4Ij>+ogu)-Yh0A|tu(G>{)L57kZ^85QRH(A!d7-$<&Yc?q zm49JI|1R7{@cn-<#`f$71NG#RNKL&ZQd9Fzw75;(X?Dez-(%cfsxJHsIB2k4;U8*r zy3mBezZ&07=)%Q(6-gJS3+qC&c_niW{}5f6HsD4MoMRHYFdd&8S=Pc_7s^r#=)x}I z@Q#IcqFN?U+PAZ<`ZUSG|eH})9N_wX~ox`vKHpr zQfy!f;L?I~Y1TzgUpov%G*h4k7}zNTJ#%75#%C%-}*?b$sC z9o!PAJr`UbX?XK!q~Xn8da4*T>YLD;C?@m}(1acWT5yP(li3$CoATDNj@*YAQ&b`6fX(NO>A5k5|)UNa33VZs>g0 z+Hao(oVhpF`3t}NHzGIpah#96>p7le%5MzowP~h(6|^F>WP5qU~0KQ>kKyJ(bvlN>DDM5;)z2DlrpO z^hLMCs)}M;qP+N)xXi6Y?3O4Sy=o<-8D#d`_WnMBE|eLz&cmAjp$SZ657zuwPtURD zpLTwZHUHErh!+2;vHToZ^S@9B{`(g|s}E9qu;!0UQ*z(45&7MJ;7G9M-+EGxHUAIq zBG&vp1Mz@W$q#@v|0ZV5|DIsY|2*Ucns;DFag7q2Ly0KMjpaQwF5ELwhCD3v z81r~(Hl4&FQ|LTHnL?v}nL=ZHnc}t`qOf*pDL%k*(BxYeJr#weel5C#O1b9Ff8HeK zKM~MS6#?(VmV4v2;X@OF8j%ic=sW_oAD0`e+3XMSMv8IM@hYf1g<4^}m&$BNuGre} z4#4*DMC-<;mRmC|i4_}gh(OcSTQmD`hCoF_dzn43IaRxNu_Vu*e-#hwntFT1GMGI7 zZ&VtH(F=;Dc3RLQmL}Z!9hnc2l!loW-FA^^_UvIUn$LJe^XS5w4=0UZNOjjd zK8EFbcTcZe2b0+MKm($4C?xh8b*r7Q@W{0ZhrLIxt+;Y+MU`t=LYQ3397(Q==djnw zwXBPK#IRJiGQ~YUm{VLQJKZ$8E_F_k4)ohCmTP0u_~ty7Yr=)xg(6Q-_UTNEPw57K?aA!Yksz zWb$XC0YgPx>q;$&cwsL2ZW8gR;-Nds#fwb+f+x?#)!}`u=>ss47kEUqU z+s2ZRebKMIk5btB%0c6IQ>A=&hNb+yhZf|Kyy5)LM8nA#J6r8d_QKm!?HhNUrH-IK zgjN+x79Qj)UhpSWJb1EmY{mJCUeD>ChXQ7t?s@87FnhB~i?Ej6GsY$rO@DW&lEX}T zQmRU6Q49bjcV$wfgE`%Ua6_r9Yal4~$(@gxa@j~-V?lY!H5rt=T*ECf<4Dx~?7-x|>_GbTu084a{{66sZ%gNK_^*CDf9YrPEwcwO!GZth&o9;0U z&WXLo@2>*c9KojhyVvu9ER45&B}x`Rb}_zz56BeWat)A0^Qf4S>1u$?Dh|jjGa!?t zMFTRKy8>h#Oj{ldWU{U~Ad~gU0hxR%2W0Z89FWPUazG}Z$^jWYyN$&Gz@=dP+%(xz`2E+=by% zX+^IgsMObM4l4if8imR~yr!Y@53hl!{KID^;exR2B@B=md!wb~uJfQAq4(f|EKz$UDS#~W%S8Or{q%1X@--tdj72MN*Gj2T< z&d0rv;ry;<9h^sFpPskTh4UkP6$s}F8>j}(O&qDTXvwj5d)N(^SeZ6#q(E>Gdl(R` zNpi3O8xG(&8WRZTR!6|O6$j2`$tG|vOVYr3Cz4Nx!MS`FKb*_@`r%yu!w={3AAUHO z|M0`P{D&XT=^tJ=xANe;quHK6se$vOkw>y?@qO4|jS(t)UOv8`aC))r1><&8k^RPM zM)v=FQHSi&c%FZ~-bMCWd_%{DtUK(iFtVGtlS|0ng*4A60J3}C*0Fh&FVP|Ul1LsE z_8f$6ZZ4Ynu!}t2lb$yQrEDf2%u8Bv;B&?esiOPhA&lun9P>v#FWd; zWoqForE2W_F6LK`q9K$P*Np&__tA|5lz;0+1IoX3V*=&hx{-nMZ|(Sizf%4v0e|Zj zLgTOKw9Gw`v@`gQP#p- z3CU6mD4{MQHjbu*@xt5HJ7 z4j*6F>Yi~=8RKV`n40}l7bP7JlBNP2!mlhhZf8|beWf4ksU=N1J!Qfn{NpEGJ#`Ac ze8j<$!Xd2DQ|8kiX3U2nddliJJ!Qq$Q?eH3dPiMg>W=ICEr!Ar{w$S^_2X# zUQfw?>-CiUw_Z=lf9v%W{adG}x`(s(Mvb02w%K~SR(CD>gE6LNugTY4CDTApdw<^V zjhk0hS-JL${C!sI z-5 zu)vXBOOE^1-#}&D8;czGyO$*rqvkb@nA21_V)^c}(Q^)gwsh2~iNtLduKQNbZ2%YP zZSTc(Rps2%KS6uA4^>vqz4}7F0(I%nJ`57l4-V(slPc#|G;7MHCIIsTv!S)T{?z+@o147JIeBGFA zdh%8flTdtP59PY2a$Tlemn+x3l(Ze9h=pF-ax z`p%|&`c8Vg{hYWTZA<3|uLPE;o9T(~_kg{%Jykzrkp0-$RAzgUgWXjeH1+3T6L@|h z2|Mhzo9dXcczPZ2do6`rEVq|JE;ibaVSv9pi728id<-nie3POZq-;bAjt|0PNa33l zZnhFX^RA`ng8L>XysTjyqX)=q^Zn@xzs0aGDCHl7|`nM(ex7DfryZn)k?BCrd zri+`yW5%_U~Dom(sth(MW*l4Zq6k-#w4x{+-VeNV4pJc2D&0b433prc9mc zw(1|^>FD#&uMhRd9(8o+1P9L~Il!3<5A3Hi6qe$kfeldGAn88{cFw!3)+X2wb*;_u zwfFE}#OV*&zvyv0U4Ima>NO9?c_p=r-*|!B#TRg1N*BL`+Ka&a^afm^v+w>-?(C!I zwALw>Dd_zKpo8fRTbh?*%_v}<%+%Wkmq|O7;C&4^RyRA=ssPfaC#QhFL`8Zf#({e! z#=(3g#sPjM#zB82#!&%EjH3sX7)Kc>F^)!1VjQ)g#5lS^iE$K!660tI#58Xv-xpK` zam{XKg|W%8gDp}R3mYpMCk-iMYiJ|4>3(9*OC07$50gOE3GwO;9T6a2ysD;SxyLGIW2|#ywzTcqce74gh5}9?BPagDPyEW$`~n;GDb?IjFA#4W28jN7%7p{ z6^W#FAQNtrGcIu?au_7ChfgBYu0+x(jY@wLcK26;w%n*Ey~vfA}YqmmWG&D9O`JSI? zCD|P;fwD)Hyn5&zLw}B?wuzqDB?6$ zy<3_5ueKk6ZN0JcM!F+^7^h!niS$t`+Q&TBefS4)8blTJF_<9|f%)q_(SHNU1g zg`*W!vt4NRrYAp#o#yIrIxpU%_Lb*7x?hR+7ywGV#|lv5J*I#X@39Azc#lz_#Ct3Q zCEjBmDDfT}L5cSm3QD}kT0ngBPB}OylYv@z8ygPWy+d?&*JefIv?1_I!H2zF4%Nwk z7=SOi9;f757pCreGtc9paF`KBbPSkrNBqOZh#vtN9|#E55Ojy}@xbCZ z0-2>@mL8$DL~29fe2meCo#vGM{(W&8LPe(k!eq2Sre`=W1)081t<1=@l&=Vx-v2#D zrt0qpAydwIAdrcOukw)TVIY&=xhLc%9e_-e1CU9^`;bY-`;bY-`;bY-`;bY-`;bY- z`;bY-`;bY-`;bY-`;bY-`;bY-`;bY-`;cjJ9x|m}Wb(QyTx1#sWD-t9KQg6VWJ&^= z?vcpkXXtZhCawAzJwsuMto|7CQoluUL@`Uvr^lod5Z71V z6Q>PTIBUU*8UbgAIWGmye!0+vvu%7uaQ0bzG#Far?+t=8uLot(WTFSjgR|9uGrwn4 zz!{xkoo{H_Yk6mNzNMumcmPdJ@F1F+;DIzX!GmdPf(O*p1P`jI2_9He6Fj)4CU}5N zP4FO_n&5#pHNk^zl#mB*bjIg8SWnx%{u&qDMg!c0Kh_U!mJ4n@0B%bpxLp-&c0C%& zWY|kj#f3PZ`)9at{~%zr6Yd|}bqCs=IX{l1ddTjuoasc>68a|B^xczJ#>&Mk?A zb6e=CLO7T6bv*{idV|J}aCw1%;90Bot;KfB3aj?1#T@wt)@4#!mED50XGB`_;?DDT zP575M(wHTRJiX<1VylL-yW=#c3T|f%a>4CF&PxHeofN^~b~=4EI;XAnUcQ=cwGW?% zE5O|Bc`nQ?L$_4?X5jPj`pw9k14T+=PrgxSu~A1}v`K^eYQ1P=+^t!kYHbZP@tU3- zkBx>wcAk=|G4_;Hjm4*=YRo<*Rb%@psTu=NN!3_^N~#7Tl~j#AsHAF)LM2sW87iq7 z^H53E*oa7NZuR-+$WWwjw~Nii-Fh#byGN#?apn-5tN?G_9-p_4%*FxeKh5m3YbKu^ zbvXg5^}(Qe4;~5~96$6tJrxS7?AeP8s;+mhR(SUikZp;8yn6_`!?t{Cb{qi7o*jtC zOCq)QmPoD5KESxG-D!Tnd+va4Oh0_uNL#=RH;;uWO_OrLg!Hq1jyXj5e zl42{c0qnJ}$7yX9rOU7lPz?LexQ+5sQ2JSlV3h7jAC)cRTltDmx*k_R=`VjH2&Hw7 z&P5Z6@FftX>0Hd71yI^5fYSEbiNwJXWE!i<8k|;>H9)N?CTkE|P1Zm*B?n+OE#)S+>TbPT)y3@5!0es{Fq>usCm@?< za&YggMKgt9`=LkasW9Xgt5AvoZ=XB1R=8skFpi5l;;uVz{GMCl zAWN1A(zG~UQkI(iyC1wcP9v-EJqmlb1$=*z^HSjZWcq>(-xlSPN^u&lSj`+fe$s;CB{`|hD?wK*;?8-CeqDLeWxvPDZXS_XO z;)tt9OdRo<5&vk-KdZ*NbNBfmgRXwPpG-(vYp|U1YoV4`y>2s?70W1CF*Z38}scUV=FdR&iyDFW5n;OP{Nq` zwdXegG%tF7Y~^LoH{JQQd-`4t3uRtC+6904f(T{|!gGD`J;o+C*=rDgR!!5kDX><+ zIZ?ltcig@7srhHUYxJBwRk!yXJ8U;UgvMR5b>mAbR&U(fv~6_aBj3Ir^e(vA&!jB} zM$b8%sQk{|s6x->bJy0y1 znwv(idWxE1?68(yy~ZSAzCDFE{f8TnCpE<+rw5Il_l&&;`v-@j*Wm3>9Xsr$%DE#R zO1d4Z@|$mcIq7Jw2T>u`VW);?AamSIp z4#n3YyZ)cy;akhS0??NrQoJpF<_9#3zw$Kz?t z+K=L8lEc~YT1y7yfYZsLwC;XuP$17#Dg;X5mO5rpt&!BK7#w)Lb;^YFm zZH3j^ZqIteYW=G{>p?nKan}9BoJ^^=B<`HoKB2aoZO>u zGKwhl@3O+l<%N@b6;AG5I5|}~xuS4#A4+cKW@+YTY363ZSya@TZ*gm`$$!mDdQ zVT5oJu@E7gR#Q3lt^+rHijPG5COc%oLxOseT)@7rOG+{m}}4=r&M zrquw}u=xI0*Saw?Yf=QF5Sz-`^`|5gCY^TOb#A8}O;@oyZ3b&1sh3U~T+ZP%_&`Ok z#b+(`+8}Z4tX_K?)9zx$ZaWa&w(_paX%IlY&(}TO zPKmCFja61=9}WUU@DAq45v&6XJc5=gEH0kmhyXVZ9TOZq*NJ z{0e&FKAJ{{h8txy9DzQ^|8|Nvl#jU0Wqh|CXA4p;xWjz=&c!S`(`tI#`zDG?AfQSh zph_Uvg-T!x%4=MSX5BvvB@X8*!KqZS!=6g)K_w^`QHfSjiJ3LM zif@UV+)Bi5iSpuGV(*uVZ3#3?v3=s7+)Bi53D9L0+b3R`QEW?qX1dsxnBrCr$}*OP$q)65arJ3 zw%T_|+Y8#Zet2K%9^`>2pH0m}4rCa>cpBOmPm8HAEmnvL4};CRX_m?eUSscD zZ;f0p3^Gb@OoDn1(|Z_?Y(-%=LZvS}Ol%elv9IlAdm*st72CtDy6=*Zvrub#5Ukc` zU==K4$|uweJC;#1>=i)G;9lmEBOF_SQIV)sC1(7B$4znrnbyN0v4_dX)FSbX(PJYoI0VUI9kASWBY~dDE#H{fWn_Kis1BiYBjKM7w%5M z83VKW0mrPSkj!cdXAWjN4qR~oz|j$sGx8Cu_Ql2aNLW@)2(ZfWSt0F#rFOOOWMJkl z#As~Nka7;EVcMPUXAVL06qFt;iQ-XNKSz2_cBH4$M0yrq>q<{wzKSJ1kYgy9F=RLg zNKb{+PX`q*J$)SMIkkA{ImxNjX-Bj4q#Ws~;BeaDK92N=V;chdaYsncgh%Q~de)R% z4S&P<0z)1+z=%t={NE>`+Z5D$7334DeRHwB5Nd0$y$)*kZQMY69W311ee8AMam6a+ zHP5D7-@v?Q`Xatb(G5~Cm|3$T-AZg9>5KR#g`1$dG~AxZw8D4SpGHXI;oaMVDbPe_ z2b_0<8#cjVhnvIj-X$B3l-cX_z*`8X0WALNOFZE$$cD2#-}PM$p@@OA2Nm5YBQ7!kO zuH{Y!ND8Jbml$Sl$P&U1>5(~-$uO_J?_jlhVF)MxEbZu#^Hnpzu?>_LCfzUpMW^Oa zMez$X5K~I)uzKPtXR&exvHm@PMaiq}**7H;&)O|We9l=@v6jY#U_o|f0-zsL_2UNF z`)*2PwqopxAX~-3atvW{w;{n}ux+d!m+`1DB=Sy0;ejMf< zZmJfNRxKp0I>VAy-Nll2%LH>tBl=xM(vB|Zc<9r{FC&@9D9hCLJ2uy>a0j)&U9By>s&EaIMbW)g}n+fUBBQQ7;5&u{nmx!z?Q!6 zraB?9bwXn6gv8c$vBa+UlyL{o=1J_)1VL|%GkzgeVh3bcVt+N>E3t+>Yms$amf{SA;*Xww!1Z3%lS1xXGLR@uqsuN4FlOD0JzS z#_y&I?c_QZ+Jj?RXf05W%W>yBB)BJI+zC|+D?Zh}ao1Vu=(8NHO74gH;a}$~b_fau zEGXgw)i9{!!>nZs*78E|r@tJ}W+vT)N??|WD$y9hLGBr!l0?zpozlZbslL*psAna2 z;pE1Ml?JYp-~)F(RI>U}RJM{~6c|t%$5r1-4pND86QVxs zkSmz&2`n~ZtV`;B_Vfg1bZEr8nbdln*hxSf(q1JG$l(34g&@N9ibBs%P8>h1j4QJXV~Q}rrwcCt z0>%{K1;AZ5Vak_B8p~gn6t>4?IfgOy%a<9yzluNKynylNA4cWl&p|K#V5N=MtT`Jk zFYxDQeC5F(T2T{>KheAkVj&IXV(f4ihK5xf{#a)CBTI{hKQea(e`xa>O_#<=3;SW9K;*X`^57Biq{&@FK3XX9v{?I}dHfxk)1c+JNk3S1&|3oMR z`8*ucg@*$Hqml4%;I5m{=x?7emd5N``Dk=(LUHpY#xJiz(K{bzDEeMqJ`_ncU_mHSjyo8rgQ6`2MdUu^DGr7cy5osP zh8kL(9L}(v&9N4*m&sj0EDmQNvuwNcHj!C2dvXFDjf}IMv=)kbv~WB5DbN}2 zo=0*xC<^CP3{Z5PRycu)a25fXbO;E85p9I(Xr(+HP5W{5vGZLV9fq${07ugWaWtwMOyFp`BXBg`5jdKT zgQK!!6C9N#X>jym;AqYVFTh$BVuGWx5EC4gCHZkw=H|yy`iB=s(|I_Wc5&3}R&#Mw z93`Q{(P|e*y+=u0q%khXVaO3;S<)W?EiRhxOINL&pwzTVwtyb^Z7Q|nk=T&?(lHDbSw=pr-=aZZ)90dp%euWbO zcim*bUj6}N0Lh-0Z@`{#YU|`-#_gs8?^!sv2Q#~W`k)SY--raf&!7eZcrU{@EMVpq z23`{vX9;+*kCK;|xbA}E8hE`fQv=}j9=36b4tSSD0^Tk3R3T$G=V@&LhOUOERX}OO z{<_*_I7(wjUF|*ul$I1}RrXY*Vb|GIq#a(|mEP9B)fi(&Hj|IF3r={YweY>h4XJ|f zuiwSsd*%Ba@Lh&pCVjR0aO2Q-`6(n)Duo0QM~ub?6%hPKzEW)8U-YeXs&a1()C(3SICRUq#XdbSg-&E->>z3tf=zI9-r-!LVmRN*(4o3eg4W__{#W z!dw@~QVZyUhoK94X?1}t*jyLLg3Wb-ELE=yWX^hBK>yb1f^>i`NV~c~@6mR3fjFEb zSQk{gy1;ul$+a3?FivbdE3|R~zJxGzf(tw@G`Vi@iNXzzfK`BSgX6B7RKWke%NWM8 zQ#C4}q-qOq#sAD{#_g=CiyQm0x~LkWQx|Q)>cYc5M?;5`@x6t*n9Em@)CC<+609!F zUFaSHIy2G=b$x^|+O3XL7gl_AA!}i-E@Y_%)WvG%RMrh0WWna@LKbYUE@Y{Cbs=-s zs|)(KPF)n>pc6v}y-VIz7vfx$V0A%+bUbwMo{Ms$MqMnpo{ZJ78ByU82~!$k32`xc z!{^GMC|vmnScM2zKJL0ng?xR0F|=i`$yXsI4V`WU*9+)Un9(JL8=_0;H?+TT^QxNT zV>k%_1C759)M<{r2Abmq)I(^FPvV1n{QkjCr^1@Ud=8+bIaF7dgxQkj2pDL9y;Nup z{hWfa=I|fM;;sTIsf);@RAc%Y6*(-Usb};YOqU%zL_1Swyc#dlDPf&P98AK_N#y1uucRxNUj;<(i zTzeLR`vy8Cj%%s-I&6G#bZ}hnO}TP2gRhDhosTJTTrUEzJl1>VDC&zAoD#=15rQqn z)-l@OK`Z5!V(XYBi0=fBYe)H>A`~i^r%CG;R=$IrXTeO2XX7jUQ=NQ3R2*97Y0k4J z#V)fG6#ljz<_ce)Zoy|=NOEDEdjWD`583XoCE4!z3fbcj zXbVuh=J*9w8zU0gE*+&oq^sl!HQM`62WO@zE%DoYoH6a*a%BEd$h5n)eSUnV-4TLm_x_|; z#DbZ2A4419+bT@E8WAfzw@e}yi)oicEFD+G(oscBmJlXlGDi}z;+b}JA|~rXA|}ft z5u+6RvWOjLG`m%Y%*8B^v@>-SF?3)0j`0hr&fWV3&F;a&^F5sN!8E&-Xh3uhg=SYH zqlG8*+!Li@sX;5Qj9O7;RF)7XqcTU5(c)=#buudJ;?9zBo5?ZjanG?k}@^{p;>wc@%_?=Wt zdG+IrDVf*vF(r&$_bRlez?7AI<-wG6K}-oBco)I0o5PfJahQ@e!xULsG)$4XE11&3 z?7G32BJ1i71{O`1^^rpYL~SN}1%r1aE7X=HYTeCZIaI&h#=>`8QS0{GW&Hjs`23Tg z)?KwHAAG{7b=RR}0Y0Pg4SWWT!e^;5Xrg%(V)9w$z{e^Md@M8Yk)=fgADO!XJ{?T0 z8w@_Ot~v0L^~r$`J>`N=iB~uDc)i&>jYaYJ;nltC72}szai~S`>Ry`7$DuG@-7C@T z0*99KmB$Dwj6=~}B_$jxl2^CWamc%xvqY-P3&r7d)*UEsq@(5b+s=q?!2>-A8$5>jN_b9_othTTSNuXq+ryYyjcgL(HM27 z;F|~#eUYz}<*=?JU4W>($tEBwOVWU7 zCo<}Wfv9{JKZwfu`azWb;RVrj9*CCcblW=qsQH^;G6sthovz&DdEtx3t*1imVnL_- z`UV};Mx)a`fEoy>ory2$+1=@dT7}h71GOfOzL>0zeyFuN0&1-|P%BF|fm&IT25LKz z)iDfe<-7QyR@T=Kwe$}!)LMB^TjJ6sHptF4UEf}7j2nvyGeYEy-iAC3rPMLm` zvgm$&l`)u=Sadf7c42~Fy3)AqR7G&VV9`DJC!HcNVbOgP^$?2SI($u!`y*HpC@i`f zMPTN2E`mi@uL#m{Xc7I>ctR1ROY>U4z( zh3?a+htL%x@Z}@w3WW$!qbtna<}ry7^}539I9(x`nal?bvKHpLLY7)US9B4DZZusX z-&L~cc$KPk+ydL7HjYOf_Pq5pCQ0R^TA>dkj3OdqCdkQE5pY!tPp6p~2g+I5_dG@H{ z&%O6C!1led_;as%4g7X@9N8Ois8b$)?yJ8c4MFF1e1Web%}WFfF>366>#dRNkBqou zRh6KiOWJ&PQVl|o_1;*cpOl~;;&A-zyTr=0;iNJI2XTZKf;CAFU~RRb6OF0q!90zb zn&QV7H9ehL>3vZWvWpsDJa)fT+lGZ1_gS^?EVj=(TvywS;4Z87g~eo8gDr&Cq|-w7 z=!(MXnj<;{#omZ#bEJDz;oKs6F#*%%^TLu-b;RaXOUWHRZ9{I6ai# zHN7H~=}>;x^p0C5F>lgIBzHbVfro1I&p7pP#GJQNm2<5#L9bbd>%Nt9F9MV14QJxI zvU2Vnqd}E<_Z3(1b0=5M{S~M;vxC96iR3<&bCVySMbo`MH9RPqBoD)0UVQ*BNXRGarLWdm4Fvj$Ub{^zd&Uf_7lQEdWcGBu|- zP?56t;rPZUwFi#YR5-#v$dGHZrjG+ar&7rVBx5xvIVGOPe>}>$HYZ>&1db41hrJLu zLU_U>b+s=NV96J*u-BAZ4S!47Yld45Z>R8TsrvGbzZBmCsOIpGjfV^BO?%A>tMzT? z-xJ_^dn0L&pPz1h!=3=A9N(mHvkobTlXy7YdKlJV`Xatb;ilpCM5Z;_w7h@A;gmgo z1)c9X0Z}_J6+gIPQyJeJ2AzDe;RtT-N>R;GS5O-)1&``-HZ7lW4g;-dEE~c!Y^!nT zXCm<|pVRZ4bGGMGnBG^<_FTTduJteIO`$}7ZLmmo*qyN2`CtCi*bLh>V9Y#d$@Wwu z&WxBfKh^r?u0(dq1f~MH=vQ9Z3g+1Sl=zkk$EHrUv{O$W*)k#7^vG5^u56{T+@9y5 z(EzXtx2Fypv{MZpY@qR*WB8M)U)bk{-(Wfveoc%%3e6pYG}vNR8Nq9qwU$c)@J)&j6ise02!?&3kJ6RyRl?t zpVnIud2@((gRL;L5p*5g4KRNn6)E1hoDGU+(BFU*MqH*Zp=7b-VcZhBVt=GCH9TCV z8iPYmW}1g2W@M(GAqnYGg|aik!e`H*pG*aXZZvFo;wvqRA)@52Of+>cnP~y+Q5r{U zsQm6n5`mPe>dY09Q`Z_TC{y7^raH@(XNDASU>u{K!V9`fFqK|+ELZ zyEMt#YOldW$TB`F>E+I|fR6mY9OB5Gq8TW4D^y=#{vIl{4TifDhupTIBm1E(j8gS5 zN*2)8@WVW4OXnz6bXQ8pw!X4?>m*bD9h$htGr z1))t=R|{>Mzo$T(tg0T`D5tK5whp9tO$I{SxUvvj6N8`W!qJ0(aZNaSaMvBU_Ws4@ zxJF)6J+2*-&|Y(&aTBPJ*y|F8#Frreen<=>dVLKg3rM^cpTTGCDFll;NQ~xQGGkcO zSbJ7+kVtd8ksVHgo-DH4Nz5E`?g}J!Fw<*6NR*AEg~VqTDUc`|LJx_QQ&&S`2NKU# z214QjTDcdBiarbxn0v@oFn2X0RhQ>!a&*QiE+s3Gn ztw1yA&BkM0M{N6+acig;*(4~se*}pjjEuvAy9D1uVCAXbkyshRf~&DA^)$E|AEG%8 zZh&p65V*!0bdzDFkiACpDw4USlpJjU?kh>LIlF)cHxy}=*U?&|pZFIa-YSh2Y?F#y zyTdX?$<3Y3%6nNbFh3s&n8kQE1~9uW&dI{XiGVC!1f&NLbcdxo^qa;gmL*?^9@CFi z&35Wt#;u@Y`CDhPH{kiZbyyyajQ0i9Kw$YN@kJcFSBK>a8Ltk@qdHB^*?0r7JZ(S` zshJxR2%82ej-k(B(PUY&36{%}G+5q=Y`hV$T)vJL%Ws&Shvo8B3Sl|r+C5mF&cpJK zCI`Ma5X;A5Fc@NC)3`hqiVKJCWZ}?7z$jiVP`rB_x}Ukj7{9XAc6t;)0oCB3M&kxl z6~LSCV+HWsojL^&jUsp*Y9JKAXnf293P2&N)F}WH7x6-j8Xef}!8?x3RwD}6E$!mj z$=Kakj4^M;Q2?@J69phk(kOsVj#lJQ~TE7hZ^%YQX2go-BMg2v{Qs{|@fD!>-T#voWA$KN_SFPAp|wajS9Dsk&fS zHS2<>zOK^+(TIyzp$0-1T!POSUl*7-#7nxM3z>_H)&!fXlt$MMD~4RJRVB)+h7B%63EeluK>5vo$F}Eujvd-H zP3xI=dDk<$D#mJ@HlzoyZ=N}%FRyRjBiA?AVR7p0$#pnCayIw@_V8NgR`3VBO5!Y* zJI@SOIQQV8PzTfkcC>^l9G-88t8m;ohlyg&0RfFo5YU_hg6CiKxmd=-f|N1<`n z=_9lG3UeOk5Pg(3;N}dRyC5$NsDw{+9_PsVNH)4wAARd90s2TbaJW9A61r0#bq}rd z)IfbS4qoA~*^r*0@Q4YMxY*d%E+$PTib)d$tcJv-3GTW>4ZY_}#;}^55vYbr8hbBk2To!U)E_b6LRUV&Tuu@cD{&w&RmZTuo!1HMZ(YPL9a)3PM%QYvKiL5qOg3=12BQ+XQ-gI6+4U`f8f?M!k<9!@ zBboVo>8WB=nQ!7}qL}zWz*A#mu6wX2+=C>+`ejwulhz3vhKZ?{P)F7Atik4e&KO@E z7Vhhz#~ec2Qv}C#O)3Jp>>%gain!#mPMN1V`SgiU=4sBeC&eyv;qA;tx^OykkxqG{ z4ty9>9~VTanQtnM9udNw=##4cH1bc z;RqhZ|8|Nv6o|OZWqh|CtlE?d?w+-3cP^$%G)@Dv@V<$n5(uag2&fVWcA*m3S@jxM zq8T}ZMG2&=P9>O*WENgz(DR>hDghE#w-TI66+7&y#2!?FauJni6_uC?D&(SD;!3v? zv0I|N_?B2XvDlU<8@*~Jq!|p$+xGrGfi9F8w$8)a{Ohqyqzu;P^M~eGn|Ga)V{Kjl z+LFq<|7h`ZU~T?12%EDR&^im&=FPQ~ocSOkzgx|bU~O*hlVfeZ`ZQu~UV}prvtK)z z9{_7}KW1&7Dp;F0qt{{cmYm!TW^LY24FY=J9BVU(OfxloSpxbFEkN3gV*zqJ@+kxI z$e}80e9C}4a;VA?p8|hVq;>hSgs?ePnIoA<^XmH!rgm|w*P998-mbELI<_wJWRmYx zRyg@*$qJ`C5lUu9=Re86&}mPUf?sB9G-63!i@vB*8@cmpH;H*Q1T^$RzDpxq!=n4uTILBjYp@y_x4m~LvqE|hIas*k0)9;HnrTE zX-TZu021q_skdhKfy26@p}ou=*qo}}yI7Jpj}Xj@w_WWOv0(D%MQ8(jTZOz?BVyX= zCXa{_4IX#+2rHsJB9?aha0Ex3N5s-mMNF0uCSo#260zdBn{^^4>p~(X%Oeq^6#TM? z8IvXFi&-djC@oy+Ifa8%w$d`L;#TS-)%SFIBiK?<;z;f|5??>lC2xA@IF84A zajX*jUF&ex(lVS8hqIPmhW86Le5V{Gbje6#`O7}%$CjfEFTZk`@jI!Q^6JMKQ{Fo& zA5+5Ed_RQN6qxcLUwJS^Ve{2sO8CIroXl5)DQQ>A<6%nLjJZ;l77bHm?h2-KFqv;K zrpUVHFh$lUhbi=wizyw*o=aXEulLNV?>F@Ap)eEvx= zLq1fO4?bbMx&MWh7vPh=l&(DBqwwZxz$cnV!HgJE13p%9;6v*OBDvay`6Nq=20k)( z1$;V~Ha8f2WLEqWi~}W*ggRFgs`27*$h%x9DkJPb9S&`QK!z_05~n-~#4+ZA z?IJhM+K(7ZWVRQY#0N*6!yVqW$h_)&GHD~obJ3pfKwc5*t_sC1W3KZR}4}* zI>8h+xRTLv0VZDaRwU?|VKts0b7t58^GQ&TQiYM_x_}wBu&JfAq8I3t`ufZ+etXsU!lTWdO~rbt4iTS^govF_!rHZv@vr9? zLq@ir20f1-eKPw)#x0_PXmS{X=*1t_foL>N);fF>0iwUPRSYw zqG=b(;<>@dq#}0J7$7Q3HUUvtk_JROk&-nGMCH5qK~&b)52ExBFNmh|K(wPdP%qMe z=utq}*0u0C@q@--k)?+78=ohp@;U7T#;vD9?c(<`)UG*82er}IPuHUc0&1_sm-Osq zf;?f>EXHmiWC7P`L3`E2(MJnW9Dp-j>X&oCnUS9c+N)L^sI^>>H-TDNk_Ku!k^D3a zYUR85p;p${54H3UFVtFjP}|XLqo343?a|1U*0tEXq1G5ZvghSv?+K@~9;h*HHx+fO z&tTO3{QGsN8;xi5i}-Q^b=UJ%pn+Q$bxquwCDiRgn$d1XU9X$eC0!fMq-(V1b-RXa zjgFMwN&6@tg&RQ7tX-l*-6fH{1UwoJ-Aq|D>sJ?fSg)@(28?VbA81P&>-}dMH>8TZ z550?#ck6o`D@X-@H$#5fXXG^zH3*;UUZ$6SZ}uxmCIjI51|Og;A=)y1PZgJMiH2Koz00gLli-} z;}n79eKc1DvKHowK$coS5jS& z70V{{ia@@PUJ=m0b&8;Sm@Kc=D1u{$i>iz9{}f{k%Mw$l-}PP6vmi$)z+w6N0ONL6 zb;Yc{tSf#wNT(}II4plL(A5>y`0^2Tg+lwK(G})yb2HYj5M5!p$W_d2r2tRKzh$l~ zWG&2fg)FszuIM7xuV{k?`L23hA>T)@E9l=kUC}+9kvD2|#j(v6*|qv($jQdImc1rl zf0Wd-p8ELreT|z}RU01@Y>_ur>eR;G;30 zTH{kzCAFbDyv1@4Z_&>qbObviZw0xYTpGtJFJss0iof?Z1~Z46@djuNhbFPFJ^ntc z_3upFS2HvMS7JZGl?X5Px?tmjy3PdQBcNT+~q>p6Sm zdaHIF7^T44KC|XzCzBo#3aoUV?OCwEkqVlob#nB8q0>*ZJ63zW-l6>O6=#v z{mwk*O5lvT36}UH57=AVQ}r_j*^iA)Wws|d*j>dzQ-2ONfj3g@j=!mn88D~U5d)?Q zn2%xLx;%*}qT6~5te$*B^mdf85h*y9VI!yTO$s+#iSP5wGIXhZlM|ViB>32nYuk=g z>voRWomjD^p&2KnBlQiJqOD;)QMBzE;JOZGB<=C@Q?2`VC9=>{t zPbO9zZZCfaxA>yJ!H4yI(If^D#MZVH6lKa6O)FpYcIAu8YkX08jV~&%@kQk|zNoy$ z7nRreqVgJFR9@qY-p*e%?S9eZ*m-}((O|>WFPe70Xp+98n4Ml7@Kw|GGy32Iro~rH zXZWk8GyGN4na=#GqkF{ps@bRTBFcyD{@!_KGR}Jla$ zoXF!o4UL3uc{+NhuUqz@u`PGY)oQo2WVf`}vcp#(je65ly(v>~%GH}*>P>I;CZ*m~ zs5gD+hC3*!H-?-ZqJxfBJE-M$&>rZZ)uMyG5ZFN4XRHRk^5Kk$dhdz3!KgeOxITIW_ljH#Q-vj%J`+6y;oi{)| zf?W9^^x0ijYZLTzU28Mz!dP1J;GsC*Hv1Pno~G-M0n3cVCS$vP_%)oD z(p@VKqrC`ZPrnpb=(zs_;Xub7J*Tx!vFJcEC4d&}MOfOs6zk$(1(11n+u$;3-x2Jt zfmO2EvGN2cHa$57TmdQqD=`iXD=`ihD=`irD=`i#D=`iq#$tM6zfi7aWcNrFh2q$E8IN$TN~Byv)++$3E| znw}>~GDb?0jFFNgW27X>7%53IMoN;5k&+~1q$J50DM`~6Nuv6b`LoHf&n+^4$V{Jv zlYB|FByjheS_yOq4Pu*;l)%-Hz@$$C zEuRG1Yp2u75mlL~QSP8ZdCDDHC{gYJLy2;S8A_Bp*ifR}A%_y>4m^}7cld!QMHcBz zSQee3h$D-F55p^qmMe=iFu7L9;($O|e26ACLdDT%M~xE07X&PsV)%l)?vTutugB?= zS)xhPO6D;LPEWPPX#!O&Z%w;m`6lP3h~-1nzAToTa0RiP_=Z+2-SN>P-aUAtiKTbm zq@Y;R80>l>mVJW7atnzi`3cyI#iB)b?6+jG+X_A@XQT$nqmdc{8mS?mks66(l|3Fd z<`Me=*qF=g2Vi@ywjY4)xv}#`a2K@3>5Ew+4%3R`F^^C0`+J-QQH66;jVqkja9)aV zR#0n;@gHAdrn&ZUTtQ5KwO5GgovnAED=C9PFwM9otk~yEyfji?EmouFVrY2v;FLz4 zu4zu;s3+B|6&keZ$=fJqrbbu^WkE6j({;E zEifb9Ets+Vl{li3rRLLP#tDeKx9^D4hAQ093I*Y)UdnkXaC0qvAcmX8d_{26cPGP5 z`Kv*2;~nWQVnUKUxLFOj@q69`+|Zen`G$(U7MnkGmWrC-0UR~KgE(q}2XfQ|59X)| z9?($}JgB24cwk3O@Zb(5kjMXf^Bi6$U~5Xr5-0Ljvw3-r}b0}`ZX3v z2@D#(mGV+BXcI*+1`VK(#3s+b;0h+soh?Ba@e zUb2ewgE5GJDjb8h&{Ks>pq!88F~A8{LsD=En{siQ@mq`SmK9d*Q#e?K(y*S4(yHth zq&*|jniqGTpXIscIFgbjS|z>3b7I5x9h>4brwTkD9q0njZ#XXnc&5^~YNJ{Df8#4M zekxz4xan5=@N!%Mg4z+#%>A9M%g`+qe+_shy#5+u2m)2u_tkoD z$S7K~KGoV9Xc{#=IUbvi@;y1i;80REMv{`Mv6Pfljk%?Z_pm!n2t=V0kyOsgAA-@@(IzW z7bCm+U~r@1UpTn&2qqNV*mJ}H76aT|?@_Jr9w8w63jukL5OjzA_1`bW5#;RIfw;IN zQfqIar$SqseN1s%yVLwkb6|_`F{)h8YuM`cCkm=Z)gr(W*f%2(`(}u>vxVlw z;P?uYLpZ+T3Zd)#suj*J1Ppn?`GvdgfV`%4apX5k3_yBQu%uuLY~=XN+BmJPqGexf z&k;k^Z*g7gx8q8FaHK3^`Yfw{7*1#qu2jC_x`&wYk!F&-B}{h(PC*yVQKcl4SY6EBdZX)x~B`FS8!emgdU&>hS0O< zTe6q$CwxT^`h8phLKi+41fe>AUkO5wMhMk=5se{~e2RO4ds^`=;U?{Mjj+A7Zgm`y z7F$~Fw)Rxxsn`deYP`8DJNX+u6EkL_^^d+~oK6JyUkKu_1-TsG$0 zL&jEYtepE%;O~gvRncdhUwh-z5blefA6t3Z^G$bt?Vi3@LzB*{Pf{`UUl75JL3nNq z>O3~N$zFr_vuc{QO@UU$KI8hmyo=!`)^|Amb$+MQ53E9_Bj1zxYqDwiu!gr&B8_9fd^@b+Z)J3S zz}+W2VMVI;^~Khz9@JQ4=WQCj>M3f5vBO$+^%|3enei0f)c!N_q^6kUwDQ<_&)91k zD;kH^aI2g;cGydmbGJU8gb(Vi1lqFlo3GxKbd1y;s1Td0r*EW>OdFAE7vidE`K{l0 zam1ZFkDxero@Ej7ERMM2$X=uc=uM(ayH zL09AP^b7WQJiW;tkEgK=Vw6|_A)IAo_zXCmoB-?Yw?@8jWW*h-s@S$IqwP%MFfa_7nXqkN=OfqJR#>g=_N+&&*1y`b9;EYsX5CLrjFfsy(tdrEwW-~{VYs#Ful5bK z#2j+N>BJnu$vp}uqliNPE-Rc|UO2f|;pE3R^!D(?EZ~bl6)NQWiHaGhc< z4!r@x8yshU*lN73rZ4eNG+tc;5(|Wrh=&5pYve}0t$%2Vn=q}Wf*<|WwQkJJniNS2gsyV-lrxeElPyk4Tuqf?ane2_37oqhf`tost3zTD~by_`NYu`H0(G#&_GRY*1h| z9Ks#uNp~)0!JAgo+uk=(R00820s&P5!7fw+OV(fGN;D&9Y&SkED}j_&QHlRs=2YTv zt`eL|6+7&y#2!?FauJni6_uD-)2sNFxX7(U?3O4mz9oM1$6{Lo4O48N_>fzP*ewCd zvts+iFaEFCmH=I6u`N;SRw8yw2tgnbjV&EZo+z#*&Z-%`Y9$Oq7>G}i+QXnp1aBoU z6tA59?vr4E=j^^Fdm&tx8|{VDVe#1uCwnOJXeayg)F?DcFTb3x@HC8XJPlorr!iFu zP47L5OpL-c2k6$=`_@|{*9&8i`T3Ke`oVNi4MG%lBMgFthiP}XIPQBPu;~@s!;iP` z5-Zb&_C;_I=!0NQl7kI^3S>2=rU$`leFioKY6hyDMZA-65wCwi&EN**k|WTn*7S60 zRmoYcJR_!~B?eh-T)nYNqd3Ra0FDx!xY5{&cVNMr( zeRB$K$$y%o;D(LtNL`nq0?=JnG=OZ-Wh+sX2wiNi~BwoK|xx zhcjzVGm*M$e(y@%^S`4jQ>kMKa3umtB0%iQoeti=c(Lo{h~0p|4-r}HdONimSoo87 zr`U~wN&kRj(o;w#J%uv|vlSQ&I~^f+BOkG9Uj(Zj?6M{VSljljz=}YyJGMkG0~328 z#*veTlyf)@Q`2-ma|jx@pzLA!4v#1MIkI=MBYTx5viI_TyRvsRU&WF=pa5$l80`VF zSK;*XLB-2nA4m31EnfCca%y$j(JXr@NA@Z>oHn?RBYQ$e1WG|i$lioU>PYt1lv@pd z!`KGHEja#&H?Vx?W9T*ob#4Xu!fM}KY%he$+-t9c%6}U-(3}Sgw{{DD(eFPXlGZ&GxF6bz)+tVp*KM^5@8zDePxU|mkK8*WczTH(6vPlL4aaBi|Gw<*xd z3D&R^kkbyhJO?*yD#L7NB6Ao%&t$`qGJD-!soFOfo8qY83^r#99H?+`ppSzC_|OG$ z0Gf|+pud9y0~{O}$bxc!Ok)_sWEyiIOyfB_-Z*l^br#L}=mdH|_*myW_y}=@J~?8} zw!Ob6uWM!){9(|sGvUcP?s;3$Sa@ZA{UF1z(5v$9AvjL1a_(2LR5!aDYt|6iqw?-6z@%C^_YQnB%naTFc^fltnLJ~TyxR@v zFxREpn|1*Sa|a2{U&@l1g3(4c$OR5s3iGJ%P?t*8*@3`jiZd=5>W)juKuTd;LW#GS zoQzE7PzvTiRO3gU|3=173ew0WhM79Dgs@{8WR7I6%&YG^Sgl?dKFUAK5x~g#stMxQ zCCUqv-68))=O)OC5>(3+f)+}_FK|LkW39vDi>I6gyUZXcVpJ0!<~ z2CHrVaV&pt{@N>l#M8p^m-fqFzhANZr3=a*K9yJ-5Ga4t^s(eG9asL+QRPpT5GH>z zN0PsXh5X4shsmG(bC~?e97+De{IdKJWird3%J=KaU$rZL3g2(O z45sVHVUFgeY9WKwLI$fdEQ8fuEQ4czVJ?G2x~a(E(FH2EJ#73!VolC0%xb@xz3P)J zz#sjkSAY+@0&MvOcnlg4orC;*B!GGaTKK#q*TWD?fUUR!Y(*7dSwffq%N$97R|^4_ ze-0C1`R6bJmN~iucWyTK;32wc6k{C+5v6U;zOJQET#f)cs~4FM*%jbASAZ2hTQLA=6n9tWWENEY}HHuIpl1zVjjDuAj}5<)aCl9(~aGg;ZId zdpXPU|N9TGEFTJ#_>V%+7kFXE*<`uHftr>zedzndz~k6*^({KKEII9nh)mgC!ZNTg53_!jCJV}exs z#$9KrquigPRmsg!Km7Ec(iOWch0+#e(t)ZQq|;%xw*}jKAsCxqj%R_BK0_tI=*hY( z!rYr@989uCe|Jg`8x8wPi=xt%+=U|_BV!sMPlBJ{^`pt^M^W=ihEV`QX&hJOD>=A| zUwO(^|H@O+2;hcBt=Z?6!nBt#2$tgeZDhNCqjw{$VB981*@*EqnFq6{Cos1~qwLLO z7SxGd3&fG@H4*?Uyf3v7u(+o4bTJ-BK;v-)G!{VMjK^QGyY|$k3x8}ZsM+WIAas-g z>$Llg-$@0Z3*n=KW9^J3`QY=m7ktuw@c95*Q-IGBzVd(%Z5|8;pYVad0H1Vm;FB&6 ze9~s%BTI`0J~DR&d}wzpZxdtelo>_?ADLk^@R7Oaz(?kg10VTR4t(TOIq;#UT<}RN z;6tY^kyBx#cPFYKDffa;wF^E9NjbTf{NOVVM==#JY1-O_p+8-CArLU~2rmTgx(Rvy z@8682G)v0gWBwe&$oqfaH-3K=r552RHlWnkewdF^2fZkTbxmFqX)an`pw!!Z-^f+yOGQndVsO(ccBo!F86D7An#ErkM= z&)YIxcv}!KW(jW#?z#!H`rKzMv)Q-uG3(d_?0)}h{PHSbZ9Sg>Yt`a>z@jEn#&mgr zwGJf_`0=SgM!w(HI`yF(mXR?`pvCjWUSGt-$eUGu|W_zJY{I=F{ z0O41B*SINE6npnMjAF?}0>y^kfj%OAQ*Yv?;S}kc0*+xpc?w$yFH}8L<@gu^&A!f8 z%ECIRVqQ{9n6_wg3QKAOO);?INAp(E*1?6KfPaPaD#9Q`g}|Li6>5y%GOn0A%iMmmV=P_hwH{plg!Rx06%#etXXhEWh>E-qe1MVn?(gW3_W)Wc4|&sm_SHjJ@Yi5RZADNA%H1w%uNODlSU<{Hc?L`vL(2ws39WuA7YH-!&RTPWHTfBl(0= zbhE!<+-@pVf96bv>WlBxLG>Gvpt=rUPC)f<`6|$fQ5dRC+_NR9#?D$^kmEWrN>EKs z3<=d<*RKIodynb3LQda4jq=RC$OK;6~w7z^-i*k4z>42N*+sH@$FfYOp8 zt;(K?H0&OninPOvyV7es^q-AUCY#Ae=LILcnp^iZ`safguIGQt~Zou9-c)xJxT*D-a;w{LYpJBd&0v9E(kOz7N>KwBGUeVBNm1&>Lp_3y>|qS=U> zm@?oo(X6Eu9%(WZaX!f=r&cC@X{XR zwa%4NbvC+^v(8di{;jjum464nalY-2zXed4(0*=O$goTA;dU8K#Gxl-&+qYhy2+lO zJuv|xAgjKW{M{sf!rx7l^m$hOJxC69ya*pdsH$MEcwANCdd4RT&o}}y`Vo+496>i3 z{VN)b(J*^~My)J~)XrPzsnB+2|9RYY?m{2>yc>+$PSqrnv5_2$#zx+x(r2;fb z+OJ7Q;2R3_|G)W4G5>=#37vuxtVztg>OzyGJ5H0NT_`PPZc}KIbbL)BYhkWQWT^!- z$-~ejy|kJ{7HqCbWWnZ|M3$=8Br<2cCXxTvYZCcyy(Xc5>oiF^K$E0hO``YMyP8BC zArq`gs$EUuJwoPMjV2i zn4PLoASFdzn6zQ&OyhP|mCfG1tZe@JRh_bF3syEB?nPo;d;#?k%I1^!@)3tEbcjr_ zvN4|`@X#+3;bKAh#i1_!V(~n1A;T6czOu1gm1nMOWT^#|&1z;d*9}`_!RE?F7HqC; zWT|>(BXia(8~Ja&vXTGRD;xT^PT3S-U=+g^{q%#YY{a=c!ODi{70rI1pGz^;JO0Cp+!Zz@WfPe?ZSl3nXecdLC&+_1jn=Sjg3>Cd_WN% zTIOlavnRzavlEPsM?Yh3Y{)Zh_=Fot%#G7-K+NqSs;<9^xuZc;eX>GSeWyZHy_Sip zM@XXT&k|8}UrAKmpNXpf<19pe_dPCA^#>KA>J$@If02l)w@9Mu5lmElyCACm%V&8! zE*Gu@6IE}gwg3roj%Rbe)tUjvcpHqwXhhX?fDX|TlLy#n%Of3^lfuep`lHb{M>-rQ z1%fUvF>DEmEFsMEDs!aqZt+CbBhZlUAvGf&p<`>5wxiYvWVROyu^ zgh{W=k)*eHifWzo%DT8Siri-I7@JK9ceapIq!EAI^HXoV(zxFr-Tc&5<}aiQ^0k7W z`p;v%f*j0Gy#?ik3UcAuq>><01G=~(*9&y2ARjm6)YX=`03R#l)R`-c-%XX}e--4^ z?W0+ijmW9{pjE|6raSnGJ&r^38-C8TI3l#!`CJGgJTh zGUInrk!Oftrk*=0A9=!DqIv>Ecq(xM@c z%w0jA4rZnfMjlz$9P-HeRa97XeJ#AJERL6lV-L|JAKB}yv{h`BV;~;kPG=PQpvRT!*LQc2ASiWjr!6L8MlZEyWbUT)CbSi!EQ7*>cgmkfZYas z9nYeFFYKlZ!fsUeToG*4e%MWS1nj2cz^*Jg`j~jpWLc6jGIlBSI+2Y!40h$a_+eMp z*AKh$AAZ=C|M0^u{lg2p={(piQBk+`t83VV{XOM%4To^XFV1VBV_q%VoC=17l}Tqk z8|_r(n+UTPTRvb6FC{8!xdZqo!;D)`1?T_I-nR!vRh;ebh6Fa;HXx{2t=K00mMRuX z>!scjS?Y-mRElU@p_LWr4I3m-wG{&Yr2Idf*t%)HP0&O39Sc`u*Y#1qa_fwMO% z>KoC29GqWgSFSd(#BZvwiFF*4KKV_Z;B2%9I2(SzS(K~;&Y~m*ICmhwX*zHg@8Se! zQC}xGiyTgH7CD^YOgZe}Y$SoRAU9PLL1cKS+XbyZU!aXQ86IjdH5~r5cDu<9KXA4- z#AHaQRjfK=KB?W1GFJbVlTe4wF|oQ9L^|SIJ{=P3?&wf%S>M5~B+J^JI#eQ|PPVes zkWf24&ut)~R@vGTqp=QksM8BgR-(jyobC%k`t)G&6t+}ues>-6&*m1gNEQ?}cqfxk zd%=6D#Z}h1)QTz_UCOPp)TP`?d!2D^CtK~v=E57AVW4JY({wiD@xnkoa*#F@W*Dfq z0kmQA_c&d#Gq_3tcD9;_;%?6l$cC7^uCe5%I2SH6q?etwuy{wHgt*)oO%ttJFw_ zep(!L({e0QI;JPo#_>fzopXvd0%qu^eJr8;rk{2@%bI2{r=PxlfJ)Qo&`*!=Z)uvB z*p;UVi$nve&@}qX0zPR#)tbg=KTTu!*EFIQ`kF?RnnKfb68*F{O(Wh_t!c#js5Onq zt=2Rmw_4LsZk49Va8E}!J5N_5m2-S^PtWVEjfxrWY47XykzU%(D=Qt7dwORdmD17S zp5Bgn@afHU=x~qIo7752e~lxfbodTY?wb=Zn^8J4F>5<39rgN2hIpFX4fj4;SkT;Q zdq&Udt__7I@$`%Y@pSLl*!vBf(nb8vp6I9haCXKt^wUK+^>ssR65FXY2|Kl3wR2DR zH6P-Idpd01dt7l(KbQ^Bzt)=68H3>9MUgz&dxM;)t2c^er*3H zW8|jRqB*PcIE7*`wgWwXZ9YN}UC+!{FUHUaG5MzUr#o6F-#S{S?Q@&_Zf332i!lQ5 z^}T4qVsA4EuI<2QYca;?oTGI(MP$+11ZgDZ5lIVA;$2USxs64Dn|(%XQMt7~Z|N7K zeA*e^VvA=Lf_rrFltT8^3!MPEcsw1Y({j`(kLC|x;e`BwES#KwDhsFOgI5+qd|E!| z+Mf(Y==5B)CfR;|j&CknUZzR5pWod>nI_qOehPbmj`MR(=okpk7VQT%;j1hyeD!3*B#L3fc~luq zoClYGelN4c(^$sioN0C(zH7mu}V)9b`>qmQWuylNp@@q;5H6-?Z(!IL1kOB z*^i?*;vrbpiXT-WdMDgguT6Zr65A!@lY*BYENp%SgvM#fDqCRb?2dK74)x2A%x|r0 zxFy;UT(z0Dy|?TRHSeN`J%Ls0%j$8u#VyeT*69{yo9J|lrv4?>(7wk)*izgTT7~Ih19t-%;xZ3mKbJLQm0&uvq@dVuhc~}NGfeo7qP}lI)gxz zkj}L!o=9`bwo}ZyNS&yTQtG~Vm`R3kvzV( zG>fk-A)u4x5U|r$+0mvQCV6!qXiHwa7H=U5U)RG&>-*X-Av?;}k7cOwG{&Bc8t%-t zucFZ~RwQOy6>2CKR&1z2-}d;@)rMcxFubCMC?Oqch$j+iw4K`41vNxttT6Rk2t69*{gNrLZ z$P52`y(?-smIr3>qbU(E0O3bd;unsl>@WbSIG`95|WEpzdg z)RsrmIw{_O_IM)bJRtmWv-bPQ7*bNqjF2z9$1p^T$+r+KNq(Qwp--_Z<~8N!2^e1! ze3}X)MNQ?KgfV(lzWK6Sfpo7#MXT#vAOV+XYtv139Hn_NUZkf>i)rml<(mSPq{dMi zH=o)out}<_%EaMM>Ig$eD%di2%)-)7mB{G9&Gm1^mSKrxd2AWx_FI?%v?XBkf994? zI3t@GLR(Bj=&mUNj9xl4d>c6|3b{FyP5!=$#yn#+PL~3DS@RE|SzbCcvz#1L0t_G! z5I`WHsTKlph&L@aH^>7F$=Q+U^+tKE6{=*0H0)6HUNyI2Eg>b9h#*r+8x0V@I6;sJSCz**J<JaQpW(NC^!L}tT3;@*^ac!VOQW>K>H!nVyDC1HigeJ5il6#?l%1D z3K%`IT^mE3RPhNr`UF%XN49Cdzl@=;aH{yHATdtkGadQz3bZ`O(2I7^l@5k_^YCRb zw2kb`ZNSh!)PHO-)V{mbD;abTcMRQ57)nkzwr2U;1lE)DNc^oN# z#}NTMj$_%R`$0^)55^~;stsUoytlgrG9r0W=gW3c=(KX56{;k~_GLlwu8vALG z8$wb)9MIFz9~@ENW>*YRTc#Mtu=kBEx`J$i?S_*$pcNLXngm+m+teq4cCk|>GGc#z zPO_CG;$m;!PO_$?lD%85Qc05iYO#@4mrfoOVoNLuc8`$7=huTR!5q$uJ%p8*6+!mP zxh_MLAhy@>vPNU^h=`JumTliR9jGk5io1Qw8>!>0T&WUvTh}aD$Kpkn`i|zLzS14a z*Li|+KHK&I<(3!80VSqJ?^ zNecAuKrZUE);O_bn`bE~(LZlP68ei*NrnFO)Q&`dQ3)sdvw~-*-O6jQl``^opaqi9 zzrCrkFLg!#F_@O7vEs=?;0yP;19~ENKqFwdKbYfw*Epb8ysC|OacVm??w^E;bM7nJ z4JfOOaS^66E?KWq8Quu8uRs@amGLCIa#a};@v2H?=(w~OVP-FE8HOK~AxhR!8KNYG%IH9bY!50!ypB?3)W4LZGQ_K-QW^Brj#L?<5>A!D3f5B@ zMv}^CZ^G`;t}0`}W1c1q+&AJ=aX7s16S-#z0n;JOpR^ypx?=8d=NfGYj9=iULryOB zJMv%JO($!QfuCa9oa8!$31kz*SVw^_`bd2?%HFiC+)GF?n*W7NUSe3KoP9L`U2MnWe3^8W(~Uw3-&Kz zk!ylH&B?jcVY{6ttkj0N_*HHi;w0C$c`LNrQdSu|KfzSSi*=^TsKu}npNi_RhyM%p z;ELmN^sYx=+lS0`mV^}l<272IvtUyt9ATXj#}tWO{7v46BLWF zq8f}9DtlXceVz3Uvf-tIbyhhXudAH8eCm0n@{vkRH-X{r)zQ-!sY33J>+vHwtO7AF z7)@#L+%91=pXRQv7Lp=L=OSCM&Xc-gYbbuzm9>rnGV|1&=AF2mea1hv(K&vutEOA( zsj0VnYHIeali#N9Fw5Y||I=8-)&vzVvRW)Tf;S;eM%zI@H$J>s8RR@6dYn~73WXtPdYG50u$BIfmGPI98uX4n41 zMVpCNO|Q+UgpSu{qC#qI#wwxjphNq(XtM|?U^e1Yr>3Cot0-%_WwAmH0V@=ZhBc*o z#aB|q4RzN<;)c3w{9tfH(HB$AK}^0#1@Xz(O|IH(47}dyR(raoopxbC$S<;5UnQia zR_{b5_UMz^pd6p-s>Cw(!Zw^+i%+OjXF*;0gmzQg^j}}D|DICmKOJiI!>EU;|Iqm! z^`FFYtI~h^3rc!4w`ugBVL@@*XLE*s{U>Unum41;DfC|_ajSdQf8ur3`fr(w{u8g7 zUjI=E9k2gHh1B|wRl<+{>l&)}TV3_vg6W>77>{|HV(g>4+M);@i(KRRA{PQ$p`b1JA_ zd9$X1#f%`>eJV&a!E7o>>u@Ch>Md*2NoS>-0`euNw2N;aYyJ2Cw9(n*pq~ycXc96H z;0*8J^G#34JkY#1*DpD;S>~zcb9#Cx6U5Q@NNX~@VN|~Z{aA1$5F3YIuLW7KH7_=@ z-YD3Bv(b(k1uxJMX-2`TODxv=MY9=~?xHD-OLx+989+%h5ZQN2c7d+aQ4GMihF%A&|i8VJRnYv=+RY&!c`-{9s|-_ zeC~o-)c)PZ$SwTmWURJP^fcmJo@hk((#T5&7#y~E>BAmX-VvtPUN_*3v} ztx@pK5~@V`WH4jzAI~d+fGUB2DuJL0l>k<}%PLWiCxe{}Y{F(G7=aCS=D_WLFe?EP zVyhA?l`3}BR*Ai+1U-dU0_QtWC8mMOyUi_egH;LNEs@jqmU#W4wzfoe@#+^K&4Hqd zo%{YTfFTqeveCvmUV0590uO~N`<|6x9iRL81nc+)5Z#356@hykEaG4t|N7xA5_ngBb!8(3!uLSFO=yYNo|27UUjcjSW3Oc0YXUbEH+UWI-Njdp>x(m3Z1GZQfTH)Dfo|11D1i? z-DD0miL-KL=Fot}9BO)eH(->?G+EYK;ViyZh=8V)2-w%U;+w0T;E*TMEBfesbH|Zh zl`Pd(rtx3eO_=sqG&xWG4&rd{>`-)baMg~oj{vDp2Aa3jHQXL;2!NSk9{k?@HW5^oTi(-Pd$w$M%zz?XilFMu!G z1@QPnl*7N$ej(X;GURIJJbB``cIkB|0e=wyJMFfKmph*GAbtpiC}if~%bHkkBklWx~1sZSl2*-jMX ztY2u4`*@NdA5X|M{J*tdNEYN9zsv-=>6dmvb|>Qwq5;ziveJE-5o9Ol1Cza!HgLNM zvRCr!O-X_*NN8rU^%Pgy>-S>)o+VRw?%KlUmX4#JDY{>KyvN^gYU1M*oTl8T{cf@> z-*+XG<+C4PvTWmo{Rk~k);G2Y>lJmeMYBW4wltj=TYR$-*u)PIJQuCX*DxMrSL~}E zuCBpGoZy5_R@!P#>?B#&alG~4j+R4F69>aE|pYGh#Ri9s| zEv4~Sod|TCp=#4T+V3PI&lzyaVJ-EKi<6Nj9UJvBv?fQM|5`*>Hsq1ms1?YQezLDm zMy)`ehz6&s0(l~O$RkSghCJfw67sY&8MQm|h`J__N7N^QJmRhd@`$?<$U}Eo$P|EF}ey%N|PR`O3 z8g`BO+V3wz)UBMeG;2XJM5W_>?u(Y^5LL;pY!D^!J}V%~n@2;BvQz<4M%y6D(1R#Z znm33NPnRI7ooS!lAxhLW0a2np35XJRB_K-Nm4GO^%YrES;%XUO|8znJZAPHI=v&Mq z$_!d)SX7>pBa{v-yOBdwZ>*3xA*y2-mOB@)9+;;suyLXfmiAo`V4av~{mZ+xUtUJ5 zHJlgp+UjJqO2@E#BbuF~)$8m^1FgKdZ8B)JjeoL}ZkdzMJOz-Xb@XsHPd3Tz479Ru zmr99N-GEQiIa-~fLaXf%+w_~F_~~gr_-yEF!cKB8?Yv7{ZsXn2Bo5H}INst|L-G}Ok)Mwpt}SmB}4XEt^*#W;g)8@yG78T1ez z+?FAWBF(#TCY2IHI z?tScvS&%B&l{keJut{QNBvaM+Fbfn8Cu4(y7O6tLTYl)~v?SGxhN0nUaWa26%& zfU_t`0nQyr-kT1b#k)AcS=84F&LW2soJ9^NI8zQgI2%de+}>=tS1Z8zcx3MDT(llH zLmO}6Ba+ejq|wje`q-%Xkr7CRjPUffeg7;F3tE_YBeN;BOlv`z~OSzTyI&0@-s~y=~DD*-WZ-V)K zq`7Uu(hL@FLN0g{db6EYY6`u8#hXB1j+5~5b;9qd^u$6Wr(Y*zu7$LEqI0NVJJ;Nw zJXISC;}cQ2>b?8l- z;qR_SBxYEJ8qxEl>l4GKQ6muxz}wR=VmZsUmt~^axBo0=ErqN#((Bqv;qiKxx(=>*EO(SZd zuW3Z7DKt$dQLuW`G~!*=nnt{jTGNQ!YE2_@t2GVfR%x29;XIwG&@?AD+iB-&pFe#= z8x`Zh;HW7n_JmcJ18CfHI9tZ z;aipXq)NbSM(My)DO#hQm5zG-#PX80glkjEOs}|Ac zEjaODT7F;iAz2;@44e0MOIhH^&LtOJF&6NDuP<`ZZC3;WqpItQD(b>T%lBj#R~!ND zV;K%)y2HSA?{H=OGr0aVuJgi`f4PJl$w$KB%E1?~D^NfF&oGcUmY&Og_6k>K<1ky? z0usm@z#SRi1ENR#1pQ+b*d6Z}gzFyR%Io^E*zV!Vhx_2B5k1+@ZsE#bX0xlTaAgAx zib-Hj9XbUsw<>-tXDveb0$;~C8(qD+Zte#Qdmm;CIv{rhyC4>UmVxu|3xi@au<~<7 zY(1z3SF`K#VBLz_K_Ef# z!hVGCV+ZlrUjJ1Lwfz$V(S{({1o70C-60S@Q_P;gs`X{{+2EKBL=RX5gJqkDV6dsb z<<6KIjE$`cH6LsW#3x_Ix;Rog^e*<$y^)bC0;`T5%NcPE>*+n{a7RxE(bEyu(~rnK z9g%u^w$#(&8a*wp(bM7@JuR-$)8ZOEEw0hi;u<|IuF=!t8a*wp(bKb8Pe-htHb0Ud zLSLX-Jsq)nnm&uql%5u z8e+J{Hq0h!8;(r!k8bjhZ23oy{G+@4qlf$>B>%{jfAo}p^pbz{rXOtRlA>fFWqv$e zEDv478oKnk^k6=8UvnM04-X?GZ>TT4XzIW$jADb2VuO!jgO6gPLr3vLSNrLGw^7`6 z(zvDA&wI$DxaC4?6o*-xNTc{UL|_!(iqY*D#obQ$Q7rSUSpY0XF?~imjE`dC6jZ5O zqx506;5q`M_ej6kLkQ{uEOzQ8l zrEzy(<)_!n^VM7vBuZM-R&9o#rT-L3a1l9=|wWSynx}_Ks zzoi%x#HAP$$)y+*&ZQU=)1?>_*rgZ~-K7{4;-wf9=MhuCjl4zxd$QuTG05L)-*}P> zN}p_IwQPZXNMtZ5LUB#EW>WfH66ld?;!VM(mSC)M9o zVjpIX;dDalu-ZoPX%qq`zkC{nUtJ-;(aZdd+&GZ{D&_YCgs`GZ{WO6ryw`&vfIQTt zLuavPNy3{??aPGso4A7TZoFJ6yw*HzG5dxoBfKi%wXYX(dL_OPNYhn-Lc&jZP zH>9z1_hF@ki}2srvm_CoM6Jz4_yKl>_4$H6Ut+@C z{Sq$BbDQU2C`l7kFeF(fGyf(r6xf|GoDHUuhhw^W?VylCHLtG^;fOZbjON<7ZpAn7 z9dWXjmf~%yT8g*nYboBQw552P=9c1Z>RXDp>2N9DrpTpun>Lr?Z7N-gx9N4n*S{ks zzogu$#db0kzso)aw!Xc{EuVY_d^#}BcZsPmsrvpyLttzl2Wx&4eQiPA$mhhP++kxK zZb}au+>rGF8`g|^D4$UyATt30p%j9yFcZ%Dq8|Z^(^N-|INLq7A$Q#QXu}S3=neRS zpN5c;=CfF2% zPRAIRn}`e2OmsmS5$`}65$`}65$`}65$`}65$`}65$`}65$`}65$`}65$`}65$`~n ziAhKkv5>|-{kM>22#|(5-JD1hv5+PRq**AC#>rh~t+*MbQ@f>w8M3#1$j6Rj+?6nt zyAlvEjNz^X{OSsfd3u;1(TY>^sWIjx#OYa|^V5bhJk7_>4-QX{uxCl|^mXbW22Tsv z6~R;Xa0X9D5s;fc*$}dOB^FO4a)u;$S_61;dJ;K2(OI?0hEQw+`w}+U5|R^a03|2b z5K2z4L6n?e!zeky22yf@4W;A+8%)UwHk^_ZY(OO^*pP}6lAwxC^V&d9K30u`TYVBvwl2GgS)HMvX-egyVT4T;*sCCs)H`KDbV-{yn z%iL-Lw<`R^fEvp>>`>IQJA5=ys~b>@0EtiKzTl2pOFg01cDgGSY9;(cj{|^kYCQ!< z@F_S>QvYB{tYMW=uyP5DJb*oal$IB3K-$YZt$ssf~xl^fNP(9V^>p*V?%#|E6fBJM=a2)#juooPT)qd`<%$s z0$ByvB$5m+gBe`pftoO=x6%VehS&N{q2^{+^Q&&fSbT2gW`jwo3PVgvRaj$Es=_3b zQWbWYl&Ub!q*R54CZ#IOG$~bqdQz&wV3Sf6RvS|5n;rfvGTo^Co0tK&NA1Z!H2dunawGxOWp9p*RNI@nK>$+-DmUkf+$&Y@>X zxcNLqFx))IuE@mu0re44Y!97;E8ylgKkbH_P7fN#O(GC+#Z5X8u6qjHjHJZP@hNdr zq$+V!q$+V!q$+V!q$+V!q$+V!q$+V!q$+V!q$+V!q$+V!q$+W9ybEqdEZkK4=q%hE z0w$*JY*j#wo3!1D;U;y>zA|oO*r**mCR@aK|132AABi zhhJR*m)p^7mI7&w6i6G}fNxjbO;kBqfwgk70&L}E z1=`BV3b>V%6?iKrD*#tcRv@mNtbklOS%JB7vI2A|*#&hC3w71*MhkWMm%Z-RDy?HN z)FtQRc7eJ-c17KXr{kvd*6L$)S32zFdm-8azYaHL0e4d(U`Wg@YW(U7B);x6KiCi_ z$|xlgXVjhIE6bLFei~T@;2!vrmU}Y`PNio_0Q?$7FaYjJeaTz|bJ!J`xN1*d9K+-rmm-An;GEL4F)6KNY+Mq4FPP z$B(`c3{0JRe)#N4bV@+J1bl=mw<3A;@I!QW>5sBY=ASV-cT2eP0-$%%GkMgFH3b6( z02(e{H#&Ufy1KcyE$n?QWOIr{Xc+hl=!rKf8FwP%H9gqEzd1G7K*K36>9#7#lOei z>8vGrc<9J;qOS+*mJcaA9O7v#1`O3h%Kn{A*N3d{*T=026}-2^Se-?UHM)9h@#>Y- z45NoMG<7ct!bn+(H_bW)&!nc9V7Bt;>X&2d%X7=m%xA4~>gXYFhAZc;3c`2xK>%$T zzWdF)f+jv!p+XF)&-zJ!^QvGtuIiTGe&-uSbKhx2aTb0rz8TKAqB*VmOk$uTv3{eB zV;f`rh8oAV#QGH&#~PZVF?JVY)F}8ajT^%H%if}5#^UbRVqC-rV_#lOovD8lCG}zVeF{163RYvo%*e#D5&9BF9 z`6HbkcFS*w^ORC=4aVLZWo$hbn=#bb`g&|e0rBL_IE#34SaMeCWE7DqcXsOJoYcwP zQz!RGog7M?oSQniXX@l$sgrxBPVSRBxi2Nxvo5J;U4o;t(Iq%hhI;Y?){`4qPi|#B zxqEc=i#R^pD8KZKSU&{Uo)Ki>gfp^OIQa~27hpRiwx7dcjP*{8B}~jfLvhq7zXK%f zw;;SWACxT!ClKoj!pZsJ(N%|LeU&k^-_0D4VBRT@=J#STzuiuwpJFED_l)h|ZH(N) zewIGG)Jm9~pUZCj-y5x%Y55_NGl*>Xu5poIKu2IM>}v_kqkY;UFj4H4BMF%>D2IiU z;p^iPgCUiX7&j>RI7-YN*vrR7CdU++?xx7}V5@EJB9mu|Og~d(`kNwi3PdJc^<^^g ziKfaS8kRsn48Y4`MECb&!ADq2#;=Xwtwzw0hYioPK-4nSU>q^{a2;$ew0-0~_EqgW zP-RBx!0+Tj3ii`-Gc@}sqpTG>ppow#9*6P~w=J9f+Ladrmv-3^{KC5QJ4=|@PR{QU z+drOH0s&P50aXG)6Donv9NuM>sK=A>+5Aya38XahO6&}ol{lKH1WTog9ko?rFDgM# z;gx9Sm6(>_z3nYA(W->+mdI&)OT5{mtu29uY3rC6XH~*?OMqOktz+Vq?rm)e(CW6e zC5o*|_-+X<2qdDurK2vVZ7p$Le(`Ep{aBfpyONY9CTu+TAkd9e=%!vU{u4H5U2G9t zwp(J0roh^aEt+T?YZ5jmG=1sN1Jo#FbLM=XUEyvR{F+2X>0oFCi2$r!nb z8=~yglpyG@u=OAxAqtxbb7Ij^VlY^QZ>QdhEdn;Z9kVe}?!U~4wxE3xdd zNnvzFkp0@(j|F_&$X3_a4aG+M(I{BABvyp^!5gt6D4Dug5$w#hsaw2@=#N=%_etHB z?qdawSkGDl7B$8YENYA)m(yO1=Dn6(4Q{YSu&XD)uBLD@>}m?9kzGBjkR5SU2#b30 z#6q?urw|JskTw{~16VjAe;^Ad=by^LY5Aw=$ZTOZOJ<+SqAOjQW%6Um6I6_g(B_!p z(XZ`7+uan}{;7wMhtn}&p>QZUC3Tl~rO=jOI`N=6ouH7W6BJGx#B4}#h`E4Pdr0lb zM~#9vmc&NFs;fhQorr5W(zup-G6`-J<~^6(98+?;o05yJNh!HFmW<7W`Y=bNmg-aJl()O(-jXsPK>}SiYj*Q`#m_{9=wk|J2M&!ugqS5 z1qhMf1#$7W$6@+YaTv77NAX?Tj6z(47Wtwt;QDM_gABRwDom5+?HkSR10`}*AxMos zxS0I}5%RYpl>Aw+^ThujKHNnfJoPS2s%8wtb@%YRSMcRYxbg_jI*VT$W;bMo=lukH z$sj~VpJ6q2$Kju~mQ>e@6EtZ}pbP`%=FqXaCg3P73-Bq|`yVj5COTvq=r{pWGR@2r zFhQ7Xt_L$&FlSU}S~Ds#&O(?`QR1yxY^s!U{v?i%AyX^_Q-nR$gW+|iHCrOXD+F0) zC8jg8L<#8*f)P(7Q>nVN_aM1?>CjbV7IT-8HM03*+CT-I$)u)da-u7l5x)*bVf?YU_EQrU@o15xpWSWGU*)L$e%qJ7j7ZNn+rccB3>IEdfUU9?l5;%0e7e2KQAdW;IY;*FFp7zQIUw*R1U(HL-^@1Ir3rM!?!c_Ekb!cLa* z-|W>Eig=QgA5XCL@*eFMlBN8R!KD1|X1kOhah394qXE-OdFo@cGEz&YLAs%}8xXVvVmDC`WWk4dv0zOhR@3`EORRo#*A_Onu$cF0 z(F{A(VvDd)jV)>|NC!(i((C`XdtdzL-ZtrDKK>I<}?hJb5<#2wIigDWyZtewVJ8bCoN4P8&};L}|%`UOt^A zZ@`jY1m5+x{MqxQ15pWZDKM?3JKrWLr0izt>1N%I(!7`f($o231!mwh5ubpy49nXm zs_(@#kRIp-I;6(2%mnEPma!n+Wtj}pU6$b>-DQ~%(p|!cVBLXtV;;Z|767?Hu?)Su zh0PeY*gwMN?D_;eTQH|5^Wv^40j%=T%zhi06@~n3LE^f$8ySEf_Dysu__2)gDclEu zfP4T5XqJJ%^Z~pb>)ey#2JF@r=lH8ms5;Kzw{VyCJIN6B{Xzy&hu=Gc)A2p^kp{t%#b0hc%V0k z5)bqSQR3+dh!RgoK$N&E0a4N!Ip$9 zHkV64)L;vuq$3H)@#Tc5F*pn^g?ZF+j87+~a4!e~hELoJf?r*PPcye`%W|9y37aW( z0^{?{ZQAcIW7%(UNFU!Z(T0 zQ?wU0xB+Ce4a*EYEEA=9!!q%73Crl)XGTuJuuMGA8GP0eRu>PBWYrnh*}u(A32V|Z7N@9SZ9Bmlxv1IF6N4uD#TJbj zY|+jz)71s!B3Bmza&=JvR~G`fy2iqDj-xBE3HwkiSkM0B3ys#!bbg1!VwlH20)WD1+nLFrTRbs@?aZ!b9nQe;=0)Rs|3ldO-$vsO6#_3QJ*3>9M~$o$ zdWcyQZ+ zc4S80H8Fs}OvdCpwBL@ThP&^a^!yA`*C9DQ@Ny@g58$<&e>jYtup9xIpa=-(5pPSkg_UcaLSRH8(td6t?R!96`wJ2E!t3^o)tbPPoomdy)3PBX2gVmxC z9jq25Ik8$i&56|_hZCzs4kuQN98RnjIh0e}54Nz{ zew50^3L|+8reSF;WSSHEz!}R0I+43T5ipb<%u%|_T%fnSq>V|og9sQ645keyr;Z!( zqIT=ah&~bL$ie#F`?3nr52_HIXkTpBcMEF35&b*p$rOlA^c?Qiw~kYle|g(x>)U7# zL^u2(x+qx((M3rLL|?;ba_rW(C`1R*MIkzfE=qDDx_Fus(M1j?qKh0(L>D=nh%RzC z5uI|_5#2~abi+b)yYtpUbbjKD3eoAySZ00OPn@B12$H$sLP;Er#t+4d#NwUPn%Gj44YxZ7RW8sKg}nCCJTxG(ht?%V0ER7QKk^W6ZP zUIWiJhwHL~g$1=Zc4v2C!F~jk7UXGpv73;FuRw1?+R-JQ>HU80d2L*ZN0ae^D@XDB+9!~8?+N`iTJ8XY>R z$JL$(O^c2ZS;n?9P)^Q?!u?=d)X|anSA&pz1)XSM@b~j zA{HV!t!s#TLDDK3=IQsVXe@94c<${-K$8pv5;ckQ;5_0VZJBMx4q|M!ea550$$a?wK(ryly_KP)};3G}ATm*lR8 z=;R}JJ*2l%!1Yk1{q#`80^+u;@NzvA@vnzOE%fz}C^dy1dIWl?yHXE{g7x)~C|F+) ziBi>iNIY4sheU3*9um3LdPw9}>miX_t%oSLN)JU`^iagoL+TX?OAqmbqulk-U`r3# z501J~p@+usk4#hT;DMhe9Wr7G!!Ima%NXPNG6n*se)uv5esz)h`SahjAvAuILj7da zd}?}+E0<}vv#hG7^&$m1$i)#9$IY|NuHWjc&{@F~-D^t?w^B{7dCQ{}v?zXW0< zA1zBqK58S+k@xBF$%@f_s><-MszfdHRh1|;g{oS^&Jj>enMA?*s!9~Buc}0;YE>nk ztX5Sbw^~(++-g-Na;sI9$gNgYlv|~$Qt*%RDU*7s#Zp!Lv@Lg4MP#J3@X~BQZEL1N zRV|oKMtZu{bnb;pr?B{z{I=*U#}dtWzC?q7sV}}ngI`^wzMB4`4Xg2QCabTEbr5L= zcNOTL7(-PEKZyRR&(Hs?-Mq5ada66qT3>!trM32HXssx^nQN_Q*p(+oUuvzTzqXUn zTC#glz-&fq@p-OjkmE{gsn?LSwU+aUGHdrzMpbzx_$&OQHkNWGy*M2pZ}N-cxD$M9 zl7D7w<3M)AB?UO*l7d}97U1~HTVSM5%g2c*xOFl(D=GCrKNcJb#Kz&*Ye5!l&5Mn! zHwrdjG47~Q@B*#L83nI`zj~8Vun|0d>^V45g*_*WJpgAerzjJIs_fowzRPTX4#R@g z4?%g{J24bp9$fWd*$14%u(qz@8__odAT`_q4#RIm_X!Te-HgL<@y(&YrueR}+m1$Z zE=bvCS7@xEXQGce$>`!g_?cbR7|l^|$hM#nduPsdaGoxaIoCnxn2*K0>i9U<;kyr7 zGW*t2KQb$ML`w2A=Q^~z&}Pnc!1+4nQvPvbT3UkJ0p~iHM#lhdNZ@!jvNlp19RtmK z!N%VvL+4cUIUwgxTjpuzy}f*w*#U;mTfYQ;X&O4>BrA5Vl_0gp8CM{+w~@SmPLRAe zN+j>6NhI&5GLrX|g5>>Mg`jJHO_02gWF+ssiRAqrLGpgPMDqSmM)JOwNZt)W@;-}^ zyg$H6-jDp6c@o5CA$OAZ{=Y(7fF?Y_H!Is#XU6u!7ng?QosP{S;%@B?`{Z~G;d@fb zsP%~~9f=hJ=^QID-L@T3LOPGLcp}Zz+fMRcgod<^rs9WHNpDN;U{M|!DWaC->J=%3 zV87Xv_IK9|SLJ+(p{FZAl+q|4ANbe;UL{*?+b23AX%ar&9J(I*nS(|O>_A?eVjVp zS>3;XxAr^9_*4QHAwI##uTI9Nbgb^f(3%{d9%ffIe3Dq*75J3i!O#X)_k>JDEX2_H zh$4Yc5j}horFp|A@pK8F+L_he9iK#96Zj=cO~#i+-2_z3!gHS z?uxB`58kCM$R8_8_Xp={zrPG*6`a!jhRS3hOGoMc9ke_LvU+x912T!yT>)g?JSsl9 zj}yXUv<=7%Js=aMc>^->bP34XnbO@I$V6QeKql&w05Wk`0?5Q&2_O@9C4fxaW$z0M z$TEEHX^+)?akjQte|-4d*WRK1@-n9VmGimJD^JF>bbRjjqS-m7<=&Yzc}$II-dso- zOlu>b`w4|<_Fc>wGI#cIM)Pgj(*1EIbKiBVc2mee_W~z#|Lu=C(D@;A|2;Z`1K#Pk z3&2Z5=ALZOr6F@qc+T2D=I$^hCWidbNhW5gWTHr1;^}s+u*Ie+Wa>~RlSbaVp(m9j znR^!FSO=21r-n=EUF?RSRA0L}DCMvlg;EZ?X(;8e8;DX4Ro}|SB5qCMlFTr_jEul-o**jqP|X`7CD?iEpj-4TI6s7waB6B zTRTukl7Kox^UrP19~Y8P3OW8u!nXs^Hukjr(WOe;m%2vMcG! za66n!Ouq^^*Kwr!WcqcAywM(TZuo(7QL+x4i;@&@-hoWN>EK+vixbX8eVuSFaya2! z=Cc4)Kd=j`%Lx*yV-^s2djCUu_l?dFEE%`JA z?oJPS8wlK$HeZ6lye&=|vMVL-ZyldH*{YP)qM(z~i=0Mh%Y z<^fV})oeh@t(p@^xm7a*DYyGrNuDJjn+t1hhP|B;wbNOx#|wM=4{p!~(hPh1Hb6e6 z7@zy5cH7BHs2^uCyEi2y-c_xH#QUg~kjSl8LL#?X35nclB_wjYj}?^? z%22n9BdS`CMM}r?gwi>_sN0*b)yB^Zb-RyM{CVTF+ga9A-{aKnMc1kHln!l;KH5@QS?F+&Q>)Y}OMg8lqq6wcFYZ+oFq=_XaFmMHIIdKddfg~P z+D?v=dmk+)n+oMzC;aOTcNd_Gp33mHw>t&2?O1th5ejD<4C==Clt5o*eo?|#zr;kN zJ&wfU6sJXN6Qrk@g%D$!y2z7ZUS-igXP*&URBr8Ru(Xp=KJ5&2%dA4SmA()>L5nBS zslkiK(-BxLM~(7m{s0zE$REhU$@!6w_#V=nS@d^0ig zGR&%PzlYy4iFKJy{+hdz0vpZp)i(gTDh`Ljl}E6LYDOWhdxtBhfJJ%6 z*|-jeD??)ff$+Sq;1p*3?i;Rr=F1>Ve&h=FvnOuFHxl7_b)QG%XR*H)_hg4FW4)1o zAg;TI=Y8oDxS?{>K+2WJZpaGHdz;ZLFXS}K_m5*bs5Bcb?_^US^4>v5dz#&+<4}I0s;Z~^e%ES`w_wqlT)&6b|BgutXtl%>}V)9 zb`>p1Qx}*mNj9|T4|4K|6mscM$~ffT9jIGAsBCLC`*9S2I=%KXZL_hd ze@S%~%&<^7&Q`jmCe-|XQy~86*V#78oI<-iy7Mc4g7?3~udI?s%P#ULs-u+0uUx|9QB=h#kCeN;MG^r!mzf=c++i|Vd$G1m#%u8wl2~> z;)&rEPecjn@I*Y3@TBd;&MtT&s-wh{k1pW-VZEFaPbhbLgO({@)Rsy&Xz4n9T>1s=myn?)iysB?%?s_& z;?5^M9gUVAT9oeo47BX*7aK9UFpAyIoqRWVw5fzOitV~ zpa<-e1_UjE*i94!S@2v~PB(QT>p&{ai@_s3U0N_~XCmtqcqLU= zX%M|TRG^krRh3!9pVSe?kyNl{B1zRw>~;xRJeY|cE+G&hc{G~v$oAva&L;0;MPr_^ z8YjI0ex!xOhrLgN9ZClMze&yuqX>%^OULr%N!|&V1S_VNz6A36m=$5=@G!s$r6z z)G;tA3QoYJsCEJ-#a#)QWK~M)LMWE&T63ECE|hLle@Ba6-Ax4@rV z2!HZjQwGBnXuz%8f&j*AiYq?I3;#Um3X@~9Q`&_s$M{5U3U_oNU>M0AUHH`%82S8X z^f8h=&1#H1A=Sh`3$&X+hSyIPF?jtEgvkl7=}5lsLgRCI{eWHB;8h~TRl%z__nICf zuEGj6+6J$N9=wXuyuqt@x&*K7%<`QQUPX14@H+X^61dFEy6lne^dCp76AiW?)t;8t^nJwouiF3&f^pkHu(vt zY`!*F`~794eS#mS&>M2)MA~%J zS1R-#?nt|xkd~Z*Yz>y7CH+cx2x%*i=?Mjxk|z`ac|s|GClmoZp<~%J|3OUi55_4XetsUnf-S-J?go)>(8Pw+NiLP&Uo}t|uGTuh{Q4ha{bP?YAVL)Gs{@}QK>X~%K za5oJDy29F3Q=lt+uKE<{E;g@3tnJVLN*0ww!tKqyKsJ|DvUe+3DoL`1JAnc{Eow`z zqqLGQKiz@d(yO@J%KWJvXE95au-nbj>)5SlDTm#LHmj;*Nh3@B+p%Q;&*jWVx+S)( zzP%aQuXG3hb)LYV&-HzPzvU{P$X&$<$TCMjx&}d4Smys2sEw3y@&l>$#)+yu|29Co z6=Z!eU>Ng+Ogl}bFT4@4Pe(s+eepKCa@7|S5xYuXcy&JOGqJnsi--nwufh?{^+jas z+uRwhqc23sI{HGCq|g@~$i(hJUx?RH>WjYplk|mnl~nqIp4yT6LR7-3FU0FO^@Ygc z)EBI(v(s*hHkf0ZJTHqUMw0YJdlSQ7>Z&isV1k@xra-<5Uz&nD%qMb(IRd6B26Ii( zH4gIyVQq|zQ`@OE#Yw1YNB7lkKv~KBbqG^3J^HDX%t2T#WdmZ1ZZ?k9#TG$%Y>6$J zVjOE|x+u2zW+SkPf6mtnUC5QpTz2KEWF&fcm6FkM!SluMHmq~u_Hfes#tCG626sZxVyet>Pg>hr@K<= zo5VUv160QvtdnpJQg)D0l{D-wEZDz%hCqM_*HH?QN&TRiaaG%Q_61!4mblj(5#b3*G6DRH|YUWbu|%gSSLw z(@U?f&s!3*=r2RD5q~ra)`2iUO&`EN0Z7a+rBapCqn{nCW?yNs4-L5E($T=_CP}=6 zj-Dz>ZJ(xbRnsOZw`%fazJmS~3K_eE%YT}?vRg=MES(c?!8*Dtt+He5LVlHJGCjrXAL9FIgA90uCB{uJD2iKkx(D^o}rTa`$V!u=@n7ymNV5UdYoJM;Z?Wa8r|Jqa3LSK7| zQd4NpPC8k@v-T9PtJI!_`&_iAc-8dUlS=4#?I|jx)}G=u)!I|!R%=i83VyU_*Bo?k ztE={0Fr6kY=@ck;7N(s^?xSb5MU6TZ^v3fAJp{C%hk!O5BIt?*y{qyLyU>g|9T z?P=0J-wV>=6qBUfx3#g|Jb__4bf`%vK7gNZ06yyUgyI9udvpDgdz)pRYCfl@hcZEY zj*sjn!;eSxJJ62>M*^{N`1M+l1zYoCBkPTV4LFtXs8R3&9ZqNzyt>3X^8q^`i3=KA zAc+fl(zAu&+?n)bVe?CL`z5tOL=8sNO(1n1^4U% z&fM$k{DuGd1(BOOIL=2`9ST>C0N)TJ2cLi$-2UCh$SwTmWUMmM0{S%K44-I3_tOU= zM)V`BLLk@(XDot-yx4ktTDUXT0?O;HaLw5p+LlK%VxiJ^2uO!-#?yL0s&P50aXG)6Dol( z8{cJ>sK=AR`UW;^vl5K*h&prNHC81+qHR@zrBcO?+A6UZm7u5aO5k)8s>C!<(YLuJ zUfS8#mdI&)OMKa?gzuKfE?)ftq#0!PJNNxx07ED`WTTBW|8wIQkv&-R8_!Cx=AZV3 z1Z)1OR}n4#%F*mTu;zcO5d8PAfmR=+_+ZT+8KLCf=Ogl-Pq9d_=HK2c!J7Zi(}^{I z?!N=0Ct$^S=#w!N-$g0i%^HM~LLjp<{JT;HppTN}fdx0;=-_YkuYu5VbEWZAUfTpSl*mv0C+qj+RXd+M} z(t*t#N1*omx3tx4{Fitm$+&5M6_nE(wZeQa6x|$LwWI7KfbElk<}Gy%w?`WSSfSmD z1=-u9`>h4pQ|f6!R*>h{T*Iby|JrUBOLy}8x2QA_qo)*0<+7knEOof^ZDJYmE0z&U zh|-CrC?TC#iYJm-ww*g)C6=NtB$lE)5=)UnVkuHcEJX^5rAQ&Mq!j#TVyR75pDdbb zX_#r#Z6}Flk1hJ5`LbO!k1wpb;NRLWB)e;#EMaoJZ>wFd-AU}bqX98EBocdtx>YV% z*yLJ=!`>#>hF`fhyvnsGA)Q={Cz4#Zox@%w*P<@gQCLj9TL%i$k8YOA)QpIy=92Fs5%)^oz9~t>1zFK7w(8?b+x}jx-?L;`&s|&C+|qG0Ma3Jn zB_aNXQ+pq$uyykW?RS%S;m5Nmt`_YcUgvmbeAw6(3smuIlzcOvcwJ?ve<#m`MW`<%q=R<1v_xIgB>_v zu>;c_zEI5$O#aJuq)+eMla3#JMO&8RuR3w+IK$qxYqj4=#;1}(hEMa>CF4^%HuZba znjD{UU!^M>K1poq3VcfMV9+O1SKw1bgY8#=PZ2$Q5~X>=C-HO%pW2yB-5sAqT@&~u z>XX1HaaRJL#9aw|5_cu=N!*pdC%VhRr*>p7Cr_8%<7kw&7nN-1f>ZX3+Jfw4(>|&w6`~IuKqm2)D}c;3+kni_12R#X zHy{&Fmw>FDY0KS#Ow=_2WTHL^AQN{bfK1$#05Wk`0?5Q&2_U1pEFfz~p77p|O^8gE zX=_EhGlX|8tPNeIE!J_Ozm^tVs3}fNOdnRK{qi!V{gpG;zWYKlrln&DKZKGwrcFZ! zXknT+7g7e(w((W#bPKqAt}B2f}4LUV5x59I#&&=&&)^R>%wlL(+i$=&o5AngY8nWp3yc>E_ zNs_tO3C!H7O+cv??Vu^u*KQ6(J_>~X_~@+PKCRs%GEkp&9s}yH|5F9j-Z-%*piekZ zZ(vuhKrL}%D}dUo3sIjE+ZCuI7F@Oks3U%WT9m8<)S@H>POI@8Se%QC}xe ziyTg%7CD?iEpj-4TI6s7HRZ4abtDO>+na;>Vg*ni2V|C=3(KEvR=`Y9Ehdt;xjdBTG8Zs@p+T zf)6PWdR7K)e1O29(g1?7vG2eRU4t=Ba-p`q|=KB zAJuL*8QEtJX2|~6$5hDfjpzCC|Fw{P2>Q@Bvg^2$GsxbFG|wjivfJI(zIl}|Qz83O zPaYNKIY>(l(q`tvPV#u)_=q+r#iPk!p3#b@{YkqaWprP121EDte>Ty*7GqI-lc__n z{3`0foiU@(wKj}*r^S*8mXj@cHNUc}2VI|EIi)?%S!~-26Kb36^n8+;8 z@ga+wOV`4eN>$kToy@Q7MMFp}u9^Wz@1vRrNV!$B0V%g?P9Wu0%?za6%J~87rQ}%x zvULfe@%L0(W}zo7!<-*!wM^$w8F%jV;+5ZP18Mw1g+^NHshzjeU1{6-MA7DpAJlF; zSqb$Uz?4wQA5=<6huQdQ^dVP5wd_h-5pY*R60@;F3F)m4=o1^KQ9=<5{@b!rz?D$M zKQ*JMg}xFJrKV6qokVQxO$mv2RVyL!K58W-a;ue)$gNgFBDY!ziQH->M7dQ;sB4&n zZ&WCu6Nitlb9K+xeyxq4abjwAE?s1Fd}?~EcYmqf&a$5RULU5X{_q=>p3>nE{{62k zJ#{*I-s5CR;t*EoDg9*+J?6tSddg@&J!SaUQ=%67dP9(4T2G1GYCR=#tMwG+R_Up(;q0BM&{HQiTW{y;t|j+tV`}`H$+|0J8mMXS zFT78?d1aOLRClJbT9&9();>%^y|VQ-qaJ)}H3c2sE-FiZJtw2G_#Rz8p%XBhQCW=P z_CK5(@3>M~>UE>`V8>;jbxrr=YHpC_!rEk?Ifx7Tji>Q`ZD5vH3H6N1Yp}??t zZ?}{Mj_h1=+!-}c8Ta}k$GzvuKwwmLT~S3{xM=yF?Ba?epe-GBY9Mfjf$QGk$}(_~ z-tlQ%=Y=cJx}3h@J`xUBUV9O{0(I#hJ`WPobBD5@y~33faBMYh0f}kFCy}sg5c>)G z(pSMwddDCn^$1sH^=Gl&!*jv2u=nBEesEiZoD>|G;7MEt&dx6kip>D4*A=n#AjDkFuFHdU zD{cod3B{LZN!Q(^>ul*dN4oAVUH6c#L(+Awblp?B?j>FKmah9q*L`tazZ#l9gt561 zZ&N4Jcea2Qtv0rJbSQ9;B_2fEevlXb`3t}j`D1$G`#l6w)==rxfw9L&hoZZJEZCFB zg1UYz*b1IsNW$(|%dA4iSUjbW7>k!dE|$lZK`yq$9>)ZKc@R-VTlhFwnAwjI{XohV zq~Q1<+=dkPgGftu5I=MC&oBh{PYl>kD`YX|afRSc4mi&%Z0c{hSf&PJV{1aq2b%)% zBUiAlkCYBQV?I4}Z)D_(z^bFia$dqujDSiE1jh&nVgwLV<}%PjN+Td5jeyzG2oTp8 z0pc1XKwM)4h--`hag7lmt}z0{HAaBA#t0DC7y;rMBS2hZ1c+;lfZ1#WM63}I99{h) zm|unv0gN>QBGw29Qor+2u*PK+L`tXjM2AQCD2PPaD2PPaD2PNmaumdW>Sq+hSK>va zfzb7%`5a&G!6yc67{@QXj16L=bm(~YEY6UKEF{J;jI(Io&W7>Q~uFQ{?S|h(MSH#mwvE8O)8hc zS{5JF#qyvwtU;ZHK|Poc>epNc^~1wRCp6R-UNm)J7RI;1$G5@9x53A^(V^oz_wM!_ z-(4rCMOA*@LmuDPf5{r(v)Hqw@tu!G0!-J>OB&zZKE~r)<_NSvTa52+7~jMA_$H=I zmFhN1A7;zZBQUOy^ou=&pf13ImxC<8nF|jdq%#zj;h=%dP}?Bs{}3e9RYr3i?1#eU zdjHycc!i(w5PwCD+mX`aKvchVm!DUXhxp73ts%acJxdzmMbusd=4aiCD-8C1m29vV zS2Pz&mMQ4{IG}^+4WBeG!=6!CCuFAHF(_NusRZxqakld|(^};~TDM{n_)BD@mtst~ zmtsuJmtsudmtsuxmtss6AjOz^K#DPyffQqE1S!T;3sQ`!8>ARhK}a#CmOxDXHu8Nz zRnQsN+nB=Gs-nRo!P)|Qm;`I_s8HZ2yY(muR3R6y9?%gk;>C8=q!KU7ejdf`X9Q$9 zAt1{M0W7Cwu%CCtmf`4(Cd@FX=g4k;v*YaQ2g>~n<2X$a6c$yNg3QZz`gs*uB6p6k zBr?F7MUu$BQUsI8-ME58erv8$B59^TCf4F9M0_VC@)1a6mO~=RVa((&Xi4OhB#9I; zLLxQp5;}6fr^~MU0S05hEm0#0ZI;B1t5*1DSAJ z&3TDQOgRL^lv!+kl90%VC6P2sxrR$*wyQ)=&5orOM{XdE;u9GJOdR<{2EV#O97A{b z8N=})+CVLiCnP9k{lrfz$dY{eFiVmzV9$~yc{fEcN&W;H8_i&Ly}_~rqCW>S-Hwl)?`Y$%bHS2QP#vtin69xQj|5xlA^4smK0@8xTGj+ z+9gFL3BrBcdIK%hJORzFQ3i})A8KtVqD(xKzn zvm_DEqV{DXei5!9;>&JVinujjT$~Z{)iOZoi@1HAETxFkTy;7Z@t*D?z8zzo`Cyn= zk%{T!HjfOQ5N6J3A;mPKML;uJ1T>>1(awvFg$>;rdk{8sZR|nV)@x!9!nWShaWmbk zX8IY|aUy+GiuMVQbr+QRX%Jb^ORz%31^xT%S(2a+qSj`D{#AB`4dVr?a0QWnZWb5$ zxy^Ghl%z>Bn7u3$J;4Je)Vsmd`*2L5uN@RpsQLBvAsnqJo9$e1>Q;OMUz#Utd@0_h z_N926?w8_i27nZAvjU`en<*g0+w1`;-ewd?@ixmqino~uQoPMZkm7A9BE{RR1;p3C zBPQo$GEfWeWQM~o`xM>!YBRTd@)__;VXD4MOx4MN=sz?R*o0GZjf*$Yd7RYk9A-wj z!^}F|lpbcd5$ywJtQr4MKI2C~#s>mIH3VH@eEhN0k3hz0nx#gl?Vj3@J0E?tVTU;- zfBi#04Iv}b->?|Xk!c-!mV`{@)XEH*o@7^qOy^E#$drGJ8!{!F2OOD*_$mpR9sx2r zoqJqvA}+`@(FK`AyaSm;yaSm;yaSm;yaSm;yaSm;yaSm;yaSm;yaSm;yaSm;yaSm; zyaSm;yaSmgCLvSALMFSb!a}AYK&EUZGDR$83IdrH3S@FJ^jRyDM(NaUX<>=1ejoC* z;}~~)4CQVQ1Pqh7+XKJ40+agvz>g@#srl5HbQ0qF+VA;kLmAE*u%m{Yz#Hc*ojY^WwD*kDagu;H4VU;{Qe!G>&df(_c_1RJ(dLK3*q z8J`Qv6r8g=tu%118*q*wj88AW;Er=kJ>lGTx+@jVC460v1F{a#+z~D> z5D=_23O-m8YglCztX#q(4`5#=rRBvMkoGc9t6$P_{;umM`H{vrQRJyDx072ngl_cH zoHDq5a-aonm$GL`MqCp`FmOAEdX3I$D|moiO)-uQt-%#w?(UccbF~3G7Wa>I`Pokr!>kpx#O^8X0%%H-(y;T}`~Y6=U(Cp_`p2r7Da)DOF+dNvR66 zPfAtTep0H!0F+V{R-lxsfJiA-VGl~F3Zqa;Rak~ns=_>!QWZ8LQtO)?{y8!fsqdPY zxwuE|rL(?~$t|CDMsGGJ-s|wzk=fY4AcV!$aj-h;$!AAHj)Q8cJE$(iO=%~`53i%U z(t;}U?D+*%%ez;=y?Y4AwnRYQJp^50Tduyr4}iqacg5qSo?3gmr`BdZK)+i2`D+{PIblHseC_ts!-D4l+MOy zfPC8jsqyqI38mLl1ViZ_)Tzuep3SZZrOR*yl%96I8%nDjor}j4;fpIu)47=4QlPYv z0;OXc#uEpJn`ta3D{xv)Rsgk}tUzixSpn5@vI48+WCd8u$qKZVlNE3+CoAw;PF4W6 zoUA}>IavYOlJ<}Wnnd z5Sv8tnOJ#tJ`1AxK{Ld%C!(YI(9bNy9uF4gm?7p`>~{|{#O^fqJJ$?*nqjY1AKYrx zObHZyyXad*6N@HHykY;!g;S@VA3nPhBO(xxF2iRB_J==tc-7(32WTA?;kO6l-**a) zierJ9x7Ia$Bf6p==w3om&{I(GVvyo?=HU~v5I!MmnH2y9!>Y}kfPq?+;y%0?P%V*>TvnD3+;`$klK&>x-`uGUpKI> z;g;yX`_ccM0s8+gn(UV7i#Q(YV5oU5-e+@YRSWy(6<-O~v)Gqe)}gl;L_RY%x+BP2 zlrp@`A_9omnoXB$@+dP}ZFh(kUTBbo(ck-5zHI&(H93#8oE}(d^)`NgxKH|BbbZlv zMdORE9Y4;f*mKe9Xg(BPAYfFrhASV$5HJukm|~`en`?`!4~2(B^Ye_VL*dHH$r71= z`DnWH^K@tRN5l7y8oq1P@V!l!Bu3YzKbSSRxaQWNQFGbR@;h4_CoJzDsH&aSdvw*_ zaMi2GH@f=Z==pa>iYs1-;8`c?r@kojL1y{Jtvq^dwZ_;^nh8(XXth zzr%m6E}B!`EikLrplAI6_m|k7HR}l^%)F>#b|@!YH2}#*#q87b!d1Dr3_n%z4+MV- z&N|(gKR&PGUs?OZrCC2^k>P$7|BV7hSM8cP!l;>@z$!^aOHQ9Yd%^D z*ZdLT`&TUAnNzWSTkblZ9d9->pYnxDs+$|n`##S{+d&Ov3>g=X92Tx>LIG5PKvUt= z@Y&Hopz)zKJ6nyKftQw4w?0>m1T@&vzs+rJ{L70wTT7}xeC`P1hS%bbhR@yE`uxTC z)p*S-J6jP|QFqY|kZZ{Hw~D@vj-G?GfZ68ny^S_+e4g4oTy@{E)>gdLtb0dSABfMx z56FAtxx8GwWb1R=krCy7m&zT1a))ntj+%OSEiZ5T+MTUU3(WfN{}-$8&%c6v_u;1a zS6W+Jr!H*V!sBOB{GAj(0`ZNjc;0%_Y@GrTb^C8(np1X0M`(J25;fbHwnds+~FTxjfu%RIhG4 z_8mTYW>GT6)xhHUGxLWTc=|3gWeBBU1hBzm8wMQR=lmq=JK?Hp(L~{=Ms};j2!0pO zzI0l+st|E=ev&;UTy+7v%K2fq>O6MUJrJ(?6t0YlJMiw|D)OM0RO33{8?jdZzrgzc zJYeB-=TmiSF5CB4^yo*c*`Tc6%tkE6>xiM&cwPFE`*>o}nf$seZrlS2J0YSN#z8H_dD8&2v;y4q|j^s%rdj z6?^l~Q`8tl#e-;-#s(gHCdH1T*d{z+>cXO@Z^VzHf6y3udJg_Q(+&Tg%YpWfuls7> zfGxe&p8l9KolFKP|3XT?esuM#Mc0k4exYc5arLI6Ym2L29&c1190xoGqK6uLz0m^T zntA1%`P8aG8b#kMx#S1KW{zqc#;ZK!DpZ*y5M6ll|DsVZ!aF;JayOwwMO|okt!<1I zBF|4QDye?gsQypm@~8VV(EM6)#j)NqFKAp}$J*(|FXQpk`Q!W2<2R#NJpN`xS;%rX z9^dr4@Y#issO)^By5dhrEF!q9u6T^H&L0^vs<*Y~5d_ais7&=QJ?s*4_jNI z$&Biw;~EFNPOlxVe1dXA1q8yCkKnSTrr>9f&TV}fBQ5Y;EgA%}R8qaOaeSY6t5Lnu zpe%DK%j!ZJ5GZ(dp0S#)NGHzxlrg_B@^lG)A(K%vJ#19Gy|3|fmU$%fV(rXN8}mn@ zs{f(dUW4k+>}yoNNp)Pw$0Ob(&zN5pq5RdWpS}){YP{`0W9u{5vxmNoe2w32X>1+7 zMdV8;Q{XjwJ0w!q4%@`KHu?;9grg(A_}Kr>arK$`RCTi?p#uYr<5sZIH!X_McR%Wa!M*S= z7=1UaWTWr-DdUH)@8CL*}QyfEXrO81d)&Xf;-oE(qKpj|s^hX8?YYG5@MzM#TrGhbxz%eQ-6H z8=<&@EjyIr=9iy7d;{cv*gs+H{i>#+wYa*@n12Z~;wR#UQNwG8uQ6)I0jS?@{K_vI z7%=XoH=fUc7WbCa+>t-Hq-I)v?-E$9c}4%A5eBo9L3=bme?Eg@2%$9}sE+2JhwI*S zU*l=F;brDuLf}bO5!tzUJTr3eXHh;>1!HyOZ6e>cTd6KHr?3pLwJLrx3^!EF!F{tn z6W@VgAxko5w>>Yo4kZ{9s)pyaqnyhHWeje?np z7r&lNu!Kr5R`*~HQgL};<~RsP{( zO4QV-iRRx}QhjZH1oPF=&|)?Bv3wY5`Jv*PZ^MG$jS)l@hs|(D{`Aq+dy1>;4dfVH zQoWI^;nQLHPF+|${|aM%N&a9l%5P*ZJO5hD^kA!>-uTf>)}i;+R#dVQf>2etBp(;= zo;d`TQaF6~>C{lwZKLp=Oc4UHOz-hC@DlA^iq zRj;eq7pz`^c3!?SEBD2U7xR94Kiv|4t!0!d0^o z0&&rJze_aUt<-qbX4eonUPCQN?Nul@p3%4%f@n2fNNPOTE!#xn!4PGQ7vhcgch-12 zD|VvshEwCwt=Hxkn(cRpdhGwRcP;Qy6<0rj1QG;pct-_|x+qk%2?2!)HA^;dBO8tK zR365t6e|jt1W^Qnn?P>Yt!cGBtI}$%t)DGwje-?+dB4;Ef*=UtC3guB1m&fW@Bg2< zclX}SCZV<3hx(Jv+;h&I$C)!{X3m^BH$hkNlHg!2I5^q?J@L88!9MkI@K%$9eL@`M z+a?D$gM-LPA9EiS+HcC)2aCi=;#l(f*c)W2U)46Kf&HOzRlK@b)wZjFT^Lwr)WjpI z_IP+;?Pe|*EdAWx366vuZ6`L;;equKBnATu;);Gni@*pDEZS_e56WB)^okf<5MgX- z%>8_}x1Ym4!1}R4lrpTNIl!Ko9Cd&tWcNK(_@iu3Ee2R8^r~Ca)$W_+0BeqC*n2XK z@#R$7WMO8-sPfc^(Zx~b?)&9^4~r3o#U*M7g}{;JN<0kdQYwT*X;5i?&(2uSuCD?+ zg{UPMqW06TuzfCFrIeiH*cJjcI##i0L(lHRYTwO@rx;5Bi#jh)^9P&Y-O&8uR4TG+ zdqVunpaagtDkVpNB`^lS$z_>{NpuF0g|`{dSU~S9%S1$zGl)FA+<-O#w4f}LIUs29 zJOkPk(897zghxID3&b-9G!D?Bvdnlu5z4s4fW`wlr7W`27x*rlJr z7#e9nn*%zvEE6JrCQ&IFU_cW9eV{Be5m3ZY?qNU^0e!G6vjw1tv)s{uwg7ZmS>`!_ zwp2=D4Cpz4K2(<363|vKW1NzFXbI@_vdmV1wpL0$GN7#hol%zA8c+mwUT8pD13I%T zQwhEXfSi9}6%p)pmSy2^yA}*S3N67NpWL%4fZ%T}_`6*IGX;AA1%GS7-<1+7*b6B5 zTMPcaA)$i3fP%lZ;O}oGRInFN@V6HHoh_k)y?}zhwczh02^H)G6#T6Pe{Ydc!CpYY z-&*k3C82`7fP%lZ;O~_ZD%cAs_*)D9CQGPbFQDLWE%@6+LIryP1%GS7-veI@laXLA zpx|#U_`69$1$zMne=)vF`~nKz_RMSzs1p3E0EpQhQ+>&$(7t}XiKi+y*!4thZMJ96 zVL2_yN%sa{kBgP=a(Yy?kKJ0(b0R_Uyp3_5cI=h7!bESHcJ)FGq?lKl6t;FLZ^xyL zb7^r`tDfaeUWqMiu2jUOmBn3copd^2SOq7;9^lq?x;5-mX)56KCFVf=7!?9lNYDuy zZsF$BRtam>-v-XYYHqv!(k|?PxS+ioO;NS1B(*7L!d)V#75c_k+Qzt>-U-N^-Lm^` zQy#tpP2?mK6U;o0S!PArD$l+X+6SIMLXOwf8`>wXXWx_e9a4S$TDW6_K?iiLT!T;t zayCf_4gzab-`iZ*2y2w;TSPUiYo7~?R7ENC$1GQ=UsMUb6a3_uXdX??d4ip2o|xI( zu_rlO<*C|A&nYnS1>};p>eym(GC^xSpPW3lxJhA4m1JMOEN8h;w96DnT(a&@(^Pa^ydtkgkV>Lu?q@O8a5}Rvaq%KWfi!(B8wUvCYG#j z{2N?`#jy5qnx70??)Hwx)a*}id*jk_w7B%XC+^#y?d#Q4ja?b+L#DwXs;pL(m8upH%SAkB zn;@6!x|)57%%=Eejy5vz}ZEyBrj!pWB5WUFwpbtu_PqykmQWVJid&wQJp770eWsU;m} zNyl5#&6J8M&5dXNQ4B}*o{5I``DBog*~H>r>eOSMWwV9 z{iu2ef?*xWEwTw~R=JP1xq6&3A;1BYqGIu3Xq6+_oWasBmIwNiYrd$>?pssvBj>SY&6Uz5@HU%f zKgtzeLpsJtcdLHa*ykCx^dR^n_q0$y$)+&2qdg9SWj)9-=cj>?ui=RhEt83OGNt1I(nv6rzGLh=&X#l+OZoy!`a(-O$=(jPqpi`AEU=v=-QJS! zU`cnhq&pdD=J^R)vjiKjh)!9nYA5FRK_4Df|DgKH{p?Mxd>;N7`{*H1K$}N(0rV?X zJMQvkW~e?d$$Y&w;y1>d5vOWizToub)^?4-MC3UYJ7ql1M0=^)YQ6I%n=uJ=Sk@VT zv>~Z!>pjylu>PR!8qa+eVBB$GUiK3HYL%mwI6Wt@xY#7ntMx;#K|lFAjQ9)wgx)S% z4p0d|)$fffKbAS6NfC}NR>KT%4PHjx^YOC2N50wL{^ldqOAWn>`aK^UC6q`p=wtNs zuA-v#s-ZhDmMUy(`qi7|R|>Hzj)*uJ8l zFW+|=?@IwFQq1`VS!-iO)}|~xuu%WmtAfXQSAxe^unb@Sk9HK->J!2H2p)Hy7vizB zKOw)qM{BG9V$Pr7*EKhcENCtkGfT?JJg_Ze0v2Xytie2IrS8P6ssA#~$~fwMi2s(6 z5Px5XU$0M&IhN792_P$wR2A3aCF9ERG+*Lx3ghS4@J~y8+c19LI_vunNc1Dawb%7;xLYY%f`0l({2N|mJ?i>5C?!0dl0FXeSUqo% z^v`$}V2Y$tdJ$>?!$h)r&12)SEXKA4bb9)qgv_+O0x~m`FZ%kQxCZ0$nmOIcGvFz)@bCC5GJ$_b@T>6p%sl6XVJTUdu;=V$;hKk4 zuWe(s7mRlAY@B~c-xGNay_S?|BB$tN0);yeM#)=pD+%5xdi-5^P8R+knd5g&2#OQ z9A^IDR%3CepD^?==8 zdSFQXm?z6AKsllHr|Nr`CIsE}Tdafs4vc<_%rKo9{#IsqAv4T3GrS9>%M2Bn;l+II z68YNKKf-I%;$;{fdfqG7EYY+$mpQCzeJj zc-^fXw7gohETrFI!iDv)wy+IOiF5VSS#lICVu=_X?EzIeJoXrftw7LEBPpivT-Ey~ zN0EvwlJq48!TW-spChKQtLnut@(#&W`{pJq4>6hZ2Af>}3cWMZHc*S%d2s!TodSC;L>F8i)P$ZboYv{tGM+%V zhQYOEj7-MCx8)|8jE6(ZAS6xama9=?w+4GK}RCYl8Rmf6BmJtpaUqTxMi;)%EfPOBe35RV+4z@rI^)G)fYWGWKRS8t} zo2qwelInX?D5JNZY>Q1`F-kRTB7KmP9+2Uy9oN=bG_*lO5 zhB;x7YDbDKXF>>Y&apM0V z+}qCSHLG^P5EQs*9u+A3ciMaikiU(tj)y6XkOr(PDrCxJ)E)H0IS!gN_^X9xLxOjK2 zs_mEFGWyeS(*U=MR*01g*dtaho!!?Is70y9k-S@j!9h3?(TC_d$=C>Yr?fA*-njb( zA%ibn47u{KEMNcBo)G6q>{1 zmpdtazBkM9ire=tI|-L^p2FzoL|k$i$-Ec3HMawkIE}-w-sHd&v~)VMWCo=!kZ^v3 zi>Dt(4L+6nbKrF(MX1jxNMzXgmj18LiT-e01U|mUiouUJ6@1+Nyyy?B-%&Z03f7|0 z`a|{MP}vO&TQ^vov4SxC6L}nXS59kDYaX;_Yk_RfS8xQ`kD6tBPUEm^HBxSEv?EDa zu7udhb42t8%~Q$F+VwQ!!o&)qQokF=*YGZp7CqRxOAlrnJ_Sma9y|^$#c>HH&Xr7@ zDw+5q?Bc;i)L~*i%QjbCQP0#Su5JAg9rF}=r)DE^;y~f7oz{) zF#7*W_Wy51|BnO697p9CTEVaII_K*b<$DJ%zy&@t8+y;Wkn=S?p6@F@m6e3->^%s)V*pAU9WJp*r~M^-{~?kf3NNwg6NX zbPp*la&l!tGLsaz3yNLdpEr%+lQ;0{9UcVS8pr$f6sBs`Cb9)bT zdMdVc9H4_hig{GjLxU-Pg-C)TCU}>~1^aU3Lw#nJ`WsVA@SFrMu-@VYRlJZv`eF-x zyr`w}=y0HeAKUbiSL!2dptx<413)ioWoV&SZCXg2eaUgY1fLJ)6qCsuOF<>|YNP9s z%m2hKv#dvMpK$sgTaP3<|26B8-yIP4k0->qZGRqynFlQ7{MViO@5wsrk#efG`o`^J zGM}~QA|GQtGLrc`EAz3gM^xlfT_I2WLhA+L3WqZ-IA4rZaZN*|%NFN97=n%}o_$nH z+_%D`J5}wwT=6_gh-V3W46|ZY>~y-}m;nbMyJ4^AQINJ-^b_Z-1UO1IJIo^|1wYeU z<7Z5(ETy7|w-<)B#7|L+G8{z!B+kHc&dDfy$k7guInDV(V%ca%dpr$mhMzI{h4$0KgL*9RZ%;Xy;5k;L<+Lirtza$nS7;0{jj~`^0LOwlOPqJ;6%F zRwtj|&x&2eXOs@WewVf^E7orS);kk}+UeL@<8hTUQP;kVJ!U-m6Kk~hna)ruY7-A> z8)H{x2X-b9l9RYDc0I}*>gYsJV$h}SMN1@Vi_;IEl8RL<>>$x-FfrMQTaeQ+SK?k# z+qOg@Bauxv-^q!Rofy?Q&tQ*LG7rnm@}7u z@t=y*d$s$?Spgbh0>P$7)mL%Sks6Pu`Oo8L5mWk%?W|$uNG_&JD(Ubhu8-g<#N}X( zTPr{xOiOWVw`1{kcXI7UrDE_Pc<2mNDu(p&^-A>hi}44W`}O9DC(8y82QtgoFAT2^R!cCYEoJ5g$92v#Oq*0ZZrm6iHy3~3cCW-oo$8n z0L}R}n#)0Ro{i>5pgGq@(;YO)Hkxjr>13n13^W~WG?#*=gN>#uXxiIo9H41uqqzh$ zZEZ9cgQg8>LJYbnfUDRcth=q z({pCFmHR{44@4mMPR`@#^uQT6PP<;4}cR`NXg{uZk5Mr=b)DO1|v&I!R5 zR+fv4P{O-XgO7Kd+FfVk(GhIA(PaEFT0EDT`W}kQ#qvLw2aPuZfMt@)F_H=W`5CCL zLJ)lBQt2z7fgFq7acBo)vO=#}r(R=8*~^LZum@FC$~M$4QI5I&JBC{%$<*O!)ZS6;qzXX_YT}x+wiq^ zk_6c7pg`twhvN!tdt9_~Iydarf>?MvT!~wp+7k3m5-3UL+_1}qDuC}Pz-4J`fV)fzYTSxb^ti&}gEb%+Du0M8a)ka=bE-m0fN46JvZ9rZQGcQp! zZm?K&sHd$cnb~h-*~!@H9L&-_60H!0WF_v*(w2&65U+A>sFL*PDCFNVEAb=p)Nv({ zdz>3ixDzW;G;79ga5xfAqLbL4tJK63OkP18(%4^~2FV1+kHdg7;bg6m`` z39R0Qi?X!yOod(9GJ>VrJZ;_+#x>-?LFf&-tHOMHf1W$`ON0)I#cd7c;fIhNG-28? z=dtCuVD>9KmaFS@py4GB8+eVry#{+Q?malnp_;@st6`H=Z6CZ&vT^f?dGYoKM$KYg z3!!!!MQ8OTO7}R2vv!zxqqG>W0|SE6Sh-nuSRGI z)ML0&kJ72oO(YH<0W1+WzrduLRiauu`Fv*|r8}kr4cB&RmWp~gJzpmj+>y54d2A`& zx|6gv3pgF&QTTQDN*bs2YNL7Yy+X>(7 zohP)#aLZP`z1pc-uTFhe-dCggS~gc>HwW(rQOJHy`%AWV#+d6c$8E&18#-;j(P`b> z-kIZbe2z}4=Ohj*ZWl(EnJF>2K7u4q$krVyY@sUe9b-@24sIP6j@bGohm5W(0$sLu z;P`A`#ay&F+j~7W**k{k_#7c`u}jq0Wg~CN z(Q2HYeYmzT0Cr1qcU&J@{gbl2!*N4tp_sJ*6|3@lW0Q=zOWSpn!`aoZ%JZ~}5Vp6wd}C&d#@ zM39In7vh>$9Mtx`6XHm`3^%o0@tCUoamYBX5R1z8O%Zw^w&&2eq_Uy$G48%+3c5lU zG$o`BAh2NNHgWeoRe()WVbdlVJqzR7W|S4iH$iTgP(Gk3t2=yRoV-=y;SFMn(TX^w zbRg15!Do!uhLOT3;`tq!Bxdme%U%7FC_sE&X(M1c+PLv@N#t4D%`$aL`z7W5xIPZ1 zK{4*$K^Iv@_qcM5uLLrlgN|3QSk&{PBQZIOrzhCU5LcAC24#v~##@;jm6iA>T(wyn zL5R)~wPhBvo*2c4;kg}~)AwuT;TRZJ-P#GN2sUmkMb~N&iLvU7Qf zA=(nFHx5zMrQ}J{Y@_y0>e&>xk>Fe2S}9RU3s{?;nX$Ny1aks!8@0t1B;Z>rCEWx* zlb4O!nKzJTx068LHEJKafOH0?AiU12Mjb-;kAf1&n?@a-p1ldUf`m&{63B~2oy^-u zvlmGq?-?bBE+73_0(s5o+|b>l-$)>D8J!opdQ>cdykvBK=;qPg639D7okJIohD#u? z7(;X(*6d1&iKnKpX&n{e_ zhk{XvNoMUZoMdgFrz=&K=YY^x*}fizzWRAsU){u0Rd(!hs4VKMeNta#8AI_-Q(s}e^1a7gDDtH; zJDa`|FwR;L3JYPg0Ga}Y^+`x!^$aO29}Oi?`bn3h#}ku$<6X&1@Pg4vzDN z!s>@5NBd?Wjn%#>71m_{4sB*=tfnE2g<)J#*es;7nnqVyKLQ_2mBnLgsj_a7DU52K z*$a-4-w`USlrT)uQB@Z9M{<6y*w=u*LKhB8#zH~pES4j$&r)AWHN};K;5?CIsi&}d zpvJ5nmOzk?br2O~mq{&!-<6U`X(RCPa2IOJ-S@Qe@JS)SA+<#(d(&Urw!S&@nO$FX zJ{x^S{svH3U(KUBsiUu+A&t~m&YsQ6nqr{=eKnZ0)K|`)17mSL6&*TIYOG8y zMWC^|gMv`0vUn*KmnMbEB2?-uUP|Sq$XSO0hM}-mr{9Y@(%`7DlT41<)z6-4XD&yyp+mIlMfhBsk(S6m6s-OH=t5? z@lq-;P39O-sl0e871tw6uQs4kdu6r`UMc~sf0D_#wg!<@U%c1L8>a7pS;6B_T2g)e z+OEFDdFTKvAWtaw-%C#~OROH66);UcD%68AagLBVW#R}`^1Dt`F_7SHypO5HBFf+*6UHAcrUA6G%H_D&#FDxI`6XnCvRh0j; ziEXg}TAFNGQlk>AY>ZKlkpBh!kv602lSc8e-D=gl@*aX}vIC@zZTtA3! zQg{zsWBee2e-Z1aKZr30_bnG$T%(VE@C){x@ic=^zW9&v2ZuQG@Fy#6m5gr0ZNWqg zUzj;=FZPP#cQm<=Z<+cJ_d6~X_f7Ku5V{X?HIgdtn~3`$ ziGQ-*|G@pwS1ix6z2^N77;3nSf|&|l=!|el(@hE?kVn5Q{$)C_rrSCF$RHez#lP$U zKl0J{n)gF+M{W_`t1tc~10Mb(_d`apK6USh6kd5OGY)eicb^^+33CBbu%nF^S3=+t zh6^LLxyjrV&jp4)jF*I>Uf$b6I);lVgLnsr-`K}7vKcR1i0GI&v8&Msc9L|R$Ozac zc-bOB_=DP=+i?G<9{(`I*M7j`;8CA@TED3kFjrISUBK5dHdFZkkAS?$92 z*%bIiXTvYRbHDH}u)6xDPJ@3Hci7OAdZv8uw|tN0SG*TFni4X!P(s>NSBsLVgawi(2?Vk!B&;v`P# zIRUk1n9d|UqdjqjBY35v4MDIZ)aXBw(95HZgmH-fftk(4ad@n#7voma+fbifAh^5e zI4aK|rNQS2og|@uB2>5rGN!A3i-Z;sdOc~|Qu0JLcazr#s#JXBRC};)1>ow z9FoEG)2-mcZ^0Ma@$Dk_Rq$LI;i#b3iz5 z;;1yb*)G9;P52*L<6ZI!`>;qUZoZkAIcW*+yW=ZV;;uEXwL_UyS!+7O3)V zN?Hmt08xYf_7K<0v0fSk4t-Udn*!}F?l&7gR~;Ov)~Mj7-wBs(R4>wB8@xXapGDD{ zxetrhT({sd)B%2|dM5lN*&2QJTsDQ_H4A&-_#*!0F4JpQ#8A!_QEZep843E4IJ_hx zQ;yfCoM?q~<|NjhuBT%{_EQ=b5#=-|BFbr3S@h)M!EqwQ>A47Tnt*%GkTV&bl(QCH z>2Hu+W7tZ$nhl;pypFI5NI!p)?C&qo-=jo3`lp~B`X!U=_^(w`rC9nKl|=tWtzYRZ z!J5g%x5tSPhyOtRZn4*I+C)*m!lU8(6%RoDJg7J1(dzG?8l`^L{yJQ2@2@_{NA}mI z=k5J9@WOC^K@Euh8UQPS*-U0@6^to-w+j$7$h^_Nlgo@9r5r@{ZIwlGmo5zxYiu=9aMwIEsbO;3ikkOu>q zNk}9yk%B}D6RAj~GLeBq1{1kR^>q5?6`vgyk4SU9)gNnAJz`4%a6vuR<4C z7;`VYU-3@M)0?9rrXbk|n2a{+o0+V?*g{l2PyeJJLv~FYIVxDmlxIb9a1e0jdYI40 zt2yS7GW=+SU&?RxElR;KiQ2D0KMaTY6i4T zW*&i$0H}Hg=h5pdTl4eS*-ZuvVzJtO)i({%#)3bG!u?DyMvk}KOa_EDy0U~v9+)ml zxYjJ;?qS$WqJ-+-n%&0u>m2{00u^^jdc~x#^vx9X!vEMZBZ&L(iO*p_V#=>&KQimU zN;Vlg5D~*otQ0vb3L(Q*^me$-y^r&IFfIl2A+E{7kxzeCaxhiz`SD)LNjLp29f{I| zQZ_SFktd=E`LVzNZ&MIYD4|j*%|pJtvRyI)3Cc`cu_z>h$`Wut(>KEPKCucU7QR&yC?2lX9W1j|wYKA%xJ*AMo&yFxUM=^L}C zK#Fcg{LpDB`qdPw6`3h0lLBp$RMWqnr1l21>~^tmYUau#a)QXFGdqASzDeSR(O! zl_)=c2c}sxUtV^vo+bS~;g8aG+DzdQk;4GYyucx10KwQT{ZKMcM?^?$FJfKc3~j-0 z0ML&-fjI%38OD)=;C|USRYNG}VLS)Ji}Xps8W|Ui3mwUNZ&JsMlp6ur8S=n2H4lm-k#9|`_l`w`hb zJyoC0gqE4g`fdUQ^_zwpT(yPq`ry4l;a#!56bp-D)Fei4dVwiXbTuh@tonJe4wqIf zE-`WRERLPwfPyNGz)IESNJzq~@Vrp9b@0ce}NRj=Bx7omDZcemxyAp$F+qg!Cyq5>VMz3v5txB+b(tRWr;x*p~y zY%h$!L^XQ0c%kq^aick@Xa!&FjTdQQjuWx;4I4Ae(s7RJ*KPX8JE$KDOT@NA>Tl-= z#50kH?pS6?^N)GCN7V-PW5wC>WVT$tK(s*k=5&QtR;IwGWf-o}VR^MecWx3wS$Z?Z zBnRW~)(g(7HnS6hN2N-QMzbTfRMZ=(df_OT{JiZjsU|FU^++w|yrl);?Fj$gS-T`# zKLCe0W5pg*W8vp;SWOe5y_D6$TfyR!jnh<|Sc;edsbX9S>r<`%0)|Ow*!YAtgSZ=v zg#e*n(Z{-OkX_Bu#rx3kPDb?K%kikMUAGtW6qH^H_cM^f6mh96?HC+kuwuwea&nU% zgP5k>X5y#EOfkgtVNSUqIe=Z5*f!FuBUR{CUi{RTK^j@JwZIzzV<5DuA+({7ec=2Q zo$Tsy7(=C<$x0D~DK*#*)f-nHy?;fWWG{b-vrzOigRqDCnI>YK)2E339+ZqT@KiV1 zg9(8SJ!rkQn5@AS2|dNLYo@1aW*H*TrmcsUQV;!s4A#AHtf-ICF5Le@-=b-?`u;8g zeQkLBP=kI{85#>xlCH8y(s76xxKVnckfa)Y1c=EFnOv#t@~j z6xB$19V)9>GKMlzcZ~kQK>ySbp#&^odLqrSs(pyDs!SZ5gu25G0n&scZILM0oG?zQ z4nUG;VCCX3`bh(#V66Yb@^C(~TM`_CLd5(cEwb;=4b}z&5Gr$j>mAg`y5fZW0bT}4 zMXjiNg|xxXEy=PTwBQFx7Z;^XGYg(d_HMDih5YEP(<3Iz=RQEsnG+=^$hA8JKunO> zlL_xX{W8=NE3+i|bS|H~@ohU%*{>;`+V{?tbBKrzw z)K<5{{FSY3Q@wY0gF6G}n}dZ@g~j2xe&NfrD+r%Dj-e=guUCLs7{qJ}J z@tPLp1Fi+b-}*Ve!n8%*F;46?t&T$SK9VQW(@2g37POo51WW|`^p|6WC2D}M&1Uz_ zQVUn;J!K^Zi%N)PQ~wbcVk7wzR3c&{x$jO~u)^{I^S1s~o~V0!zIL&EErqW&m9PB_ z%`xw{&cka#UdFS`IL`SQpm4s!Um5S92~rE2VBr?@?{9_gp%7!>{YWkd}&6eca@TM z?0bGRiRTIUScmfPIwT-=O34W%R9|MT+8>H$rZVS#km3|~(1cguS#*?0&sXsM;-SK^ zC5WGxf&{lCB{bYRy-)h_hj&JA!rxcoa59iWw;>EIMCWuJ&hg%0Oq9+Qb4ZH+;moke zk3Y`ZC)pTjYEnu>T&w;NKvbe1;kVID|{CgKI^mmQ=zY{&dOkTdp0 z?YW43!72rPkHC-`mOlC)iSOYc1UfB;UveqN?>BL?Ax*@C?_o2Qk`2gfg@^La|KP|q z0Uxa^%bdVZDSQYBCbp#KFi~pa8+KIx*g@c!m6lHZ(s&uVfb$p4-q#>XiCV-lA5jr9h{v9GK6U!fp@lgu z%})VzVKIL6nTf4qaQiG17N}{takub`16616-9G@#_y{cTsk`mv#e~Y6an|MeS)Ous z<#mfFue_7lzSd`59<`|cLc&?K@1399+m{k5@AJJvufYwyX@`D2$i>R&e^uFnC0DYcIAzaD6g`E*}m(~ro0psCHc9d z*;%#k#CUuA@SJS(jJL^8Omv zC_fvWpI#lu#z&i9QeWhLWBd@rRzQZ-y#4(~5^AC5#gio}qX#Tg*_;0n90Y zf9p;Ge_Si3fD~g2h&n^HJHm-1M!#mLn4iAb9G;)@+G2jn99Cz3Iy|z$`RP|rVSc*O zGC$oOb$+^zwSvFcVq<<93o6svFZQF|e{I>1imm6zXeF&PVq+@rx`cM3Tqn~Mt{U6W zmyix^L-WRA8`_@pWyC%-&)A24nr+>O{&S*=Ik%`4P0<^4(&Iu!uJPZ0y;0W-z-`qHW}5+P5%b{&6`Bo6Iiyfu3q^N_Q3C= zPFN>c_mSgKX7w+|$^FUvVlqd5PgA%YVCcpyjKzEsEZ)Zbl@*UkP3|8BJ`Z@g|G8ZZ z*l7Eo@cMGSB)V6{x6e=pP06hd(Zi?8`c@XflhT6~LI}eaO3alDUO}aB4smQ+aqXfi z(CB}gNzEf{z4&g8{OlU-z4)Xd{D^tVt@B*4oL@mRpV*IF2kIa1lIzKG1I)h_)fChuR-UPfEu!BfI`n))< z>I=2%)#3G@5kJT3FY<-O)R~}H-zH>XcroJU&|=e8x`}YreE1}FQsFg}?VrP;KrM9Y zU*90AKWrnaZ@34vVfEu=^{vP6uX7YdE^na;eua0v%sAZ;1Q{C(B?=FPwR}gOjF?S# z-WuG4kKj-q1noYYq2i+$?e%+owCfbTt=}oD_54SuRzJzr2OmJS?g6(kns|U?a`ik^ zD|m-cTUf7iy{hL47UV8?SiIRg18+*H{a{9DzU(Q#ANojZ5pRlSGE^Ax!_f5@jvQa} zi;F{yc{}hWtv;T8s|8KDLKdP_Cp#vheH?LE}MfSh&MyWynL05K&(O>fl z!(896B=Aa!Aqk74O2Q}juu53I^}A(-URodS`QrOgp@Qq{^n3~`6#O}Q-qI)LG~@2O zN_m)fG;w(kr#^6ELC{P1ROxHRl0Qnxi^O?<8B!dN;W@`Un+i}U4iBDj8TERhI0~l< zb>XL>ln2a3<7x7llCRGC3S_a$9Igkly|YclaZ!%%dMJ)h1mkO{IL1iJZuK3;eh}jx z7gjLtH{+0m;~qElL|w2)r*#O!X*K0b^>vvw1EvnQgnQH?BUAq4BeH&5C-_%T8pG~mpsL=?uV;QSvS zRX)b+e5jPHB@&Ma0uZlM+E%h60USu?99FtZ1V3*mzf_K6ayB^JFTy=t&L6nii<_Gl zL5N8&sx^m}G^H&oJ!8GuXmh^tJ|fz!B4UoLbl~KLvv!K}!!+YyMR}{bY?1f|aoT1+c0;XX1Ji#i9^@U+bfaas=M4Lz#E`E6evOhnfa_%ZoQSY- z(yWs0yB?b1ByNu0(u~+c>hVqP*h4Bmxi;GeCIgAo6e7J@N!i*kuvFFtElyBMXsF5d z4aCjSDdOg+GCLo%A|!xV8D;xgcJe;dAqjV|TwVkbb9G44`Xc+d!tp*eiQh&ngm-4e z-`lfx8D)PHe-Tr`S@uvXTqr$K;Pk0&OuQf#m@p;ommVqT?C~QgjeHp)0ODhuxMdns z_K3($^gOdihf5J4du1QkgvBBvAmkemi>#R7F}M(nE2l6sdNkVIRGCc!F+85yh>!WP z<=|2x{Lp}HuFSp(u1ern%s8jADJRr_l4DPcp*#Z@fe)PvMu7D{0kvS3U>i8r+>6?K z78@LsS8la571xsr$1V z9WFrlprIs?n6k$W0=xtkJuX^qWs!skaf{BP!@&)>4ulwUcz?!fXW6irvXG3#7QPBZ zEXP(QTCP+)?x1-d1Q(IPWyAR0z@|mBLDYmqeuHSSB%+ZTL`{PE99k7QNqE4aw_YaY z8IU#zKZGadh9|f$Y(lUJkQKEBl&^~pD`6)B-%jF_fo})=B@&PIDrNQ6Q!8-`nf?Dir_ zl1P#~lH3Inc0F=2zFT>dBxyksgozvKxCJEaeUKO*vHY-~zXRwPLw$rT`>7=VP|x`Zh3>z*KKO%g=<7>b+GB|;KF z(mMExz{-&esi#iDYq)2AJHCC%0ZiczjbWg0+ps6<70d)4vp2sR6#Sd`(BE;M(*!>O zTT)<#H|=VKgx2b0faD^g#L2 zIQD=mZv3wgcNQ1y40DGsK6WK9&t37!hy1uzoFjYP0bIHBqpV~2%ngq{BSh@D**jDP>bvs+`+Ah z=*4a&s|O~oH(77Kfi`$oG6U^Zv3?C*jC76--=j0_HTb-=afL*-SO03hFb5S@h-!U0 zPgX1VGb&oFUrql{%f&nR+a>F~(~LE4du+Zl@L^Zh0=}^L@GDck_zqietIl`DjH)Bx zjSC)P>ke9&gUxv8Jm-|w%TYL4cboyGua(b#q}JODtDcnxI}GMz`}*||Olj%RPo6$v z@T4W!V6tQa`E%Ah!Tl@bf{IQ+fhf0wEVo(%=ug;&qVB&ROU|P1!D|ICB)@>y&_v)b z?r7pKwBzqO)EO-3aMR4t{lCkQH17X}Ep0O8Z8ZSoY5rL|V`7^6XPxA4Q3r3UR6u9# z%)lyY)=B;O5*<2)+ot%ltFSAY+Bdt6#re#b_ z{(#f!L#qK28r}CKYHQ+sFT*7p4m>eRNgGfiHEDV_e)AOH-4Gz8auweU$SzVDitiU# zIw6&+__E?eDn;?N;UWqyK#DJb)UpRA`jMgPPN8eJru6!c@=xb`%$|nTO8JmBkNZqzF|HwV+wn_^>gQw65A?9?OIHC!dllMJgPPduE(cI;Ek~y)GIe?Hk zGr*VNr`YOB<}5okaYP1Klly&O&9YN7hoiB}b1|Y8ORhkO$d&P6NRVG#kX!*nGVBcD zs0xoDK7_^&A3~#s525kGhtNpjLuicfAv8Mp5E>VJ2#p9nm}5bX0wMosLWbzul}+>4 zolckt8xqZ^N2WRZkT}9MwOgFKln_ALwmUO%&-OQ41Zb>It(utOI z3#6f()_vKnX4SGYqUI^G=5na5G=^F`*8Dyy@Kd7R=#0sD!7+mkI7%xRV_Ff zn}1_hwPt(%x_GtV6D8jhuet(2bx{jW#pb7VQERF~x?06VCLV5WBL4iWDLx&dcq5*&415D)1F*6R*~s5if=ZwVW33 zRJU!;KQcz$RwdD)VICbF8u)e4EO%SD-02wwU&rPLrf1YFml=n&M4dN}aM*|RMs##Y zlhi@8+#TU^i!usoQEpL2%?GmFklLy9rYJY0h@zuIs;Lh8b(Fg~RPO8dWE7l0x%Xt$ zY?9@gdJM}C%;`t&R6iAb{uDiAncuDbdgF9;;)nTZ_^lMbTg2}!N`+Vhs8|Dthp|FZ zW{!iTET^QXv-ZnBa&_jJiyg1AIxCo-e-ulFs;0qP@a1+tm&hnmNKl025fmX(1VxAuK@p-ukXv{xpH>+b@W7a5C+2Cs!zyUgGq7%a4}VP0{CHz(&!fD1T<1`1b(di@BOyP z|GSy0kN>|k$$BppWOXNCQ^|aPw>{nZR@%2cb7)oj4CXj1!)yM6>nq``gcg>81EwCTb&n*z5etSR3&HsTXwv9(_b z0G5ioCT|xh?(SuZJA9eqE?=g&)0Zjk_GOAYevy*PNb|wi`Af`PEEz$zW2I>Vxc)Hr z|Jc~0HPSA;G|;Bt^K0|h`4aBidu{%&dw$-|$vK!Qxm_olc+) zsb*QQv>g_PbuCAB^RiTAJZ#G!f_>CSO~jv#P4kCbq4wF>#I~2?e$u`#7duR0hu#jO z!#(PDs~y@75?dELNbH#HAhAofgT(&C4iftlJ4ozL>>#l}v4h0^WQVBg4!a#X+WsWM zCJnt`6-9QnPP!Ys#1LTUyQ-yC)Ya!pLcxwC)d8G!zb6%rv$G(2zw$MV;)&IeZKy&vG2F$*y!?H z17jnDNP2zro+8NVjtz6)Za8K@uA7@D*9|X~BL-FUGwg7G@<3ReVcS7=Ic1)Wo?+WF zh>%AX6Cr~HeMdGTm41s+&#--u;S4)C8Xr4@KIY-|v1b}Myxsz2#NqX407XB%-YyQW zw_`z&-*-FK0sQ6R^>)nq{N>^GcFghkl~X$t#^LpjfAsJg_R^&LHrtM-{{o$kBWD~< zPlRhGQaGBP1>-4FIGWxA;}B9fntrOiNa1MuIrtf4Z2+fRZyf%Ob|i2j%|VRwbyaGc ztvSkoPu#o?=HflK(T-%$;>sInMkGZeN+D4<5RG=EfaungXhaA`JKE6)M0Yq+LG-iK zXhaz#Qb9DqkpZHK8PSMxNi-5fg^pYh-JctcD33(rLG+L#4@8KP4ewpKOc(~|;ApSN zw&n-m^0z{~C_T!;+l{4xn``zg4cu6BaA_dB=GfAJv!)h#+qWQFYO0p4tI?OOsyVzY zP;&zKI$M&ZyKdfIwRG2w+x4ZpvbP^zy34s;&{t`RF^v5new^A0k62N}MD4Bv4gybcyy$>@D+ z-ELw1G!BwG^Ik~i%qh88Ur)+^9kK%F@rf&fFXK%1tg`$;Tq4E(dm}DFP}<{^8j1fE z-3zq})ymyh>xR|pjTkCt(C|V>BWkrljoP?2rNV7Qk&+};90b;@cu3NS`XotisLv{)~}6-tzQulTfYt>wtn>kY{Qy|1Pv-35;UxD>QgmQv4Eqc@>`NLS z_6HzVcSIldQN^h~QL0yph=@AIiHJJ9iHJI~iHJI=iHJI$fv9&V6Ib6TCa&HA97Qnf z!xkep10z-kYnKK+hoX;I6j67uq8(8ODu|=@3Ig%mBm~O-#u# z#FQL4Ov%nnBgoW0NJCD6$ZLY_%tiwnqi zSRd5oSE!4{rQDJfasIwT|MG2Rf@KU1G7sG6C`QQJn85H1KlF~$BOQL|_r?hr{Lsh5ixm9O$H2RQXDy1a zKYS<9g?@D9%HS_s;SA+_6C=bP&g7iBkwjY71+}URYW(hulV}`CL4oVW38yp-8ox|;^ zow;`54ISBw&>J{K4_!DXCKTa-521JldvrFe5e>v!X~j@DD&6t^lWyIK z_IA6)d5$FxOG`_-l_lN!EaS6Wf<^|%TAcLca_pPOXW1s>voLgvSTr!<=URaYv1nin z7cLr%1z^}0&lbalSM`JMVaB&P{j`3tey5)!Q%$FzZVxoz^fQ=9;q)_0kkxhiiSXU| z#tw1cfhQbAq)t>4p|2t$V?>5{2`Q~QZ<7m+dcxITZb;|V$yih?qy_7sS#G1AaP^lP zQlfP-7UhQ2Y8~|JXX6Q1f4L#8Tqk2uZb(l@M~5_bbhN3<(Z}C){1`{r3ojf$=BEfV zVjGuJrqn+!Zz(dzWjRyzIjX*ClJyP>vby8a>WpW4;gPwKi_D1e8{PLV+>@LvBSr~9 z_L0Fn8}+@j=NT~qm}i946BJqj$et%CLWBv55L<#mYl85L5i&@s2)QFDLe>bf%a_%& zG1^_v`u+GkBQ3FL&czuJwq4NS92TYI_VVndrW=ODUf%tk%Cj8h+4Ql z9Iqz+K66lA!&H5PYOG1t`*A^5XHfmHT@D2V{iZ`jEU~e0jJOIdcX38QzyD+Gn|+AK zVhxSZcaqtc6Pc>7FMn;4^h$FgTky~-=pWW|X6IS9;C15Y)G)Hkk0RpeJan(w zd2cXPU*~N!$$FnNk!1CE-v3@49s9KSElg5o=Oxq^lczU>&rFI4KC^g&*>fkDs;}qH zzsDf!eIrx#_1yoqxqy~(Y2e?_;4WPwqS)Mjx5>)an5xUly3@?}%dqe_28*d-)J4l2 z?)%eDUrD+C)M55*8Cwoa^|XTg);Cb+6u8Pn}9lQCnNiprS(oLE6rZw$Tr zkD6z|n1p(aAEjVO(2q@)?ewP@E7R{XzR*8;{`2sk&x6&*9)su*;_C!wbrPpGIQJO` z3ZDBYKDsO*m8bZ+$#Wi@{lsF`3mDFRR?EmkIQy9+BM;&1=OqNekY_(%FAm*)Y;0c~vGB*7Srz;{E_3}a#*wh|={sa_@JHmRX$mr-55&aOH4OgnrFoD8P zkqZCE<_KB+-x<%#U~XOct}EJgrJ9fkfwsAga}@$7YD-+OVt6C{SH=bV_W2ZafH&Z% zCBE2)Ft7-2{rlpJ{qqK)x-rQ-I0XK8xyb+X?T~TI=AiC2_mB}o>vs>iW{7F*oy=4e zW3Px~_P9ybd$k~|dw>?<_VJC~wzzctA&!}dQ*H?uCRR}qF{CVLc0!}xTj3?KX zaDAyC{SD)o)t_<1Rw%Ms5!S*;bi|@E5^c8te5Wzgx`e&A5JPPyF7MdJ<)YmB$K{JR znB#H_Q}vC@uT8SvJ&{?x$D_iWAwF*RLkzXB7}ACy{J89(2x%l$gan5C8|*LICC$3! z`^Wsae1jN|E%&pK1J}5m1{}DufsAnA8V*o&2d-}tk8Qi@z_s0U;M#6FaBVjoxORv| z)<59D#j~V{m~G9Z+ZAHA9mlZ~9Iz0xtqneAAlGZv;60Z6x_3hb;fe!TfE~N zEhxr+PRzDgII%^m;SVv}j4;;`@n1qQ<>Up%@Lsq+I(faZQM&Nu$Hqy^v0QFAhL2fG zIq2-W^Li>8ZQEZTssHRN5XC%DU#?X$R~)m3O$Omu8Q)fXxlQmd5{va8!V#L`5`Pfw zvkIN~pDEgy%2ovb4kxewp*am^s61(gdijS~c$*{iCrl~Us0j50r?W;%sE6b%rXU)^ z8lQbgHMh|zf>iU)ipqahRE-ZumRKe8YG{%PnfCta7<~`J{j1?Q1yu=0li&w7tkG>l z0SxM03gC5TO2bP4lB70HlF>LxZsR14%owaoBkLfL{2+fai0(I#Kg13Uh^ssQRM3}b z`+#pT1U0mJuGH!|jcfHEVh5U`ts5OFBxq1clVEN`I+X+ss%8@S8_S_Vh0GkPWDfP{ z;`)XGZ`E)m2(i^p#yz(YFU$O2%xwb$@g%g(B)IC=B$Z zdfFddFCmxcDv5}w+K7m#iin7)I*5p<>IaB=H4kz1DIMbGHqa~oiM@#!k+}#H_igUA zp(ilGiO+B~t|z`nF(Uun?lKt8sr1o9-!BQ4zfpbJtU_cBK2Q@gElk3J5IJjBi-?m$^3osSkF z=c7fw`DhVsK3b%jj~0Q(V}vXdVi#jV=Gugh5WDaa;;%zv7g^F&Ng7jHLxM^fmApZ$ z&1=Ayx|0GV4{l;q<@=FIBTK%2bF9s8;79~6Btb$d!GJ(;%1%QlflTCOEKXtC(>jzGoQk2g1Z(8UvK~LIRm{j+!c~K?mVg59SlXLnmUkr(Xz%7k7 z+zWd0Enn{wKC^w6{=8E1^KTd1+s82`h9*iAT-DzgQm2V7J3lMm676#@=q1Z53zb)~ zA=H0YF7gAbyBaD_Pz-3aygakKt7Lh}q4EY=%PVGiA6?Wy`vk@Mn;L81;lCN}>m$p1 zZt%PTg^`-v>CPpG_c*7E$o>g^jUPf#4Wv9b0g zndSA9<*oFZ?K`&4(!OGr_fiV^Sx@@}#lwx3H}_40pFc&8kk65!@@8Ah6Z~{Vlt&$E z=V#kS%S$!O%aG;izcAa^(ORA#SpB05?d`LbCn$cO+ZaFnZy4uA%Y-#o`+pYhTstM*9ZJ@}AO6elGve(mp?H z|M&%s@$;re%bR4Dr^@oWg~}UlEw7m6IT|WYQ0%(CvG&E7!3$`ce#8Z9ryEbn?*-sU-G`eA4{lsXWcU#1cejTzT~T zTQmQ4yT7&k|Kdjelm8X@li%;WYUg(@a+mymewBsaWQo2OKMR?{x|95VWQ?8P%x`=| zelel^uD9mrM=tt9_*ux5kzYSEKVyG8j2jkJJMQbX5k!!NS7it77dxWso5jRX2zsM=54=XrYTYOFvvF%V-c*^)L{$n3vBV_48L=&BVq*Kfiqqw!s5zgVx zVa}o0hkU7Oo7B>SLzKrCtEI=3#{&tgmD1%<1gdrd-L8}@K-%SfISG>K(sp@vo%Wn+ zS=hqq`8r7{eI7WaBFUvxjBJW}y>)q6t=re(FPD_ny3#LDD%7~Zu4LfONgtcwOxvJT z`WTu?NR3TwHkg| zS*<`f3+zk~i3F5<3R$MD!Apst6p0o@6QZPF-!kna%4?-mWV8Fu8(?PlZzT4dt%#uX1pk9*sh9`|%+dfYQk4R!exB_#)f zXiBfA@Y)uUnRbWcK&H3l)2cSXaoFvfk>X1G+?n3;8Eu10+n=^1ZDragPHk)27Vp^h zX_d+r(fUMt(|eDZOQVDcAN?8 z85eCrijT9>9j|0-8?{f^mi@9V?SG9H zlIU=H`xi33onK);enhIp0bNr0!4Z?{^Yr#}GQDxHpuQCwNwpe{M!lIE8nDeIO>h4w z@_ogreVSIuMpP-Qoq?rj)iNy*Se)e2s$H7y4D3w^R3|uR?Tv}4jZs$4+KoRkUGc9L zyjhn%yd~(p&0J~KF7Lf@$Q}7O(>_hx;7Z$xO0v?iO&eq=7wvd@Y$;_5z1JYZf+?G$fwB4EME&uHFR5xKq(tOFz-p0=ULU#62 z(b;PyTb8D+OuznXSK2OD+HSOtU4EEdej=-MtMX`P+&po4Ax%yVy>m?ULY^paPS1g+ z&UFW}1AF3c@I7={3i|vRRPhr?!62og^V812p5&~=ZCT#V^OTC?&cN=3EamO3fRJc_ zxBUwcKOwlg5(arYKQn6=`@xmC3+UaTPIjhuLOzb)p@|Uuti;_}UdKFd=NFWUFOYSD z%x@364X*)<*Q%U}TeT(fC5TTo_~Oq>zctQ@?7eYwvb614+Na1FBh@9d>ni%b;>#>= z+&pHA8twrqaf!ClnSN`66O>8V1r8;9 zTRs}70(HefZHFsyWuPW014K|5u0%glwX=4zxWs@n{f3rK?PJKTQ(N!SPC1o|B~Ens z{v;IzI<-~EV!aauV@$cUPw=!usn~=+d!VyeuwPBA#Cu4s;u}D^6Av@xPSoX}&HMu@ z)K#f?U&5;7pGp-vQB8y@Tr*Bp?)4*gLfna~<)6g{UjF$+{y8Q89N`}w+HvP_-xC)?wTszch*s#>HfuQ-G)nfSz^Qn(bd^%_ zSKLd-3PLG)842wx&+bLqXvdyewInNSIqR!pOgT#F13loKppsAAju5*`UkZ zbIWSI55#$IPJjx3tPA2h2Tn9|c^_!$^yp2rha88M4|8t!BeC}Xse2pvsH$siJb?s~ z8azn_1O**zu%VTjF`&>woskKgX(s|zL{tPuMZm-fBoSy02~5&(I-NFFTibhWYj5>d zZLLzjfL5Iea|j=TNeEvCB;j+0fD<4jfM)W4p1o%#lMqDjTi^Ts^ZR9=bM{_)t+m%) zYwxu`$LeiN0O}LUR%?8XD-Exx;bjRHr1{OthuYogt;!ZHgs0D(#ZIRU!Z*97B@v<~ zJ8M}Aq+O5JL_1{BI#8K5_rx1UuI|*%ShWs|b_@+4)bxNi$ofBQc1?JHQr3j0(P4EM zR(Im{zsy=IR0wY`vyG%;z+nD@M)D01JB`-yANc>B^7hA8ZNIjIodfl^PJQT%)(pgE z*O+%EWsM>5S##EyUrllie3_8VZ2C{88cze`NdTLT;97zL>=k5r*ZX@gyhhq$c6l%U4z#$CZVY8- zt^o6sKKv>pKG%~?0Sk#*C5u$Mc_k_J+34?!H8 zE!r7$+%Ka~T@QH!=}j(6)=mGgXl*o9w2&}IB($NrAdWQ<1K~acAqp{T%+D-Z6RQl3 zr>HOES+greL#w&oVmz6xeS)_?qq8(_w-^H!*OTc!<0r~y2+eG4^Lo*PoIyva?Z=Z{ zi1#SF5%wHr;L-M(S01II8@Ib2fa(}OF|Ry~&$w*Yf{biqE9I~WP4NTiA6Se>kZKH? zT?^1XA2Ob?7~8V7qZVU_*|?p!TxvRMpb@5nelY(gv*tJMMP;FB03-@C8SN1i3w3`M zNED+F_r{YbWUB;2b|VzRkAVBAKzso-wy9j;-on2mmO*047wWexi;o9piMwHEXe zdqg$k>rF&IW!8>oYXOwK#<&-Ks?iGx8n-~0X7 zX61zo1I)&AaCFQ@RQq}Obrw>!K!Cn%7^D!SmTG2u_`>l4jMAnhWNXKfwQc~&Z!#O} zyn(9_n`9w306PejrxB5ot(`V|`E>#G5s?bM8?(_QBNB@1F>B4)#^dOwt_qWS6F>t| z79ig;z}qCqfrGV(9wLw(2joG43_jqrVP-fyfvbovJ4^$Gm}ba^%OIo8KyTbaT8K~2 z*0zAXkH8SP*(=J3=nP_M8esMk`DvtSwTOi}oEE^@#wvVfW@}Oy;W!p&4B{eUSPL;| zEc7_Dwgr)=2cR;1W+AQ#5H_MN#6v7JQ$U%*0*yz(AqB)(C{u6q^~?)E;6IO86J@DFC`OO8YI6?{GA=kqc)!MN1;vu>z?qSzTW zezWIzf9P{vI8h2TU!=9fq`?EqHg3s|Z$QpMk$NIFRaE09q%9L^ewH#Ooh+h(qtbOL?O+7sF-N78DMGL;^g6O0MXHs|GP)Eve*KEL=N80Jxuv7@?HIy-kQjTVBbv zQ>l`Dsly^WYNqm;NIa-`oBPU|^akXM7`;ma7#^0tRPV~?L^h$G!y#ZH3yhEOUimzd zq=bQ_OPwoUh{UrztltO~*g)k=0w2tvFRTN!sMm=88=|2wo8TJ37JbmBwNSV%0DzKL zzAi8d^+gQf-xM*Y0dpKg!rE84R>VeR43Sssaf@*^p4`Ra21XPVMJ^@q53IGhT zZxS%VHV|_<(lsK5!+52v4(|*<6cO1Xa5g zT<*AjzFB#^iV6@mtg~k08Eu#Mh)6i@J$gMFhxv+KM>Mpwo*0>BYqqu(Ho)F!ExLwU zw4q0Ug0UI~m@j;K{e0!|Bieq@18L({pn&S1Hy(%2+k~`SFGy&+i0V@~j~3%u<8~#j zv_~V&R3S40?$io;+ZKhUkQ5o zvI(i}fZE2Kj5vv`D5>LsfPj#Q0<5-#OBF*(kRSq(wIhB>?EqxnfR~o5WbR-Ua?|G-#lX5VeBb|&~E&11R6YGglLtkSl4?|Z(I0s5Z{U&HTU>&sX32tQqm^1 z;2TN)34^et8WZa0@(@5KHq@lFozsgAUr#`|YXks*nT=+X_{V~Tj1oKBRIvAN-C=!NnO{D9umoEgFn1j|{#NY#a_s&B&u_%M z=l9m*B5}?$zm7cbGmrnj-;B~2rd@~aUO;9^$93vYu~U z_@{TnA6DXv=c8o>%K7N`aLxzS{SLNYtL}fE6X-tiul@rjqknjJLS#02Ei0dC7tKav zJ;9y0@IcIbH0GMueGjl_)EBWh;bAW6N1y?@-hwr%i{{5AjNqqjQf{B3D_oOIPJg`f zT>KN?@(%}t<(_5V0-3LqN$s!nNmOkTwsZTE1cPFuP@Mk|e%_?qvwWBTqm@l8(sJ-$cv_&)z} zclgaczJJ%_dm+CgZ4BvM=$?P?`Izsn{cxhI4DXj4e8uPQmuvgl#p$Ieab!Q;u4sB> z{g0`U^*>g3;0=I$-hR2Kdr2pf$bPzl?&(P}_!Ef#u3pkTGQUXA>LtB2CjF{j(!(M` zix?L;liZDeLEj_ui}W46q?g8|ztKy27(bRu;sQ_ilJ1fDMS4Lm>7_C0cXdx^l92y; zmR@d2%mhfc`tcwsCOx%hdTICcmZSmQ_NSFriuUC@>qh|&{l}iyBkR|{`CGJo`6B!A zs?l*_{c9ceM2P)(zXT$=A8+()pR*q?PSUqV_K)2grGNC*DE;t$yfFi~p3MUFx*xA- z^hJy3Wq?JVnEiN_zZB)QM)r^SUyGFYiCB6bWb^w{dZouSl+>U2Md%qK^uqhcmPP6H zi=|gedUy9uk7=a$>zlqn`Ck8pD4%WpIOf9soG87R`V8;KtH*V)vGSyi_t^h%F-c2z zd72{h!u!X5`}c@EZ|u^a@P539KaZXV#Qp#H_C-bPL9fOgF5d)MzKkfnxBnW|m+#2^ zjjfopzGV4IN$-x!(wiHh_kBrk?W>XUO^&61#)pvP9_Qv31hzID0swfsC>K9i)U zM(OQ(C8m5Hr25Bv9z6kJzbw7d2)#Qby*+=6ly814y;9Qi;iqR}_vf%xit3AiI6dle zTgBW z#g?xdJpu9c%hJn?&{HM7)lqtbW9gNWUfJi-6A=HEaXEQsmja-@9s#L^SeI*bw9CCeuu4q`)6k1gUo+OxO_ zz3~3Ad!zJ@{&!6IJS<<~=g|`oOD;>Va&=gqcgynmUy79PiCB82q?hn{^aMno%hEGM z=-ngfEsN6Y7fVk_>jgMTvGSzP)ZN~Hh22-5FVEL2!sWYH(o2fc`^}3z^>4bPOGcdx8naKsJ zru&b)O}}L$BZmW*|E&>z9{ote=+vei32&^PdLilP>1G zWm!|_{YDQmb8uFM5@F(7C`oufA2lhm->`2eC3d`m<}W&)5&r(6j*HVh0E*<_aGCT! z_mW;3lizun^oL~n3>y{-jhn?Nm}g}6T{i$#Q6x^ih+$}CA0X=gCzN*3KPn`peYdFl z@B7a$5q1BMuXWY^cYekB4oFrEaJ%aM?@MFqUW~tG{l6vZ|1E7&xc+(chV?)6qWbU2 zZ|?P%=Rh6Ct~Ic@IAE0cc8g@`nn$9T95BpJ-$crJ0fPem#}a$6nKYPURQXlhKW|^ z!S`2QC`BO(lU9akltn{S?IW}Y{v34Env?VKP;N}B#EJR+`!|Sb{rfjKH+9BtWzqq&koTq%kGNe0=xx-@~>etcmAZvN7u1`?PuI?zmDA zYR7Tpb?5r!ZvnD5G zV;^NUcD+@aT@R*Wx_h9-=&^98W2^G^r>Is#VLutdeRd@lDl{9CCQKqWm)1#AD< z8Cd%jlqCaHZu-j0k_jqfzVfn+1C-1#UTl-BTe#gGx)e!@{uO_hyx!un?Si-5+)TeLnN&mq+G58p6jGsZjf>@ zfL6w3@MHqdIEg1s;t~8vJZTb-33$}CV&MBDgk58L_^jBvn2oK9v&X@dCqT0eFy(ZZ zat2KKrmsM=GhnsqduJSaC6nEU__`3d78KfptNpuojp1-_)wh837R z!`N8%u(7f1FgBJQ3OpmMz?bCtODHgT1~_>}W7BNNNhZ&DkY^}xu_|SFgXBjTi>wQ@ z0pw>I__9fm+WVM8Du7y|Lk1)c>`hQPBIFkw7wuz-gRRz767Ox8t~tcwBQXMn7W zEKwKbY!!2~U$4evZ32QXI^H{@Tz3IKv4YKuRakOE?|ru%f2!IM%s7}-=V6b{J$8ZBy2Q99?7S|6k3cd>)xbII<$~5F??jN3)!X|gL6}EKr{m26+Av^1V^q6t- zuv49#HrE*JuG^$yhbAC4tJu28edj$!%{dqur*i0Q9bcd0&Py$NK?Q?F*Kq(1FC!b? zOV{u^@GvC6@w?pMKCrSxnRAR$|pW>Yps^(?R8 z0;S@nd;@0)esxBcTogN8=1o>)2e1{HAc`%PEU*q>3nVzq0tp&~6fBToI>b;oqG!1& zn7}d=Au@kJ>={B(BYVQCS|3%rFR6J#OmQnM5D~VwksK=7z|H*W&wZw1TcpA2E{+o- zi)8Ez|C5Yo+FavpuEj|^s<^ZH=J}Nq9xEEAx{Km%TDyPl-D#X_P01-gtd!FZtlB=+^%%stAp?jCM=Nh< z$4yvRv{h#4^xrHqG~|?@ELwr{KQX{XJAkEd1OyVe2Cp3C6Yld;Qzwc}@U-(=i<_q(g#XWJZ z1M`JfJjnS%RSUfLnTQ=UX~UD9a_0Z_c_PW_%ZSdZQFX=Qs1Ui2PeK9Y&5Rnr9G=abQ5B^7G9s~3IPUiU=^Ee`T9*yQ1Ch`Oxg-ZJ~ zWwrpO1KxW{W-DU0agl6!(QHTNl6oMM+0NfDIR6K;y#R>j${2+=&&UxI>|D3_Kx_sP z>nBD1Ic;6|4Q&If?Uv}BQ^C$@Lu|ZxD(GK@0T{HS4==CsB}F!bLi(kkLA}{+Y-m1w z3H&p#)#ftzZ}>v^#X;>U=qjZCTY0Wep6Ek4#;Mh4^~g?_A?#z<;JP)3Mo~kx(msVD zz#NPxo3o(*3yWarPsBrA{`zror~iTJ(gtWa<;R#;>&S5}&9FMFGk~LTBF-Z9oA8)Y z_Mb?bP*n7OIP)^~$xi?EGV_N}YNh<^U^1s$<|16^b+T~Kd+2t+M$qrMAZ_APprY6Z zy+__@E&m-(8AKd3;lTiL{q-=CU2ilpbom+n=Lv*3J*?q4>>2K;#wkslisHeIy*QYO zGo9i*nTF1sM>%(E$9XEtmfVO#nmBDSMEj5lfWg^U9+wWJ;*=(jo@l4T37e4tr`Y^M z)MP);RrBmLk9_h#r#Pp%2S+t=wlop}@J?GYPIdCYr(ZrW``Qi?YBEk{pADb#q}v1t zaiG(d96sfF!G@iIT9!>a z6=^^Ez8`5n@`W9efnM5=0*UVf4EW#UX39wWaledzlksS`;+lWsS7nr!QA-d7U3AX@ z>1l#A7T^{jQZ^|aXcCN`W|x1U%;RRBr9`vEA1|YR%&3)&dI#mZcs;OfJ(LRj|C+>l zpEx9t#9J?xz-<}~vg__b@_V8M){gu4Js({uo{qJ#WrX~itF#m_F!?k#1>N^cyWXG= zxK1p(BL8zD|0Lw|6xFR43(?{tJO4Mzk9EqXq7ZJRC%baf$iB!Ng&)0k$+_jP>R5$gn>SgKxqK_dJK>xdQ}*xMgk22(BK%LfdbRj zVW4^mG!#JB!~mgCh`BZlv_}FBN7QvOK*Ml{#r4UjaC$v?lUA`0K-H@R{n@~7Nb@f-ZibkZXt|_RQ3bu~b72Pw5{+laXowCc|5gFVH0%hBZz9Yl+EWxp4 zHydZc3vYK`xP9q&V>-@oKZp57;Ahiyg)i2IM!6pwTFl1a!k5RulXcVqYy8L7`2A*QSvotJcyo1GdLv%=XLWYo z{=`ys?d^C^z(3r`@#hMD^e$c{C4n%OfVM&4ukv5n4Y~F=fm7i7W*0tSQ&w4ENjBWW z;`R5_ssbi_$?=5^BLhswqL?|_F`ITWM{CV4ufzH&yf&c=-I`t#g!ew{gTAp%8-}rq zFd>{{sbF-D6zzHw-m!qHq)kc1zXAW56lIcsHW~?=YgjrdCYhZTjR1_teE_Hyv-?M# z&I|pNpRN;iRG1zQr&1kt3WJR+m7l&KBHuYB5O+np5$(KybPrzSkt-Y_;>)w-$9p^h zoZ_HYHlX4Q$1>rMTp;EPTzMpJKw_%%Lf@hxjQdM!G|_-W9}*2*R&hR!bZGuXseO=Iu)MdFzD$|ZTS@{`vU^KOWXiWiinFR; zH%3srf;6P03^d>J^Q&2$)wV$x0}C??oD{1A78+EAP~bq0?BC5@tw3PqXPuqKx)_^| zd5w%8L7_}wH{X&laJ6L+{EMo1>-Zf-N1LC9V2yQwSAe*y{lR!`)OL)|dTZ-@i<5I5 zufr~Eu0eN&u8p%Q>knost6msMPp?i{-H?Gov{%JJ5tZ^^04`=u#ChW0Gm0Y_|I<^c z4MT9&aO8z^6|j{O%poAe5EkJBm;=#vHec0C`PM$NEPviVAAi`8weFVD_T}pfA2B?} z%Pe4HwshQz07K)+;9)q~wqhU8&5z*?0pobYasnq;Oz&c&Eo=w3Y{4;Gu}j4*4byO+ zlj;o`n)_fqG#;y^KHlVFiN}gME(6l>cGPUdEiIlDOMK95Jdd+_cniZNMd9!khU*`N z>kmQ(kVpp;8Q|e2OMESFBf#l5OZ-P><8Cw0^ToH}G%Swo18b+*_$e+8!dn;)Si^95 z3&R0_7!Ge({H>N)cJS67!FkAx1B!ynV>~o2Fo)rQB@BnRFdVRi;mB_W_`M1I8o+P5 zC4Mh1=8;mU!r?;6Ij&j2jZfsVowo@H$%Ns6H4KNhFdXoQ;re%OQ_6n}4Wvvc8}6hq z@wBQ6it2nNgb_PxB$3s;as%smrI!`GvP#r+U)FSA)^uOibYIl8rSHS(nU=n+>AtM# zzNl&7u>rTU!=$YG8R|Q$U)F;OxLpW4GAvnG9?QCOpd|~dVp$IkgECGwShD74TCyG= zW664AoF!|;1QjdkvYn9{xdIxg_1ESkXj7B4nJE@+3T~~KI?$rc#N5jq;3%1bsh3C5 z2s_4Dw58)LS_yEJm~gn$q?D^L?&jIDKR`!_4lzMBHek*s32iozu}t^^I+lsOtFQ-P zWXYhkz{!$9W)skPG z?^j)qx2UcM&#CSk#R?;)M4D)wNwm&s*si3?jXg@)H)yaG!?BGL&IBsLk(kzA(Rq=% zj{WCZnyX{t2JtLONWa*2t<@eHS@T`J*e|jUPm(B@)gjE@AYO0fPCEWhr~`AYug z@dz58u8ht0Z^ZsIv5&WQZc@r82+ttIvO`7DDJp#%SBm0t4Rfs>k7DX=5RrHfPHp(VjsuRJ-~sAVSTWsR4M~!8cUD(1mevIQL71 z0Dy(j2=)K~x?vW|f!AiKA^6@g5b0EuC1+Fkw*OL?p+4i{KKwk)LrFwn?oUcPhDI^> zmzWi5S$0&-pbZ}J-9WY5{Pd+LLj(VRP$sF|U1j3;W~uB`>1tRMYCFOn>JEtx2(>^p zkTg&Lz*9yfX21|)mb%LlP?2F%z?-xM*g!q4gUvLI!SVPs;E_>t`6lA>k?6z!HfSl# z1wpL6@O!3-;hbqOpeb`{Px+sx{G6B3nsT%qR_}3xwY|!K21zNmrio_MgO8=yb#W*z z&XizXiTP(!9IoWTPiLzuPpEKv!IoqAzfMV;84sS9OD9Nm|2&;OGp@IK5c0r9T#r&L z(3cHy47bie&Jqi{Nqp>hg&(%`Y5ZuQ@L)YGF-#|)amPfSpvW_?lrilh%fd>&i~1;8 z{5&%(e;qXia3vqmO36GA-TyxW76lI$0uRZ)gY4rAEF%Q72nCxCvgsgm4)Wz7OAfN+ zh{r$aJ4o6wD-&9ixa|}2RszQY;gji^w9N0WWp9M<_~v*DA>?DQ4M{-{gUvKETo)j% z9Oy#444D#R9ws@N;~T}01rvKRCrfxfFy?E<|h6s{bJ zEmVl;bq3o3BU)?@@C4(cUP6aJ!cWFeFrauGQbt|eOLBsH2q~8P_Di7`tt;xKH}tZG zySSIa65I#7a}QaShnz8$t9;Ld8VAgy67*jJF!poEic(pWMO3pz=TW04@RHj|R&Y!@7zpA{pCDbpbLg&aL(&tn3riIl*pbm4blk(e?hy)}2h36vU`UOeL`!Z^0n)uL$yCY|-^|tPZjK-%b8S zHM2B?S$Vt^;^Y@42WJMExla9W=KueOYEl$2^;q~rA%@JJb@*hs4gt=&gO$fUqRQvA5r@U6!xI`MN`L-ilS-}8BY>=+mE_k8B% zaH|+@oq?YMLp#g&9k1XWjV<3B@cU?V?+~KF)z1SQ0ie&9m`m{n*z+aUO1uH`e983Z z5zKm>IgbgvLE@d~VMII8F0A1ze{~I>9fIX8$a*Xe0U-B=MwT1_ujdJSzGPu4-T->O zWU&Fk^33Kr+@FIYfl-8D5usp?zMFpDL6#ik#z96LvtCE~JP(3}{FO5jgx`jQ5%?!| z2N64#XOi+DP!?_)NR4Q|CdOuBUIqQ}A&+hhZPrJH>huwz27O)du)ZdEQhzzvrvE9} z`Ah$@s>7)aPl~Wjgq^AS(9mH$Ep$>(4z=m=p-%mGL681aaI??5Fu2R-ofka7Jf0MW zn?+bB!iE%|d3gvTTznatNrI*b+eFxz^aW}57c@m!C&GsQ`uLC+rQCv2?m#K`pp=~` zsY{jKJW6NesTF2<3TAGvy=-( zDKAY^l|XD@p*^ZcjBT? zd&p-Vy66br7Hx;za)Z#MyxoY)1)D?jnxNGq^x6;1Y6Jy>6?SM>ZgKtrs`?I#|?UI@bOGN zKDff9j|$#1O%DX`nX4Ovcjkv%Q+-76I=w0QV5*)Rd;+9{D>C)*!O155d~otKeQ0q0 zTzzkFeiZsb$!+*u#;K|Lk4qfo%ZQLK6TXoTm?nN<)W=cR1I9 zzavLwZ<4sU0CIZ^TX3c-a7(Rd88~$D-jY57Ap($lo zv6#~T0=Z#=mGfxL!HSfp(D8703)Z0O0i7LB*SI~YIO|%IALiV4lsVUCGjR5o6i|-r$)5eNU z-@)ShhVl#DXjSoj(QZ_Am!)&H3DYOn9}v?g8F={2#iDa9W_MYP?vfGcFN;g8&+`=> zW^u`M4}w{ZdIvk!4nlU6#N!2U9VJ!+-T>B7GTnq=)?A;tSoEvK>@AB+<_eVPD~n4O z2$X2Zic9i|a#?O?y!QL?~*H-L7Oe|^5-Cb_*Kvj2N`mZ7ssr*h@VTa1q35a2Wi55I~*k7Aa2L9xg>skKZqBjB{d;@ zGJUS^j^g{i3(5x3-!@+vLmmF9J`w%vyTQZ0s@ZYJ^s(p;-U^=dRn3SC>ci24{vN%i zdr3=*-m#=+pzdz=5L=c$2p#LM(bbeMIhCTH#YDVb-n=;$)zMf~pF~lWFKOvdR6_wT zP<=Ow%Dv=Nf1(-+Dx1N1dO89&2E~~7Kv6Kro~w_B6Yy%V%~zEZ*RGF*H}GPx(^r)p z*9i(o!E7CvJ)NSTTvA77>mtks!E6JVJ(Hpz!9*~KH^ic9i$xWRqAFiuJ8XZjNrnQcJ1y%1rTk+JB---^g{c<30o+6=BDazf!ET%7<{b>J$(FsQ_$3PFTX zR7b&;Led1(~5z?JN1+@tUeNrf>4T2sXf|(8q!AuiF%RDH7 z+UWBRrvs5_2g}3hKqM|Y?=$D+`hDKKJUHmX$;$A&W3XL=zB2@K-WGy6>miu)Y0J_)|_CI`WH-sDarOR`&(2k#FJ zpZo#dhvNh&S_$;EG%2*)7sR6ds)KYmw!z_;7@Ta-&j#-_={tju&y92`A@qDJu->VM zN~W3+IFKT{vf;rS^+EJcMhEXP>50J=(L5_kzKJ|&o>pMS9YIMn&j8Rl8NA1!9|=B) zLUzk@8?etLojIh_m1iW}o3X(=(azDS*$;mv!rKZsCo4*(GS3v|c{DspB>N23nuZADnG>JgHzlO5t(<`MSn%EoEGE>$K{*s z3p?nz6k{Z32+RSAn3ffT=Q8Ap6>LO~N?8uskuwTFk&+%+$ioLLG%%2;F3umV7?iVT zjVNX3St{vwkTbTQ;cANb8lp7~yaTuxJ}Y~vczt;Aze~ybpy1!1=ksEE5c*#P$cmEJ z2%?lNm-IdOkn{(VK0hNK0y`r^;I{t({n5eS5D_%&y+%GS&ky)}R%BUG@;g&jRkt%BLrP1A>AM^!zslV*c{{g8z2}Q=yV)i9#tG zD)~2s`R{;h3I6#B{`mm^l<#i5{=4}<68wXppaCw;3MZoM9=x#Z z9heiR?ckHPLk>FVYJZM*{aJ6`bty!}^-DBdqAjeb3~%xDKb5D3cGyo9slhD_muybC7%J&vsQ!e)%DZ@M z#`FQc8lJv5>%WPBz#Q4;F&5iASlp1uzNSbGq39?Bi>`*SQxrUY%u8l{Nv!2B za!VB^Bq2gr2LetOh=Dyq%-CYrqpA5inGRQ%69`P_bdnfjGoAL+`vw?$(+ZVndod$v zKcy&?QZX$B7KzPL9GNB_s+B|3WPVK-LsZ&MhOnIsC_mrp;C>EYS0gMZ!!h!gcenxz3`Q28yT<-__RCVqR}ogU>Ds}le(wEy@oX)*gPIV z!_(b?|A(l6C8G25q|RpuozDBTC&GLBr61>lfxBm!_aiUGz5GNj6XNbp+SHz;;O`(z366qR& zl;KJ7-X_9Mdm3UqBHS#(IuSOA@URF^im*+DmlUC#IT;wkS@-_S$8IXLO>{}SM0a_B zB@Q;)7Y|Z{0sG^hgWE&m>)Fs>TNK}`6m};LsQ4RU* z)5j9m^wDZ)mwoz3HFUsUJDa#_XAoCy4sq3H6W6KPz=h6n25{k#16+7y1DEVEzcgP- zk}o{S7ars*>3_x-x?}Q%2l>K-e2G3fqzid%7xLOI02Sap(avEPLU%5hhY%5w05a_ktX zPHM*&9w^6M6Gb`rKsgRQVw&VxEgpOJ+jq;AUC5UW3P{7F6OfOnlQtk99u4@K4SGn!}PK(G6nC97k2VQAN%5oYH)I2;mY(E;Z!8SuUU#DJf4ZN+;E+|$aXc7=ULa-e0=T!HE+i=Oq?Ux>i zqhd@!PZ+#6x39YkVUgqW?*5;SaYa?}eb;bYF`nyRvr;*8J`Rp|bk$0%SkV`2>JS4C zg!K71l3>^X*khPA;Bu5)hN2I~6#9A@aFQ6(*UNBpTRHQYxoE~v_<6)_1`Pc?;%3;u zRBkunvKYg50gn}~;h~XtZV(CE^o4(QPWo594rF1=8N$EHu*0h4@)5it zgYc~kc{?HtNbsvNgkO~*{HhG$S7l(|(SG4oW!Miy7IBa}LwHmf$Q@qBfj5;gX+P#o z@HmN?l03ttE%?Htt}k4Sj7hukg-0i6Q8Fg&;|xp2q{DsTO_A%gu^fJZ6t=@ zJ}=kGyrb^CJ7I=n>1o5*$yj=tG*&D<<%lJ-94?t{7&*Be@gunmHEH7HeR!XU zrKiX=qzGX8EQ*5-6fb^F5|Qz>Mnth$y7JA>b$fXKs5 zT>r^smha0fUS!!6>B~eGKf*3)g-TMG#l|djAVH-HS!%*rqyvLXZ{m4VE1 zH?#2G1G}*}1DQIa{kimIN}1FpXHj#=7%C}bMlk_Y?5GAU97&W87|1WlL4ACmD~6;q zfpng{%}`hfwl)BCPoyLSy`ig4LM6ip`T#(!0QCX1k)U{D4yS|baF_3*q5fFN7CFSq zU8I)|AAaWf=%;Z$Ix;`Q``3RJ^WEbbE9Z#?s;lB92!U7mOv4jrjj=(7_xWTpFo~-( z217S&uJ2g2HgP+S*cb))A%w@(aK;AXN#@5XO%b=ix^Xc`J?s^hqbfpp;i4 zCodfu!Hc*674&~E47DTzm7b?VaTAWjqiba67 zx|XIw`h~;IZI<-hK1%uXjCB7i{WCoM5A{nEd92zq>Elp3aeY@@;dfOWE>FTQGXO1b zL{eSTa9>(}DsDMqN^0k{4E49HV%#tW-d7Q&R+g@YF${?-98I_(62p*QF=R4lF_Pea zh&v&g3!?SSTIsWn_iK&!D&;p|x)RmZ7d3D-UQuSH{4N$=YY+581b%kvq=+n8cS( ze9s}G`S1RFWz=*=@!kcHm@yjn{mcak-1f5&QAUrv?`Hr|H~$$dC(KjIA4b25*TjdF z@>%k=9}03OUZt>=a^6BAZU_mCL##ijh_d+q2|~OC4unqJ1VZg#0EBpbScK3E1DiSn zw?U`;>t&`ln29^-km(&}s*;%~%19;$GxcGna+zrbGjWxpd9#0sjQTdC@ardWfqy{2 z{s(02494=VlIG|ARvC2%qu4SwyZyJysGAwJ8ByRNi#&W^^6&(rB0Mx-1s+xqb-c`U zVLdV(0Yu;qa@KsMkilWbZkMS1-v+8PfQAf~#h`kgsIrLaZJFscX4)?^y}?ZH$xHyk`otSp;ji=BK zKAaHK4t^-qD7GCeoEdHdm9lG)*sUGpQZw5@G+}*EQCBvj2^%EQy(=v29+)O9ET;J? zS`+OL#EocJ2m-G`|KDGgO;`vhyWfcROgN<-DdDDNsOow{v^2QzAjw}42Iv%7I}5Ky zDq9ho*6E)aPRnHT;hc~jSNMI^m5?smlpi1if5k*8`(~tdi8gziNDYvx`wcd7;>Tfr z9G?axKDFoVGu_(pHC_lIwXbZ)--I5ZG)j3jiirzs0)IwC*q>qN@u*V%6k{rmA6G5vSIsxoII zI?FO(I!-~S+ht~%0)O)#M3pGz2LR3cMgwKEkSvMkZ^Yvu{LjQu5IA%Ty-3C;q*A#QGDvm%?_-_XuIfp}(n zMP~a3v#lhuZ!z{689RWnE{W_ZB6}`^jF+-WWNhDnj9TEIEwlaREo7TbWJQdfB4bM# zdpBd}$SQXl zNc?K>*Hq^}X)JMtV{r$X5!bUG=e4lf0dwb!A?2PGQ`PEhq(UmV(Je-`BlkP{|C}sj z`mZ;^<3yT;d*bsqqQHLz@2FK4H_{~E%f=08B0pRod%qfgpFRh_U_QgDbwuu<+0lt@x`v9jv z1n*6wLx%hOKA0B00q;xQ2WVw2BLB}t{>XiRHWABT*YaOAw%7Xrc^{vDh*0E**R$)x zeS8_<>U}cg-+pV9o5}LlzhPHKZ~cRwkQBv7q~(9>!HWO#pyF z!@qg0v-95j#BF{tb;|n=<$Z*wpOyC!&O$!kNBCdgz_1tCGk{pU*_tfwV2I%5zA~s!T-$57lawe}kIi z2C!0ki)&L+oS6Ic?!t*k4;m8lI>g7BMKb-gIQoxh98Tc3oBEgjh1fsirYb}#qY~2F zru?ms%-KX|KEYL?LZ-NNZ7w;ht|-NWQbt-z;kW%yyo`>^^)wkM{b6o`sy)pTxSl3w z+SBA0)|`rq87uvN1!yylen)=aZf1^F&HMXo?$^!%I?{&l8oy6*a&QwEvbo-&Bvfr+ zdRqlK#aM-|m(>~SEX0+_ZH1$(?t4y58c$_|p+N*^*mT3flCCP&w~p8RJZeW zysBuDRl`>BtD|7cD95u zD``#xxD@Q&3|E5{xPAaYn13ts%e?W>R>CnQDi8VKD>0^A!CYmLmOJ zmPGr|Kg1-jzr`X%XJCo|l(GPx30-)eBA(hXp6ZH-9;4DtN<|8_9=E_7RQE51KC=`y zw}1kgv#(a*V$*7&)_!$Oj6OFcN%>GoyHq$vHEr4(ta1)crU}(4f1Mh@`h&kUmNpUhTqP}s zkhq<32&)W`P$dDHAA!jS41PKC9DMs$@PNdhr?Z?A*dW2mL=+$mfJ{)zxu0DEU^5}F zYhbQQsnTlu9_XmmozhQ@M|r#kZDY2v!Feu8aXt)rzXa?r z;#OK*gnh-v{&6p%S$Y?r9Mq+j0;vsiG`N7kA>y~!=Gz>OYpE;bdY4XbCKmul0<+vqU^-u}fw&73$P2N2= z@K>rP=3rFqJg@u1ZKPqvxEWn$w4tkFQNoQEI~8!%TVvx z7)tSl{J3md*y|!DfitjSY_pAO z_m`bXjSKt}ha+P1fy2MO61D4i5DI(?`DoV>yu5c`l{m{k1Pde*xHp#1aJwRE!2d29 zcpS3>yh?Mr~$D6cQ*aU0^CQ5q^+iG^$ zR^OyLMr;)@`AmnMW{2(cnP@uAGi;lqA~u>Gwo%?&(cMM?D(n)V(mt~@19MT0Y&D#X zE#|h3ic)qRSft{N!bJvx56~}+*T*1FN+0Fz@ut;A)vd-G+fA#VOpLRQKczSiQbTYHrSf)R zLVOgYj|7PqAn(V3bYbZ$LHY=g=VCzmMzJJFkiG(Bc?<}C{4&f-q6A40Aos+8;4bMf zNIwaZC_u7eK>A4#ncOch1WDcGxC`RHq#P5Xa>TB5Av`qjVOhq?@hKn?4J;%?*^lXS z%ayCITy2A-AxXj0A9?v#M1-bWj8e*da4~J71XvLR&?gGemjF_Hvtt1IMgbBCAcZ#} z1|T5{kVpV2x@%(q5~Be92p|P_0sCkoO!kuiOzanELIUnOPF)ILKky%CA;VD}R`<*n zW1H$OPWAsNn2Hf|U?mcS7;rPWfmW;S4(Q0qIcD}gU9OnuZ>VoV@nWk8w&lSkwHu3? z0=d0r?LtC13xPw}6g4ugzLHsw28=8SX$HQDH`#_%TW3!jQV zVQmqetS2(OsID-|G;P)KNIXcfhCdG8Ucg} z5Rna&qEpQOV*h0wbppRRq^vs3RCh%UAMm~14-9X~iN{To6EfH_B>4}YNEIGJ(mF^P zAVJZ=m^*i?_*oX`p%&*6{GQLJ%F^pGPAJNW?<}-U07=wh>>ba+~WfEqud8@YAsV6>oEi%j7qfT}>o7B63by`i->;-eJe1 zu;Tm7)wTG5lUFc_4qhcbpb$&p3NeFmv-I#e(N@DD6MnGX{j>)u=FWP2yhr`xxHC|f z<;VJy=2feqQedFk@-?PGB0orCPXre^z6L!xC@uLfJdJhQZf6z7H)F<+uUc}Z`4>XJ zHuiyES-48W6d&Z!Cluf!qUMn}t1W$`HP1n0!~(iM#qUSqGJW2nKLveq2ty+cTwo{t zpTuMMe?Y-(t^v>f`C71+XiFf610I1uaFcb@Fq?8m4gU8c=~OswB;(Yzad9I`fdRj` zg`YDU;k9Btu56zHx%pey3Oz1$9YgW+Wo;w%g{KgBeDL!RES6bknpcvrP%Yy3uQT8&kCZND{s zFMpTJSqFi<)@+O4s#beYrcP_xaodO*o3;~|U*bH_k-oP08st))J79-9VX}?Z&JUIH zp8(XR-KJ{bP;=n-rDA_K+va*0J~OU-Ht@%@Gx+1#_{FK%t7ch#o2$RgH5Dc{6E3vJ z>hvVqw9Qs$EgV5G1?pBM+k^kjYTrKURnRW2pQ_!NL`0SU7falo@rd84eQeVXsaUdd zm*hhx{>LB>YDnMp405y<%Lx2l-(JgzkF+TstJi;xHq!@{x~2<;KO;M0i#DakolvUH ztalIml{TeOLLMe0ruf)|dK**l3o|LUWDkD9hRX(hR~}@jO=%GsTbZ#xrkb^x2{~F* z7k;3+5_qnR&`A~G0|gy}q?0b`@b_ciTpm68)n5pg*4c{ibTUb698Y6*Q z7ER=z@_{I#yMF$05B|5{cB;pB;iUop zM*{q9nHb4-IY2Q@OY>D|?{F*o%miGyo}|r5L3302W!sw=BBKB4Q3c&vT-o4uNk^4+ zS9o=IF^O?@p&WBWrGyrEZ>*GHys=V3&BaJ5&?Tj95XZ&xsh%82N$+((nr$WE7Q}4F|9<4a@D3Dlky!m9pLbTPmq8<- z_XtdLL8%^ZvLu2C5rQgtw^kc&h}(;bIiJ^rf}?2WU)Rb1Gx8!R<|h30vbS$$tX)CI z_4j9@ko6DIDhy&XA}xg0v8L6J|5IRmCwOM9IDS%!nB(|AgCZV5p+C`$tshWGk5vjj z1+cgEwC-(fW-|Gn^gJYV7BQ#re-0UsN)aq~{P1;s9nh^q3LywjA|8Ews|Q3*2)O`w zzd(bF>RPuF4eqh4uVvH^Tad3!U|rXG0{Mf2tqTsA@w(Pefu@S2gh?|~4UpF1zd@Qd zm0(TlVQJ#OL-jmW&x-_GA8JIjR~Wrke^`IH-qX$a_a+MCmnz<)1<;KR$-TA$`cnlv zP)(=_O8bcZa-`OL-Vya%@L7-4Sq;bZKNZyC4V8$xtHIr-cbdo`-oTlcLjAw zmbF^HFBZ*Wpy^ITsdxpQ8U&T!hS5Tmp=hA)t-qkx!Y(#LWyjZV(2ez|Jz5(>sD`wu zfsE3%<^PXK7|^ z2%zlED9u@5p3-;=zD|o|&}rdUKxCzvQSZmM`lQ;Q&%d3hP9tXV1wp`<;sFa0=)2D2ZbwV(mv^n#BNnhW;f%m)Z|H7m?GwEh^Xk6o`h ztsw{+IC`<1CSe}cup6lNKpP5n;WL@N@nYJXc?4QN7LdBIx1hBTU!Y>NIP*|goM^gx zAn8UzU%p}{dfF9poFZxJ}2L$LIDtNWpQ;qby~7XB6eV`s@gIJ|>TcXqn^yQboo zsHfnUsOO|uFy2$WP1odTUbwAeFkcN+s-a}W~v>J^5hUCP@R{CCQr@Eg7O?{5aXiz!w@UyUzcB`9L> zI4JI^YvauS#AKc4i#qlh5U!jLM0RiGwQ;C|Ufulgp_?VC*&{yU??A=HV;klP_}=vY z&%ytfTgV2?_$AiQ;q~Ku$8y~N>X_57n0yDbZ*9Xlij`I!ioO+$_ad# zOHD*;KDPCOKDzZIeMaj+{oU3U{MYKk(J>6FKaTe^`u^6t;bbS)hxC!~wu&957F`FJ z4zQ7E&xh9^#QPci*NgHFK>w6je<56Cf#F>wQ4CS|4#%`q{VnvCW8rBdgU>t&oqCLP zP9p7OYmJbSAU&Y|wEilnyxNL}pHhpkD5R(FghRNq6>bLvsQ(&%pc{T5M2hRFTIWtf zl2=wpIVA8RMC3-dq91A4j{|=w>5K5>^o|DI=N(?ZRWC=kqVI1w!YZgs(0>naPCwhQ z4fh|i( zqvf|io5S@P!iCFF1ytw?RA{=W&=siAhed_1a7-Jcha3wEzf^@`TBEMSR9K{{BDEB$AlA*@7u5|81Hy4Y&3}}nzY2E(BEzR% zum{e>aE!5}Xdi(p?nl*ipgJDvh}+S}cc>$-RfOmI_$GD4`T8(^3#us=G>YL1X~1Rb zzFU>|sORoge163gOl_=~`V4}ZzeOQ=;|IJ9XpOEG)EGoui@hoIgOZd4`j~5UZM0iZV z-JK9`w*%is0a2LVN5npmfG03NnU0GcfbHP~T!@2jY-Y4C?l86D2AZ>`)?@a?CrzzE z`{E;}R@{NH-_(k;)o-Z~U$adusPBOy zCbL9m-ezjuA~GBlD2@xHIBE{0A4SN==89ou-v7tmo4`j^o{RrU2#_Fp0-_+Ij&1A> zS5(HR1x1;G37pZ1qN1W=#b}XMEGWUHqJjyM({Wn7wcGF4MOtn3Rx92@MCy_O0))+k zO%{P9Y%_!%Sq1X{KF@n*G6~?;-rxQG{vY{}Ip@6V^FG`Ayxa4VW($q>eY&&gz7@Vt zmlWMcX)BBF1FZGU06no8j~us0on5qt-^b`a^uCm$n&0`blZzgS*lYJ|3y&7nO!uMK ziXM5@#vzBGp{}Ur7e4xsqDLm$YmXJxyy-)^6+QAhd+laL&^Cp6UD1oA+MnTm)V%7$ zJTH3W7xr2X+R_@1RiC8b6RY2Y(-Iu6;I!mG(S7(*2xiQ9oSp0N^8BJdUg^84LVv6D zcd7oa)!$99j~||t-$nYnLVwrm?^fKu_#WMpf&UlZqkDN2_#WNI<67UNpJo(Ixy^Sx zUNoi9cYJTrlmg%J&x$U*)`wf7BKZ3eJcPhKA73FbjXBW1=;rBm1J1}`V^AVtEAdnT z-B;!nJu=;1i%XaXR}CK%{qJe7Q;Vq&UjR@HE9VOzVHO$6Gi&= zexK-0{2Ylkd%F^;^c21LzKPq6*b=x7>Ey8j@#C==@n$;j3gq6f8_a-PE=Ua18Fn+Q z2lDF^tOr@QxvX~r(}{Ve?D7?ujDBN4j`G!4;566vQ+D|ZOy(MZ%F8F?HN#~uLYz3dO?Z0>#4R0>#4R0>wh6oDz11 zTFS;UHsgurhHc8|Lafk)iJM~JGz~gh8oEt`5M%Nt%$~%ML@nN=`6FWz8KlgKN<~TV z5xD%r>adT-+?7|i;>inz*lj!7Tk{)`$UslkY@1GF=g9sW|Qf^{1#3^<<1ZDY` zjSnPX&qMIt#8>db3fp>PevgndFfVlBd^;LvGsHj^lQPG%DWVs1IBWoJ?=a=V9$~Xl z!k#x!w#P6*ajFdyGC#vQ8v7%{jL68F7YYybVVkkNisj8&1hRg0Br|CBpH(=KT>`;b z_J!3}>0^?*`z-%V*;?xVha{U5ed0fk(8BH$@UX-CLhPrkAH|EJcxdRVzeVXqe>#?z zw&NrHdQ=Rpw?^SNgx^2pQG&ibn68hvx=4WJ{c$UGaMLgIWcL^25Fu;S*|I&O=#Ss` zTtz3n!&9&vzighhE9JLgMbVUFp5?QO{(kJOw2Cx+%)d<^)&E&EC-)H=M=p--7}`92c4;B z%)U+%)<70w7BPaPmCrM85 zfzgBGt{t9TOKF8?+R~yan?1YM%KP*+MN`&!c5Q;7o@w<(Q&xC(?U48B+lrpxAv!77uS$^Hb*0HL$GH~a16w0!d3RRC2gx4wW}r1e$@;EaVC7~8=5B$N>lmNA1y-(L6(CXI z+fREKv^QKqahE3M|48@xsJF_5x9WIPS0ozt2V24<_Aevk%}7N0tMDA!$n#GMMEsX% zRN$B_)WmWZYF7Qrxcda@6#@7nc2AXX5u~rr`pxvi7svoh#C z^U`K#6iq-y?JcT99Uak_MJ8r3F*~McX;Uao^5FMe@_bCpx+z-P6iS=0c#7tqLjM0@ zMG5IMtVyv$OvoQz$xQ!By3E5X@5sTB`<(4*0qK>c=dw7;lkA_hXWsM#UiP$8?)u~; zygkq%%YORiYVWJE8Qu!-tP~x%PkxTN`d}8lUA5cW@jiW(+uO}TNNe5Rj(2)5)7#BL z*mt|V9q-bU5wcQyul3q{ZPDIqr}lRAj`ViNwYU3Nd%F#qeygV6rRfi9dPa^X^mdFpNht^Ks<#mYST#QWaQ8@ZzL{fBoj zcF!9*8*glD8NcU^TvS>4@TQ_MZ~DX&?Y{SY{rB;h?(2UvfZCRMD)|*d#+|2Po`t?o zM)=fr^P4uj%xuf@kC=|K#b~P`hUpz1pISdYwSIhR{rJ@S@u~IWQ|rg4){m{$k58>18|&v}NU7g!!)5%! zU-j#3wTNuBh-|fpZ1^a(f%W@++C})Li*;mA6YI#HF4mDfO{^n(x>!fdEr@kQTg5t( z_D|UC!#aAAdA}rjrmXX+sl;T1m`Y6iiKzriU>+Z)(#a4vWwB4qC#EFCeDWFd$*1O% z4_0}RxfHGi&`B1J79&b#TqrDoak>a*JH()})u6JMFF{XaSraEo7jY8APq&*8KizIZ z{F`9#M6u9Yp?k_Lb{ah0_sOvCip*ehIJPw9^9JD!{W0iI$dC>VtPwoVr#r~45R>%q*u{k>G>@4hl3~xz| z)g1EaC%C)z5`F#^u3$qOZt@t--I`K7pa>74Ufpgef z<>#1@-rEwky2*0RJmLh(9|29h?agPa;8QzhMau;|V`-d5AE<fR~WZ*^chgqAb*0*J+2Vk)h4|4)Km;?L0&j1=SqoP)ODca~pHc9+Ph zN@1>fnZ?=R3@6>?t$BvGGBbt;oJrGKiD9d##dRP`Fhd%H){zpp45ynHT!YLTx(`HRc%!{uaTl2)w7kOb!v+?wDkB)F3V_m<#`2yR30l@ffG1b<6{zeCVf5_EP$N92i}2Ob`a55&wWo54LT>P^29x)LKQ1oWX)bDFjmbB)P(fNrEqooY*JI zNrAK5yVMWEJ2h~7DBK=bD(%k*2)i@6d$yfED}IUA?Cwvp!+5=L+Hp)UJnnR4XN8ulzL`IC&YXJx#p-q530N4j`j=g<5QadK1)@ z%n~${AZM1&nR7<-GWT39EQtCMx185@PP;ptnc$?-;>R%kNBFYL)(;n35yu z#leyz8O1lI%$uQK8y*n5KvMY-4^mmBa%m$e$JTQ$kE3WIXRi2gxR1jqoHlIumZbL| zh~luI3kjR0xr8w#X$skN`0Dt=kvWASWX_NjUQD((p)U%ZB`#|gIv<6cS;3Mm zXf*mY2M-dk1wKLcxLrjMbz11`k?n}T<(MwQHZ<3#s!Y61h`$D(?X2d=lXOMw>$6IJ zkE(==jnc_+I*98Y>7Fu*+gtDS$rA*@#2KA}V$;>Is>;RkR-ViBnznhcBwB8O+ zl#WYvBXA%Hx%4g*y8sI(&ClmSlNf)~4pGEbsnI=t)G__byyBj2>)iGnris!jw@Ht| ztJ0K^w4gBkXkq%H8zP;0V*K1DZYC-KfcLI05ZYiVs7r{m)j4i|w_a4VsA~`2DvXx4 zO3%}RNhAm7dx{E{D(GcD#br|c3cR;lm`m0<_oFfP649BQ=Kx=%taPzCPD}{O1k_zUj;}O8Tsld8% zX5sH781949wLWL|p8qJWqS|v1cX#|+YM?76(bhvwR1;mn!PqO>^*$tt`ecOCE8K#S@hKK_+ z@%|XT4z=1lT#T7goPIPe+v-HE7PmpI7N;MNUr0dH_}@Jpu4-*IrY>6b^{YEK^RL~z z*|+$U{aC~ioyK8zY@B`S#Vz3;TQ%FCNMMI?jmG)$x znn8G~@8l29OZXV=@g7knb8yC%&|aorkOFh?D2syG8k=;7b`0lALT!06ZPI>?wK8@0 zk-Ddty2pR;Y-8*+>c)@bg9Ih~Q_lEDZDYev3_s!D&noSU%os=HLFZr+Q6(I<6xU4T zR3CSWsTF*L!dIz#oGRYww+g&FK$dq03kesvesyIJ)U|hCjbGjNZz_V?3u;{tr^gDz zkK)*t+Q;@x^SZ9qlHX-A?iWL7N z2XYXDnjpC_dU6n7=(!j&hTD9*IAc z{Qv?+JYG+(#QL1_NtS3n^H1q9o}}-}4>T5x#m~MLsu+A}xPOMkCX&d?aeQAN<3HDp z7c(~zFAMDPWv7mpPCWkiQ^yO@<3Bg?%rhLrhp9HxGe^mK>CA7FfMy;#`b?uwg}?xbpw1 z5HJ`@_=)}XX9@iNxe32+eap2zp}J|G(7btlmw#b>gA(-_f7(~(CF@I}r(0iUi~59z zn%6h$-Y;rjZPabw6=a5gW*kYhZ|;U9{oMNIoG18fYM=0A^ZIUSQJ;~gX8xwflS#cz ze;`{y;uXDNJ4OXJ2sgj`Zv=hNMS70NS(onOj*GVs0R;HZwM$go(u&WpBa?qkGTWIv zULLRuOf0YT7y2drcQbx{*WmK3Pj%4-gs0*XVu*a4I&27XEt*vk-r*9cdDpPCmS6l{iGdvYEUTB zdN2%$2@_jXwzqNoX&EXHI4>+Co&1x=Afd?H$;+E~c8l_^=xoXx_XXvF-0nlw(@wu$ zozo8V%kmUk2l{oAk?x-Fc23iQbV3)(lX2@FY{C@}Pink1!12JxGw}o?rvvE>efLbl zbJBeOgxzyzzWpa_iB&b>z@Ys9ynVu+U%mMBgMMpaDDtcEG{!$+-zVQ1{a>m-oqgVg z0q@%U3!F7pc>|{ht@0juOdI7y>$_xcbJkhq8=^aMtnzMMd{+4miHvT{if+!y-j=<_ zS>~*WF3yh5KHb~kUE?hDd#k0Wdou&x*aF;iO%+Zs|pt-fpF*Wh%87Wi0caR01(n2ct|L@z*%jTf5t2(I|Hrq zK36kS+>X_S?8D9mA8JM*ShEj&X$ybA)}W!`o9L)trWN?2!V?AA3| z<7&Ut;Ey&)b!(}vTUTeBRld_7-AJ9Q3G8+m@6<>-SgndmG77v4{SI$Ys*^XZu8QhN zASl(gEu(`x5~&`LDP)pt#5^e*-`Xx$CeT@cQ7oYe#Kb6*px#dG{# zJZoQjX3->QR~5+5{TZ%9T7Pd+Bd@;+59vg8-iCm8qu*Hvn)dnePBSpv2pe{{Eivy8SJ2{=om4Y1Ejf4JLk`sa6> zLHPyFvIL_0<#+o-fwM2a+lz2?fwP7z`vT4y$WE=DUL2U;X(~kqfF(S{gC-CyPyl@S zo!%1SAffr4UM~Po&N??M@M>*6Uhfac0q^Dl=MysL`lH)v`dU(L>X+Z+FXYMZL8T2u zCoA19SqFx5r+}@g1>Wri&N|vJG}HIXTRIPW*CBFSJ3t*vh?_s;$;W4BE67N*tH2Ea1ID*2!uxr z5~N54qEf(%5K2))fe986)M#Gi8uD%|aJDB%F(AL&UjpG_gJB$a6-q2G@P0x&l4wm8 z&h^xkg4rI1<9Z;}L!^a*+I-Q%$iaezvxzk??oKKTX+Z?;?QGM-Eee(;P zI#JkuZw$r(>Z$?xnLi6S^YZ(=9v(3|0PejjyvMY2sYJ5lT~OA zM9L~mY_t}oALTpqvhavvf3y~*zk(3&G4wj!NVEcNkImp}dwEN0``O;r-o?`YI5AJzcTj>*8sU%z_wIQ8eCgq|>`P z;9VTZx5sJ40br9pFedHo(Nw)3k68uTbWc*hX!I7%CQc!c>gC;up`-+Y0`Dw7q<2fa zEp}_4g`fw#u>xnOP|vAw+pLuud{QT(=#TCMt5jWKmCuoiAwp(bYC9l&&$EKRO+rkA zsM;*Q^D)eV7y^ySI-mTs$%%P)0h4#069XW9EY1QI-g%T+$(m3WB;R0XSNkD>)8K5A zAWS3C2%+rV!s8M`ebVzR4Q1CtpUuJsR{6&gLx?==Y|ymB1c($hU)eN_- zAF%>eN4mH?f?(V#pI?~Go{u^lY|js7&$r4K;+G>!-&lf~ZDXz2*$a{Bj~L|2`uWx@ zSwFY4Ka!he*~J#jd@0*SMs?Sb5(+XD~kTf3v|j`u_!k zab!z_@$#Wx(qPOU^rZ~O`a4n$#^tvr48{>(&tQC@rNKDtUvDrDO?LNR!(bdDeegeT zFb+P6!8qu@)nE*L1%naaldehqH4Mf;!b&;0!RY&MHyHbT4TG`Qmp2%%_yU8m=fB=y z>>(Y-zrbM3`zH;?+^=OYdcLB;*zGGBjCAV^&i@q#W2cq|BNHfM%Aed|j5DDA*BgxO z{}l!!cG3TNgE8~#8jM(37^>gci~s+z7gJ}3&AXicy^VABZ8;E_*7~|TIY4@NSL;6y zQO~re|BdII`X8@}Rvvk_4XI9lGbI4`NQC?~HN+z!ucwBH3zyUXk{TjTrcQq~HDr*4 z{3$hLn1oD84H*qs6*^OTk8CMUp3iFz|1)I4HT#@dPp#qN_@~zN%h6wt{`S;gpZ*Tg z-(mVYTAO}9S+$kaBUQNT63xp$UlWbG9%x2aoja%gDZ$LB>xVV}9Mt^N*Zi|*^G{Fn z&zxqT?V7$6$PcjT5D!GULVQwHoWzP<&mk%uj@-i7qnPk>OjB=>r32U`L1x%KKoS`_bLQ9XYy1Y z?*4@2^4H%@+}|ZmuKOB$TDZTjB$m#NZI5-0-L_faZGBwO;PmflmP8;*TI?DV(`iq$ znB@BMNz0FYhpm$>D>;wymk^#T-=5dM7r^LEEU;|r4j`+cE@kym_aj8kde^7;_+v|a zJd(giN*4CJp5>VIm$yuxev0&Wn)I{IZ-MU@2~d2uD8IW&e@n~s7oH;h;l2ug{dq0Q zf17|4=^1Gq2hJvWko{0?5x&HlRC2$Vd!x8)gq7{GiS1$wcu#H@yC?E=V?!sw<0}Lm`YBZNAAN_^9S12d3Jq6HN zN0Tj2{bakAEP1E-OSlp|bL>jlC7&hRp!OG-olX;_7P&)@W#iv3eX21w5+%q!nRETl z#0pxijM(sUlL)guok&0P2c+*qdUhX^lr6o*Rk0T)YZHEP3r*N0g-5QfdK2aP5>0b= z93{4$`2jsH?l}ZMv0F{Xp_1_vlX0?SyxU|<-LIA<8QYqDR(@T?H(QY2#rtI1Owruz zdPz@hir*IvUg_>&DS1ueRdXkIu*7tIoB~vZ%a`Cm^$ z>8P9y@7_x;+0QbGVn2{#5mTx|6LfwUmfR^OgcOF#)2NX!IdUkrIR&}bVZ!@;2zYi{+mOQ8$6BGL+%PXmm03R zO6h+0PnBVMFsbvwPbF96+F$<_y5IjZWtf);N-#{$&xO~U^Es8qOr>L47aZf^jtWjA z$$ch~e@LTaa(^kLbQ&s88r`GcamCYc*s0-HSn*@S zUA-B)lV7^A$u%0>M8m4;0ybFH#Ft|&rL#hPDAKSXX2Dl zT<%|R`_cXp#mn{^!OK+!FXR6cyxai35TqZZ;N_604T@{RP18QKTW1a;rSc>qew~!? z`g=*^;&O9I^y6nFFNp>oE{PTyl08o8W{-@yC)&#nF7`OdW|1a+@P+ug=JzT1x_{)c z7WnFO)jxx;?;T0v>&zDvU+)z*;cL+AwDw%^*aBbkMb(@FUkNp@rynkZfr4^a?Nd%a zgq%wD6viI+gIsM8DA$tXCvjM5+P=xPoPbyJ$OkGP7xxtbD4yrqwRYsZb6x{&bAF=ed^!X=#bkjmV%1?q z<#0X|BKfpPX_H8DKXuq-3`oYmN=ELF{|g2F++>z*(22}GGB zVrD%*HCs*!jA}#g9duX={>TpBLBIH3ZW_rr`Nk53)xA`|Z0ESY@wP5(%YR9~<-lR7 zpJaCAjocib4R<8)8IAQW*o&lGa z7c`1w^R156T0LjBZrp8kHxc5>+baEmXi{rF`@$r}O50juTd(ZxE6~j%(5~6W2}}V~ z+F(uefLSdn(UQ1VLX@5yE)fdcBN9~7*vfjoH{+UM$sEqPa73k+YvZ`__z&zdB(|;f z{P~zEb~s&5Tb*G$rX9p&S*5?E>2w`2yQJZq55$;-)mlyzzo8Nf-rLt}cA!UXb? znO;!VzD=O4R8vI;aB1eDF`cCdt9+Vq8ui@#+TJmNwO5#h2jY=V|-v+ zfUq(_1;{nGZ%{g;m3Ga}*V3(tzl8uWb#};szc^bYhjGYaSZ|Fqp~5f{;LnzpD2s4N zw?zx&)@c`dsVvECoQkqa_X~SQ267feikJJPpFaX=<>1W0m7(+loT(9N3wJ5qa~Y1? zVSkR0djRJLQ|bM(DeGWiWZ)rF)ET7KotuX8k>azUd8k7Uln#W?E^r2)&7sdTkm1bY z;gQif&Mcv5Cn2{`)C)EBgOisK_o`6uBV+m|Q$$90&_oi`ln}BX8Pm0-g56!yG_P=g zki5*4s}z+A6ep@4k^-43g(szan|KClDLLMbZtE?C`2fk0e`(|Q*4YVtKEdsYm)Fxt@QRYNr=%Yn*b@XlO(Kg6V5RSJDG%?NZ8sc zEj0{qglkjXw__CYu&nDs7CgIs6OvwCWLu>%gT8a5r15S^VmXuO98=Oc zBy4AuerOVQ6~vAf#QvBhT}_g%BstA0{jEuIt|S>INgg7}xhBcEBx!GzK53G4lO&u0 z9-KRrB;8DsZX`L~D!tt#IZu-KBuODj&NE5QBZ*~A%r{BSmn1zU$#o<--y}IdewN0z z;5?9^{3cd~@Y^24MhSi+TDh#&jjlJ*hBF@HQfGfFVL~yJB=<5CZTR7_RzL+m{0Xa$ zgj|*VLhj3MLb*E^*bF~BmPtbR;m0OnYe_iSP529w(D1`!tw{(!+-wrIk%Z&jgwLCV zh94elLqhl=&m?Rs2}ipLA2$gNKRni!gz!Tn2Ty@9OA-!q6OJ$mg(ncbEE2*OD^0>| zNjS(&c&ABd_~Nl_62cd6nuP5nq0dcty-8@eExw~Bn5nC6s8t%Eh0|{GkdYDmA{MV!|bhy=( zV}V)ve%O0J-YH%?f_M(0Gel>`|4vw9{*(E*z7*PQK2DAF$YjAPvvbuvlJh(4AF0{q zzdaOrr-EE^BoNz=N!tBf{Ht?oOby62%a~flV`6`+;oNNG+B=qsOHodnm#m_!P~@*t z^7WB%7jZawXUvgA&Od4i(}8Zt`MUrRa{ekcvq^q85BbMyEb+>4B-IW`&hN*rp)@Av zI<3>1*DYn3Iw@sB?5n|l2J@@HKTjT~gg?$C_K;F9*{HR9~bHu3?1_$<#|6Pgn&ye4gB#2~Myq2i|ogCTv0La&g z@(o;>JxH_6tRRUN<<|qwv0M1Q>rTeHO@m#^*Zl9e`8A`Am`!G>#AG)0$8ce*MKldR z7P;ruNrz>frzrdpJ2s;jGm4hnIgUL)qd>XI^Hi zng4d8n)3flP7!>W^H*C>H}h53QjW}5Jxf6!2)yyaH(ShC!OE|no-)6x_e~!ItNUX9 zb7d-E?CE!VEAYtT&Y#ozC8rrj2kC9M>iW!ZJA99APh2}TKX(2&9i={a9fQp&+K6jg zQFrV+PwPnaNrDoC&1K^mY`(&Mp2KL-`!gh_N)PF6i9PYlICyyGZJ8Jy$uLDP20!C& z6<&cv=WioSlE!W{v7H~Q5AvN8yN>UMl_?y;{CDdhe4ErS@wMM-b|CT#=SxnDnE3^n zKd{RCk7Sm97_VvbN?w)+|2VTA4c>d+LK=JISPMB92{p_jd zRXD0&DsybQ=#e2qgh?`d=k)C$P84~V8;yBKalLsz0#ot%h4@+<{vv#p%+DwTkAf|+ z0h_Q@@omM{xF&4*Pl~O(Q?S(oJMfg)3Lv53Clz0xUekoH(SHM9KL?L3=AnGgd_KM& zXpXPjTHq`FN8n55&rgl7#il!R_9I5$?)r3NqDPBOZ)IfZ3^^=4FLqV7EC&?-yRbl^ zbC|1_%_OSMX*Ow(_>zpoInvmlp3rtKx|(**GJH|?Chhzy?e|u=Q~hR*VhGYGB{xkJ zG1N`=*GD+c@yq@k&$7zDix;D|R{33R7?a)Anx9)TWlYX4;dA7G%Q=Kx&$Vo|S#r8Y z25$W_?Ce#1w9mH6pG|jTGSlx4Wv}9R4^D8}d)>XM=7H02*{LeNQL^mpL*~JJM@CX! zaS~z8u=vN&ZWI0=DrWTM9|O6X;nwI127He!%^Ys6okdjjjA!{rI;OBjFC}Ue6m;DSWP8Z7Cxq#cEyuV-54U-A@FCA)~-Akzkta`kX)81KVYk)!HH0?>g{ z?|q-}H;2FF{4FB$MOXEZ%%j(m$fVpp+&Uhks7i9kd&6++(b@|LSVsU6k8b4SK0@!4 zGAZx)8vg3YzJoIEBin{${4FA7Jt-fp<7X5}?vv_QQ|0LfUaj&zl1f9?0{nwKM^|K# z8pydXA<;znVCKWLS3XF>hs=AG)TWDaFNJBu;tEAB>Fj4W?%=}6tK$ht>7md+I`HRg zzRa_fRA$9`U`U_mIKs6gzRXhQ~vbLzYDjBe@b&t8_T z=Z;D?_I1|tW6ITQu`Q?Cso|tytW7lDwxq64No}j>jx(~Uykv9FX#DhW=_Ik;OX{rb z_-Q!tp`UhY`kj{f2fxFywocS^mcL|U8&-An?3f&VI-7uA`n6AT(CayS2yPpVXA#qi zO8nUiojuXGRZ`bC{KC)D+N7nO_QD_1GD)~Ei1(0w@`Z)wmjgzOy`yZ(YB;N8BQ9b# zT3j4yy|aq8YbuV`a$s$^99Y|!lRckEe{|vb1HQ-p^84Q2zS1V4|yD{EafG;>_Q)~=_U96AJ zIvchjHiyrEQ!DJG{lEV`%42yv;RA_Px*CQlD9wvxiuy{DJC)?WKqurk#7ZTAMLo?< zzwkb}8yj{^eqW2(oaF!bLxiW=hpzo9Go2~+D~M!0lL1e{zHJc?MbhGF#5dW;;|WT! zk2lKDt%ZHulms5&JTpm}mERPv^}l@Tc&&dt@rv0=GMkHi{jNaSWFJc*&Fte{pEfqO zFtIiN9VgE(l{Cx$)+zG;+n3Bg>J<48!h@i@+kf^vk<9y`%f%F^FNr#pTxiBKLP)vPLcn+C(nOk`%lc@jDIQs*s!4T z$FPGf_^U;{PvY_Cu`KA|TXI2SDGo{u2~T>NvKZTh>#i7UqLK7JLivfa9rie|$1lzq@;5Otu0GgbmC!p7k41_{0^s`kS z$Q>!dr-b#1B^L1H9mI|ltQ;$J4i2AO=x_}9u;4ow-P!73O+RLV zuf#TJyX?rjWJrtFw=El-JAmfiHnMtKNqzb)GbNZg2ao&-hS?W0E*D`C$_v(GLm-4z zJ}&oOO2&6)KBax|EJBNqCtPjL@l4n{o+6eV_kHW~WsTX#ePx#y_C9J&e1s%K+bvl> z1zWN|1N~q$gLtjI707!fRf3>LShkBD8O2IB^M{|<5pgeDVMqQT?HADpA*`zmM$%Oq z2*>7yTuDq7e$fnC9td?-L6o3VN&Qwi4i9ziXg%`MFBOS;r1xk17i{aUIxWp!IzZKreR77y2V~lpO50SM^H%9?0J)X(h8&14c*O&Fgt6Dpsz=CjuQ)M?=k6J>%_ zV$*n%IF0(`Gsk?&`j>oq%%{iw>}fuG@~LK*kyDwEX`M13!}mEYzT=tAv5 zv&DD!7Tqx}!$sut&<1Q(kyTd**NzU}_&D;7H{9Y}2K771QNVVr_|3lmvtY@bbj0E+_93L>-LQ|RWHyVX#km;QI{`h^{Xi&vXYo}`*e!K?Mp)l3 zx&Zda_gbIa*zI{VL6kL8k%t`g5THG>A4_q;_KMizMz!`pG94F;Rql~BG$E7|qz}qy=nHMv<+!KH}Giah@f6rSJKySTf zy;H^Lvo6QG$5|QOnc-bBVM{*$ynCWsGQ2CD1v38J>yAGukin?4hfyj6R~>*ZV3fKi zJo*X17z|`Ku!ew=|2`?c0uXx<*GHSO_FwZcm%Bp<>Fl-kb6i<*&bbRo+LX;30dT89|-4> zH8WauUV-eYy}2Fcu6G3zd+>7R2fWpKj(Qh|r8E4|U0rc|+P7c+3p3KNq5A2GcaEy> z=ty)sf63;)ZuC@99wd8B#-f}FXLHD0l5{P=cY?lUXe0)2A|%#PvuiQ6Qp0PahKQA5 z{lr+~IbO%J3{&OQdlls_5yq9LaF(zS?bl0N2<6KuL0{)0sap~IEyNpUEwtfIp4KSJ?2pHK1m zUy9;_#uii;Jf={7KzN#BFhTwT@7#g}sk`FGDwXcwTE*$4bZ?)eJISDXLLox!_X1(* zY*F4y{0iQTq>Bi^;0U?lpW42lny(a)X#jCun*$v<5oqB2dQ31Qg$Yz~<9p`>-K`vu z(A_O%zP6dn?{sBeg%#GMLy!i5fvGCxbel+ditLNnxG|=0YUj%R$ru0+Cm2m{s4udG z^nz&hb@bIzUUUcD+#Z0Fo)&ybtpmbFc<8BI$-!e4!mxw>PlVM-k&;S5ty0?04KPA_ zP1T|5rYJ?VgOzZhE}drkGE$iuq$AT_TS?A7!Q5BKHr^;F;|5KjTqRIOV*;Wek1Poa zH*sQfz~~$hZ`B*p_2IhDD0R1w(J#~UWuBUUznk?rMjj<|e1^{1>K5)vUA3Z{m8;--!@(xNI-npL!q)e5* zfzMqXCGXb0ZXj565r$_!zju)#{>lK}3XzmuT_xE|Go+~em$Zn0jBU0_AwqSHo@)A< zEwF%+UZnWFsfOxXD8`FZpn6g&(YLkB?=#h30^PAG-c$C&gg}ViQ`!f@4=^w}0t-?P z?%BLY6%k@mYHi_Z3Pr#CX_KW^k|+;u>#8hBpg_t)q!fQ?_#0zzB8DKKDI3-&46aVd zL%j=<3y-D(kpMJxK>kZffZhmrmkLBM1g^tiNrQek*JVgSFVHXm63hrJF8;$wPyoWa z#Cu#|GjK4Pp5}JGR|qJ^_>*`b5V(M1h5$xejacmU9#km&j=(??kfQR_Bo;3lq%2pY zY&S@G;blb%HlB#Z5jFX00+jxqYXwM{YXtBLgJ6cjAgMNAg)oUR`M@WrfK8VpQAr@S z_6@%`Ls(1+sg!931k@GEKyalDRO{+JD4&W9J{5pIAY!SqmrL+e9+^+klLZKYeNK`` zmiu`XVR6y1rEe3DB+x-5S^_iz1E`UvB?zOCEJ>0j0f~^LB_xJ4R9>y@=R&dw9U!~` zLj1gbUBZZmH*j(|X_+M;5nH?^B+22_Dr7&2ljTjM5w8E|sN;8z!l9q|y*PAxr8${! z{c<8qn##yd?EuLk=<(JEyjul3BFkS}kdb3n;UR5i?TdryqWEAJ_b_s;=eK6kVwFw9aMc(aHcB6yZ9@xgx0@Jq&HQ!>sUIe zP322#zoNzH-qoi0)66^zejB|y_QNa+I3JNo%m7t&ZrcT0G@VEc3ycJv{%|`$wQy)U z6Bo|vRLh2sq-C>O%|@}A7(=C6HadP13lz_<%=ZMGC_WFRD=`qHbR{kX^Qc|4E=V^M zA!ua^df!awNniEP zPT_ttp@+$|Sr-_Yo+9{d>;7oxrp#FScJ4IBV~_ZJi+$SA*r+k?`JzpHhi}ac zxB9Xt$^OaZPYyASXRod9=T-j(Y!m%Ih7#{m!N;C$;#WYhp@@jp@$JPc5pJwD#Fq2% zKY|bT-*RQ#!BFIuLy2wWf*-snmTVt^x2t`z z&}J!WD*ZJWyCD)d6Za@b+gg*-Sp?v4@-MO`HC}&zr$5{2dmHNoFSK&iX3a)Zxi0od zTkEGcy2v(&mHXv!h2^5V7gv|z1k;W@!Cv&txq^3Jp*Y+eC!6Z!Tn{^nZJQZ&&OdM- zC7~Yz&N1DFTo8VS?T6gyO=JAw^Sw)j1~SJ!RH#B}Lt^R6VbM_TP#QhN8)wN)b|f!k zM>6}674;1{&d01y?Q-`cuXXn$a~Rp+G_emEa(tvA&OBb{a=#7!v16^8huz+TA%~ZhoECl4X5Ts{<7Qo6@avCgD5pp$ACf%is zkVJSl%bHk%atN@sPc}uYVmtRru2QthcUk3&Xa;jl?6{8Q=+#(q5tD4N-of*Lw1f8p z;J}ts49U&aZex{?LfP(C>%@+0gAa~jv|^L>h?MOall|cvaOHL}dV!+^Ly!x$3=icm zM;1Yb#Gc0giJoZ+Xj@vE15b6%dYn@VSN@<)3NJZpYz_;f-OF;yU=7~O z5XQ(L4tH`|tY0Gy^OZenz6SA?<0~7@*FK3W`*CA{FJ~bekK?uGJgFDa8l>ewnCt~s zxlL)K8?$S?T#)z-?*kg6TVa6FS_wydvyV$r9A$5m4129|Un2*@>ySq8ZgWDsXpZPW zX|4*t?(!cJ`#FAJWS`{_u*xp-W`yB{8Op#A$fZuuY3mXweix7?&zE|aHoPG6g!?{j z=awTj=3Io=xKErc9>)3;nve(Y(s-UpR4Uy?nl?}{SeFye5Vmt>#n(}RJm2Lh=NCQ` z#fgVZab~iJ19RN!*zXX>m==l(wZp~*m&jk9oMzzrH3}B*fX}ArQ_hh;vrRl_mR(I~ zNc@@X63vSqh44nqIqauOc7q+U=}I_T7mQ@imJ>XPcQ=ka!0d8Lr|G!cWYMpd9lnA{ z@p>upjpmul-@H^6y8@HJsMw@>1)iv@UDvaODMt>r<*?^AA>J$xCzY#6Kr;oa67Oo) zq@w|}?ta7h3H@tltAZ`;y~~<-i(nVJ>Zu@=Y(3m2s?`Qyft)i!-Eu{m?e24LjP$_s zP@wH@MQkuK2JxO7boMzb@q~w-osD8eCR)+bW9Zpi`3yx`Kiq0k;|=%sc`cMauW@S& zJqxBb7)AR?LeYYGp+T>NmgTtQ6S&;WoGr*ln~p=tI9f%ubt_!w%11nr*Ync)Zi=Y@jFo22hv1kxBr`+zNfKH&m(S2r-@~3ZU4+J z*_K{*bpT~-N3J)D`eviHA2DCo8?`M;9JPIOW7(6a?MEB^&OG)^$N%o?ZF(r9|K;Yk zgQB2A5g(@yy(@z}L6)zPdt%VsVnEOnY~@?%08;hAs(0S#dGjQf*$V@zgWTcvG0x! zXAfqXT*@nXIIXmv150{qAeTE*CU*hGkK%4X{jQ?F2dC<9(ff_@D@;&8cAi$myYQ9J z_d%y3{+ZTg^gW5Cr%U!9+LMX?-;xubNrdgx#9wlsqj@I$=^C$T>c~ltWYY8}La_a4 z+i8#Ph0tM?IyCn?bNT8*FEAcfWMgGpapLd`VM{r~#;Hx!C~_A1als6`A9}Vpi6weV zovsQGiEdY`O~pwyORVi)VLp*A=eD%q{YyY@XPZ-LXqfa+db|MFuU5IYtONUg+p;&= zySMCCYTXv(l2M7ptfz< z4ULpu)-GAJRVvPirTF=u3;)19DeyP^HbsMS{?&|9ZoAcaZ# z3^X)%kbOVnJL%HWmpMo155`50Tp$s4blZ86_MJHx+Rp>&I`;La31%;8ZnPL`u z6ej5>yCf>30s%)IumfLg#V%NxBi*g|xh(^S+E)2J_{krN`QhwGEifq%!WhfRo+YW$ z3nLF@qEoZ0vu9(2KH;o!R$1i-*{rmUUa-OMR5m=A@c%4LqIb&_tWjOaIVhIwxM0b4 zI=$JM34mg^0s(dNSHOwvU0f&6&7RrS1RWE@5fxH!G`l(<R?t1OZ|~VpTklK zW)dgS!a~YQ3BEcNKMnbOei|wKw0DQgPs&D^Mi-@7ljLR(cxh%v3NNYLpPY}Bg|O5) zookpj$wcA}ZZb6p{|FNmWC#nTD+?uPDRF6Baw^=DT@7PAkv-eHrr}<-&xKDgOf%sT z3Z(){r2XUYYay)S*2kzcGnQxSxm_w7a6F~-+u;zxZdZ=c3Y^)@W$Ag@vVul=!7XP2 zOc*O0eav5Wo8gs`_;R`rd=2zWa~f`pT;X9*%vT@{=bH!UFnG7qyp7(f0x$k$c5v6N z+y=i?j9w{FY!Ud13uO`Y5zZ7n4dVsS5vsZlSdbForLAO_hiH9Q#M zl5-d)j4)yL5o|Zn{KL%Hmmx6L3pq)P%db%G2oC7VGmwbDv~e2TKwAR2cH8i-WU3}c zjWHtdKlP)fNn=NibdCp0Xa)YS)v5J(*ps=QiLKZ{sXenDMzNXRD*Q&SL?Z#xSqAc< zlUOz5Zir-lTUC`cX(&D)F=!&jp!u^JG(ulBYUoDeUCNkNz~O?t=a_fKk7XmUS!DQl zBl?xWpufq&;md9sm|}MM8_TeK$RQCoM!H=X>is}&p7oq1{)}8cQBA5Nq{8$qGQq*n zK^O{%L)}R&oE58O&dmk;lhXz4vyL=A&+r;8d;R^Hf3(x98*810pfeYKNc4BYayW9> znT}HA{YLX%my;b8#$#;2_!o7x07{7=WjFe>KNgU!@?aykO3UDxs1e6+j1+rdQ@Cd{ zsTpM+%U}IPm~Gamz;1VaRdsIn*JjfLj7Y!(hDi#3q&~r-By= zniaoGtsx;5?jPggH!s;gc&p+vla>4ysE_kA;24bgqoe#hLj#QNl{ju52f%87cBOi1 z68{gb+=(!dg+?@`#zs%1zLr`T??@7rQ|_q7z}%ceNmAW$xKRo{Ta)?Hm~%l{?_#&9 zjA`@+=-UxC@FsUZR~QrjMrMi3Y#vBprbQ*No*^$ig2;~FS%Ezla)jmm*^4Ey@b(&X zi!V7b(@e30xkeSE#0-r)07%M&UU?vxWVUnSE}kkA%KE{`4Hv1Rx}V`e>qncvdLKl?lEWGUD*D2Q2+tAc!U`@%=Qjvg6L-W%VRjoxRdmHqFgFEw@Bs_bxjko&HOzVaTdk zs+S!i%a&#JWRdbDrIa@@Szh*DDX+|AlkCq+)Jmye+-y(ci+q}Xw-zQvRTCuXq^L5U zrWUP1GQ>~U+rpyp=XoaZ!GJ8_?1-mn5aWrH;^*;m!A~*x8Fv!=>{0wENq~774g1X5 zlf8<@9R{B9RGdWBY>iq&vcojZVEHA3r)AA@36><6sAZ>lE`zI=wC%3`cA96FOp;kq z);zNyOt2~FkX+fTPDI(BW%Y_lNh1vA_73s8@WwWLveSU_j29ok8=R|2(MYq2N`6+w zXX&SRsid5v@7&YJ2jU;EFmarE)zA0%6#a=_7<4>QgwZUhlNIrKiFl_$`*X5sPmU6o z&RkU~J-XYO$GtetMioLwg;V^!hz%Ny6f%6?#l$ko%_@I{q4EzJWiC_3Iwo3_Jd>Gs zYEkM-b&2Vn2(7u z6ujw+%8y!;#$zzj9sTU^^Gpl4J&_CNs$fY&x+uxAR*w6QP17pGN95K<=6K8Q0;aog zzUMEyK@4NRoF+xA;>t?qVQ9kLeC> zl07Q@r;c!>6V?9n<&CEpp;WaM@K68rkbvLGj8GEmZ-PMZP3k&-7Ny zq}5So0x<0v+m}5h@G=_M&CS%#ngR}KO6R}|4;`IYRnj#u{S)sZDx85Jo#I}CWGa#g zeBL<49#c!7_loEa?6K;A4#awjwiZKaB^PQF+2~HuyS5RX1zc9C^Z)L!fD)-d`wF$i z4q?5KhW=O0Cu6H^Gmka;a8_95HKFWEZmzRgEw!_2p!3Hz_v*-G8)kt%4vM0XB0fTW zN0aIs{~y_{je4*t+rvl$GB2;-XN|sf+HB9Y^L?9(H@Gxtw`no%my&xevq@%SIRlzXD zWL#xuZ^M@GNfHqShD9RU^W-~ex4C2R#0;&Ziy<me8 zMFw!Cx#M9pn2_!j#>cccSsyI?yIReQ6Z&9b`=(sY`rzidQv2Wlb53r(skxhV!p(Dw zs3bdKHEB-lgjc6@!m8BSzpe6Tt`L%IXLLwphC(H=R^GKuL#2db*D=2=JdBG~u4Bjj_xcer- zYe~N$5y5+HBF8qO4#eN#Gvus^UrK#uet2|*pjlV|`vXY34J{IK?KB%d6lf9s#ku(H6MP)N?1nmES(;0W|zk@JLE88+_Ur*WiB3KE%Feq zQKIf*?0(J@ep;(Lo{>3cDs+7FjC?Zlqg~dIhCL{{(EM;o4a$9`+tMvYs4A6`MXaSIc+FoGjPn zU#h!I(eJFk?n_PyQ-MPdyTDArm-sR$Q~kO}!WF<2iuC7_Kngpx|G=a#MV;eoa;M5N z>_Z-D3u|dIjUS5qNlHxkP-K!7ABvbg;!(9kVVBh{+sVWmWr?;8eVb*ABSp5`%mX<> z1Qr0)pP~p5%d;EQ+o$VE(Ke1%jk`j>I#Of~mZgJO8NLzk{GPZ`WS&T1L3eiHZalFQ zJUZ_$P+mmo6~@tO(!pxvJp-b+&D#$x^@0T#H#jro4XlR@zzGMQ{c+uSHZ=~pD?W=X zDUR-#va zh*62FS%VL{q{5Nz?2TLwT4*lzD4DIxqwa01u>sU4?XQ8BU0V8rRKC+d?vrEJy)*6X zru!)PzEi#vTnrE_5v+t~Ld?3AY-c^Ct*mH4DxhN5Q}KDR8LLD_m3*>aBPaF#&)8pA zw~R~_tcI(UZ+r<)x=Lts zpt7wsQSL|b%Y{EyX>Umy`F;*pjc{uhh1ik)S$d1>0p^p1wPQbRpF`+iS$u(makYp7 zi~XjRN}W|&D|x^hJPATS=)@;W5?R+ffs3TT`hFI^ztLZ8bpEYvB@Qmx%{jtZB zu?t(1CFl(FxOvDBa5jeS->8fca=tI#KJ8|c_2VfzEw=D%z1QJ^?aw!U@Pbqpx%Ra* z?(baIS?{k%y}xt(xq7dI-Rxcmcbvnn18zxC)V&TKWiwokx&!C>4QWgYm|L2IiL=~8 z%6u@mRXUE$!N~1dgzi=(u%#=S#6$aB+NILsmfh$^h0+;$vfhIeVN!SxxYr15jkQ0t z8eZ;{YfyLm;A%##0}TmCt8|6YW1ESP>cZ`F!E3U<^%RzS;J5pvp3=X$@`ZQe;-MnK+?)I8xv}9``853&Wi}WsD|x?0?4eG| zU%A`hua^yf*~hszWXxIay&=M3=H3v`ITFplh1mn4NGTJc4CjxoXOGw&IXF);YLaz`rJOWi$7s+q)4! z-O2mIf%3ZbgJIMYyX0mF#1=L>HX}=keYO&ajhPZ`^!u$+Q>67pKwz^BK%HDr!PE>U zz?C~1#!(oan9;<}>>sAZMm=7OfBcCRq8YdfD?sNdmoGO_fB0m#yy^Q-Qr?>4r<#{{ z!Iv(t;AG_mFXkeqRQNu6>`TM<=}F-G(byL4efCS2chSkpyLwZL_Fi_<@{+tDFVN!2 zzoqnte7`=md4JhE^&7{-ZLAJ$c?`(0ItbE(A4TMNgnb!*?h_)mBR0SN8;^QlYAv>^&1FlviZbYc#b^}wM8&0hpCgl z$V>QAz4PdQ^UhX)0`I0!_q*s^Vd~1NmU=;kG$)2iGRK z66urJhdC;%L$)Go0tbCTx0~n-=5-+4iGOgEFs`wUoYnZ)Q;kMuM@yc7Y^T;ZF2LCcU@9JY&}w7zS?vhNyvI>UV*mKQOqr3?;7k z+Kp;xcrHaeXs5SoriWY~`1pxGo8Ig$F3~H*OVkJBCH~$MDSe&To9HECtjXI88Lh@kEx zcDUe)pi=->u4PuD_v}Y6gWlMdvfbSfJl@sErut-k5}m>hvt!qsp*&c;3Hn!n0C;ff zl|p|@>A!}cB>g)o?O_6+>GiQ(6)(keUhJAGjCT+bzp z1*Myc+Xl)^l*zG=;JfdcSm7Va)p<PVQOc0w1cJp6P0$NT4hK0jWPp30BU zwo_QU2&``Z@rezrlcWu){P^MM1V8pLFrT{r5UdDGmi*z%^&g*QD-6?Wf#Lrn?Ofoa zs_uQC4N($}ooGQh6*bhf1)rG;mDE@>Fu^@KQF?sds+Fo2X=@9`L}^7#oJ84o7|l82 zDW2MvR?jJ|w&fhD22@N4kN}DS9|WlqU$}=L1QZCUZ z|61$6|Eoy|O`ShI3=D&T;gI=b5n^)a{Neup$#3eU&&Ss%y`il6_EHP$!Y#lW$nWD9 z0_#=6V>Z6-pO(Sb#}fJfQGTy{_z?L$#mKL4>2LeiKP10Tq;0 zJwSe~Ss1yhQHA=nb?tU-*DwhWaZC9M=lV(3jW9IPI14pWl#Te=t0-_Gr-Sp%wd5SO zvMHx@Q>cwX$}f`Z!2(`r=4!SmRKOf~bp!?Q_qSK7Yxz4V#x@=m%z{7paB&lbRHI2= z_jJWQ4o%u+l{$$BXO!{eU2c5v?d94~mHLWPw1`CZ3aa$o)2!mj@#F>iok}XMinEHR z^S~-u&WXvp*v5FKxW+Vi*C;*DvCk!XZm`ee^gN&Eu5o7n%bRQ7Gp?!2nhqL}jm>w7uZ&X0%Rh6=%64e+xs~C!V$ExYS2{1n!yNUzSQv9YR@!=q z$DL4@q=uHrtF$rZyoTFoJp7V2aGpNpmhYTCcj^(pa>Klw_lGrg^?$kfX}5V5O`dVG z%U<0$vp z(|hI}obka=%iQL591OP<#g_hjzyS{bO_21re>3_t4k;<2*%8u7JT5VL1hxfbdm%GiY zLBe_^w#S^+R2NEk>xcnHrL(Ux{6>({sYa+3clNmJn_U2cfnaFejl+-y4y2$h7^y@e zLXNLiV$KHY#KRk7j!EoRUFg7oVoq<&X;aDac=&*8#?Yqn;Z>9uW-V<#tW1r#Kq%{p zhu;*;@i27ZYe#J`kE?Wg7zzzhP1uV$AF3EYW*}_P*qlxA@LGde&=~IGLzsASL~*S7 zMKG|*oFi2_`zaE0)(WCdgF+SE8C&04>3jsIm@GD)fZj07d$zW+`k3fFN{j1YpjpL> zL~VXS?s8F^5kbu$u>-0Kc7r`zqNN`l6mDVoFoW|tbqvYC+nV79Z|#s-0Fp_LC@H?x zhFed}S#P%5Ej>lGOHyUuR1yrgU)T#u%nwR9FDbJd3icB{W)sJKis*f$R$1|aMuRG;Go%EFfA2Z;cjf#`Cnq z(l+KaTP}cDZNif&jpGC$g?-Az^aV$>cp-cs62S|qqFypIZqZx&VQ3r>7i_3Rd1d(X zh&)cj?GEUvu|s6u0y+oUz$SC>prf-!;3hAL~2QfSCwyYvRE@S(^qia4C(Bf|*EC<+UO^C3RtwsilL43|hAI~az3 z#~B1<1UVi~$M9PreUS(qlxfRQ*+_E7VW=!g{#+@J%Uw`&$NFXw6is4iJ>T$mT#6_o z%>k7urC|dJlGJW!o{?ry^8X;s$P*Wfe6}<d9QrxHp%Z;Mp!%SxI48ga3wltq%6!aWf6eUtgR9j?3+IN#@6lW+a z{g+mrw6+A*Ny8CFF*6KJdrn)-c^%G)hjHFOnRCN1#X;zYBCuf}(?Exzj8)iODl+FV zWFAQ4m}3eyqReBCfe**&r$KL6tls_XX|Srpgdb?H}xxRCRp; z($3aKxcOwtXrnn)G$Jb#2=jE7(8TyKVx*moz(Y-Akcri;f|faoq+{9z6HBGjtmjc? z0uN{#&=gAy`@l?41}Q<&MV71>v&!u0mt`}7$-oM-+AL!%SFuKBVX0Y79vdsg%xy@L z@B#Dn$|yr2%Z>od?4o9pd9kpPd00b)xiEg^bxE5gz$uFY9W)fiY?nT0$d+MaVHrL& zc}O$5s10>wBp2Np7_pLYq!|gvNNMIqJ+;(fX>80CCPFL2Mp-e}GpQYFbiFiCjIAx! zZ*Xy}X9fVwMpYX_NMMVI!i<0qrsQBO<%Wi`S|KaNT0X6zk!mEw&Z!1zm~%A|L1GOD`WjJ15wxPD z(CfVej4?9-o2eOPrDZ{%$%Pq~HR+;3HR%d>3oLDexAs7I4QY(Mogw|r{A*f zpO7*B`zGX`43*7<>>rlO|Ja1wX4Jl!kX=o-a3xY;*cVy{3k@u5GriL1+ZZhlHIMI#}f_6jjc0IZS2)-a7 zID%>?7in@x#?sK*)Y#crZ?dzo-d-08n5n#tYKe8BR#0XQ*<{IVR*XYgCVfhl$@zR) zuC%f|Dp-j#}T_d5B139b;gK%x0ODCCb5qc)lCPxrCLl+LYF2*nLaEMV82c z&cg(eSfG%N;zb1p#9nWTt%c-93=EU8ul-WfJuN6I|MytohuFCLMTT;n=lQNrgHx-vudLIhb1+n!jG&GW~)@C1qik@RFY$Won&!VnX z*V-5yr(M5ApsCV<#v&|OFwA<0MJ=6Oo{?ZHx85t7|C^*4K|C9k@V^n*wm4h0q>gf% zmm?RnYBm)r9aJ0>+8U6}>SJRpHMCI0AlQ1z0JnNG?X2$+wT1X&45jWSv(c(*eAiZo?+Z2ihOBazaKJM_0w8XQ#F zMby=nWNFu$Tw(4fe?xj>T&(%|;i3X{;#>>v^3g79Ha84Z2(kETEfQgtT@6%@Ih$hP z=i^$bm<3fQ^tIfzTNT!0cW$l>W92o`B3e!iM151X!{)gVl2KfgIssB-~+n>YS=r+ky}R%m0@5xrPAw>*0GqK z9`mlxbHnh*wjc%XgJ}Q`mg~%UM5TA>@EH4nLUW~eRgr+1AM+-a#KTPF_QXTVoi`;g zwwPBwN;5G=RM>2U>+plenCF`H_$1d+UXOj@@d6;Zb*5KZy@;T>br!%9w<%s;+9PQ2Gc#!21tf6+TyPs3Kt`voo*(~ep8&@XyZ zbGj)NZfZ^s{=j`KbnKwevERd8=ARkuMJ1spk957eb*9C&Iqtr8zCq^;jxXIdjsvu> zn{#jwxPnT&Pb}oQC3Ng~IoeDt;$=B6MS3aWrJ0wK7PqnQQ05$(9^^Lmov55MG0*kJ z=edo2XCmiJEF`7SZOoi#xaUk9PRek%vG1_woQa@oe39GOcT986#8IS-avL*eFVunr z<4fGe%-ISl<4Cb?_u1r9JeTKc7;fascLO0l}6s-dGX|5JISvcy)#z2@zx6} z>))^bF+mvI+K*K2wzFd17IR{0B5Ur9B;LC#9*XwFNAo2BmfqiSi}y$Ionk!sXEk$i zs_ZN>DC{ra63TI%Un^Bk0$EN5k?$K`ts%!$z=VpWu05%y()rk*ORc5KG2XH}{pa5z zpbg-()_0Pqe;LT;rS%oXWijM4(dx!@r+Je+%@ZqXV4@xs75AL}fMJc3TK>)a4*S)= z4&Wy7lHs9a?*8SWyc5CMivO=JFt;i{c|0*Mq^Sq)YEXTL6g)9p2uTJrDjMKPN=V7#Z&JpQGA{kHe2M$Lxu!Hkt`OGn zXTlMu&nG{5j|e0rx~Zu{ger?jxB30SdMjCoC;o1VxXERm{KQjJCL3h9trI7~RK4gl z#cF!bKk0RtIQf7nWZZKrz3u+EPMmq(58d}KR83Xjtu!cf&xbtg>l1NAr{#zr+k^eV zp1>@O7DF)ncEWc za<_AWj6-Ac0n2_Er#t;?{~of=hw@qJErxoKQVP)DtrvXovjk7{{GUdAIt>mOam;(i zpSZ=0`2H_}oAe$0>GNlElY@b*IPr-Ss=JO1H#q^Wh!QF4lfj|-i){*Ap)r$kU#U%j zEBMkT@kwr|?i)4*t`HtRIU-ay%%;EjE7CvWFzEA0@8~oGr9;Ga@#Qu#C&eyRZ;bw_Hoo zigs+ivgBR(!Rz*K zZx>0O1cCL+ij%Vygeo^VyMUj(` zo}TaeDvgZ*R()MMG|B@3nyxJ_P;9(BRv5Y72;+Is5lv1T8cp6@7)@T78%^F$IJ~> zxWZ}ih+M_#Khnrgqqp3g0D`I zcwuVHw^NVFbs-A)pyF~6Lqr2WdPnqqG`y{O9sTa1c5~Yh15EcsoER#cUCKWr;Vk+v^rLkV zx~OpWRfONrNGaE-T9k-7dzx1d3H#8w8xDL2;OUHVBEPR{l!!XqU8-0_&xHMmvjHfh z+(PUqr3q9OP*Rg|I^gVhf!*pU$eRuBpku%cm*daW>UZSnRB zrw4ecMjeBT4^5#V0Z?-_24_<=ycTpuoYyPDT@~II)ohD2zXDjMv_ERL{tOb%r zAxI^6QesGj^AXgwIc)}Di2RwDx3rQT?8Gu8xFOM3eH1h;sh-eX~*$@{pv>61ff(iyRD!@1G z6n$9bpqs#TRQH(-@$4^i!1EE{Zh;^wB^e4sY4Svx$b!_8^45 zWKgx{L#~L^&1)Mpv*Z$IwiH^5^;0n7?4p!NCP3GPw+ZcF2+Dnn3|QPso=P2abUSR>FLMj}WX{T9<6-13AfgpN z#%rk~DVr-gFu_@oV(#A$g$^_O+5GMOA_rzZL)OrIzLb-Ak*zOFH%l}#5IfUlDNBvC zyH8^-?9-TwEZwZeeAtSgReUQ93G8%;#*{9E=LRTF&0r7`frFA12VOJDNe4C^mT1aZ zXo+S)_k+2PHzR%Aa=is8jOyHDsHYN|FoN07=+MT2I@GF5Yoch%W2|6CGuo$Aq!35C zB2Y+~S2)djdbs3afV9AQvraWfHEQKku3i8!MFiL_F zkB6D~F_bkKiN!Wh0|6rq0Tmhy=B>`KxStt z3YbjcDCcHKsF&@QgwVq1XRSWTaA4+v5YMXJrpPnlU_??kFVPADET!IGRz3K-U8CjE*Jxpb&dN zrs|pkNh``FBX^Do>&xBk)*yp&0e4D}?1U%!F0wT1lQ)}bSi??*vNbjFZ3q5O&v?&R z+G$F(GP|~)XvW@Dfqpa7O5fp4%wWcQoKZtGO?EU2f5F0r4WXd5tBtt{oMiikTaKyu(HRCPLP*05cXoh-XzXmHh2)Nb_{bV!rGO)Y^l}wghC7{z$ z_n1#q{!n7MTW?mei(Wy3RZfIc%Vz zjon7?EIn=!wXABDH8a4Jk&;5>F@S+OGaq`dFhC@4y&+#)lv|;e7oyruh=yg3S2*Y* zxOz>*dsQ@@z@oOo+ZSe0w+`+i$kaL{ipxSU7@+5t3N|z(q?*Ca5_GrSJ7rINPFJXRjz$O@-q*u8VM7M~B-Z;gyl*7Yd@z zHeGk$+{PNSi8R{ykde(JZ%DxRPG@+Pr$}pTDnLU}^Rd)|v)<`8t8r}bv~=mZNced% zM)UIpQBLSQW4T0~PFC&V*5E^XOY_14*2Q6AhHiI+CVlod7or=N5UPZ z^n4)&D$R>JpG4tr=iNy76)mw}C}3c;!88cw!p{pc72bOigeD5AX$tFgh1#F1`gG9% zkVKi$&Mn2yN4%?sn}ocGH;q1IiV>~w z(t=1>*5AAe?<%JBCeG~O?=UO=&WLv*8(|uYtQYz>k}`r{9o=)Viw{G5H2xP6&m9q} z|2222Y5zOxP%Ue_S>OA%4k^kyQRAdRXJ91TQ?-_V(*-MkgK@PEvB;;n^{_-l@a0)SMbp2OO4N zL|8gbvc}IGctZAdHbsxmoRD!4)^|eItP?Vh9_{zI$s@;Vzs?(!oR~XS`)%I%+~mZ( zvD#SUFf2K-V667NyzvFeiG^de)5n2Wa^ldj+O6}(4^2)SK31D@9Ev3;ju@-0GjIF| z(=UCL69p;qTsa_{^Q@A?o@Y&)9vo(s>M-m3Iz38!RDRp(I>}PizLTsAK6R3{F0GTS zpG?m>#`q8-Ta4u4OY-`BKvb#l<09n^~)&f`H9YtIS(3K^-WItQe#r2@%`!0bCTbV zcx7`_u2cHL>=Tj~58Dj7Yz)7Xv}2;{`(PS&zH%D?51eDl4xs2#aV2bX;(Qbb8hY#(m8P61X{K?n*^eWChGsTuQL zk0)<6fmmp*DvX>TS$1o6t12mC)MjW%h0O#|3Dv(!i$re8s!;u+TB;i^7!r35 W? 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�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%0DQcxUVG6t9ruUCM_Oyk^Aj+aGLc z#x7-3ODWncZ?qh&8SSbD)|Rh}KdgQ2YVV}(4{K?=+S}1CM}?oxHv5ZS#BGD`S{rrPyDM00cP9^cysaKPHfZm_?i}0R5%}<*@U*5)%^un&KXCJKo9oxF&Hmcky*(e` zqWLZ7ZEkM+SD1FMfbAZD?e;fmpL*ZH!^f5f-gpO-`V?vJirU_DkwhX*|NN}*6D=iyJPLmxuk|>$3;(>X@DurW<3b+!32mcm zn%g`#{k`BY@mveu8|b3>_b9>?e6Ora>~-s^Uq{I5{vKbKoNDcj^Uvxwm^xnCe5>tl zXB76X-%r==qQe;DQ`IiJF_53VYY@{Be0K?fxAIUHrJ% zuJ0{&*FP@BKOgM&-><_idy;dzZdR8h%~h!|bk4{OH6# z=W{t#zhBR|jKkm6elIs}RrmKY{dbeIpScSEmPNWy9u_gD@zCBd6#luT%RB8SOkRKR z;}(ak@z?HifECE~^!83&M^4kED-O=b=kF-N>*I2K?#=SXkC0&$;4RGi^kFo5U$+*Y zse8?ME}_2v32i@M0@trq|GihtIDW0hr&a$Gy8K-Idap!rd?vJh>Rv11ms|dXZePxS z4d065W*0c8ACk4_og*$N=fBo#hhh5(?cX-DI;qw656L`p%(Z_=CO*0P<;F+7`LVCX z#rJuP1cYfYvko-rQ3!9AJB(397d zQ`P*G_4^eK`kCAOl=b^n4f+`nv}?54h6(Lb#`6?GyIS!xWzeox{7ggbLR-9jxK`RV zEwu}_jry66+SRO|{=xc#_3a`XX z@Uu^Mvl?nwhs}#OtWMrnuUa17w>J`>Vdm#ev$w3@YlXj}It|t5(@)z|pFjSwJ@xs+ zAMEc4TYG%`EpE9D%bwIoeCF@5>b_Wj@PdRFBD^r+MFM|Lt81|pBHp)*nIoJew-P`9 zz51<`zpR(v(R}|cWA<$v+@xGWxkQ`kb17 zA6|~n`dt4qpRwQPw37Us*-C2lb4R~VX(jo6QY#7H1!&es;MOhc zCmc?!a=ALG^__W)vFh^r$?al2{4^Uk*sD3}34Uff2CXOO_Vg%<3--_YoPBQm=jwlV@As5tUJh984qt$~&i}9#_Sqns>o`WWG`2!|${QW)2iJAO; z*om1YcKK6I~|M662-(hn9@l>WC zYI6Va)QrAncK+k3%)VxF|M66&_xmB-6E&mnG<*N?RA%34a{uvErr*Zo{^O|`eTUik zkEb&G4wL(jr!xJ-j(^SSNmjT{^O}kUo*M?cxp!9s((MP`;Vux^8LJuGi#YX zXW!rK{l`<8eNOMcpWA;tmDzV|zWV>qIguNOKEhZ)M7dh52QOuhu@7Di7nG;$)$+-m z3>&>alpPnulz+4r{&H~z4{JSet9hz^DZk#IVcq@vg&}r*c$Dz9BkV)xhuHbyGabJU zvD=5wO#M2%H5%ezIVMxqXOT-=Fj$_WDc_=p9chIVr|O+6QngFAmjXK?S74#%@ycc#N7m=;ncp@XF4`qdQEv)MwAQ;>t;E(v zsdn-FV*d$uy~HX1Ag1cicB%4H_FVtucq%Hw{=>c4DML}=M4lSgTn{#%Q1$0>!@W1E z12;TUra`K`XOKzCJ$Pt;s(;8`*Y{^xR)$mcV{Vq0Y5+STob_AqRrhLqYE%zE#2I)9 zE+$Z(YCqRQZGX0!h2us)2RxT6R1}n||9K7ax!x(i%P`nNOscQX2SGy3;3`k!a?<1+di zGy0n{`kOQQTQd4vGy0!o^mk-rWk&D6@2+0DI-@^3dC=_k>f3wjo}^y6eY!~_0^Geko%uOb zw$?RbbP&$K%yBVe-F~&#Cv}hB{?ht9wmSlS{nze@P8@&!*(E-|ZSPRSa{`s!|cq-H9?0p@^T3lwI)B84#tvs~v8~@%TU)|K# ze_!3c^P2bdUtj-ywIlG=u6^J9>+8R-b_BlKwV&AEzsp5$vYxwwZsz2K2N0fu@RWq7 zB0M$WX$VhCcsjx}5T1$f%!F%%2NRy3@WOryx9Kf85n|`=5&RQxl$s_|p=ej_~w^XCOQy;hCtsnF$wB39`=My6e)ntRQs~ z=G)88@OIDba2r_o=p@{8n+ZK`I}04WW^S@hdR4X)x541!wi*5i_ZlGnE3tyqNjQ2< z-FfszLnq;$#{z}VPCO<+8R2WvChKGzzSizG;cMK^Cmg-D?fUSwbGK)I;cM%zpU3|T z62DsIf66mRorI&;(49x+cZRR2yFPr4++Ziwr<3awz6S4n!tQc>nvO@`c-5D3HSI($ z-~VRjq>%VM1b#1oKgZ|K<@s}VelLRGL*VxY_&osrT%X@#;rD9zJrRCyCikAq!_*J_ z-V(p3#P22Xdr17=5x-}|?-lWTMBF}pPbk+uju*e@!|(O*dp!K!4!@_v@#gn%_`Mr` z&xYTt;qk)n&G7i-_hR@x7#?ptp835N9*;cUd3^Ht=kdz(f!{OX_e%IZ5`J%l-xJ~Y zLijxpe(!_d^WgV7_&pAOZ-d{{;P*24Jq&*Dg5R_FfaV*&N5St+@Ou*cUIf1f!S6lr zdk*|w1HZ?>?=A3q3jAIIzlXr@9q@Yw{9XaSN5Jn5@OuLMUI4!bz@Pi`=luM+K7Wp% z``jLT77mwusG{!WLm13^zW>v#eUGEu1r-pV`s)~zT^(kmlKq>Nf9^A%{qR8>4*k1_ zuIGa`^xv_ItL>))0?OAgT<^W|(Wdu9dWZd#CI7C&w)WFerZm}^_Opcjbl6W>I?IIq zdz3rMlqNgdeipKy4*Mxf=a_Ii`{^iCn(Q+Bsn@=1P4DqZ#rL{GpNjAGruX=F*bgTk z|5w*s+3U+;&f7j1Y=sWD1lk4Zn*w0(&ub7OjyUU-i(2q^%YlZ%@gnn?L zzdWH|tkC=4QRC$Gf49*4-=X8=`u7UG|9v@5u3ygr=kZ&+B!I48ztFFf&~H%aznjo+ zSm?i(&|g>R*G%ZIFZ63A^!~RXz5WN4=sl$M=BMkQFXH1q3`WV@?}?WwpU+_$5`s2d ztLq!rD^)b##Da(R0oQQx70J)HzVn~H)LaDoVFNvIXwK2s)M|BW_x|?7^XO|Dj)t4P zrdbT{i(kWWgTX$1@k1z@%6;zoPhV;-0$BI>9KuJjhZF8o_PnJxYR?~nr0f&b`pSw& zh&BJR&X-)BFTGqEm^?1Ie!yRPJ&S_X{@WWB&E)6X1oNN1)LaBQY{2+WUurG_t6A*) zr!O@Zf$1!E{?nJ5i@>xNJOAlR%|!rP2W_MM_)#V6n=5U+mAe1(Id3!_9C`2KwTRbt z9xFWe_;VY6cEZo181uab;)|AZTp>^8?Y5`z_4-VNrxHI0<^JH8jkq2B%=N$Y4EA%v zY|psScsSqdfW-b7bNd^$=l*Tfp6k=7eXHg7*~dN57yriQPv7|I8$V$L`sPpH{K4Mq zc{n!8uKU)HI4XVf=gXZx9`7(U8h^I;@r?2Rr$_qr^WR%uFY$Ss%g^11@p+u>`Q?1B z3){QC=N`vy+NR7@fX~m~{?LA^2JOB6q5aei+H?8SWbDh z_PPC!`=86t?SE{~?a%FhrTb4%|J?ppw*TOnYO~`nv~Ono!QT77nei9eH#7c1`)0;p zXy45FE3|KB{Dt<-jK9#nnei9eH#7cx-1+AQfBI?T>z5Dx(7u`YhxX0%e`ueJf7$xi zWB*9w>wnaKv(Js6RQbM+dmwZD&-N%E_PO&j+xztAT!%=tUC&z+yk z)^B{~<$gRK^-@{;L;FU@pVud}&z&E*eu%&O@Ve#J-?H|5yJ4SOe{=S^`=2uV@cwL=hnZn z@gK%Nw|?i!&#j+1``r4M8^5{rH)o$)KXdl2%-;dFki@?YrT1j6H-25$vzGTZ?UK}s zzd!%u@xgAmeCK2QxV`_~!g`7AJ)U?+#&zziS$p@@j6L3QYPNjXH&Z^^>hC?&t9#eD z3)beYehTnTUU^%8e*uS?d}rs|V4JPWQHE^l5ze>r))4u-IN!eXb&$y4)%i8sM@9bq z&bPt-lx0eK!1)ct=RxN;5TA#f-#~mGc76l#dBpiOJw9DwbQ>{sjW3Ijn!4W85%^+v z_BxlO>d{qhN*T!OuOj1#6RUoxK`@0OD$R4Bi@=C}c@f0D@>(xRxnOX)Se9~pYlUUk zcniD?Ev~tLI|5GGCHqG_kz+sQ@}RF3PQl~yQ#^Hi!M?2SE~^!aVU$CT%`n&hLks(D zDTf?>a^s_;us@FS;RQy#YXwea(5G_P4aP+x?ge{3C4sB5d)Au*E0B)}9C-O879shZDB;M)ua<5w`e8*!nlZ)}Il!@e^Si zFA?q}d^BN;cf_~;jPMbJZTv<0BMDpoMtU1B5w`gdVH>Xzw(%C>k%VnLM0y)<5$5r5 zI{jLZTL|0vFAp98NF@%3X_+r9O5Pp*I-GmP%Y``S<3Ex5Z*Mx5) zdShgrc1YTl*rtl^5X=gl+sq`n?J7NZ8i*h`%#o>yJpk3*r3;??ZS`!uGCB zSVLNX|_-BOed>-lT z{2Sq$2tP^K&bJZ&M#AF=+j%`k{2pPuUyJy66aG2jdkEY8 zPGtWsVY~l{^mcy{;pYk8OZYy*ZxQ|#;bREDP53y%#}j^s@W+JjC;S587YV;a_(Z}d z5q^O1$%IcK`~=~r37<;%LBgjIewpy;gkK^2D&f}%k0$&O;WG%IMfhyO=Ma9F@VSIv zC;SZI^9Y|$_(H;u5PqNV7{VVAzKHN+gfAuhCgG0=k0pE=;mZkMLHMVHA0>Px;SUL4 zL-=vRzajh!!cP&tmTVZ0CzeZ|9E)+xaEJI}x_? zMWna$OoZ(`5@9<(McB?u5w`PZgzfwoVLSgs*v@|uw)0|y4Z*w)0Jd?R*nq+utH==Ya^@c_+el z-ifg7ClR*&F2eSFF2Z)6h_Ia(B5eC%gl&J1u1W@5w`PJgzfwmVeWsMpHqi2yPt}%J&%a6&DRKDMcD42BmG#y zcK;LU?fFN9Pa|yeBhuUai11N_uO@st;j;+a{EGb9e2=iLM-jf3u&qy#-tJ!`d;?)y zFC)FJXAwS?@Ogw!B5dnlWWO`v5rl6fZ0mJoZ|g^dZM}-{O@!_KKGKgPd>r9p3EO@U z+22g~M8aniK85fo!WR&>=S5L@*ATY#J<{9y9pQ@!pFr5w|A=q+H^Rpd zK7+75|Bd+J+EsRK>($Jm+~!w=tv(U9`5s{#4-vNc6=7RXB5d)Eu#NW!+kA+y^>2i2 zyhYf?SA=c8MA+tkghvs!^)%93{32}YQG{*1jPPi}*58rd`a8llej;q+F~T;UB0Pey zo!=t8tv?aA{UE}&K1A5|hX~tx8DX1$5w`U=!ZzL_Z2LomZM})G?ROEj{UgFQo+E7Q zLxgSpjj*j35w`U|!g~|uc!y)%uXmuo=Vj-qSwoJUHzI83iwN82#SymiUxe*^5n(%j zMcB@B5w`PBgzfwkVLJ~+*v?ZCw)19$?YtRbJ8wofY-`!I@#hWY7Ox1~c{9S+o(S9d zF2WYC2wOZNZ1Ib*onIqt=gSD&c`m|so{g}bS0ila+X&nFKEl@j5w`Pvgsp!fZ1In< z#XrK8dK-$Xd<`?Blp z>F?Fqd8ZQc?7R};v4m~^iS$nqzMJqpgl#{H>}|b|u7*+xU+7Hhv>)^E<*e-Xm<|Gs0sD+xi{pZy;>*H`3ewAK_;S+xj2rZTv>q=4XWM zJP=`9pCkM*VOwt_y{%6Xw)Hi_&k(l#Jks0x8sX;%Uq#r?2NB=)w+P#OkMPxm?fekw zA0%x1W2C=}u$>1Yy`3i_Z0kdWZU2d|?Y9xWjPUh@ZGDgUwm(ML_Uj1S`X6E2zawnt zr3jBBd=_Eb&m#WWgl)f%^mZPKuuOe*wQ-p0liLkAo5w`U^!q(prw*4)_ z*547f{VT%OKM}V18eyA{5e{SF*H)iuC^LS9t^N_V`bOC57hx+u!WQocTYV#J{S)D^ zE`Dv#v!eRj^Q#Ek^Pvda^R5W9KgRt@Fd5+igeNCF1>q?PPepiY!qX6*mav^CqBJBz z{rW9Rcrn6@6JCb!P{PX+UV`wFgqI?`G-2!iC~X}f@839W7sGxwo}#o(g!=Wf@fxM= zBV^y3CcG`-*$K}w*IY`#Uw z*1ss(`WGcz|DrTqgz~>H0d$@hko$M;Jps3y2fxkcygoGRXJXkc(7#`_q}Y6n@XVyQ z`-w=uCFyOxMS43=M0ic&A5VB!;@kL)>}|eB*v4Oke?xdE`M-|vvV?7XNB-6&{qIR{ z^DE*{MSPo2k^WG^3le`O!ha&Z?eCF4J5NOT9l~~Ai1hc7f4e`8^oJ4Ng82Ip-iGkD zgzf${@^9a^jqp*V|1aTA!bcOf`>n{|ZwcG_73mkJ^6h>r(w|ED(+D3&{No89Li`g* z|2E+h3ICGtDTIGS{!bNUqgEPeIF5jdBQ^ozd-im2;WHfX2Q1< zw)?NBe7ir0@WX_kBK$PrX9zz_*zQ*&|8{>GVY~l~@IY$+NrcZPzTJ;T_E!^sJ;Eyx zUX}2Hgs&%jE#cD%Z$)@J!ghZg)z|KiBYXw%pCkRFgzf%0vagW+1*E@%@G8VVhwx>D zFD85j;S0(C7{V73zMSykBo|O zR?=Ta`m0EPGU2O;e+23K5uTs$Hwa%t_*(LR9pUQ<+w+PjKJO9UiTuAz`YTC)1L?m> z`h^JF^SG$|!K9y?@b8F!3*lP{-$wWi!gmn9i|{>!zen}CkM#4A{=0#`o{?`L;NR5 zzbWbeK>8;M|BCR8WdBprpFsLigwG{>IpH}8*9gBz<-Je%1H!)`d?NWfhVYSuUnTn$ zNk5G6w+O#Z_KT5zbHeKr-hl9igy$hVFX1<-{7p!|8R3_RzZU6dBRmJ;^9YY1{4V+5 zh4i};-i`3?gg+sFtC7Bg@DhY)9T3mY|Iq$92kB=gJSX8P3C~QpLUWNKUlZP+;&CMDM-g6<_)8Ij}6{|V_ACjDPX|5w7Z6aR0d|2yG-5dJ6Ok>u}W((g_B zf02H5(*K+E{~`Q2;V%epME-t8`u?Q9gz%+=#}Zzd@MMH1C%g{fiwN&S_-d-}DWpG& z@Dzj(CA>A^sR>U*cwfTP5}uCm^n_<1+^@;hpX??hJUQV3gr^`pCE=+EPfd6l!qFku zbkmW3dcrdho{{iOgl8r^3*lJ_w+cPJ9FsDi9(Rsa8PEHJV_3%Xeo}bee+tjrzy^@bJo(sK5Ch+mcbEJ&t<5J=IcvW~ljuoDdZ-wXM zUg6DVJYEA#)GN(y5@lS?VLYYZ<`j7qkvEsf8z}MyiM*=ul(@_-`kTjiyat=7SDM!( z3U5AxjJXioEZMymdw1_eI`%B5!?>w}J7Lw4srdbL>XOQ_g=s5P3foc^iwo zO+?<0MBb(%Z!?j%xyakXc*=UPrSX)sl|nMkk44_r##7Gs+lahv#d5b3dD|OL8K*ml zyd6c}PR8SB6DI1Fb~cGpzY)e$_K#gef4hpj-9+B*##6@W9>!DBo(jo0dx^Zgji=Oa zALA+Kmwm-@_cNZ-Z~Keo9w7P?tJm)!Bl@$NTsqhY%6aXOoTEa2sK`4^4~e{oMcyMK?@^KWn8LvG-mjo_$|Y;@Nwx63^a` zmUvT%JbOP@@@MbON<4diR^r)vwGz+Xx0QJI9)OGD5P@j`<4>V zzPBUs?EQC%XW#pgc=mlRiD%z)mUwfCJp10cyrF^SLA(9Eq@qQ%o zHWhjHy>_YG%|+f8B5zBPx0T4V+gd5v_ZX%2ZX@!x6?xlO+q%cjFce@7Tk`Mmo`<05BJWy}cb&+)UgX^%^2Uk0 z8%5qt##7d-n~kT8t6N0gts?Iy#|drjoMF7nMH zqsaS{$osR%`%L8hpUC@*$os3v`CKGv+i@X6MZwiq&rO2Dgc*^s&sYTv2B5zueH=W3v zUgXUn@@5oyGl{&JMcynTZ&r~vo5-78UjktBAaBi@a4u-fAMRL*xw;dBa8C z>LTwuB5w_mx2DKjOXRIB^41Y~-xYb^6M5^3yzh&=^+ewKB5wncx1q?}NaX!M77PZ+WnKZ+7D;?VUs9%_;IK##5dX&L#2&8c!LggG63ctuW8Be*7Us&WVB9=Qu5_xNjymdt0cSYX!MBch0@B1QeJ(0J*$lE~VZD>5@{IZeA`+>;& zp~%}<dAo_c-9_FWB5zNTx0lGnOdc*^H9ryEZhf1^d-8OBr2C1;Afvy7*t zvqj!HBJW(0cb@T-_?>S&gft&oQqTc{hl>aU$)7`>yEkJ(2fwvE27X-Unj2zYux9 zG@dd}eWFl{JkvBl(O(F886nRq_Pg%#OHlDKnO(XKAHJ&mQrW1M78&63yh`bp^ z-b^BIW|23G$eUH<%_j0@7kP7tyg5Z)MdZyT@&<~$K_agz^5zzK^N2iUEH}cbS-Hx6 z{9utczsOrapZ&BkZ=hMYR-r^!}36Zy?$XiO}EiLkfio9h+ z-m)TZIgz)#$Xh|=eM97ZQ{=5^JSBZg`>x3Qp2%BQ5rp~r#zSHG@kM~ z`_aZz&YdGg-Z3KYSh0S`iM->*a!)Yc48lS=O5~j=@=g+YCyTsOMBb?)?=+Ejy2u+X z^3D)>XBtoWD*ai;Q`W1qji>B0=ZL&>ji;$h%79T`lsi5qZ~&yz7jo%%kf?-VMf6=I=P;Df8_{ zk$02vlytMmyG7*PYCL71{)x!DO)U3z<0<`ihv@H4k$0EKyIZW^JtFU3k$0cSyWe<9 zdO+koDDoZ>c@K-cM?~JEBJVNdDdXyKk@tkids5{6ROCG+@}3rX&lpcx*Pa!5&lyj- z-+Er;y&&>l6nQU+yq87ZE5=jqQ(hH$uZg_ZMcy06Q_f9q8c&%YZ;8C0iM+Q(-a8`i zU6J>m$oskRl>U8R8dvx5iV>YrhkD zzZZFbFrG55J{5U?6wCdS@s!{1{b%DT_qCrH&;Di8{~1ZyXZ~V5W&ilA$oref`@6{d zhsgV<@s#%dOZ4||<05u7+r>v(lh`bp^-b}_*o>R{(@@5fvvx>ag zMBeNoZw`?+r^u^_ytzc)K#?~{&xE^1dzdRuy@xiM$SxH_UkUFPnyo zywyeCcSPPAB5zHRx0c9TTjZ@H^1dtbz9;h56?xwmdFzS1^+nzWB5y;Hw~@&Ef$^04 zlpl(`jYZxjBJW4WvwzvNsmR+*l$U8*j9V+q;6M2V=ydy;3ks|LXk=H5mjuv?%Mcy$Y?^uy{oX9&~ zLXkH{t-ZdicT9J31$h%(T z-5~PDiM$&{-c80+o=@H^@@^4%w~D-*D(cgO_ zZzuYgZb!m96IRAxALq-90N!<*nTq6h+gJ~J%AP;toeKt(r|kK&-wntPFlBGUH%dbz zG#;q-L&lp#R~#oOx&4jCkNu|XnTPUOp0ZE1e^Rqg#XnVl9zQh%hVqnstL^9VH>Gj` zQ|0scsllMhoack`?uQq3hFBhWXiv&Nc!+OmT=o>3B@|5J4efDI|Dq$IK8NIM69zo1|Sv4^{k_`&9KY zFVLT<`ID*-%i$05cE^|dA=NJC4MBxCCkGv@2PPiGxjbdYamvMg$9|o&g=OtTcvr%^ z5k8dgVT5-kd^q6|gm)plJK;SDk0iV&;ZDMP5#F2d0fY}Ed<5Ym2_HrHAi@U|KALdY z7k-WT$o-9Z1wQK`|FUu(ck2Ayp2du=QuexBiUqv4lGbA41sXPh@ZNC&D&9B5d;`!Ztr6Z1Xe1Hh&^)^C!YKA0uqz zJHj?!B5d;|!Z!aRybs}h3EO;$_%>f7d>rB2_?=kuLml6_`cEqQFN)M`eOk3om79Cl zDAoUb|C-weQ{}TC=B3J4*XNWymz%18tM<|4U)mtQp!Z~7TKsxS z?7m2iU#u6P=jI1^jpix8Tz;yaD9_Ggv*6luJ1<7q&QlS#^J9eV{1{<7KStQjZxOch zV}$Lz6=6G1M%d0n5w`PKgzY>QVLOjS*v?}Sw)0Sg?feyCJ6}cE&Q}q(^KgXiyc=OV zzeYHWZN2NZyCN$#SU&GlLlX9wFS+&)P1vXE z&*e9IzEI{ho0ll?N9YT{Crh&{7#0Z77c4O;`e2@ zKew--KHRU6bDkPM%u}&iKh+D#*!+Ma4C)ck={@Vpp?LLtT zNVSJ(4Z~FV>_{y?6;Jk;!W{Q@*DqCWO0Jflvd_s?|Ec(&N(HF#uaR8}4oN6@9t}S*2{GLGrDpkKZ8{}6S8&gfAp)_rDR}J|BqiX@u?mHPYMj{Rm$`_zc4Kc}T>!``-w658f#vZ=0V0_2-mhP~>oGK0Qmj}phDp?s)WnLlW0*u6BsH;O(-`(3 z{{BU0k7mMLq~-^gmh0~w=+~Uv`5aTL%hgVV?fxXvk05OK8M zM1+qeZ1)%c&)$~+$W>Hp-(*5y!Zt$y0a==M@}T)}bTMAX%=5oO(H*JF;A#II^7g9eEbXHxqed@srJ`5#Ar4#{$T z=hVyfk|WFYqa%NcWV!xu>MtVs8j|lLS+1|0_P3LK2g!GmEZ0X)`%_82n`F7(cJ$?X z-jU^VOpYwqvyS{(lI8O=PW^2pe~#oD$>)-MKgs8jJdtjcj>sd#hO|pF6 z%c+;^T}Qr! zk>!4%Bg_3jN0$4Qjx6{499ixcI$8h_XuvD=FzO))?}HS5Ac>v9g_QVjx71q zktJU`vYa;@c?QXnkDPkRM~-|n$#VX2>gBxS$Z{TX95|Sl+<=;ve2yq5K~avqcQ>BzEv9a+|kBTN2qWXT7P zEcw8ZW&Js_tT#uN_2kHspB!1%w=)O=y;kRMCJbrmiyP>{ z-;f^s59#6lwNG!B`h{`&^k%9a)6iE-YY;S&yR>(K7Zr74gTW28ptR=j2D4YJ_k^Lpg-UGfIWmI z`^DYB9_!)y5BgK^g38$T6>7&~+1E$RzpsDr#Qreun?G(>mJD9m9{YuQ9xrg;+Q5AP z=%M6!2afA}$S8er7`s2c(dP&{Xmc5Re*x8(0I10rn;?EbSu!|CQ zAr~#n<`4TU)~}Bj_{rxlUtYLG8(_Kl^k5g|A($Wlqg=}Sw`1Zl((^&9@wFNPx(Xxx*NN{v3*}V9*0kl?Xeu&E>@52$I7wx5k4H>ye_yNez2YoZ&&+P{a+sj;P@z) zvFA(Z!QI&T<>C0+EvfN;ItXQ=MoB)k!~LJu;r>tQaR2Y`aQ_Iik)D5AZI9t|e&)-< zDd>nwUwh6cdr>=xzV_U|@4kR<|KavLKJ@=_H~?UjOXjI)_pP>{MIHL~2k3z=pWaNh zhk5boQMW-6{X)@am-T$}4m-nt#4-#tf5CQr@yPZn&CM`1;2<&|fJ2pjW|*$ddc5EUiUkrOb-k}HneEAc0P*(7w&82UAp>AW_#p;FnLp^weJXY+l&WQjHj#9a1hx=c< z!~KKik?!A!D_+O3`IYtH594efdh2wUKlT%T#g_QoM@WB`DuD0U^*fUc``SUTsC}3p zY5e&3W863Y@R#csmG%{h-&W6{n1hj&%u`Vth#RykJHFUH`r#6KhzFk^zIKeWJW~5? zCsvO2ALA`M{$uZ-#D4w-dhj=Pe6f7tya;`tedxgt<_+ypuGHcEW!(<(pv~n$ZMF~dT^KNcQ7T8e zJ~r-fe2){pT8;5mC~mdywK{x$epf4lFQM(K9UedO73U%3Ck&D6fw$Toc0wh`nJ>SF z?8Mf`+L!O=@96sT@y}`0w}0?FgCE9=&Oe9s6d0zG`$0AP@9Tf8w&(E|^`FP(Yww%? zR@*cGzW8aif6VvdT27Wg;M_G9$BKD`Z@&D;dcL@X9WH%#IbMBwY)^iVA?kt8S;2pw zedxg--}s=1b>dqe@DDLiiSpL31i<3ar_eG!Tq=)qqf zuh2u>g!B+MAwBFjK0SswtcJ~)(PzUO6Y}n=JsgEILpur*@qr@@vVQ@hdyLq z3B6GNzV;)%K79p&<}=)89P!&~HzOVYDp(k;Ixxcat&acyIy`^!`yajep`S(aoh08y z^3fzuCs}?E%&|X6@`WVdLGt+|OMZ3i)kv26Z%+N?B+Ku|IQ8;-5RNS0C*sIwko*af zuOaysl5ZvXIFjY}=$!seBKdfdKSlCvl5ZyY1d`?VES&yMCRx5O#;KS4l#VRFXW_{5 z`5{NXh-CTwEvNqDB;Q8z#U#u1x6@v}Z^M!0_jDXtzOTuVZzp*s$?|(aj=ucTedv1>W8IrFiS$==W(U;#Ba%A~E z5=TClUgMO?1$F`q>4yp9D=Y4N4YFAh!0+#U^AUz-N!_7&580QzH=e0|EeQXCZ z=~aPqNqYTU51I6i15PE+i>%kC56mknYj{B=AFpOoeMpr3IO>7-!{C>1{$UU6hiGZ& zi}~=`<#GA+xC7>g>mkE$$Ughf0}n;V2m1{r8S?dye$l>y7rv70`qbEN?E3QdPyP0J zI!3>w-te1)T<`8_;Gmf!z#Wcj^6 zN0#5~b7c9wK1Y_{r*mZa{Xj>S-!F7z`8_&EmfxduWcmF+N0#3=bY%H`Jx7+`!*gW$ zJv>L2-w$+T`Tamgmfr((Wcj^9N0#6Jb7c8_Ku4ZMvizQ)Q!l^w=g60nEWiKf)XVP) zIx@$5QF)RyFa}3@f1qf84f-_~Ia);Hi;Iq)WcD-j>=++9)Uo1+$?xVY&}lx559XR+ zwEghyZ+v}H5#O3UeC=_*LYtQNM=}t*KYGszaBPHSZ2!xZn$3zkJ6iL@^Bv2N&p(d8 zmpnuFwO^X_4<;F+uRZs_JsNmQW2Yw1dGZ{|gZYDvDqi?XS{FVw{$3y-AFOwr*PyKc ze*v|I?;DDZkJW;PtwP14$No+6=Q{O8#tsF8V}sx3ojze)gtvOk$O`+dh))R^YF#DZ+)PBT%q=t!s#6V&oF_0KY3?v2;1BrpeKw=;=EE|?>vF8j$Fe$s>>tk?ru&S{JAXuaH;t@W*=aH#8qUd$Byn>cJn31OBpqV_gsahf0hOdQ0mI z9&g!tvGWnDH`eDP)<4WcsO0%rDstXh)r*~vSiM+Y#=2f;zEIEe7JGh<-QT)AaS%Hn zv3g^DK4SgDyo5@gH(ck1@?@Gf%WUj?#Oj6S3-vs2vFj~XFRiy?^NV>2l{{~;>n+V& zvH3{r&GN;0JeHTSt`}Nos88!{Y{dcQB~NXY2FM2h%?RyvGF|C^+M|m_22>WD*A$XVZF58EKz000p=l8@_eLuYtMYd&TnYG zP@m?_GQs&JmglndFfXB!=Pma74efZmz|pVIUhMfkRoPQ7s892@XwDnv4<)Z>-d~XSpwIJ;&%>e~pEH7t&qG7T-{C;UbpvGNW5{?v z4>FhRf5>0@+@F%u}U#!pLiPbB6UU;3r zPxh~D9%JpnpQ0u6#QlZVE63qz=NF7OHZEfIU^ljGmtD*c?uWx4?yrK1l1knOd}i4% zpC0}`mg_M-;JnV*kFw*F_cy#>4u3-X-SSY>as`q@Vj928P?~?2kI|0*P`vZ{2*p3{ zr(jh0yHm)aa;&Y7#E&~;oIevkiJv?Jq4QyipFCSx#^>k6PvR%f0H6EQ`pUDj;B!|% z6F*?WmMMN*K3cuMk@B<4XWGA9K2rX1`AGT4T+gOR@fi}tXOlI;NxmFyqhH(+}s)q}qwdpVfZ~WxIL8e!}}l?6^9mH&R}F<1IQboz@>~`#0~`oS%7r=l!f`{z~I_Be2t-9~$lX zcSoP3vKdJ0%Vl&)TVG51{JXQi=t*O3{&@fA{esT}e12He&j)Gz?iyNO9=9(qm8}<> zhs)N(xMRysjXT!Ak?QgK59KT7q1F7z`7fQX+?j0m`D#g@f3VGQ9h?7r_n~9+75WdA zBlXWWj| zyW$J>M_TgygyM$$#rtfcYBO~$S@{!`lxmyeWx zTs~5McKJyAm&-@m-(5cV{$}DQ@snpDouBh;WLdhtaQVP}2%w1{Fk#EYkIP58es}pu z_cvTVSW5gbBd(nIars~=@xzR`a^lD3gQdg|GvdmNJ3sDd8>KXUmy^ZqeCLj?d@03` z%juF9KTG=jyR)ApW?-zv2fzOodcP&~{w0r>X??kTq|bl2e5CyB@{vCO;qs9_-{A6*KL6qJ5&HX%6hAIsDSli&QvA4l zq|Xnze5B9ExO}9~$GCiS`uHOpJkr?tvOVCTlKaKEgYAt}5B`Si`SduCU_5LuRuBEa4obEMd`T@Awf7hK{Q$oI z%kQ7W&g)3y-nWio`-NWF{l~5o^gq%v#gApKQ}Y))&#`(Vjf1ksA8RjmT(R~>I{vcS z@p@vvxgXZ=^z}2pKgrkAozCCPU#!gY;LH25dOT0?qv-i$tj#~qH}B6J9~=+7f2Yrf zATn&3_;LA2@#FH5)|bmi%0Dh2W#?zt`q+~e_x*9~F`hgslL3xjK3}$af0fUnIM-qf z{QeK`FPu+!Kj!?)=NI%7D#z;myt3zm=bPt)=d086v!st7amzd)Uio@1Ru6V#OSX%+ z3H2YV*Xnp;@6(j67vhh3Yc-#y_3JW@_yU^p7nrbR%HJ*@qkX)+)+-2uf{P21Y{!qW9jW0A`q4{Zb z{{ZhOng34v$MMGT2*0`Hb350MRAzpPuD{TH^7wfCq5JPe*PD+AAAcjwhh^LI`5lY% zydkgi_*f78vR-Vz(EF?qvatxYIv~BAVIvEEpfvrzU7r2&toxz?P*Fn9pn&EFyapLVC+9E&+X)CG=?;h4C)5(0tMcE(r_oyvj@ZlcEJbs4ddh4^4wRR zrmu>Apr@jKPhLsDHa>WLb~=CYP?LWyBYYmH$9PVqC->UC>?N7SvBq!m-<=`kHK52# zkda3qw|c%w{DVnbCjMPM7We!^+jvID1(%GRgmXd;s=sXY+|%y-99r)!etgVWJn@tG$uq$BoAPzdUXS(o;e5kmNdCKw@cFRS{Ga%D`7L@r zPyD<5v6R-Y%gAW2U$^&>OPnWguH^G^tX@%1V(rH2746@r-|qMZ&*-1e?>t`Up@e^& zr+`C``vDF;ZqNO4J-3IyOA57RX@$d4H;?LzHtv{EK zlz&`4QvP-MU@7fCE+c9Gb@@p9uggc;e_cM({_FCQ_FtEewEwz%u$1;+myxvpx_qSl z*X1Mazb+qX|8@CD`>)GK+J9X>SW5e^%ShUPT|UzO>++HIUzd-x|GIpn{nzCq?Y}M` zET#R|WhCvtE+1+Cb@@p9ugk}xzW-u0{C6P0`SVM_TP@As4|1+))n>lEvCp|ZU*GC$ z^LLf)^xxQTr~l^fP21_evENSrXUQLOw$p!Ozn%V@b1MHWYO67sZ$BFL+sVK2zn%Pl ztHj@#_TSiVr~g;V4TB5w7aS$OHul>YpT>SW`Kh+qe`CL$ z{=c=&{u}%4^nckl`)};G)Bj0r_TSiVr~lW8@pk5i(Xijn{A2uYC;w+iKEAl*oSZi| z8ur`Czwy7F{9hwC_b$j2R`To7u-{JpjsNZBe@)@Lo&1l6{dV$i{4a%n-yb#y;@$W6 z)PZIrt~S?G=3(4@t31v3%9-zOGT+x^zT;_ac^W<{@|+_=Rm%JW*YmOM^KH#*bG>LD zrv0w+TveXt{=d1;y{FYx1bLbm zTwk8%J6h5I&^H?U$Nj>J=*6@bwe(nm7#J{#L>^TWRPv~p#bh4%LORG=*2ddvbDtoS z*G4p-burCr@-(?9{}|9Ox~pnGgW6AhL5m{#ttmdF{h0eGW?>r<_J=Ga|1Nk8sGn7{ zu;fwEezGYfD_+y}WbQL%(x>Uxd^V*Hi}PCDFb*BIHL7if1$lvPfx!-BUkN(6zSYl9 z@I0{pML(a!{;xZV;1yE+vUSmyZ;GE+2f3NbA?-hozKXTt-rUarsF3#pNUA7nhHal=6$qP|7bZ zA1S}Me5Cy1@)43!esLK}`NicUIDZjW3rTpUZk@AbnN6IfQA0a8_7nh-wUtB&?esTFo`NicUB&Gb~GL-U* z%SXyDE*~ksxO{}9lwVwiQhssyNcqL(Bjp#DkC2q|i_1{TFD@S`zqov){NnNvl2U$g z8A|!Z zXYzukdrUsBuc8NVTpv`lx-$8^dd;T8@`85FUTu)Gi?+@5fZ^O<$+bgWzTADS1yXe_ z>(c_H@fF*JUlqClTu+;t>x4>efgM~oR2D#mUST}&BepTx`SdGV;j@c+U;9}6Pb)6a zd}c*|dY^u-2w{>UOk+vN81Ipjju4yklmx-u%PY08{*>wcH!6H(hKaESM7=q z^o#Miz4|4z^J!GH!ekwoB8ab zzPa^y^v>KmnmutL@iCF&BiF83Z%60q2efT7JzyB;K&~C?^5q4&_^B0%JGBeHDqVT2 zS=P4r(0(yKw^zRu;-RWdeRfgr?_uFJq3biEFJnJw`_Fh<>G+r}L+<3Jxn2|4uBr6` zk^Mr=NZ${|egZr2o9*%VpwD`-{-J%*lIIcqjnogcXFo=2FP2Y^C-gtke$n1nGH>iB z$3MRx#yqkAqqQD*9Pn$TyrDhw#`c)6R@Vvl7b|ya{AKgR@q_U*@4!PP^TPAR@y+95 ze>k37&EJcge<8kjzhM5belV}0{jey1$v-e_OXjcWdf@ru{ekB@G@q__S(f~B87ayi zT65mRyp1%k!Y)c)SHRhRr}TLI$n)&qlBNe9FkdK{7vM!pUcbz5r}Itn&z;et`8x5} z8h>aVyAGLewBz+!cAiB)@E0Zb8>?5gf3f!9chNF-T%DSqc8{O)w(tB9%Tuggr}$jl z;v<&tSiQ31jpvuo0~~kkANzs0#Qc?YJ;MFM{#eO>@MolD+2f1#gXf>;o8y7~9Ig3h zzYu3U|FPp{Jst<@*?y<=n0KFlV_lEq4gNCEW$S^jq9yymak!+c56lzu$MY7eSN1w$ zzhdPyzm}=kd5hI6dwzM{`SL%{C;a6&P4N-SK#GrrF~#x5ak`}J51m@?%(rj7k5tc> zXV4GFM$tTz;%CvwFFen&a+=>oV}4`v*GTgS@b1Ai`>Wz1)+UhI6AtrzPb zkJBfQ_53o{{R6LM&vUH3*m#K5!+468oY#Eko}zZ4-){S{e3z{kJ1=GH#g3!hye}&2 zyWKo=YJOwm0PC=5nda9rHrD4iHVzgSJ&sGv&q&XMMc0K-AMbbecoa~-TA;q-sb5}k zv}YbT&lSD@#GkL`&pX0@xW|8n3I9+ZTVnoLpXW0+e%X#sPW)MBm}ehfjCYzp_Qxle z9XIG_tdGCl{_*D(aoqrZ`0oos`2_8_jLi?+E+jKQz0{!Wd>Y~_#7`*S=KrkO428c> zG556`^^vYhJ@CxqV%|9}pg&ghI>ldXJeJKL_;0oBv|nZSU$(um9#>;+ z{+BfV%N}ph`SkS2jQO4$fwu5$@|AE6k%69Adc;J4^*6URMkL@>B5AzgTay&4v zt-ilq_IaM)|6bJIkKuVq{JV^_`~5Jtx5n?^THLOG7nk+YuKb61;B|=okN2HU>A@fP zi<13| zjg8|@>BWw>Y`s|iI@NF4>mt@(tLr9~*G|P-Y`c#dO8%Jg9#l~gq zcw^(BQ+l!EC|fT!4m#Cu*>M$XFE;)<6)&;l}zGM3>oA+3I zOL|-s%`dTh!ES8XF1zSIHXfiKTk^VH)c?MpdE)iU^HlWjXNvxPO5)dz#L(v%6TdEB zDSll(TK)csv6de&I-Y0XeBUZokMo?*9`H~ZYcJNnP=8#{c@+IHKb_Kx@#5@lN&2{PFpW|2~)f4z(}(eR)OyUSO={>%@=C0H4R)+67W< z{Kw|4SiJ=vEc{ihe+#$buN^D)%jOLuUev}{HV?7mFT3ARe&+nn-;dX7e#Q46APz$N z0e>GKpQl6D)65_9UiS50;tw<1yiD=u@=`SZ(3;~IIG@)!{(XADV@sY#^uzskN)P_< zc-X&K9?RBazlzFb`x9#~$lbYG4bm%koa}^ zSk&Veqv3T2obxk}*QWh3!e4WyZ9e=0vVtI-6kLM>O$J#AhFXR{V zGTQrV+572|mfsV9ZiE-Tznl0={N)))`7h5#@z=X(lM0n)pSicm=5~bY^-*c`=QPo; zs2-OFZf1Xb)#uW{&FmNTU(IJYk3mMs=QH3%%O+IRO|boT`C;ZG|3E+7f2Z_f`H9ub zk2U6Xtle0>m_GA5ypQ3&0?*G#_0U(yo-Z!AU!NXu^oNrB?UY_@e8cb9lKELw=P!1= z&|^MB-@nH5&g-e@{kEd}edzrdet)Ue`*%fu?+Lu3O#FfgTk`K|@%5ssy+C3f5r>?Y zI;97H7Igj*(FTs|NrUciJ~CSF`VAdMAX;7`#qHLysqw#e*zqp*F^NY(zI={Glr1Oi* z2ftslsO`TP4POTW=lf~C{J?r>A6s%BhCgh#Q+n`+$HV@`@)N7a{rTird$D@Hei-NZ z;QJ4){yrby|KRn-`KX&6jFj1L^waM7EqgwE!;KwZte&qQ##4M)M%o=m%zIHecHU$4 zV*6iQ;v;r{h}A1QFT~DUtln6eU%p?@-?vfL{t!EFv3jxd8><&PA3nXZ=NpUf+$@{@w0*VqSdLkFmT%uigAFs@K=dckFui>4EQ&mh6vj{#noG zPpn?Z-*(3j#tA?8{tK^f{=O6J^JvfK^%YT}CI9`!N>o3Y=$!#~G60KkKpG*m1||@p#||_se>|aWCn5KK^(zWB+4i^vn9}2geiIu^#&ytLGaR z+gsA~eEjiz#PZ^^7t1rpiBD$#*#2nepH5w$F%Pl)$Ljg!-8V15*{`zahu_bFpXk5S z=T-O-Dr4`z#p*H7tJJdE=IbK`221a=W#R7oWI^k9j;08S|o!X zz#Knoqe9DdNUo5~_oMiJ(;B27y8p!AkHLRGM&=sC#Ggw^;?LzH#h=SZTE8wIDgU{A zr2WI?BkjK~A1tN)*JUK_zb+qRZT}6OhjE>NQG~7^`FfwQ z8V082>LmL_zHWftXkAb7y!rZ%)#K|dwBzxhpHLag5Bgzy+;3U_RjH#}$?zb_H$b&*dYYkFKEL57`@?>>dwje;`TbqaZ@eEeFGbG}zVU&VQ2l71 zf5#d>h%fNPe=o%M2l?+cmURA>^zoj^gO}qAr$|i{g*%A z$Ft7!oA`4XO8mKe@cRd?#viQnIs(r7Bk-bSto>L$UN_j^+26ADV*OiE`6)VXo*zEX z^ZrmYKO!#R7tbHx4+!lyq3`SE{e$yYdjAG9VatjuW{F>ykQBczA1Ob$e1y)Yu6Co8 z@~_JYf4@uO*X1YeZ!RC{{NVDD&Sx$kAt~iwm!Xt@T|W5lvs3Ag~7iiD+ zdAw-Hdca`^WxMra{ewTT3@Lav$zAQCvzE}pSXWMZ}PnJ{?qFF&;0&D=zdh_{XiOi!`}y{@w*JA`FHt9 z@$d4H*1yX~%6~2&DgV2C@bwmdo;!4ZEA4+SpG7|pk{^9xc@eH1leK4``vR!e={PTK5{)Klu|9pOA zKY9K+K0^CH#}{8;hThK$z2Av(`O3tPj~R<6eiA=<2KfF>zHThOPVu|&SxNjPe)0?y zUEe8w^6ZVh*JYpQc)t1k$mdHw|MB@Q^!vYjKIHF{4l$m_?=sZtc|Og*%V&yzmyfjm zT|PRU|KJVhLBuWJ=NhRV?hAzM`Skcc0{musW$U4z#kJ)5T+;G?XkK|g^HaJ%hMBQt;>YD9#gEI!SX*DNccU+jwfx8Hm*%%mDH|9FM z|E2kN=Oe|x%ST%OE+4JtKUm{)t?xQ*qo4y4FMU4DjTp`kiJ!zzo&nx}c)uw-e)4^H;x*^L(EB6& z`BuJP!ha8meFS6U{hId^=%E~I{&9Tp`xo$=OCD!g`}bJmhsVwSF%O}5zn-9`gpfY%f-?UE?2X@d2K=Y}feFPwc$L>c!4$ ztRDO`$;~N)N$-g4` zn&@+%}iO!5y&{uar7?{>*;I$K2Llfs?T1|MExb~&lJA$-yL4mPP_H-J)0ZS0O0>F z;(z|PSf{AoGx7#%{yV6F-!FLnyU(ktAL4Ca)w@g*Mz_8;#isf?A1ekze3^BW_Ye4< zg1^Bi>I38XoCNPwfKukyTONmj# zj`F|h3*4;d{8~O(^*<(M{ykIRD~JR6_&Y}R?+|=5eQgT7K0@%kPr#29e3K^nKM-u| z9Db0#USIUzl*19P@0In`%umC89*6$HqF>3`G3&rQHkbKAEE*a3WWn?P1Md}lbEBva z;1#liF|I8BZvbT}(U)0o`LzptGr_@?X?B9PeN9TtbsjhKyO!$Yal=DCzwWO(d&|15 z=xbBJ|1+iEJa14DxReLhW+={MI~(cxK3Y3CRt9Fc!vlMIJ~x`WiYkQs-abt-@7)T_lyaL~C2*53R&Rn|DOf)5K>tR; z^PkxO{vnV4iGr^$Pds+R3o5Zro)iAC_KXVV+xU{t%Li!t&q-s0z&>em zMcz)oYMZ#9l4}_ow=#^T51a?PWgTyq)4+VA%vIH2f}fK`%KHg@l-v$}pyc|{x(EV;9WA0`F#lZWZATu**QSwH@}|^sLerHm&mCG+Enp337)qP{7%91 z=N9xkSNvID+nNISO_B%mc7Q+V!M{j2`u(Q#o8RAnUo850e~^bz=3J`3#5!p8Iv)LB zB3ASH8u+2&Z+?FTK2`8lb4~%@M({nG;6Ib~{iYm_9CM^#Z)}1eFWBT9j+bJ-=>s^* zrb+^iv>xMITMXp$An>mVp5OO@uPyVMKTiW+U-0#EP6FRR@ceZu@V`o2=J^A@mDtGh z1l;8OX1L+K8E*1z{xj*Y^IpNH$P*8&v10_lS=Q76-&tNSYXE%!-%;dd_%siGir~m8 z#uV(#kk|R^5a6c?zOGT!M;_k`pp?K*m)H5Y27ZR%`Md_)oEw|o@2>Ab2x> zE)jfhdEx>6j|h;DpFD2n5)a_!e4D>-2K+q1^Vf~QFAzK*SHLeOJak?Wb?32}O7E8V z&&N6P6Q7rm&rmwXL_j;<-}_b3>@WHJ&+Qj=8SBo>Res&|>A)_M{E&}B;5$up^8@e; z1h3>s*+E|$EWe)tH~r`H1MHkAcJk{bkDE1&2k^s0znTB1%l`cqC`$?bCj`%*4}f1H zc`v_T0{@8Mh!tZlkLT|<0l(N|XQtrI{4sblJL?I)aufg87ks5A_%y-u`zrj|&V%nD zcz$1i{*Hog)Wp8Qo7sP}N8jMh^vyXtf9^rQ24A5`zk7J>?CHVx61>^C4BpJ2{XF>o z9{lYd`vz}j{~dxiokg+6@s z*h^-Kf;kJ|(XTJe9-YsZMf3Y!YUg8;ck*$7{EZU*q6Cf-ILdwXMOApp=ON&`c<^04 z_--EjO7S~CpGC*tqke|QvD74Y9GLH8B@gEF2=J>s_|+c#44K3!AWurzF?c@j?5{e% zlQKW=z@H-=aWW`)ejb2dAb5UXKTu@zkl{M_34ohDBEKITZj|M5sLW3@f6TdO{kn$z z2Y#AH&`>#kei7Ym->pRBdUf3c4C)J+cZDI~9~NgiXz{Qu|m*H1B4(N4Cl z`eSG(TS9O9i8kuMDdO&BZNK3qRv$U#rCqJQglqk=+KRRm+Uk!fC*D&pvG<@~377g~ zt~L}J>JRh>&ac$qG4o~~o2a3GzGlbs=*AYu+4u47ZGX5n!#V)Rk7_-x0Z_l3HIu#c z)E4zuc2x47+0#~@uj7A6C;c^*&)l+TIQ`Ng=^+#*|47Fo}en+*fy6*!ATf{_NDL$f5(9~W#6V&oF_0KY3?v2;1BrpeKw=;gS0$G%QLmSNXx6WoUP@9T0WxX zV_H6=<%?QQd`A1%aw9FLX}O1%2WfeXmS<{tk(O6$Ia|vIwR}X&$FzJ#%NMnr_($zu z%Z;?0rsW=59;D?lTAr!pMOt3103P<-|cduCsR z^z+~SVOoUri`p-`9vAiaO#V{dn#E;7dOZYw+;3ub@4bMc=O}%1_bxDw=;VUW_ZmPf>r`t-q-A zUo<}39Y00ww_Cs6=P_RAq4>x5mBy}@qWZlstYyfbqWYu#{$1!iR@DC`O`qqh?06{3 z=hTAnSyaDhJ}GK{EAl@SpR6C^zg7LB{w(VH?dCINzv%g)sD9D-M0ifX3s2eU`sF-+ z0mk=iL*{Z410;vW7iy31{U)=+VyJzn|4@Bs{H?YR*$>r&2tNM+50(7B63b|x>{})h zKZuCtd?bDnKQ03cmpEQnM(eWkPw2dbetl)9+p}Mx^AYQhRF>bZs6V)U+4Ga^TLySN zune9O|IPVI{D6VPkIO`JJ{H&Y)#?4AQ~l$2r!e=S>%~^}mq$mQlI^eH(F5Fz7g~n& z+5U>uo<-L0VFi+l>a+j+ITteT{Pv)!!|#Bx9%QzU-|a#@%2v;7u;a@Qt=eDI+k+pJ zom%f>rT=suvoqmaFN-=qOL}~d_V_!UACXs3j`sM`FUn5!A9}wa{~NIIHD89>hw4N3 z!$aqz(D^20KXiWN&k5wmZeEAR7pf1PpF;H^|CeHiNp7`$h~LorJt2NV=kL(`hwO*O zA9_Cszh_Id4vV3BD312}Z#DnIZ{NP(s{K~m!$0471@)o%57qm|5Bs71L+yR>Qx-q) zGvo*Kxa9G%4EBN} zAB6gcpP_!B$0e_4mZ6{QTP6}eh=}HV`1rZSZPp-lx_*NOk6fTr{)MjJLf0pJKiVBt z`1-Ha>(@|z3+0v2^{3ZV_1Duao22W{zoAZ_U0RxF2mx<OXY;4SoJTR3GX;G`^63q4urTw>rL%|Dn&qGvxyS~-948;}Vh4aFARJ2%z z{_Z9;z7W5m>z;P^->Uzi@rCS%>O=N@^{vi-tL-`LHXxu?`>nPocUs<8Z()NZx4XX6 z*L|V!h2os(8WwrKV;PFczGY%@O*&49$NiKZMpF|Gp-8LAe%Qc*>A}q5Rt_zajoZ{)PAp z)q@t_{y$dg`T8Axp$z%oYWtA=cGZXSL#y?n{1Vzz&-vBQ>WvG3t^`ZVdec#GM z%P`FA1{Irxr#ljU`z?#k@W*Y&d1Yp7qx)(_+VR(tDv@Qnz6#p?I!h3~MPX*Lt~Dlm-e z0Th0Z(*s*WJ^Q8YhV`r)S+9<>S7ojrmiN~6H-Y>IzPZJFH??{V?fPu}INhj+>z}gY z9G1Jt{%5q`)jas7&GBJ-PuTXo)5tI2?62a(?eDPub!|fZoTc$I&f;B=w^CfkJ8b7} z8s~poy#_vxSAW?r#fR-3tMS2l&wB9xR=b!lm51$7eeZzk@2lm0wq*UT747&j?_F!F z?9uP-_Sl(1{IY+i=sc`!^%{8lq1LZNb`&4>dsSQC#qm_Les!%u?Kf0DQNN|9p5yC$ zYp++^^{PDVhss@RlD#*Q{CBti;r76}U&XsnUTpnn$P-#WY)|K<7xBUKMD@M5>G*u{ zq556R*zq*X7wobBz_o1fZwK2i7T(9RH@CAD) zyCxF9Xs`XEUDr}pulJoEe>AT(_=$YS=U4Qj^}W2`dg{A+tRG#v55m7*-?}3^U6VcI zg`ca~df4@ir{Nqy{h)rF#vMwpJ2y!NsCn!w z-ZkDcf2h}vd-eR#)jhs$u=j?A+x6xd*j;Pk{d(h9+he|&XY7l;_i0?|{QC63udjYM zZuOjre#b$^xm)E}dtGZ-9=-i4-{`*={pbxs#I3hI^x@|Xf%$^I+V|NVhyLN;pOoiV zzR@22!N17%!EuN3E8+)w=wHX-8+UIgAHy#6LU#F_wxyjP+`sU~5w25}uLghlTnf92 zBX9cJdDku4cYERp^`7${u8XmLPDq4U--Uaj|zQ|r5Q|MayV&JP-Q4SKg}eCc(LH^2JkS8?1&Y_N}d z-}#d2d-eX6*Uoa*UoS7P_q1pJwI2I?Lq9&Aux@dGO?mH~+&o`*@%`T|m1n+=C%oZ) z0qS);7&poW|2=xcaj>+@U&v1Hwav$e>(qw+_4?IYkLz|{JW#zi9-!yr6X$Q8?*>2l zIv+eM?p+7CZ?K-{oPzqz7G94$htlVtcYd@VTwgS_=ld2IAJ#dIv)6asfcqNAyT0`S zJ>=DZp4V@^KZ0?i^zQGTeFg297vQ}fvWYeU18oUB!EScD24C?@{}%pVso%{^$qKq+I#ua{u|aSweQ-V@+H-K`NDaF^A)vkSO=)*a|UpqJ@oozLO8;PsE|L+H^to9%V!b)eVYIePB8zpK6=hT9KWxxr7u8}8eoUgx2~ z9_EMd_i4Us$QODY2R{%uh%e-k;qmb~)Yo3m9cVx7C+?TXHIIG8@%{=*Uwg!@xBer#?lc~J zdJXXd|J5JVcfG~h^V*^N1r2$T>~`($i9_TgK1ZOv*26E94SvB6?tk!g0qk*pA-vZY zZ`!U`&utC;Ykk)#_02Q{e{=}hT;i)==%;nKD_g# z?NQ&mjVC@Zp6_?n7m}}^uAeQu-W#8=UtM_ry>D4~eb;Y2^?IM6!EfFtFwYNr@`d6! zKMj|-4%7G3!DmB%{C+$7Th7xTU)Moj@vb?Z@$x>W?Yj7LSFp$DAmF}rru$&S_-l`3cELB7IBx)FyTG{|zMqNv9h#TD@$1V2xZjEU4J$OC=V8A- zZs!yC1A%wjbd~AxG3$EC>UG=YmUUY(>(cj)_2Up(*Q=^G(e~S|esn93-5UShdfnE& ztkvt%&$o4JTy`(7?bZKob*#HbasA+X_ev`3A2@dF7jSm3qWG#>>O6Prxutt`#n;gC zjan-I-D_F7>kalm)4jIVucKu}%XMvu&l7d8r}+9>ZlL9cT5hD}##&C%auY3eKkVL2 z<;}Hxla@Na-CL^Mr{z>zjl(B#l*YB`e%Pw)@4(e zucCHzxi<8}c62#6=m7}%tIHnh4W))}0}dc$-&fD$fIXD2XIV%Es&VB(BeUmQpMrOp zI`gb(X?o}~UJLl@Yqk#gRnYpw=r?-^&yKx1?=9GqbTn+QDjhbnXXeKESCi5_&BN#4 zR$|ZCFwd%%Jl-jS$J*Ok?V0|3_KNtojoLG5)n~7Wf7|BxtBFlBZXPfEtCOb0`S{yj z{WErI@@!@g{>9jnV^)1WOn*LmMf}@Q?HT@j_KNuTX0c~{GtY`V%`w5O4f8Z>qv-nB zDQB2q~1Ku!}Q2YWH|Q5Ab;PR&zZH?;@;YEo~W=Hc`2ShZ*B ztMXi!e>JH$PxJ8EJ0a&^P4t@CgMTsOJu&B>&t4J!PEval#J6g|KhvLinul+^C+FY7|O*ViN85;O}0? zUhDi#%-O35h2!NpPS4|J-4s2KcjxR?J@(98#a<6i%Gs+0>=}RS&jp3Navwcv&!|@9 z+3I*F=j>HI_KJ*m<($1*z+TLFS5bRrjZ{4L3>UHYBUa1Vt9tBBQF}Eh&C@(gAI%=C z=j_!)q1k-EUd(vcS9^x@syt2JZ{<9`LC#)HY*jq=V$YKst3AU;m$z4ffATiK@OengW#i?^_lL~f z$F4VdJ7M_zQjvD8+LN~>x~gKw_)w8&tM)Fz;!JCb@h<}&o?9~GHV*I;O>>0m||E6r!zpHZgY5{vO{@pJ23_m7Mm9gIL$lI&f zF}ISh?i71w9A)`;SKeL;{@pG1szRNa-!l07Ox|9lb^h)Vdzjyb`Gb%vKPUDOe^tSo`B#L$ z`*QYbVy_}k_OA$k_vh>xTh06{!rudAubF?wUMznPioL4nn>MCw=3f#1KA*E!6MGeT zw!+^-IeW%dGyjb5vGMl>vS)0vf5u)cf7=daT{Y1+epTgZ_7ApKguiJyd$oYQ`lK0W z<)MWYa{q3ZvsV?o8Gl9m+dgNnCiW`wY&PE5{IWyNp0U-8KQp%2`Q4H1H5+dcdv7Lt z#z!8nu@@UJYl%H$qpD9cUOt}|nUA&Ap7Eh7&sOcNqxOs)pS>wkXXc|OrFoi%>A%^d zk{fSL6c*-ROgyif8*dr**2|68XAk3z@$b&>=kB-5U9qZ+x!L*3T))NGyIt%-)!b!k z)!rRy&%{_6_U;mU#+F%UW!Sr0?A63lS@u37_6*Nu*}F&VRmDFW@2$_r7bQH5t-3w= z$N0(dV&X6MdjBiZ+^n(sIxE56SJhrw{(VjDnV81Bv@+fyv1fd%`zM257=Lx8x+3P! zIN?6Nndh$rdk^RNE5Y8k^8A%x?*igaObR0Z%hT{>?mrjFe;2ENbvyD;tM+E9JhV{Cf4hi1<6GT7`DbDN)kM!c&7-bwUpoKpp69OwdvDA0SAxAg^8A%x@3f)Z z`$uALVe7XhOqr*7h-%Zv>3MrH85PlLmS1Aer)R3YdVeMOcUInB3I1Iv_J;Rg^^eb| zSid#l!aU8RJ|6qh`S+^4J@v1dy;%OP7JH^MGp{I{*^50-ej;zL1plrPdsXXNDgIrX zw^xFH*NMHF_*WKx*XQk(;NQ7f)@6LF$TOQ@-v=I^UxUfR#OL_&5(M&p{kfo!SMKBd zoV|)viOB`mTdHczj2GYY4}&#(jQ_gzZ?Ik|){Gn2-?V}8Z{kE#AurUB7OJtJxbXFI z?OmL+SCMXN@?`&vFLnQ<#KY%bCgU}mP_3>g|H|Ny|IpTsSCotqHRQ85&aqdmPe?2F zmKJx=t%;lZG|GI8*Yn2fa^BcL@YsBCb_;wHLd8yi4qvxv=rsx_|F>?6vOS zL29oaFD3Bz9>-qm{v9gzOsq)g$)k1t-sjkB-M;~~SJwO<;n-{4zZ1ls;jX^_mcZYM zj=k3XJ4x)B#Zi`jCp-39_wW5;uPXeNHNU4g_Tv2$7o3On$ARj?xXI?~S06%ZRbEaI z#60mZ@i0ODt4V2|=Hat9K5wt$x3`qos~b^6K6_nxd$Ovl(znmQ7<&`)_QY5-ds9pw z@~r7o3h#KA%G(pIs_3$R8yHNUrmiMW^YD%LeiM)Ss7Ptzob9b^FnQJ=0sbB!dlhNa z%-&MgT2>3#dn8-npEMa)ZDP;xw}L!t`jo;u-fz41##cp`{cC2={LZtej+uvVKH*@f z9(s#SSy^mG(tIGp3$S_hXrnbxhxk48Q2fbtO73GN5_!H}mV8dt;9uX5M`{gmsN9pS#WEv%KC% ztgpTpIgc#+=K5UH^Uc`>q~{y!`K0H|pYpj+=i!@A`TVN$@Xg7Ej@IZ4UGo0T(i4}O zuWjLhKxl#9L##iG9;;dL#xC1BrpeKw=;6NYewwm^)zHQz#b(>AH{f>YCiPKNpv9jNOyH~c_YKy5`Y*m@E4pVnHYOCqfjyZDM?RGd~ ztF4bXs&D#MM{c#%w%c!a?NyV%RLnhAm)GOv+v_o3s4}x}@EOV% z@Ld$2L->0HAD69}?RCBU+X@H-V>`Q0uLUr~G;!sjY}0O5a7 z{0zchRQyW9?e{2mXZI7nX8lG$cQ%jkEfrtx0N2l572llj0~Ozo@Z%IeiSYkc{2anR zs`w3r->mqT3BOK1lcu zia$#Dev1E$@WT~YbpLS!uu3|mhjyae~Ive6rb=OmxtpO?;-pg#Vdq=Oz}R#Z&AET z_ydaXNBEl8nO@OuO|`}N$1wyf`hE>(QZ_qzTMD!vWj_ba{^;g2f*eZrqq{3*icEB+GU z6U<>z_V;uC%k^h9#jhlMbH#5bysG%hhq`tSP<$uCk5l{%!p~8B9^tbTU*>(T{o53; z68@0lcN6}7#eYWlJi*O8_I%#XqkMe3{+MFkU=V(mJIw8OC&f1>ykGJC2tQi!lL$Xs z@k{-%3RPhN%xPH!1 zyoc}$6yKciYZTv$@Vga1n(!gTYlQzy@f!$#R`G`je?{@15#D1iU}U`W3Ex2R<&Jd6 zyS?Cs=eZABo_99Q0iVqNex#AZP{wc+0 z5&i|m?V}*?W@_vuMob8;`Wc9QGQ7Zk4$ z{sYCUg#S+QlL-H(;x)p%<(8S@?MlMeQvCabPgQ&#;cruXxszT04^e!3!cSKGXu{7` zd=}wXDSjK_cPRca;a^dFKH)!Be9HS>Kc7~7C&FJ={5ZmwU)l0@4&m!6emmjYD*h

xw^4_|FxeFvIodImP=3e^v3_ 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

i3L$741j5 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%0Dnv9xrS4JSY8eEyX;~tt`c6zs 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 None: ... + def update(self, data: Buffer) -> bytes: ... + def finalize(self) -> bytes: ... + +class ANSIX923PaddingContext(padding.PaddingContext): + def __init__(self, block_size: int) -> None: ... + def update(self, data: Buffer) -> bytes: ... + def finalize(self) -> bytes: ... + +class PKCS7UnpaddingContext(padding.PaddingContext): + def __init__(self, block_size: int) -> None: ... + def update(self, data: Buffer) -> bytes: ... + def finalize(self) -> bytes: ... + +class ANSIX923UnpaddingContext(padding.PaddingContext): + def __init__(self, block_size: int) -> None: ... + def update(self, data: Buffer) -> bytes: ... + def finalize(self) -> bytes: ... + +class Encoding: + PEM: typing.ClassVar[Encoding] + DER: typing.ClassVar[Encoding] + OpenSSH: typing.ClassVar[Encoding] + Raw: typing.ClassVar[Encoding] + X962: typing.ClassVar[Encoding] + SMIME: typing.ClassVar[Encoding] + +class PrivateFormat: + PKCS8: typing.ClassVar[PrivateFormat] + TraditionalOpenSSL: typing.ClassVar[PrivateFormat] + Raw: typing.ClassVar[PrivateFormat] + OpenSSH: typing.ClassVar[PrivateFormat] + PKCS12: typing.ClassVar[PrivateFormat] + def encryption_builder(self) -> KeySerializationEncryptionBuilder: ... + +class PublicFormat: + SubjectPublicKeyInfo: typing.ClassVar[PublicFormat] + PKCS1: typing.ClassVar[PublicFormat] + OpenSSH: typing.ClassVar[PublicFormat] + Raw: typing.ClassVar[PublicFormat] + CompressedPoint: typing.ClassVar[PublicFormat] + UncompressedPoint: typing.ClassVar[PublicFormat] + +class ParameterFormat: + PKCS3: typing.ClassVar[ParameterFormat] + +class ObjectIdentifier: + def __init__(self, value: str) -> None: ... + @property + def dotted_string(self) -> str: ... + @property + def _name(self) -> str: ... + +T = typing.TypeVar("T") diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/_openssl.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/_openssl.pyi new file mode 100644 index 0000000..3d4ea4e --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/_openssl.pyi @@ -0,0 +1,8 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +lib: typing.Any +ffi: typing.Any diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/asn1.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/asn1.pyi new file mode 100644 index 0000000..3b5f208 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/asn1.pyi @@ -0,0 +1,7 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +def decode_dss_signature(signature: bytes) -> tuple[int, int]: ... +def encode_dss_signature(r: int, s: int) -> bytes: ... +def parse_spki_for_data(data: bytes) -> bytes: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/declarative_asn1.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/declarative_asn1.pyi new file mode 100644 index 0000000..a4c0cb6 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/declarative_asn1.pyi @@ -0,0 +1,127 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import datetime +import typing + +def decode_der(cls: type, value: bytes) -> typing.Any: ... +def encode_der(value: typing.Any) -> bytes: ... +def non_root_python_to_rust(cls: type) -> Type: ... + +# Type is a Rust enum with tuple variants. For now, we express the type +# annotations like this: +class Type: + Sequence: typing.ClassVar[type] + SequenceOf: typing.ClassVar[type] + Set: typing.ClassVar[type] + SetOf: typing.ClassVar[type] + Option: typing.ClassVar[type] + Choice: typing.ClassVar[type] + PyBool: typing.ClassVar[type] + PyInt: typing.ClassVar[type] + PyBytes: typing.ClassVar[type] + PyStr: typing.ClassVar[type] + +class Annotation: + default: typing.Any | None + encoding: Encoding | None + size: Size | None + def __new__( + cls, + default: typing.Any | None = None, + encoding: Encoding | None = None, + size: Size | None = None, + ) -> Annotation: ... + def is_empty(self) -> bool: ... + +# Encoding is a Rust enum with tuple variants. For now, we express the type +# annotations like this: +class Encoding: + Implicit: typing.ClassVar[type] + Explicit: typing.ClassVar[type] + +class Size: + min: int + max: int | None + + def __new__(cls, min: int, max: int | None) -> Size: ... + @staticmethod + def exact(n: int) -> Size: ... + +class AnnotatedType: + inner: Type + annotation: Annotation + + def __new__(cls, inner: Type, annotation: Annotation) -> AnnotatedType: ... + +class AnnotatedTypeObject: + annotated_type: AnnotatedType + value: typing.Any + + def __new__( + cls, annotated_type: AnnotatedType, value: typing.Any + ) -> AnnotatedTypeObject: ... + +class Variant: + python_class: type + ann_type: AnnotatedType + tag_name: str | None + + def __new__( + cls, + python_class: type, + ann_type: AnnotatedType, + tag_name: str | None, + ) -> Variant: ... + +class PrintableString: + def __new__(cls, inner: str) -> PrintableString: ... + def __repr__(self) -> str: ... + def __eq__(self, other: object) -> bool: ... + def as_str(self) -> str: ... + +class IA5String: + def __new__(cls, inner: str) -> IA5String: ... + def __repr__(self) -> str: ... + def __eq__(self, other: object) -> bool: ... + def as_str(self) -> str: ... + +class UTCTime: + def __new__(cls, inner: datetime.datetime) -> UTCTime: ... + def __repr__(self) -> str: ... + def __eq__(self, other: object) -> bool: ... + def as_datetime(self) -> datetime.datetime: ... + +class GeneralizedTime: + def __new__(cls, inner: datetime.datetime) -> GeneralizedTime: ... + def __repr__(self) -> str: ... + def __eq__(self, other: object) -> bool: ... + def as_datetime(self) -> datetime.datetime: ... + +class BitString: + def __new__(cls, data: bytes, padding_bits: int) -> BitString: ... + def __repr__(self) -> str: ... + def __eq__(self, other: object) -> bool: ... + def as_bytes(self) -> bytes: ... + def padding_bits(self) -> int: ... + +class Tlv: + @property + def tag_bytes(self) -> bytes: ... + @property + def data(self) -> memoryview: ... + def parse(self, cls: type): ... + +T = typing.TypeVar("T") + +class SetOf(typing.Generic[T]): + def __new__(cls, inner: list[T]) -> SetOf[T]: ... + def as_list(self) -> list[T]: ... + def __eq__(self, other: object) -> bool: ... + def __repr__(self) -> str: ... + +class Null: + def __new__(cls) -> Null: ... + def __repr__(self) -> str: ... + def __eq__(self, other: object) -> bool: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/exceptions.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/exceptions.pyi new file mode 100644 index 0000000..09f46b1 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/exceptions.pyi @@ -0,0 +1,17 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +class _Reasons: + BACKEND_MISSING_INTERFACE: _Reasons + UNSUPPORTED_HASH: _Reasons + UNSUPPORTED_CIPHER: _Reasons + UNSUPPORTED_PADDING: _Reasons + UNSUPPORTED_MGF: _Reasons + UNSUPPORTED_PUBLIC_KEY_ALGORITHM: _Reasons + UNSUPPORTED_ELLIPTIC_CURVE: _Reasons + UNSUPPORTED_SERIALIZATION: _Reasons + UNSUPPORTED_X509: _Reasons + UNSUPPORTED_EXCHANGE_ALGORITHM: _Reasons + UNSUPPORTED_DIFFIE_HELLMAN: _Reasons + UNSUPPORTED_MAC: _Reasons diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/ocsp.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/ocsp.pyi new file mode 100644 index 0000000..103e96c --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/ocsp.pyi @@ -0,0 +1,117 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import datetime +from collections.abc import Iterator + +from cryptography import x509 +from cryptography.hazmat.primitives import hashes, serialization +from cryptography.hazmat.primitives.asymmetric.types import PrivateKeyTypes +from cryptography.x509 import ocsp + +class OCSPRequest: + @property + def issuer_key_hash(self) -> bytes: ... + @property + def issuer_name_hash(self) -> bytes: ... + @property + def hash_algorithm(self) -> hashes.HashAlgorithm: ... + @property + def serial_number(self) -> int: ... + def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... + @property + def extensions(self) -> x509.Extensions: ... + +class OCSPResponse: + @property + def responses(self) -> Iterator[OCSPSingleResponse]: ... + @property + def response_status(self) -> ocsp.OCSPResponseStatus: ... + @property + def signature_algorithm_oid(self) -> x509.ObjectIdentifier: ... + @property + def signature_hash_algorithm( + self, + ) -> hashes.HashAlgorithm | None: ... + @property + def signature(self) -> bytes: ... + @property + def tbs_response_bytes(self) -> bytes: ... + @property + def certificates(self) -> list[x509.Certificate]: ... + @property + def responder_key_hash(self) -> bytes | None: ... + @property + def responder_name(self) -> x509.Name | None: ... + @property + def produced_at(self) -> datetime.datetime: ... + @property + def produced_at_utc(self) -> datetime.datetime: ... + @property + def certificate_status(self) -> ocsp.OCSPCertStatus: ... + @property + def revocation_time(self) -> datetime.datetime | None: ... + @property + def revocation_time_utc(self) -> datetime.datetime | None: ... + @property + def revocation_reason(self) -> x509.ReasonFlags | None: ... + @property + def this_update(self) -> datetime.datetime: ... + @property + def this_update_utc(self) -> datetime.datetime: ... + @property + def next_update(self) -> datetime.datetime | None: ... + @property + def next_update_utc(self) -> datetime.datetime | None: ... + @property + def issuer_key_hash(self) -> bytes: ... + @property + def issuer_name_hash(self) -> bytes: ... + @property + def hash_algorithm(self) -> hashes.HashAlgorithm: ... + @property + def serial_number(self) -> int: ... + @property + def extensions(self) -> x509.Extensions: ... + @property + def single_extensions(self) -> x509.Extensions: ... + def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... + +class OCSPSingleResponse: + @property + def certificate_status(self) -> ocsp.OCSPCertStatus: ... + @property + def revocation_time(self) -> datetime.datetime | None: ... + @property + def revocation_time_utc(self) -> datetime.datetime | None: ... + @property + def revocation_reason(self) -> x509.ReasonFlags | None: ... + @property + def this_update(self) -> datetime.datetime: ... + @property + def this_update_utc(self) -> datetime.datetime: ... + @property + def next_update(self) -> datetime.datetime | None: ... + @property + def next_update_utc(self) -> datetime.datetime | None: ... + @property + def issuer_key_hash(self) -> bytes: ... + @property + def issuer_name_hash(self) -> bytes: ... + @property + def hash_algorithm(self) -> hashes.HashAlgorithm: ... + @property + def serial_number(self) -> int: ... + +def load_der_ocsp_request(data: bytes) -> ocsp.OCSPRequest: ... +def load_der_ocsp_response(data: bytes) -> ocsp.OCSPResponse: ... +def create_ocsp_request( + builder: ocsp.OCSPRequestBuilder, +) -> ocsp.OCSPRequest: ... +def create_ocsp_response( + status: ocsp.OCSPResponseStatus, + builder: ocsp.OCSPResponseBuilder | None, + private_key: PrivateKeyTypes | None, + hash_algorithm: hashes.HashAlgorithm | None, +) -> ocsp.OCSPResponse: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi new file mode 100644 index 0000000..404a300 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi @@ -0,0 +1,80 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.bindings._rust.openssl import ( + aead, + ciphers, + cmac, + dh, + dsa, + ec, + ed448, + ed25519, + hashes, + hmac, + hpke, + kdf, + keys, + mldsa, + mlkem, + poly1305, + rsa, + x448, + x25519, +) + +__all__ = [ + "aead", + "ciphers", + "cmac", + "dh", + "dsa", + "ec", + "ed448", + "ed25519", + "hashes", + "hmac", + "hpke", + "kdf", + "keys", + "mldsa", + "mlkem", + "openssl_version", + "openssl_version_text", + "poly1305", + "raise_openssl_error", + "rsa", + "x448", + "x25519", +] + +CRYPTOGRAPHY_IS_LIBRESSL: bool +CRYPTOGRAPHY_IS_BORINGSSL: bool +CRYPTOGRAPHY_IS_AWSLC: bool +CRYPTOGRAPHY_OPENSSL_309_OR_GREATER: bool +CRYPTOGRAPHY_OPENSSL_320_OR_GREATER: bool +CRYPTOGRAPHY_OPENSSL_330_OR_GREATER: bool +CRYPTOGRAPHY_OPENSSL_350_OR_GREATER: bool + +class Providers: ... + +_legacy_provider_loaded: bool +_providers: Providers + +def openssl_version() -> int: ... +def openssl_version_text() -> str: ... +def raise_openssl_error() -> typing.NoReturn: ... +def capture_error_stack() -> list[OpenSSLError]: ... +def is_fips_enabled() -> bool: ... +def enable_fips(providers: Providers) -> None: ... + +class OpenSSLError: + @property + def lib(self) -> int: ... + @property + def reason(self) -> int: ... + @property + def reason_text(self) -> bytes: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/aead.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/aead.pyi new file mode 100644 index 0000000..eb44608 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/aead.pyi @@ -0,0 +1,189 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from collections.abc import Sequence + +from cryptography.utils import Buffer + +class AESGCM: + def __init__(self, key: Buffer) -> None: ... + @staticmethod + def generate_key(bit_length: int) -> bytes: ... + def encrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def decrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def encrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + def decrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + +class ChaCha20Poly1305: + def __init__(self, key: Buffer) -> None: ... + @staticmethod + def generate_key() -> bytes: ... + def encrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def encrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + def decrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def decrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + +class AESCCM: + def __init__(self, key: Buffer, tag_length: int = 16) -> None: ... + @staticmethod + def generate_key(bit_length: int) -> bytes: ... + def encrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def encrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + def decrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def decrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + +class AESSIV: + def __init__(self, key: Buffer) -> None: ... + @staticmethod + def generate_key(bit_length: int) -> bytes: ... + def encrypt( + self, + data: Buffer, + associated_data: Sequence[Buffer] | None, + ) -> bytes: ... + def encrypt_into( + self, + data: Buffer, + associated_data: Sequence[Buffer] | None, + buf: Buffer, + ) -> int: ... + def decrypt( + self, + data: Buffer, + associated_data: Sequence[Buffer] | None, + ) -> bytes: ... + def decrypt_into( + self, + data: Buffer, + associated_data: Sequence[Buffer] | None, + buf: Buffer, + ) -> int: ... + +class AESOCB3: + def __init__(self, key: Buffer) -> None: ... + @staticmethod + def generate_key(bit_length: int) -> bytes: ... + def encrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def encrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + def decrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def decrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + +class AESGCMSIV: + def __init__(self, key: Buffer) -> None: ... + @staticmethod + def generate_key(bit_length: int) -> bytes: ... + def encrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def encrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... + def decrypt( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + ) -> bytes: ... + def decrypt_into( + self, + nonce: Buffer, + data: Buffer, + associated_data: Buffer | None, + buf: Buffer, + ) -> int: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi new file mode 100644 index 0000000..a48fb01 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi @@ -0,0 +1,38 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives import ciphers +from cryptography.hazmat.primitives.ciphers import modes + +@typing.overload +def create_encryption_ctx( + algorithm: ciphers.CipherAlgorithm, mode: modes.ModeWithAuthenticationTag +) -> ciphers.AEADEncryptionContext: ... +@typing.overload +def create_encryption_ctx( + algorithm: ciphers.CipherAlgorithm, mode: modes.Mode | None +) -> ciphers.CipherContext: ... +@typing.overload +def create_decryption_ctx( + algorithm: ciphers.CipherAlgorithm, mode: modes.ModeWithAuthenticationTag +) -> ciphers.AEADDecryptionContext: ... +@typing.overload +def create_decryption_ctx( + algorithm: ciphers.CipherAlgorithm, mode: modes.Mode | None +) -> ciphers.CipherContext: ... +def cipher_supported( + algorithm: ciphers.CipherAlgorithm, mode: modes.Mode +) -> bool: ... +def _advance( + ctx: ciphers.AEADEncryptionContext | ciphers.AEADDecryptionContext, n: int +) -> None: ... +def _advance_aad( + ctx: ciphers.AEADEncryptionContext | ciphers.AEADDecryptionContext, n: int +) -> None: ... + +class CipherContext: ... +class AEADEncryptionContext: ... +class AEADDecryptionContext: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi new file mode 100644 index 0000000..9c03508 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi @@ -0,0 +1,18 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives import ciphers + +class CMAC: + def __init__( + self, + algorithm: ciphers.BlockCipherAlgorithm, + backend: typing.Any = None, + ) -> None: ... + def update(self, data: bytes) -> None: ... + def finalize(self) -> bytes: ... + def verify(self, signature: bytes) -> None: ... + def copy(self) -> CMAC: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/dh.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/dh.pyi new file mode 100644 index 0000000..08733d7 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/dh.pyi @@ -0,0 +1,51 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives.asymmetric import dh + +MIN_MODULUS_SIZE: int + +class DHPrivateKey: ... +class DHPublicKey: ... +class DHParameters: ... + +class DHPrivateNumbers: + def __init__(self, x: int, public_numbers: DHPublicNumbers) -> None: ... + def private_key(self, backend: typing.Any = None) -> dh.DHPrivateKey: ... + @property + def x(self) -> int: ... + @property + def public_numbers(self) -> DHPublicNumbers: ... + +class DHPublicNumbers: + def __init__( + self, y: int, parameter_numbers: DHParameterNumbers + ) -> None: ... + def public_key(self, backend: typing.Any = None) -> dh.DHPublicKey: ... + @property + def y(self) -> int: ... + @property + def parameter_numbers(self) -> DHParameterNumbers: ... + +class DHParameterNumbers: + def __init__(self, p: int, g: int, q: int | None = None) -> None: ... + def parameters(self, backend: typing.Any = None) -> dh.DHParameters: ... + @property + def p(self) -> int: ... + @property + def g(self) -> int: ... + @property + def q(self) -> int | None: ... + +def generate_parameters( + generator: int, key_size: int, backend: typing.Any = None +) -> dh.DHParameters: ... +def from_pem_parameters( + data: bytes, backend: typing.Any = None +) -> dh.DHParameters: ... +def from_der_parameters( + data: bytes, backend: typing.Any = None +) -> dh.DHParameters: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi new file mode 100644 index 0000000..0922a4c --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi @@ -0,0 +1,41 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives.asymmetric import dsa + +class DSAPrivateKey: ... +class DSAPublicKey: ... +class DSAParameters: ... + +class DSAPrivateNumbers: + def __init__(self, x: int, public_numbers: DSAPublicNumbers) -> None: ... + @property + def x(self) -> int: ... + @property + def public_numbers(self) -> DSAPublicNumbers: ... + def private_key(self, backend: typing.Any = None) -> dsa.DSAPrivateKey: ... + +class DSAPublicNumbers: + def __init__( + self, y: int, parameter_numbers: DSAParameterNumbers + ) -> None: ... + @property + def y(self) -> int: ... + @property + def parameter_numbers(self) -> DSAParameterNumbers: ... + def public_key(self, backend: typing.Any = None) -> dsa.DSAPublicKey: ... + +class DSAParameterNumbers: + def __init__(self, p: int, q: int, g: int) -> None: ... + @property + def p(self) -> int: ... + @property + def q(self) -> int: ... + @property + def g(self) -> int: ... + def parameters(self, backend: typing.Any = None) -> dsa.DSAParameters: ... + +def generate_parameters(key_size: int) -> dsa.DSAParameters: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/ec.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/ec.pyi new file mode 100644 index 0000000..5c3b7bf --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/ec.pyi @@ -0,0 +1,52 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives.asymmetric import ec + +class ECPrivateKey: ... +class ECPublicKey: ... + +class EllipticCurvePrivateNumbers: + def __init__( + self, private_value: int, public_numbers: EllipticCurvePublicNumbers + ) -> None: ... + def private_key( + self, backend: typing.Any = None + ) -> ec.EllipticCurvePrivateKey: ... + @property + def private_value(self) -> int: ... + @property + def public_numbers(self) -> EllipticCurvePublicNumbers: ... + +class EllipticCurvePublicNumbers: + def __init__(self, x: int, y: int, curve: ec.EllipticCurve) -> None: ... + def public_key( + self, backend: typing.Any = None + ) -> ec.EllipticCurvePublicKey: ... + @property + def x(self) -> int: ... + @property + def y(self) -> int: ... + @property + def curve(self) -> ec.EllipticCurve: ... + def __eq__(self, other: object) -> bool: ... + +def curve_supported(curve: ec.EllipticCurve) -> bool: ... +def generate_private_key( + curve: ec.EllipticCurve, backend: typing.Any = None +) -> ec.EllipticCurvePrivateKey: ... +def from_private_numbers( + numbers: ec.EllipticCurvePrivateNumbers, +) -> ec.EllipticCurvePrivateKey: ... +def from_public_numbers( + numbers: ec.EllipticCurvePublicNumbers, +) -> ec.EllipticCurvePublicKey: ... +def from_public_bytes( + curve: ec.EllipticCurve, data: bytes +) -> ec.EllipticCurvePublicKey: ... +def derive_private_key( + private_value: int, curve: ec.EllipticCurve +) -> ec.EllipticCurvePrivateKey: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi new file mode 100644 index 0000000..f85b3d1 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import ed25519 +from cryptography.utils import Buffer + +class Ed25519PrivateKey: ... +class Ed25519PublicKey: ... + +def generate_key() -> ed25519.Ed25519PrivateKey: ... +def from_private_bytes(data: Buffer) -> ed25519.Ed25519PrivateKey: ... +def from_public_bytes(data: bytes) -> ed25519.Ed25519PublicKey: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi new file mode 100644 index 0000000..c8ca0ec --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import ed448 +from cryptography.utils import Buffer + +class Ed448PrivateKey: ... +class Ed448PublicKey: ... + +def generate_key() -> ed448.Ed448PrivateKey: ... +def from_private_bytes(data: Buffer) -> ed448.Ed448PrivateKey: ... +def from_public_bytes(data: bytes) -> ed448.Ed448PublicKey: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi new file mode 100644 index 0000000..106b531 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi @@ -0,0 +1,30 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives import hashes +from cryptography.utils import Buffer + +class Hash(hashes.HashContext): + def __init__( + self, algorithm: hashes.HashAlgorithm, backend: typing.Any = None + ) -> None: ... + @property + def algorithm(self) -> hashes.HashAlgorithm: ... + def update(self, data: Buffer) -> None: ... + def finalize(self) -> bytes: ... + def copy(self) -> Hash: ... + @staticmethod + def hash(algorithm: hashes.HashAlgorithm, data: Buffer) -> bytes: ... + +def hash_supported(algorithm: hashes.HashAlgorithm) -> bool: ... + +class XOFHash: + def __init__(self, algorithm: hashes.ExtendableOutputFunction) -> None: ... + @property + def algorithm(self) -> hashes.ExtendableOutputFunction: ... + def update(self, data: Buffer) -> None: ... + def squeeze(self, length: int) -> bytes: ... + def copy(self) -> XOFHash: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi new file mode 100644 index 0000000..3883d1b --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi @@ -0,0 +1,22 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives import hashes +from cryptography.utils import Buffer + +class HMAC(hashes.HashContext): + def __init__( + self, + key: Buffer, + algorithm: hashes.HashAlgorithm, + backend: typing.Any = None, + ) -> None: ... + @property + def algorithm(self) -> hashes.HashAlgorithm: ... + def update(self, data: Buffer) -> None: ... + def finalize(self) -> bytes: ... + def verify(self, signature: bytes) -> None: ... + def copy(self) -> HMAC: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/hpke.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/hpke.pyi new file mode 100644 index 0000000..a9d8a11 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/hpke.pyi @@ -0,0 +1,108 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import ec, mlkem, x25519 +from cryptography.utils import Buffer + +class KEM: + X25519: KEM + P256: KEM + P384: KEM + P521: KEM + MLKEM768: KEM + MLKEM1024: KEM + MLKEM768_X25519: KEM + MLKEM1024_P384: KEM + +class KDF: + HKDF_SHA256: KDF + HKDF_SHA384: KDF + HKDF_SHA512: KDF + SHAKE128: KDF + SHAKE256: KDF + +class AEAD: + AES_128_GCM: AEAD + AES_256_GCM: AEAD + CHACHA20_POLY1305: AEAD + +class MLKEM768X25519PrivateKey: + def __init__( + self, + mlkem_key: mlkem.MLKEM768PrivateKey, + x25519_key: x25519.X25519PrivateKey, + ) -> None: ... + def public_key(self) -> MLKEM768X25519PublicKey: ... + +class MLKEM768X25519PublicKey: + def __init__( + self, + mlkem_key: mlkem.MLKEM768PublicKey, + x25519_key: x25519.X25519PublicKey, + ) -> None: ... + +class MLKEM1024P384PrivateKey: + def __init__( + self, + mlkem_key: mlkem.MLKEM1024PrivateKey, + p384_key: ec.EllipticCurvePrivateKey, + ) -> None: ... + def public_key(self) -> MLKEM1024P384PublicKey: ... + +class MLKEM1024P384PublicKey: + def __init__( + self, + mlkem_key: mlkem.MLKEM1024PublicKey, + p384_key: ec.EllipticCurvePublicKey, + ) -> None: ... + +class Suite: + def __init__(self, kem: KEM, kdf: KDF, aead: AEAD) -> None: ... + def encrypt( + self, + plaintext: Buffer, + public_key: x25519.X25519PublicKey + | ec.EllipticCurvePublicKey + | mlkem.MLKEM768PublicKey + | mlkem.MLKEM1024PublicKey + | MLKEM768X25519PublicKey + | MLKEM1024P384PublicKey, + info: Buffer | None = None, + ) -> bytes: ... + def decrypt( + self, + ciphertext: Buffer, + private_key: x25519.X25519PrivateKey + | ec.EllipticCurvePrivateKey + | mlkem.MLKEM768PrivateKey + | mlkem.MLKEM1024PrivateKey + | MLKEM768X25519PrivateKey + | MLKEM1024P384PrivateKey, + info: Buffer | None = None, + ) -> bytes: ... + +def _encrypt_with_aad( + suite: Suite, + plaintext: Buffer, + public_key: x25519.X25519PublicKey + | ec.EllipticCurvePublicKey + | mlkem.MLKEM768PublicKey + | mlkem.MLKEM1024PublicKey + | MLKEM768X25519PublicKey + | MLKEM1024P384PublicKey, + info: Buffer | None = None, + aad: Buffer | None = None, +) -> bytes: ... +def _decrypt_with_aad( + suite: Suite, + ciphertext: Buffer, + private_key: x25519.X25519PrivateKey + | ec.EllipticCurvePrivateKey + | mlkem.MLKEM768PrivateKey + | mlkem.MLKEM1024PrivateKey + | MLKEM768X25519PrivateKey + | MLKEM1024P384PrivateKey, + info: Buffer | None = None, + aad: Buffer | None = None, +) -> bytes: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi new file mode 100644 index 0000000..bb37b96 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi @@ -0,0 +1,205 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives.hashes import HashAlgorithm +from cryptography.hazmat.primitives.kdf.kbkdf import CounterLocation, Mode +from cryptography.utils import Buffer + +class PBKDF2HMAC: + def __init__( + self, + algorithm: HashAlgorithm, + length: int, + salt: bytes, + iterations: int, + backend: typing.Any = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class Scrypt: + def __init__( + self, + salt: bytes, + length: int, + n: int, + r: int, + p: int, + backend: typing.Any = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class Argon2d: + def __init__( + self, + *, + salt: bytes, + length: int, + iterations: int, + lanes: int, + memory_cost: int, + ad: bytes | None = None, + secret: bytes | None = None, + ) -> None: ... + def derive(self, key_material: bytes) -> bytes: ... + def derive_into(self, key_material: bytes, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + def derive_phc_encoded(self, key_material: bytes) -> str: ... + @classmethod + def verify_phc_encoded( + cls, key_material: bytes, phc_encoded: str, secret: bytes | None = None + ) -> None: ... + +class Argon2i: + def __init__( + self, + *, + salt: bytes, + length: int, + iterations: int, + lanes: int, + memory_cost: int, + ad: bytes | None = None, + secret: bytes | None = None, + ) -> None: ... + def derive(self, key_material: bytes) -> bytes: ... + def derive_into(self, key_material: bytes, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + def derive_phc_encoded(self, key_material: bytes) -> str: ... + @classmethod + def verify_phc_encoded( + cls, key_material: bytes, phc_encoded: str, secret: bytes | None = None + ) -> None: ... + +class Argon2id: + def __init__( + self, + *, + salt: bytes, + length: int, + iterations: int, + lanes: int, + memory_cost: int, + ad: bytes | None = None, + secret: bytes | None = None, + ) -> None: ... + def derive(self, key_material: bytes) -> bytes: ... + def derive_into(self, key_material: bytes, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + def derive_phc_encoded(self, key_material: bytes) -> str: ... + @classmethod + def verify_phc_encoded( + cls, key_material: bytes, phc_encoded: str, secret: bytes | None = None + ) -> None: ... + +class HKDF: + def __init__( + self, + algorithm: HashAlgorithm, + length: int, + salt: bytes | None, + info: bytes | None, + backend: typing.Any = None, + ): ... + @staticmethod + def extract( + algorithm: HashAlgorithm, salt: bytes | None, key_material: Buffer + ) -> bytes: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class HKDFExpand: + def __init__( + self, + algorithm: HashAlgorithm, + length: int, + info: bytes | None, + backend: typing.Any = None, + ): ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class X963KDF: + def __init__( + self, + algorithm: HashAlgorithm, + length: int, + sharedinfo: bytes | None, + backend: typing.Any = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class ConcatKDFHash: + def __init__( + self, + algorithm: HashAlgorithm, + length: int, + otherinfo: bytes | None, + backend: typing.Any = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class ConcatKDFHMAC: + def __init__( + self, + algorithm: HashAlgorithm, + length: int, + salt: bytes | None, + otherinfo: bytes | None, + backend: typing.Any = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class KBKDFHMAC: + def __init__( + self, + algorithm: HashAlgorithm, + mode: Mode, + length: int, + rlen: int, + llen: int | None, + location: CounterLocation, + label: bytes | None, + context: bytes | None, + fixed: bytes | None, + backend: typing.Any = None, + *, + break_location: int | None = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... + +class KBKDFCMAC: + def __init__( + self, + algorithm: typing.Any, + mode: Mode, + length: int, + rlen: int, + llen: int | None, + location: CounterLocation, + label: bytes | None, + context: bytes | None, + fixed: bytes | None, + backend: typing.Any = None, + *, + break_location: int | None = None, + ) -> None: ... + def derive(self, key_material: Buffer) -> bytes: ... + def derive_into(self, key_material: Buffer, buffer: Buffer) -> int: ... + def verify(self, key_material: bytes, expected_key: bytes) -> None: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/keys.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/keys.pyi new file mode 100644 index 0000000..404057e --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/keys.pyi @@ -0,0 +1,34 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives.asymmetric.types import ( + PrivateKeyTypes, + PublicKeyTypes, +) +from cryptography.utils import Buffer + +def load_der_private_key( + data: Buffer, + password: bytes | None, + backend: typing.Any = None, + *, + unsafe_skip_rsa_key_validation: bool = False, +) -> PrivateKeyTypes: ... +def load_pem_private_key( + data: Buffer, + password: bytes | None, + backend: typing.Any = None, + *, + unsafe_skip_rsa_key_validation: bool = False, +) -> PrivateKeyTypes: ... +def load_der_public_key( + data: bytes, + backend: typing.Any = None, +) -> PublicKeyTypes: ... +def load_pem_public_key( + data: bytes, + backend: typing.Any = None, +) -> PublicKeyTypes: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/mldsa.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/mldsa.pyi new file mode 100644 index 0000000..232469a --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/mldsa.pyi @@ -0,0 +1,23 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import mldsa +from cryptography.utils import Buffer + +class MLDSA44PrivateKey: ... +class MLDSA44PublicKey: ... +class MLDSA65PrivateKey: ... +class MLDSA65PublicKey: ... +class MLDSA87PrivateKey: ... +class MLDSA87PublicKey: ... + +def generate_mldsa44_key() -> mldsa.MLDSA44PrivateKey: ... +def from_mldsa44_public_bytes(data: bytes) -> mldsa.MLDSA44PublicKey: ... +def from_mldsa44_seed_bytes(data: Buffer) -> mldsa.MLDSA44PrivateKey: ... +def generate_mldsa65_key() -> mldsa.MLDSA65PrivateKey: ... +def from_mldsa65_public_bytes(data: bytes) -> mldsa.MLDSA65PublicKey: ... +def from_mldsa65_seed_bytes(data: Buffer) -> mldsa.MLDSA65PrivateKey: ... +def generate_mldsa87_key() -> mldsa.MLDSA87PrivateKey: ... +def from_mldsa87_public_bytes(data: bytes) -> mldsa.MLDSA87PublicKey: ... +def from_mldsa87_seed_bytes(data: Buffer) -> mldsa.MLDSA87PrivateKey: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/mlkem.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/mlkem.pyi new file mode 100644 index 0000000..768a340 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/mlkem.pyi @@ -0,0 +1,18 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import mlkem +from cryptography.utils import Buffer + +class MLKEM768PrivateKey: ... +class MLKEM768PublicKey: ... +class MLKEM1024PrivateKey: ... +class MLKEM1024PublicKey: ... + +def generate_mlkem768_key() -> mlkem.MLKEM768PrivateKey: ... +def from_mlkem768_seed_bytes(data: Buffer) -> mlkem.MLKEM768PrivateKey: ... +def from_mlkem768_public_bytes(data: Buffer) -> mlkem.MLKEM768PublicKey: ... +def generate_mlkem1024_key() -> mlkem.MLKEM1024PrivateKey: ... +def from_mlkem1024_seed_bytes(data: Buffer) -> mlkem.MLKEM1024PrivateKey: ... +def from_mlkem1024_public_bytes(data: Buffer) -> mlkem.MLKEM1024PublicKey: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi new file mode 100644 index 0000000..45a2a39 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi @@ -0,0 +1,15 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.utils import Buffer + +class Poly1305: + def __init__(self, key: Buffer) -> None: ... + @staticmethod + def generate_tag(key: Buffer, data: Buffer) -> bytes: ... + @staticmethod + def verify_tag(key: Buffer, data: Buffer, tag: bytes) -> None: ... + def update(self, data: Buffer) -> None: ... + def finalize(self) -> bytes: ... + def verify(self, tag: bytes) -> None: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi new file mode 100644 index 0000000..ef7752d --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi @@ -0,0 +1,55 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing + +from cryptography.hazmat.primitives.asymmetric import rsa + +class RSAPrivateKey: ... +class RSAPublicKey: ... + +class RSAPrivateNumbers: + def __init__( + self, + p: int, + q: int, + d: int, + dmp1: int, + dmq1: int, + iqmp: int, + public_numbers: RSAPublicNumbers, + ) -> None: ... + @property + def p(self) -> int: ... + @property + def q(self) -> int: ... + @property + def d(self) -> int: ... + @property + def dmp1(self) -> int: ... + @property + def dmq1(self) -> int: ... + @property + def iqmp(self) -> int: ... + @property + def public_numbers(self) -> RSAPublicNumbers: ... + def private_key( + self, + backend: typing.Any = None, + *, + unsafe_skip_rsa_key_validation: bool = False, + ) -> rsa.RSAPrivateKey: ... + +class RSAPublicNumbers: + def __init__(self, e: int, n: int) -> None: ... + @property + def n(self) -> int: ... + @property + def e(self) -> int: ... + def public_key(self, backend: typing.Any = None) -> rsa.RSAPublicKey: ... + +def generate_private_key( + public_exponent: int, + key_size: int, +) -> rsa.RSAPrivateKey: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi new file mode 100644 index 0000000..38d2add --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import x25519 +from cryptography.utils import Buffer + +class X25519PrivateKey: ... +class X25519PublicKey: ... + +def generate_key() -> x25519.X25519PrivateKey: ... +def from_private_bytes(data: Buffer) -> x25519.X25519PrivateKey: ... +def from_public_bytes(data: bytes) -> x25519.X25519PublicKey: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/x448.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/x448.pyi new file mode 100644 index 0000000..3ac0980 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/openssl/x448.pyi @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.primitives.asymmetric import x448 +from cryptography.utils import Buffer + +class X448PrivateKey: ... +class X448PublicKey: ... + +def generate_key() -> x448.X448PrivateKey: ... +def from_private_bytes(data: Buffer) -> x448.X448PrivateKey: ... +def from_public_bytes(data: bytes) -> x448.X448PublicKey: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/pkcs12.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/pkcs12.pyi new file mode 100644 index 0000000..b25becb --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/pkcs12.pyi @@ -0,0 +1,52 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import typing +from collections.abc import Iterable + +from cryptography import x509 +from cryptography.hazmat.primitives.asymmetric.types import PrivateKeyTypes +from cryptography.hazmat.primitives.serialization import ( + KeySerializationEncryption, +) +from cryptography.hazmat.primitives.serialization.pkcs12 import ( + PKCS12KeyAndCertificates, + PKCS12PrivateKeyTypes, +) +from cryptography.utils import Buffer + +class PKCS12Certificate: + def __init__( + self, cert: x509.Certificate, friendly_name: bytes | None + ) -> None: ... + @property + def friendly_name(self) -> bytes | None: ... + @property + def certificate(self) -> x509.Certificate: ... + +def load_key_and_certificates( + data: Buffer, + password: Buffer | None, + backend: typing.Any = None, +) -> tuple[ + PrivateKeyTypes | None, + x509.Certificate | None, + list[x509.Certificate], +]: ... +def load_pkcs12( + data: bytes, + password: bytes | None, + backend: typing.Any = None, +) -> PKCS12KeyAndCertificates: ... +def serialize_java_truststore( + certs: Iterable[PKCS12Certificate], + encryption_algorithm: KeySerializationEncryption, +) -> bytes: ... +def serialize_key_and_certificates( + name: bytes | None, + key: PKCS12PrivateKeyTypes | None, + cert: x509.Certificate | None, + cas: Iterable[x509.Certificate | PKCS12Certificate] | None, + encryption_algorithm: KeySerializationEncryption, +) -> bytes: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/pkcs7.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/pkcs7.pyi new file mode 100644 index 0000000..358b135 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/pkcs7.pyi @@ -0,0 +1,50 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from collections.abc import Iterable + +from cryptography import x509 +from cryptography.hazmat.primitives import serialization +from cryptography.hazmat.primitives.asymmetric import rsa +from cryptography.hazmat.primitives.serialization import pkcs7 + +def serialize_certificates( + certs: list[x509.Certificate], + encoding: serialization.Encoding, +) -> bytes: ... +def encrypt_and_serialize( + builder: pkcs7.PKCS7EnvelopeBuilder, + content_encryption_algorithm: pkcs7.ContentEncryptionAlgorithm, + encoding: serialization.Encoding, + options: Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def sign_and_serialize( + builder: pkcs7.PKCS7SignatureBuilder, + encoding: serialization.Encoding, + options: Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def decrypt_der( + data: bytes, + certificate: x509.Certificate, + private_key: rsa.RSAPrivateKey, + options: Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def decrypt_pem( + data: bytes, + certificate: x509.Certificate, + private_key: rsa.RSAPrivateKey, + options: Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def decrypt_smime( + data: bytes, + certificate: x509.Certificate, + private_key: rsa.RSAPrivateKey, + options: Iterable[pkcs7.PKCS7Options], +) -> bytes: ... +def load_pem_pkcs7_certificates( + data: bytes, +) -> list[x509.Certificate]: ... +def load_der_pkcs7_certificates( + data: bytes, +) -> list[x509.Certificate]: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/test_support.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/test_support.pyi new file mode 100644 index 0000000..c6c6d0b --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/test_support.pyi @@ -0,0 +1,23 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography import x509 +from cryptography.hazmat.primitives import serialization +from cryptography.hazmat.primitives.serialization import pkcs7 +from cryptography.utils import Buffer + +class TestCertificate: + not_after_tag: int + not_before_tag: int + issuer_value_tags: list[int] + subject_value_tags: list[int] + +def test_parse_certificate(data: bytes) -> TestCertificate: ... +def pkcs7_verify( + encoding: serialization.Encoding, + sig: bytes, + msg: Buffer | None, + certs: list[x509.Certificate], + options: list[pkcs7.PKCS7Options], +) -> None: ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/_rust/x509.pyi b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/x509.pyi new file mode 100644 index 0000000..196a3c6 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/_rust/x509.pyi @@ -0,0 +1,312 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import datetime +import typing +from collections.abc import Iterator + +from cryptography import x509 +from cryptography.hazmat.primitives import hashes, serialization +from cryptography.hazmat.primitives.asymmetric.ec import ECDSA +from cryptography.hazmat.primitives.asymmetric.padding import PSS, PKCS1v15 +from cryptography.hazmat.primitives.asymmetric.types import ( + CertificateIssuerPublicKeyTypes, + CertificatePublicKeyTypes, + PrivateKeyTypes, +) +from cryptography.x509 import certificate_transparency + +def load_pem_x509_certificate( + data: bytes, backend: typing.Any = None +) -> x509.Certificate: ... +def load_der_x509_certificate( + data: bytes, backend: typing.Any = None +) -> x509.Certificate: ... +def load_pem_x509_certificates( + data: bytes, +) -> list[x509.Certificate]: ... +def load_pem_x509_crl( + data: bytes, backend: typing.Any = None +) -> x509.CertificateRevocationList: ... +def load_der_x509_crl( + data: bytes, backend: typing.Any = None +) -> x509.CertificateRevocationList: ... +def load_pem_x509_csr( + data: bytes, backend: typing.Any = None +) -> x509.CertificateSigningRequest: ... +def load_der_x509_csr( + data: bytes, backend: typing.Any = None +) -> x509.CertificateSigningRequest: ... +def encode_name_bytes(name: x509.Name) -> bytes: ... +def encode_extension_value(extension: x509.ExtensionType) -> bytes: ... +def create_x509_certificate( + builder: x509.CertificateBuilder, + private_key: PrivateKeyTypes, + hash_algorithm: hashes.HashAlgorithm | None, + rsa_padding: PKCS1v15 | PSS | None, + ecdsa_deterministic: bool | None, +) -> x509.Certificate: ... +def create_x509_csr( + builder: x509.CertificateSigningRequestBuilder, + private_key: PrivateKeyTypes, + hash_algorithm: hashes.HashAlgorithm | None, + rsa_padding: PKCS1v15 | PSS | None, + ecdsa_deterministic: bool | None, +) -> x509.CertificateSigningRequest: ... +def create_revoked_certificate( + builder: x509.RevokedCertificateBuilder, +) -> x509.RevokedCertificate: ... +def create_x509_crl( + builder: x509.CertificateRevocationListBuilder, + private_key: PrivateKeyTypes, + hash_algorithm: hashes.HashAlgorithm | None, + rsa_padding: PKCS1v15 | PSS | None, + ecdsa_deterministic: bool | None, +) -> x509.CertificateRevocationList: ... + +class Sct: + @property + def version(self) -> certificate_transparency.Version: ... + @property + def log_id(self) -> bytes: ... + @property + def timestamp(self) -> datetime.datetime: ... + @property + def entry_type(self) -> certificate_transparency.LogEntryType: ... + @property + def signature_hash_algorithm(self) -> hashes.HashAlgorithm: ... + @property + def signature_algorithm( + self, + ) -> certificate_transparency.SignatureAlgorithm: ... + @property + def signature(self) -> bytes: ... + @property + def extension_bytes(self) -> bytes: ... + +class Certificate: + def fingerprint(self, algorithm: hashes.HashAlgorithm) -> bytes: ... + @property + def serial_number(self) -> int: ... + @property + def version(self) -> x509.Version: ... + def public_key(self) -> CertificatePublicKeyTypes: ... + @property + def public_key_algorithm_oid(self) -> x509.ObjectIdentifier: ... + @property + def not_valid_before(self) -> datetime.datetime: ... + @property + def not_valid_before_utc(self) -> datetime.datetime: ... + @property + def not_valid_after(self) -> datetime.datetime: ... + @property + def not_valid_after_utc(self) -> datetime.datetime: ... + @property + def issuer(self) -> x509.Name: ... + @property + def subject(self) -> x509.Name: ... + @property + def signature_hash_algorithm( + self, + ) -> hashes.HashAlgorithm | None: ... + @property + def signature_algorithm_oid(self) -> x509.ObjectIdentifier: ... + @property + def signature_algorithm_parameters( + self, + ) -> PSS | PKCS1v15 | ECDSA | None: ... + @property + def extensions(self) -> x509.Extensions: ... + @property + def signature(self) -> bytes: ... + @property + def tbs_certificate_bytes(self) -> bytes: ... + @property + def tbs_precertificate_bytes(self) -> bytes: ... + def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... + def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... + def verify_directly_issued_by(self, issuer: Certificate) -> None: ... + +class RevokedCertificate: + @property + def serial_number(self) -> int: ... + @property + def revocation_date(self) -> datetime.datetime: ... + @property + def revocation_date_utc(self) -> datetime.datetime: ... + @property + def extensions(self) -> x509.Extensions: ... + +class CertificateRevocationList: + def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... + def fingerprint(self, algorithm: hashes.HashAlgorithm) -> bytes: ... + def get_revoked_certificate_by_serial_number( + self, serial_number: int + ) -> x509.RevokedCertificate | None: ... + @property + def signature_hash_algorithm( + self, + ) -> hashes.HashAlgorithm | None: ... + @property + def signature_algorithm_oid(self) -> x509.ObjectIdentifier: ... + @property + def signature_algorithm_parameters( + self, + ) -> PSS | PKCS1v15 | ECDSA | None: ... + @property + def issuer(self) -> x509.Name: ... + @property + def next_update(self) -> datetime.datetime | None: ... + @property + def next_update_utc(self) -> datetime.datetime | None: ... + @property + def last_update(self) -> datetime.datetime: ... + @property + def last_update_utc(self) -> datetime.datetime: ... + @property + def extensions(self) -> x509.Extensions: ... + @property + def signature(self) -> bytes: ... + @property + def tbs_certlist_bytes(self) -> bytes: ... + def __eq__(self, other: object) -> bool: ... + def __len__(self) -> int: ... + @typing.overload + def __getitem__(self, idx: int) -> x509.RevokedCertificate: ... + @typing.overload + def __getitem__(self, idx: slice) -> list[x509.RevokedCertificate]: ... + def __iter__(self) -> Iterator[x509.RevokedCertificate]: ... + def is_signature_valid( + self, public_key: CertificateIssuerPublicKeyTypes + ) -> bool: ... + +class CertificateSigningRequest: + def __eq__(self, other: object) -> bool: ... + def __hash__(self) -> int: ... + def public_key(self) -> CertificatePublicKeyTypes: ... + @property + def subject(self) -> x509.Name: ... + @property + def signature_hash_algorithm( + self, + ) -> hashes.HashAlgorithm | None: ... + @property + def signature_algorithm_oid(self) -> x509.ObjectIdentifier: ... + @property + def signature_algorithm_parameters( + self, + ) -> PSS | PKCS1v15 | ECDSA | None: ... + @property + def extensions(self) -> x509.Extensions: ... + @property + def attributes(self) -> x509.Attributes: ... + def public_bytes(self, encoding: serialization.Encoding) -> bytes: ... + @property + def signature(self) -> bytes: ... + @property + def tbs_certrequest_bytes(self) -> bytes: ... + @property + def is_signature_valid(self) -> bool: ... + +class PolicyBuilder: + def time(self, time: datetime.datetime) -> PolicyBuilder: ... + def store(self, store: Store) -> PolicyBuilder: ... + def max_chain_depth(self, max_chain_depth: int) -> PolicyBuilder: ... + def extension_policies( + self, *, ca_policy: ExtensionPolicy, ee_policy: ExtensionPolicy + ) -> PolicyBuilder: ... + def build_client_verifier(self) -> ClientVerifier: ... + def build_server_verifier( + self, subject: x509.verification.Subject + ) -> ServerVerifier: ... + +class Policy: + @property + def max_chain_depth(self) -> int: ... + @property + def subject(self) -> x509.verification.Subject | None: ... + @property + def validation_time(self) -> datetime.datetime: ... + @property + def extended_key_usage(self) -> x509.ObjectIdentifier: ... + @property + def minimum_rsa_modulus(self) -> int: ... + +class Criticality: + CRITICAL: Criticality + AGNOSTIC: Criticality + NON_CRITICAL: Criticality + +T = typing.TypeVar("T", contravariant=True, bound=x509.ExtensionType) + +MaybeExtensionValidatorCallback = typing.Callable[ + [ + Policy, + x509.Certificate, + T | None, + ], + None, +] + +PresentExtensionValidatorCallback = typing.Callable[ + [Policy, x509.Certificate, T], + None, +] + +class ExtensionPolicy: + @staticmethod + def permit_all() -> ExtensionPolicy: ... + @staticmethod + def webpki_defaults_ca() -> ExtensionPolicy: ... + @staticmethod + def webpki_defaults_ee() -> ExtensionPolicy: ... + def require_not_present( + self, extension_type: type[x509.ExtensionType] + ) -> ExtensionPolicy: ... + def may_be_present( + self, + extension_type: type[T], + criticality: Criticality, + validator: MaybeExtensionValidatorCallback[T] | None, + ) -> ExtensionPolicy: ... + def require_present( + self, + extension_type: type[T], + criticality: Criticality, + validator: PresentExtensionValidatorCallback[T] | None, + ) -> ExtensionPolicy: ... + +class VerifiedClient: + @property + def subjects(self) -> list[x509.GeneralName] | None: ... + @property + def chain(self) -> list[x509.Certificate]: ... + +class ClientVerifier: + @property + def policy(self) -> Policy: ... + @property + def store(self) -> Store: ... + def verify( + self, + leaf: x509.Certificate, + intermediates: list[x509.Certificate], + ) -> VerifiedClient: ... + +class ServerVerifier: + @property + def policy(self) -> Policy: ... + @property + def store(self) -> Store: ... + def verify( + self, + leaf: x509.Certificate, + intermediates: list[x509.Certificate], + ) -> list[x509.Certificate]: ... + +class Store: + def __init__(self, certs: list[x509.Certificate]) -> None: ... + +class VerificationError(Exception): ... diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/openssl/__init__.py b/intelliaide/vendor/cryptography/hazmat/bindings/openssl/__init__.py new file mode 100644 index 0000000..b509336 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/openssl/__init__.py @@ -0,0 +1,3 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/openssl/_conditional.py b/intelliaide/vendor/cryptography/hazmat/bindings/openssl/_conditional.py new file mode 100644 index 0000000..1e447a5 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/openssl/_conditional.py @@ -0,0 +1,199 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + + +def cryptography_has_set_cert_cb() -> list[str]: + return [ + "SSL_CTX_set_cert_cb", + "SSL_set_cert_cb", + ] + + +def cryptography_has_ssl_st() -> list[str]: + return [ + "SSL_ST_BEFORE", + "SSL_ST_OK", + "SSL_ST_INIT", + "SSL_ST_RENEGOTIATE", + ] + + +def cryptography_has_tls_st() -> list[str]: + return [ + "TLS_ST_BEFORE", + "TLS_ST_OK", + ] + + +def cryptography_has_ssl_sigalgs() -> list[str]: + return [ + "SSL_CTX_set1_sigalgs_list", + ] + + +def cryptography_has_psk() -> list[str]: + return [ + "SSL_CTX_use_psk_identity_hint", + "SSL_CTX_set_psk_server_callback", + "SSL_CTX_set_psk_client_callback", + ] + + +def cryptography_has_psk_tlsv13() -> list[str]: + return [ + "SSL_CTX_set_psk_find_session_callback", + "SSL_CTX_set_psk_use_session_callback", + "Cryptography_SSL_SESSION_new", + "SSL_CIPHER_find", + "SSL_SESSION_set1_master_key", + "SSL_SESSION_set_cipher", + "SSL_SESSION_set_protocol_version", + ] + + +def cryptography_has_custom_ext() -> list[str]: + return [ + "SSL_CTX_add_client_custom_ext", + "SSL_CTX_add_server_custom_ext", + "SSL_extension_supported", + ] + + +def cryptography_has_tlsv13_functions() -> list[str]: + return [ + "SSL_CTX_set_ciphersuites", + ] + + +def cryptography_has_tlsv13_hs_functions() -> list[str]: + return [ + "SSL_VERIFY_POST_HANDSHAKE", + "SSL_verify_client_post_handshake", + "SSL_CTX_set_post_handshake_auth", + "SSL_set_post_handshake_auth", + "SSL_SESSION_get_max_early_data", + "SSL_write_early_data", + "SSL_read_early_data", + "SSL_CTX_set_max_early_data", + ] + + +def cryptography_has_ssl_verify_client_post_handshake() -> list[str]: + return [ + "SSL_verify_client_post_handshake", + ] + + +def cryptography_has_engine() -> list[str]: + return [ + "ENGINE_by_id", + "ENGINE_init", + "ENGINE_finish", + "ENGINE_get_default_RAND", + "ENGINE_set_default_RAND", + "ENGINE_unregister_RAND", + "ENGINE_ctrl_cmd", + "ENGINE_free", + "ENGINE_get_name", + "ENGINE_ctrl_cmd_string", + "ENGINE_load_builtin_engines", + "ENGINE_load_private_key", + "ENGINE_load_public_key", + "SSL_CTX_set_client_cert_engine", + ] + + +def cryptography_has_verified_chain() -> list[str]: + return [ + "SSL_get0_verified_chain", + ] + + +def cryptography_has_srtp() -> list[str]: + return [ + "SSL_CTX_set_tlsext_use_srtp", + "SSL_set_tlsext_use_srtp", + "SSL_get_selected_srtp_profile", + ] + + +def cryptography_has_dtls_get_data_mtu() -> list[str]: + return [ + "DTLS_get_data_mtu", + ] + + +def cryptography_has_ssl_cookie() -> list[str]: + return [ + "SSL_OP_COOKIE_EXCHANGE", + "DTLS1_COOKIE_LENGTH", + "DTLSv1_listen", + "SSL_CTX_set_cookie_generate_cb", + "SSL_CTX_set_cookie_verify_cb", + ] + + +def cryptography_has_prime_checks() -> list[str]: + return [ + "BN_prime_checks_for_size", + ] + + +def cryptography_has_unexpected_eof_while_reading() -> list[str]: + return ["SSL_R_UNEXPECTED_EOF_WHILE_READING"] + + +def cryptography_has_ssl_op_ignore_unexpected_eof() -> list[str]: + return [ + "SSL_OP_IGNORE_UNEXPECTED_EOF", + ] + + +def cryptography_has_get_extms_support() -> list[str]: + return ["SSL_get_extms_support"] + + +def cryptography_has_ssl_get0_group_name() -> list[str]: + return ["SSL_get0_group_name"] + + +# This is a mapping of +# {condition: function-returning-names-dependent-on-that-condition} so we can +# loop over them and delete unsupported names at runtime. It will be removed +# when cffi supports #if in cdef. We use functions instead of just a dict of +# lists so we can use coverage to measure which are used. +CONDITIONAL_NAMES = { + "Cryptography_HAS_SET_CERT_CB": cryptography_has_set_cert_cb, + "Cryptography_HAS_SSL_ST": cryptography_has_ssl_st, + "Cryptography_HAS_TLS_ST": cryptography_has_tls_st, + "Cryptography_HAS_SIGALGS": cryptography_has_ssl_sigalgs, + "Cryptography_HAS_PSK": cryptography_has_psk, + "Cryptography_HAS_PSK_TLSv1_3": cryptography_has_psk_tlsv13, + "Cryptography_HAS_CUSTOM_EXT": cryptography_has_custom_ext, + "Cryptography_HAS_TLSv1_3_FUNCTIONS": cryptography_has_tlsv13_functions, + "Cryptography_HAS_TLSv1_3_HS_FUNCTIONS": ( + cryptography_has_tlsv13_hs_functions + ), + "Cryptography_HAS_SSL_VERIFY_CLIENT_POST_HANDSHAKE": ( + cryptography_has_ssl_verify_client_post_handshake + ), + "Cryptography_HAS_ENGINE": cryptography_has_engine, + "Cryptography_HAS_VERIFIED_CHAIN": cryptography_has_verified_chain, + "Cryptography_HAS_SRTP": cryptography_has_srtp, + "Cryptography_HAS_DTLS_GET_DATA_MTU": cryptography_has_dtls_get_data_mtu, + "Cryptography_HAS_SSL_COOKIE": cryptography_has_ssl_cookie, + "Cryptography_HAS_PRIME_CHECKS": cryptography_has_prime_checks, + "Cryptography_HAS_UNEXPECTED_EOF_WHILE_READING": ( + cryptography_has_unexpected_eof_while_reading + ), + "Cryptography_HAS_SSL_OP_IGNORE_UNEXPECTED_EOF": ( + cryptography_has_ssl_op_ignore_unexpected_eof + ), + "Cryptography_HAS_GET_EXTMS_SUPPORT": cryptography_has_get_extms_support, + "Cryptography_HAS_SSL_GET0_GROUP_NAME": ( + cryptography_has_ssl_get0_group_name + ), +} diff --git a/intelliaide/vendor/cryptography/hazmat/bindings/openssl/binding.py b/intelliaide/vendor/cryptography/hazmat/bindings/openssl/binding.py new file mode 100644 index 0000000..6a0cafd --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/bindings/openssl/binding.py @@ -0,0 +1,122 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import os +import sys +import threading +import types +import typing +import warnings +from collections.abc import Callable + +import cryptography +from cryptography.exceptions import InternalError +from cryptography.hazmat.bindings._rust import _openssl, openssl +from cryptography.hazmat.bindings.openssl._conditional import CONDITIONAL_NAMES + + +def _openssl_assert(ok: bool) -> None: + if not ok: + errors = openssl.capture_error_stack() + + raise InternalError( + "Unknown OpenSSL error. This error is commonly encountered when " + "another library is not cleaning up the OpenSSL error stack. If " + "you are using cryptography with another library that uses " + "OpenSSL try disabling it before reporting a bug. Otherwise " + "please file an issue at https://github.com/pyca/cryptography/" + "issues with information on how to reproduce " + f"this. ({errors!r})", + errors, + ) + + +def build_conditional_library( + lib: typing.Any, + conditional_names: dict[str, Callable[[], list[str]]], +) -> typing.Any: + conditional_lib = types.ModuleType("lib") + conditional_lib._original_lib = lib # type: ignore[attr-defined] + excluded_names = set() + for condition, names_cb in conditional_names.items(): + if not getattr(lib, condition): + excluded_names.update(names_cb()) + + for attr in dir(lib): + if attr not in excluded_names: + setattr(conditional_lib, attr, getattr(lib, attr)) + + return conditional_lib + + +class Binding: + """ + OpenSSL API wrapper. + """ + + lib: typing.ClassVar[typing.Any] = None + ffi: typing.Any = _openssl.ffi + _lib_loaded = False + _init_lock = threading.Lock() + + def __init__(self) -> None: + self._ensure_ffi_initialized() + + @classmethod + def _ensure_ffi_initialized(cls) -> None: + with cls._init_lock: + if not cls._lib_loaded: + cls.lib = build_conditional_library( + _openssl.lib, CONDITIONAL_NAMES + ) + cls._lib_loaded = True + + @classmethod + def init_static_locks(cls) -> None: + cls._ensure_ffi_initialized() + + +def _verify_package_version(version: str) -> None: + # Occasionally we run into situations where the version of the Python + # package does not match the version of the shared object that is loaded. + # This may occur in environments where multiple versions of cryptography + # are installed and available in the python path. To avoid errors cropping + # up later this code checks that the currently imported package and the + # shared object that were loaded have the same version and raise an + # ImportError if they do not + so_package_version = _openssl.ffi.string( + _openssl.lib.CRYPTOGRAPHY_PACKAGE_VERSION + ) + if version.encode("ascii") != so_package_version: + raise ImportError( + "The version of cryptography does not match the loaded " + "shared object. This can happen if you have multiple copies of " + "cryptography installed in your Python path. Please try creating " + "a new virtual environment to resolve this issue. " + f"Loaded python version: {version}, " + f"shared object version: {so_package_version}" + ) + + _openssl_assert( + _openssl.lib.OpenSSL_version_num() == openssl.openssl_version(), + ) + + +_verify_package_version(cryptography.__version__) + +Binding.init_static_locks() + +if ( + sys.platform == "win32" + and os.environ.get("PROCESSOR_ARCHITEW6432") is not None +): + warnings.warn( + "You are using cryptography on a 32-bit Python on a 64-bit Windows " + "Operating System. Cryptography will be significantly faster if you " + "switch to using a 64-bit Python.", + UserWarning, + stacklevel=2, + ) diff --git a/intelliaide/vendor/cryptography/hazmat/decrepit/__init__.py b/intelliaide/vendor/cryptography/hazmat/decrepit/__init__.py new file mode 100644 index 0000000..41d7318 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/decrepit/__init__.py @@ -0,0 +1,5 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations diff --git a/intelliaide/vendor/cryptography/hazmat/decrepit/ciphers/__init__.py b/intelliaide/vendor/cryptography/hazmat/decrepit/ciphers/__init__.py new file mode 100644 index 0000000..41d7318 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/decrepit/ciphers/__init__.py @@ -0,0 +1,5 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations diff --git a/intelliaide/vendor/cryptography/hazmat/decrepit/ciphers/algorithms.py b/intelliaide/vendor/cryptography/hazmat/decrepit/ciphers/algorithms.py new file mode 100644 index 0000000..703c8e4 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/decrepit/ciphers/algorithms.py @@ -0,0 +1,142 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import warnings + +from cryptography import utils +from cryptography.hazmat.primitives._cipheralgorithm import ( + BlockCipherAlgorithm, + CipherAlgorithm, + _verify_key_size, +) + + +class ARC4(CipherAlgorithm): + name = "RC4" + key_sizes = frozenset([40, 56, 64, 80, 128, 160, 192, 256]) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class TripleDES(BlockCipherAlgorithm): + name = "3DES" + block_size = 64 + key_sizes = frozenset([64, 128, 192]) + + def __init__(self, key: bytes): + if len(key) == 8: + warnings.warn( + "Single-key TripleDES (8-byte keys) is deprecated and " + "support will be removed in a future release. Use 24-byte " + "keys instead (e.g., key + key + key).", + utils.DeprecatedIn47, + stacklevel=2, + ) + key = key + key + key + elif len(key) == 16: + warnings.warn( + "Two-key TripleDES (16-byte keys) is deprecated and " + "support will be removed in a future release. Use 24-byte " + "keys instead (e.g., key + key[:8]).", + utils.DeprecatedIn47, + stacklevel=2, + ) + key = key + key[:8] + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +# Not actually supported, marker for tests +class _DES: + key_size = 64 + + +class Blowfish(BlockCipherAlgorithm): + name = "Blowfish" + block_size = 64 + key_sizes = frozenset(range(32, 449, 8)) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class CAST5(BlockCipherAlgorithm): + name = "CAST5" + block_size = 64 + key_sizes = frozenset(range(40, 129, 8)) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class SEED(BlockCipherAlgorithm): + name = "SEED" + block_size = 128 + key_sizes = frozenset([128]) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class IDEA(BlockCipherAlgorithm): + name = "IDEA" + block_size = 64 + key_sizes = frozenset([128]) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class Camellia(BlockCipherAlgorithm): + name = "camellia" + block_size = 128 + key_sizes = frozenset([128, 192, 256]) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +# This class only allows RC2 with a 128-bit key. No support for +# effective key bits or other key sizes is provided. +class RC2(BlockCipherAlgorithm): + name = "RC2" + block_size = 64 + key_sizes = frozenset([128]) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 diff --git a/intelliaide/vendor/cryptography/hazmat/decrepit/ciphers/modes.py b/intelliaide/vendor/cryptography/hazmat/decrepit/ciphers/modes.py new file mode 100644 index 0000000..1786bb0 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/decrepit/ciphers/modes.py @@ -0,0 +1,53 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography import utils +from cryptography.hazmat.primitives._modes import ( + ModeWithInitializationVector, + _check_iv_and_key_length, +) + + +class OFB(ModeWithInitializationVector): + name = "OFB" + + def __init__(self, initialization_vector: utils.Buffer): + utils._check_byteslike("initialization_vector", initialization_vector) + self._initialization_vector = initialization_vector + + @property + def initialization_vector(self) -> utils.Buffer: + return self._initialization_vector + + validate_for_algorithm = _check_iv_and_key_length + + +class CFB(ModeWithInitializationVector): + name = "CFB" + + def __init__(self, initialization_vector: utils.Buffer): + utils._check_byteslike("initialization_vector", initialization_vector) + self._initialization_vector = initialization_vector + + @property + def initialization_vector(self) -> utils.Buffer: + return self._initialization_vector + + validate_for_algorithm = _check_iv_and_key_length + + +class CFB8(ModeWithInitializationVector): + name = "CFB8" + + def __init__(self, initialization_vector: utils.Buffer): + utils._check_byteslike("initialization_vector", initialization_vector) + self._initialization_vector = initialization_vector + + @property + def initialization_vector(self) -> utils.Buffer: + return self._initialization_vector + + validate_for_algorithm = _check_iv_and_key_length diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/__init__.py b/intelliaide/vendor/cryptography/hazmat/primitives/__init__.py new file mode 100644 index 0000000..b509336 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/__init__.py @@ -0,0 +1,3 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/_asymmetric.py b/intelliaide/vendor/cryptography/hazmat/primitives/_asymmetric.py new file mode 100644 index 0000000..ea55ffd --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/_asymmetric.py @@ -0,0 +1,19 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +# This exists to break an import cycle. It is normally accessible from the +# asymmetric padding module. + + +class AsymmetricPadding(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def name(self) -> str: + """ + A string naming this padding (e.g. "PSS", "PKCS1"). + """ diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/_cipheralgorithm.py b/intelliaide/vendor/cryptography/hazmat/primitives/_cipheralgorithm.py new file mode 100644 index 0000000..305a9fd --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/_cipheralgorithm.py @@ -0,0 +1,60 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography import utils + +# This exists to break an import cycle. It is normally accessible from the +# ciphers module. + + +class CipherAlgorithm(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def name(self) -> str: + """ + A string naming this mode (e.g. "AES", "Camellia"). + """ + + @property + @abc.abstractmethod + def key_sizes(self) -> frozenset[int]: + """ + Valid key sizes for this algorithm in bits + """ + + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + The size of the key being used as an integer in bits (e.g. 128, 256). + """ + + +class BlockCipherAlgorithm(CipherAlgorithm): + key: utils.Buffer + + @property + @abc.abstractmethod + def block_size(self) -> int: + """ + The size of a block as an integer in bits (e.g. 64, 128). + """ + + +def _verify_key_size( + algorithm: CipherAlgorithm, key: utils.Buffer +) -> utils.Buffer: + # Verify that the key is instance of bytes + utils._check_byteslike("key", key) + + # Verify that the key size matches the expected key size + if len(key) * 8 not in algorithm.key_sizes: + raise ValueError( + f"Invalid key size ({len(key) * 8}) for {algorithm.name}." + ) + return key diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/_modes.py b/intelliaide/vendor/cryptography/hazmat/primitives/_modes.py new file mode 100644 index 0000000..deae8bc --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/_modes.py @@ -0,0 +1,105 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography import utils +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.primitives._cipheralgorithm import ( + BlockCipherAlgorithm, + CipherAlgorithm, +) + + +class Mode(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def name(self) -> str: + """ + A string naming this mode (e.g. "ECB", "CBC"). + """ + + @abc.abstractmethod + def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: + """ + Checks that all the necessary invariants of this (mode, algorithm) + combination are met. + """ + + +class ModeWithInitializationVector(Mode, metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def initialization_vector(self) -> utils.Buffer: + """ + The value of the initialization vector for this mode as bytes. + """ + + +class ModeWithTweak(Mode, metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def tweak(self) -> utils.Buffer: + """ + The value of the tweak for this mode as bytes. + """ + + +class ModeWithNonce(Mode, metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def nonce(self) -> utils.Buffer: + """ + The value of the nonce for this mode as bytes. + """ + + +class ModeWithAuthenticationTag(Mode, metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def tag(self) -> bytes | None: + """ + The value of the tag supplied to the constructor of this mode. + """ + + +def _check_aes_key_length(self: Mode, algorithm: CipherAlgorithm) -> None: + if algorithm.key_size > 256 and algorithm.name == "AES": + raise ValueError( + "Only 128, 192, and 256 bit keys are allowed for this AES mode" + ) + + +def _check_iv_length( + self: ModeWithInitializationVector, algorithm: BlockCipherAlgorithm +) -> None: + iv_len = len(self.initialization_vector) + if iv_len * 8 != algorithm.block_size: + raise ValueError(f"Invalid IV size ({iv_len}) for {self.name}.") + + +def _check_nonce_length( + nonce: utils.Buffer, name: str, algorithm: CipherAlgorithm +) -> None: + if not isinstance(algorithm, BlockCipherAlgorithm): + raise UnsupportedAlgorithm( + f"{name} requires a block cipher algorithm", + _Reasons.UNSUPPORTED_CIPHER, + ) + if len(nonce) * 8 != algorithm.block_size: + raise ValueError(f"Invalid nonce size ({len(nonce)}) for {name}.") + + +def _check_iv_and_key_length( + self: ModeWithInitializationVector, algorithm: CipherAlgorithm +) -> None: + if not isinstance(algorithm, BlockCipherAlgorithm): + raise UnsupportedAlgorithm( + f"{self} requires a block cipher algorithm", + _Reasons.UNSUPPORTED_CIPHER, + ) + _check_aes_key_length(self, algorithm) + _check_iv_length(self, algorithm) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/_serialization.py b/intelliaide/vendor/cryptography/hazmat/primitives/_serialization.py new file mode 100644 index 0000000..9c3c474 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/_serialization.py @@ -0,0 +1,136 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography import utils +from cryptography.hazmat.bindings._rust import Encoding as Encoding +from cryptography.hazmat.bindings._rust import ( + ParameterFormat as ParameterFormat, +) +from cryptography.hazmat.bindings._rust import PrivateFormat as PrivateFormat +from cryptography.hazmat.bindings._rust import PublicFormat as PublicFormat +from cryptography.hazmat.primitives.hashes import HashAlgorithm + +# This exists to break an import cycle. These classes are normally accessible +# from the serialization module. + + +class PBES(utils.Enum): + PBESv1SHA1And3KeyTripleDESCBC = "PBESv1 using SHA1 and 3-Key TripleDES" + PBESv2SHA256AndAES256CBC = "PBESv2 using SHA256 PBKDF2 and AES256 CBC" + + +class KeySerializationEncryption(metaclass=abc.ABCMeta): + pass + + +class BestAvailableEncryption(KeySerializationEncryption): + def __init__(self, password: bytes): + if not isinstance(password, bytes) or len(password) == 0: + raise ValueError("Password must be 1 or more bytes.") + + self.password = password + + +class NoEncryption(KeySerializationEncryption): + pass + + +class KeySerializationEncryptionBuilder: + def __init__( + self, + format: PrivateFormat, + *, + _kdf_rounds: int | None = None, + _hmac_hash: HashAlgorithm | None = None, + _key_cert_algorithm: PBES | None = None, + ) -> None: + self._format = format + + self._kdf_rounds = _kdf_rounds + self._hmac_hash = _hmac_hash + self._key_cert_algorithm = _key_cert_algorithm + + def kdf_rounds(self, rounds: int) -> KeySerializationEncryptionBuilder: + if self._kdf_rounds is not None: + raise ValueError("kdf_rounds already set") + + if not isinstance(rounds, int): + raise TypeError("kdf_rounds must be an integer") + + if rounds < 1: + raise ValueError("kdf_rounds must be a positive integer") + + return KeySerializationEncryptionBuilder( + self._format, + _kdf_rounds=rounds, + _hmac_hash=self._hmac_hash, + _key_cert_algorithm=self._key_cert_algorithm, + ) + + def hmac_hash( + self, algorithm: HashAlgorithm + ) -> KeySerializationEncryptionBuilder: + if self._format is not PrivateFormat.PKCS12: + raise TypeError( + "hmac_hash only supported with PrivateFormat.PKCS12" + ) + + if self._hmac_hash is not None: + raise ValueError("hmac_hash already set") + return KeySerializationEncryptionBuilder( + self._format, + _kdf_rounds=self._kdf_rounds, + _hmac_hash=algorithm, + _key_cert_algorithm=self._key_cert_algorithm, + ) + + def key_cert_algorithm( + self, algorithm: PBES + ) -> KeySerializationEncryptionBuilder: + if self._format is not PrivateFormat.PKCS12: + raise TypeError( + "key_cert_algorithm only supported with PrivateFormat.PKCS12" + ) + if self._key_cert_algorithm is not None: + raise ValueError("key_cert_algorithm already set") + return KeySerializationEncryptionBuilder( + self._format, + _kdf_rounds=self._kdf_rounds, + _hmac_hash=self._hmac_hash, + _key_cert_algorithm=algorithm, + ) + + def build(self, password: bytes) -> KeySerializationEncryption: + if not isinstance(password, bytes) or len(password) == 0: + raise ValueError("Password must be 1 or more bytes.") + + return _KeySerializationEncryption( + self._format, + password, + kdf_rounds=self._kdf_rounds, + hmac_hash=self._hmac_hash, + key_cert_algorithm=self._key_cert_algorithm, + ) + + +class _KeySerializationEncryption(KeySerializationEncryption): + def __init__( + self, + format: PrivateFormat, + password: bytes, + *, + kdf_rounds: int | None, + hmac_hash: HashAlgorithm | None, + key_cert_algorithm: PBES | None, + ): + self._format = format + self.password = password + + self._kdf_rounds = kdf_rounds + self._hmac_hash = hmac_hash + self._key_cert_algorithm = key_cert_algorithm diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/__init__.py b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/__init__.py new file mode 100644 index 0000000..b509336 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/__init__.py @@ -0,0 +1,3 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/dh.py b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/dh.py new file mode 100644 index 0000000..2f6b834 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/dh.py @@ -0,0 +1,159 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization + +generate_parameters = rust_openssl.dh.generate_parameters + + +DHPrivateNumbers = rust_openssl.dh.DHPrivateNumbers +DHPublicNumbers = rust_openssl.dh.DHPublicNumbers +DHParameterNumbers = rust_openssl.dh.DHParameterNumbers + + +class DHParameters(metaclass=abc.ABCMeta): + @abc.abstractmethod + def generate_private_key(self) -> DHPrivateKey: + """ + Generates and returns a DHPrivateKey. + """ + + @abc.abstractmethod + def parameter_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.ParameterFormat, + ) -> bytes: + """ + Returns the parameters serialized as bytes. + """ + + @abc.abstractmethod + def parameter_numbers(self) -> DHParameterNumbers: + """ + Returns a DHParameterNumbers. + """ + + +DHParametersWithSerialization = DHParameters +DHParameters.register(rust_openssl.dh.DHParameters) + + +class DHPublicKey(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + The bit length of the prime modulus. + """ + + @abc.abstractmethod + def parameters(self) -> DHParameters: + """ + The DHParameters object associated with this public key. + """ + + @abc.abstractmethod + def public_numbers(self) -> DHPublicNumbers: + """ + Returns a DHPublicNumbers. + """ + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + Returns the key serialized as bytes. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> DHPublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> DHPublicKey: + """ + Returns a deep copy. + """ + + +DHPublicKeyWithSerialization = DHPublicKey +DHPublicKey.register(rust_openssl.dh.DHPublicKey) + + +class DHPrivateKey(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + The bit length of the prime modulus. + """ + + @abc.abstractmethod + def public_key(self) -> DHPublicKey: + """ + The DHPublicKey associated with this private key. + """ + + @abc.abstractmethod + def parameters(self) -> DHParameters: + """ + The DHParameters object associated with this private key. + """ + + @abc.abstractmethod + def exchange(self, peer_public_key: DHPublicKey) -> bytes: + """ + Given peer's DHPublicKey, carry out the key exchange and + return shared key as bytes. + """ + + @abc.abstractmethod + def private_numbers(self) -> DHPrivateNumbers: + """ + Returns a DHPrivateNumbers. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + Returns the key serialized as bytes. + """ + + @abc.abstractmethod + def __copy__(self) -> DHPrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> DHPrivateKey: + """ + Returns a deep copy. + """ + + +DHPrivateKeyWithSerialization = DHPrivateKey +DHPrivateKey.register(rust_openssl.dh.DHPrivateKey) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/dsa.py b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/dsa.py new file mode 100644 index 0000000..f245557 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/dsa.py @@ -0,0 +1,179 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc +import typing + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization, hashes +from cryptography.hazmat.primitives.asymmetric import utils as asym_utils +from cryptography.utils import Buffer + + +class DSAParameters(metaclass=abc.ABCMeta): + @abc.abstractmethod + def generate_private_key(self) -> DSAPrivateKey: + """ + Generates and returns a DSAPrivateKey. + """ + + @abc.abstractmethod + def parameter_numbers(self) -> DSAParameterNumbers: + """ + Returns a DSAParameterNumbers. + """ + + +DSAParametersWithNumbers = DSAParameters +DSAParameters.register(rust_openssl.dsa.DSAParameters) + + +class DSAPrivateKey(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + The bit length of the prime modulus. + """ + + @abc.abstractmethod + def public_key(self) -> DSAPublicKey: + """ + The DSAPublicKey associated with this private key. + """ + + @abc.abstractmethod + def parameters(self) -> DSAParameters: + """ + The DSAParameters object associated with this private key. + """ + + @abc.abstractmethod + def sign( + self, + data: Buffer, + algorithm: asym_utils.Prehashed | hashes.HashAlgorithm, + ) -> bytes: + """ + Signs the data + """ + + @abc.abstractmethod + def private_numbers(self) -> DSAPrivateNumbers: + """ + Returns a DSAPrivateNumbers. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + Returns the key serialized as bytes. + """ + + @abc.abstractmethod + def __copy__(self) -> DSAPrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> DSAPrivateKey: + """ + Returns a deep copy. + """ + + +DSAPrivateKeyWithSerialization = DSAPrivateKey +DSAPrivateKey.register(rust_openssl.dsa.DSAPrivateKey) + + +class DSAPublicKey(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + The bit length of the prime modulus. + """ + + @abc.abstractmethod + def parameters(self) -> DSAParameters: + """ + The DSAParameters object associated with this public key. + """ + + @abc.abstractmethod + def public_numbers(self) -> DSAPublicNumbers: + """ + Returns a DSAPublicNumbers. + """ + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + Returns the key serialized as bytes. + """ + + @abc.abstractmethod + def verify( + self, + signature: Buffer, + data: Buffer, + algorithm: asym_utils.Prehashed | hashes.HashAlgorithm, + ) -> None: + """ + Verifies the signature of the data. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> DSAPublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> DSAPublicKey: + """ + Returns a deep copy. + """ + + +DSAPublicKeyWithSerialization = DSAPublicKey +DSAPublicKey.register(rust_openssl.dsa.DSAPublicKey) + +DSAPrivateNumbers = rust_openssl.dsa.DSAPrivateNumbers +DSAPublicNumbers = rust_openssl.dsa.DSAPublicNumbers +DSAParameterNumbers = rust_openssl.dsa.DSAParameterNumbers + + +def generate_parameters( + key_size: int, backend: typing.Any = None +) -> DSAParameters: + if key_size not in (1024, 2048, 3072, 4096): + raise ValueError("Key size must be 1024, 2048, 3072, or 4096 bits.") + + return rust_openssl.dsa.generate_parameters(key_size) + + +def generate_private_key( + key_size: int, backend: typing.Any = None +) -> DSAPrivateKey: + parameters = generate_parameters(key_size) + return parameters.generate_private_key() diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/ec.py b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/ec.py new file mode 100644 index 0000000..39e6751 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/ec.py @@ -0,0 +1,369 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc +import typing + +from cryptography import utils +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat._oid import ObjectIdentifier +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization, hashes +from cryptography.hazmat.primitives.asymmetric import utils as asym_utils + + +class EllipticCurveOID: + SECP192R1 = ObjectIdentifier("1.2.840.10045.3.1.1") + SECP224R1 = ObjectIdentifier("1.3.132.0.33") + SECP256K1 = ObjectIdentifier("1.3.132.0.10") + SECP256R1 = ObjectIdentifier("1.2.840.10045.3.1.7") + SECP384R1 = ObjectIdentifier("1.3.132.0.34") + SECP521R1 = ObjectIdentifier("1.3.132.0.35") + BRAINPOOLP256R1 = ObjectIdentifier("1.3.36.3.3.2.8.1.1.7") + BRAINPOOLP384R1 = ObjectIdentifier("1.3.36.3.3.2.8.1.1.11") + BRAINPOOLP512R1 = ObjectIdentifier("1.3.36.3.3.2.8.1.1.13") + + +class EllipticCurve(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def name(self) -> str: + """ + The name of the curve. e.g. secp256r1. + """ + + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + Bit size of a secret scalar for the curve. + """ + + @property + @abc.abstractmethod + def group_order(self) -> int: + """ + The order of the curve's group. + """ + + +class EllipticCurveSignatureAlgorithm(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def algorithm( + self, + ) -> asym_utils.Prehashed | hashes.HashAlgorithm: + """ + The digest algorithm used with this signature. + """ + + +class EllipticCurvePrivateKey(metaclass=abc.ABCMeta): + @abc.abstractmethod + def exchange( + self, algorithm: ECDH, peer_public_key: EllipticCurvePublicKey + ) -> bytes: + """ + Performs a key exchange operation using the provided algorithm with the + provided peer's public key. + """ + + @abc.abstractmethod + def public_key(self) -> EllipticCurvePublicKey: + """ + The EllipticCurvePublicKey for this private key. + """ + + @property + @abc.abstractmethod + def curve(self) -> EllipticCurve: + """ + The EllipticCurve that this key is on. + """ + + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + Bit size of a secret scalar for the curve. + """ + + @abc.abstractmethod + def sign( + self, + data: utils.Buffer, + signature_algorithm: EllipticCurveSignatureAlgorithm, + ) -> bytes: + """ + Signs the data + """ + + @abc.abstractmethod + def private_numbers(self) -> EllipticCurvePrivateNumbers: + """ + Returns an EllipticCurvePrivateNumbers. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + Returns the key serialized as bytes. + """ + + @abc.abstractmethod + def __copy__(self) -> EllipticCurvePrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> EllipticCurvePrivateKey: + """ + Returns a deep copy. + """ + + +EllipticCurvePrivateKeyWithSerialization = EllipticCurvePrivateKey +EllipticCurvePrivateKey.register(rust_openssl.ec.ECPrivateKey) + + +class EllipticCurvePublicKey(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def curve(self) -> EllipticCurve: + """ + The EllipticCurve that this key is on. + """ + + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + Bit size of a secret scalar for the curve. + """ + + @abc.abstractmethod + def public_numbers(self) -> EllipticCurvePublicNumbers: + """ + Returns an EllipticCurvePublicNumbers. + """ + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + Returns the key serialized as bytes. + """ + + @abc.abstractmethod + def verify( + self, + signature: utils.Buffer, + data: utils.Buffer, + signature_algorithm: EllipticCurveSignatureAlgorithm, + ) -> None: + """ + Verifies the signature of the data. + """ + + @classmethod + def from_encoded_point( + cls, curve: EllipticCurve, data: bytes + ) -> EllipticCurvePublicKey: + utils._check_bytes("data", data) + + if len(data) == 0: + raise ValueError("data must not be an empty byte string") + + if data[0] not in [0x02, 0x03, 0x04]: + raise ValueError("Unsupported elliptic curve point type") + + return rust_openssl.ec.from_public_bytes(curve, data) + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> EllipticCurvePublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> EllipticCurvePublicKey: + """ + Returns a deep copy. + """ + + +EllipticCurvePublicKeyWithSerialization = EllipticCurvePublicKey +EllipticCurvePublicKey.register(rust_openssl.ec.ECPublicKey) + +EllipticCurvePrivateNumbers = rust_openssl.ec.EllipticCurvePrivateNumbers +EllipticCurvePublicNumbers = rust_openssl.ec.EllipticCurvePublicNumbers + + +class SECP521R1(EllipticCurve): + name = "secp521r1" + key_size = 521 + group_order = 0x1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409 # noqa: E501 + + +class SECP384R1(EllipticCurve): + name = "secp384r1" + key_size = 384 + group_order = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973 # noqa: E501 + + +class SECP256R1(EllipticCurve): + name = "secp256r1" + key_size = 256 + group_order = ( + 0xFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551 + ) + + +class SECP256K1(EllipticCurve): + name = "secp256k1" + key_size = 256 + group_order = ( + 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 + ) + + +class SECP224R1(EllipticCurve): + name = "secp224r1" + key_size = 224 + group_order = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D + + +class SECP192R1(EllipticCurve): + name = "secp192r1" + key_size = 192 + group_order = 0xFFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831 + + +class BrainpoolP256R1(EllipticCurve): + name = "brainpoolP256r1" + key_size = 256 + group_order = ( + 0xA9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7 + ) + + +class BrainpoolP384R1(EllipticCurve): + name = "brainpoolP384r1" + key_size = 384 + group_order = 0x8CB91E82A3386D280F5D6F7E50E641DF152F7109ED5456B31F166E6CAC0425A7CF3AB6AF6B7FC3103B883202E9046565 # noqa: E501 + + +class BrainpoolP512R1(EllipticCurve): + name = "brainpoolP512r1" + key_size = 512 + group_order = 0xAADD9DB8DBE9C48B3FD4E6AE33C9FC07CB308DB3B3C9D20ED6639CCA70330870553E5C414CA92619418661197FAC10471DB1D381085DDADDB58796829CA90069 # noqa: E501 + + +_CURVE_TYPES: dict[str, EllipticCurve] = { + "prime192v1": SECP192R1(), + "prime256v1": SECP256R1(), + "secp192r1": SECP192R1(), + "secp224r1": SECP224R1(), + "secp256r1": SECP256R1(), + "secp384r1": SECP384R1(), + "secp521r1": SECP521R1(), + "secp256k1": SECP256K1(), + "brainpoolP256r1": BrainpoolP256R1(), + "brainpoolP384r1": BrainpoolP384R1(), + "brainpoolP512r1": BrainpoolP512R1(), +} + + +class ECDSA(EllipticCurveSignatureAlgorithm): + def __init__( + self, + algorithm: asym_utils.Prehashed | hashes.HashAlgorithm, + deterministic_signing: bool = False, + ): + from cryptography.hazmat.backends.openssl.backend import backend + + if ( + deterministic_signing + and not backend.ecdsa_deterministic_supported() + ): + raise UnsupportedAlgorithm( + "ECDSA with deterministic signature (RFC 6979) is not " + "supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + self._algorithm = algorithm + self._deterministic_signing = deterministic_signing + + @property + def algorithm( + self, + ) -> asym_utils.Prehashed | hashes.HashAlgorithm: + return self._algorithm + + @property + def deterministic_signing( + self, + ) -> bool: + return self._deterministic_signing + + +generate_private_key = rust_openssl.ec.generate_private_key + + +def derive_private_key( + private_value: int, + curve: EllipticCurve, + backend: typing.Any = None, +) -> EllipticCurvePrivateKey: + if not isinstance(private_value, int): + raise TypeError("private_value must be an integer type.") + + if private_value <= 0: + raise ValueError("private_value must be a positive integer.") + + return rust_openssl.ec.derive_private_key(private_value, curve) + + +class ECDH: + pass + + +_OID_TO_CURVE = { + EllipticCurveOID.SECP192R1: SECP192R1, + EllipticCurveOID.SECP224R1: SECP224R1, + EllipticCurveOID.SECP256K1: SECP256K1, + EllipticCurveOID.SECP256R1: SECP256R1, + EllipticCurveOID.SECP384R1: SECP384R1, + EllipticCurveOID.SECP521R1: SECP521R1, + EllipticCurveOID.BRAINPOOLP256R1: BrainpoolP256R1, + EllipticCurveOID.BRAINPOOLP384R1: BrainpoolP384R1, + EllipticCurveOID.BRAINPOOLP512R1: BrainpoolP512R1, +} + + +def get_curve_for_oid(oid: ObjectIdentifier) -> type[EllipticCurve]: + try: + return _OID_TO_CURVE[oid] + except KeyError: + raise LookupError( + "The provided object identifier has no matching elliptic " + "curve class" + ) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/ed25519.py b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/ed25519.py new file mode 100644 index 0000000..70aec5b --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/ed25519.py @@ -0,0 +1,116 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization +from cryptography.utils import Buffer + + +class Ed25519PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: bytes) -> Ed25519PublicKey: + return rust_openssl.ed25519.from_public_bytes(data) + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + The serialized bytes of the public key. + """ + + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + """ + + @abc.abstractmethod + def verify(self, signature: Buffer, data: Buffer) -> None: + """ + Verify the signature. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> Ed25519PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> Ed25519PublicKey: + """ + Returns a deep copy. + """ + + +Ed25519PublicKey.register(rust_openssl.ed25519.Ed25519PublicKey) + + +class Ed25519PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> Ed25519PrivateKey: + return rust_openssl.ed25519.generate_key() + + @classmethod + def from_private_bytes(cls, data: Buffer) -> Ed25519PrivateKey: + return rust_openssl.ed25519.from_private_bytes(data) + + @abc.abstractmethod + def public_key(self) -> Ed25519PublicKey: + """ + The Ed25519PublicKey derived from the private key. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + The serialized bytes of the private key. + """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key. + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + """ + + @abc.abstractmethod + def sign(self, data: Buffer) -> bytes: + """ + Signs the data. + """ + + @abc.abstractmethod + def __copy__(self) -> Ed25519PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> Ed25519PrivateKey: + """ + Returns a deep copy. + """ + + +Ed25519PrivateKey.register(rust_openssl.ed25519.Ed25519PrivateKey) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/ed448.py b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/ed448.py new file mode 100644 index 0000000..9ecb478 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/ed448.py @@ -0,0 +1,143 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization +from cryptography.utils import Buffer + + +class Ed448PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: bytes) -> Ed448PublicKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.ed448_supported(): + raise UnsupportedAlgorithm( + "ed448 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.ed448.from_public_bytes(data) + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + The serialized bytes of the public key. + """ + + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + """ + + @abc.abstractmethod + def verify(self, signature: Buffer, data: Buffer) -> None: + """ + Verify the signature. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> Ed448PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> Ed448PublicKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "ed448"): + Ed448PublicKey.register(rust_openssl.ed448.Ed448PublicKey) + + +class Ed448PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> Ed448PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.ed448_supported(): + raise UnsupportedAlgorithm( + "ed448 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.ed448.generate_key() + + @classmethod + def from_private_bytes(cls, data: Buffer) -> Ed448PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.ed448_supported(): + raise UnsupportedAlgorithm( + "ed448 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.ed448.from_private_bytes(data) + + @abc.abstractmethod + def public_key(self) -> Ed448PublicKey: + """ + The Ed448PublicKey derived from the private key. + """ + + @abc.abstractmethod + def sign(self, data: Buffer) -> bytes: + """ + Signs the data. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + The serialized bytes of the private key. + """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key. + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + """ + + @abc.abstractmethod + def __copy__(self) -> Ed448PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> Ed448PrivateKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "x448"): + Ed448PrivateKey.register(rust_openssl.ed448.Ed448PrivateKey) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/mldsa.py b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/mldsa.py new file mode 100644 index 0000000..0bd9684 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/mldsa.py @@ -0,0 +1,441 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization +from cryptography.utils import Buffer + + +class MLDSA44PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: bytes) -> MLDSA44PublicKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mldsa_supported(): + raise UnsupportedAlgorithm( + "ML-DSA-44 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mldsa.from_mldsa44_public_bytes(data) + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + The serialized bytes of the public key. + """ + + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + + The public key is 1,312 bytes for MLDSA-44. + """ + + @abc.abstractmethod + def verify( + self, + signature: Buffer, + data: Buffer, + context: Buffer | None = None, + ) -> None: + """ + Verify the signature. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> MLDSA44PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLDSA44PublicKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mldsa"): + MLDSA44PublicKey.register(rust_openssl.mldsa.MLDSA44PublicKey) + + +class MLDSA44PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> MLDSA44PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mldsa_supported(): + raise UnsupportedAlgorithm( + "ML-DSA-44 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mldsa.generate_mldsa44_key() + + @classmethod + def from_seed_bytes(cls, data: Buffer) -> MLDSA44PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mldsa_supported(): + raise UnsupportedAlgorithm( + "ML-DSA-44 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mldsa.from_mldsa44_seed_bytes(data) + + @abc.abstractmethod + def public_key(self) -> MLDSA44PublicKey: + """ + The MLDSA44PublicKey derived from the private key. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + The serialized bytes of the private key. + + This method only returns the serialization of the seed form of the + private key, never the expanded one. + """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key. + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + + This method only returns the seed form of the private key (32 bytes). + """ + + @abc.abstractmethod + def sign(self, data: Buffer, context: Buffer | None = None) -> bytes: + """ + Signs the data. + """ + + @abc.abstractmethod + def __copy__(self) -> MLDSA44PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLDSA44PrivateKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mldsa"): + MLDSA44PrivateKey.register(rust_openssl.mldsa.MLDSA44PrivateKey) + + +class MLDSA65PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: bytes) -> MLDSA65PublicKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mldsa_supported(): + raise UnsupportedAlgorithm( + "ML-DSA-65 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mldsa.from_mldsa65_public_bytes(data) + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + The serialized bytes of the public key. + """ + + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + + The public key is 1,952 bytes for MLDSA-65. + """ + + @abc.abstractmethod + def verify( + self, + signature: Buffer, + data: Buffer, + context: Buffer | None = None, + ) -> None: + """ + Verify the signature. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> MLDSA65PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLDSA65PublicKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mldsa"): + MLDSA65PublicKey.register(rust_openssl.mldsa.MLDSA65PublicKey) + + +class MLDSA65PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> MLDSA65PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mldsa_supported(): + raise UnsupportedAlgorithm( + "ML-DSA-65 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mldsa.generate_mldsa65_key() + + @classmethod + def from_seed_bytes(cls, data: Buffer) -> MLDSA65PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mldsa_supported(): + raise UnsupportedAlgorithm( + "ML-DSA-65 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mldsa.from_mldsa65_seed_bytes(data) + + @abc.abstractmethod + def public_key(self) -> MLDSA65PublicKey: + """ + The MLDSA65PublicKey derived from the private key. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + The serialized bytes of the private key. + + This method only returns the serialization of the seed form of the + private key, never the expanded one. + """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key. + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + + This method only returns the seed form of the private key (32 bytes). + """ + + @abc.abstractmethod + def sign(self, data: Buffer, context: Buffer | None = None) -> bytes: + """ + Signs the data. + """ + + @abc.abstractmethod + def __copy__(self) -> MLDSA65PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLDSA65PrivateKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mldsa"): + MLDSA65PrivateKey.register(rust_openssl.mldsa.MLDSA65PrivateKey) + + +class MLDSA87PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: bytes) -> MLDSA87PublicKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mldsa_supported(): + raise UnsupportedAlgorithm( + "ML-DSA-87 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mldsa.from_mldsa87_public_bytes(data) + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + The serialized bytes of the public key. + """ + + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + + The public key is 2,592 bytes for MLDSA-87. + """ + + @abc.abstractmethod + def verify( + self, + signature: Buffer, + data: Buffer, + context: Buffer | None = None, + ) -> None: + """ + Verify the signature. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> MLDSA87PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLDSA87PublicKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mldsa"): + MLDSA87PublicKey.register(rust_openssl.mldsa.MLDSA87PublicKey) + + +class MLDSA87PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> MLDSA87PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mldsa_supported(): + raise UnsupportedAlgorithm( + "ML-DSA-87 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mldsa.generate_mldsa87_key() + + @classmethod + def from_seed_bytes(cls, data: Buffer) -> MLDSA87PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mldsa_supported(): + raise UnsupportedAlgorithm( + "ML-DSA-87 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mldsa.from_mldsa87_seed_bytes(data) + + @abc.abstractmethod + def public_key(self) -> MLDSA87PublicKey: + """ + The MLDSA87PublicKey derived from the private key. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + The serialized bytes of the private key. + + This method only returns the serialization of the seed form of the + private key, never the expanded one. + """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key. + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + + This method only returns the seed form of the private key (32 bytes). + """ + + @abc.abstractmethod + def sign(self, data: Buffer, context: Buffer | None = None) -> bytes: + """ + Signs the data. + """ + + @abc.abstractmethod + def __copy__(self) -> MLDSA87PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLDSA87PrivateKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mldsa"): + MLDSA87PrivateKey.register(rust_openssl.mldsa.MLDSA87PrivateKey) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/mlkem.py b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/mlkem.py new file mode 100644 index 0000000..64bca11 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/mlkem.py @@ -0,0 +1,278 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization +from cryptography.utils import Buffer + + +class MLKEM768PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: Buffer) -> MLKEM768PublicKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mlkem_supported(): + raise UnsupportedAlgorithm( + "ML-KEM-768 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mlkem.from_mlkem768_public_bytes(data) + + @abc.abstractmethod + def encapsulate(self) -> tuple[bytes, bytes]: + """ + Encapsulate: returns (shared_secret, ciphertext). + """ + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + The serialized bytes of the public key. + """ + + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + + The public key is 1,184 bytes for ML-KEM-768. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> MLKEM768PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLKEM768PublicKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mlkem"): + MLKEM768PublicKey.register(rust_openssl.mlkem.MLKEM768PublicKey) + + +class MLKEM768PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> MLKEM768PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mlkem_supported(): + raise UnsupportedAlgorithm( + "ML-KEM-768 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mlkem.generate_mlkem768_key() + + @classmethod + def from_seed_bytes(cls, data: Buffer) -> MLKEM768PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mlkem_supported(): + raise UnsupportedAlgorithm( + "ML-KEM-768 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mlkem.from_mlkem768_seed_bytes(data) + + @abc.abstractmethod + def decapsulate(self, ciphertext: Buffer) -> bytes: + """ + Decapsulate: returns shared_secret. + """ + + @abc.abstractmethod + def public_key(self) -> MLKEM768PublicKey: + """ + The MLKEM768PublicKey derived from this private key. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + The serialized bytes of the private key. + """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key (64-byte seed). + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + """ + + @abc.abstractmethod + def __copy__(self) -> MLKEM768PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLKEM768PrivateKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mlkem"): + MLKEM768PrivateKey.register(rust_openssl.mlkem.MLKEM768PrivateKey) + + +class MLKEM1024PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: Buffer) -> MLKEM1024PublicKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mlkem_supported(): + raise UnsupportedAlgorithm( + "ML-KEM-1024 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mlkem.from_mlkem1024_public_bytes(data) + + @abc.abstractmethod + def encapsulate(self) -> tuple[bytes, bytes]: + """ + Encapsulate: returns (shared_secret, ciphertext). + """ + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + The serialized bytes of the public key. + """ + + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + + The public key is 1,568 bytes for ML-KEM-1024. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> MLKEM1024PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLKEM1024PublicKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mlkem"): + MLKEM1024PublicKey.register(rust_openssl.mlkem.MLKEM1024PublicKey) + + +class MLKEM1024PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> MLKEM1024PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mlkem_supported(): + raise UnsupportedAlgorithm( + "ML-KEM-1024 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mlkem.generate_mlkem1024_key() + + @classmethod + def from_seed_bytes(cls, data: Buffer) -> MLKEM1024PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.mlkem_supported(): + raise UnsupportedAlgorithm( + "ML-KEM-1024 is not supported by this backend.", + _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM, + ) + + return rust_openssl.mlkem.from_mlkem1024_seed_bytes(data) + + @abc.abstractmethod + def decapsulate(self, ciphertext: Buffer) -> bytes: + """ + Decapsulate: returns shared_secret. + """ + + @abc.abstractmethod + def public_key(self) -> MLKEM1024PublicKey: + """ + The MLKEM1024PublicKey derived from this private key. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + The serialized bytes of the private key. + """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key (64-byte seed). + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + """ + + @abc.abstractmethod + def __copy__(self) -> MLKEM1024PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> MLKEM1024PrivateKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "mlkem"): + MLKEM1024PrivateKey.register(rust_openssl.mlkem.MLKEM1024PrivateKey) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/padding.py b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/padding.py new file mode 100644 index 0000000..5121a28 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/padding.py @@ -0,0 +1,111 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives._asymmetric import ( + AsymmetricPadding as AsymmetricPadding, +) +from cryptography.hazmat.primitives.asymmetric import rsa + + +class PKCS1v15(AsymmetricPadding): + name = "EMSA-PKCS1-v1_5" + + +class _MaxLength: + "Sentinel value for `MAX_LENGTH`." + + +class _Auto: + "Sentinel value for `AUTO`." + + +class _DigestLength: + "Sentinel value for `DIGEST_LENGTH`." + + +class PSS(AsymmetricPadding): + MAX_LENGTH = _MaxLength() + AUTO = _Auto() + DIGEST_LENGTH = _DigestLength() + name = "EMSA-PSS" + _salt_length: int | _MaxLength | _Auto | _DigestLength + + def __init__( + self, + mgf: MGF, + salt_length: int | _MaxLength | _Auto | _DigestLength, + ) -> None: + self._mgf = mgf + + if not isinstance( + salt_length, (int, _MaxLength, _Auto, _DigestLength) + ): + raise TypeError( + "salt_length must be an integer, MAX_LENGTH, " + "DIGEST_LENGTH, or AUTO" + ) + + if isinstance(salt_length, int) and salt_length < 0: + raise ValueError("salt_length must be zero or greater.") + + self._salt_length = salt_length + + @property + def mgf(self) -> MGF: + return self._mgf + + +class OAEP(AsymmetricPadding): + name = "EME-OAEP" + + def __init__( + self, + mgf: MGF, + algorithm: hashes.HashAlgorithm, + label: bytes | None, + ): + if not isinstance(algorithm, hashes.HashAlgorithm): + raise TypeError("Expected instance of hashes.HashAlgorithm.") + + self._mgf = mgf + self._algorithm = algorithm + self._label = label + + @property + def algorithm(self) -> hashes.HashAlgorithm: + return self._algorithm + + @property + def mgf(self) -> MGF: + return self._mgf + + +class MGF(metaclass=abc.ABCMeta): + _algorithm: hashes.HashAlgorithm + + +class MGF1(MGF): + def __init__(self, algorithm: hashes.HashAlgorithm): + if not isinstance(algorithm, hashes.HashAlgorithm): + raise TypeError("Expected instance of hashes.HashAlgorithm.") + + self._algorithm = algorithm + + +def calculate_max_pss_salt_length( + key: rsa.RSAPrivateKey | rsa.RSAPublicKey, + hash_algorithm: hashes.HashAlgorithm, +) -> int: + if not isinstance(key, (rsa.RSAPrivateKey, rsa.RSAPublicKey)): + raise TypeError("key must be an RSA public or private key") + # bit length - 1 per RFC 3447 + emlen = (key.key_size + 6) // 8 + salt_length = emlen - hash_algorithm.digest_size - 2 + assert salt_length >= 0 + return salt_length diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/rsa.py b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/rsa.py new file mode 100644 index 0000000..d730ceb --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/rsa.py @@ -0,0 +1,295 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc +import random +import typing +from math import gcd, lcm + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization, hashes +from cryptography.hazmat.primitives._asymmetric import AsymmetricPadding +from cryptography.hazmat.primitives.asymmetric import utils as asym_utils + + +class RSAPrivateKey(metaclass=abc.ABCMeta): + @abc.abstractmethod + def decrypt(self, ciphertext: bytes, padding: AsymmetricPadding) -> bytes: + """ + Decrypts the provided ciphertext. + """ + + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + The bit length of the public modulus. + """ + + @abc.abstractmethod + def public_key(self) -> RSAPublicKey: + """ + The RSAPublicKey associated with this private key. + """ + + @abc.abstractmethod + def sign( + self, + data: bytes, + padding: AsymmetricPadding, + algorithm: asym_utils.Prehashed + | hashes.HashAlgorithm + | asym_utils.NoDigestInfo, + ) -> bytes: + """ + Signs the data. + """ + + @abc.abstractmethod + def private_numbers(self) -> RSAPrivateNumbers: + """ + Returns an RSAPrivateNumbers. + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + Returns the key serialized as bytes. + """ + + @abc.abstractmethod + def __copy__(self) -> RSAPrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> RSAPrivateKey: + """ + Returns a deep copy. + """ + + +RSAPrivateKeyWithSerialization = RSAPrivateKey +RSAPrivateKey.register(rust_openssl.rsa.RSAPrivateKey) + + +class RSAPublicKey(metaclass=abc.ABCMeta): + @abc.abstractmethod + def encrypt(self, plaintext: bytes, padding: AsymmetricPadding) -> bytes: + """ + Encrypts the given plaintext. + """ + + @property + @abc.abstractmethod + def key_size(self) -> int: + """ + The bit length of the public modulus. + """ + + @abc.abstractmethod + def public_numbers(self) -> RSAPublicNumbers: + """ + Returns an RSAPublicNumbers + """ + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + Returns the key serialized as bytes. + """ + + @abc.abstractmethod + def verify( + self, + signature: bytes, + data: bytes, + padding: AsymmetricPadding, + algorithm: asym_utils.Prehashed | hashes.HashAlgorithm, + ) -> None: + """ + Verifies the signature of the data. + """ + + @abc.abstractmethod + def recover_data_from_signature( + self, + signature: bytes, + padding: AsymmetricPadding, + algorithm: hashes.HashAlgorithm | asym_utils.NoDigestInfo | None, + ) -> bytes: + """ + Recovers the original data from the signature. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> RSAPublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> RSAPublicKey: + """ + Returns a deep copy. + """ + + +RSAPublicKeyWithSerialization = RSAPublicKey +RSAPublicKey.register(rust_openssl.rsa.RSAPublicKey) + +RSAPrivateNumbers = rust_openssl.rsa.RSAPrivateNumbers +RSAPublicNumbers = rust_openssl.rsa.RSAPublicNumbers + + +def generate_private_key( + public_exponent: int, + key_size: int, + backend: typing.Any = None, +) -> RSAPrivateKey: + _verify_rsa_parameters(public_exponent, key_size) + return rust_openssl.rsa.generate_private_key(public_exponent, key_size) + + +def _verify_rsa_parameters(public_exponent: int, key_size: int) -> None: + if public_exponent not in (3, 65537): + raise ValueError( + "public_exponent must be either 3 (for legacy compatibility) or " + "65537. Almost everyone should choose 65537 here!" + ) + + if key_size < 1024: + raise ValueError("key_size must be at least 1024-bits.") + + +def _modinv(e: int, m: int) -> int: + """ + Modular Multiplicative Inverse. Returns x such that: (x*e) mod m == 1 + """ + x1, x2 = 1, 0 + a, b = e, m + while b > 0: + q, r = divmod(a, b) + xn = x1 - q * x2 + a, b, x1, x2 = b, r, x2, xn + return x1 % m + + +def rsa_crt_iqmp(p: int, q: int) -> int: + """ + Compute the CRT (q ** -1) % p value from RSA primes p and q. + """ + if p <= 1 or q <= 1: + raise ValueError("Values can't be <= 1") + return _modinv(q, p) + + +def rsa_crt_dmp1(private_exponent: int, p: int) -> int: + """ + Compute the CRT private_exponent % (p - 1) value from the RSA + private_exponent (d) and p. + """ + if private_exponent <= 1 or p <= 1: + raise ValueError("Values can't be <= 1") + return private_exponent % (p - 1) + + +def rsa_crt_dmq1(private_exponent: int, q: int) -> int: + """ + Compute the CRT private_exponent % (q - 1) value from the RSA + private_exponent (d) and q. + """ + if private_exponent <= 1 or q <= 1: + raise ValueError("Values can't be <= 1") + return private_exponent % (q - 1) + + +def rsa_recover_private_exponent(e: int, p: int, q: int) -> int: + """ + Compute the RSA private_exponent (d) given the public exponent (e) + and the RSA primes p and q. + + This uses the Carmichael totient function to generate the + smallest possible working value of the private exponent. + """ + # This lambda_n is the Carmichael totient function. + # The original RSA paper uses the Euler totient function + # here: phi_n = (p - 1) * (q - 1) + # Either version of the private exponent will work, but the + # one generated by the older formulation may be larger + # than necessary. (lambda_n always divides phi_n) + if e <= 1 or p <= 1 or q <= 1: + raise ValueError("Values can't be <= 1") + return _modinv(e, lcm(p - 1, q - 1)) + + +# Controls the number of iterations rsa_recover_prime_factors will perform +# to obtain the prime factors. +_MAX_RECOVERY_ATTEMPTS = 500 + + +def rsa_recover_prime_factors(n: int, e: int, d: int) -> tuple[int, int]: + """ + Compute factors p and q from the private exponent d. We assume that n has + no more than two factors. This function is adapted from code in PyCrypto. + """ + # reject invalid values early + if d <= 1 or e <= 1: + raise ValueError("d, e can't be <= 1") + if 17 != pow(17, e * d, n): + raise ValueError("n, d, e don't match") + # See 8.2.2(i) in Handbook of Applied Cryptography. + ktot = d * e - 1 + # The quantity d*e-1 is a multiple of phi(n), even, + # and can be represented as t*2^s. + t = ktot + while t % 2 == 0: + t = t // 2 + # Cycle through all multiplicative inverses in Zn. + # The algorithm is non-deterministic, but there is a 50% chance + # any candidate a leads to successful factoring. + # See "Digitalized Signatures and Public Key Functions as Intractable + # as Factorization", M. Rabin, 1979 + spotted = False + tries = 0 + while not spotted and tries < _MAX_RECOVERY_ATTEMPTS: + a = random.randint(2, n - 1) + tries += 1 + k = t + # Cycle through all values a^{t*2^i}=a^k + while k < ktot: + cand = pow(a, k, n) + # Check if a^k is a non-trivial root of unity (mod n) + if cand != 1 and cand != (n - 1) and pow(cand, 2, n) == 1: + # We have found a number such that (cand-1)(cand+1)=0 (mod n). + # Either of the terms divides n. + p = gcd(cand + 1, n) + spotted = True + break + k *= 2 + if not spotted: + raise ValueError("Unable to compute factors p and q from exponent d.") + # Found ! + q, r = divmod(n, p) + assert r == 0 + p, q = sorted((p, q), reverse=True) + return (p, q) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/types.py b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/types.py new file mode 100644 index 0000000..dfd12ce --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/types.py @@ -0,0 +1,123 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import typing + +from cryptography import utils +from cryptography.hazmat.primitives.asymmetric import ( + dh, + dsa, + ec, + ed448, + ed25519, + mldsa, + mlkem, + rsa, + x448, + x25519, +) + +# Every asymmetric key type +PublicKeyTypes = typing.Union[ + dh.DHPublicKey, + dsa.DSAPublicKey, + rsa.RSAPublicKey, + ec.EllipticCurvePublicKey, + ed25519.Ed25519PublicKey, + ed448.Ed448PublicKey, + mldsa.MLDSA44PublicKey, + mldsa.MLDSA65PublicKey, + mldsa.MLDSA87PublicKey, + mlkem.MLKEM768PublicKey, + mlkem.MLKEM1024PublicKey, + x25519.X25519PublicKey, + x448.X448PublicKey, +] +PUBLIC_KEY_TYPES = PublicKeyTypes +utils.deprecated( + PUBLIC_KEY_TYPES, + __name__, + "Use PublicKeyTypes instead", + utils.DeprecatedIn40, + name="PUBLIC_KEY_TYPES", +) +# Every asymmetric key type +PrivateKeyTypes = typing.Union[ + dh.DHPrivateKey, + ed25519.Ed25519PrivateKey, + ed448.Ed448PrivateKey, + mldsa.MLDSA44PrivateKey, + mldsa.MLDSA65PrivateKey, + mldsa.MLDSA87PrivateKey, + mlkem.MLKEM768PrivateKey, + mlkem.MLKEM1024PrivateKey, + rsa.RSAPrivateKey, + dsa.DSAPrivateKey, + ec.EllipticCurvePrivateKey, + x25519.X25519PrivateKey, + x448.X448PrivateKey, +] +PRIVATE_KEY_TYPES = PrivateKeyTypes +utils.deprecated( + PRIVATE_KEY_TYPES, + __name__, + "Use PrivateKeyTypes instead", + utils.DeprecatedIn40, + name="PRIVATE_KEY_TYPES", +) +# Just the key types we allow to be used for x509 signing. This mirrors +# the certificate public key types +CertificateIssuerPrivateKeyTypes = typing.Union[ + ed25519.Ed25519PrivateKey, + ed448.Ed448PrivateKey, + rsa.RSAPrivateKey, + dsa.DSAPrivateKey, + ec.EllipticCurvePrivateKey, +] +CERTIFICATE_PRIVATE_KEY_TYPES = CertificateIssuerPrivateKeyTypes +utils.deprecated( + CERTIFICATE_PRIVATE_KEY_TYPES, + __name__, + "Use CertificateIssuerPrivateKeyTypes instead", + utils.DeprecatedIn40, + name="CERTIFICATE_PRIVATE_KEY_TYPES", +) +# Just the key types we allow to be used for x509 signing. This mirrors +# the certificate private key types +CertificateIssuerPublicKeyTypes = typing.Union[ + dsa.DSAPublicKey, + rsa.RSAPublicKey, + ec.EllipticCurvePublicKey, + ed25519.Ed25519PublicKey, + ed448.Ed448PublicKey, +] +CERTIFICATE_ISSUER_PUBLIC_KEY_TYPES = CertificateIssuerPublicKeyTypes +utils.deprecated( + CERTIFICATE_ISSUER_PUBLIC_KEY_TYPES, + __name__, + "Use CertificateIssuerPublicKeyTypes instead", + utils.DeprecatedIn40, + name="CERTIFICATE_ISSUER_PUBLIC_KEY_TYPES", +) +# This type removes DHPublicKey. x448/x25519 can be a public key +# but cannot be used in signing so they are allowed here. +CertificatePublicKeyTypes = typing.Union[ + dsa.DSAPublicKey, + rsa.RSAPublicKey, + ec.EllipticCurvePublicKey, + ed25519.Ed25519PublicKey, + ed448.Ed448PublicKey, + x25519.X25519PublicKey, + x448.X448PublicKey, +] +CERTIFICATE_PUBLIC_KEY_TYPES = CertificatePublicKeyTypes +utils.deprecated( + CERTIFICATE_PUBLIC_KEY_TYPES, + __name__, + "Use CertificatePublicKeyTypes instead", + utils.DeprecatedIn40, + name="CERTIFICATE_PUBLIC_KEY_TYPES", +) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/utils.py b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/utils.py new file mode 100644 index 0000000..c01c342 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/utils.py @@ -0,0 +1,28 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import asn1 +from cryptography.hazmat.primitives import hashes + +decode_dss_signature = asn1.decode_dss_signature +encode_dss_signature = asn1.encode_dss_signature + + +class NoDigestInfo: + pass + + +class Prehashed: + def __init__(self, algorithm: hashes.HashAlgorithm): + if not isinstance(algorithm, hashes.HashAlgorithm): + raise TypeError("Expected instance of HashAlgorithm.") + + self._algorithm = algorithm + self._digest_size = algorithm.digest_size + + @property + def digest_size(self) -> int: + return self._digest_size diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/x25519.py b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/x25519.py new file mode 100644 index 0000000..7498998 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/x25519.py @@ -0,0 +1,134 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization +from cryptography.utils import Buffer + + +class X25519PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: bytes) -> X25519PublicKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.x25519_supported(): + raise UnsupportedAlgorithm( + "X25519 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, + ) + + return rust_openssl.x25519.from_public_bytes(data) + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + The serialized bytes of the public key. + """ + + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> X25519PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> X25519PublicKey: + """ + Returns a deep copy. + """ + + +X25519PublicKey.register(rust_openssl.x25519.X25519PublicKey) + + +class X25519PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> X25519PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.x25519_supported(): + raise UnsupportedAlgorithm( + "X25519 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, + ) + return rust_openssl.x25519.generate_key() + + @classmethod + def from_private_bytes(cls, data: Buffer) -> X25519PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.x25519_supported(): + raise UnsupportedAlgorithm( + "X25519 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, + ) + + return rust_openssl.x25519.from_private_bytes(data) + + @abc.abstractmethod + def public_key(self) -> X25519PublicKey: + """ + Returns the public key associated with this private key + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + The serialized bytes of the private key. + """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key. + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + """ + + @abc.abstractmethod + def exchange(self, peer_public_key: X25519PublicKey) -> bytes: + """ + Performs a key exchange operation using the provided peer's public key. + """ + + @abc.abstractmethod + def __copy__(self) -> X25519PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> X25519PrivateKey: + """ + Returns a deep copy. + """ + + +X25519PrivateKey.register(rust_openssl.x25519.X25519PrivateKey) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/x448.py b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/x448.py new file mode 100644 index 0000000..b9dc826 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/asymmetric/x448.py @@ -0,0 +1,137 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import _serialization +from cryptography.utils import Buffer + + +class X448PublicKey(metaclass=abc.ABCMeta): + @classmethod + def from_public_bytes(cls, data: bytes) -> X448PublicKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.x448_supported(): + raise UnsupportedAlgorithm( + "X448 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, + ) + + return rust_openssl.x448.from_public_bytes(data) + + @abc.abstractmethod + def public_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PublicFormat, + ) -> bytes: + """ + The serialized bytes of the public key. + """ + + @abc.abstractmethod + def public_bytes_raw(self) -> bytes: + """ + The raw bytes of the public key. + Equivalent to public_bytes(Raw, Raw). + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Checks equality. + """ + + @abc.abstractmethod + def __copy__(self) -> X448PublicKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> X448PublicKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "x448"): + X448PublicKey.register(rust_openssl.x448.X448PublicKey) + + +class X448PrivateKey(metaclass=abc.ABCMeta): + @classmethod + def generate(cls) -> X448PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.x448_supported(): + raise UnsupportedAlgorithm( + "X448 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, + ) + + return rust_openssl.x448.generate_key() + + @classmethod + def from_private_bytes(cls, data: Buffer) -> X448PrivateKey: + from cryptography.hazmat.backends.openssl.backend import backend + + if not backend.x448_supported(): + raise UnsupportedAlgorithm( + "X448 is not supported by this version of OpenSSL.", + _Reasons.UNSUPPORTED_EXCHANGE_ALGORITHM, + ) + + return rust_openssl.x448.from_private_bytes(data) + + @abc.abstractmethod + def public_key(self) -> X448PublicKey: + """ + Returns the public key associated with this private key + """ + + @abc.abstractmethod + def private_bytes( + self, + encoding: _serialization.Encoding, + format: _serialization.PrivateFormat, + encryption_algorithm: _serialization.KeySerializationEncryption, + ) -> bytes: + """ + The serialized bytes of the private key. + """ + + @abc.abstractmethod + def private_bytes_raw(self) -> bytes: + """ + The raw bytes of the private key. + Equivalent to private_bytes(Raw, Raw, NoEncryption()). + """ + + @abc.abstractmethod + def exchange(self, peer_public_key: X448PublicKey) -> bytes: + """ + Performs a key exchange operation using the provided peer's public key. + """ + + @abc.abstractmethod + def __copy__(self) -> X448PrivateKey: + """ + Returns a copy. + """ + + @abc.abstractmethod + def __deepcopy__(self, memo: dict) -> X448PrivateKey: + """ + Returns a deep copy. + """ + + +if hasattr(rust_openssl, "x448"): + X448PrivateKey.register(rust_openssl.x448.X448PrivateKey) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/ciphers/__init__.py b/intelliaide/vendor/cryptography/hazmat/primitives/ciphers/__init__.py new file mode 100644 index 0000000..10c15d0 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/ciphers/__init__.py @@ -0,0 +1,27 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.primitives._cipheralgorithm import ( + BlockCipherAlgorithm, + CipherAlgorithm, +) +from cryptography.hazmat.primitives.ciphers.base import ( + AEADCipherContext, + AEADDecryptionContext, + AEADEncryptionContext, + Cipher, + CipherContext, +) + +__all__ = [ + "AEADCipherContext", + "AEADDecryptionContext", + "AEADEncryptionContext", + "BlockCipherAlgorithm", + "Cipher", + "CipherAlgorithm", + "CipherContext", +] diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/ciphers/aead.py b/intelliaide/vendor/cryptography/hazmat/primitives/ciphers/aead.py new file mode 100644 index 0000000..c8a582d --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/ciphers/aead.py @@ -0,0 +1,23 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl + +__all__ = [ + "AESCCM", + "AESGCM", + "AESGCMSIV", + "AESOCB3", + "AESSIV", + "ChaCha20Poly1305", +] + +AESGCM = rust_openssl.aead.AESGCM +ChaCha20Poly1305 = rust_openssl.aead.ChaCha20Poly1305 +AESCCM = rust_openssl.aead.AESCCM +AESSIV = rust_openssl.aead.AESSIV +AESOCB3 = rust_openssl.aead.AESOCB3 +AESGCMSIV = rust_openssl.aead.AESGCMSIV diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/ciphers/algorithms.py b/intelliaide/vendor/cryptography/hazmat/primitives/ciphers/algorithms.py new file mode 100644 index 0000000..6b20dd5 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/ciphers/algorithms.py @@ -0,0 +1,138 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography import utils +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + ARC4 as ARC4, +) +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + CAST5 as CAST5, +) +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + IDEA as IDEA, +) +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + SEED as SEED, +) +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + Blowfish as Blowfish, +) +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + Camellia as Camellia, +) +from cryptography.hazmat.decrepit.ciphers.algorithms import ( + TripleDES as TripleDES, +) +from cryptography.hazmat.primitives._cipheralgorithm import _verify_key_size +from cryptography.hazmat.primitives.ciphers import ( + BlockCipherAlgorithm, + CipherAlgorithm, +) + + +class AES(BlockCipherAlgorithm): + name = "AES" + block_size = 128 + # 512 added to support AES-256-XTS, which uses 512-bit keys + key_sizes = frozenset([128, 192, 256, 512]) + + def __init__(self, key: utils.Buffer): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class AES128(BlockCipherAlgorithm): + name = "AES" + block_size = 128 + key_sizes = frozenset([128]) + key_size = 128 + + def __init__(self, key: utils.Buffer): + self.key = _verify_key_size(self, key) + + +class AES256(BlockCipherAlgorithm): + name = "AES" + block_size = 128 + key_sizes = frozenset([256]) + key_size = 256 + + def __init__(self, key: utils.Buffer): + self.key = _verify_key_size(self, key) + + +utils.deprecated( + Camellia, + __name__, + "Camellia has been moved to " + "cryptography.hazmat.decrepit.ciphers.algorithms.Camellia and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.algorithms in 49.0.0.", + utils.DeprecatedIn43, + name="Camellia", +) + + +utils.deprecated( + ARC4, + __name__, + "ARC4 has been moved to " + "cryptography.hazmat.decrepit.ciphers.algorithms.ARC4 and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.", + utils.DeprecatedIn43, + name="ARC4", +) + + +utils.deprecated( + TripleDES, + __name__, + "TripleDES has been moved to " + "cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.", + utils.DeprecatedIn43, + name="TripleDES", +) + + +class ChaCha20(CipherAlgorithm): + name = "ChaCha20" + key_sizes = frozenset([256]) + + def __init__(self, key: utils.Buffer, nonce: utils.Buffer): + self.key = _verify_key_size(self, key) + utils._check_byteslike("nonce", nonce) + + if len(nonce) != 16: + raise ValueError("nonce must be 128-bits (16 bytes)") + + self._nonce = nonce + + @property + def nonce(self) -> utils.Buffer: + return self._nonce + + @property + def key_size(self) -> int: + return len(self.key) * 8 + + +class SM4(BlockCipherAlgorithm): + name = "SM4" + block_size = 128 + key_sizes = frozenset([128]) + + def __init__(self, key: bytes): + self.key = _verify_key_size(self, key) + + @property + def key_size(self) -> int: + return len(self.key) * 8 diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/ciphers/base.py b/intelliaide/vendor/cryptography/hazmat/primitives/ciphers/base.py new file mode 100644 index 0000000..24fceea --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/ciphers/base.py @@ -0,0 +1,146 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc +import typing + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives._cipheralgorithm import CipherAlgorithm +from cryptography.hazmat.primitives.ciphers import modes +from cryptography.utils import Buffer + + +class CipherContext(metaclass=abc.ABCMeta): + @abc.abstractmethod + def update(self, data: Buffer) -> bytes: + """ + Processes the provided bytes through the cipher and returns the results + as bytes. + """ + + @abc.abstractmethod + def update_into(self, data: Buffer, buf: Buffer) -> int: + """ + Processes the provided bytes and writes the resulting data into the + provided buffer. Returns the number of bytes written. + """ + + @abc.abstractmethod + def finalize(self) -> bytes: + """ + Returns the results of processing the final block as bytes. + """ + + @abc.abstractmethod + def reset_nonce(self, nonce: bytes) -> None: + """ + Resets the nonce for the cipher context to the provided value. + Raises an exception if it does not support reset or if the + provided nonce does not have a valid length. + """ + + +class AEADCipherContext(CipherContext, metaclass=abc.ABCMeta): + @abc.abstractmethod + def authenticate_additional_data(self, data: Buffer) -> None: + """ + Authenticates the provided bytes. + """ + + +class AEADDecryptionContext(AEADCipherContext, metaclass=abc.ABCMeta): + @abc.abstractmethod + def finalize_with_tag(self, tag: bytes) -> bytes: + """ + Returns the results of processing the final block as bytes and allows + delayed passing of the authentication tag. + """ + + +class AEADEncryptionContext(AEADCipherContext, metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def tag(self) -> bytes: + """ + Returns tag bytes. This is only available after encryption is + finalized. + """ + + +Mode = typing.TypeVar( + "Mode", bound=typing.Optional[modes.Mode], covariant=True +) + + +class Cipher(typing.Generic[Mode]): + def __init__( + self, + algorithm: CipherAlgorithm, + mode: Mode, + backend: typing.Any = None, + ) -> None: + if not isinstance(algorithm, CipherAlgorithm): + raise TypeError("Expected interface of CipherAlgorithm.") + + if mode is not None: + # mypy needs this assert to narrow the type from our generic + # type. Maybe it won't some time in the future. + assert isinstance(mode, modes.Mode) + mode.validate_for_algorithm(algorithm) + + self.algorithm = algorithm + self.mode = mode + + @typing.overload + def encryptor( + self: Cipher[modes.ModeWithAuthenticationTag], + ) -> AEADEncryptionContext: ... + + @typing.overload + def encryptor( + self: _CIPHER_TYPE, + ) -> CipherContext: ... + + def encryptor(self): + if isinstance(self.mode, modes.ModeWithAuthenticationTag): + if self.mode.tag is not None: + raise ValueError( + "Authentication tag must be None when encrypting." + ) + + return rust_openssl.ciphers.create_encryption_ctx( + self.algorithm, self.mode + ) + + @typing.overload + def decryptor( + self: Cipher[modes.ModeWithAuthenticationTag], + ) -> AEADDecryptionContext: ... + + @typing.overload + def decryptor( + self: _CIPHER_TYPE, + ) -> CipherContext: ... + + def decryptor(self): + return rust_openssl.ciphers.create_decryption_ctx( + self.algorithm, self.mode + ) + + +_CIPHER_TYPE = Cipher[ + typing.Union[ + modes.ModeWithNonce, + modes.ModeWithTweak, + modes.ECB, + modes.ModeWithInitializationVector, + None, + ] +] + +CipherContext.register(rust_openssl.ciphers.CipherContext) +AEADEncryptionContext.register(rust_openssl.ciphers.AEADEncryptionContext) +AEADDecryptionContext.register(rust_openssl.ciphers.AEADDecryptionContext) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/ciphers/modes.py b/intelliaide/vendor/cryptography/hazmat/primitives/ciphers/modes.py new file mode 100644 index 0000000..0f1c217 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/ciphers/modes.py @@ -0,0 +1,192 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography import utils +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.decrepit.ciphers.modes import CFB as CFB +from cryptography.hazmat.decrepit.ciphers.modes import CFB8 as CFB8 +from cryptography.hazmat.decrepit.ciphers.modes import OFB as OFB +from cryptography.hazmat.primitives._cipheralgorithm import ( + BlockCipherAlgorithm, + CipherAlgorithm, +) +from cryptography.hazmat.primitives._modes import ( + Mode as Mode, +) +from cryptography.hazmat.primitives._modes import ( + ModeWithAuthenticationTag as ModeWithAuthenticationTag, +) +from cryptography.hazmat.primitives._modes import ( + ModeWithInitializationVector as ModeWithInitializationVector, +) +from cryptography.hazmat.primitives._modes import ( + ModeWithNonce as ModeWithNonce, +) +from cryptography.hazmat.primitives._modes import ( + ModeWithTweak as ModeWithTweak, +) +from cryptography.hazmat.primitives._modes import ( + _check_aes_key_length, + _check_iv_and_key_length, + _check_nonce_length, +) +from cryptography.hazmat.primitives.ciphers import algorithms + + +class CBC(ModeWithInitializationVector): + name = "CBC" + + def __init__(self, initialization_vector: utils.Buffer): + utils._check_byteslike("initialization_vector", initialization_vector) + self._initialization_vector = initialization_vector + + @property + def initialization_vector(self) -> utils.Buffer: + return self._initialization_vector + + validate_for_algorithm = _check_iv_and_key_length + + +class XTS(ModeWithTweak): + name = "XTS" + + def __init__(self, tweak: utils.Buffer): + utils._check_byteslike("tweak", tweak) + + if len(tweak) != 16: + raise ValueError("tweak must be 128-bits (16 bytes)") + + self._tweak = tweak + + @property + def tweak(self) -> utils.Buffer: + return self._tweak + + def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: + if isinstance(algorithm, (algorithms.AES128, algorithms.AES256)): + raise TypeError( + "The AES128 and AES256 classes do not support XTS, please use " + "the standard AES class instead." + ) + + if algorithm.key_size not in (256, 512): + raise ValueError( + "The XTS specification requires a 256-bit key for AES-128-XTS" + " and 512-bit key for AES-256-XTS" + ) + + +class ECB(Mode): + name = "ECB" + + validate_for_algorithm = _check_aes_key_length + + +class CTR(ModeWithNonce): + name = "CTR" + + def __init__(self, nonce: utils.Buffer): + utils._check_byteslike("nonce", nonce) + self._nonce = nonce + + @property + def nonce(self) -> utils.Buffer: + return self._nonce + + def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: + _check_aes_key_length(self, algorithm) + _check_nonce_length(self.nonce, self.name, algorithm) + + +class GCM(ModeWithInitializationVector, ModeWithAuthenticationTag): + name = "GCM" + _MAX_ENCRYPTED_BYTES = (2**39 - 256) // 8 + _MAX_AAD_BYTES = (2**64) // 8 + + def __init__( + self, + initialization_vector: utils.Buffer, + tag: bytes | None = None, + min_tag_length: int = 16, + ): + # OpenSSL 3.0.0 constrains GCM IVs to [64, 1024] bits inclusive + # This is a sane limit anyway so we'll enforce it here. + utils._check_byteslike("initialization_vector", initialization_vector) + if len(initialization_vector) < 8 or len(initialization_vector) > 128: + raise ValueError( + "initialization_vector must be between 8 and 128 bytes (64 " + "and 1024 bits)." + ) + self._initialization_vector = initialization_vector + if tag is not None: + utils._check_bytes("tag", tag) + if min_tag_length < 4: + raise ValueError("min_tag_length must be >= 4") + if len(tag) < min_tag_length: + raise ValueError( + f"Authentication tag must be {min_tag_length} bytes or " + "longer." + ) + self._tag = tag + self._min_tag_length = min_tag_length + + @property + def tag(self) -> bytes | None: + return self._tag + + @property + def initialization_vector(self) -> utils.Buffer: + return self._initialization_vector + + def validate_for_algorithm(self, algorithm: CipherAlgorithm) -> None: + _check_aes_key_length(self, algorithm) + if not isinstance(algorithm, BlockCipherAlgorithm): + raise UnsupportedAlgorithm( + "GCM requires a block cipher algorithm", + _Reasons.UNSUPPORTED_CIPHER, + ) + block_size_bytes = algorithm.block_size // 8 + if self._tag is not None and len(self._tag) > block_size_bytes: + raise ValueError( + f"Authentication tag cannot be more than {block_size_bytes} " + "bytes." + ) + + +utils.deprecated( + OFB, + __name__, + "OFB has been moved to " + "cryptography.hazmat.decrepit.ciphers.modes.OFB and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.modes in 49.0.0.", + utils.DeprecatedIn47, + name="OFB", +) + + +utils.deprecated( + CFB, + __name__, + "CFB has been moved to " + "cryptography.hazmat.decrepit.ciphers.modes.CFB and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.modes in 49.0.0.", + utils.DeprecatedIn47, + name="CFB", +) + + +utils.deprecated( + CFB8, + __name__, + "CFB8 has been moved to " + "cryptography.hazmat.decrepit.ciphers.modes.CFB8 and " + "will be removed from " + "cryptography.hazmat.primitives.ciphers.modes in 49.0.0.", + utils.DeprecatedIn47, + name="CFB8", +) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/cmac.py b/intelliaide/vendor/cryptography/hazmat/primitives/cmac.py new file mode 100644 index 0000000..2c67ce2 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/cmac.py @@ -0,0 +1,10 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl + +__all__ = ["CMAC"] +CMAC = rust_openssl.cmac.CMAC diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/constant_time.py b/intelliaide/vendor/cryptography/hazmat/primitives/constant_time.py new file mode 100644 index 0000000..3975c71 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/constant_time.py @@ -0,0 +1,14 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import hmac + + +def bytes_eq(a: bytes, b: bytes) -> bool: + if not isinstance(a, bytes) or not isinstance(b, bytes): + raise TypeError("a and b must be bytes.") + + return hmac.compare_digest(a, b) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/hashes.py b/intelliaide/vendor/cryptography/hazmat/primitives/hashes.py new file mode 100644 index 0000000..4b55ec3 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/hashes.py @@ -0,0 +1,246 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.utils import Buffer + +__all__ = [ + "MD5", + "SHA1", + "SHA3_224", + "SHA3_256", + "SHA3_384", + "SHA3_512", + "SHA224", + "SHA256", + "SHA384", + "SHA512", + "SHA512_224", + "SHA512_256", + "SHAKE128", + "SHAKE256", + "SM3", + "BLAKE2b", + "BLAKE2s", + "ExtendableOutputFunction", + "Hash", + "HashAlgorithm", + "HashContext", + "XOFHash", +] + + +class HashAlgorithm(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def name(self) -> str: + """ + A string naming this algorithm (e.g. "sha256", "md5"). + """ + + @property + @abc.abstractmethod + def digest_size(self) -> int: + """ + The size of the resulting digest in bytes. + """ + + @property + @abc.abstractmethod + def block_size(self) -> int | None: + """ + The internal block size of the hash function, or None if the hash + function does not use blocks internally (e.g. SHA3). + """ + + +class HashContext(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def algorithm(self) -> HashAlgorithm: + """ + A HashAlgorithm that will be used by this context. + """ + + @abc.abstractmethod + def update(self, data: Buffer) -> None: + """ + Processes the provided bytes through the hash. + """ + + @abc.abstractmethod + def finalize(self) -> bytes: + """ + Finalizes the hash context and returns the hash digest as bytes. + """ + + @abc.abstractmethod + def copy(self) -> HashContext: + """ + Return a HashContext that is a copy of the current context. + """ + + +Hash = rust_openssl.hashes.Hash +HashContext.register(Hash) + +XOFHash = rust_openssl.hashes.XOFHash + + +class ExtendableOutputFunction(metaclass=abc.ABCMeta): + """ + An interface for extendable output functions. + """ + + +class SHA1(HashAlgorithm): + name = "sha1" + digest_size = 20 + block_size = 64 + + +class SHA512_224(HashAlgorithm): # noqa: N801 + name = "sha512-224" + digest_size = 28 + block_size = 128 + + +class SHA512_256(HashAlgorithm): # noqa: N801 + name = "sha512-256" + digest_size = 32 + block_size = 128 + + +class SHA224(HashAlgorithm): + name = "sha224" + digest_size = 28 + block_size = 64 + + +class SHA256(HashAlgorithm): + name = "sha256" + digest_size = 32 + block_size = 64 + + +class SHA384(HashAlgorithm): + name = "sha384" + digest_size = 48 + block_size = 128 + + +class SHA512(HashAlgorithm): + name = "sha512" + digest_size = 64 + block_size = 128 + + +class SHA3_224(HashAlgorithm): # noqa: N801 + name = "sha3-224" + digest_size = 28 + block_size = None + + +class SHA3_256(HashAlgorithm): # noqa: N801 + name = "sha3-256" + digest_size = 32 + block_size = None + + +class SHA3_384(HashAlgorithm): # noqa: N801 + name = "sha3-384" + digest_size = 48 + block_size = None + + +class SHA3_512(HashAlgorithm): # noqa: N801 + name = "sha3-512" + digest_size = 64 + block_size = None + + +class SHAKE128(HashAlgorithm, ExtendableOutputFunction): + name = "shake128" + block_size = None + + def __init__(self, digest_size: int): + if not isinstance(digest_size, int): + raise TypeError("digest_size must be an integer") + + if digest_size < 1: + raise ValueError("digest_size must be a positive integer") + + self._digest_size = digest_size + + @property + def digest_size(self) -> int: + return self._digest_size + + +class SHAKE256(HashAlgorithm, ExtendableOutputFunction): + name = "shake256" + block_size = None + + def __init__(self, digest_size: int): + if not isinstance(digest_size, int): + raise TypeError("digest_size must be an integer") + + if digest_size < 1: + raise ValueError("digest_size must be a positive integer") + + self._digest_size = digest_size + + @property + def digest_size(self) -> int: + return self._digest_size + + +class MD5(HashAlgorithm): + name = "md5" + digest_size = 16 + block_size = 64 + + +class BLAKE2b(HashAlgorithm): + name = "blake2b" + _max_digest_size = 64 + _min_digest_size = 1 + block_size = 128 + + def __init__(self, digest_size: int): + if digest_size != 64: + raise ValueError("Digest size must be 64") + + self._digest_size = digest_size + + @property + def digest_size(self) -> int: + return self._digest_size + + +class BLAKE2s(HashAlgorithm): + name = "blake2s" + block_size = 64 + _max_digest_size = 32 + _min_digest_size = 1 + + def __init__(self, digest_size: int): + if digest_size != 32: + raise ValueError("Digest size must be 32") + + self._digest_size = digest_size + + @property + def digest_size(self) -> int: + return self._digest_size + + +class SM3(HashAlgorithm): + name = "sm3" + digest_size = 32 + block_size = 64 diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/hmac.py b/intelliaide/vendor/cryptography/hazmat/primitives/hmac.py new file mode 100644 index 0000000..a9442d5 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/hmac.py @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives import hashes + +__all__ = ["HMAC"] + +HMAC = rust_openssl.hmac.HMAC +hashes.HashContext.register(HMAC) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/hpke.py b/intelliaide/vendor/cryptography/hazmat/primitives/hpke.py new file mode 100644 index 0000000..c802808 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/hpke.py @@ -0,0 +1,27 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl + +AEAD = rust_openssl.hpke.AEAD +KDF = rust_openssl.hpke.KDF +KEM = rust_openssl.hpke.KEM +MLKEM768X25519PrivateKey = rust_openssl.hpke.MLKEM768X25519PrivateKey +MLKEM768X25519PublicKey = rust_openssl.hpke.MLKEM768X25519PublicKey +MLKEM1024P384PrivateKey = rust_openssl.hpke.MLKEM1024P384PrivateKey +MLKEM1024P384PublicKey = rust_openssl.hpke.MLKEM1024P384PublicKey +Suite = rust_openssl.hpke.Suite + +__all__ = [ + "AEAD", + "KDF", + "KEM", + "MLKEM768X25519PrivateKey", + "MLKEM768X25519PublicKey", + "MLKEM1024P384PrivateKey", + "MLKEM1024P384PublicKey", + "Suite", +] diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/kdf/__init__.py b/intelliaide/vendor/cryptography/hazmat/primitives/kdf/__init__.py new file mode 100644 index 0000000..26c45bd --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/kdf/__init__.py @@ -0,0 +1,32 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography.utils import Buffer + + +class KeyDerivationFunction(metaclass=abc.ABCMeta): + @abc.abstractmethod + def derive(self, key_material: bytes) -> bytes: + """ + Deterministically generates and returns a new key based on the existing + key material. + """ + + @abc.abstractmethod + def derive_into(self, key_material: bytes, buffer: Buffer) -> None: + """ + Deterministically generates a new key based on the existing key + material and stores it in the provided buffer. + """ + + @abc.abstractmethod + def verify(self, key_material: bytes, expected_key: bytes) -> None: + """ + Checks whether the key generated by the key material matches the + expected derived key. Raises an exception if they do not match. + """ diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/kdf/argon2.py b/intelliaide/vendor/cryptography/hazmat/primitives/kdf/argon2.py new file mode 100644 index 0000000..03e84d4 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/kdf/argon2.py @@ -0,0 +1,17 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives.kdf import KeyDerivationFunction + +Argon2d = rust_openssl.kdf.Argon2d +Argon2i = rust_openssl.kdf.Argon2i +Argon2id = rust_openssl.kdf.Argon2id +KeyDerivationFunction.register(Argon2d) +KeyDerivationFunction.register(Argon2i) +KeyDerivationFunction.register(Argon2id) + +__all__ = ["Argon2d", "Argon2i", "Argon2id"] diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/kdf/concatkdf.py b/intelliaide/vendor/cryptography/hazmat/primitives/kdf/concatkdf.py new file mode 100644 index 0000000..398dc5d --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/kdf/concatkdf.py @@ -0,0 +1,16 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives.kdf import KeyDerivationFunction + +ConcatKDFHash = rust_openssl.kdf.ConcatKDFHash +ConcatKDFHMAC = rust_openssl.kdf.ConcatKDFHMAC + +KeyDerivationFunction.register(ConcatKDFHash) +KeyDerivationFunction.register(ConcatKDFHMAC) + +__all__ = ["ConcatKDFHMAC", "ConcatKDFHash"] diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/kdf/hkdf.py b/intelliaide/vendor/cryptography/hazmat/primitives/kdf/hkdf.py new file mode 100644 index 0000000..1e162d9 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/kdf/hkdf.py @@ -0,0 +1,16 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives.kdf import KeyDerivationFunction + +HKDF = rust_openssl.kdf.HKDF +HKDFExpand = rust_openssl.kdf.HKDFExpand + +KeyDerivationFunction.register(HKDF) +KeyDerivationFunction.register(HKDFExpand) + +__all__ = ["HKDF", "HKDFExpand"] diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/kdf/kbkdf.py b/intelliaide/vendor/cryptography/hazmat/primitives/kdf/kbkdf.py new file mode 100644 index 0000000..e559df8 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/kdf/kbkdf.py @@ -0,0 +1,26 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography import utils +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives.kdf import KeyDerivationFunction + + +class Mode(utils.Enum): + CounterMode = "ctr" + + +class CounterLocation(utils.Enum): + BeforeFixed = "before_fixed" + AfterFixed = "after_fixed" + MiddleFixed = "middle_fixed" + + +KBKDFHMAC = rust_openssl.kdf.KBKDFHMAC +KeyDerivationFunction.register(KBKDFHMAC) + +KBKDFCMAC = rust_openssl.kdf.KBKDFCMAC +KeyDerivationFunction.register(KBKDFCMAC) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/kdf/pbkdf2.py b/intelliaide/vendor/cryptography/hazmat/primitives/kdf/pbkdf2.py new file mode 100644 index 0000000..771d80d --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/kdf/pbkdf2.py @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives.kdf import KeyDerivationFunction + +PBKDF2HMAC = rust_openssl.kdf.PBKDF2HMAC +KeyDerivationFunction.register(PBKDF2HMAC) + +__all__ = ["PBKDF2HMAC"] diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/kdf/scrypt.py b/intelliaide/vendor/cryptography/hazmat/primitives/kdf/scrypt.py new file mode 100644 index 0000000..f791cee --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/kdf/scrypt.py @@ -0,0 +1,19 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import sys + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives.kdf import KeyDerivationFunction + +# This is used by the scrypt tests to skip tests that require more memory +# than the MEM_LIMIT +_MEM_LIMIT = sys.maxsize // 2 + +Scrypt = rust_openssl.kdf.Scrypt +KeyDerivationFunction.register(Scrypt) + +__all__ = ["Scrypt"] diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/kdf/x963kdf.py b/intelliaide/vendor/cryptography/hazmat/primitives/kdf/x963kdf.py new file mode 100644 index 0000000..8c4e2d3 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/kdf/x963kdf.py @@ -0,0 +1,13 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl +from cryptography.hazmat.primitives.kdf import KeyDerivationFunction + +X963KDF = rust_openssl.kdf.X963KDF +KeyDerivationFunction.register(X963KDF) + +__all__ = ["X963KDF"] diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/keywrap.py b/intelliaide/vendor/cryptography/hazmat/primitives/keywrap.py new file mode 100644 index 0000000..a3e56b9 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/keywrap.py @@ -0,0 +1,180 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import typing + +from cryptography.hazmat.primitives.ciphers import Cipher +from cryptography.hazmat.primitives.ciphers.algorithms import AES +from cryptography.hazmat.primitives.ciphers.modes import ECB +from cryptography.hazmat.primitives.constant_time import bytes_eq + + +def _wrap_core( + wrapping_key: bytes, + a: bytes, + r: list[bytes], +) -> bytes: + # RFC 3394 Key Wrap - 2.2.1 (index method) + encryptor = Cipher(AES(wrapping_key), ECB()).encryptor() + n = len(r) + for j in range(6): + for i in range(n): + # every encryption operation is a discrete 16 byte chunk (because + # AES has a 128-bit block size) and since we're using ECB it is + # safe to reuse the encryptor for the entire operation + b = encryptor.update(a + r[i]) + a = ( + int.from_bytes(b[:8], byteorder="big") ^ ((n * j) + i + 1) + ).to_bytes(length=8, byteorder="big") + r[i] = b[-8:] + + assert encryptor.finalize() == b"" + + return a + b"".join(r) + + +def aes_key_wrap( + wrapping_key: bytes, + key_to_wrap: bytes, + backend: typing.Any = None, +) -> bytes: + if len(wrapping_key) not in [16, 24, 32]: + raise ValueError("The wrapping key must be a valid AES key length") + + if len(key_to_wrap) < 16: + raise ValueError("The key to wrap must be at least 16 bytes") + + if len(key_to_wrap) % 8 != 0: + raise ValueError("The key to wrap must be a multiple of 8 bytes") + + a = b"\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6" + r = [key_to_wrap[i : i + 8] for i in range(0, len(key_to_wrap), 8)] + return _wrap_core(wrapping_key, a, r) + + +def _unwrap_core( + wrapping_key: bytes, + a: bytes, + r: list[bytes], +) -> tuple[bytes, list[bytes]]: + # Implement RFC 3394 Key Unwrap - 2.2.2 (index method) + decryptor = Cipher(AES(wrapping_key), ECB()).decryptor() + n = len(r) + for j in reversed(range(6)): + for i in reversed(range(n)): + atr = ( + int.from_bytes(a, byteorder="big") ^ ((n * j) + i + 1) + ).to_bytes(length=8, byteorder="big") + r[i] + # every decryption operation is a discrete 16 byte chunk so + # it is safe to reuse the decryptor for the entire operation + b = decryptor.update(atr) + a = b[:8] + r[i] = b[-8:] + + assert decryptor.finalize() == b"" + return a, r + + +def aes_key_wrap_with_padding( + wrapping_key: bytes, + key_to_wrap: bytes, + backend: typing.Any = None, +) -> bytes: + if len(wrapping_key) not in [16, 24, 32]: + raise ValueError("The wrapping key must be a valid AES key length") + + if not key_to_wrap or len(key_to_wrap) > 2**32: + raise ValueError("key_to_wrap must be between 1 and 2^32 bytes") + + aiv = b"\xa6\x59\x59\xa6" + len(key_to_wrap).to_bytes( + length=4, byteorder="big" + ) + # pad the key to wrap if necessary + pad = (8 - (len(key_to_wrap) % 8)) % 8 + key_to_wrap = key_to_wrap + b"\x00" * pad + if len(key_to_wrap) == 8: + # RFC 5649 - 4.1 - exactly 8 octets after padding + encryptor = Cipher(AES(wrapping_key), ECB()).encryptor() + b = encryptor.update(aiv + key_to_wrap) + assert encryptor.finalize() == b"" + return b + else: + r = [key_to_wrap[i : i + 8] for i in range(0, len(key_to_wrap), 8)] + return _wrap_core(wrapping_key, aiv, r) + + +def aes_key_unwrap_with_padding( + wrapping_key: bytes, + wrapped_key: bytes, + backend: typing.Any = None, +) -> bytes: + if len(wrapped_key) < 16: + raise InvalidUnwrap("Must be at least 16 bytes") + + if len(wrapping_key) not in [16, 24, 32]: + raise ValueError("The wrapping key must be a valid AES key length") + + if len(wrapped_key) == 16: + # RFC 5649 - 4.2 - exactly two 64-bit blocks + decryptor = Cipher(AES(wrapping_key), ECB()).decryptor() + out = decryptor.update(wrapped_key) + assert decryptor.finalize() == b"" + a = out[:8] + data = out[8:] + n = 1 + else: + r = [wrapped_key[i : i + 8] for i in range(0, len(wrapped_key), 8)] + encrypted_aiv = r.pop(0) + n = len(r) + a, r = _unwrap_core(wrapping_key, encrypted_aiv, r) + data = b"".join(r) + + # 1) Check that MSB(32,A) = A65959A6. + # 2) Check that 8*(n-1) < LSB(32,A) <= 8*n. If so, let + # MLI = LSB(32,A). + # 3) Let b = (8*n)-MLI, and then check that the rightmost b octets of + # the output data are zero. + mli = int.from_bytes(a[4:], byteorder="big") + b = (8 * n) - mli + if ( + not bytes_eq(a[:4], b"\xa6\x59\x59\xa6") + or not 8 * (n - 1) < mli <= 8 * n + or (b != 0 and not bytes_eq(data[-b:], b"\x00" * b)) + ): + raise InvalidUnwrap() + + if b == 0: + return data + else: + return data[:-b] + + +def aes_key_unwrap( + wrapping_key: bytes, + wrapped_key: bytes, + backend: typing.Any = None, +) -> bytes: + if len(wrapped_key) < 24: + raise InvalidUnwrap("Must be at least 24 bytes") + + if len(wrapped_key) % 8 != 0: + raise InvalidUnwrap("The wrapped key must be a multiple of 8 bytes") + + if len(wrapping_key) not in [16, 24, 32]: + raise ValueError("The wrapping key must be a valid AES key length") + + aiv = b"\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6" + r = [wrapped_key[i : i + 8] for i in range(0, len(wrapped_key), 8)] + a = r.pop(0) + a, r = _unwrap_core(wrapping_key, a, r) + if not bytes_eq(a, aiv): + raise InvalidUnwrap() + + return b"".join(r) + + +class InvalidUnwrap(Exception): + pass diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/padding.py b/intelliaide/vendor/cryptography/hazmat/primitives/padding.py new file mode 100644 index 0000000..f9cd1f1 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/padding.py @@ -0,0 +1,69 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc + +from cryptography import utils +from cryptography.hazmat.bindings._rust import ( + ANSIX923PaddingContext, + ANSIX923UnpaddingContext, + PKCS7PaddingContext, + PKCS7UnpaddingContext, +) + + +class PaddingContext(metaclass=abc.ABCMeta): + @abc.abstractmethod + def update(self, data: utils.Buffer) -> bytes: + """ + Pads the provided bytes and returns any available data as bytes. + """ + + @abc.abstractmethod + def finalize(self) -> bytes: + """ + Finalize the padding, returns bytes. + """ + + +def _byte_padding_check(block_size: int) -> None: + if not (0 <= block_size <= 2040): + raise ValueError("block_size must be in range(0, 2041).") + + if block_size % 8 != 0: + raise ValueError("block_size must be a multiple of 8.") + + +class PKCS7: + def __init__(self, block_size: int): + _byte_padding_check(block_size) + self.block_size = block_size + + def padder(self) -> PaddingContext: + return PKCS7PaddingContext(self.block_size) + + def unpadder(self) -> PaddingContext: + return PKCS7UnpaddingContext(self.block_size) + + +PaddingContext.register(PKCS7PaddingContext) +PaddingContext.register(PKCS7UnpaddingContext) + + +class ANSIX923: + def __init__(self, block_size: int): + _byte_padding_check(block_size) + self.block_size = block_size + + def padder(self) -> PaddingContext: + return ANSIX923PaddingContext(self.block_size) + + def unpadder(self) -> PaddingContext: + return ANSIX923UnpaddingContext(self.block_size) + + +PaddingContext.register(ANSIX923PaddingContext) +PaddingContext.register(ANSIX923UnpaddingContext) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/poly1305.py b/intelliaide/vendor/cryptography/hazmat/primitives/poly1305.py new file mode 100644 index 0000000..7f5a77a --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/poly1305.py @@ -0,0 +1,11 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl + +__all__ = ["Poly1305"] + +Poly1305 = rust_openssl.poly1305.Poly1305 diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/serialization/__init__.py b/intelliaide/vendor/cryptography/hazmat/primitives/serialization/__init__.py new file mode 100644 index 0000000..62283cc --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/serialization/__init__.py @@ -0,0 +1,65 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat.primitives._serialization import ( + BestAvailableEncryption, + Encoding, + KeySerializationEncryption, + NoEncryption, + ParameterFormat, + PrivateFormat, + PublicFormat, + _KeySerializationEncryption, +) +from cryptography.hazmat.primitives.serialization.base import ( + load_der_parameters, + load_der_private_key, + load_der_public_key, + load_pem_parameters, + load_pem_private_key, + load_pem_public_key, +) +from cryptography.hazmat.primitives.serialization.ssh import ( + SSHCertificate, + SSHCertificateBuilder, + SSHCertificateType, + SSHCertPrivateKeyTypes, + SSHCertPublicKeyTypes, + SSHPrivateKeyTypes, + SSHPublicKeyTypes, + load_ssh_private_key, + load_ssh_public_identity, + load_ssh_public_key, + ssh_key_fingerprint, +) + +__all__ = [ + "BestAvailableEncryption", + "Encoding", + "KeySerializationEncryption", + "NoEncryption", + "ParameterFormat", + "PrivateFormat", + "PublicFormat", + "SSHCertPrivateKeyTypes", + "SSHCertPublicKeyTypes", + "SSHCertificate", + "SSHCertificateBuilder", + "SSHCertificateType", + "SSHPrivateKeyTypes", + "SSHPublicKeyTypes", + "_KeySerializationEncryption", + "load_der_parameters", + "load_der_private_key", + "load_der_public_key", + "load_pem_parameters", + "load_pem_private_key", + "load_pem_public_key", + "load_ssh_private_key", + "load_ssh_public_identity", + "load_ssh_public_key", + "ssh_key_fingerprint", +] diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/serialization/base.py b/intelliaide/vendor/cryptography/hazmat/primitives/serialization/base.py new file mode 100644 index 0000000..e7c998b --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/serialization/base.py @@ -0,0 +1,14 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from cryptography.hazmat.bindings._rust import openssl as rust_openssl + +load_pem_private_key = rust_openssl.keys.load_pem_private_key +load_der_private_key = rust_openssl.keys.load_der_private_key + +load_pem_public_key = rust_openssl.keys.load_pem_public_key +load_der_public_key = rust_openssl.keys.load_der_public_key + +load_pem_parameters = rust_openssl.dh.from_pem_parameters +load_der_parameters = rust_openssl.dh.from_der_parameters diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/serialization/pkcs12.py b/intelliaide/vendor/cryptography/hazmat/primitives/serialization/pkcs12.py new file mode 100644 index 0000000..58884ff --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/serialization/pkcs12.py @@ -0,0 +1,176 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import typing +from collections.abc import Iterable + +from cryptography import x509 +from cryptography.hazmat.bindings._rust import pkcs12 as rust_pkcs12 +from cryptography.hazmat.primitives import serialization +from cryptography.hazmat.primitives._serialization import PBES as PBES +from cryptography.hazmat.primitives.asymmetric import ( + dsa, + ec, + ed448, + ed25519, + rsa, +) +from cryptography.hazmat.primitives.asymmetric.types import PrivateKeyTypes + +__all__ = [ + "PBES", + "PKCS12Certificate", + "PKCS12KeyAndCertificates", + "PKCS12PrivateKeyTypes", + "load_key_and_certificates", + "load_pkcs12", + "serialize_java_truststore", + "serialize_key_and_certificates", +] + +PKCS12PrivateKeyTypes = typing.Union[ + rsa.RSAPrivateKey, + dsa.DSAPrivateKey, + ec.EllipticCurvePrivateKey, + ed25519.Ed25519PrivateKey, + ed448.Ed448PrivateKey, +] + + +PKCS12Certificate = rust_pkcs12.PKCS12Certificate + + +class PKCS12KeyAndCertificates: + def __init__( + self, + key: PrivateKeyTypes | None, + cert: PKCS12Certificate | None, + additional_certs: list[PKCS12Certificate], + ): + if key is not None and not isinstance( + key, + ( + rsa.RSAPrivateKey, + dsa.DSAPrivateKey, + ec.EllipticCurvePrivateKey, + ed25519.Ed25519PrivateKey, + ed448.Ed448PrivateKey, + ), + ): + raise TypeError( + "Key must be RSA, DSA, EllipticCurve, ED25519, or ED448" + " private key, or None." + ) + if cert is not None and not isinstance(cert, PKCS12Certificate): + raise TypeError("cert must be a PKCS12Certificate object or None") + if not all( + isinstance(add_cert, PKCS12Certificate) + for add_cert in additional_certs + ): + raise TypeError( + "all values in additional_certs must be PKCS12Certificate" + " objects" + ) + self._key = key + self._cert = cert + self._additional_certs = additional_certs + + @property + def key(self) -> PrivateKeyTypes | None: + return self._key + + @property + def cert(self) -> PKCS12Certificate | None: + return self._cert + + @property + def additional_certs(self) -> list[PKCS12Certificate]: + return self._additional_certs + + def __eq__(self, other: object) -> bool: + if not isinstance(other, PKCS12KeyAndCertificates): + return NotImplemented + + return ( + self.key == other.key + and self.cert == other.cert + and self.additional_certs == other.additional_certs + ) + + def __hash__(self) -> int: + return hash((self.key, self.cert, tuple(self.additional_certs))) + + def __repr__(self) -> str: + fmt = ( + "" + ) + return fmt.format(self.key, self.cert, self.additional_certs) + + +load_key_and_certificates = rust_pkcs12.load_key_and_certificates +load_pkcs12 = rust_pkcs12.load_pkcs12 + + +_PKCS12CATypes = typing.Union[ + x509.Certificate, + PKCS12Certificate, +] + + +def serialize_java_truststore( + certs: Iterable[PKCS12Certificate], + encryption_algorithm: serialization.KeySerializationEncryption, +) -> bytes: + if not certs: + raise ValueError("You must supply at least one cert") + + if not isinstance( + encryption_algorithm, serialization.KeySerializationEncryption + ): + raise TypeError( + "Key encryption algorithm must be a " + "KeySerializationEncryption instance" + ) + + return rust_pkcs12.serialize_java_truststore(certs, encryption_algorithm) + + +def serialize_key_and_certificates( + name: bytes | None, + key: PKCS12PrivateKeyTypes | None, + cert: x509.Certificate | None, + cas: Iterable[_PKCS12CATypes] | None, + encryption_algorithm: serialization.KeySerializationEncryption, +) -> bytes: + if key is not None and not isinstance( + key, + ( + rsa.RSAPrivateKey, + dsa.DSAPrivateKey, + ec.EllipticCurvePrivateKey, + ed25519.Ed25519PrivateKey, + ed448.Ed448PrivateKey, + ), + ): + raise TypeError( + "Key must be RSA, DSA, EllipticCurve, ED25519, or ED448" + " private key, or None." + ) + + if not isinstance( + encryption_algorithm, serialization.KeySerializationEncryption + ): + raise TypeError( + "Key encryption algorithm must be a " + "KeySerializationEncryption instance" + ) + + if key is None and cert is None and not cas: + raise ValueError("You must supply at least one of key, cert, or cas") + + return rust_pkcs12.serialize_key_and_certificates( + name, key, cert, cas, encryption_algorithm + ) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/serialization/pkcs7.py b/intelliaide/vendor/cryptography/hazmat/primitives/serialization/pkcs7.py new file mode 100644 index 0000000..76b667a --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/serialization/pkcs7.py @@ -0,0 +1,412 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import email.base64mime +import email.generator +import email.message +import email.policy +import io +import typing +from collections.abc import Iterable + +from cryptography import utils, x509 +from cryptography.exceptions import UnsupportedAlgorithm, _Reasons +from cryptography.hazmat.bindings._rust import pkcs7 as rust_pkcs7 +from cryptography.hazmat.primitives import hashes, serialization +from cryptography.hazmat.primitives.asymmetric import ec, padding, rsa +from cryptography.hazmat.primitives.ciphers import ( + algorithms, +) +from cryptography.utils import _check_byteslike + +load_pem_pkcs7_certificates = rust_pkcs7.load_pem_pkcs7_certificates + +load_der_pkcs7_certificates = rust_pkcs7.load_der_pkcs7_certificates + +serialize_certificates = rust_pkcs7.serialize_certificates + +PKCS7HashTypes = typing.Union[ + hashes.SHA224, + hashes.SHA256, + hashes.SHA384, + hashes.SHA512, +] + +PKCS7PrivateKeyTypes = typing.Union[ + rsa.RSAPrivateKey, ec.EllipticCurvePrivateKey +] + +ContentEncryptionAlgorithm = typing.Union[ + type[algorithms.AES128], type[algorithms.AES256] +] + + +class PKCS7Options(utils.Enum): + Text = "Add text/plain MIME type" + Binary = "Don't translate input data into canonical MIME format" + DetachedSignature = "Don't embed data in the PKCS7 structure" + NoCapabilities = "Don't embed SMIME capabilities" + NoAttributes = "Don't embed authenticatedAttributes" + NoCerts = "Don't embed signer certificate" + + +class PKCS7SignatureBuilder: + def __init__( + self, + data: utils.Buffer | None = None, + signers: list[ + tuple[ + x509.Certificate, + PKCS7PrivateKeyTypes, + PKCS7HashTypes, + padding.PSS | padding.PKCS1v15 | None, + ] + ] = [], + additional_certs: list[x509.Certificate] = [], + ): + self._data = data + self._signers = signers + self._additional_certs = additional_certs + + def set_data(self, data: utils.Buffer) -> PKCS7SignatureBuilder: + _check_byteslike("data", data) + if self._data is not None: + raise ValueError("data may only be set once") + + return PKCS7SignatureBuilder(data, self._signers) + + def add_signer( + self, + certificate: x509.Certificate, + private_key: PKCS7PrivateKeyTypes, + hash_algorithm: PKCS7HashTypes, + *, + rsa_padding: padding.PSS | padding.PKCS1v15 | None = None, + ) -> PKCS7SignatureBuilder: + if not isinstance( + hash_algorithm, + ( + hashes.SHA224, + hashes.SHA256, + hashes.SHA384, + hashes.SHA512, + ), + ): + raise TypeError( + "hash_algorithm must be one of hashes.SHA224, " + "SHA256, SHA384, or SHA512" + ) + if not isinstance(certificate, x509.Certificate): + raise TypeError("certificate must be a x509.Certificate") + + if not isinstance( + private_key, (rsa.RSAPrivateKey, ec.EllipticCurvePrivateKey) + ): + raise TypeError("Only RSA & EC keys are supported at this time.") + + if rsa_padding is not None: + if not isinstance(rsa_padding, (padding.PSS, padding.PKCS1v15)): + raise TypeError("Padding must be PSS or PKCS1v15") + if not isinstance(private_key, rsa.RSAPrivateKey): + raise TypeError("Padding is only supported for RSA keys") + + return PKCS7SignatureBuilder( + self._data, + [ + *self._signers, + (certificate, private_key, hash_algorithm, rsa_padding), + ], + ) + + def add_certificate( + self, certificate: x509.Certificate + ) -> PKCS7SignatureBuilder: + if not isinstance(certificate, x509.Certificate): + raise TypeError("certificate must be a x509.Certificate") + + return PKCS7SignatureBuilder( + self._data, self._signers, [*self._additional_certs, certificate] + ) + + def sign( + self, + encoding: serialization.Encoding, + options: Iterable[PKCS7Options], + backend: typing.Any = None, + ) -> bytes: + if len(self._signers) == 0: + raise ValueError("Must have at least one signer") + if self._data is None: + raise ValueError("You must add data to sign") + options = list(options) + if not all(isinstance(x, PKCS7Options) for x in options): + raise ValueError("options must be from the PKCS7Options enum") + if encoding not in ( + serialization.Encoding.PEM, + serialization.Encoding.DER, + serialization.Encoding.SMIME, + ): + raise ValueError( + "Must be PEM, DER, or SMIME from the Encoding enum" + ) + + # Text is a meaningless option unless it is accompanied by + # DetachedSignature + if ( + PKCS7Options.Text in options + and PKCS7Options.DetachedSignature not in options + ): + raise ValueError( + "When passing the Text option you must also pass " + "DetachedSignature" + ) + + if PKCS7Options.Text in options and encoding in ( + serialization.Encoding.DER, + serialization.Encoding.PEM, + ): + raise ValueError( + "The Text option is only available for SMIME serialization" + ) + + # No attributes implies no capabilities so we'll error if you try to + # pass both. + if ( + PKCS7Options.NoAttributes in options + and PKCS7Options.NoCapabilities in options + ): + raise ValueError( + "NoAttributes is a superset of NoCapabilities. Do not pass " + "both values." + ) + + return rust_pkcs7.sign_and_serialize(self, encoding, options) + + +class PKCS7EnvelopeBuilder: + def __init__( + self, + *, + _data: bytes | None = None, + _recipients: list[x509.Certificate] | None = None, + _content_encryption_algorithm: ContentEncryptionAlgorithm + | None = None, + ): + from cryptography.hazmat.backends.openssl.backend import ( + backend as ossl, + ) + + if not ossl.rsa_encryption_supported(padding=padding.PKCS1v15()): + raise UnsupportedAlgorithm( + "RSA with PKCS1 v1.5 padding is not supported by this version" + " of OpenSSL.", + _Reasons.UNSUPPORTED_PADDING, + ) + self._data = _data + self._recipients = _recipients if _recipients is not None else [] + self._content_encryption_algorithm = _content_encryption_algorithm + + def set_data(self, data: bytes) -> PKCS7EnvelopeBuilder: + _check_byteslike("data", data) + if self._data is not None: + raise ValueError("data may only be set once") + + return PKCS7EnvelopeBuilder( + _data=data, + _recipients=self._recipients, + _content_encryption_algorithm=self._content_encryption_algorithm, + ) + + def add_recipient( + self, + certificate: x509.Certificate, + ) -> PKCS7EnvelopeBuilder: + if not isinstance(certificate, x509.Certificate): + raise TypeError("certificate must be a x509.Certificate") + + if not isinstance(certificate.public_key(), rsa.RSAPublicKey): + raise TypeError("Only RSA keys are supported at this time.") + + return PKCS7EnvelopeBuilder( + _data=self._data, + _recipients=[ + *self._recipients, + certificate, + ], + _content_encryption_algorithm=self._content_encryption_algorithm, + ) + + def set_content_encryption_algorithm( + self, content_encryption_algorithm: ContentEncryptionAlgorithm + ) -> PKCS7EnvelopeBuilder: + if self._content_encryption_algorithm is not None: + raise ValueError("Content encryption algo may only be set once") + if content_encryption_algorithm not in { + algorithms.AES128, + algorithms.AES256, + }: + raise TypeError("Only AES128 and AES256 are supported") + + return PKCS7EnvelopeBuilder( + _data=self._data, + _recipients=self._recipients, + _content_encryption_algorithm=content_encryption_algorithm, + ) + + def encrypt( + self, + encoding: serialization.Encoding, + options: Iterable[PKCS7Options], + ) -> bytes: + if len(self._recipients) == 0: + raise ValueError("Must have at least one recipient") + if self._data is None: + raise ValueError("You must add data to encrypt") + + # The default content encryption algorithm is AES-128-CBC, which the + # S/MIME v3.2 RFC specifies as MUST support (https://datatracker.ietf.org/doc/html/rfc5751#section-2.7) + # however rest of S/MIME v3.2 is not currently supported + content_encryption_algorithm = ( + self._content_encryption_algorithm or algorithms.AES128 + ) + + options = list(options) + if not all(isinstance(x, PKCS7Options) for x in options): + raise ValueError("options must be from the PKCS7Options enum") + if encoding not in ( + serialization.Encoding.PEM, + serialization.Encoding.DER, + serialization.Encoding.SMIME, + ): + raise ValueError( + "Must be PEM, DER, or SMIME from the Encoding enum" + ) + + # Only allow options that make sense for encryption + if any( + opt not in [PKCS7Options.Text, PKCS7Options.Binary] + for opt in options + ): + raise ValueError( + "Only the following options are supported for encryption: " + "Text, Binary" + ) + elif PKCS7Options.Text in options and PKCS7Options.Binary in options: + # OpenSSL accepts both options at the same time, but ignores Text. + # We fail defensively to avoid unexpected outputs. + raise ValueError( + "Cannot use Binary and Text options at the same time" + ) + + return rust_pkcs7.encrypt_and_serialize( + self, content_encryption_algorithm, encoding, options + ) + + +pkcs7_decrypt_der = rust_pkcs7.decrypt_der +pkcs7_decrypt_pem = rust_pkcs7.decrypt_pem +pkcs7_decrypt_smime = rust_pkcs7.decrypt_smime + + +def _smime_signed_encode( + data: bytes, signature: bytes, micalg: str, text_mode: bool +) -> bytes: + # This function works pretty hard to replicate what OpenSSL does + # precisely. For good and for ill. + + m = email.message.Message() + m.add_header("MIME-Version", "1.0") + m.add_header( + "Content-Type", + "multipart/signed", + protocol="application/x-pkcs7-signature", + micalg=micalg, + ) + + m.preamble = "This is an S/MIME signed message\n" + + msg_part = OpenSSLMimePart() + msg_part.set_payload(data) + if text_mode: + msg_part.add_header("Content-Type", "text/plain") + m.attach(msg_part) + + sig_part = email.message.MIMEPart() + sig_part.add_header( + "Content-Type", "application/x-pkcs7-signature", name="smime.p7s" + ) + sig_part.add_header("Content-Transfer-Encoding", "base64") + sig_part.add_header( + "Content-Disposition", "attachment", filename="smime.p7s" + ) + sig_part.set_payload( + email.base64mime.body_encode(signature, maxlinelen=65) + ) + del sig_part["MIME-Version"] + m.attach(sig_part) + + fp = io.BytesIO() + g = email.generator.BytesGenerator( + fp, + maxheaderlen=0, + mangle_from_=False, + policy=m.policy.clone(linesep="\r\n"), + ) + g.flatten(m) + return fp.getvalue() + + +def _smime_enveloped_encode(data: bytes) -> bytes: + m = email.message.Message() + m.add_header("MIME-Version", "1.0") + m.add_header("Content-Disposition", "attachment", filename="smime.p7m") + m.add_header( + "Content-Type", + "application/pkcs7-mime", + smime_type="enveloped-data", + name="smime.p7m", + ) + m.add_header("Content-Transfer-Encoding", "base64") + + m.set_payload(email.base64mime.body_encode(data, maxlinelen=65)) + + return m.as_bytes(policy=m.policy.clone(linesep="\n", max_line_length=0)) + + +def _smime_enveloped_decode(data: bytes) -> bytes: + m = email.message_from_bytes(data) + if m.get_content_type() not in { + "application/x-pkcs7-mime", + "application/pkcs7-mime", + }: + raise ValueError("Not an S/MIME enveloped message") + return bytes(m.get_payload(decode=True)) + + +def _smime_remove_text_headers(data: bytes) -> bytes: + m = email.message_from_bytes(data) + # Using get() instead of get_content_type() since it has None as default, + # where the latter has "text/plain". Both methods are case-insensitive. + content_type = m.get("content-type") + if content_type is None: + raise ValueError( + "Decrypted MIME data has no 'Content-Type' header. " + "Please remove the 'Text' option to parse it manually." + ) + if "text/plain" not in content_type: + raise ValueError( + f"Decrypted MIME data content type is '{content_type}', not " + "'text/plain'. Remove the 'Text' option to parse it manually." + ) + return bytes(m.get_payload(decode=True)) + + +class OpenSSLMimePart(email.message.MIMEPart): + # A MIMEPart subclass that replicates OpenSSL's behavior of not including + # a newline if there are no headers. + def _write_headers(self, generator) -> None: + if list(self.raw_items()): + generator._write_headers(self) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/serialization/ssh.py b/intelliaide/vendor/cryptography/hazmat/primitives/serialization/ssh.py new file mode 100644 index 0000000..411113b --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/serialization/ssh.py @@ -0,0 +1,1621 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import binascii +import enum +import os +import re +import typing +import warnings +from base64 import encodebytes as _base64_encode +from dataclasses import dataclass + +from cryptography import utils +from cryptography.exceptions import UnsupportedAlgorithm +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.asymmetric import ( + dsa, + ec, + ed25519, + padding, + rsa, +) +from cryptography.hazmat.primitives.asymmetric import utils as asym_utils +from cryptography.hazmat.primitives.ciphers import ( + AEADDecryptionContext, + Cipher, + algorithms, + modes, +) +from cryptography.hazmat.primitives.serialization import ( + Encoding, + KeySerializationEncryption, + NoEncryption, + PrivateFormat, + PublicFormat, + _KeySerializationEncryption, +) + +try: + from bcrypt import kdf as _bcrypt_kdf + + _bcrypt_supported = True +except ImportError: + _bcrypt_supported = False + + def _bcrypt_kdf( + password: bytes, + salt: bytes, + desired_key_bytes: int, + rounds: int, + ignore_few_rounds: bool = False, + ) -> bytes: + raise UnsupportedAlgorithm("Need bcrypt module") + + +_SSH_ED25519 = b"ssh-ed25519" +_SSH_RSA = b"ssh-rsa" +_SSH_DSA = b"ssh-dss" +_ECDSA_NISTP256 = b"ecdsa-sha2-nistp256" +_ECDSA_NISTP384 = b"ecdsa-sha2-nistp384" +_ECDSA_NISTP521 = b"ecdsa-sha2-nistp521" +_CERT_SUFFIX = b"-cert-v01@openssh.com" + +# U2F application string suffixed pubkey +_SK_SSH_ED25519 = b"sk-ssh-ed25519@openssh.com" +_SK_SSH_ECDSA_NISTP256 = b"sk-ecdsa-sha2-nistp256@openssh.com" + +# These are not key types, only algorithms, so they cannot appear +# as a public key type +_SSH_RSA_SHA256 = b"rsa-sha2-256" +_SSH_RSA_SHA512 = b"rsa-sha2-512" + +_SSH_PUBKEY_RC = re.compile(rb"\A(\S+)[ \t]+(\S+)") +_SK_MAGIC = b"openssh-key-v1\0" +_SK_START = b"-----BEGIN OPENSSH PRIVATE KEY-----" +_SK_END = b"-----END OPENSSH PRIVATE KEY-----" +_BCRYPT = b"bcrypt" +_NONE = b"none" +_DEFAULT_CIPHER = b"aes256-ctr" +_DEFAULT_ROUNDS = 16 + +# re is only way to work on bytes-like data +_PEM_RC = re.compile(_SK_START + b"(.*?)" + _SK_END, re.DOTALL) + +# padding for max blocksize +_PADDING = memoryview(bytearray(range(1, 1 + 16))) + + +@dataclass +class _SSHCipher: + alg: type[algorithms.AES] + key_len: int + mode: type[modes.CTR] | type[modes.CBC] | type[modes.GCM] + block_len: int + iv_len: int + tag_len: int | None + is_aead: bool + + +# ciphers that are actually used in key wrapping +_SSH_CIPHERS: dict[bytes, _SSHCipher] = { + b"aes256-ctr": _SSHCipher( + alg=algorithms.AES, + key_len=32, + mode=modes.CTR, + block_len=16, + iv_len=16, + tag_len=None, + is_aead=False, + ), + b"aes256-cbc": _SSHCipher( + alg=algorithms.AES, + key_len=32, + mode=modes.CBC, + block_len=16, + iv_len=16, + tag_len=None, + is_aead=False, + ), + b"aes256-gcm@openssh.com": _SSHCipher( + alg=algorithms.AES, + key_len=32, + mode=modes.GCM, + block_len=16, + iv_len=12, + tag_len=16, + is_aead=True, + ), +} + +# map local curve name to key type +_ECDSA_KEY_TYPE = { + "secp256r1": _ECDSA_NISTP256, + "secp384r1": _ECDSA_NISTP384, + "secp521r1": _ECDSA_NISTP521, +} + + +def _get_ssh_key_type(key: SSHPrivateKeyTypes | SSHPublicKeyTypes) -> bytes: + if isinstance(key, ec.EllipticCurvePrivateKey): + key_type = _ecdsa_key_type(key.public_key()) + elif isinstance(key, ec.EllipticCurvePublicKey): + key_type = _ecdsa_key_type(key) + elif isinstance(key, (rsa.RSAPrivateKey, rsa.RSAPublicKey)): + key_type = _SSH_RSA + elif isinstance(key, (dsa.DSAPrivateKey, dsa.DSAPublicKey)): + key_type = _SSH_DSA + elif isinstance( + key, (ed25519.Ed25519PrivateKey, ed25519.Ed25519PublicKey) + ): + key_type = _SSH_ED25519 + else: + raise ValueError("Unsupported key type") + + return key_type + + +def _ecdsa_key_type(public_key: ec.EllipticCurvePublicKey) -> bytes: + """Return SSH key_type and curve_name for private key.""" + curve = public_key.curve + if curve.name not in _ECDSA_KEY_TYPE: + raise ValueError( + f"Unsupported curve for ssh private key: {curve.name!r}" + ) + return _ECDSA_KEY_TYPE[curve.name] + + +def _ssh_pem_encode( + data: utils.Buffer, + prefix: bytes = _SK_START + b"\n", + suffix: bytes = _SK_END + b"\n", +) -> bytes: + return b"".join([prefix, _base64_encode(data), suffix]) + + +def _check_block_size(data: utils.Buffer, block_len: int) -> None: + """Require data to be full blocks""" + if not data or len(data) % block_len != 0: + raise ValueError("Corrupt data: missing padding") + + +def _check_empty(data: utils.Buffer) -> None: + """All data should have been parsed.""" + if data: + raise ValueError("Corrupt data: unparsed data") + + +def _init_cipher( + ciphername: bytes, + password: bytes | None, + salt: bytes, + rounds: int, +) -> Cipher[modes.CBC | modes.CTR | modes.GCM]: + """Generate key + iv and return cipher.""" + if not password: + raise TypeError( + "Key is password-protected, but password was not provided." + ) + + ciph = _SSH_CIPHERS[ciphername] + seed = _bcrypt_kdf( + password, salt, ciph.key_len + ciph.iv_len, rounds, True + ) + return Cipher( + ciph.alg(seed[: ciph.key_len]), + ciph.mode(seed[ciph.key_len :]), + ) + + +def _get_u32(data: memoryview) -> tuple[int, memoryview]: + """Uint32""" + if len(data) < 4: + raise ValueError("Invalid data") + return int.from_bytes(data[:4], byteorder="big"), data[4:] + + +def _get_u64(data: memoryview) -> tuple[int, memoryview]: + """Uint64""" + if len(data) < 8: + raise ValueError("Invalid data") + return int.from_bytes(data[:8], byteorder="big"), data[8:] + + +def _get_sshstr(data: memoryview) -> tuple[memoryview, memoryview]: + """Bytes with u32 length prefix""" + n, data = _get_u32(data) + if n > len(data): + raise ValueError("Invalid data") + return data[:n], data[n:] + + +def _get_mpint(data: memoryview) -> tuple[int, memoryview]: + """Big integer.""" + val, data = _get_sshstr(data) + if val and val[0] > 0x7F: + raise ValueError("Invalid data") + return int.from_bytes(val, "big"), data + + +def _to_mpint(val: int) -> bytes: + """Storage format for signed bigint.""" + if val < 0: + raise ValueError("negative mpint not allowed") + if not val: + return b"" + nbytes = (val.bit_length() + 8) // 8 + return utils.int_to_bytes(val, nbytes) + + +class _FragList: + """Build recursive structure without data copy.""" + + flist: list[utils.Buffer] + + def __init__(self, init: list[utils.Buffer] | None = None) -> None: + self.flist = [] + if init: + self.flist.extend(init) + + def put_raw(self, val: utils.Buffer) -> None: + """Add plain bytes""" + self.flist.append(val) + + def put_u32(self, val: int) -> None: + """Big-endian uint32""" + self.flist.append(val.to_bytes(length=4, byteorder="big")) + + def put_u64(self, val: int) -> None: + """Big-endian uint64""" + self.flist.append(val.to_bytes(length=8, byteorder="big")) + + def put_sshstr(self, val: bytes | _FragList) -> None: + """Bytes prefixed with u32 length""" + if isinstance(val, (bytes, memoryview, bytearray)): + self.put_u32(len(val)) + self.flist.append(val) + else: + self.put_u32(val.size()) + self.flist.extend(val.flist) + + def put_mpint(self, val: int) -> None: + """Big-endian bigint prefixed with u32 length""" + self.put_sshstr(_to_mpint(val)) + + def size(self) -> int: + """Current number of bytes""" + return sum(map(len, self.flist)) + + def render(self, dstbuf: memoryview, pos: int = 0) -> int: + """Write into bytearray""" + for frag in self.flist: + flen = len(frag) + start, pos = pos, pos + flen + dstbuf[start:pos] = frag + return pos + + def tobytes(self) -> bytes: + """Return as bytes""" + buf = memoryview(bytearray(self.size())) + self.render(buf) + return buf.tobytes() + + +class _SSHFormatRSA: + """Format for RSA keys. + + Public: + mpint e, n + Private: + mpint n, e, d, iqmp, p, q + """ + + def get_public( + self, data: memoryview + ) -> tuple[tuple[int, int], memoryview]: + """RSA public fields""" + e, data = _get_mpint(data) + n, data = _get_mpint(data) + return (e, n), data + + def load_public( + self, data: memoryview + ) -> tuple[rsa.RSAPublicKey, memoryview]: + """Make RSA public key from data.""" + (e, n), data = self.get_public(data) + public_numbers = rsa.RSAPublicNumbers(e, n) + public_key = public_numbers.public_key() + return public_key, data + + def load_private( + self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool + ) -> tuple[rsa.RSAPrivateKey, memoryview]: + """Make RSA private key from data.""" + n, data = _get_mpint(data) + e, data = _get_mpint(data) + d, data = _get_mpint(data) + iqmp, data = _get_mpint(data) + p, data = _get_mpint(data) + q, data = _get_mpint(data) + + if (e, n) != pubfields: + raise ValueError("Corrupt data: rsa field mismatch") + dmp1 = rsa.rsa_crt_dmp1(d, p) + dmq1 = rsa.rsa_crt_dmq1(d, q) + public_numbers = rsa.RSAPublicNumbers(e, n) + private_numbers = rsa.RSAPrivateNumbers( + p, q, d, dmp1, dmq1, iqmp, public_numbers + ) + private_key = private_numbers.private_key( + unsafe_skip_rsa_key_validation=unsafe_skip_rsa_key_validation + ) + return private_key, data + + def encode_public( + self, public_key: rsa.RSAPublicKey, f_pub: _FragList + ) -> None: + """Write RSA public key""" + pubn = public_key.public_numbers() + f_pub.put_mpint(pubn.e) + f_pub.put_mpint(pubn.n) + + def encode_private( + self, private_key: rsa.RSAPrivateKey, f_priv: _FragList + ) -> None: + """Write RSA private key""" + private_numbers = private_key.private_numbers() + public_numbers = private_numbers.public_numbers + + f_priv.put_mpint(public_numbers.n) + f_priv.put_mpint(public_numbers.e) + + f_priv.put_mpint(private_numbers.d) + f_priv.put_mpint(private_numbers.iqmp) + f_priv.put_mpint(private_numbers.p) + f_priv.put_mpint(private_numbers.q) + + +class _SSHFormatDSA: + """Format for DSA keys. + + Public: + mpint p, q, g, y + Private: + mpint p, q, g, y, x + """ + + def get_public(self, data: memoryview) -> tuple[tuple, memoryview]: + """DSA public fields""" + p, data = _get_mpint(data) + q, data = _get_mpint(data) + g, data = _get_mpint(data) + y, data = _get_mpint(data) + return (p, q, g, y), data + + def load_public( + self, data: memoryview + ) -> tuple[dsa.DSAPublicKey, memoryview]: + """Make DSA public key from data.""" + (p, q, g, y), data = self.get_public(data) + parameter_numbers = dsa.DSAParameterNumbers(p, q, g) + public_numbers = dsa.DSAPublicNumbers(y, parameter_numbers) + self._validate(public_numbers) + public_key = public_numbers.public_key() + return public_key, data + + def load_private( + self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool + ) -> tuple[dsa.DSAPrivateKey, memoryview]: + """Make DSA private key from data.""" + (p, q, g, y), data = self.get_public(data) + x, data = _get_mpint(data) + + if (p, q, g, y) != pubfields: + raise ValueError("Corrupt data: dsa field mismatch") + parameter_numbers = dsa.DSAParameterNumbers(p, q, g) + public_numbers = dsa.DSAPublicNumbers(y, parameter_numbers) + self._validate(public_numbers) + private_numbers = dsa.DSAPrivateNumbers(x, public_numbers) + private_key = private_numbers.private_key() + return private_key, data + + def encode_public( + self, public_key: dsa.DSAPublicKey, f_pub: _FragList + ) -> None: + """Write DSA public key""" + public_numbers = public_key.public_numbers() + parameter_numbers = public_numbers.parameter_numbers + self._validate(public_numbers) + + f_pub.put_mpint(parameter_numbers.p) + f_pub.put_mpint(parameter_numbers.q) + f_pub.put_mpint(parameter_numbers.g) + f_pub.put_mpint(public_numbers.y) + + def encode_private( + self, private_key: dsa.DSAPrivateKey, f_priv: _FragList + ) -> None: + """Write DSA private key""" + self.encode_public(private_key.public_key(), f_priv) + f_priv.put_mpint(private_key.private_numbers().x) + + def _validate(self, public_numbers: dsa.DSAPublicNumbers) -> None: + parameter_numbers = public_numbers.parameter_numbers + if parameter_numbers.p.bit_length() != 1024: + raise ValueError("SSH supports only 1024 bit DSA keys") + + +class _SSHFormatECDSA: + """Format for ECDSA keys. + + Public: + str curve + bytes point + Private: + str curve + bytes point + mpint secret + """ + + def __init__(self, ssh_curve_name: bytes, curve: ec.EllipticCurve): + self.ssh_curve_name = ssh_curve_name + self.curve = curve + + def get_public( + self, data: memoryview + ) -> tuple[tuple[memoryview, memoryview], memoryview]: + """ECDSA public fields""" + curve, data = _get_sshstr(data) + point, data = _get_sshstr(data) + if curve != self.ssh_curve_name: + raise ValueError("Curve name mismatch") + if len(point) == 0: + raise ValueError("Invalid EC point: empty data") + if point[0] != 4: + raise NotImplementedError("Need uncompressed point") + return (curve, point), data + + def load_public( + self, data: memoryview + ) -> tuple[ec.EllipticCurvePublicKey, memoryview]: + """Make ECDSA public key from data.""" + (_, point), data = self.get_public(data) + public_key = ec.EllipticCurvePublicKey.from_encoded_point( + self.curve, point.tobytes() + ) + return public_key, data + + def load_private( + self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool + ) -> tuple[ec.EllipticCurvePrivateKey, memoryview]: + """Make ECDSA private key from data.""" + (curve_name, point), data = self.get_public(data) + secret, data = _get_mpint(data) + + if (curve_name, point) != pubfields: + raise ValueError("Corrupt data: ecdsa field mismatch") + private_key = ec.derive_private_key(secret, self.curve) + return private_key, data + + def encode_public( + self, public_key: ec.EllipticCurvePublicKey, f_pub: _FragList + ) -> None: + """Write ECDSA public key""" + point = public_key.public_bytes( + Encoding.X962, PublicFormat.UncompressedPoint + ) + f_pub.put_sshstr(self.ssh_curve_name) + f_pub.put_sshstr(point) + + def encode_private( + self, private_key: ec.EllipticCurvePrivateKey, f_priv: _FragList + ) -> None: + """Write ECDSA private key""" + public_key = private_key.public_key() + private_numbers = private_key.private_numbers() + + self.encode_public(public_key, f_priv) + f_priv.put_mpint(private_numbers.private_value) + + +class _SSHFormatEd25519: + """Format for Ed25519 keys. + + Public: + bytes point + Private: + bytes point + bytes secret_and_point + """ + + def get_public( + self, data: memoryview + ) -> tuple[tuple[memoryview], memoryview]: + """Ed25519 public fields""" + point, data = _get_sshstr(data) + return (point,), data + + def load_public( + self, data: memoryview + ) -> tuple[ed25519.Ed25519PublicKey, memoryview]: + """Make Ed25519 public key from data.""" + (point,), data = self.get_public(data) + public_key = ed25519.Ed25519PublicKey.from_public_bytes( + point.tobytes() + ) + return public_key, data + + def load_private( + self, data: memoryview, pubfields, unsafe_skip_rsa_key_validation: bool + ) -> tuple[ed25519.Ed25519PrivateKey, memoryview]: + """Make Ed25519 private key from data.""" + (point,), data = self.get_public(data) + keypair, data = _get_sshstr(data) + + secret = keypair[:32] + point2 = keypair[32:] + if point != point2 or (point,) != pubfields: + raise ValueError("Corrupt data: ed25519 field mismatch") + private_key = ed25519.Ed25519PrivateKey.from_private_bytes(secret) + return private_key, data + + def encode_public( + self, public_key: ed25519.Ed25519PublicKey, f_pub: _FragList + ) -> None: + """Write Ed25519 public key""" + raw_public_key = public_key.public_bytes( + Encoding.Raw, PublicFormat.Raw + ) + f_pub.put_sshstr(raw_public_key) + + def encode_private( + self, private_key: ed25519.Ed25519PrivateKey, f_priv: _FragList + ) -> None: + """Write Ed25519 private key""" + public_key = private_key.public_key() + raw_private_key = private_key.private_bytes( + Encoding.Raw, PrivateFormat.Raw, NoEncryption() + ) + raw_public_key = public_key.public_bytes( + Encoding.Raw, PublicFormat.Raw + ) + f_keypair = _FragList([raw_private_key, raw_public_key]) + + self.encode_public(public_key, f_priv) + f_priv.put_sshstr(f_keypair) + + +def load_application(data) -> tuple[memoryview, memoryview]: + """ + U2F application strings + """ + application, data = _get_sshstr(data) + if not application.tobytes().startswith(b"ssh:"): + raise ValueError( + "U2F application string does not start with b'ssh:' " + f"({application})" + ) + return application, data + + +class _SSHFormatSKEd25519: + """ + The format of a sk-ssh-ed25519@openssh.com public key is: + + string "sk-ssh-ed25519@openssh.com" + string public key + string application (user-specified, but typically "ssh:") + """ + + def load_public( + self, data: memoryview + ) -> tuple[ed25519.Ed25519PublicKey, memoryview]: + """Make Ed25519 public key from data.""" + public_key, data = _lookup_kformat(_SSH_ED25519).load_public(data) + _, data = load_application(data) + return public_key, data + + def get_public(self, data: memoryview) -> typing.NoReturn: + # Confusingly `get_public` is an entry point used by private key + # loading. + raise UnsupportedAlgorithm( + "sk-ssh-ed25519 private keys cannot be loaded" + ) + + +class _SSHFormatSKECDSA: + """ + The format of a sk-ecdsa-sha2-nistp256@openssh.com public key is: + + string "sk-ecdsa-sha2-nistp256@openssh.com" + string curve name + ec_point Q + string application (user-specified, but typically "ssh:") + """ + + def load_public( + self, data: memoryview + ) -> tuple[ec.EllipticCurvePublicKey, memoryview]: + """Make ECDSA public key from data.""" + public_key, data = _lookup_kformat(_ECDSA_NISTP256).load_public(data) + _, data = load_application(data) + return public_key, data + + def get_public(self, data: memoryview) -> typing.NoReturn: + # Confusingly `get_public` is an entry point used by private key + # loading. + raise UnsupportedAlgorithm( + "sk-ecdsa-sha2-nistp256 private keys cannot be loaded" + ) + + +_KEY_FORMATS = { + _SSH_RSA: _SSHFormatRSA(), + _SSH_DSA: _SSHFormatDSA(), + _SSH_ED25519: _SSHFormatEd25519(), + _ECDSA_NISTP256: _SSHFormatECDSA(b"nistp256", ec.SECP256R1()), + _ECDSA_NISTP384: _SSHFormatECDSA(b"nistp384", ec.SECP384R1()), + _ECDSA_NISTP521: _SSHFormatECDSA(b"nistp521", ec.SECP521R1()), + _SK_SSH_ED25519: _SSHFormatSKEd25519(), + _SK_SSH_ECDSA_NISTP256: _SSHFormatSKECDSA(), +} + + +def _lookup_kformat(key_type: utils.Buffer): + """Return valid format or throw error""" + if not isinstance(key_type, bytes): + key_type = memoryview(key_type).tobytes() + if key_type in _KEY_FORMATS: + return _KEY_FORMATS[key_type] + raise UnsupportedAlgorithm(f"Unsupported key type: {key_type!r}") + + +SSHPrivateKeyTypes = typing.Union[ + ec.EllipticCurvePrivateKey, + rsa.RSAPrivateKey, + dsa.DSAPrivateKey, + ed25519.Ed25519PrivateKey, +] + + +def load_ssh_private_key( + data: utils.Buffer, + password: bytes | None, + backend: typing.Any = None, + *, + unsafe_skip_rsa_key_validation: bool = False, +) -> SSHPrivateKeyTypes: + """Load private key from OpenSSH custom encoding.""" + utils._check_byteslike("data", data) + if password is not None: + utils._check_bytes("password", password) + + m = _PEM_RC.search(data) + if not m: + raise ValueError("Not OpenSSH private key format") + p1 = m.start(1) + p2 = m.end(1) + data = binascii.a2b_base64(memoryview(data)[p1:p2]) + if not data.startswith(_SK_MAGIC): + raise ValueError("Not OpenSSH private key format") + data = memoryview(data)[len(_SK_MAGIC) :] + + # parse header + ciphername, data = _get_sshstr(data) + kdfname, data = _get_sshstr(data) + kdfoptions, data = _get_sshstr(data) + nkeys, data = _get_u32(data) + if nkeys != 1: + raise ValueError("Only one key supported") + + # load public key data + pubdata, data = _get_sshstr(data) + pub_key_type, pubdata = _get_sshstr(pubdata) + kformat = _lookup_kformat(pub_key_type) + pubfields, pubdata = kformat.get_public(pubdata) + _check_empty(pubdata) + + if ciphername != _NONE or kdfname != _NONE: + ciphername_bytes = ciphername.tobytes() + if ciphername_bytes not in _SSH_CIPHERS: + raise UnsupportedAlgorithm( + f"Unsupported cipher: {ciphername_bytes!r}" + ) + if kdfname != _BCRYPT: + raise UnsupportedAlgorithm(f"Unsupported KDF: {kdfname!r}") + blklen = _SSH_CIPHERS[ciphername_bytes].block_len + tag_len = _SSH_CIPHERS[ciphername_bytes].tag_len + # load secret data + edata, data = _get_sshstr(data) + # see https://bugzilla.mindrot.org/show_bug.cgi?id=3553 for + # information about how OpenSSH handles AEAD tags + if _SSH_CIPHERS[ciphername_bytes].is_aead: + tag = bytes(data) + if len(tag) != tag_len: + raise ValueError("Corrupt data: invalid tag length for cipher") + else: + _check_empty(data) + _check_block_size(edata, blklen) + salt, kbuf = _get_sshstr(kdfoptions) + rounds, kbuf = _get_u32(kbuf) + _check_empty(kbuf) + ciph = _init_cipher(ciphername_bytes, password, salt.tobytes(), rounds) + dec = ciph.decryptor() + edata = memoryview(dec.update(edata)) + if _SSH_CIPHERS[ciphername_bytes].is_aead: + assert isinstance(dec, AEADDecryptionContext) + _check_empty(dec.finalize_with_tag(tag)) + else: + # _check_block_size requires data to be a full block so there + # should be no output from finalize + _check_empty(dec.finalize()) + else: + if password: + raise TypeError( + "Password was given but private key is not encrypted." + ) + # load secret data + edata, data = _get_sshstr(data) + _check_empty(data) + blklen = 8 + _check_block_size(edata, blklen) + ck1, edata = _get_u32(edata) + ck2, edata = _get_u32(edata) + if ck1 != ck2: + raise ValueError("Corrupt data: broken checksum") + + # load per-key struct + key_type, edata = _get_sshstr(edata) + if key_type != pub_key_type: + raise ValueError("Corrupt data: key type mismatch") + private_key, edata = kformat.load_private( + edata, + pubfields, + unsafe_skip_rsa_key_validation=unsafe_skip_rsa_key_validation, + ) + # We don't use the comment + _, edata = _get_sshstr(edata) + + # yes, SSH does padding check *after* all other parsing is done. + # need to follow as it writes zero-byte padding too. + if edata != _PADDING[: len(edata)]: + raise ValueError("Corrupt data: invalid padding") + + if isinstance(private_key, dsa.DSAPrivateKey): + warnings.warn( + "SSH DSA keys are deprecated and will be removed in a future " + "release.", + utils.DeprecatedIn40, + stacklevel=2, + ) + + return private_key + + +def _serialize_ssh_private_key( + private_key: SSHPrivateKeyTypes, + password: bytes, + encryption_algorithm: KeySerializationEncryption, +) -> bytes: + """Serialize private key with OpenSSH custom encoding.""" + utils._check_bytes("password", password) + if isinstance(private_key, dsa.DSAPrivateKey): + warnings.warn( + "SSH DSA key support is deprecated and will be " + "removed in a future release", + utils.DeprecatedIn40, + stacklevel=4, + ) + + key_type = _get_ssh_key_type(private_key) + kformat = _lookup_kformat(key_type) + + # setup parameters + f_kdfoptions = _FragList() + if password: + ciphername = _DEFAULT_CIPHER + blklen = _SSH_CIPHERS[ciphername].block_len + kdfname = _BCRYPT + rounds = _DEFAULT_ROUNDS + if ( + isinstance(encryption_algorithm, _KeySerializationEncryption) + and encryption_algorithm._kdf_rounds is not None + ): + rounds = encryption_algorithm._kdf_rounds + salt = os.urandom(16) + f_kdfoptions.put_sshstr(salt) + f_kdfoptions.put_u32(rounds) + ciph = _init_cipher(ciphername, password, salt, rounds) + else: + ciphername = kdfname = _NONE + blklen = 8 + ciph = None + nkeys = 1 + checkval = os.urandom(4) + comment = b"" + + # encode public and private parts together + f_public_key = _FragList() + f_public_key.put_sshstr(key_type) + kformat.encode_public(private_key.public_key(), f_public_key) + + f_secrets = _FragList([checkval, checkval]) + f_secrets.put_sshstr(key_type) + kformat.encode_private(private_key, f_secrets) + f_secrets.put_sshstr(comment) + f_secrets.put_raw(_PADDING[: blklen - (f_secrets.size() % blklen)]) + + # top-level structure + f_main = _FragList() + f_main.put_raw(_SK_MAGIC) + f_main.put_sshstr(ciphername) + f_main.put_sshstr(kdfname) + f_main.put_sshstr(f_kdfoptions) + f_main.put_u32(nkeys) + f_main.put_sshstr(f_public_key) + f_main.put_sshstr(f_secrets) + + # copy result info bytearray + slen = f_secrets.size() + mlen = f_main.size() + buf = memoryview(bytearray(mlen + blklen)) + f_main.render(buf) + ofs = mlen - slen + + # encrypt in-place + if ciph is not None: + ciph.encryptor().update_into(buf[ofs:mlen], buf[ofs:]) + + return _ssh_pem_encode(buf[:mlen]) + + +SSHPublicKeyTypes = typing.Union[ + ec.EllipticCurvePublicKey, + rsa.RSAPublicKey, + dsa.DSAPublicKey, + ed25519.Ed25519PublicKey, +] + +SSHCertPublicKeyTypes = typing.Union[ + ec.EllipticCurvePublicKey, + rsa.RSAPublicKey, + ed25519.Ed25519PublicKey, +] + + +class SSHCertificateType(enum.Enum): + USER = 1 + HOST = 2 + + +class SSHCertificate: + def __init__( + self, + _nonce: memoryview, + _public_key: SSHPublicKeyTypes, + _serial: int, + _cctype: int, + _key_id: memoryview, + _valid_principals: list[bytes], + _valid_after: int, + _valid_before: int, + _critical_options: dict[bytes, bytes], + _extensions: dict[bytes, bytes], + _sig_type: memoryview, + _sig_key: memoryview, + _inner_sig_type: memoryview, + _signature: memoryview, + _tbs_cert_body: memoryview, + _cert_key_type: bytes, + _cert_body: memoryview, + ): + self._nonce = _nonce + self._public_key = _public_key + self._serial = _serial + try: + self._type = SSHCertificateType(_cctype) + except ValueError: + raise ValueError("Invalid certificate type") + self._key_id = _key_id + self._valid_principals = _valid_principals + self._valid_after = _valid_after + self._valid_before = _valid_before + self._critical_options = _critical_options + self._extensions = _extensions + self._sig_type = _sig_type + self._sig_key = _sig_key + self._inner_sig_type = _inner_sig_type + self._signature = _signature + self._cert_key_type = _cert_key_type + self._cert_body = _cert_body + self._tbs_cert_body = _tbs_cert_body + + @property + def nonce(self) -> bytes: + return bytes(self._nonce) + + def public_key(self) -> SSHCertPublicKeyTypes: + # make mypy happy until we remove DSA support entirely and + # the underlying union won't have a disallowed type + return typing.cast(SSHCertPublicKeyTypes, self._public_key) + + @property + def serial(self) -> int: + return self._serial + + @property + def type(self) -> SSHCertificateType: + return self._type + + @property + def key_id(self) -> bytes: + return bytes(self._key_id) + + @property + def valid_principals(self) -> list[bytes]: + return self._valid_principals + + @property + def valid_before(self) -> int: + return self._valid_before + + @property + def valid_after(self) -> int: + return self._valid_after + + @property + def critical_options(self) -> dict[bytes, bytes]: + return self._critical_options + + @property + def extensions(self) -> dict[bytes, bytes]: + return self._extensions + + def signature_key(self) -> SSHCertPublicKeyTypes: + sigformat = _lookup_kformat(self._sig_type) + signature_key, sigkey_rest = sigformat.load_public(self._sig_key) + _check_empty(sigkey_rest) + return signature_key + + def public_bytes(self) -> bytes: + return ( + bytes(self._cert_key_type) + + b" " + + binascii.b2a_base64(bytes(self._cert_body), newline=False) + ) + + def verify_cert_signature(self) -> None: + signature_key = self.signature_key() + if isinstance(signature_key, ed25519.Ed25519PublicKey): + signature_key.verify( + bytes(self._signature), bytes(self._tbs_cert_body) + ) + elif isinstance(signature_key, ec.EllipticCurvePublicKey): + # The signature is encoded as a pair of big-endian integers + r, data = _get_mpint(self._signature) + s, data = _get_mpint(data) + _check_empty(data) + computed_sig = asym_utils.encode_dss_signature(r, s) + hash_alg = _get_ec_hash_alg(signature_key.curve) + signature_key.verify( + computed_sig, bytes(self._tbs_cert_body), ec.ECDSA(hash_alg) + ) + else: + assert isinstance(signature_key, rsa.RSAPublicKey) + if self._inner_sig_type == _SSH_RSA: + hash_alg = hashes.SHA1() + elif self._inner_sig_type == _SSH_RSA_SHA256: + hash_alg = hashes.SHA256() + else: + assert self._inner_sig_type == _SSH_RSA_SHA512 + hash_alg = hashes.SHA512() + signature_key.verify( + bytes(self._signature), + bytes(self._tbs_cert_body), + padding.PKCS1v15(), + hash_alg, + ) + + +def _get_ec_hash_alg(curve: ec.EllipticCurve) -> hashes.HashAlgorithm: + if isinstance(curve, ec.SECP256R1): + return hashes.SHA256() + elif isinstance(curve, ec.SECP384R1): + return hashes.SHA384() + else: + assert isinstance(curve, ec.SECP521R1) + return hashes.SHA512() + + +def _load_ssh_public_identity( + data: utils.Buffer, + _legacy_dsa_allowed=False, +) -> SSHCertificate | SSHPublicKeyTypes: + utils._check_byteslike("data", data) + + m = _SSH_PUBKEY_RC.match(data) + if not m: + raise ValueError("Invalid line format") + key_type = orig_key_type = m.group(1) + key_body = m.group(2) + with_cert = False + if key_type.endswith(_CERT_SUFFIX): + with_cert = True + key_type = key_type[: -len(_CERT_SUFFIX)] + if key_type == _SSH_DSA and not _legacy_dsa_allowed: + raise UnsupportedAlgorithm( + "DSA keys aren't supported in SSH certificates" + ) + kformat = _lookup_kformat(key_type) + + try: + rest = memoryview(binascii.a2b_base64(key_body)) + except (TypeError, binascii.Error): + raise ValueError("Invalid format") + + if with_cert: + cert_body = rest + inner_key_type, rest = _get_sshstr(rest) + if inner_key_type != orig_key_type: + raise ValueError("Invalid key format") + if with_cert: + nonce, rest = _get_sshstr(rest) + public_key, rest = kformat.load_public(rest) + if with_cert: + serial, rest = _get_u64(rest) + cctype, rest = _get_u32(rest) + key_id, rest = _get_sshstr(rest) + principals, rest = _get_sshstr(rest) + valid_principals = [] + while principals: + principal, principals = _get_sshstr(principals) + valid_principals.append(bytes(principal)) + valid_after, rest = _get_u64(rest) + valid_before, rest = _get_u64(rest) + crit_options, rest = _get_sshstr(rest) + critical_options = _parse_exts_opts(crit_options) + exts, rest = _get_sshstr(rest) + extensions = _parse_exts_opts(exts) + # Get the reserved field, which is unused. + _, rest = _get_sshstr(rest) + sig_key_raw, rest = _get_sshstr(rest) + sig_type, sig_key = _get_sshstr(sig_key_raw) + if sig_type == _SSH_DSA and not _legacy_dsa_allowed: + raise UnsupportedAlgorithm( + "DSA signatures aren't supported in SSH certificates" + ) + # Get the entire cert body and subtract the signature + tbs_cert_body = cert_body[: -len(rest)] + signature_raw, rest = _get_sshstr(rest) + _check_empty(rest) + inner_sig_type, sig_rest = _get_sshstr(signature_raw) + # RSA certs can have multiple algorithm types + if ( + sig_type == _SSH_RSA + and inner_sig_type + not in [_SSH_RSA_SHA256, _SSH_RSA_SHA512, _SSH_RSA] + ) or (sig_type != _SSH_RSA and inner_sig_type != sig_type): + raise ValueError("Signature key type does not match") + signature, sig_rest = _get_sshstr(sig_rest) + _check_empty(sig_rest) + return SSHCertificate( + nonce, + public_key, + serial, + cctype, + key_id, + valid_principals, + valid_after, + valid_before, + critical_options, + extensions, + sig_type, + sig_key, + inner_sig_type, + signature, + tbs_cert_body, + orig_key_type, + cert_body, + ) + else: + _check_empty(rest) + return public_key + + +def load_ssh_public_identity( + data: utils.Buffer, +) -> SSHCertificate | SSHPublicKeyTypes: + return _load_ssh_public_identity(data) + + +def _parse_exts_opts(exts_opts: memoryview) -> dict[bytes, bytes]: + result: dict[bytes, bytes] = {} + last_name = None + while exts_opts: + name, exts_opts = _get_sshstr(exts_opts) + bname: bytes = bytes(name) + if bname in result: + raise ValueError("Duplicate name") + if last_name is not None and bname < last_name: + raise ValueError("Fields not lexically sorted") + value, exts_opts = _get_sshstr(exts_opts) + if len(value) > 0: + value, extra = _get_sshstr(value) + if len(extra) > 0: + raise ValueError("Unexpected extra data after value") + result[bname] = bytes(value) + last_name = bname + return result + + +def ssh_key_fingerprint( + key: SSHPublicKeyTypes, + hash_algorithm: hashes.MD5 | hashes.SHA256, +) -> bytes: + if not isinstance(hash_algorithm, (hashes.MD5, hashes.SHA256)): + raise TypeError("hash_algorithm must be either MD5 or SHA256") + + key_type = _get_ssh_key_type(key) + kformat = _lookup_kformat(key_type) + + f_pub = _FragList() + f_pub.put_sshstr(key_type) + kformat.encode_public(key, f_pub) + + ssh_binary_data = f_pub.tobytes() + + # Hash the binary data + hash_obj = hashes.Hash(hash_algorithm) + hash_obj.update(ssh_binary_data) + return hash_obj.finalize() + + +def load_ssh_public_key( + data: utils.Buffer, backend: typing.Any = None +) -> SSHPublicKeyTypes: + cert_or_key = _load_ssh_public_identity(data, _legacy_dsa_allowed=True) + public_key: SSHPublicKeyTypes + if isinstance(cert_or_key, SSHCertificate): + public_key = cert_or_key.public_key() + else: + public_key = cert_or_key + + if isinstance(public_key, dsa.DSAPublicKey): + warnings.warn( + "SSH DSA keys are deprecated and will be removed in a future " + "release.", + utils.DeprecatedIn40, + stacklevel=2, + ) + return public_key + + +def serialize_ssh_public_key(public_key: SSHPublicKeyTypes) -> bytes: + """One-line public key format for OpenSSH""" + if isinstance(public_key, dsa.DSAPublicKey): + warnings.warn( + "SSH DSA key support is deprecated and will be " + "removed in a future release", + utils.DeprecatedIn40, + stacklevel=4, + ) + key_type = _get_ssh_key_type(public_key) + kformat = _lookup_kformat(key_type) + + f_pub = _FragList() + f_pub.put_sshstr(key_type) + kformat.encode_public(public_key, f_pub) + + pub = binascii.b2a_base64(f_pub.tobytes()).strip() + return b"".join([key_type, b" ", pub]) + + +SSHCertPrivateKeyTypes = typing.Union[ + ec.EllipticCurvePrivateKey, + rsa.RSAPrivateKey, + ed25519.Ed25519PrivateKey, +] + + +# This is an undocumented limit enforced in the openssh codebase for sshd and +# ssh-keygen, but it is undefined in the ssh certificates spec. +_SSHKEY_CERT_MAX_PRINCIPALS = 256 + + +class SSHCertificateBuilder: + def __init__( + self, + _public_key: SSHCertPublicKeyTypes | None = None, + _serial: int | None = None, + _type: SSHCertificateType | None = None, + _key_id: bytes | None = None, + _valid_principals: list[bytes] = [], + _valid_for_all_principals: bool = False, + _valid_before: int | None = None, + _valid_after: int | None = None, + _critical_options: list[tuple[bytes, bytes]] = [], + _extensions: list[tuple[bytes, bytes]] = [], + ): + self._public_key = _public_key + self._serial = _serial + self._type = _type + self._key_id = _key_id + self._valid_principals = _valid_principals + self._valid_for_all_principals = _valid_for_all_principals + self._valid_before = _valid_before + self._valid_after = _valid_after + self._critical_options = _critical_options + self._extensions = _extensions + + def public_key( + self, public_key: SSHCertPublicKeyTypes + ) -> SSHCertificateBuilder: + if not isinstance( + public_key, + ( + ec.EllipticCurvePublicKey, + rsa.RSAPublicKey, + ed25519.Ed25519PublicKey, + ), + ): + raise TypeError("Unsupported key type") + if self._public_key is not None: + raise ValueError("public_key already set") + + return SSHCertificateBuilder( + _public_key=public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def serial(self, serial: int) -> SSHCertificateBuilder: + if not isinstance(serial, int): + raise TypeError("serial must be an integer") + if not 0 <= serial < 2**64: + raise ValueError("serial must be between 0 and 2**64") + if self._serial is not None: + raise ValueError("serial already set") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def type(self, type: SSHCertificateType) -> SSHCertificateBuilder: + if not isinstance(type, SSHCertificateType): + raise TypeError("type must be an SSHCertificateType") + if self._type is not None: + raise ValueError("type already set") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def key_id(self, key_id: bytes) -> SSHCertificateBuilder: + if not isinstance(key_id, bytes): + raise TypeError("key_id must be bytes") + if self._key_id is not None: + raise ValueError("key_id already set") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def valid_principals( + self, valid_principals: list[bytes] + ) -> SSHCertificateBuilder: + if self._valid_for_all_principals: + raise ValueError( + "Principals can't be set because the cert is valid " + "for all principals" + ) + if ( + not all(isinstance(x, bytes) for x in valid_principals) + or not valid_principals + ): + raise TypeError( + "principals must be a list of bytes and can't be empty" + ) + if self._valid_principals: + raise ValueError("valid_principals already set") + + if len(valid_principals) > _SSHKEY_CERT_MAX_PRINCIPALS: + raise ValueError( + "Reached or exceeded the maximum number of valid_principals" + ) + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def valid_for_all_principals(self): + if self._valid_principals: + raise ValueError( + "valid_principals already set, can't set " + "valid_for_all_principals" + ) + if self._valid_for_all_principals: + raise ValueError("valid_for_all_principals already set") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=True, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def valid_before(self, valid_before: int | float) -> SSHCertificateBuilder: + if not isinstance(valid_before, (int, float)): + raise TypeError("valid_before must be an int or float") + valid_before = int(valid_before) + if valid_before < 0 or valid_before >= 2**64: + raise ValueError("valid_before must [0, 2**64)") + if self._valid_before is not None: + raise ValueError("valid_before already set") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def valid_after(self, valid_after: int | float) -> SSHCertificateBuilder: + if not isinstance(valid_after, (int, float)): + raise TypeError("valid_after must be an int or float") + valid_after = int(valid_after) + if valid_after < 0 or valid_after >= 2**64: + raise ValueError("valid_after must [0, 2**64)") + if self._valid_after is not None: + raise ValueError("valid_after already set") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=valid_after, + _critical_options=self._critical_options, + _extensions=self._extensions, + ) + + def add_critical_option( + self, name: bytes, value: bytes + ) -> SSHCertificateBuilder: + if not isinstance(name, bytes) or not isinstance(value, bytes): + raise TypeError("name and value must be bytes") + # This is O(n**2) + if name in [name for name, _ in self._critical_options]: + raise ValueError("Duplicate critical option name") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=[*self._critical_options, (name, value)], + _extensions=self._extensions, + ) + + def add_extension( + self, name: bytes, value: bytes + ) -> SSHCertificateBuilder: + if not isinstance(name, bytes) or not isinstance(value, bytes): + raise TypeError("name and value must be bytes") + # This is O(n**2) + if name in [name for name, _ in self._extensions]: + raise ValueError("Duplicate extension name") + + return SSHCertificateBuilder( + _public_key=self._public_key, + _serial=self._serial, + _type=self._type, + _key_id=self._key_id, + _valid_principals=self._valid_principals, + _valid_for_all_principals=self._valid_for_all_principals, + _valid_before=self._valid_before, + _valid_after=self._valid_after, + _critical_options=self._critical_options, + _extensions=[*self._extensions, (name, value)], + ) + + def sign(self, private_key: SSHCertPrivateKeyTypes) -> SSHCertificate: + if not isinstance( + private_key, + ( + ec.EllipticCurvePrivateKey, + rsa.RSAPrivateKey, + ed25519.Ed25519PrivateKey, + ), + ): + raise TypeError("Unsupported private key type") + + if self._public_key is None: + raise ValueError("public_key must be set") + + # Not required + serial = 0 if self._serial is None else self._serial + + if self._type is None: + raise ValueError("type must be set") + + # Not required + key_id = b"" if self._key_id is None else self._key_id + + # A zero length list is valid, but means the certificate + # is valid for any principal of the specified type. We require + # the user to explicitly set valid_for_all_principals to get + # that behavior. + if not self._valid_principals and not self._valid_for_all_principals: + raise ValueError( + "valid_principals must be set if valid_for_all_principals " + "is False" + ) + + if self._valid_before is None: + raise ValueError("valid_before must be set") + + if self._valid_after is None: + raise ValueError("valid_after must be set") + + if self._valid_after > self._valid_before: + raise ValueError("valid_after must be earlier than valid_before") + + # lexically sort our byte strings + self._critical_options.sort(key=lambda x: x[0]) + self._extensions.sort(key=lambda x: x[0]) + + key_type = _get_ssh_key_type(self._public_key) + cert_prefix = key_type + _CERT_SUFFIX + + # Marshal the bytes to be signed + nonce = os.urandom(32) + kformat = _lookup_kformat(key_type) + f = _FragList() + f.put_sshstr(cert_prefix) + f.put_sshstr(nonce) + kformat.encode_public(self._public_key, f) + f.put_u64(serial) + f.put_u32(self._type.value) + f.put_sshstr(key_id) + fprincipals = _FragList() + for p in self._valid_principals: + fprincipals.put_sshstr(p) + f.put_sshstr(fprincipals.tobytes()) + f.put_u64(self._valid_after) + f.put_u64(self._valid_before) + fcrit = _FragList() + for name, value in self._critical_options: + fcrit.put_sshstr(name) + if len(value) > 0: + foptval = _FragList() + foptval.put_sshstr(value) + fcrit.put_sshstr(foptval.tobytes()) + else: + fcrit.put_sshstr(value) + f.put_sshstr(fcrit.tobytes()) + fext = _FragList() + for name, value in self._extensions: + fext.put_sshstr(name) + if len(value) > 0: + fextval = _FragList() + fextval.put_sshstr(value) + fext.put_sshstr(fextval.tobytes()) + else: + fext.put_sshstr(value) + f.put_sshstr(fext.tobytes()) + f.put_sshstr(b"") # RESERVED FIELD + # encode CA public key + ca_type = _get_ssh_key_type(private_key) + caformat = _lookup_kformat(ca_type) + caf = _FragList() + caf.put_sshstr(ca_type) + caformat.encode_public(private_key.public_key(), caf) + f.put_sshstr(caf.tobytes()) + # Sigs according to the rules defined for the CA's public key + # (RFC4253 section 6.6 for ssh-rsa, RFC5656 for ECDSA, + # and RFC8032 for Ed25519). + if isinstance(private_key, ed25519.Ed25519PrivateKey): + signature = private_key.sign(f.tobytes()) + fsig = _FragList() + fsig.put_sshstr(ca_type) + fsig.put_sshstr(signature) + f.put_sshstr(fsig.tobytes()) + elif isinstance(private_key, ec.EllipticCurvePrivateKey): + hash_alg = _get_ec_hash_alg(private_key.curve) + signature = private_key.sign(f.tobytes(), ec.ECDSA(hash_alg)) + r, s = asym_utils.decode_dss_signature(signature) + fsig = _FragList() + fsig.put_sshstr(ca_type) + fsigblob = _FragList() + fsigblob.put_mpint(r) + fsigblob.put_mpint(s) + fsig.put_sshstr(fsigblob.tobytes()) + f.put_sshstr(fsig.tobytes()) + + else: + assert isinstance(private_key, rsa.RSAPrivateKey) + # Just like Golang, we're going to use SHA512 for RSA + # https://cs.opensource.google/go/x/crypto/+/refs/tags/ + # v0.4.0:ssh/certs.go;l=445 + # RFC 8332 defines SHA256 and 512 as options + fsig = _FragList() + fsig.put_sshstr(_SSH_RSA_SHA512) + signature = private_key.sign( + f.tobytes(), padding.PKCS1v15(), hashes.SHA512() + ) + fsig.put_sshstr(signature) + f.put_sshstr(fsig.tobytes()) + + cert_data = binascii.b2a_base64(f.tobytes()).strip() + # load_ssh_public_identity returns a union, but this is + # guaranteed to be an SSHCertificate, so we cast to make + # mypy happy. + return typing.cast( + SSHCertificate, + load_ssh_public_identity(b"".join([cert_prefix, b" ", cert_data])), + ) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/twofactor/__init__.py b/intelliaide/vendor/cryptography/hazmat/primitives/twofactor/__init__.py new file mode 100644 index 0000000..c1af423 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/twofactor/__init__.py @@ -0,0 +1,9 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + + +class InvalidToken(Exception): + pass diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/twofactor/hotp.py b/intelliaide/vendor/cryptography/hazmat/primitives/twofactor/hotp.py new file mode 100644 index 0000000..21fb000 --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/twofactor/hotp.py @@ -0,0 +1,101 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import base64 +import typing +from urllib.parse import quote, urlencode + +from cryptography.hazmat.primitives import constant_time, hmac +from cryptography.hazmat.primitives.hashes import SHA1, SHA256, SHA512 +from cryptography.hazmat.primitives.twofactor import InvalidToken +from cryptography.utils import Buffer + +HOTPHashTypes = typing.Union[SHA1, SHA256, SHA512] + + +def _generate_uri( + hotp: HOTP, + type_name: str, + account_name: str, + issuer: str | None, + extra_parameters: list[tuple[str, int]], +) -> str: + parameters = [ + ("digits", hotp._length), + ("secret", base64.b32encode(hotp._key)), + ("algorithm", hotp._algorithm.name.upper()), + ] + + if issuer is not None: + parameters.append(("issuer", issuer)) + + parameters.extend(extra_parameters) + + label = ( + f"{quote(issuer)}:{quote(account_name)}" + if issuer + else quote(account_name) + ) + return f"otpauth://{type_name}/{label}?{urlencode(parameters)}" + + +class HOTP: + def __init__( + self, + key: Buffer, + length: int, + algorithm: HOTPHashTypes, + backend: typing.Any = None, + enforce_key_length: bool = True, + ) -> None: + if len(key) < 16 and enforce_key_length is True: + raise ValueError("Key length has to be at least 128 bits.") + + if not isinstance(length, int): + raise TypeError("Length parameter must be an integer type.") + + if length < 6 or length > 8: + raise ValueError("Length of HOTP has to be between 6 and 8.") + + if not isinstance(algorithm, (SHA1, SHA256, SHA512)): + raise TypeError("Algorithm must be SHA1, SHA256 or SHA512.") + + self._key = key + self._length = length + self._algorithm = algorithm + + def generate(self, counter: int) -> bytes: + if not isinstance(counter, int): + raise TypeError("Counter parameter must be an integer type.") + + truncated_value = self._dynamic_truncate(counter) + hotp = truncated_value % (10**self._length) + return "{0:0{1}}".format(hotp, self._length).encode() + + def verify(self, hotp: bytes, counter: int) -> None: + if not constant_time.bytes_eq(self.generate(counter), hotp): + raise InvalidToken("Supplied HOTP value does not match.") + + def _dynamic_truncate(self, counter: int) -> int: + ctx = hmac.HMAC(self._key, self._algorithm) + + try: + ctx.update(counter.to_bytes(length=8, byteorder="big")) + except OverflowError: + raise ValueError(f"Counter must be between 0 and {2**64 - 1}.") + + hmac_value = ctx.finalize() + + offset = hmac_value[len(hmac_value) - 1] & 0b1111 + p = hmac_value[offset : offset + 4] + return int.from_bytes(p, byteorder="big") & 0x7FFFFFFF + + def get_provisioning_uri( + self, account_name: str, counter: int, issuer: str | None + ) -> str: + return _generate_uri( + self, "hotp", account_name, issuer, [("counter", int(counter))] + ) diff --git a/intelliaide/vendor/cryptography/hazmat/primitives/twofactor/totp.py b/intelliaide/vendor/cryptography/hazmat/primitives/twofactor/totp.py new file mode 100644 index 0000000..10c725c --- /dev/null +++ b/intelliaide/vendor/cryptography/hazmat/primitives/twofactor/totp.py @@ -0,0 +1,56 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import typing + +from cryptography.hazmat.primitives import constant_time +from cryptography.hazmat.primitives.twofactor import InvalidToken +from cryptography.hazmat.primitives.twofactor.hotp import ( + HOTP, + HOTPHashTypes, + _generate_uri, +) +from cryptography.utils import Buffer + + +class TOTP: + def __init__( + self, + key: Buffer, + length: int, + algorithm: HOTPHashTypes, + time_step: int, + backend: typing.Any = None, + enforce_key_length: bool = True, + ): + self._time_step = time_step + self._hotp = HOTP( + key, length, algorithm, enforce_key_length=enforce_key_length + ) + + def generate(self, time: int | float) -> bytes: + if not isinstance(time, (int, float)): + raise TypeError( + "Time parameter must be an integer type or float type." + ) + + counter = int(time / self._time_step) + return self._hotp.generate(counter) + + def verify(self, totp: bytes, time: int) -> None: + if not constant_time.bytes_eq(self.generate(time), totp): + raise InvalidToken("Supplied TOTP value does not match.") + + def get_provisioning_uri( + self, account_name: str, issuer: str | None + ) -> str: + return _generate_uri( + self._hotp, + "totp", + account_name, + issuer, + [("period", int(self._time_step))], + ) diff --git a/intelliaide/vendor/cryptography/py.typed b/intelliaide/vendor/cryptography/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/intelliaide/vendor/cryptography/utils.py b/intelliaide/vendor/cryptography/utils.py new file mode 100644 index 0000000..9cfc992 --- /dev/null +++ b/intelliaide/vendor/cryptography/utils.py @@ -0,0 +1,135 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import enum +import sys +import types +import typing +import warnings +from collections.abc import Callable, Sequence + + +# We use a UserWarning subclass, instead of DeprecationWarning, because CPython +# decided deprecation warnings should be invisible by default. +class CryptographyDeprecationWarning(UserWarning): + pass + + +# Several APIs were deprecated with no specific end-of-life date because of the +# ubiquity of their use. They should not be removed until we agree on when that +# cycle ends. +DeprecatedIn36 = CryptographyDeprecationWarning +DeprecatedIn40 = CryptographyDeprecationWarning +DeprecatedIn41 = CryptographyDeprecationWarning +DeprecatedIn42 = CryptographyDeprecationWarning +DeprecatedIn43 = CryptographyDeprecationWarning +DeprecatedIn47 = CryptographyDeprecationWarning + + +# If you're wondering why we don't use `Buffer`, it's because `Buffer` would +# be more accurately named: Bufferable. It means something which has an +# `__buffer__`. Which means you can't actually treat the result as a buffer +# (and do things like take a `len()`). +Buffer = typing.Union[bytes, bytearray, memoryview] + + +def _check_bytes(name: str, value: bytes) -> None: + if not isinstance(value, bytes): + raise TypeError(f"{name} must be bytes") + + +def _check_byteslike(name: str, value: Buffer) -> None: + try: + memoryview(value) + except TypeError: + raise TypeError(f"{name} must be bytes-like") + + +def int_to_bytes(integer: int, length: int | None = None) -> bytes: + if length == 0: + raise ValueError("length argument can't be 0") + return integer.to_bytes( + length or (integer.bit_length() + 7) // 8 or 1, "big" + ) + + +class InterfaceNotImplemented(Exception): + pass + + +class _DeprecatedValue: + def __init__(self, value: object, message: str, warning_class): + self.value = value + self.message = message + self.warning_class = warning_class + + +class _ModuleWithDeprecations(types.ModuleType): + def __init__(self, module: types.ModuleType): + super().__init__(module.__name__) + self.__dict__["_module"] = module + + def __getattr__(self, name: str) -> typing.Any: + obj = getattr(self._module, name) + if isinstance(obj, _DeprecatedValue): + warnings.warn(obj.message, obj.warning_class, stacklevel=2) + obj = obj.value + return obj + + def __setattr__(self, attr: str, value: object) -> None: + setattr(self._module, attr, value) + + def __delattr__(self, attr: str) -> None: + obj = getattr(self._module, attr) + if isinstance(obj, _DeprecatedValue): + warnings.warn(obj.message, obj.warning_class, stacklevel=2) + + delattr(self._module, attr) + + def __dir__(self) -> Sequence[str]: + return ["_module", *dir(self._module)] + + +def deprecated( + value: object, + module_name: str, + message: str, + warning_class: type[Warning], + name: str | None = None, +) -> _DeprecatedValue: + module = sys.modules[module_name] + if not isinstance(module, _ModuleWithDeprecations): + sys.modules[module_name] = module = _ModuleWithDeprecations(module) + dv = _DeprecatedValue(value, message, warning_class) + # Maintain backwards compatibility with `name is None` for pyOpenSSL. + if name is not None: + setattr(module, name, dv) + return dv + + +def cached_property(func: Callable) -> property: + cached_name = f"_cached_{func}" + sentinel = object() + + def inner(instance: object): + cache = getattr(instance, cached_name, sentinel) + if cache is not sentinel: + return cache + result = func(instance) + setattr(instance, cached_name, result) + return result + + return property(inner) + + +# Python 3.10 changed representation of enums. We use well-defined object +# representation and string representation from Python 3.9. +class Enum(enum.Enum): + def __repr__(self) -> str: + return f"<{self.__class__.__name__}.{self._name_}: {self._value_!r}>" + + def __str__(self) -> str: + return f"{self.__class__.__name__}.{self._name_}" diff --git a/intelliaide/vendor/cryptography/x509/__init__.py b/intelliaide/vendor/cryptography/x509/__init__.py new file mode 100644 index 0000000..cb34833 --- /dev/null +++ b/intelliaide/vendor/cryptography/x509/__init__.py @@ -0,0 +1,271 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.x509 import certificate_transparency, oid, verification +from cryptography.x509.base import ( + Attribute, + AttributeNotFound, + Attributes, + Certificate, + CertificateBuilder, + CertificateRevocationList, + CertificateRevocationListBuilder, + CertificateSigningRequest, + CertificateSigningRequestBuilder, + InvalidVersion, + RevokedCertificate, + RevokedCertificateBuilder, + Version, + load_der_x509_certificate, + load_der_x509_crl, + load_der_x509_csr, + load_pem_x509_certificate, + load_pem_x509_certificates, + load_pem_x509_crl, + load_pem_x509_csr, + random_serial_number, +) +from cryptography.x509.extensions import ( + AccessDescription, + Admission, + Admissions, + AuthorityInformationAccess, + AuthorityKeyIdentifier, + BasicConstraints, + CertificateIssuer, + CertificatePolicies, + CRLDistributionPoints, + CRLNumber, + CRLReason, + DeltaCRLIndicator, + DistributionPoint, + DuplicateExtension, + ExtendedKeyUsage, + Extension, + ExtensionNotFound, + Extensions, + ExtensionType, + FreshestCRL, + GeneralNames, + InhibitAnyPolicy, + InvalidityDate, + IssuerAlternativeName, + IssuingDistributionPoint, + KeyUsage, + MSCertificateTemplate, + NameConstraints, + NamingAuthority, + NoticeReference, + OCSPAcceptableResponses, + OCSPNoCheck, + OCSPNonce, + PolicyConstraints, + PolicyInformation, + PrecertificateSignedCertificateTimestamps, + PrecertPoison, + PrivateKeyUsagePeriod, + ProfessionInfo, + ReasonFlags, + SignedCertificateTimestamps, + SubjectAlternativeName, + SubjectInformationAccess, + SubjectKeyIdentifier, + TLSFeature, + TLSFeatureType, + UnrecognizedExtension, + UserNotice, +) +from cryptography.x509.general_name import ( + DirectoryName, + DNSName, + GeneralName, + IPAddress, + OtherName, + RegisteredID, + RFC822Name, + UniformResourceIdentifier, + UnsupportedGeneralNameType, +) +from cryptography.x509.name import ( + Name, + NameAttribute, + RelativeDistinguishedName, +) +from cryptography.x509.oid import ( + AuthorityInformationAccessOID, + CertificatePoliciesOID, + CRLEntryExtensionOID, + ExtendedKeyUsageOID, + ExtensionOID, + NameOID, + ObjectIdentifier, + PublicKeyAlgorithmOID, + SignatureAlgorithmOID, +) + +OID_AUTHORITY_INFORMATION_ACCESS = ExtensionOID.AUTHORITY_INFORMATION_ACCESS +OID_AUTHORITY_KEY_IDENTIFIER = ExtensionOID.AUTHORITY_KEY_IDENTIFIER +OID_BASIC_CONSTRAINTS = ExtensionOID.BASIC_CONSTRAINTS +OID_CERTIFICATE_POLICIES = ExtensionOID.CERTIFICATE_POLICIES +OID_CRL_DISTRIBUTION_POINTS = ExtensionOID.CRL_DISTRIBUTION_POINTS +OID_EXTENDED_KEY_USAGE = ExtensionOID.EXTENDED_KEY_USAGE +OID_FRESHEST_CRL = ExtensionOID.FRESHEST_CRL +OID_INHIBIT_ANY_POLICY = ExtensionOID.INHIBIT_ANY_POLICY +OID_ISSUER_ALTERNATIVE_NAME = ExtensionOID.ISSUER_ALTERNATIVE_NAME +OID_KEY_USAGE = ExtensionOID.KEY_USAGE +OID_PRIVATE_KEY_USAGE_PERIOD = ExtensionOID.PRIVATE_KEY_USAGE_PERIOD +OID_NAME_CONSTRAINTS = ExtensionOID.NAME_CONSTRAINTS +OID_OCSP_NO_CHECK = ExtensionOID.OCSP_NO_CHECK +OID_POLICY_CONSTRAINTS = ExtensionOID.POLICY_CONSTRAINTS +OID_POLICY_MAPPINGS = ExtensionOID.POLICY_MAPPINGS +OID_SUBJECT_ALTERNATIVE_NAME = ExtensionOID.SUBJECT_ALTERNATIVE_NAME +OID_SUBJECT_DIRECTORY_ATTRIBUTES = ExtensionOID.SUBJECT_DIRECTORY_ATTRIBUTES +OID_SUBJECT_INFORMATION_ACCESS = ExtensionOID.SUBJECT_INFORMATION_ACCESS +OID_SUBJECT_KEY_IDENTIFIER = ExtensionOID.SUBJECT_KEY_IDENTIFIER + +OID_DSA_WITH_SHA1 = SignatureAlgorithmOID.DSA_WITH_SHA1 +OID_DSA_WITH_SHA224 = SignatureAlgorithmOID.DSA_WITH_SHA224 +OID_DSA_WITH_SHA256 = SignatureAlgorithmOID.DSA_WITH_SHA256 +OID_ECDSA_WITH_SHA1 = SignatureAlgorithmOID.ECDSA_WITH_SHA1 +OID_ECDSA_WITH_SHA224 = SignatureAlgorithmOID.ECDSA_WITH_SHA224 +OID_ECDSA_WITH_SHA256 = SignatureAlgorithmOID.ECDSA_WITH_SHA256 +OID_ECDSA_WITH_SHA384 = SignatureAlgorithmOID.ECDSA_WITH_SHA384 +OID_ECDSA_WITH_SHA512 = SignatureAlgorithmOID.ECDSA_WITH_SHA512 +OID_RSA_WITH_MD5 = SignatureAlgorithmOID.RSA_WITH_MD5 +OID_RSA_WITH_SHA1 = SignatureAlgorithmOID.RSA_WITH_SHA1 +OID_RSA_WITH_SHA224 = SignatureAlgorithmOID.RSA_WITH_SHA224 +OID_RSA_WITH_SHA256 = SignatureAlgorithmOID.RSA_WITH_SHA256 +OID_RSA_WITH_SHA384 = SignatureAlgorithmOID.RSA_WITH_SHA384 +OID_RSA_WITH_SHA512 = SignatureAlgorithmOID.RSA_WITH_SHA512 +OID_RSASSA_PSS = SignatureAlgorithmOID.RSASSA_PSS + +OID_COMMON_NAME = NameOID.COMMON_NAME +OID_COUNTRY_NAME = NameOID.COUNTRY_NAME +OID_DOMAIN_COMPONENT = NameOID.DOMAIN_COMPONENT +OID_DN_QUALIFIER = NameOID.DN_QUALIFIER +OID_EMAIL_ADDRESS = NameOID.EMAIL_ADDRESS +OID_GENERATION_QUALIFIER = NameOID.GENERATION_QUALIFIER +OID_GIVEN_NAME = NameOID.GIVEN_NAME +OID_LOCALITY_NAME = NameOID.LOCALITY_NAME +OID_ORGANIZATIONAL_UNIT_NAME = NameOID.ORGANIZATIONAL_UNIT_NAME +OID_ORGANIZATION_NAME = NameOID.ORGANIZATION_NAME +OID_PSEUDONYM = NameOID.PSEUDONYM +OID_SERIAL_NUMBER = NameOID.SERIAL_NUMBER +OID_STATE_OR_PROVINCE_NAME = NameOID.STATE_OR_PROVINCE_NAME +OID_SURNAME = NameOID.SURNAME +OID_TITLE = NameOID.TITLE + +OID_CLIENT_AUTH = ExtendedKeyUsageOID.CLIENT_AUTH +OID_CODE_SIGNING = ExtendedKeyUsageOID.CODE_SIGNING +OID_EMAIL_PROTECTION = ExtendedKeyUsageOID.EMAIL_PROTECTION +OID_OCSP_SIGNING = ExtendedKeyUsageOID.OCSP_SIGNING +OID_SERVER_AUTH = ExtendedKeyUsageOID.SERVER_AUTH +OID_TIME_STAMPING = ExtendedKeyUsageOID.TIME_STAMPING + +OID_ANY_POLICY = CertificatePoliciesOID.ANY_POLICY +OID_CPS_QUALIFIER = CertificatePoliciesOID.CPS_QUALIFIER +OID_CPS_USER_NOTICE = CertificatePoliciesOID.CPS_USER_NOTICE + +OID_CERTIFICATE_ISSUER = CRLEntryExtensionOID.CERTIFICATE_ISSUER +OID_CRL_REASON = CRLEntryExtensionOID.CRL_REASON +OID_INVALIDITY_DATE = CRLEntryExtensionOID.INVALIDITY_DATE + +OID_CA_ISSUERS = AuthorityInformationAccessOID.CA_ISSUERS +OID_OCSP = AuthorityInformationAccessOID.OCSP + +__all__ = [ + "OID_CA_ISSUERS", + "OID_OCSP", + "AccessDescription", + "Admission", + "Admissions", + "Attribute", + "AttributeNotFound", + "Attributes", + "AuthorityInformationAccess", + "AuthorityKeyIdentifier", + "BasicConstraints", + "CRLDistributionPoints", + "CRLNumber", + "CRLReason", + "Certificate", + "CertificateBuilder", + "CertificateIssuer", + "CertificatePolicies", + "CertificateRevocationList", + "CertificateRevocationListBuilder", + "CertificateSigningRequest", + "CertificateSigningRequestBuilder", + "DNSName", + "DeltaCRLIndicator", + "DirectoryName", + "DistributionPoint", + "DuplicateExtension", + "ExtendedKeyUsage", + "Extension", + "ExtensionNotFound", + "ExtensionType", + "Extensions", + "FreshestCRL", + "GeneralName", + "GeneralNames", + "IPAddress", + "InhibitAnyPolicy", + "InvalidVersion", + "InvalidityDate", + "IssuerAlternativeName", + "IssuingDistributionPoint", + "KeyUsage", + "MSCertificateTemplate", + "Name", + "NameAttribute", + "NameConstraints", + "NameOID", + "NamingAuthority", + "NoticeReference", + "OCSPAcceptableResponses", + "OCSPNoCheck", + "OCSPNonce", + "ObjectIdentifier", + "OtherName", + "PolicyConstraints", + "PolicyInformation", + "PrecertPoison", + "PrecertificateSignedCertificateTimestamps", + "PrivateKeyUsagePeriod", + "ProfessionInfo", + "PublicKeyAlgorithmOID", + "RFC822Name", + "ReasonFlags", + "RegisteredID", + "RelativeDistinguishedName", + "RevokedCertificate", + "RevokedCertificateBuilder", + "SignatureAlgorithmOID", + "SignedCertificateTimestamps", + "SubjectAlternativeName", + "SubjectInformationAccess", + "SubjectKeyIdentifier", + "TLSFeature", + "TLSFeatureType", + "UniformResourceIdentifier", + "UnrecognizedExtension", + "UnsupportedGeneralNameType", + "UserNotice", + "Version", + "certificate_transparency", + "load_der_x509_certificate", + "load_der_x509_crl", + "load_der_x509_csr", + "load_pem_x509_certificate", + "load_pem_x509_certificates", + "load_pem_x509_crl", + "load_pem_x509_csr", + "oid", + "random_serial_number", + "verification", + "verification", +] diff --git a/intelliaide/vendor/cryptography/x509/base.py b/intelliaide/vendor/cryptography/x509/base.py new file mode 100644 index 0000000..a11b8fe --- /dev/null +++ b/intelliaide/vendor/cryptography/x509/base.py @@ -0,0 +1,773 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import datetime +import os +import typing +from collections.abc import Iterable + +from cryptography import utils +from cryptography.hazmat.bindings._rust import x509 as rust_x509 +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.asymmetric import ( + dsa, + ec, + ed448, + ed25519, + padding, + rsa, + x448, + x25519, +) +from cryptography.hazmat.primitives.asymmetric.types import ( + CertificateIssuerPrivateKeyTypes, + CertificatePublicKeyTypes, +) +from cryptography.x509.extensions import ( + Extension, + ExtensionType, + _make_sequence_methods, +) +from cryptography.x509.name import Name, _ASN1Type +from cryptography.x509.oid import ObjectIdentifier + +_EARLIEST_UTC_TIME = datetime.datetime(1950, 1, 1) + +# This must be kept in sync with sign.rs's list of allowable types in +# identify_hash_type +_AllowedHashTypes = typing.Union[ + hashes.SHA224, + hashes.SHA256, + hashes.SHA384, + hashes.SHA512, + hashes.SHA3_224, + hashes.SHA3_256, + hashes.SHA3_384, + hashes.SHA3_512, +] + + +class AttributeNotFound(Exception): + def __init__(self, msg: str, oid: ObjectIdentifier) -> None: + super().__init__(msg) + self.oid = oid + + +def _reject_duplicate_extension( + extension: Extension[ExtensionType], + extensions: list[Extension[ExtensionType]], +) -> None: + # This is quadratic in the number of extensions + for e in extensions: + if e.oid == extension.oid: + raise ValueError("This extension has already been set.") + + +def _reject_duplicate_attribute( + oid: ObjectIdentifier, + attributes: list[tuple[ObjectIdentifier, bytes, int | None]], +) -> None: + # This is quadratic in the number of attributes + for attr_oid, _, _ in attributes: + if attr_oid == oid: + raise ValueError("This attribute has already been set.") + + +def _convert_to_naive_utc_time(time: datetime.datetime) -> datetime.datetime: + """Normalizes a datetime to a naive datetime in UTC. + + time -- datetime to normalize. Assumed to be in UTC if not timezone + aware. + """ + if time.tzinfo is not None: + offset = time.utcoffset() + offset = offset if offset else datetime.timedelta() + return time.replace(tzinfo=None) - offset + else: + return time + + +class Attribute: + def __init__( + self, + oid: ObjectIdentifier, + value: bytes, + _type: int = _ASN1Type.UTF8String.value, + ) -> None: + self._oid = oid + self._value = value + self._type = _type + + @property + def oid(self) -> ObjectIdentifier: + return self._oid + + @property + def value(self) -> bytes: + return self._value + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Attribute): + return NotImplemented + + return ( + self.oid == other.oid + and self.value == other.value + and self._type == other._type + ) + + def __hash__(self) -> int: + return hash((self.oid, self.value, self._type)) + + +class Attributes: + def __init__( + self, + attributes: Iterable[Attribute], + ) -> None: + self._attributes = list(attributes) + + __len__, __iter__, __getitem__ = _make_sequence_methods("_attributes") + + def __repr__(self) -> str: + return f"" + + def get_attribute_for_oid(self, oid: ObjectIdentifier) -> Attribute: + for attr in self: + if attr.oid == oid: + return attr + + raise AttributeNotFound(f"No {oid} attribute was found", oid) + + +class Version(utils.Enum): + v1 = 0 + v3 = 2 + + +class InvalidVersion(Exception): + def __init__(self, msg: str, parsed_version: int) -> None: + super().__init__(msg) + self.parsed_version = parsed_version + + +Certificate = rust_x509.Certificate +RevokedCertificate = rust_x509.RevokedCertificate + + +CertificateRevocationList = rust_x509.CertificateRevocationList +CertificateSigningRequest = rust_x509.CertificateSigningRequest + + +load_pem_x509_certificate = rust_x509.load_pem_x509_certificate +load_der_x509_certificate = rust_x509.load_der_x509_certificate + +load_pem_x509_certificates = rust_x509.load_pem_x509_certificates + +load_pem_x509_csr = rust_x509.load_pem_x509_csr +load_der_x509_csr = rust_x509.load_der_x509_csr + +load_pem_x509_crl = rust_x509.load_pem_x509_crl +load_der_x509_crl = rust_x509.load_der_x509_crl + + +class CertificateSigningRequestBuilder: + def __init__( + self, + subject_name: Name | None = None, + extensions: list[Extension[ExtensionType]] = [], + attributes: list[tuple[ObjectIdentifier, bytes, int | None]] = [], + ): + """ + Creates an empty X.509 certificate request (v1). + """ + self._subject_name = subject_name + self._extensions = extensions + self._attributes = attributes + + def subject_name(self, name: Name) -> CertificateSigningRequestBuilder: + """ + Sets the certificate requestor's distinguished name. + """ + if not isinstance(name, Name): + raise TypeError("Expecting x509.Name object.") + if self._subject_name is not None: + raise ValueError("The subject name may only be set once.") + return CertificateSigningRequestBuilder( + name, self._extensions, self._attributes + ) + + def add_extension( + self, extval: ExtensionType, critical: bool + ) -> CertificateSigningRequestBuilder: + """ + Adds an X.509 extension to the certificate request. + """ + if not isinstance(extval, ExtensionType): + raise TypeError("extension must be an ExtensionType") + + extension = Extension(extval.oid, critical, extval) + _reject_duplicate_extension(extension, self._extensions) + + return CertificateSigningRequestBuilder( + self._subject_name, + [*self._extensions, extension], + self._attributes, + ) + + def add_attribute( + self, + oid: ObjectIdentifier, + value: bytes, + *, + _tag: _ASN1Type | None = None, + ) -> CertificateSigningRequestBuilder: + """ + Adds an X.509 attribute with an OID and associated value. + """ + if not isinstance(oid, ObjectIdentifier): + raise TypeError("oid must be an ObjectIdentifier") + + if not isinstance(value, bytes): + raise TypeError("value must be bytes") + + if _tag is not None and not isinstance(_tag, _ASN1Type): + raise TypeError("tag must be _ASN1Type") + + _reject_duplicate_attribute(oid, self._attributes) + + if _tag is not None: + tag = _tag.value + else: + tag = None + + return CertificateSigningRequestBuilder( + self._subject_name, + self._extensions, + [*self._attributes, (oid, value, tag)], + ) + + def sign( + self, + private_key: CertificateIssuerPrivateKeyTypes, + algorithm: _AllowedHashTypes | None, + backend: typing.Any = None, + *, + rsa_padding: padding.PSS | padding.PKCS1v15 | None = None, + ecdsa_deterministic: bool | None = None, + ) -> CertificateSigningRequest: + """ + Signs the request using the requestor's private key. + """ + if self._subject_name is None: + raise ValueError("A CertificateSigningRequest must have a subject") + + if rsa_padding is not None: + if not isinstance(rsa_padding, (padding.PSS, padding.PKCS1v15)): + raise TypeError("Padding must be PSS or PKCS1v15") + if not isinstance(private_key, rsa.RSAPrivateKey): + raise TypeError("Padding is only supported for RSA keys") + + if ecdsa_deterministic is not None: + if not isinstance(private_key, ec.EllipticCurvePrivateKey): + raise TypeError( + "Deterministic ECDSA is only supported for EC keys" + ) + + return rust_x509.create_x509_csr( + self, + private_key, + algorithm, + rsa_padding, + ecdsa_deterministic, + ) + + +class CertificateBuilder: + _extensions: list[Extension[ExtensionType]] + + def __init__( + self, + issuer_name: Name | None = None, + subject_name: Name | None = None, + public_key: CertificatePublicKeyTypes | None = None, + serial_number: int | None = None, + not_valid_before: datetime.datetime | None = None, + not_valid_after: datetime.datetime | None = None, + extensions: list[Extension[ExtensionType]] = [], + ) -> None: + self._version = Version.v3 + self._issuer_name = issuer_name + self._subject_name = subject_name + self._public_key = public_key + self._serial_number = serial_number + self._not_valid_before = not_valid_before + self._not_valid_after = not_valid_after + self._extensions = extensions + + def issuer_name(self, name: Name) -> CertificateBuilder: + """ + Sets the CA's distinguished name. + """ + if not isinstance(name, Name): + raise TypeError("Expecting x509.Name object.") + if self._issuer_name is not None: + raise ValueError("The issuer name may only be set once.") + return CertificateBuilder( + name, + self._subject_name, + self._public_key, + self._serial_number, + self._not_valid_before, + self._not_valid_after, + self._extensions, + ) + + def subject_name(self, name: Name) -> CertificateBuilder: + """ + Sets the requestor's distinguished name. + """ + if not isinstance(name, Name): + raise TypeError("Expecting x509.Name object.") + if self._subject_name is not None: + raise ValueError("The subject name may only be set once.") + return CertificateBuilder( + self._issuer_name, + name, + self._public_key, + self._serial_number, + self._not_valid_before, + self._not_valid_after, + self._extensions, + ) + + def public_key( + self, + key: CertificatePublicKeyTypes, + ) -> CertificateBuilder: + """ + Sets the requestor's public key (as found in the signing request). + """ + if not isinstance( + key, + ( + dsa.DSAPublicKey, + rsa.RSAPublicKey, + ec.EllipticCurvePublicKey, + ed25519.Ed25519PublicKey, + ed448.Ed448PublicKey, + x25519.X25519PublicKey, + x448.X448PublicKey, + ), + ): + raise TypeError( + "Expecting one of DSAPublicKey, RSAPublicKey," + " EllipticCurvePublicKey, Ed25519PublicKey," + " Ed448PublicKey, X25519PublicKey, or " + "X448PublicKey." + ) + if self._public_key is not None: + raise ValueError("The public key may only be set once.") + return CertificateBuilder( + self._issuer_name, + self._subject_name, + key, + self._serial_number, + self._not_valid_before, + self._not_valid_after, + self._extensions, + ) + + def serial_number(self, number: int) -> CertificateBuilder: + """ + Sets the certificate serial number. + """ + if not isinstance(number, int): + raise TypeError("Serial number must be of integral type.") + if self._serial_number is not None: + raise ValueError("The serial number may only be set once.") + if number <= 0: + raise ValueError("The serial number should be positive.") + + # ASN.1 integers are always signed, so most significant bit must be + # zero. + if number.bit_length() >= 160: # As defined in RFC 5280 + raise ValueError( + "The serial number should not be more than 159 bits." + ) + return CertificateBuilder( + self._issuer_name, + self._subject_name, + self._public_key, + number, + self._not_valid_before, + self._not_valid_after, + self._extensions, + ) + + def not_valid_before(self, time: datetime.datetime) -> CertificateBuilder: + """ + Sets the certificate activation time. + """ + if not isinstance(time, datetime.datetime): + raise TypeError("Expecting datetime object.") + if self._not_valid_before is not None: + raise ValueError("The not valid before may only be set once.") + time = _convert_to_naive_utc_time(time) + if time < _EARLIEST_UTC_TIME: + raise ValueError( + "The not valid before date must be on or after" + " 1950 January 1)." + ) + if self._not_valid_after is not None and time > self._not_valid_after: + raise ValueError( + "The not valid before date must be before the not valid after " + "date." + ) + return CertificateBuilder( + self._issuer_name, + self._subject_name, + self._public_key, + self._serial_number, + time, + self._not_valid_after, + self._extensions, + ) + + def not_valid_after(self, time: datetime.datetime) -> CertificateBuilder: + """ + Sets the certificate expiration time. + """ + if not isinstance(time, datetime.datetime): + raise TypeError("Expecting datetime object.") + if self._not_valid_after is not None: + raise ValueError("The not valid after may only be set once.") + time = _convert_to_naive_utc_time(time) + if time < _EARLIEST_UTC_TIME: + raise ValueError( + "The not valid after date must be on or after 1950 January 1." + ) + if ( + self._not_valid_before is not None + and time < self._not_valid_before + ): + raise ValueError( + "The not valid after date must be after the not valid before " + "date." + ) + return CertificateBuilder( + self._issuer_name, + self._subject_name, + self._public_key, + self._serial_number, + self._not_valid_before, + time, + self._extensions, + ) + + def add_extension( + self, extval: ExtensionType, critical: bool + ) -> CertificateBuilder: + """ + Adds an X.509 extension to the certificate. + """ + if not isinstance(extval, ExtensionType): + raise TypeError("extension must be an ExtensionType") + + extension = Extension(extval.oid, critical, extval) + _reject_duplicate_extension(extension, self._extensions) + + return CertificateBuilder( + self._issuer_name, + self._subject_name, + self._public_key, + self._serial_number, + self._not_valid_before, + self._not_valid_after, + [*self._extensions, extension], + ) + + def sign( + self, + private_key: CertificateIssuerPrivateKeyTypes, + algorithm: _AllowedHashTypes | None, + backend: typing.Any = None, + *, + rsa_padding: padding.PSS | padding.PKCS1v15 | None = None, + ecdsa_deterministic: bool | None = None, + ) -> Certificate: + """ + Signs the certificate using the CA's private key. + """ + if self._subject_name is None: + raise ValueError("A certificate must have a subject name") + + if self._issuer_name is None: + raise ValueError("A certificate must have an issuer name") + + if self._serial_number is None: + raise ValueError("A certificate must have a serial number") + + if self._not_valid_before is None: + raise ValueError("A certificate must have a not valid before time") + + if self._not_valid_after is None: + raise ValueError("A certificate must have a not valid after time") + + if self._public_key is None: + raise ValueError("A certificate must have a public key") + + if rsa_padding is not None: + if not isinstance(rsa_padding, (padding.PSS, padding.PKCS1v15)): + raise TypeError("Padding must be PSS or PKCS1v15") + if not isinstance(private_key, rsa.RSAPrivateKey): + raise TypeError("Padding is only supported for RSA keys") + + if ecdsa_deterministic is not None: + if not isinstance(private_key, ec.EllipticCurvePrivateKey): + raise TypeError( + "Deterministic ECDSA is only supported for EC keys" + ) + + return rust_x509.create_x509_certificate( + self, + private_key, + algorithm, + rsa_padding, + ecdsa_deterministic, + ) + + +class CertificateRevocationListBuilder: + _extensions: list[Extension[ExtensionType]] + _revoked_certificates: list[RevokedCertificate] + + def __init__( + self, + issuer_name: Name | None = None, + last_update: datetime.datetime | None = None, + next_update: datetime.datetime | None = None, + extensions: list[Extension[ExtensionType]] = [], + revoked_certificates: list[RevokedCertificate] = [], + ): + self._issuer_name = issuer_name + self._last_update = last_update + self._next_update = next_update + self._extensions = extensions + self._revoked_certificates = revoked_certificates + + def issuer_name( + self, issuer_name: Name + ) -> CertificateRevocationListBuilder: + if not isinstance(issuer_name, Name): + raise TypeError("Expecting x509.Name object.") + if self._issuer_name is not None: + raise ValueError("The issuer name may only be set once.") + return CertificateRevocationListBuilder( + issuer_name, + self._last_update, + self._next_update, + self._extensions, + self._revoked_certificates, + ) + + def last_update( + self, last_update: datetime.datetime + ) -> CertificateRevocationListBuilder: + if not isinstance(last_update, datetime.datetime): + raise TypeError("Expecting datetime object.") + if self._last_update is not None: + raise ValueError("Last update may only be set once.") + last_update = _convert_to_naive_utc_time(last_update) + if last_update < _EARLIEST_UTC_TIME: + raise ValueError( + "The last update date must be on or after 1950 January 1." + ) + if self._next_update is not None and last_update > self._next_update: + raise ValueError( + "The last update date must be before the next update date." + ) + return CertificateRevocationListBuilder( + self._issuer_name, + last_update, + self._next_update, + self._extensions, + self._revoked_certificates, + ) + + def next_update( + self, next_update: datetime.datetime + ) -> CertificateRevocationListBuilder: + if not isinstance(next_update, datetime.datetime): + raise TypeError("Expecting datetime object.") + if self._next_update is not None: + raise ValueError("Last update may only be set once.") + next_update = _convert_to_naive_utc_time(next_update) + if next_update < _EARLIEST_UTC_TIME: + raise ValueError( + "The last update date must be on or after 1950 January 1." + ) + if self._last_update is not None and next_update < self._last_update: + raise ValueError( + "The next update date must be after the last update date." + ) + return CertificateRevocationListBuilder( + self._issuer_name, + self._last_update, + next_update, + self._extensions, + self._revoked_certificates, + ) + + def add_extension( + self, extval: ExtensionType, critical: bool + ) -> CertificateRevocationListBuilder: + """ + Adds an X.509 extension to the certificate revocation list. + """ + if not isinstance(extval, ExtensionType): + raise TypeError("extension must be an ExtensionType") + + extension = Extension(extval.oid, critical, extval) + _reject_duplicate_extension(extension, self._extensions) + return CertificateRevocationListBuilder( + self._issuer_name, + self._last_update, + self._next_update, + [*self._extensions, extension], + self._revoked_certificates, + ) + + def add_revoked_certificate( + self, revoked_certificate: RevokedCertificate + ) -> CertificateRevocationListBuilder: + """ + Adds a revoked certificate to the CRL. + """ + if not isinstance(revoked_certificate, RevokedCertificate): + raise TypeError("Must be an instance of RevokedCertificate") + + return CertificateRevocationListBuilder( + self._issuer_name, + self._last_update, + self._next_update, + self._extensions, + [*self._revoked_certificates, revoked_certificate], + ) + + def sign( + self, + private_key: CertificateIssuerPrivateKeyTypes, + algorithm: _AllowedHashTypes | None, + backend: typing.Any = None, + *, + rsa_padding: padding.PSS | padding.PKCS1v15 | None = None, + ecdsa_deterministic: bool | None = None, + ) -> CertificateRevocationList: + if self._issuer_name is None: + raise ValueError("A CRL must have an issuer name") + + if self._last_update is None: + raise ValueError("A CRL must have a last update time") + + if self._next_update is None: + raise ValueError("A CRL must have a next update time") + + if rsa_padding is not None: + if not isinstance(rsa_padding, (padding.PSS, padding.PKCS1v15)): + raise TypeError("Padding must be PSS or PKCS1v15") + if not isinstance(private_key, rsa.RSAPrivateKey): + raise TypeError("Padding is only supported for RSA keys") + + if ecdsa_deterministic is not None: + if not isinstance(private_key, ec.EllipticCurvePrivateKey): + raise TypeError( + "Deterministic ECDSA is only supported for EC keys" + ) + + return rust_x509.create_x509_crl( + self, + private_key, + algorithm, + rsa_padding, + ecdsa_deterministic, + ) + + +class RevokedCertificateBuilder: + def __init__( + self, + serial_number: int | None = None, + revocation_date: datetime.datetime | None = None, + extensions: list[Extension[ExtensionType]] = [], + ): + self._serial_number = serial_number + self._revocation_date = revocation_date + self._extensions = extensions + + def serial_number(self, number: int) -> RevokedCertificateBuilder: + if not isinstance(number, int): + raise TypeError("Serial number must be of integral type.") + if self._serial_number is not None: + raise ValueError("The serial number may only be set once.") + if number <= 0: + raise ValueError("The serial number should be positive") + + # ASN.1 integers are always signed, so most significant bit must be + # zero. + if number.bit_length() >= 160: # As defined in RFC 5280 + raise ValueError( + "The serial number should not be more than 159 bits." + ) + return RevokedCertificateBuilder( + number, self._revocation_date, self._extensions + ) + + def revocation_date( + self, time: datetime.datetime + ) -> RevokedCertificateBuilder: + if not isinstance(time, datetime.datetime): + raise TypeError("Expecting datetime object.") + if self._revocation_date is not None: + raise ValueError("The revocation date may only be set once.") + time = _convert_to_naive_utc_time(time) + if time < _EARLIEST_UTC_TIME: + raise ValueError( + "The revocation date must be on or after 1950 January 1." + ) + return RevokedCertificateBuilder( + self._serial_number, time, self._extensions + ) + + def add_extension( + self, extval: ExtensionType, critical: bool + ) -> RevokedCertificateBuilder: + if not isinstance(extval, ExtensionType): + raise TypeError("extension must be an ExtensionType") + + extension = Extension(extval.oid, critical, extval) + _reject_duplicate_extension(extension, self._extensions) + return RevokedCertificateBuilder( + self._serial_number, + self._revocation_date, + [*self._extensions, extension], + ) + + def build(self, backend: typing.Any = None) -> RevokedCertificate: + if self._serial_number is None: + raise ValueError("A revoked certificate must have a serial number") + if self._revocation_date is None: + raise ValueError( + "A revoked certificate must have a revocation date" + ) + return rust_x509.create_revoked_certificate(self) + + +def random_serial_number() -> int: + return int.from_bytes(os.urandom(20), "big") >> 1 diff --git a/intelliaide/vendor/cryptography/x509/certificate_transparency.py b/intelliaide/vendor/cryptography/x509/certificate_transparency.py new file mode 100644 index 0000000..fb66cc6 --- /dev/null +++ b/intelliaide/vendor/cryptography/x509/certificate_transparency.py @@ -0,0 +1,35 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography import utils +from cryptography.hazmat.bindings._rust import x509 as rust_x509 + + +class LogEntryType(utils.Enum): + X509_CERTIFICATE = 0 + PRE_CERTIFICATE = 1 + + +class Version(utils.Enum): + v1 = 0 + + +class SignatureAlgorithm(utils.Enum): + """ + Signature algorithms that are valid for SCTs. + + These are exactly the same as SignatureAlgorithm in RFC 5246 (TLS 1.2). + + See: + """ + + ANONYMOUS = 0 + RSA = 1 + DSA = 2 + ECDSA = 3 + + +SignedCertificateTimestamp = rust_x509.Sct diff --git a/intelliaide/vendor/cryptography/x509/extensions.py b/intelliaide/vendor/cryptography/x509/extensions.py new file mode 100644 index 0000000..7b78e9e --- /dev/null +++ b/intelliaide/vendor/cryptography/x509/extensions.py @@ -0,0 +1,2533 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc +import datetime +import hashlib +import ipaddress +import typing +from collections.abc import Iterable, Iterator + +from cryptography import utils +from cryptography.hazmat.bindings._rust import asn1 +from cryptography.hazmat.bindings._rust import x509 as rust_x509 +from cryptography.hazmat.primitives import constant_time, serialization +from cryptography.hazmat.primitives.asymmetric.ec import EllipticCurvePublicKey +from cryptography.hazmat.primitives.asymmetric.rsa import RSAPublicKey +from cryptography.hazmat.primitives.asymmetric.types import ( + CertificateIssuerPublicKeyTypes, + CertificatePublicKeyTypes, +) +from cryptography.x509.certificate_transparency import ( + SignedCertificateTimestamp, +) +from cryptography.x509.general_name import ( + DirectoryName, + DNSName, + GeneralName, + IPAddress, + OtherName, + RegisteredID, + RFC822Name, + UniformResourceIdentifier, + _IPAddressTypes, +) +from cryptography.x509.name import Name, RelativeDistinguishedName +from cryptography.x509.oid import ( + CRLEntryExtensionOID, + ExtensionOID, + ObjectIdentifier, + OCSPExtensionOID, +) + +ExtensionTypeVar = typing.TypeVar( + "ExtensionTypeVar", bound="ExtensionType", covariant=True +) + + +def _key_identifier_from_public_key( + public_key: CertificatePublicKeyTypes, +) -> bytes: + if isinstance(public_key, RSAPublicKey): + data = public_key.public_bytes( + serialization.Encoding.DER, + serialization.PublicFormat.PKCS1, + ) + elif isinstance(public_key, EllipticCurvePublicKey): + data = public_key.public_bytes( + serialization.Encoding.X962, + serialization.PublicFormat.UncompressedPoint, + ) + else: + # This is a very slow way to do this. + serialized = public_key.public_bytes( + serialization.Encoding.DER, + serialization.PublicFormat.SubjectPublicKeyInfo, + ) + data = asn1.parse_spki_for_data(serialized) + + return hashlib.sha1(data).digest() + + +def _make_sequence_methods(field_name: str): + def len_method(self) -> int: + return len(getattr(self, field_name)) + + def iter_method(self): + return iter(getattr(self, field_name)) + + def getitem_method(self, idx): + return getattr(self, field_name)[idx] + + return len_method, iter_method, getitem_method + + +class DuplicateExtension(Exception): + def __init__(self, msg: str, oid: ObjectIdentifier) -> None: + super().__init__(msg) + self.oid = oid + + +class ExtensionNotFound(Exception): + def __init__(self, msg: str, oid: ObjectIdentifier) -> None: + super().__init__(msg) + self.oid = oid + + +class ExtensionType(metaclass=abc.ABCMeta): + oid: typing.ClassVar[ObjectIdentifier] + + def public_bytes(self) -> bytes: + """ + Serializes the extension type to DER. + """ + raise NotImplementedError( + f"public_bytes is not implemented for extension type {self!r}" + ) + + +class Extensions: + def __init__(self, extensions: Iterable[Extension[ExtensionType]]) -> None: + self._extensions = list(extensions) + + def get_extension_for_oid( + self, oid: ObjectIdentifier + ) -> Extension[ExtensionType]: + for ext in self: + if ext.oid == oid: + return ext + + raise ExtensionNotFound(f"No {oid} extension was found", oid) + + def get_extension_for_class( + self, extclass: type[ExtensionTypeVar] + ) -> Extension[ExtensionTypeVar]: + if extclass is UnrecognizedExtension: + raise TypeError( + "UnrecognizedExtension can't be used with " + "get_extension_for_class because more than one instance of the" + " class may be present." + ) + + for ext in self: + if isinstance(ext.value, extclass): + return ext + + raise ExtensionNotFound( + f"No {extclass} extension was found", extclass.oid + ) + + __len__, __iter__, __getitem__ = _make_sequence_methods("_extensions") + + def __repr__(self) -> str: + return f"" + + +class CRLNumber(ExtensionType): + oid = ExtensionOID.CRL_NUMBER + + def __init__(self, crl_number: int) -> None: + if not isinstance(crl_number, int): + raise TypeError("crl_number must be an integer") + + self._crl_number = crl_number + + def __eq__(self, other: object) -> bool: + if not isinstance(other, CRLNumber): + return NotImplemented + + return self.crl_number == other.crl_number + + def __hash__(self) -> int: + return hash(self.crl_number) + + def __repr__(self) -> str: + return f"" + + @property + def crl_number(self) -> int: + return self._crl_number + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class AuthorityKeyIdentifier(ExtensionType): + oid = ExtensionOID.AUTHORITY_KEY_IDENTIFIER + + def __init__( + self, + key_identifier: bytes | None, + authority_cert_issuer: Iterable[GeneralName] | None, + authority_cert_serial_number: int | None, + ) -> None: + if (authority_cert_issuer is None) != ( + authority_cert_serial_number is None + ): + raise ValueError( + "authority_cert_issuer and authority_cert_serial_number " + "must both be present or both None" + ) + + if authority_cert_issuer is not None: + authority_cert_issuer = list(authority_cert_issuer) + if not all( + isinstance(x, GeneralName) for x in authority_cert_issuer + ): + raise TypeError( + "authority_cert_issuer must be a list of GeneralName " + "objects" + ) + + if authority_cert_serial_number is not None and not isinstance( + authority_cert_serial_number, int + ): + raise TypeError("authority_cert_serial_number must be an integer") + + self._key_identifier = key_identifier + self._authority_cert_issuer = authority_cert_issuer + self._authority_cert_serial_number = authority_cert_serial_number + + # This takes a subset of CertificatePublicKeyTypes because an issuer + # cannot have an X25519/X448 key. This introduces some unfortunate + # asymmetry that requires typing users to explicitly + # narrow their type, but we should make this accurate and not just + # convenient. + @classmethod + def from_issuer_public_key( + cls, public_key: CertificateIssuerPublicKeyTypes + ) -> AuthorityKeyIdentifier: + digest = _key_identifier_from_public_key(public_key) + return cls( + key_identifier=digest, + authority_cert_issuer=None, + authority_cert_serial_number=None, + ) + + @classmethod + def from_issuer_subject_key_identifier( + cls, ski: SubjectKeyIdentifier + ) -> AuthorityKeyIdentifier: + return cls( + key_identifier=ski.digest, + authority_cert_issuer=None, + authority_cert_serial_number=None, + ) + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, AuthorityKeyIdentifier): + return NotImplemented + + return ( + self.key_identifier == other.key_identifier + and self.authority_cert_issuer == other.authority_cert_issuer + and self.authority_cert_serial_number + == other.authority_cert_serial_number + ) + + def __hash__(self) -> int: + if self.authority_cert_issuer is None: + aci = None + else: + aci = tuple(self.authority_cert_issuer) + return hash( + (self.key_identifier, aci, self.authority_cert_serial_number) + ) + + @property + def key_identifier(self) -> bytes | None: + return self._key_identifier + + @property + def authority_cert_issuer( + self, + ) -> list[GeneralName] | None: + return self._authority_cert_issuer + + @property + def authority_cert_serial_number(self) -> int | None: + return self._authority_cert_serial_number + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class SubjectKeyIdentifier(ExtensionType): + oid = ExtensionOID.SUBJECT_KEY_IDENTIFIER + + def __init__(self, digest: bytes) -> None: + self._digest = digest + + @classmethod + def from_public_key( + cls, public_key: CertificatePublicKeyTypes + ) -> SubjectKeyIdentifier: + return cls(_key_identifier_from_public_key(public_key)) + + @property + def digest(self) -> bytes: + return self._digest + + @property + def key_identifier(self) -> bytes: + return self._digest + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, SubjectKeyIdentifier): + return NotImplemented + + return constant_time.bytes_eq(self.digest, other.digest) + + def __hash__(self) -> int: + return hash(self.digest) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class AuthorityInformationAccess(ExtensionType): + oid = ExtensionOID.AUTHORITY_INFORMATION_ACCESS + + def __init__(self, descriptions: Iterable[AccessDescription]) -> None: + descriptions = list(descriptions) + if not all(isinstance(x, AccessDescription) for x in descriptions): + raise TypeError( + "Every item in the descriptions list must be an " + "AccessDescription" + ) + + self._descriptions = descriptions + + __len__, __iter__, __getitem__ = _make_sequence_methods("_descriptions") + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, AuthorityInformationAccess): + return NotImplemented + + return self._descriptions == other._descriptions + + def __hash__(self) -> int: + return hash(tuple(self._descriptions)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class SubjectInformationAccess(ExtensionType): + oid = ExtensionOID.SUBJECT_INFORMATION_ACCESS + + def __init__(self, descriptions: Iterable[AccessDescription]) -> None: + descriptions = list(descriptions) + if not all(isinstance(x, AccessDescription) for x in descriptions): + raise TypeError( + "Every item in the descriptions list must be an " + "AccessDescription" + ) + + self._descriptions = descriptions + + __len__, __iter__, __getitem__ = _make_sequence_methods("_descriptions") + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, SubjectInformationAccess): + return NotImplemented + + return self._descriptions == other._descriptions + + def __hash__(self) -> int: + return hash(tuple(self._descriptions)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class AccessDescription: + def __init__( + self, access_method: ObjectIdentifier, access_location: GeneralName + ) -> None: + if not isinstance(access_method, ObjectIdentifier): + raise TypeError("access_method must be an ObjectIdentifier") + + if not isinstance(access_location, GeneralName): + raise TypeError("access_location must be a GeneralName") + + self._access_method = access_method + self._access_location = access_location + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, AccessDescription): + return NotImplemented + + return ( + self.access_method == other.access_method + and self.access_location == other.access_location + ) + + def __hash__(self) -> int: + return hash((self.access_method, self.access_location)) + + @property + def access_method(self) -> ObjectIdentifier: + return self._access_method + + @property + def access_location(self) -> GeneralName: + return self._access_location + + +class BasicConstraints(ExtensionType): + oid = ExtensionOID.BASIC_CONSTRAINTS + + def __init__(self, ca: bool, path_length: int | None) -> None: + if not isinstance(ca, bool): + raise TypeError("ca must be a boolean value") + + if path_length is not None and not ca: + raise ValueError("path_length must be None when ca is False") + + if path_length is not None and ( + not isinstance(path_length, int) or path_length < 0 + ): + raise TypeError( + "path_length must be a non-negative integer or None" + ) + + self._ca = ca + self._path_length = path_length + + @property + def ca(self) -> bool: + return self._ca + + @property + def path_length(self) -> int | None: + return self._path_length + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, BasicConstraints): + return NotImplemented + + return self.ca == other.ca and self.path_length == other.path_length + + def __hash__(self) -> int: + return hash((self.ca, self.path_length)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class DeltaCRLIndicator(ExtensionType): + oid = ExtensionOID.DELTA_CRL_INDICATOR + + def __init__(self, crl_number: int) -> None: + if not isinstance(crl_number, int): + raise TypeError("crl_number must be an integer") + + self._crl_number = crl_number + + @property + def crl_number(self) -> int: + return self._crl_number + + def __eq__(self, other: object) -> bool: + if not isinstance(other, DeltaCRLIndicator): + return NotImplemented + + return self.crl_number == other.crl_number + + def __hash__(self) -> int: + return hash(self.crl_number) + + def __repr__(self) -> str: + return f"" + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class CRLDistributionPoints(ExtensionType): + oid = ExtensionOID.CRL_DISTRIBUTION_POINTS + + def __init__( + self, distribution_points: Iterable[DistributionPoint] + ) -> None: + distribution_points = list(distribution_points) + if not all( + isinstance(x, DistributionPoint) for x in distribution_points + ): + raise TypeError( + "distribution_points must be a list of DistributionPoint " + "objects" + ) + + self._distribution_points = distribution_points + + __len__, __iter__, __getitem__ = _make_sequence_methods( + "_distribution_points" + ) + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, CRLDistributionPoints): + return NotImplemented + + return self._distribution_points == other._distribution_points + + def __hash__(self) -> int: + return hash(tuple(self._distribution_points)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class FreshestCRL(ExtensionType): + oid = ExtensionOID.FRESHEST_CRL + + def __init__( + self, distribution_points: Iterable[DistributionPoint] + ) -> None: + distribution_points = list(distribution_points) + if not all( + isinstance(x, DistributionPoint) for x in distribution_points + ): + raise TypeError( + "distribution_points must be a list of DistributionPoint " + "objects" + ) + + self._distribution_points = distribution_points + + __len__, __iter__, __getitem__ = _make_sequence_methods( + "_distribution_points" + ) + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, FreshestCRL): + return NotImplemented + + return self._distribution_points == other._distribution_points + + def __hash__(self) -> int: + return hash(tuple(self._distribution_points)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class DistributionPoint: + def __init__( + self, + full_name: Iterable[GeneralName] | None, + relative_name: RelativeDistinguishedName | None, + reasons: frozenset[ReasonFlags] | None, + crl_issuer: Iterable[GeneralName] | None, + ) -> None: + if full_name and relative_name: + raise ValueError( + "You cannot provide both full_name and relative_name, at " + "least one must be None." + ) + if not full_name and not relative_name and not crl_issuer: + raise ValueError( + "Either full_name, relative_name or crl_issuer must be " + "provided." + ) + + if full_name is not None: + full_name = list(full_name) + if not all(isinstance(x, GeneralName) for x in full_name): + raise TypeError( + "full_name must be a list of GeneralName objects" + ) + + if relative_name: + if not isinstance(relative_name, RelativeDistinguishedName): + raise TypeError( + "relative_name must be a RelativeDistinguishedName" + ) + + if crl_issuer is not None: + crl_issuer = list(crl_issuer) + if not all(isinstance(x, GeneralName) for x in crl_issuer): + raise TypeError( + "crl_issuer must be None or a list of general names" + ) + + if reasons and ( + not isinstance(reasons, frozenset) + or not all(isinstance(x, ReasonFlags) for x in reasons) + ): + raise TypeError("reasons must be None or frozenset of ReasonFlags") + + if reasons and ( + ReasonFlags.unspecified in reasons + or ReasonFlags.remove_from_crl in reasons + ): + raise ValueError( + "unspecified and remove_from_crl are not valid reasons in a " + "DistributionPoint" + ) + + self._full_name = full_name + self._relative_name = relative_name + self._reasons = reasons + self._crl_issuer = crl_issuer + + def __repr__(self) -> str: + return ( + "".format(self) + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, DistributionPoint): + return NotImplemented + + return ( + self.full_name == other.full_name + and self.relative_name == other.relative_name + and self.reasons == other.reasons + and self.crl_issuer == other.crl_issuer + ) + + def __hash__(self) -> int: + if self.full_name is not None: + fn: tuple[GeneralName, ...] | None = tuple(self.full_name) + else: + fn = None + + if self.crl_issuer is not None: + crl_issuer: tuple[GeneralName, ...] | None = tuple(self.crl_issuer) + else: + crl_issuer = None + + return hash((fn, self.relative_name, self.reasons, crl_issuer)) + + @property + def full_name(self) -> list[GeneralName] | None: + return self._full_name + + @property + def relative_name(self) -> RelativeDistinguishedName | None: + return self._relative_name + + @property + def reasons(self) -> frozenset[ReasonFlags] | None: + return self._reasons + + @property + def crl_issuer(self) -> list[GeneralName] | None: + return self._crl_issuer + + +class ReasonFlags(utils.Enum): + unspecified = "unspecified" + key_compromise = "keyCompromise" + ca_compromise = "cACompromise" + affiliation_changed = "affiliationChanged" + superseded = "superseded" + cessation_of_operation = "cessationOfOperation" + certificate_hold = "certificateHold" + privilege_withdrawn = "privilegeWithdrawn" + aa_compromise = "aACompromise" + remove_from_crl = "removeFromCRL" + + +# These are distribution point bit string mappings. Not to be confused with +# CRLReason reason flags bit string mappings. +# ReasonFlags ::= BIT STRING { +# unused (0), +# keyCompromise (1), +# cACompromise (2), +# affiliationChanged (3), +# superseded (4), +# cessationOfOperation (5), +# certificateHold (6), +# privilegeWithdrawn (7), +# aACompromise (8) } +_REASON_BIT_MAPPING = { + 1: ReasonFlags.key_compromise, + 2: ReasonFlags.ca_compromise, + 3: ReasonFlags.affiliation_changed, + 4: ReasonFlags.superseded, + 5: ReasonFlags.cessation_of_operation, + 6: ReasonFlags.certificate_hold, + 7: ReasonFlags.privilege_withdrawn, + 8: ReasonFlags.aa_compromise, +} + +_CRLREASONFLAGS = { + ReasonFlags.key_compromise: 1, + ReasonFlags.ca_compromise: 2, + ReasonFlags.affiliation_changed: 3, + ReasonFlags.superseded: 4, + ReasonFlags.cessation_of_operation: 5, + ReasonFlags.certificate_hold: 6, + ReasonFlags.privilege_withdrawn: 7, + ReasonFlags.aa_compromise: 8, +} + +# CRLReason ::= ENUMERATED { +# unspecified (0), +# keyCompromise (1), +# cACompromise (2), +# affiliationChanged (3), +# superseded (4), +# cessationOfOperation (5), +# certificateHold (6), +# -- value 7 is not used +# removeFromCRL (8), +# privilegeWithdrawn (9), +# aACompromise (10) } +_CRL_ENTRY_REASON_ENUM_TO_CODE = { + ReasonFlags.unspecified: 0, + ReasonFlags.key_compromise: 1, + ReasonFlags.ca_compromise: 2, + ReasonFlags.affiliation_changed: 3, + ReasonFlags.superseded: 4, + ReasonFlags.cessation_of_operation: 5, + ReasonFlags.certificate_hold: 6, + ReasonFlags.remove_from_crl: 8, + ReasonFlags.privilege_withdrawn: 9, + ReasonFlags.aa_compromise: 10, +} + + +class PolicyConstraints(ExtensionType): + oid = ExtensionOID.POLICY_CONSTRAINTS + + def __init__( + self, + require_explicit_policy: int | None, + inhibit_policy_mapping: int | None, + ) -> None: + if require_explicit_policy is not None and not isinstance( + require_explicit_policy, int + ): + raise TypeError( + "require_explicit_policy must be a non-negative integer or " + "None" + ) + + if inhibit_policy_mapping is not None and not isinstance( + inhibit_policy_mapping, int + ): + raise TypeError( + "inhibit_policy_mapping must be a non-negative integer or None" + ) + + if inhibit_policy_mapping is None and require_explicit_policy is None: + raise ValueError( + "At least one of require_explicit_policy and " + "inhibit_policy_mapping must not be None" + ) + + self._require_explicit_policy = require_explicit_policy + self._inhibit_policy_mapping = inhibit_policy_mapping + + def __repr__(self) -> str: + return ( + "".format(self) + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, PolicyConstraints): + return NotImplemented + + return ( + self.require_explicit_policy == other.require_explicit_policy + and self.inhibit_policy_mapping == other.inhibit_policy_mapping + ) + + def __hash__(self) -> int: + return hash( + (self.require_explicit_policy, self.inhibit_policy_mapping) + ) + + @property + def require_explicit_policy(self) -> int | None: + return self._require_explicit_policy + + @property + def inhibit_policy_mapping(self) -> int | None: + return self._inhibit_policy_mapping + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class CertificatePolicies(ExtensionType): + oid = ExtensionOID.CERTIFICATE_POLICIES + + def __init__(self, policies: Iterable[PolicyInformation]) -> None: + policies = list(policies) + if not all(isinstance(x, PolicyInformation) for x in policies): + raise TypeError( + "Every item in the policies list must be a PolicyInformation" + ) + + self._policies = policies + + __len__, __iter__, __getitem__ = _make_sequence_methods("_policies") + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, CertificatePolicies): + return NotImplemented + + return self._policies == other._policies + + def __hash__(self) -> int: + return hash(tuple(self._policies)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class PolicyInformation: + def __init__( + self, + policy_identifier: ObjectIdentifier, + policy_qualifiers: Iterable[str | UserNotice] | None, + ) -> None: + if not isinstance(policy_identifier, ObjectIdentifier): + raise TypeError("policy_identifier must be an ObjectIdentifier") + + self._policy_identifier = policy_identifier + + if policy_qualifiers is not None: + policy_qualifiers = list(policy_qualifiers) + if not all( + isinstance(x, (str, UserNotice)) for x in policy_qualifiers + ): + raise TypeError( + "policy_qualifiers must be a list of strings and/or " + "UserNotice objects or None" + ) + + self._policy_qualifiers = policy_qualifiers + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, PolicyInformation): + return NotImplemented + + return ( + self.policy_identifier == other.policy_identifier + and self.policy_qualifiers == other.policy_qualifiers + ) + + def __hash__(self) -> int: + if self.policy_qualifiers is not None: + pq = tuple(self.policy_qualifiers) + else: + pq = None + + return hash((self.policy_identifier, pq)) + + @property + def policy_identifier(self) -> ObjectIdentifier: + return self._policy_identifier + + @property + def policy_qualifiers( + self, + ) -> list[str | UserNotice] | None: + return self._policy_qualifiers + + +class UserNotice: + def __init__( + self, + notice_reference: NoticeReference | None, + explicit_text: str | None, + ) -> None: + if notice_reference and not isinstance( + notice_reference, NoticeReference + ): + raise TypeError( + "notice_reference must be None or a NoticeReference" + ) + + self._notice_reference = notice_reference + self._explicit_text = explicit_text + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, UserNotice): + return NotImplemented + + return ( + self.notice_reference == other.notice_reference + and self.explicit_text == other.explicit_text + ) + + def __hash__(self) -> int: + return hash((self.notice_reference, self.explicit_text)) + + @property + def notice_reference(self) -> NoticeReference | None: + return self._notice_reference + + @property + def explicit_text(self) -> str | None: + return self._explicit_text + + +class NoticeReference: + def __init__( + self, + organization: str | None, + notice_numbers: Iterable[int], + ) -> None: + self._organization = organization + notice_numbers = list(notice_numbers) + if not all(isinstance(x, int) for x in notice_numbers): + raise TypeError("notice_numbers must be a list of integers") + + self._notice_numbers = notice_numbers + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, NoticeReference): + return NotImplemented + + return ( + self.organization == other.organization + and self.notice_numbers == other.notice_numbers + ) + + def __hash__(self) -> int: + return hash((self.organization, tuple(self.notice_numbers))) + + @property + def organization(self) -> str | None: + return self._organization + + @property + def notice_numbers(self) -> list[int]: + return self._notice_numbers + + +class ExtendedKeyUsage(ExtensionType): + oid = ExtensionOID.EXTENDED_KEY_USAGE + + def __init__(self, usages: Iterable[ObjectIdentifier]) -> None: + usages = list(usages) + if not all(isinstance(x, ObjectIdentifier) for x in usages): + raise TypeError( + "Every item in the usages list must be an ObjectIdentifier" + ) + + self._usages = usages + + __len__, __iter__, __getitem__ = _make_sequence_methods("_usages") + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, ExtendedKeyUsage): + return NotImplemented + + return self._usages == other._usages + + def __hash__(self) -> int: + return hash(tuple(self._usages)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class OCSPNoCheck(ExtensionType): + oid = ExtensionOID.OCSP_NO_CHECK + + def __eq__(self, other: object) -> bool: + if not isinstance(other, OCSPNoCheck): + return NotImplemented + + return True + + def __hash__(self) -> int: + return hash(OCSPNoCheck) + + def __repr__(self) -> str: + return "" + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class PrecertPoison(ExtensionType): + oid = ExtensionOID.PRECERT_POISON + + def __eq__(self, other: object) -> bool: + if not isinstance(other, PrecertPoison): + return NotImplemented + + return True + + def __hash__(self) -> int: + return hash(PrecertPoison) + + def __repr__(self) -> str: + return "" + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class TLSFeature(ExtensionType): + oid = ExtensionOID.TLS_FEATURE + + def __init__(self, features: Iterable[TLSFeatureType]) -> None: + features = list(features) + if ( + not all(isinstance(x, TLSFeatureType) for x in features) + or len(features) == 0 + ): + raise TypeError( + "features must be a list of elements from the TLSFeatureType " + "enum" + ) + + self._features = features + + __len__, __iter__, __getitem__ = _make_sequence_methods("_features") + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, TLSFeature): + return NotImplemented + + return self._features == other._features + + def __hash__(self) -> int: + return hash(tuple(self._features)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class TLSFeatureType(utils.Enum): + # status_request is defined in RFC 6066 and is used for what is commonly + # called OCSP Must-Staple when present in the TLS Feature extension in an + # X.509 certificate. + status_request = 5 + # status_request_v2 is defined in RFC 6961 and allows multiple OCSP + # responses to be provided. It is not currently in use by clients or + # servers. + status_request_v2 = 17 + + +_TLS_FEATURE_TYPE_TO_ENUM = {x.value: x for x in TLSFeatureType} + + +class InhibitAnyPolicy(ExtensionType): + oid = ExtensionOID.INHIBIT_ANY_POLICY + + def __init__(self, skip_certs: int) -> None: + if not isinstance(skip_certs, int): + raise TypeError("skip_certs must be an integer") + + if skip_certs < 0: + raise ValueError("skip_certs must be a non-negative integer") + + self._skip_certs = skip_certs + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, InhibitAnyPolicy): + return NotImplemented + + return self.skip_certs == other.skip_certs + + def __hash__(self) -> int: + return hash(self.skip_certs) + + @property + def skip_certs(self) -> int: + return self._skip_certs + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class KeyUsage(ExtensionType): + oid = ExtensionOID.KEY_USAGE + + def __init__( + self, + digital_signature: bool, + content_commitment: bool, + key_encipherment: bool, + data_encipherment: bool, + key_agreement: bool, + key_cert_sign: bool, + crl_sign: bool, + encipher_only: bool, + decipher_only: bool, + ) -> None: + if not key_agreement and (encipher_only or decipher_only): + raise ValueError( + "encipher_only and decipher_only can only be true when " + "key_agreement is true" + ) + + self._digital_signature = digital_signature + self._content_commitment = content_commitment + self._key_encipherment = key_encipherment + self._data_encipherment = data_encipherment + self._key_agreement = key_agreement + self._key_cert_sign = key_cert_sign + self._crl_sign = crl_sign + self._encipher_only = encipher_only + self._decipher_only = decipher_only + + @property + def digital_signature(self) -> bool: + return self._digital_signature + + @property + def content_commitment(self) -> bool: + return self._content_commitment + + @property + def key_encipherment(self) -> bool: + return self._key_encipherment + + @property + def data_encipherment(self) -> bool: + return self._data_encipherment + + @property + def key_agreement(self) -> bool: + return self._key_agreement + + @property + def key_cert_sign(self) -> bool: + return self._key_cert_sign + + @property + def crl_sign(self) -> bool: + return self._crl_sign + + @property + def encipher_only(self) -> bool: + if not self.key_agreement: + raise ValueError( + "encipher_only is undefined unless key_agreement is true" + ) + else: + return self._encipher_only + + @property + def decipher_only(self) -> bool: + if not self.key_agreement: + raise ValueError( + "decipher_only is undefined unless key_agreement is true" + ) + else: + return self._decipher_only + + def __repr__(self) -> str: + try: + encipher_only = self.encipher_only + decipher_only = self.decipher_only + except ValueError: + # Users found None confusing because even though encipher/decipher + # have no meaning unless key_agreement is true, to construct an + # instance of the class you still need to pass False. + encipher_only = False + decipher_only = False + + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, KeyUsage): + return NotImplemented + + return ( + self.digital_signature == other.digital_signature + and self.content_commitment == other.content_commitment + and self.key_encipherment == other.key_encipherment + and self.data_encipherment == other.data_encipherment + and self.key_agreement == other.key_agreement + and self.key_cert_sign == other.key_cert_sign + and self.crl_sign == other.crl_sign + and self._encipher_only == other._encipher_only + and self._decipher_only == other._decipher_only + ) + + def __hash__(self) -> int: + return hash( + ( + self.digital_signature, + self.content_commitment, + self.key_encipherment, + self.data_encipherment, + self.key_agreement, + self.key_cert_sign, + self.crl_sign, + self._encipher_only, + self._decipher_only, + ) + ) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class PrivateKeyUsagePeriod(ExtensionType): + oid = ExtensionOID.PRIVATE_KEY_USAGE_PERIOD + + def __init__( + self, + not_before: datetime.datetime | None, + not_after: datetime.datetime | None, + ) -> None: + if ( + not isinstance(not_before, datetime.datetime) + and not_before is not None + ): + raise TypeError("not_before must be a datetime.datetime or None") + + if ( + not isinstance(not_after, datetime.datetime) + and not_after is not None + ): + raise TypeError("not_after must be a datetime.datetime or None") + + if not_before is None and not_after is None: + raise ValueError( + "At least one of not_before and not_after must not be None" + ) + + if ( + not_before is not None + and not_after is not None + and not_before > not_after + ): + raise ValueError("not_before must be before not_after") + + self._not_before = not_before + self._not_after = not_after + + @property + def not_before(self) -> datetime.datetime | None: + return self._not_before + + @property + def not_after(self) -> datetime.datetime | None: + return self._not_after + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, PrivateKeyUsagePeriod): + return NotImplemented + + return ( + self.not_before == other.not_before + and self.not_after == other.not_after + ) + + def __hash__(self) -> int: + return hash((self.not_before, self.not_after)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class NameConstraints(ExtensionType): + oid = ExtensionOID.NAME_CONSTRAINTS + + def __init__( + self, + permitted_subtrees: Iterable[GeneralName] | None, + excluded_subtrees: Iterable[GeneralName] | None, + ) -> None: + if permitted_subtrees is not None: + permitted_subtrees = list(permitted_subtrees) + if not permitted_subtrees: + raise ValueError( + "permitted_subtrees must be a non-empty list or None" + ) + if not all(isinstance(x, GeneralName) for x in permitted_subtrees): + raise TypeError( + "permitted_subtrees must be a list of GeneralName objects " + "or None" + ) + + self._validate_tree(permitted_subtrees) + + if excluded_subtrees is not None: + excluded_subtrees = list(excluded_subtrees) + if not excluded_subtrees: + raise ValueError( + "excluded_subtrees must be a non-empty list or None" + ) + if not all(isinstance(x, GeneralName) for x in excluded_subtrees): + raise TypeError( + "excluded_subtrees must be a list of GeneralName objects " + "or None" + ) + + self._validate_tree(excluded_subtrees) + + if permitted_subtrees is None and excluded_subtrees is None: + raise ValueError( + "At least one of permitted_subtrees and excluded_subtrees " + "must not be None" + ) + + self._permitted_subtrees = permitted_subtrees + self._excluded_subtrees = excluded_subtrees + + def __eq__(self, other: object) -> bool: + if not isinstance(other, NameConstraints): + return NotImplemented + + return ( + self.excluded_subtrees == other.excluded_subtrees + and self.permitted_subtrees == other.permitted_subtrees + ) + + def _validate_tree(self, tree: Iterable[GeneralName]) -> None: + self._validate_ip_name(tree) + self._validate_dns_name(tree) + + def _validate_ip_name(self, tree: Iterable[GeneralName]) -> None: + if any( + isinstance(name, IPAddress) + and not isinstance( + name.value, (ipaddress.IPv4Network, ipaddress.IPv6Network) + ) + for name in tree + ): + raise TypeError( + "IPAddress name constraints must be an IPv4Network or" + " IPv6Network object" + ) + + def _validate_dns_name(self, tree: Iterable[GeneralName]) -> None: + if any( + isinstance(name, DNSName) and "*" in name.value for name in tree + ): + raise ValueError( + "DNSName name constraints must not contain the '*' wildcard" + " character" + ) + + def __repr__(self) -> str: + return ( + f"" + ) + + def __hash__(self) -> int: + if self.permitted_subtrees is not None: + ps: tuple[GeneralName, ...] | None = tuple(self.permitted_subtrees) + else: + ps = None + + if self.excluded_subtrees is not None: + es: tuple[GeneralName, ...] | None = tuple(self.excluded_subtrees) + else: + es = None + + return hash((ps, es)) + + @property + def permitted_subtrees( + self, + ) -> list[GeneralName] | None: + return self._permitted_subtrees + + @property + def excluded_subtrees( + self, + ) -> list[GeneralName] | None: + return self._excluded_subtrees + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class Extension(typing.Generic[ExtensionTypeVar]): + def __init__( + self, oid: ObjectIdentifier, critical: bool, value: ExtensionTypeVar + ) -> None: + if not isinstance(oid, ObjectIdentifier): + raise TypeError( + "oid argument must be an ObjectIdentifier instance." + ) + + if not isinstance(critical, bool): + raise TypeError("critical must be a boolean value") + + self._oid = oid + self._critical = critical + self._value = value + + @property + def oid(self) -> ObjectIdentifier: + return self._oid + + @property + def critical(self) -> bool: + return self._critical + + @property + def value(self) -> ExtensionTypeVar: + return self._value + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Extension): + return NotImplemented + + return ( + self.oid == other.oid + and self.critical == other.critical + and self.value == other.value + ) + + def __hash__(self) -> int: + return hash((self.oid, self.critical, self.value)) + + +class GeneralNames: + def __init__(self, general_names: Iterable[GeneralName]) -> None: + general_names = list(general_names) + if not all(isinstance(x, GeneralName) for x in general_names): + raise TypeError( + "Every item in the general_names list must be an " + "object conforming to the GeneralName interface" + ) + + self._general_names = general_names + + __len__, __iter__, __getitem__ = _make_sequence_methods("_general_names") + + @typing.overload + def get_values_for_type( + self, + type: type[DNSName] + | type[UniformResourceIdentifier] + | type[RFC822Name], + ) -> list[str]: ... + + @typing.overload + def get_values_for_type( + self, + type: type[DirectoryName], + ) -> list[Name]: ... + + @typing.overload + def get_values_for_type( + self, + type: type[RegisteredID], + ) -> list[ObjectIdentifier]: ... + + @typing.overload + def get_values_for_type( + self, type: type[IPAddress] + ) -> list[_IPAddressTypes]: ... + + @typing.overload + def get_values_for_type( + self, type: type[OtherName] + ) -> list[OtherName]: ... + + def get_values_for_type( + self, + type: type[DNSName] + | type[DirectoryName] + | type[IPAddress] + | type[OtherName] + | type[RFC822Name] + | type[RegisteredID] + | type[UniformResourceIdentifier], + ) -> ( + list[_IPAddressTypes] + | list[str] + | list[OtherName] + | list[Name] + | list[ObjectIdentifier] + ): + # Return the value of each GeneralName, except for OtherName instances + # which we return directly because it has two important properties not + # just one value. + objs = (i for i in self if isinstance(i, type)) + if type != OtherName: + return [i.value for i in objs] # type: ignore[return-value,unused-ignore] + return list(objs) # type: ignore[return-value,unused-ignore] + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, GeneralNames): + return NotImplemented + + return self._general_names == other._general_names + + def __hash__(self) -> int: + return hash(tuple(self._general_names)) + + +class SubjectAlternativeName(ExtensionType): + oid = ExtensionOID.SUBJECT_ALTERNATIVE_NAME + + def __init__(self, general_names: Iterable[GeneralName]) -> None: + self._general_names = GeneralNames(general_names) + + __len__, __iter__, __getitem__ = _make_sequence_methods("_general_names") + + @typing.overload + def get_values_for_type( + self, + type: type[DNSName] + | type[UniformResourceIdentifier] + | type[RFC822Name], + ) -> list[str]: ... + + @typing.overload + def get_values_for_type( + self, + type: type[DirectoryName], + ) -> list[Name]: ... + + @typing.overload + def get_values_for_type( + self, + type: type[RegisteredID], + ) -> list[ObjectIdentifier]: ... + + @typing.overload + def get_values_for_type( + self, type: type[IPAddress] + ) -> list[_IPAddressTypes]: ... + + @typing.overload + def get_values_for_type( + self, type: type[OtherName] + ) -> list[OtherName]: ... + + def get_values_for_type( + self, + type: type[DNSName] + | type[DirectoryName] + | type[IPAddress] + | type[OtherName] + | type[RFC822Name] + | type[RegisteredID] + | type[UniformResourceIdentifier], + ) -> ( + list[_IPAddressTypes] + | list[str] + | list[OtherName] + | list[Name] + | list[ObjectIdentifier] + ): + return self._general_names.get_values_for_type(type) + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, SubjectAlternativeName): + return NotImplemented + + return self._general_names == other._general_names + + def __hash__(self) -> int: + return hash(self._general_names) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class IssuerAlternativeName(ExtensionType): + oid = ExtensionOID.ISSUER_ALTERNATIVE_NAME + + def __init__(self, general_names: Iterable[GeneralName]) -> None: + self._general_names = GeneralNames(general_names) + + __len__, __iter__, __getitem__ = _make_sequence_methods("_general_names") + + @typing.overload + def get_values_for_type( + self, + type: type[DNSName] + | type[UniformResourceIdentifier] + | type[RFC822Name], + ) -> list[str]: ... + + @typing.overload + def get_values_for_type( + self, + type: type[DirectoryName], + ) -> list[Name]: ... + + @typing.overload + def get_values_for_type( + self, + type: type[RegisteredID], + ) -> list[ObjectIdentifier]: ... + + @typing.overload + def get_values_for_type( + self, type: type[IPAddress] + ) -> list[_IPAddressTypes]: ... + + @typing.overload + def get_values_for_type( + self, type: type[OtherName] + ) -> list[OtherName]: ... + + def get_values_for_type( + self, + type: type[DNSName] + | type[DirectoryName] + | type[IPAddress] + | type[OtherName] + | type[RFC822Name] + | type[RegisteredID] + | type[UniformResourceIdentifier], + ) -> ( + list[_IPAddressTypes] + | list[str] + | list[OtherName] + | list[Name] + | list[ObjectIdentifier] + ): + return self._general_names.get_values_for_type(type) + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, IssuerAlternativeName): + return NotImplemented + + return self._general_names == other._general_names + + def __hash__(self) -> int: + return hash(self._general_names) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class CertificateIssuer(ExtensionType): + oid = CRLEntryExtensionOID.CERTIFICATE_ISSUER + + def __init__(self, general_names: Iterable[GeneralName]) -> None: + self._general_names = GeneralNames(general_names) + + __len__, __iter__, __getitem__ = _make_sequence_methods("_general_names") + + @typing.overload + def get_values_for_type( + self, + type: type[DNSName] + | type[UniformResourceIdentifier] + | type[RFC822Name], + ) -> list[str]: ... + + @typing.overload + def get_values_for_type( + self, + type: type[DirectoryName], + ) -> list[Name]: ... + + @typing.overload + def get_values_for_type( + self, + type: type[RegisteredID], + ) -> list[ObjectIdentifier]: ... + + @typing.overload + def get_values_for_type( + self, type: type[IPAddress] + ) -> list[_IPAddressTypes]: ... + + @typing.overload + def get_values_for_type( + self, type: type[OtherName] + ) -> list[OtherName]: ... + + def get_values_for_type( + self, + type: type[DNSName] + | type[DirectoryName] + | type[IPAddress] + | type[OtherName] + | type[RFC822Name] + | type[RegisteredID] + | type[UniformResourceIdentifier], + ) -> ( + list[_IPAddressTypes] + | list[str] + | list[OtherName] + | list[Name] + | list[ObjectIdentifier] + ): + return self._general_names.get_values_for_type(type) + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, CertificateIssuer): + return NotImplemented + + return self._general_names == other._general_names + + def __hash__(self) -> int: + return hash(self._general_names) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class CRLReason(ExtensionType): + oid = CRLEntryExtensionOID.CRL_REASON + + def __init__(self, reason: ReasonFlags) -> None: + if not isinstance(reason, ReasonFlags): + raise TypeError("reason must be an element from ReasonFlags") + + self._reason = reason + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, CRLReason): + return NotImplemented + + return self.reason == other.reason + + def __hash__(self) -> int: + return hash(self.reason) + + @property + def reason(self) -> ReasonFlags: + return self._reason + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class InvalidityDate(ExtensionType): + oid = CRLEntryExtensionOID.INVALIDITY_DATE + + def __init__(self, invalidity_date: datetime.datetime) -> None: + if not isinstance(invalidity_date, datetime.datetime): + raise TypeError("invalidity_date must be a datetime.datetime") + + self._invalidity_date = invalidity_date + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, InvalidityDate): + return NotImplemented + + return self.invalidity_date == other.invalidity_date + + def __hash__(self) -> int: + return hash(self.invalidity_date) + + @property + def invalidity_date(self) -> datetime.datetime: + return self._invalidity_date + + @property + def invalidity_date_utc(self) -> datetime.datetime: + if self._invalidity_date.tzinfo is None: + return self._invalidity_date.replace(tzinfo=datetime.timezone.utc) + else: + return self._invalidity_date.astimezone(tz=datetime.timezone.utc) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class PrecertificateSignedCertificateTimestamps(ExtensionType): + oid = ExtensionOID.PRECERT_SIGNED_CERTIFICATE_TIMESTAMPS + + def __init__( + self, + signed_certificate_timestamps: Iterable[SignedCertificateTimestamp], + ) -> None: + signed_certificate_timestamps = list(signed_certificate_timestamps) + if not all( + isinstance(sct, SignedCertificateTimestamp) + for sct in signed_certificate_timestamps + ): + raise TypeError( + "Every item in the signed_certificate_timestamps list must be " + "a SignedCertificateTimestamp" + ) + self._signed_certificate_timestamps = signed_certificate_timestamps + + __len__, __iter__, __getitem__ = _make_sequence_methods( + "_signed_certificate_timestamps" + ) + + def __repr__(self) -> str: + return f"" + + def __hash__(self) -> int: + return hash(tuple(self._signed_certificate_timestamps)) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, PrecertificateSignedCertificateTimestamps): + return NotImplemented + + return ( + self._signed_certificate_timestamps + == other._signed_certificate_timestamps + ) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class SignedCertificateTimestamps(ExtensionType): + oid = ExtensionOID.SIGNED_CERTIFICATE_TIMESTAMPS + + def __init__( + self, + signed_certificate_timestamps: Iterable[SignedCertificateTimestamp], + ) -> None: + signed_certificate_timestamps = list(signed_certificate_timestamps) + if not all( + isinstance(sct, SignedCertificateTimestamp) + for sct in signed_certificate_timestamps + ): + raise TypeError( + "Every item in the signed_certificate_timestamps list must be " + "a SignedCertificateTimestamp" + ) + self._signed_certificate_timestamps = signed_certificate_timestamps + + __len__, __iter__, __getitem__ = _make_sequence_methods( + "_signed_certificate_timestamps" + ) + + def __repr__(self) -> str: + return f"" + + def __hash__(self) -> int: + return hash(tuple(self._signed_certificate_timestamps)) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, SignedCertificateTimestamps): + return NotImplemented + + return ( + self._signed_certificate_timestamps + == other._signed_certificate_timestamps + ) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class OCSPNonce(ExtensionType): + oid = OCSPExtensionOID.NONCE + + def __init__(self, nonce: bytes) -> None: + if not isinstance(nonce, bytes): + raise TypeError("nonce must be bytes") + + self._nonce = nonce + + def __eq__(self, other: object) -> bool: + if not isinstance(other, OCSPNonce): + return NotImplemented + + return self.nonce == other.nonce + + def __hash__(self) -> int: + return hash(self.nonce) + + def __repr__(self) -> str: + return f"" + + @property + def nonce(self) -> bytes: + return self._nonce + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class OCSPAcceptableResponses(ExtensionType): + oid = OCSPExtensionOID.ACCEPTABLE_RESPONSES + + def __init__(self, responses: Iterable[ObjectIdentifier]) -> None: + responses = list(responses) + if any(not isinstance(r, ObjectIdentifier) for r in responses): + raise TypeError("All responses must be ObjectIdentifiers") + + self._responses = responses + + def __eq__(self, other: object) -> bool: + if not isinstance(other, OCSPAcceptableResponses): + return NotImplemented + + return self._responses == other._responses + + def __hash__(self) -> int: + return hash(tuple(self._responses)) + + def __repr__(self) -> str: + return f"" + + def __iter__(self) -> Iterator[ObjectIdentifier]: + return iter(self._responses) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class IssuingDistributionPoint(ExtensionType): + oid = ExtensionOID.ISSUING_DISTRIBUTION_POINT + + def __init__( + self, + full_name: Iterable[GeneralName] | None, + relative_name: RelativeDistinguishedName | None, + only_contains_user_certs: bool, + only_contains_ca_certs: bool, + only_some_reasons: frozenset[ReasonFlags] | None, + indirect_crl: bool, + only_contains_attribute_certs: bool, + ) -> None: + if full_name is not None: + full_name = list(full_name) + + if only_some_reasons and ( + not isinstance(only_some_reasons, frozenset) + or not all(isinstance(x, ReasonFlags) for x in only_some_reasons) + ): + raise TypeError( + "only_some_reasons must be None or frozenset of ReasonFlags" + ) + + if only_some_reasons and ( + ReasonFlags.unspecified in only_some_reasons + or ReasonFlags.remove_from_crl in only_some_reasons + ): + raise ValueError( + "unspecified and remove_from_crl are not valid reasons in an " + "IssuingDistributionPoint" + ) + + if not ( + isinstance(only_contains_user_certs, bool) + and isinstance(only_contains_ca_certs, bool) + and isinstance(indirect_crl, bool) + and isinstance(only_contains_attribute_certs, bool) + ): + raise TypeError( + "only_contains_user_certs, only_contains_ca_certs, " + "indirect_crl and only_contains_attribute_certs " + "must all be boolean." + ) + + # Per RFC5280 Section 5.2.5, the Issuing Distribution Point extension + # in a CRL can have only one of onlyContainsUserCerts, + # onlyContainsCACerts, onlyContainsAttributeCerts set to TRUE. + crl_constraints = [ + only_contains_user_certs, + only_contains_ca_certs, + only_contains_attribute_certs, + ] + + if len([x for x in crl_constraints if x]) > 1: + raise ValueError( + "Only one of the following can be set to True: " + "only_contains_user_certs, only_contains_ca_certs, " + "only_contains_attribute_certs" + ) + + if not any( + [ + only_contains_user_certs, + only_contains_ca_certs, + indirect_crl, + only_contains_attribute_certs, + full_name, + relative_name, + only_some_reasons, + ] + ): + raise ValueError( + "Cannot create empty extension: " + "if only_contains_user_certs, only_contains_ca_certs, " + "indirect_crl, and only_contains_attribute_certs are all False" + ", then either full_name, relative_name, or only_some_reasons " + "must have a value." + ) + + self._only_contains_user_certs = only_contains_user_certs + self._only_contains_ca_certs = only_contains_ca_certs + self._indirect_crl = indirect_crl + self._only_contains_attribute_certs = only_contains_attribute_certs + self._only_some_reasons = only_some_reasons + self._full_name = full_name + self._relative_name = relative_name + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, IssuingDistributionPoint): + return NotImplemented + + return ( + self.full_name == other.full_name + and self.relative_name == other.relative_name + and self.only_contains_user_certs == other.only_contains_user_certs + and self.only_contains_ca_certs == other.only_contains_ca_certs + and self.only_some_reasons == other.only_some_reasons + and self.indirect_crl == other.indirect_crl + and self.only_contains_attribute_certs + == other.only_contains_attribute_certs + ) + + def __hash__(self) -> int: + if self.full_name is not None: + full_name: tuple[GeneralName, ...] | None = tuple(self.full_name) + else: + full_name = None + + return hash( + ( + full_name, + self.relative_name, + self.only_contains_user_certs, + self.only_contains_ca_certs, + self.only_some_reasons, + self.indirect_crl, + self.only_contains_attribute_certs, + ) + ) + + @property + def full_name(self) -> list[GeneralName] | None: + return self._full_name + + @property + def relative_name(self) -> RelativeDistinguishedName | None: + return self._relative_name + + @property + def only_contains_user_certs(self) -> bool: + return self._only_contains_user_certs + + @property + def only_contains_ca_certs(self) -> bool: + return self._only_contains_ca_certs + + @property + def only_some_reasons( + self, + ) -> frozenset[ReasonFlags] | None: + return self._only_some_reasons + + @property + def indirect_crl(self) -> bool: + return self._indirect_crl + + @property + def only_contains_attribute_certs(self) -> bool: + return self._only_contains_attribute_certs + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class MSCertificateTemplate(ExtensionType): + oid = ExtensionOID.MS_CERTIFICATE_TEMPLATE + + def __init__( + self, + template_id: ObjectIdentifier, + major_version: int | None, + minor_version: int | None, + ) -> None: + if not isinstance(template_id, ObjectIdentifier): + raise TypeError("oid must be an ObjectIdentifier") + self._template_id = template_id + if ( + major_version is not None and not isinstance(major_version, int) + ) or ( + minor_version is not None and not isinstance(minor_version, int) + ): + raise TypeError( + "major_version and minor_version must be integers or None" + ) + self._major_version = major_version + self._minor_version = minor_version + + @property + def template_id(self) -> ObjectIdentifier: + return self._template_id + + @property + def major_version(self) -> int | None: + return self._major_version + + @property + def minor_version(self) -> int | None: + return self._minor_version + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, MSCertificateTemplate): + return NotImplemented + + return ( + self.template_id == other.template_id + and self.major_version == other.major_version + and self.minor_version == other.minor_version + ) + + def __hash__(self) -> int: + return hash((self.template_id, self.major_version, self.minor_version)) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class NamingAuthority: + def __init__( + self, + id: ObjectIdentifier | None, + url: str | None, + text: str | None, + ) -> None: + if id is not None and not isinstance(id, ObjectIdentifier): + raise TypeError("id must be an ObjectIdentifier") + + if url is not None and not isinstance(url, str): + raise TypeError("url must be a str") + + if text is not None and not isinstance(text, str): + raise TypeError("text must be a str") + + self._id = id + self._url = url + self._text = text + + @property + def id(self) -> ObjectIdentifier | None: + return self._id + + @property + def url(self) -> str | None: + return self._url + + @property + def text(self) -> str | None: + return self._text + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, NamingAuthority): + return NotImplemented + + return ( + self.id == other.id + and self.url == other.url + and self.text == other.text + ) + + def __hash__(self) -> int: + return hash( + ( + self.id, + self.url, + self.text, + ) + ) + + +class ProfessionInfo: + def __init__( + self, + naming_authority: NamingAuthority | None, + profession_items: Iterable[str], + profession_oids: Iterable[ObjectIdentifier] | None, + registration_number: str | None, + add_profession_info: bytes | None, + ) -> None: + if naming_authority is not None and not isinstance( + naming_authority, NamingAuthority + ): + raise TypeError("naming_authority must be a NamingAuthority") + + profession_items = list(profession_items) + if not all(isinstance(item, str) for item in profession_items): + raise TypeError( + "Every item in the profession_items list must be a str" + ) + + if profession_oids is not None: + profession_oids = list(profession_oids) + if not all( + isinstance(oid, ObjectIdentifier) for oid in profession_oids + ): + raise TypeError( + "Every item in the profession_oids list must be an " + "ObjectIdentifier" + ) + + if registration_number is not None and not isinstance( + registration_number, str + ): + raise TypeError("registration_number must be a str") + + if add_profession_info is not None and not isinstance( + add_profession_info, bytes + ): + raise TypeError("add_profession_info must be bytes") + + self._naming_authority = naming_authority + self._profession_items = profession_items + self._profession_oids = profession_oids + self._registration_number = registration_number + self._add_profession_info = add_profession_info + + @property + def naming_authority(self) -> NamingAuthority | None: + return self._naming_authority + + @property + def profession_items(self) -> list[str]: + return self._profession_items + + @property + def profession_oids(self) -> list[ObjectIdentifier] | None: + return self._profession_oids + + @property + def registration_number(self) -> str | None: + return self._registration_number + + @property + def add_profession_info(self) -> bytes | None: + return self._add_profession_info + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, ProfessionInfo): + return NotImplemented + + return ( + self.naming_authority == other.naming_authority + and self.profession_items == other.profession_items + and self.profession_oids == other.profession_oids + and self.registration_number == other.registration_number + and self.add_profession_info == other.add_profession_info + ) + + def __hash__(self) -> int: + if self.profession_oids is not None: + profession_oids = tuple(self.profession_oids) + else: + profession_oids = None + return hash( + ( + self.naming_authority, + tuple(self.profession_items), + profession_oids, + self.registration_number, + self.add_profession_info, + ) + ) + + +class Admission: + def __init__( + self, + admission_authority: GeneralName | None, + naming_authority: NamingAuthority | None, + profession_infos: Iterable[ProfessionInfo], + ) -> None: + if admission_authority is not None and not isinstance( + admission_authority, GeneralName + ): + raise TypeError("admission_authority must be a GeneralName") + + if naming_authority is not None and not isinstance( + naming_authority, NamingAuthority + ): + raise TypeError("naming_authority must be a NamingAuthority") + + profession_infos = list(profession_infos) + if not all( + isinstance(info, ProfessionInfo) for info in profession_infos + ): + raise TypeError( + "Every item in the profession_infos list must be a " + "ProfessionInfo" + ) + + self._admission_authority = admission_authority + self._naming_authority = naming_authority + self._profession_infos = profession_infos + + @property + def admission_authority(self) -> GeneralName | None: + return self._admission_authority + + @property + def naming_authority(self) -> NamingAuthority | None: + return self._naming_authority + + @property + def profession_infos(self) -> list[ProfessionInfo]: + return self._profession_infos + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Admission): + return NotImplemented + + return ( + self.admission_authority == other.admission_authority + and self.naming_authority == other.naming_authority + and self.profession_infos == other.profession_infos + ) + + def __hash__(self) -> int: + return hash( + ( + self.admission_authority, + self.naming_authority, + tuple(self.profession_infos), + ) + ) + + +class Admissions(ExtensionType): + oid = ExtensionOID.ADMISSIONS + + def __init__( + self, + authority: GeneralName | None, + admissions: Iterable[Admission], + ) -> None: + if authority is not None and not isinstance(authority, GeneralName): + raise TypeError("authority must be a GeneralName") + + admissions = list(admissions) + if not all( + isinstance(admission, Admission) for admission in admissions + ): + raise TypeError( + "Every item in the contents_of_admissions list must be an " + "Admission" + ) + + self._authority = authority + self._admissions = admissions + + __len__, __iter__, __getitem__ = _make_sequence_methods("_admissions") + + @property + def authority(self) -> GeneralName | None: + return self._authority + + def __repr__(self) -> str: + return ( + f"" + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Admissions): + return NotImplemented + + return ( + self.authority == other.authority + and self._admissions == other._admissions + ) + + def __hash__(self) -> int: + return hash((self.authority, tuple(self._admissions))) + + def public_bytes(self) -> bytes: + return rust_x509.encode_extension_value(self) + + +class UnrecognizedExtension(ExtensionType): + def __init__(self, oid: ObjectIdentifier, value: bytes) -> None: + if not isinstance(oid, ObjectIdentifier): + raise TypeError("oid must be an ObjectIdentifier") + self._oid = oid + self._value = value + + @property + def oid(self) -> ObjectIdentifier: # type: ignore[override] + return self._oid + + @property + def value(self) -> bytes: + return self._value + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, UnrecognizedExtension): + return NotImplemented + + return self.oid == other.oid and self.value == other.value + + def __hash__(self) -> int: + return hash((self.oid, self.value)) + + def public_bytes(self) -> bytes: + return self.value diff --git a/intelliaide/vendor/cryptography/x509/general_name.py b/intelliaide/vendor/cryptography/x509/general_name.py new file mode 100644 index 0000000..672f287 --- /dev/null +++ b/intelliaide/vendor/cryptography/x509/general_name.py @@ -0,0 +1,281 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import abc +import ipaddress +import typing +from email.utils import parseaddr + +from cryptography.x509.name import Name +from cryptography.x509.oid import ObjectIdentifier + +_IPAddressTypes = typing.Union[ + ipaddress.IPv4Address, + ipaddress.IPv6Address, + ipaddress.IPv4Network, + ipaddress.IPv6Network, +] + + +class UnsupportedGeneralNameType(Exception): + pass + + +class GeneralName(metaclass=abc.ABCMeta): + @property + @abc.abstractmethod + def value(self) -> typing.Any: + """ + Return the value of the object + """ + + +class RFC822Name(GeneralName): + def __init__(self, value: str) -> None: + if isinstance(value, str): + try: + value.encode("ascii") + except UnicodeEncodeError: + raise ValueError( + "RFC822Name values should be passed as an A-label string. " + "This means unicode characters should be encoded via " + "a library like idna." + ) + else: + raise TypeError("value must be string") + + name, address = parseaddr(value) + if name or not address: + # parseaddr has found a name (e.g. Name ) or the entire + # value is an empty string. + raise ValueError("Invalid rfc822name value") + + self._value = value + + @property + def value(self) -> str: + return self._value + + @classmethod + def _init_without_validation(cls, value: str) -> RFC822Name: + instance = cls.__new__(cls) + instance._value = value + return instance + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, RFC822Name): + return NotImplemented + + return self.value == other.value + + def __hash__(self) -> int: + return hash(self.value) + + +class DNSName(GeneralName): + def __init__(self, value: str) -> None: + if isinstance(value, str): + try: + value.encode("ascii") + except UnicodeEncodeError: + raise ValueError( + "DNSName values should be passed as an A-label string. " + "This means unicode characters should be encoded via " + "a library like idna." + ) + else: + raise TypeError("value must be string") + + self._value = value + + @property + def value(self) -> str: + return self._value + + @classmethod + def _init_without_validation(cls, value: str) -> DNSName: + instance = cls.__new__(cls) + instance._value = value + return instance + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, DNSName): + return NotImplemented + + return self.value == other.value + + def __hash__(self) -> int: + return hash(self.value) + + +class UniformResourceIdentifier(GeneralName): + def __init__(self, value: str) -> None: + if isinstance(value, str): + try: + value.encode("ascii") + except UnicodeEncodeError: + raise ValueError( + "URI values should be passed as an A-label string. " + "This means unicode characters should be encoded via " + "a library like idna." + ) + else: + raise TypeError("value must be string") + + self._value = value + + @property + def value(self) -> str: + return self._value + + @classmethod + def _init_without_validation(cls, value: str) -> UniformResourceIdentifier: + instance = cls.__new__(cls) + instance._value = value + return instance + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, UniformResourceIdentifier): + return NotImplemented + + return self.value == other.value + + def __hash__(self) -> int: + return hash(self.value) + + +class DirectoryName(GeneralName): + def __init__(self, value: Name) -> None: + if not isinstance(value, Name): + raise TypeError("value must be a Name") + + self._value = value + + @property + def value(self) -> Name: + return self._value + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, DirectoryName): + return NotImplemented + + return self.value == other.value + + def __hash__(self) -> int: + return hash(self.value) + + +class RegisteredID(GeneralName): + def __init__(self, value: ObjectIdentifier) -> None: + if not isinstance(value, ObjectIdentifier): + raise TypeError("value must be an ObjectIdentifier") + + self._value = value + + @property + def value(self) -> ObjectIdentifier: + return self._value + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, RegisteredID): + return NotImplemented + + return self.value == other.value + + def __hash__(self) -> int: + return hash(self.value) + + +class IPAddress(GeneralName): + def __init__(self, value: _IPAddressTypes) -> None: + if not isinstance( + value, + ( + ipaddress.IPv4Address, + ipaddress.IPv6Address, + ipaddress.IPv4Network, + ipaddress.IPv6Network, + ), + ): + raise TypeError( + "value must be an instance of ipaddress.IPv4Address, " + "ipaddress.IPv6Address, ipaddress.IPv4Network, or " + "ipaddress.IPv6Network" + ) + + self._value = value + + @property + def value(self) -> _IPAddressTypes: + return self._value + + def _packed(self) -> bytes: + if isinstance( + self.value, (ipaddress.IPv4Address, ipaddress.IPv6Address) + ): + return self.value.packed + else: + return ( + self.value.network_address.packed + self.value.netmask.packed + ) + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, IPAddress): + return NotImplemented + + return self.value == other.value + + def __hash__(self) -> int: + return hash(self.value) + + +class OtherName(GeneralName): + def __init__(self, type_id: ObjectIdentifier, value: bytes) -> None: + if not isinstance(type_id, ObjectIdentifier): + raise TypeError("type_id must be an ObjectIdentifier") + if not isinstance(value, bytes): + raise TypeError("value must be a binary string") + + self._type_id = type_id + self._value = value + + @property + def type_id(self) -> ObjectIdentifier: + return self._type_id + + @property + def value(self) -> bytes: + return self._value + + def __repr__(self) -> str: + return f"" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, OtherName): + return NotImplemented + + return self.type_id == other.type_id and self.value == other.value + + def __hash__(self) -> int: + return hash((self.type_id, self.value)) diff --git a/intelliaide/vendor/cryptography/x509/name.py b/intelliaide/vendor/cryptography/x509/name.py new file mode 100644 index 0000000..57f3d56 --- /dev/null +++ b/intelliaide/vendor/cryptography/x509/name.py @@ -0,0 +1,482 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import binascii +import re +import sys +import typing +import warnings +from collections.abc import Iterable, Iterator + +from cryptography import utils +from cryptography.hazmat.bindings._rust import x509 as rust_x509 +from cryptography.x509.oid import NameOID, ObjectIdentifier + + +class _ASN1Type(utils.Enum): + BitString = 3 + OctetString = 4 + UTF8String = 12 + NumericString = 18 + PrintableString = 19 + T61String = 20 + IA5String = 22 + UTCTime = 23 + GeneralizedTime = 24 + VisibleString = 26 + UniversalString = 28 + BMPString = 30 + + +_ASN1_TYPE_TO_ENUM = {i.value: i for i in _ASN1Type} +_NAMEOID_DEFAULT_TYPE: dict[ObjectIdentifier, _ASN1Type] = { + NameOID.COUNTRY_NAME: _ASN1Type.PrintableString, + NameOID.JURISDICTION_COUNTRY_NAME: _ASN1Type.PrintableString, + NameOID.SERIAL_NUMBER: _ASN1Type.PrintableString, + NameOID.DN_QUALIFIER: _ASN1Type.PrintableString, + NameOID.EMAIL_ADDRESS: _ASN1Type.IA5String, + NameOID.DOMAIN_COMPONENT: _ASN1Type.IA5String, +} + +# Type alias +_OidNameMap = typing.Mapping[ObjectIdentifier, str] +_NameOidMap = typing.Mapping[str, ObjectIdentifier] + +#: Short attribute names from RFC 4514: +#: https://tools.ietf.org/html/rfc4514#page-7 +_NAMEOID_TO_NAME: _OidNameMap = { + NameOID.COMMON_NAME: "CN", + NameOID.LOCALITY_NAME: "L", + NameOID.STATE_OR_PROVINCE_NAME: "ST", + NameOID.ORGANIZATION_NAME: "O", + NameOID.ORGANIZATIONAL_UNIT_NAME: "OU", + NameOID.COUNTRY_NAME: "C", + NameOID.STREET_ADDRESS: "STREET", + NameOID.DOMAIN_COMPONENT: "DC", + NameOID.USER_ID: "UID", +} +_NAME_TO_NAMEOID = {v: k for k, v in _NAMEOID_TO_NAME.items()} + +_NAMEOID_LENGTH_LIMIT = { + NameOID.COUNTRY_NAME: (2, 2), + NameOID.JURISDICTION_COUNTRY_NAME: (2, 2), + NameOID.COMMON_NAME: (1, 64), +} + + +def _escape_dn_value(val: str | bytes) -> str: + """Escape special characters in RFC4514 Distinguished Name value.""" + + if not val: + return "" + + # RFC 4514 Section 2.4 defines the value as being the # (U+0023) character + # followed by the hexadecimal encoding of the octets. + if isinstance(val, bytes): + return "#" + binascii.hexlify(val).decode("utf8") + + # See https://tools.ietf.org/html/rfc4514#section-2.4 + val = val.replace("\\", "\\\\") + val = val.replace('"', '\\"') + val = val.replace("+", "\\+") + val = val.replace(",", "\\,") + val = val.replace(";", "\\;") + val = val.replace("<", "\\<") + val = val.replace(">", "\\>") + val = val.replace("\0", "\\00") + + if val[0] == "#" or (val[0] == " " and len(val) > 1): + val = "\\" + val + if val[-1] == " ": + val = val[:-1] + "\\ " + + return val + + +def _unescape_dn_value(val: str) -> str: + if not val: + return "" + + # See https://tools.ietf.org/html/rfc4514#section-3 + + # special = escaped / SPACE / SHARP / EQUALS + # escaped = DQUOTE / PLUS / COMMA / SEMI / LANGLE / RANGLE + def sub(m): + val = m.group(0) + # Special character escape + if len(val) == 2: + return val[1:] + + # Unicode string of hex + return binascii.unhexlify(val.replace("\\", "")).decode() + + return _RFC4514NameParser._PAIR_MULTI_RE.sub(sub, val) + + +NameAttributeValueType = typing.TypeVar( + "NameAttributeValueType", + typing.Union[str, bytes], + str, + bytes, + covariant=True, +) + + +class NameAttribute(typing.Generic[NameAttributeValueType]): + def __init__( + self, + oid: ObjectIdentifier, + value: NameAttributeValueType, + _type: _ASN1Type | None = None, + *, + _validate: bool = True, + ) -> None: + if not isinstance(oid, ObjectIdentifier): + raise TypeError( + "oid argument must be an ObjectIdentifier instance." + ) + if _type == _ASN1Type.BitString: + if oid != NameOID.X500_UNIQUE_IDENTIFIER: + raise TypeError( + "oid must be X500_UNIQUE_IDENTIFIER for BitString type." + ) + if not isinstance(value, bytes): + raise TypeError("value must be bytes for BitString") + elif not isinstance(value, str): + raise TypeError("value argument must be a str") + + length_limits = _NAMEOID_LENGTH_LIMIT.get(oid) + if length_limits is not None: + min_length, max_length = length_limits + assert isinstance(value, str) + c_len = len(value.encode("utf8")) + if c_len < min_length or c_len > max_length: + msg = ( + f"Attribute's length must be >= {min_length} and " + f"<= {max_length}, but it was {c_len}" + ) + if _validate is True: + raise ValueError(msg) + else: + warnings.warn(msg, stacklevel=2) + + # The appropriate ASN1 string type varies by OID and is defined across + # multiple RFCs including 2459, 3280, and 5280. In general UTF8String + # is preferred (2459), but 3280 and 5280 specify several OIDs with + # alternate types. This means when we see the sentinel value we need + # to look up whether the OID has a non-UTF8 type. If it does, set it + # to that. Otherwise, UTF8! + if _type is None: + _type = _NAMEOID_DEFAULT_TYPE.get(oid, _ASN1Type.UTF8String) + + if not isinstance(_type, _ASN1Type): + raise TypeError("_type must be from the _ASN1Type enum") + + self._oid = oid + self._value: NameAttributeValueType = value + self._type: _ASN1Type = _type + + @property + def oid(self) -> ObjectIdentifier: + return self._oid + + @property + def value(self) -> NameAttributeValueType: + return self._value + + @property + def rfc4514_attribute_name(self) -> str: + """ + The short attribute name (for example "CN") if available, + otherwise the OID dotted string. + """ + return _NAMEOID_TO_NAME.get(self.oid, self.oid.dotted_string) + + def rfc4514_string( + self, attr_name_overrides: _OidNameMap | None = None + ) -> str: + """ + Format as RFC4514 Distinguished Name string. + + Use short attribute name if available, otherwise fall back to OID + dotted string. + """ + attr_name = ( + attr_name_overrides.get(self.oid) if attr_name_overrides else None + ) + if attr_name is None: + attr_name = self.rfc4514_attribute_name + + return f"{attr_name}={_escape_dn_value(self.value)}" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, NameAttribute): + return NotImplemented + + return self.oid == other.oid and self.value == other.value + + def __hash__(self) -> int: + return hash((self.oid, self.value)) + + def __repr__(self) -> str: + return f"" + + +class RelativeDistinguishedName: + def __init__(self, attributes: Iterable[NameAttribute[str | bytes]]): + attributes = list(attributes) + if not attributes: + raise ValueError("a relative distinguished name cannot be empty") + if not all(isinstance(x, NameAttribute) for x in attributes): + raise TypeError("attributes must be an iterable of NameAttribute") + + # Keep list and frozenset to preserve attribute order where it matters + self._attributes = attributes + self._attribute_set = frozenset(attributes) + + if len(self._attribute_set) != len(attributes): + raise ValueError("duplicate attributes are not allowed") + + def get_attributes_for_oid( + self, + oid: ObjectIdentifier, + ) -> list[NameAttribute[str | bytes]]: + return [i for i in self if i.oid == oid] + + def rfc4514_string( + self, attr_name_overrides: _OidNameMap | None = None + ) -> str: + """ + Format as RFC4514 Distinguished Name string. + + Within each RDN, attributes are joined by '+', although that is rarely + used in certificates. + """ + return "+".join( + attr.rfc4514_string(attr_name_overrides) + for attr in self._attributes + ) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, RelativeDistinguishedName): + return NotImplemented + + return self._attribute_set == other._attribute_set + + def __hash__(self) -> int: + return hash(self._attribute_set) + + def __iter__(self) -> Iterator[NameAttribute[str | bytes]]: + return iter(self._attributes) + + def __len__(self) -> int: + return len(self._attributes) + + def __repr__(self) -> str: + return f"" + + +class Name: + @typing.overload + def __init__( + self, attributes: Iterable[NameAttribute[str | bytes]] + ) -> None: ... + + @typing.overload + def __init__( + self, attributes: Iterable[RelativeDistinguishedName] + ) -> None: ... + + def __init__( + self, + attributes: Iterable[ + NameAttribute[str | bytes] | RelativeDistinguishedName + ], + ) -> None: + attributes = list(attributes) + if all(isinstance(x, NameAttribute) for x in attributes): + self._attributes = [ + RelativeDistinguishedName([typing.cast(NameAttribute, x)]) + for x in attributes + ] + elif all(isinstance(x, RelativeDistinguishedName) for x in attributes): + self._attributes = typing.cast( + list[RelativeDistinguishedName], attributes + ) + else: + raise TypeError( + "attributes must be a list of NameAttribute" + " or a list RelativeDistinguishedName" + ) + + @classmethod + def from_rfc4514_string( + cls, + data: str, + attr_name_overrides: _NameOidMap | None = None, + ) -> Name: + return _RFC4514NameParser(data, attr_name_overrides or {}).parse() + + def rfc4514_string( + self, attr_name_overrides: _OidNameMap | None = None + ) -> str: + """ + Format as RFC4514 Distinguished Name string. + For example 'CN=foobar.com,O=Foo Corp,C=US' + + An X.509 name is a two-level structure: a list of sets of attributes. + Each list element is separated by ',' and within each list element, set + elements are separated by '+'. The latter is almost never used in + real world certificates. According to RFC4514 section 2.1 the + RDNSequence must be reversed when converting to string representation. + """ + return ",".join( + attr.rfc4514_string(attr_name_overrides) + for attr in reversed(self._attributes) + ) + + def get_attributes_for_oid( + self, + oid: ObjectIdentifier, + ) -> list[NameAttribute[str | bytes]]: + return [i for i in self if i.oid == oid] + + @property + def rdns(self) -> list[RelativeDistinguishedName]: + return self._attributes + + def public_bytes(self, backend: typing.Any = None) -> bytes: + return rust_x509.encode_name_bytes(self) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Name): + return NotImplemented + + return self._attributes == other._attributes + + def __hash__(self) -> int: + # TODO: this is relatively expensive, if this looks like a bottleneck + # for you, consider optimizing! + return hash(tuple(self._attributes)) + + def __iter__(self) -> Iterator[NameAttribute[str | bytes]]: + for rdn in self._attributes: + yield from rdn + + def __len__(self) -> int: + return sum(len(rdn) for rdn in self._attributes) + + def __repr__(self) -> str: + return f"" + + +class _RFC4514NameParser: + _OID_RE = re.compile(r"(0|([1-9]\d*))(\.(0|([1-9]\d*)))+") + _DESCR_RE = re.compile(r"[a-zA-Z][a-zA-Z\d-]*") + + _ESCAPE_SPECIAL = r"[\\ #=\"\+,;<>]" + _ESCAPE_HEX = r"[\da-zA-Z]{2}" + _PAIR = rf"\\({_ESCAPE_SPECIAL}|{_ESCAPE_HEX})" + _PAIR_MULTI_RE = re.compile(rf"(\\{_ESCAPE_SPECIAL})|((\\{_ESCAPE_HEX})+)") + _LUTF1 = r"[\x01-\x1f\x21\x24-\x2A\x2D-\x3A\x3D\x3F-\x5B\x5D-\x7F]" + _SUTF1 = r"[\x01-\x21\x23-\x2A\x2D-\x3A\x3D\x3F-\x5B\x5D-\x7F]" + _TUTF1 = r"[\x01-\x1F\x21\x23-\x2A\x2D-\x3A\x3D\x3F-\x5B\x5D-\x7F]" + _UTFMB = rf"[\x80-{chr(sys.maxunicode)}]" + _LEADCHAR = rf"{_LUTF1}|{_UTFMB}" + _STRINGCHAR = rf"{_SUTF1}|{_UTFMB}" + _TRAILCHAR = rf"{_TUTF1}|{_UTFMB}" + _STRING_RE = re.compile( + rf""" + ( + ({_LEADCHAR}|{_PAIR}) + ( + ({_STRINGCHAR}|{_PAIR})* + ({_TRAILCHAR}|{_PAIR}) + )? + )? + """, + re.VERBOSE, + ) + _HEXSTRING_RE = re.compile(r"#([\da-zA-Z]{2})+") + + def __init__(self, data: str, attr_name_overrides: _NameOidMap) -> None: + self._data = data + self._idx = 0 + + self._attr_name_overrides = attr_name_overrides + + def _has_data(self) -> bool: + return self._idx < len(self._data) + + def _peek(self) -> str | None: + if self._has_data(): + return self._data[self._idx] + return None + + def _read_char(self, ch: str) -> None: + if self._peek() != ch: + raise ValueError + self._idx += 1 + + def _read_re(self, pat) -> str: + match = pat.match(self._data, pos=self._idx) + if match is None: + raise ValueError + val = match.group() + self._idx += len(val) + return val + + def parse(self) -> Name: + """ + Parses the `data` string and converts it to a Name. + + According to RFC4514 section 2.1 the RDNSequence must be + reversed when converting to string representation. So, when + we parse it, we need to reverse again to get the RDNs on the + correct order. + """ + + if not self._has_data(): + return Name([]) + + rdns = [self._parse_rdn()] + + while self._has_data(): + self._read_char(",") + rdns.append(self._parse_rdn()) + + return Name(reversed(rdns)) + + def _parse_rdn(self) -> RelativeDistinguishedName: + nas = [self._parse_na()] + while self._peek() == "+": + self._read_char("+") + nas.append(self._parse_na()) + + return RelativeDistinguishedName(nas) + + def _parse_na(self) -> NameAttribute[str]: + try: + oid_value = self._read_re(self._OID_RE) + except ValueError: + name = self._read_re(self._DESCR_RE) + oid = self._attr_name_overrides.get( + name, _NAME_TO_NAMEOID.get(name) + ) + if oid is None: + raise ValueError + else: + oid = ObjectIdentifier(oid_value) + + self._read_char("=") + if self._peek() == "#": + value = self._read_re(self._HEXSTRING_RE) + value = binascii.unhexlify(value[1:]).decode() + else: + raw_value = self._read_re(self._STRING_RE) + value = _unescape_dn_value(raw_value) + + return NameAttribute(oid, value) diff --git a/intelliaide/vendor/cryptography/x509/ocsp.py b/intelliaide/vendor/cryptography/x509/ocsp.py new file mode 100644 index 0000000..f61ed80 --- /dev/null +++ b/intelliaide/vendor/cryptography/x509/ocsp.py @@ -0,0 +1,379 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import datetime +from collections.abc import Iterable + +from cryptography import utils, x509 +from cryptography.hazmat.bindings._rust import ocsp +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.asymmetric.types import ( + CertificateIssuerPrivateKeyTypes, +) +from cryptography.x509.base import _reject_duplicate_extension + + +class OCSPResponderEncoding(utils.Enum): + HASH = "By Hash" + NAME = "By Name" + + +class OCSPResponseStatus(utils.Enum): + SUCCESSFUL = 0 + MALFORMED_REQUEST = 1 + INTERNAL_ERROR = 2 + TRY_LATER = 3 + SIG_REQUIRED = 5 + UNAUTHORIZED = 6 + + +_ALLOWED_HASHES = ( + hashes.SHA1, + hashes.SHA224, + hashes.SHA256, + hashes.SHA384, + hashes.SHA512, +) + + +def _verify_algorithm(algorithm: hashes.HashAlgorithm) -> None: + if not isinstance(algorithm, _ALLOWED_HASHES): + raise ValueError( + "Algorithm must be SHA1, SHA224, SHA256, SHA384, or SHA512" + ) + + +class OCSPCertStatus(utils.Enum): + GOOD = 0 + REVOKED = 1 + UNKNOWN = 2 + + +class _SingleResponse: + def __init__( + self, + resp: tuple[x509.Certificate, x509.Certificate] | None, + resp_hash: tuple[bytes, bytes, int] | None, + algorithm: hashes.HashAlgorithm, + cert_status: OCSPCertStatus, + this_update: datetime.datetime, + next_update: datetime.datetime | None, + revocation_time: datetime.datetime | None, + revocation_reason: x509.ReasonFlags | None, + ): + _verify_algorithm(algorithm) + if not isinstance(this_update, datetime.datetime): + raise TypeError("this_update must be a datetime object") + if next_update is not None and not isinstance( + next_update, datetime.datetime + ): + raise TypeError("next_update must be a datetime object or None") + + self._resp = resp + self._resp_hash = resp_hash + self._algorithm = algorithm + self._this_update = this_update + self._next_update = next_update + + if not isinstance(cert_status, OCSPCertStatus): + raise TypeError( + "cert_status must be an item from the OCSPCertStatus enum" + ) + if cert_status is not OCSPCertStatus.REVOKED: + if revocation_time is not None: + raise ValueError( + "revocation_time can only be provided if the certificate " + "is revoked" + ) + if revocation_reason is not None: + raise ValueError( + "revocation_reason can only be provided if the certificate" + " is revoked" + ) + else: + if not isinstance(revocation_time, datetime.datetime): + raise TypeError("revocation_time must be a datetime object") + + if revocation_reason is not None and not isinstance( + revocation_reason, x509.ReasonFlags + ): + raise TypeError( + "revocation_reason must be an item from the ReasonFlags " + "enum or None" + ) + + self._cert_status = cert_status + self._revocation_time = revocation_time + self._revocation_reason = revocation_reason + + +OCSPRequest = ocsp.OCSPRequest +OCSPResponse = ocsp.OCSPResponse +OCSPSingleResponse = ocsp.OCSPSingleResponse + + +class OCSPRequestBuilder: + def __init__( + self, + request: tuple[ + x509.Certificate, x509.Certificate, hashes.HashAlgorithm + ] + | None = None, + request_hash: tuple[bytes, bytes, int, hashes.HashAlgorithm] + | None = None, + extensions: list[x509.Extension[x509.ExtensionType]] = [], + ) -> None: + self._request = request + self._request_hash = request_hash + self._extensions = extensions + + def add_certificate( + self, + cert: x509.Certificate, + issuer: x509.Certificate, + algorithm: hashes.HashAlgorithm, + ) -> OCSPRequestBuilder: + if self._request is not None or self._request_hash is not None: + raise ValueError("Only one certificate can be added to a request") + + _verify_algorithm(algorithm) + if not isinstance(cert, x509.Certificate) or not isinstance( + issuer, x509.Certificate + ): + raise TypeError("cert and issuer must be a Certificate") + + return OCSPRequestBuilder( + (cert, issuer, algorithm), self._request_hash, self._extensions + ) + + def add_certificate_by_hash( + self, + issuer_name_hash: bytes, + issuer_key_hash: bytes, + serial_number: int, + algorithm: hashes.HashAlgorithm, + ) -> OCSPRequestBuilder: + if self._request is not None or self._request_hash is not None: + raise ValueError("Only one certificate can be added to a request") + + if not isinstance(serial_number, int): + raise TypeError("serial_number must be an integer") + + _verify_algorithm(algorithm) + utils._check_bytes("issuer_name_hash", issuer_name_hash) + utils._check_bytes("issuer_key_hash", issuer_key_hash) + if algorithm.digest_size != len( + issuer_name_hash + ) or algorithm.digest_size != len(issuer_key_hash): + raise ValueError( + "issuer_name_hash and issuer_key_hash must be the same length " + "as the digest size of the algorithm" + ) + + return OCSPRequestBuilder( + self._request, + (issuer_name_hash, issuer_key_hash, serial_number, algorithm), + self._extensions, + ) + + def add_extension( + self, extval: x509.ExtensionType, critical: bool + ) -> OCSPRequestBuilder: + if not isinstance(extval, x509.ExtensionType): + raise TypeError("extension must be an ExtensionType") + + extension = x509.Extension(extval.oid, critical, extval) + _reject_duplicate_extension(extension, self._extensions) + + return OCSPRequestBuilder( + self._request, self._request_hash, [*self._extensions, extension] + ) + + def build(self) -> OCSPRequest: + if self._request is None and self._request_hash is None: + raise ValueError("You must add a certificate before building") + + return ocsp.create_ocsp_request(self) + + +class OCSPResponseBuilder: + def __init__( + self, + response: _SingleResponse | None = None, + responder_id: tuple[x509.Certificate, OCSPResponderEncoding] + | None = None, + certs: list[x509.Certificate] | None = None, + extensions: list[x509.Extension[x509.ExtensionType]] = [], + ): + self._response = response + self._responder_id = responder_id + self._certs = certs + self._extensions = extensions + + def add_response( + self, + cert: x509.Certificate, + issuer: x509.Certificate, + algorithm: hashes.HashAlgorithm, + cert_status: OCSPCertStatus, + this_update: datetime.datetime, + next_update: datetime.datetime | None, + revocation_time: datetime.datetime | None, + revocation_reason: x509.ReasonFlags | None, + ) -> OCSPResponseBuilder: + if self._response is not None: + raise ValueError("Only one response per OCSPResponse.") + + if not isinstance(cert, x509.Certificate) or not isinstance( + issuer, x509.Certificate + ): + raise TypeError("cert and issuer must be a Certificate") + + singleresp = _SingleResponse( + (cert, issuer), + None, + algorithm, + cert_status, + this_update, + next_update, + revocation_time, + revocation_reason, + ) + return OCSPResponseBuilder( + singleresp, + self._responder_id, + self._certs, + self._extensions, + ) + + def add_response_by_hash( + self, + issuer_name_hash: bytes, + issuer_key_hash: bytes, + serial_number: int, + algorithm: hashes.HashAlgorithm, + cert_status: OCSPCertStatus, + this_update: datetime.datetime, + next_update: datetime.datetime | None, + revocation_time: datetime.datetime | None, + revocation_reason: x509.ReasonFlags | None, + ) -> OCSPResponseBuilder: + if self._response is not None: + raise ValueError("Only one response per OCSPResponse.") + + if not isinstance(serial_number, int): + raise TypeError("serial_number must be an integer") + + utils._check_bytes("issuer_name_hash", issuer_name_hash) + utils._check_bytes("issuer_key_hash", issuer_key_hash) + _verify_algorithm(algorithm) + if algorithm.digest_size != len( + issuer_name_hash + ) or algorithm.digest_size != len(issuer_key_hash): + raise ValueError( + "issuer_name_hash and issuer_key_hash must be the same length " + "as the digest size of the algorithm" + ) + + singleresp = _SingleResponse( + None, + (issuer_name_hash, issuer_key_hash, serial_number), + algorithm, + cert_status, + this_update, + next_update, + revocation_time, + revocation_reason, + ) + return OCSPResponseBuilder( + singleresp, + self._responder_id, + self._certs, + self._extensions, + ) + + def responder_id( + self, encoding: OCSPResponderEncoding, responder_cert: x509.Certificate + ) -> OCSPResponseBuilder: + if self._responder_id is not None: + raise ValueError("responder_id can only be set once") + if not isinstance(responder_cert, x509.Certificate): + raise TypeError("responder_cert must be a Certificate") + if not isinstance(encoding, OCSPResponderEncoding): + raise TypeError( + "encoding must be an element from OCSPResponderEncoding" + ) + + return OCSPResponseBuilder( + self._response, + (responder_cert, encoding), + self._certs, + self._extensions, + ) + + def certificates( + self, certs: Iterable[x509.Certificate] + ) -> OCSPResponseBuilder: + if self._certs is not None: + raise ValueError("certificates may only be set once") + certs = list(certs) + if len(certs) == 0: + raise ValueError("certs must not be an empty list") + if not all(isinstance(x, x509.Certificate) for x in certs): + raise TypeError("certs must be a list of Certificates") + return OCSPResponseBuilder( + self._response, + self._responder_id, + certs, + self._extensions, + ) + + def add_extension( + self, extval: x509.ExtensionType, critical: bool + ) -> OCSPResponseBuilder: + if not isinstance(extval, x509.ExtensionType): + raise TypeError("extension must be an ExtensionType") + + extension = x509.Extension(extval.oid, critical, extval) + _reject_duplicate_extension(extension, self._extensions) + + return OCSPResponseBuilder( + self._response, + self._responder_id, + self._certs, + [*self._extensions, extension], + ) + + def sign( + self, + private_key: CertificateIssuerPrivateKeyTypes, + algorithm: hashes.HashAlgorithm | None, + ) -> OCSPResponse: + if self._response is None: + raise ValueError("You must add a response before signing") + if self._responder_id is None: + raise ValueError("You must add a responder_id before signing") + + return ocsp.create_ocsp_response( + OCSPResponseStatus.SUCCESSFUL, self, private_key, algorithm + ) + + @classmethod + def build_unsuccessful( + cls, response_status: OCSPResponseStatus + ) -> OCSPResponse: + if not isinstance(response_status, OCSPResponseStatus): + raise TypeError( + "response_status must be an item from OCSPResponseStatus" + ) + if response_status is OCSPResponseStatus.SUCCESSFUL: + raise ValueError("response_status cannot be SUCCESSFUL") + + return ocsp.create_ocsp_response(response_status, None, None, None) + + +load_der_ocsp_request = ocsp.load_der_ocsp_request +load_der_ocsp_response = ocsp.load_der_ocsp_response diff --git a/intelliaide/vendor/cryptography/x509/oid.py b/intelliaide/vendor/cryptography/x509/oid.py new file mode 100644 index 0000000..520fc7a --- /dev/null +++ b/intelliaide/vendor/cryptography/x509/oid.py @@ -0,0 +1,37 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +from cryptography.hazmat._oid import ( + AttributeOID, + AuthorityInformationAccessOID, + CertificatePoliciesOID, + CRLEntryExtensionOID, + ExtendedKeyUsageOID, + ExtensionOID, + NameOID, + ObjectIdentifier, + OCSPExtensionOID, + OtherNameFormOID, + PublicKeyAlgorithmOID, + SignatureAlgorithmOID, + SubjectInformationAccessOID, +) + +__all__ = [ + "AttributeOID", + "AuthorityInformationAccessOID", + "CRLEntryExtensionOID", + "CertificatePoliciesOID", + "ExtendedKeyUsageOID", + "ExtensionOID", + "NameOID", + "OCSPExtensionOID", + "ObjectIdentifier", + "OtherNameFormOID", + "PublicKeyAlgorithmOID", + "SignatureAlgorithmOID", + "SubjectInformationAccessOID", +] diff --git a/intelliaide/vendor/cryptography/x509/verification.py b/intelliaide/vendor/cryptography/x509/verification.py new file mode 100644 index 0000000..2db4324 --- /dev/null +++ b/intelliaide/vendor/cryptography/x509/verification.py @@ -0,0 +1,34 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import typing + +from cryptography.hazmat.bindings._rust import x509 as rust_x509 +from cryptography.x509.general_name import DNSName, IPAddress + +__all__ = [ + "ClientVerifier", + "Criticality", + "ExtensionPolicy", + "Policy", + "PolicyBuilder", + "ServerVerifier", + "Store", + "Subject", + "VerificationError", + "VerifiedClient", +] + +Store = rust_x509.Store +Subject = typing.Union[DNSName, IPAddress] +VerifiedClient = rust_x509.VerifiedClient +ClientVerifier = rust_x509.ClientVerifier +ServerVerifier = rust_x509.ServerVerifier +PolicyBuilder = rust_x509.PolicyBuilder +Policy = rust_x509.Policy +ExtensionPolicy = rust_x509.ExtensionPolicy +Criticality = rust_x509.Criticality +VerificationError = rust_x509.VerificationError diff --git a/intelliaide/vendor/defusedxml-0.7.1.dist-info/INSTALLER b/intelliaide/vendor/defusedxml-0.7.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/intelliaide/vendor/defusedxml-0.7.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/intelliaide/vendor/defusedxml-0.7.1.dist-info/LICENSE b/intelliaide/vendor/defusedxml-0.7.1.dist-info/LICENSE new file mode 100644 index 0000000..311690c --- /dev/null +++ b/intelliaide/vendor/defusedxml-0.7.1.dist-info/LICENSE @@ -0,0 +1,49 @@ +PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +-------------------------------------------- + +1. This LICENSE AGREEMENT is between the Python Software Foundation +("PSF"), and the Individual or Organization ("Licensee") accessing and +otherwise using this software ("Python") in source or binary form and +its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, PSF +hereby grants Licensee a nonexclusive, royalty-free, world-wide +license to reproduce, analyze, test, perform and/or display publicly, +prepare derivative works, distribute, and otherwise use Python +alone or in any derivative version, provided, however, that PSF's +License Agreement and PSF's notice of copyright, i.e., "Copyright (c) +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Python Software Foundation; +All Rights Reserved" are retained in Python alone or in any derivative +version prepared by Licensee. + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python. + +4. PSF is making Python available to Licensee on an "AS IS" +basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between PSF and +Licensee. This License Agreement does not grant permission to use PSF +trademarks or trade name in a trademark sense to endorse or promote +products or services of Licensee, or any third party. + +8. By copying, installing or otherwise using Python, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + diff --git a/intelliaide/vendor/defusedxml-0.7.1.dist-info/METADATA b/intelliaide/vendor/defusedxml-0.7.1.dist-info/METADATA new file mode 100644 index 0000000..f916e89 --- /dev/null +++ b/intelliaide/vendor/defusedxml-0.7.1.dist-info/METADATA @@ -0,0 +1,978 @@ +Metadata-Version: 2.1 +Name: defusedxml +Version: 0.7.1 +Summary: XML bomb protection for Python stdlib modules +Home-page: https://github.com/tiran/defusedxml +Author: Christian Heimes +Author-email: christian@python.org +Maintainer: Christian Heimes +Maintainer-email: christian@python.org +License: PSFL +Download-URL: https://pypi.python.org/pypi/defusedxml +Keywords: xml bomb DoS +Platform: all +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: Python Software Foundation License +Classifier: Natural Language :: English +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.5 +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: Topic :: Text Processing :: Markup :: XML +Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* + +=================================================== +defusedxml -- defusing XML bombs and other exploits +=================================================== + +.. image:: https://img.shields.io/pypi/v/defusedxml.svg + :target: https://pypi.org/project/defusedxml/ + :alt: Latest Version + +.. image:: https://img.shields.io/pypi/pyversions/defusedxml.svg + :target: https://pypi.org/project/defusedxml/ + :alt: Supported Python versions + +.. image:: https://travis-ci.org/tiran/defusedxml.svg?branch=master + :target: https://travis-ci.org/tiran/defusedxml + :alt: Travis CI + +.. image:: https://codecov.io/github/tiran/defusedxml/coverage.svg?branch=master + :target: https://codecov.io/github/tiran/defusedxml?branch=master + :alt: codecov + +.. image:: https://img.shields.io/pypi/dm/defusedxml.svg + :target: https://pypistats.org/packages/defusedxml + :alt: PyPI downloads + +.. image:: https://img.shields.io/badge/code%20style-black-000000.svg + :target: https://github.com/psf/black + :alt: Code style: black + +.. + + "It's just XML, what could probably go wrong?" + +Christian Heimes + +Synopsis +======== + +The results of an attack on a vulnerable XML library can be fairly dramatic. +With just a few hundred **Bytes** of XML data an attacker can occupy several +**Gigabytes** of memory within **seconds**. An attacker can also keep +CPUs busy for a long time with a small to medium size request. Under some +circumstances it is even possible to access local files on your +server, to circumvent a firewall, or to abuse services to rebound attacks to +third parties. + +The attacks use and abuse less common features of XML and its parsers. The +majority of developers are unacquainted with features such as processing +instructions and entity expansions that XML inherited from SGML. At best +they know about ```` from experience with HTML but they are not +aware that a document type definition (DTD) can generate an HTTP request +or load a file from the file system. + +None of the issues is new. They have been known for a long time. Billion +laughs was first reported in 2003. Nevertheless some XML libraries and +applications are still vulnerable and even heavy users of XML are +surprised by these features. It's hard to say whom to blame for the +situation. It's too short sighted to shift all blame on XML parsers and +XML libraries for using insecure default settings. After all they +properly implement XML specifications. Application developers must not rely +that a library is always configured for security and potential harmful data +by default. + + +.. contents:: Table of Contents + :depth: 2 + + +Attack vectors +============== + +billion laughs / exponential entity expansion +--------------------------------------------- + +The `Billion Laughs`_ attack -- also known as exponential entity expansion -- +uses multiple levels of nested entities. The original example uses 9 levels +of 10 expansions in each level to expand the string ``lol`` to a string of +3 * 10 :sup:`9` bytes, hence the name "billion laughs". The resulting string +occupies 3 GB (2.79 GiB) of memory; intermediate strings require additional +memory. Because most parsers don't cache the intermediate step for every +expansion it is repeated over and over again. It increases the CPU load even +more. + +An XML document of just a few hundred bytes can disrupt all services on a +machine within seconds. + +Example XML:: + + + + + + ]> + &d; + + +quadratic blowup entity expansion +--------------------------------- + +A quadratic blowup attack is similar to a `Billion Laughs`_ attack; it abuses +entity expansion, too. Instead of nested entities it repeats one large entity +with a couple of thousand chars over and over again. The attack isn't as +efficient as the exponential case but it avoids triggering countermeasures of +parsers against heavily nested entities. Some parsers limit the depth and +breadth of a single entity but not the total amount of expanded text +throughout an entire XML document. + +A medium-sized XML document with a couple of hundred kilobytes can require a +couple of hundred MB to several GB of memory. When the attack is combined +with some level of nested expansion an attacker is able to achieve a higher +ratio of success. + +:: + + + ]> + &a;&a;&a;... repeat + + +external entity expansion (remote) +---------------------------------- + +Entity declarations can contain more than just text for replacement. They can +also point to external resources by public identifiers or system identifiers. +System identifiers are standard URIs. When the URI is a URL (e.g. a +``http://`` locator) some parsers download the resource from the remote +location and embed them into the XML document verbatim. + +Simple example of a parsed external entity:: + + + ]> + + +The case of parsed external entities works only for valid XML content. The +XML standard also supports unparsed external entities with a +``NData declaration``. + +External entity expansion opens the door to plenty of exploits. An attacker +can abuse a vulnerable XML library and application to rebound and forward +network requests with the IP address of the server. It highly depends +on the parser and the application what kind of exploit is possible. For +example: + +* An attacker can circumvent firewalls and gain access to restricted + resources as all the requests are made from an internal and trustworthy + IP address, not from the outside. +* An attacker can abuse a service to attack, spy on or DoS your servers but + also third party services. The attack is disguised with the IP address of + the server and the attacker is able to utilize the high bandwidth of a big + machine. +* An attacker can exhaust additional resources on the machine, e.g. with + requests to a service that doesn't respond or responds with very large + files. +* An attacker may gain knowledge, when, how often and from which IP address + an XML document is accessed. +* An attacker could send mail from inside your network if the URL handler + supports ``smtp://`` URIs. + + +external entity expansion (local file) +-------------------------------------- + +External entities with references to local files are a sub-case of external +entity expansion. It's listed as an extra attack because it deserves extra +attention. Some XML libraries such as lxml disable network access by default +but still allow entity expansion with local file access by default. Local +files are either referenced with a ``file://`` URL or by a file path (either +relative or absolute). + +An attacker may be able to access and download all files that can be read by +the application process. This may include critical configuration files, too. + +:: + + + ]> + + + +DTD retrieval +------------- + +This case is similar to external entity expansion, too. Some XML libraries +like Python's xml.dom.pulldom retrieve document type definitions from remote +or local locations. Several attack scenarios from the external entity case +apply to this issue as well. + +:: + + + + + + text + + + +Python XML Libraries +==================== + +.. csv-table:: vulnerabilities and features + :header: "kind", "sax", "etree", "minidom", "pulldom", "xmlrpc", "lxml", "genshi" + :widths: 24, 7, 8, 8, 7, 8, 8, 8 + :stub-columns: 0 + + "billion laughs", "**True**", "**True**", "**True**", "**True**", "**True**", "False (1)", "False (5)" + "quadratic blowup", "**True**", "**True**", "**True**", "**True**", "**True**", "**True**", "False (5)" + "external entity expansion (remote)", "**True**", "False (3)", "False (4)", "**True**", "false", "False (1)", "False (5)" + "external entity expansion (local file)", "**True**", "False (3)", "False (4)", "**True**", "false", "**True**", "False (5)" + "DTD retrieval", "**True**", "False", "False", "**True**", "false", "False (1)", "False" + "gzip bomb", "False", "False", "False", "False", "**True**", "**partly** (2)", "False" + "xpath support (7)", "False", "False", "False", "False", "False", "**True**", "False" + "xsl(t) support (7)", "False", "False", "False", "False", "False", "**True**", "False" + "xinclude support (7)", "False", "**True** (6)", "False", "False", "False", "**True** (6)", "**True**" + "C library", "expat", "expat", "expat", "expat", "expat", "libxml2", "expat" + +1. Lxml is protected against billion laughs attacks and doesn't do network + lookups by default. +2. libxml2 and lxml are not directly vulnerable to gzip decompression bombs + but they don't protect you against them either. +3. xml.etree doesn't expand entities and raises a ParserError when an entity + occurs. +4. minidom doesn't expand entities and simply returns the unexpanded entity + verbatim. +5. genshi.input of genshi 0.6 doesn't support entity expansion and raises a + ParserError when an entity occurs. +6. Library has (limited) XInclude support but requires an additional step to + process inclusion. +7. These are features but they may introduce exploitable holes, see + `Other things to consider`_ + + +Settings in standard library +---------------------------- + + +xml.sax.handler Features +........................ + +feature_external_ges (http://xml.org/sax/features/external-general-entities) + disables external entity expansion + +feature_external_pes (http://xml.org/sax/features/external-parameter-entities) + the option is ignored and doesn't modify any functionality + +DOM xml.dom.xmlbuilder.Options +.............................. + +external_parameter_entities + ignored + +external_general_entities + ignored + +external_dtd_subset + ignored + +entities + unsure + + +defusedxml +========== + +The `defusedxml package`_ (`defusedxml on PyPI`_) +contains several Python-only workarounds and fixes +for denial of service and other vulnerabilities in Python's XML libraries. +In order to benefit from the protection you just have to import and use the +listed functions / classes from the right defusedxml module instead of the +original module. Merely `defusedxml.xmlrpc`_ is implemented as monkey patch. + +Instead of:: + + >>> from xml.etree.ElementTree import parse + >>> et = parse(xmlfile) + +alter code to:: + + >>> from defusedxml.ElementTree import parse + >>> et = parse(xmlfile) + +Additionally the package has an **untested** function to monkey patch +all stdlib modules with ``defusedxml.defuse_stdlib()``. + +All functions and parser classes accept three additional keyword arguments. +They return either the same objects as the original functions or compatible +subclasses. + +forbid_dtd (default: False) + disallow XML with a ```` processing instruction and raise a + *DTDForbidden* exception when a DTD processing instruction is found. + +forbid_entities (default: True) + disallow XML with ```` declarations inside the DTD and raise an + *EntitiesForbidden* exception when an entity is declared. + +forbid_external (default: True) + disallow any access to remote or local resources in external entities + or DTD and raising an *ExternalReferenceForbidden* exception when a DTD + or entity references an external resource. + + +defusedxml (package) +-------------------- + +DefusedXmlException, DTDForbidden, EntitiesForbidden, +ExternalReferenceForbidden, NotSupportedError + +defuse_stdlib() (*experimental*) + + +defusedxml.cElementTree +----------------------- + +**NOTE** ``defusedxml.cElementTree`` is deprecated and will be removed in a +future release. Import from ``defusedxml.ElementTree`` instead. + +parse(), iterparse(), fromstring(), XMLParser + + +defusedxml.ElementTree +----------------------- + +parse(), iterparse(), fromstring(), XMLParser + + +defusedxml.expatreader +---------------------- + +create_parser(), DefusedExpatParser + + +defusedxml.sax +-------------- + +parse(), parseString(), make_parser() + + +defusedxml.expatbuilder +----------------------- + +parse(), parseString(), DefusedExpatBuilder, DefusedExpatBuilderNS + + +defusedxml.minidom +------------------ + +parse(), parseString() + + +defusedxml.pulldom +------------------ + +parse(), parseString() + + +defusedxml.xmlrpc +----------------- + +The fix is implemented as monkey patch for the stdlib's xmlrpc package (3.x) +or xmlrpclib module (2.x). The function `monkey_patch()` enables the fixes, +`unmonkey_patch()` removes the patch and puts the code in its former state. + +The monkey patch protects against XML related attacks as well as +decompression bombs and excessively large requests or responses. The default +setting is 30 MB for requests, responses and gzip decompression. You can +modify the default by changing the module variable `MAX_DATA`. A value of +`-1` disables the limit. + + +defusedxml.lxml +--------------- + +**DEPRECATED** The module is deprecated and will be removed in a future +release. + +The module acts as an *example* how you could protect code that uses +lxml.etree. It implements a custom Element class that filters out +Entity instances, a custom parser factory and a thread local storage for +parser instances. It also has a check_docinfo() function which inspects +a tree for internal or external DTDs and entity declarations. In order to +check for entities lxml > 3.0 is required. + +parse(), fromstring() +RestrictedElement, GlobalParserTLS, getDefaultParser(), check_docinfo() + + +defusedexpat +============ + +The `defusedexpat package`_ (`defusedexpat on PyPI`_) +comes with binary extensions and a +`modified expat`_ library instead of the standard `expat parser`_. It's +basically a stand-alone version of the patches for Python's standard +library C extensions. + +Modifications in expat +---------------------- + +new definitions:: + + XML_BOMB_PROTECTION + XML_DEFAULT_MAX_ENTITY_INDIRECTIONS + XML_DEFAULT_MAX_ENTITY_EXPANSIONS + XML_DEFAULT_RESET_DTD + +new XML_FeatureEnum members:: + + XML_FEATURE_MAX_ENTITY_INDIRECTIONS + XML_FEATURE_MAX_ENTITY_EXPANSIONS + XML_FEATURE_IGNORE_DTD + +new XML_Error members:: + + XML_ERROR_ENTITY_INDIRECTIONS + XML_ERROR_ENTITY_EXPANSION + +new API functions:: + + int XML_GetFeature(XML_Parser parser, + enum XML_FeatureEnum feature, + long *value); + int XML_SetFeature(XML_Parser parser, + enum XML_FeatureEnum feature, + long value); + int XML_GetFeatureDefault(enum XML_FeatureEnum feature, + long *value); + int XML_SetFeatureDefault(enum XML_FeatureEnum feature, + long value); + +XML_FEATURE_MAX_ENTITY_INDIRECTIONS + Limit the amount of indirections that are allowed to occur during the + expansion of a nested entity. A counter starts when an entity reference + is encountered. It resets after the entity is fully expanded. The limit + protects the parser against exponential entity expansion attacks (aka + billion laughs attack). When the limit is exceeded the parser stops and + fails with `XML_ERROR_ENTITY_INDIRECTIONS`. + A value of 0 disables the protection. + + Supported range + 0 .. UINT_MAX + Default + 40 + +XML_FEATURE_MAX_ENTITY_EXPANSIONS + Limit the total length of all entity expansions throughout the entire + document. The lengths of all entities are accumulated in a parser variable. + The setting protects against quadratic blowup attacks (lots of expansions + of a large entity declaration). When the sum of all entities exceeds + the limit, the parser stops and fails with `XML_ERROR_ENTITY_EXPANSION`. + A value of 0 disables the protection. + + Supported range + 0 .. UINT_MAX + Default + 8 MiB + +XML_FEATURE_RESET_DTD + Reset all DTD information after the block has been parsed. When + the flag is set (default: false) all DTD information after the + endDoctypeDeclHandler has been called. The flag can be set inside the + endDoctypeDeclHandler. Without DTD information any entity reference in + the document body leads to `XML_ERROR_UNDEFINED_ENTITY`. + + Supported range + 0, 1 + Default + 0 + + +How to avoid XML vulnerabilities +================================ + +Best practices +-------------- + +* Don't allow DTDs +* Don't expand entities +* Don't resolve externals +* Limit parse depth +* Limit total input size +* Limit parse time +* Favor a SAX or iterparse-like parser for potential large data +* Validate and properly quote arguments to XSL transformations and + XPath queries +* Don't use XPath expression from untrusted sources +* Don't apply XSL transformations that come untrusted sources + +(based on Brad Hill's `Attacking XML Security`_) + + +Other things to consider +======================== + +XML, XML parsers and processing libraries have more features and possible +issue that could lead to DoS vulnerabilities or security exploits in +applications. I have compiled an incomplete list of theoretical issues that +need further research and more attention. The list is deliberately pessimistic +and a bit paranoid, too. It contains things that might go wrong under daffy +circumstances. + + +attribute blowup / hash collision attack +---------------------------------------- + +XML parsers may use an algorithm with quadratic runtime O(n :sup:`2`) to +handle attributes and namespaces. If it uses hash tables (dictionaries) to +store attributes and namespaces the implementation may be vulnerable to +hash collision attacks, thus reducing the performance to O(n :sup:`2`) again. +In either case an attacker is able to forge a denial of service attack with +an XML document that contains thousands upon thousands of attributes in +a single node. + +I haven't researched yet if expat, pyexpat or libxml2 are vulnerable. + + +decompression bomb +------------------ + +The issue of decompression bombs (aka `ZIP bomb`_) apply to all XML libraries +that can parse compressed XML stream like gzipped HTTP streams or LZMA-ed +files. For an attacker it can reduce the amount of transmitted data by three +magnitudes or more. Gzip is able to compress 1 GiB zeros to roughly 1 MB, +lzma is even better:: + + $ dd if=/dev/zero bs=1M count=1024 | gzip > zeros.gz + $ dd if=/dev/zero bs=1M count=1024 | lzma -z > zeros.xy + $ ls -sh zeros.* + 1020K zeros.gz + 148K zeros.xy + +None of Python's standard XML libraries decompress streams except for +``xmlrpclib``. The module is vulnerable +to decompression bombs. + +lxml can load and process compressed data through libxml2 transparently. +libxml2 can handle even very large blobs of compressed data efficiently +without using too much memory. But it doesn't protect applications from +decompression bombs. A carefully written SAX or iterparse-like approach can +be safe. + + +Processing Instruction +---------------------- + +`PI`_'s like:: + + + +may impose more threats for XML processing. It depends if and how a +processor handles processing instructions. The issue of URL retrieval with +network or local file access apply to processing instructions, too. + + +Other DTD features +------------------ + +`DTD`_ has more features like ````. I haven't researched how +these features may be a security threat. + + +XPath +----- + +XPath statements may introduce DoS vulnerabilities. Code should never execute +queries from untrusted sources. An attacker may also be able to create an XML +document that makes certain XPath queries costly or resource hungry. + + +XPath injection attacks +----------------------- + +XPath injeciton attacks pretty much work like SQL injection attacks. +Arguments to XPath queries must be quoted and validated properly, especially +when they are taken from the user. The page `Avoid the dangers of XPath injection`_ +list some ramifications of XPath injections. + +Python's standard library doesn't have XPath support. Lxml supports +parameterized XPath queries which does proper quoting. You just have to use +its xpath() method correctly:: + + # DON'T + >>> tree.xpath("/tag[@id='%s']" % value) + + # instead do + >>> tree.xpath("/tag[@id=$tagid]", tagid=name) + + +XInclude +-------- + +`XML Inclusion`_ is another way to load and include external files:: + + + + + +This feature should be disabled when XML files from an untrusted source are +processed. Some Python XML libraries and libxml2 support XInclude but don't +have an option to sandbox inclusion and limit it to allowed directories. + + +XMLSchema location +------------------ + +A validating XML parser may download schema files from the information in a +``xsi:schemaLocation`` attribute. + +:: + + + + + +XSL Transformation +------------------ + +You should keep in mind that XSLT is a Turing complete language. Never +process XSLT code from unknown or untrusted source! XSLT processors may +allow you to interact with external resources in ways you can't even imagine. +Some processors even support extensions that allow read/write access to file +system, access to JRE objects or scripting with Jython. + +Example from `Attacking XML Security`_ for Xalan-J:: + + + + + + + + + + + +Related CVEs +============ + +CVE-2013-1664 + Unrestricted entity expansion induces DoS vulnerabilities in Python XML + libraries (XML bomb) + +CVE-2013-1665 + External entity expansion in Python XML libraries inflicts potential + security flaws and DoS vulnerabilities + + +Other languages / frameworks +============================= + +Several other programming languages and frameworks are vulnerable as well. A +couple of them are affected by the fact that libxml2 up to 2.9.0 has no +protection against quadratic blowup attacks. Most of them have potential +dangerous default settings for entity expansion and external entities, too. + +Perl +---- + +Perl's XML::Simple is vulnerable to quadratic entity expansion and external +entity expansion (both local and remote). + + +Ruby +---- + +Ruby's REXML document parser is vulnerable to entity expansion attacks +(both quadratic and exponential) but it doesn't do external entity +expansion by default. In order to counteract entity expansion you have to +disable the feature:: + + REXML::Document.entity_expansion_limit = 0 + +libxml-ruby and hpricot don't expand entities in their default configuration. + + +PHP +--- + +PHP's SimpleXML API is vulnerable to quadratic entity expansion and loads +entities from local and remote resources. The option ``LIBXML_NONET`` disables +network access but still allows local file access. ``LIBXML_NOENT`` seems to +have no effect on entity expansion in PHP 5.4.6. + + +C# / .NET / Mono +---------------- + +Information in `XML DoS and Defenses (MSDN)`_ suggest that .NET is +vulnerable with its default settings. The article contains code snippets +how to create a secure XML reader:: + + XmlReaderSettings settings = new XmlReaderSettings(); + settings.ProhibitDtd = false; + settings.MaxCharactersFromEntities = 1024; + settings.XmlResolver = null; + XmlReader reader = XmlReader.Create(stream, settings); + + +Java +---- + +Untested. The documentation of Xerces and its `Xerces SecurityMananger`_ +sounds like Xerces is also vulnerable to billion laugh attacks with its +default settings. It also does entity resolving when an +``org.xml.sax.EntityResolver`` is configured. I'm not yet sure about the +default setting here. + +Java specialists suggest to have a custom builder factory:: + + DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); + builderFactory.setXIncludeAware(False); + builderFactory.setExpandEntityReferences(False); + builderFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, True); + # either + builderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", True); + # or if you need DTDs + builderFactory.setFeature("http://xml.org/sax/features/external-general-entities", False); + builderFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", False); + builderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", False); + builderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", False); + + +TODO +==== + +* DOM: Use xml.dom.xmlbuilder options for entity handling +* SAX: take feature_external_ges and feature_external_pes (?) into account +* test experimental monkey patching of stdlib modules +* improve documentation + + +License +======= + +Copyright (c) 2013-2017 by Christian Heimes + +Licensed to PSF under a Contributor Agreement. + +See https://www.python.org/psf/license for licensing details. + + +Acknowledgements +================ + +Brett Cannon (Python Core developer) + review and code cleanup + +Antoine Pitrou (Python Core developer) + code review + +Aaron Patterson, Ben Murphy and Michael Koziarski (Ruby community) + Many thanks to Aaron, Ben and Michael from the Ruby community for their + report and assistance. + +Thierry Carrez (OpenStack) + Many thanks to Thierry for his report to the Python Security Response + Team on behalf of the OpenStack security team. + +Carl Meyer (Django) + Many thanks to Carl for his report to PSRT on behalf of the Django security + team. + +Daniel Veillard (libxml2) + Many thanks to Daniel for his insight and assistance with libxml2. + +semantics GmbH (https://www.semantics.de/) + Many thanks to my employer semantics for letting me work on the issue + during working hours as part of semantics's open source initiative. + + +References +========== + +* `XML DoS and Defenses (MSDN)`_ +* `Billion Laughs`_ on Wikipedia +* `ZIP bomb`_ on Wikipedia +* `Configure SAX parsers for secure processing`_ +* `Testing for XML Injection`_ + +.. _defusedxml package: https://github.com/tiran/defusedxml +.. _defusedxml on PyPI: https://pypi.python.org/pypi/defusedxml +.. _defusedexpat package: https://github.com/tiran/defusedexpat +.. _defusedexpat on PyPI: https://pypi.python.org/pypi/defusedexpat +.. _modified expat: https://github.com/tiran/expat +.. _expat parser: http://expat.sourceforge.net/ +.. _Attacking XML Security: https://www.isecpartners.com/media/12976/iSEC-HILL-Attacking-XML-Security-bh07.pdf +.. _Billion Laughs: https://en.wikipedia.org/wiki/Billion_laughs +.. _XML DoS and Defenses (MSDN): https://msdn.microsoft.com/en-us/magazine/ee335713.aspx +.. _ZIP bomb: https://en.wikipedia.org/wiki/Zip_bomb +.. _DTD: https://en.wikipedia.org/wiki/Document_Type_Definition +.. _PI: https://en.wikipedia.org/wiki/Processing_Instruction +.. _Avoid the dangers of XPath injection: http://www.ibm.com/developerworks/xml/library/x-xpathinjection/index.html +.. _Configure SAX parsers for secure processing: http://www.ibm.com/developerworks/xml/library/x-tipcfsx/index.html +.. _Testing for XML Injection: https://www.owasp.org/index.php/Testing_for_XML_Injection_(OWASP-DV-008) +.. _Xerces SecurityMananger: https://xerces.apache.org/xerces2-j/javadocs/xerces2/org/apache/xerces/util/SecurityManager.html +.. _XML Inclusion: https://www.w3.org/TR/xinclude/#include_element + +Changelog +========= + +defusedxml 0.7.1 +--------------------- + +*Release date: 08-Mar-2021* + +- Fix regression ``defusedxml.ElementTree.ParseError`` (#63) + The ``ParseError`` exception is now the same class object as + ``xml.etree.ElementTree.ParseError`` again. + + +defusedxml 0.7.0 +---------------- + +*Release date: 4-Mar-2021* + +- No changes + + +defusedxml 0.7.0rc2 +------------------- + +*Release date: 12-Jan-2021* + +- Re-add and deprecate ``defusedxml.cElementTree`` +- Use GitHub Actions instead of TravisCI +- Restore ``ElementTree`` attribute of ``xml.etree`` module after patching + +defusedxml 0.7.0rc1 +------------------- + +*Release date: 04-May-2020* + +- Add support for Python 3.9 +- ``defusedxml.cElementTree`` is not available with Python 3.9. +- Python 2 is deprecate. Support for Python 2 will be removed in 0.8.0. + + +defusedxml 0.6.0 +---------------- + +*Release date: 17-Apr-2019* + +- Increase test coverage. +- Add badges to README. + + +defusedxml 0.6.0rc1 +------------------- + +*Release date: 14-Apr-2019* + +- Test on Python 3.7 stable and 3.8-dev +- Drop support for Python 3.4 +- No longer pass *html* argument to XMLParse. It has been deprecated and + ignored for a long time. The DefusedXMLParser still takes a html argument. + A deprecation warning is issued when the argument is False and a TypeError + when it's True. +- defusedxml now fails early when pyexpat stdlib module is not available or + broken. +- defusedxml.ElementTree.__all__ now lists ParseError as public attribute. +- The defusedxml.ElementTree and defusedxml.cElementTree modules had a typo + and used XMLParse instead of XMLParser as an alias for DefusedXMLParser. + Both the old and fixed name are now available. + + +defusedxml 0.5.0 +---------------- + +*Release date: 07-Feb-2017* + +- No changes + + +defusedxml 0.5.0.rc1 +-------------------- + +*Release date: 28-Jan-2017* + +- Add compatibility with Python 3.6 +- Drop support for Python 2.6, 3.1, 3.2, 3.3 +- Fix lxml tests (XMLSyntaxError: Detected an entity reference loop) + + +defusedxml 0.4.1 +---------------- + +*Release date: 28-Mar-2013* + +- Add more demo exploits, e.g. python_external.py and Xalan XSLT demos. +- Improved documentation. + + +defusedxml 0.4 +-------------- + +*Release date: 25-Feb-2013* + +- As per http://seclists.org/oss-sec/2013/q1/340 please REJECT + CVE-2013-0278, CVE-2013-0279 and CVE-2013-0280 and use CVE-2013-1664, + CVE-2013-1665 for OpenStack/etc. +- Add missing parser_list argument to sax.make_parser(). The argument is + ignored, though. (thanks to Florian Apolloner) +- Add demo exploit for external entity attack on Python's SAX parser, XML-RPC + and WebDAV. + + +defusedxml 0.3 +-------------- + +*Release date: 19-Feb-2013* + +- Improve documentation + + +defusedxml 0.2 +-------------- + +*Release date: 15-Feb-2013* + +- Rename ExternalEntitiesForbidden to ExternalReferenceForbidden +- Rename defusedxml.lxml.check_dtd() to check_docinfo() +- Unify argument names in callbacks +- Add arguments and formatted representation to exceptions +- Add forbid_external argument to all functions and classes +- More tests +- LOTS of documentation +- Add example code for other languages (Ruby, Perl, PHP) and parsers (Genshi) +- Add protection against XML and gzip attacks to xmlrpclib + +defusedxml 0.1 +-------------- + +*Release date: 08-Feb-2013* + +- Initial and internal release for PSRT review + + diff --git a/intelliaide/vendor/defusedxml-0.7.1.dist-info/RECORD b/intelliaide/vendor/defusedxml-0.7.1.dist-info/RECORD new file mode 100644 index 0000000..6d32da1 --- /dev/null +++ b/intelliaide/vendor/defusedxml-0.7.1.dist-info/RECORD @@ -0,0 +1,28 @@ +defusedxml-0.7.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +defusedxml-0.7.1.dist-info/LICENSE,sha256=uAzp2oxCofkQeWJ_u-K_JyEK4Qig_-Xwd9WwjgdsJMg,2409 +defusedxml-0.7.1.dist-info/METADATA,sha256=Np0872SHDa-En7pxHLjQWn7-PI2asPdjrcNAef43i7E,32518 +defusedxml-0.7.1.dist-info/RECORD,, +defusedxml-0.7.1.dist-info/WHEEL,sha256=kGT74LWyRUZrL4VgLh6_g12IeVl_9u9ZVhadrgXZUEY,110 +defusedxml-0.7.1.dist-info/top_level.txt,sha256=QGHa90F50pVKhWSFlERI0jtSKtqDiGyfeZX7dQNZAAw,11 +defusedxml/ElementTree.py,sha256=GLSqpCz58oXGPGyzf_HylsPS9_dcGVP5SN4dK7yvyPw,4640 +defusedxml/__init__.py,sha256=RczeaVJG64p2Fgy1jlCzbuRdchEPnEaCBrxgk8JJ_pM,1444 +defusedxml/__pycache__/ElementTree.cpython-312.pyc,, +defusedxml/__pycache__/__init__.cpython-312.pyc,, +defusedxml/__pycache__/cElementTree.cpython-312.pyc,, +defusedxml/__pycache__/common.cpython-312.pyc,, +defusedxml/__pycache__/expatbuilder.cpython-312.pyc,, +defusedxml/__pycache__/expatreader.cpython-312.pyc,, +defusedxml/__pycache__/lxml.cpython-312.pyc,, +defusedxml/__pycache__/minidom.cpython-312.pyc,, +defusedxml/__pycache__/pulldom.cpython-312.pyc,, +defusedxml/__pycache__/sax.cpython-312.pyc,, +defusedxml/__pycache__/xmlrpc.cpython-312.pyc,, +defusedxml/cElementTree.py,sha256=PpaKMh3rU29sY8amAK4fzHQKl8gcAYD0h1LCoW62Rtk,1449 +defusedxml/common.py,sha256=3d26jNW4fNXzgjWhvUfs83Afiz5EVxFDupQbugkSMZc,4036 +defusedxml/expatbuilder.py,sha256=b4Q05vsBMJ5StkiTFf4my2rGGo1gZyEl_hC5MeFTOAA,3732 +defusedxml/expatreader.py,sha256=KOpSrwkSvj5SGOY9pTXOM26Dnz00rsJt33WueVvzpvc,2196 +defusedxml/lxml.py,sha256=HW-LFKdrfMRzHdi0Vcucq4-n8yz7v_OQwEQWFg1JQYA,4940 +defusedxml/minidom.py,sha256=3QcgygVwJqcWDQ3IZ2iol8zsH4cx3BRX70SPcd0bG2g,1884 +defusedxml/pulldom.py,sha256=DYj2D2lc7xoxZ38gfzujXmdznd8ovzDqGFXqyXbtxjk,1170 +defusedxml/sax.py,sha256=-SF08Msc2mWEYAMw62pJ5FMwWccOctFSnQwDLYLLlVE,1477 +defusedxml/xmlrpc.py,sha256=7rZQey3tqXcc1hrrM3RprOICU6fiFny9B9l4nmTioxA,5364 diff --git a/intelliaide/vendor/defusedxml-0.7.1.dist-info/WHEEL b/intelliaide/vendor/defusedxml-0.7.1.dist-info/WHEEL new file mode 100644 index 0000000..ef99c6c --- /dev/null +++ b/intelliaide/vendor/defusedxml-0.7.1.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/intelliaide/vendor/defusedxml-0.7.1.dist-info/top_level.txt b/intelliaide/vendor/defusedxml-0.7.1.dist-info/top_level.txt new file mode 100644 index 0000000..36969f2 --- /dev/null +++ b/intelliaide/vendor/defusedxml-0.7.1.dist-info/top_level.txt @@ -0,0 +1 @@ +defusedxml diff --git a/intelliaide/vendor/defusedxml/ElementTree.py b/intelliaide/vendor/defusedxml/ElementTree.py new file mode 100644 index 0000000..5ba765f --- /dev/null +++ b/intelliaide/vendor/defusedxml/ElementTree.py @@ -0,0 +1,154 @@ +# defusedxml +# +# Copyright (c) 2013 by Christian Heimes +# Licensed to PSF under a Contributor Agreement. +# See https://www.python.org/psf/license for licensing details. +"""Defused xml.etree.ElementTree facade +""" +from __future__ import print_function, absolute_import + +import sys +import warnings +from xml.etree.ElementTree import ParseError +from xml.etree.ElementTree import TreeBuilder as _TreeBuilder +from xml.etree.ElementTree import parse as _parse +from xml.etree.ElementTree import tostring + +from .common import PY3 + +if PY3: + import importlib +else: + from xml.etree.ElementTree import XMLParser as _XMLParser + from xml.etree.ElementTree import iterparse as _iterparse + + +from .common import ( + DTDForbidden, + EntitiesForbidden, + ExternalReferenceForbidden, + _generate_etree_functions, +) + +__origin__ = "xml.etree.ElementTree" + + +def _get_py3_cls(): + """Python 3.3 hides the pure Python code but defusedxml requires it. + + The code is based on test.support.import_fresh_module(). + """ + pymodname = "xml.etree.ElementTree" + cmodname = "_elementtree" + + pymod = sys.modules.pop(pymodname, None) + cmod = sys.modules.pop(cmodname, None) + + sys.modules[cmodname] = None + try: + pure_pymod = importlib.import_module(pymodname) + finally: + # restore module + sys.modules[pymodname] = pymod + if cmod is not None: + sys.modules[cmodname] = cmod + else: + sys.modules.pop(cmodname, None) + # restore attribute on original package + etree_pkg = sys.modules["xml.etree"] + if pymod is not None: + etree_pkg.ElementTree = pymod + elif hasattr(etree_pkg, "ElementTree"): + del etree_pkg.ElementTree + + _XMLParser = pure_pymod.XMLParser + _iterparse = pure_pymod.iterparse + # patch pure module to use ParseError from C extension + pure_pymod.ParseError = ParseError + + return _XMLParser, _iterparse + + +if PY3: + _XMLParser, _iterparse = _get_py3_cls() + + +_sentinel = object() + + +class DefusedXMLParser(_XMLParser): + def __init__( + self, + html=_sentinel, + target=None, + encoding=None, + forbid_dtd=False, + forbid_entities=True, + forbid_external=True, + ): + # Python 2.x old style class + _XMLParser.__init__(self, target=target, encoding=encoding) + if html is not _sentinel: + # the 'html' argument has been deprecated and ignored in all + # supported versions of Python. Python 3.8 finally removed it. + if html: + raise TypeError("'html=True' is no longer supported.") + else: + warnings.warn( + "'html' keyword argument is no longer supported. Pass " + "in arguments as keyword arguments.", + category=DeprecationWarning, + ) + + self.forbid_dtd = forbid_dtd + self.forbid_entities = forbid_entities + self.forbid_external = forbid_external + if PY3: + parser = self.parser + else: + parser = self._parser + if self.forbid_dtd: + parser.StartDoctypeDeclHandler = self.defused_start_doctype_decl + if self.forbid_entities: + parser.EntityDeclHandler = self.defused_entity_decl + parser.UnparsedEntityDeclHandler = self.defused_unparsed_entity_decl + if self.forbid_external: + parser.ExternalEntityRefHandler = self.defused_external_entity_ref_handler + + def defused_start_doctype_decl(self, name, sysid, pubid, has_internal_subset): + raise DTDForbidden(name, sysid, pubid) + + def defused_entity_decl( + self, name, is_parameter_entity, value, base, sysid, pubid, notation_name + ): + raise EntitiesForbidden(name, value, base, sysid, pubid, notation_name) + + def defused_unparsed_entity_decl(self, name, base, sysid, pubid, notation_name): + # expat 1.2 + raise EntitiesForbidden(name, None, base, sysid, pubid, notation_name) # pragma: no cover + + def defused_external_entity_ref_handler(self, context, base, sysid, pubid): + raise ExternalReferenceForbidden(context, base, sysid, pubid) + + +# aliases +# XMLParse is a typo, keep it for backwards compatibility +XMLTreeBuilder = XMLParse = XMLParser = DefusedXMLParser + +parse, iterparse, fromstring = _generate_etree_functions( + DefusedXMLParser, _TreeBuilder, _parse, _iterparse +) +XML = fromstring + + +__all__ = [ + "ParseError", + "XML", + "XMLParse", + "XMLParser", + "XMLTreeBuilder", + "fromstring", + "iterparse", + "parse", + "tostring", +] diff --git a/intelliaide/vendor/defusedxml/__init__.py b/intelliaide/vendor/defusedxml/__init__.py new file mode 100644 index 0000000..4b5a230 --- /dev/null +++ b/intelliaide/vendor/defusedxml/__init__.py @@ -0,0 +1,67 @@ +# defusedxml +# +# Copyright (c) 2013 by Christian Heimes +# Licensed to PSF under a Contributor Agreement. +# See https://www.python.org/psf/license for licensing details. +"""Defuse XML bomb denial of service vulnerabilities +""" +from __future__ import print_function, absolute_import + +import warnings + +from .common import ( + DefusedXmlException, + DTDForbidden, + EntitiesForbidden, + ExternalReferenceForbidden, + NotSupportedError, + _apply_defusing, +) + + +def defuse_stdlib(): + """Monkey patch and defuse all stdlib packages + + :warning: The monkey patch is an EXPERIMETNAL feature. + """ + defused = {} + + with warnings.catch_warnings(): + from . import cElementTree + from . import ElementTree + from . import minidom + from . import pulldom + from . import sax + from . import expatbuilder + from . import expatreader + from . import xmlrpc + + xmlrpc.monkey_patch() + defused[xmlrpc] = None + + defused_mods = [ + cElementTree, + ElementTree, + minidom, + pulldom, + sax, + expatbuilder, + expatreader, + ] + + for defused_mod in defused_mods: + stdlib_mod = _apply_defusing(defused_mod) + defused[defused_mod] = stdlib_mod + + return defused + + +__version__ = "0.7.1" + +__all__ = [ + "DefusedXmlException", + "DTDForbidden", + "EntitiesForbidden", + "ExternalReferenceForbidden", + "NotSupportedError", +] diff --git a/intelliaide/vendor/defusedxml/cElementTree.py b/intelliaide/vendor/defusedxml/cElementTree.py new file mode 100644 index 0000000..84670c6 --- /dev/null +++ b/intelliaide/vendor/defusedxml/cElementTree.py @@ -0,0 +1,62 @@ +# defusedxml +# +# Copyright (c) 2013 by Christian Heimes +# Licensed to PSF under a Contributor Agreement. +# See https://www.python.org/psf/license for licensing details. +"""Defused xml.etree.cElementTree +""" +from __future__ import absolute_import + +import warnings + +from .common import _generate_etree_functions + +from xml.etree.cElementTree import TreeBuilder as _TreeBuilder +from xml.etree.cElementTree import parse as _parse +from xml.etree.cElementTree import tostring + +# iterparse from ElementTree! +from xml.etree.ElementTree import iterparse as _iterparse + +# This module is an alias for ElementTree just like xml.etree.cElementTree +from .ElementTree import ( + XML, + XMLParse, + XMLParser, + XMLTreeBuilder, + fromstring, + iterparse, + parse, + tostring, + DefusedXMLParser, + ParseError, +) + +__origin__ = "xml.etree.cElementTree" + + +warnings.warn( + "defusedxml.cElementTree is deprecated, import from defusedxml.ElementTree instead.", + category=DeprecationWarning, + stacklevel=2, +) + +# XMLParse is a typo, keep it for backwards compatibility +XMLTreeBuilder = XMLParse = XMLParser = DefusedXMLParser + +parse, iterparse, fromstring = _generate_etree_functions( + DefusedXMLParser, _TreeBuilder, _parse, _iterparse +) +XML = fromstring + +__all__ = [ + "ParseError", + "XML", + "XMLParse", + "XMLParser", + "XMLTreeBuilder", + "fromstring", + "iterparse", + "parse", + "tostring", +] diff --git a/intelliaide/vendor/defusedxml/common.py b/intelliaide/vendor/defusedxml/common.py new file mode 100644 index 0000000..5ceda1f --- /dev/null +++ b/intelliaide/vendor/defusedxml/common.py @@ -0,0 +1,129 @@ +# defusedxml +# +# Copyright (c) 2013 by Christian Heimes +# Licensed to PSF under a Contributor Agreement. +# See https://www.python.org/psf/license for licensing details. +"""Common constants, exceptions and helpe functions +""" +import sys +import xml.parsers.expat + +PY3 = sys.version_info[0] == 3 + +# Fail early when pyexpat is not installed correctly +if not hasattr(xml.parsers.expat, "ParserCreate"): + raise ImportError("pyexpat") # pragma: no cover + + +class DefusedXmlException(ValueError): + """Base exception""" + + def __repr__(self): + return str(self) + + +class DTDForbidden(DefusedXmlException): + """Document type definition is forbidden""" + + def __init__(self, name, sysid, pubid): + super(DTDForbidden, self).__init__() + self.name = name + self.sysid = sysid + self.pubid = pubid + + def __str__(self): + tpl = "DTDForbidden(name='{}', system_id={!r}, public_id={!r})" + return tpl.format(self.name, self.sysid, self.pubid) + + +class EntitiesForbidden(DefusedXmlException): + """Entity definition is forbidden""" + + def __init__(self, name, value, base, sysid, pubid, notation_name): + super(EntitiesForbidden, self).__init__() + self.name = name + self.value = value + self.base = base + self.sysid = sysid + self.pubid = pubid + self.notation_name = notation_name + + def __str__(self): + tpl = "EntitiesForbidden(name='{}', system_id={!r}, public_id={!r})" + return tpl.format(self.name, self.sysid, self.pubid) + + +class ExternalReferenceForbidden(DefusedXmlException): + """Resolving an external reference is forbidden""" + + def __init__(self, context, base, sysid, pubid): + super(ExternalReferenceForbidden, self).__init__() + self.context = context + self.base = base + self.sysid = sysid + self.pubid = pubid + + def __str__(self): + tpl = "ExternalReferenceForbidden(system_id='{}', public_id={})" + return tpl.format(self.sysid, self.pubid) + + +class NotSupportedError(DefusedXmlException): + """The operation is not supported""" + + +def _apply_defusing(defused_mod): + assert defused_mod is sys.modules[defused_mod.__name__] + stdlib_name = defused_mod.__origin__ + __import__(stdlib_name, {}, {}, ["*"]) + stdlib_mod = sys.modules[stdlib_name] + stdlib_names = set(dir(stdlib_mod)) + for name, obj in vars(defused_mod).items(): + if name.startswith("_") or name not in stdlib_names: + continue + setattr(stdlib_mod, name, obj) + return stdlib_mod + + +def _generate_etree_functions(DefusedXMLParser, _TreeBuilder, _parse, _iterparse): + """Factory for functions needed by etree, dependent on whether + cElementTree or ElementTree is used.""" + + def parse(source, parser=None, forbid_dtd=False, forbid_entities=True, forbid_external=True): + if parser is None: + parser = DefusedXMLParser( + target=_TreeBuilder(), + forbid_dtd=forbid_dtd, + forbid_entities=forbid_entities, + forbid_external=forbid_external, + ) + return _parse(source, parser) + + def iterparse( + source, + events=None, + parser=None, + forbid_dtd=False, + forbid_entities=True, + forbid_external=True, + ): + if parser is None: + parser = DefusedXMLParser( + target=_TreeBuilder(), + forbid_dtd=forbid_dtd, + forbid_entities=forbid_entities, + forbid_external=forbid_external, + ) + return _iterparse(source, events, parser) + + def fromstring(text, forbid_dtd=False, forbid_entities=True, forbid_external=True): + parser = DefusedXMLParser( + target=_TreeBuilder(), + forbid_dtd=forbid_dtd, + forbid_entities=forbid_entities, + forbid_external=forbid_external, + ) + parser.feed(text) + return parser.close() + + return parse, iterparse, fromstring diff --git a/intelliaide/vendor/defusedxml/expatbuilder.py b/intelliaide/vendor/defusedxml/expatbuilder.py new file mode 100644 index 0000000..7bfc57e --- /dev/null +++ b/intelliaide/vendor/defusedxml/expatbuilder.py @@ -0,0 +1,107 @@ +# defusedxml +# +# Copyright (c) 2013 by Christian Heimes +# Licensed to PSF under a Contributor Agreement. +# See https://www.python.org/psf/license for licensing details. +"""Defused xml.dom.expatbuilder +""" +from __future__ import print_function, absolute_import + +from xml.dom.expatbuilder import ExpatBuilder as _ExpatBuilder +from xml.dom.expatbuilder import Namespaces as _Namespaces + +from .common import DTDForbidden, EntitiesForbidden, ExternalReferenceForbidden + +__origin__ = "xml.dom.expatbuilder" + + +class DefusedExpatBuilder(_ExpatBuilder): + """Defused document builder""" + + def __init__( + self, options=None, forbid_dtd=False, forbid_entities=True, forbid_external=True + ): + _ExpatBuilder.__init__(self, options) + self.forbid_dtd = forbid_dtd + self.forbid_entities = forbid_entities + self.forbid_external = forbid_external + + def defused_start_doctype_decl(self, name, sysid, pubid, has_internal_subset): + raise DTDForbidden(name, sysid, pubid) + + def defused_entity_decl( + self, name, is_parameter_entity, value, base, sysid, pubid, notation_name + ): + raise EntitiesForbidden(name, value, base, sysid, pubid, notation_name) + + def defused_unparsed_entity_decl(self, name, base, sysid, pubid, notation_name): + # expat 1.2 + raise EntitiesForbidden(name, None, base, sysid, pubid, notation_name) # pragma: no cover + + def defused_external_entity_ref_handler(self, context, base, sysid, pubid): + raise ExternalReferenceForbidden(context, base, sysid, pubid) + + def install(self, parser): + _ExpatBuilder.install(self, parser) + + if self.forbid_dtd: + parser.StartDoctypeDeclHandler = self.defused_start_doctype_decl + if self.forbid_entities: + # if self._options.entities: + parser.EntityDeclHandler = self.defused_entity_decl + parser.UnparsedEntityDeclHandler = self.defused_unparsed_entity_decl + if self.forbid_external: + parser.ExternalEntityRefHandler = self.defused_external_entity_ref_handler + + +class DefusedExpatBuilderNS(_Namespaces, DefusedExpatBuilder): + """Defused document builder that supports namespaces.""" + + def install(self, parser): + DefusedExpatBuilder.install(self, parser) + if self._options.namespace_declarations: + parser.StartNamespaceDeclHandler = self.start_namespace_decl_handler + + def reset(self): + DefusedExpatBuilder.reset(self) + self._initNamespaces() + + +def parse(file, namespaces=True, forbid_dtd=False, forbid_entities=True, forbid_external=True): + """Parse a document, returning the resulting Document node. + + 'file' may be either a file name or an open file object. + """ + if namespaces: + build_builder = DefusedExpatBuilderNS + else: + build_builder = DefusedExpatBuilder + builder = build_builder( + forbid_dtd=forbid_dtd, forbid_entities=forbid_entities, forbid_external=forbid_external + ) + + if isinstance(file, str): + fp = open(file, "rb") + try: + result = builder.parseFile(fp) + finally: + fp.close() + else: + result = builder.parseFile(file) + return result + + +def parseString( + string, namespaces=True, forbid_dtd=False, forbid_entities=True, forbid_external=True +): + """Parse a document from a string, returning the resulting + Document node. + """ + if namespaces: + build_builder = DefusedExpatBuilderNS + else: + build_builder = DefusedExpatBuilder + builder = build_builder( + forbid_dtd=forbid_dtd, forbid_entities=forbid_entities, forbid_external=forbid_external + ) + return builder.parseString(string) diff --git a/intelliaide/vendor/defusedxml/expatreader.py b/intelliaide/vendor/defusedxml/expatreader.py new file mode 100644 index 0000000..890e1d1 --- /dev/null +++ b/intelliaide/vendor/defusedxml/expatreader.py @@ -0,0 +1,61 @@ +# defusedxml +# +# Copyright (c) 2013 by Christian Heimes +# Licensed to PSF under a Contributor Agreement. +# See https://www.python.org/psf/license for licensing details. +"""Defused xml.sax.expatreader +""" +from __future__ import print_function, absolute_import + +from xml.sax.expatreader import ExpatParser as _ExpatParser + +from .common import DTDForbidden, EntitiesForbidden, ExternalReferenceForbidden + +__origin__ = "xml.sax.expatreader" + + +class DefusedExpatParser(_ExpatParser): + """Defused SAX driver for the pyexpat C module.""" + + def __init__( + self, + namespaceHandling=0, + bufsize=2 ** 16 - 20, + forbid_dtd=False, + forbid_entities=True, + forbid_external=True, + ): + _ExpatParser.__init__(self, namespaceHandling, bufsize) + self.forbid_dtd = forbid_dtd + self.forbid_entities = forbid_entities + self.forbid_external = forbid_external + + def defused_start_doctype_decl(self, name, sysid, pubid, has_internal_subset): + raise DTDForbidden(name, sysid, pubid) + + def defused_entity_decl( + self, name, is_parameter_entity, value, base, sysid, pubid, notation_name + ): + raise EntitiesForbidden(name, value, base, sysid, pubid, notation_name) + + def defused_unparsed_entity_decl(self, name, base, sysid, pubid, notation_name): + # expat 1.2 + raise EntitiesForbidden(name, None, base, sysid, pubid, notation_name) # pragma: no cover + + def defused_external_entity_ref_handler(self, context, base, sysid, pubid): + raise ExternalReferenceForbidden(context, base, sysid, pubid) + + def reset(self): + _ExpatParser.reset(self) + parser = self._parser + if self.forbid_dtd: + parser.StartDoctypeDeclHandler = self.defused_start_doctype_decl + if self.forbid_entities: + parser.EntityDeclHandler = self.defused_entity_decl + parser.UnparsedEntityDeclHandler = self.defused_unparsed_entity_decl + if self.forbid_external: + parser.ExternalEntityRefHandler = self.defused_external_entity_ref_handler + + +def create_parser(*args, **kwargs): + return DefusedExpatParser(*args, **kwargs) diff --git a/intelliaide/vendor/defusedxml/lxml.py b/intelliaide/vendor/defusedxml/lxml.py new file mode 100644 index 0000000..99d5be9 --- /dev/null +++ b/intelliaide/vendor/defusedxml/lxml.py @@ -0,0 +1,153 @@ +# defusedxml +# +# Copyright (c) 2013 by Christian Heimes +# Licensed to PSF under a Contributor Agreement. +# See https://www.python.org/psf/license for licensing details. +"""DEPRECATED Example code for lxml.etree protection + +The code has NO protection against decompression bombs. +""" +from __future__ import print_function, absolute_import + +import threading +import warnings + +from lxml import etree as _etree + +from .common import DTDForbidden, EntitiesForbidden, NotSupportedError + +LXML3 = _etree.LXML_VERSION[0] >= 3 + +__origin__ = "lxml.etree" + +tostring = _etree.tostring + + +warnings.warn( + "defusedxml.lxml is no longer supported and will be removed in a future release.", + category=DeprecationWarning, + stacklevel=2, +) + + +class RestrictedElement(_etree.ElementBase): + """A restricted Element class that filters out instances of some classes""" + + __slots__ = () + # blacklist = (etree._Entity, etree._ProcessingInstruction, etree._Comment) + blacklist = _etree._Entity + + def _filter(self, iterator): + blacklist = self.blacklist + for child in iterator: + if isinstance(child, blacklist): + continue + yield child + + def __iter__(self): + iterator = super(RestrictedElement, self).__iter__() + return self._filter(iterator) + + def iterchildren(self, tag=None, reversed=False): + iterator = super(RestrictedElement, self).iterchildren(tag=tag, reversed=reversed) + return self._filter(iterator) + + def iter(self, tag=None, *tags): + iterator = super(RestrictedElement, self).iter(tag=tag, *tags) + return self._filter(iterator) + + def iterdescendants(self, tag=None, *tags): + iterator = super(RestrictedElement, self).iterdescendants(tag=tag, *tags) + return self._filter(iterator) + + def itersiblings(self, tag=None, preceding=False): + iterator = super(RestrictedElement, self).itersiblings(tag=tag, preceding=preceding) + return self._filter(iterator) + + def getchildren(self): + iterator = super(RestrictedElement, self).__iter__() + return list(self._filter(iterator)) + + def getiterator(self, tag=None): + iterator = super(RestrictedElement, self).getiterator(tag) + return self._filter(iterator) + + +class GlobalParserTLS(threading.local): + """Thread local context for custom parser instances""" + + parser_config = { + "resolve_entities": False, + # 'remove_comments': True, + # 'remove_pis': True, + } + + element_class = RestrictedElement + + def createDefaultParser(self): + parser = _etree.XMLParser(**self.parser_config) + element_class = self.element_class + if self.element_class is not None: + lookup = _etree.ElementDefaultClassLookup(element=element_class) + parser.set_element_class_lookup(lookup) + return parser + + def setDefaultParser(self, parser): + self._default_parser = parser + + def getDefaultParser(self): + parser = getattr(self, "_default_parser", None) + if parser is None: + parser = self.createDefaultParser() + self.setDefaultParser(parser) + return parser + + +_parser_tls = GlobalParserTLS() +getDefaultParser = _parser_tls.getDefaultParser + + +def check_docinfo(elementtree, forbid_dtd=False, forbid_entities=True): + """Check docinfo of an element tree for DTD and entity declarations + + The check for entity declarations needs lxml 3 or newer. lxml 2.x does + not support dtd.iterentities(). + """ + docinfo = elementtree.docinfo + if docinfo.doctype: + if forbid_dtd: + raise DTDForbidden(docinfo.doctype, docinfo.system_url, docinfo.public_id) + if forbid_entities and not LXML3: + # lxml < 3 has no iterentities() + raise NotSupportedError("Unable to check for entity declarations " "in lxml 2.x") + + if forbid_entities: + for dtd in docinfo.internalDTD, docinfo.externalDTD: + if dtd is None: + continue + for entity in dtd.iterentities(): + raise EntitiesForbidden(entity.name, entity.content, None, None, None, None) + + +def parse(source, parser=None, base_url=None, forbid_dtd=False, forbid_entities=True): + if parser is None: + parser = getDefaultParser() + elementtree = _etree.parse(source, parser, base_url=base_url) + check_docinfo(elementtree, forbid_dtd, forbid_entities) + return elementtree + + +def fromstring(text, parser=None, base_url=None, forbid_dtd=False, forbid_entities=True): + if parser is None: + parser = getDefaultParser() + rootelement = _etree.fromstring(text, parser, base_url=base_url) + elementtree = rootelement.getroottree() + check_docinfo(elementtree, forbid_dtd, forbid_entities) + return rootelement + + +XML = fromstring + + +def iterparse(*args, **kwargs): + raise NotSupportedError("defused lxml.etree.iterparse not available") diff --git a/intelliaide/vendor/defusedxml/minidom.py b/intelliaide/vendor/defusedxml/minidom.py new file mode 100644 index 0000000..78033b6 --- /dev/null +++ b/intelliaide/vendor/defusedxml/minidom.py @@ -0,0 +1,63 @@ +# defusedxml +# +# Copyright (c) 2013 by Christian Heimes +# Licensed to PSF under a Contributor Agreement. +# See https://www.python.org/psf/license for licensing details. +"""Defused xml.dom.minidom +""" +from __future__ import print_function, absolute_import + +from xml.dom.minidom import _do_pulldom_parse +from . import expatbuilder as _expatbuilder +from . import pulldom as _pulldom + +__origin__ = "xml.dom.minidom" + + +def parse( + file, parser=None, bufsize=None, forbid_dtd=False, forbid_entities=True, forbid_external=True +): + """Parse a file into a DOM by filename or file object.""" + if parser is None and not bufsize: + return _expatbuilder.parse( + file, + forbid_dtd=forbid_dtd, + forbid_entities=forbid_entities, + forbid_external=forbid_external, + ) + else: + return _do_pulldom_parse( + _pulldom.parse, + (file,), + { + "parser": parser, + "bufsize": bufsize, + "forbid_dtd": forbid_dtd, + "forbid_entities": forbid_entities, + "forbid_external": forbid_external, + }, + ) + + +def parseString( + string, parser=None, forbid_dtd=False, forbid_entities=True, forbid_external=True +): + """Parse a file into a DOM from a string.""" + if parser is None: + return _expatbuilder.parseString( + string, + forbid_dtd=forbid_dtd, + forbid_entities=forbid_entities, + forbid_external=forbid_external, + ) + else: + return _do_pulldom_parse( + _pulldom.parseString, + (string,), + { + "parser": parser, + "forbid_dtd": forbid_dtd, + "forbid_entities": forbid_entities, + "forbid_external": forbid_external, + }, + ) diff --git a/intelliaide/vendor/defusedxml/pulldom.py b/intelliaide/vendor/defusedxml/pulldom.py new file mode 100644 index 0000000..e3b10a4 --- /dev/null +++ b/intelliaide/vendor/defusedxml/pulldom.py @@ -0,0 +1,41 @@ +# defusedxml +# +# Copyright (c) 2013 by Christian Heimes +# Licensed to PSF under a Contributor Agreement. +# See https://www.python.org/psf/license for licensing details. +"""Defused xml.dom.pulldom +""" +from __future__ import print_function, absolute_import + +from xml.dom.pulldom import parse as _parse +from xml.dom.pulldom import parseString as _parseString +from .sax import make_parser + +__origin__ = "xml.dom.pulldom" + + +def parse( + stream_or_string, + parser=None, + bufsize=None, + forbid_dtd=False, + forbid_entities=True, + forbid_external=True, +): + if parser is None: + parser = make_parser() + parser.forbid_dtd = forbid_dtd + parser.forbid_entities = forbid_entities + parser.forbid_external = forbid_external + return _parse(stream_or_string, parser, bufsize) + + +def parseString( + string, parser=None, forbid_dtd=False, forbid_entities=True, forbid_external=True +): + if parser is None: + parser = make_parser() + parser.forbid_dtd = forbid_dtd + parser.forbid_entities = forbid_entities + parser.forbid_external = forbid_external + return _parseString(string, parser) diff --git a/intelliaide/vendor/defusedxml/sax.py b/intelliaide/vendor/defusedxml/sax.py new file mode 100644 index 0000000..b2786f7 --- /dev/null +++ b/intelliaide/vendor/defusedxml/sax.py @@ -0,0 +1,60 @@ +# defusedxml +# +# Copyright (c) 2013 by Christian Heimes +# Licensed to PSF under a Contributor Agreement. +# See https://www.python.org/psf/license for licensing details. +"""Defused xml.sax +""" +from __future__ import print_function, absolute_import + +from xml.sax import InputSource as _InputSource +from xml.sax import ErrorHandler as _ErrorHandler + +from . import expatreader + +__origin__ = "xml.sax" + + +def parse( + source, + handler, + errorHandler=_ErrorHandler(), + forbid_dtd=False, + forbid_entities=True, + forbid_external=True, +): + parser = make_parser() + parser.setContentHandler(handler) + parser.setErrorHandler(errorHandler) + parser.forbid_dtd = forbid_dtd + parser.forbid_entities = forbid_entities + parser.forbid_external = forbid_external + parser.parse(source) + + +def parseString( + string, + handler, + errorHandler=_ErrorHandler(), + forbid_dtd=False, + forbid_entities=True, + forbid_external=True, +): + from io import BytesIO + + if errorHandler is None: + errorHandler = _ErrorHandler() + parser = make_parser() + parser.setContentHandler(handler) + parser.setErrorHandler(errorHandler) + parser.forbid_dtd = forbid_dtd + parser.forbid_entities = forbid_entities + parser.forbid_external = forbid_external + + inpsrc = _InputSource() + inpsrc.setByteStream(BytesIO(string)) + parser.parse(inpsrc) + + +def make_parser(parser_list=[]): + return expatreader.create_parser() diff --git a/intelliaide/vendor/defusedxml/xmlrpc.py b/intelliaide/vendor/defusedxml/xmlrpc.py new file mode 100644 index 0000000..fbc674d --- /dev/null +++ b/intelliaide/vendor/defusedxml/xmlrpc.py @@ -0,0 +1,153 @@ +# defusedxml +# +# Copyright (c) 2013 by Christian Heimes +# Licensed to PSF under a Contributor Agreement. +# See https://www.python.org/psf/license for licensing details. +"""Defused xmlrpclib + +Also defuses gzip bomb +""" +from __future__ import print_function, absolute_import + +import io + +from .common import DTDForbidden, EntitiesForbidden, ExternalReferenceForbidden, PY3 + +if PY3: + __origin__ = "xmlrpc.client" + from xmlrpc.client import ExpatParser + from xmlrpc import client as xmlrpc_client + from xmlrpc import server as xmlrpc_server + from xmlrpc.client import gzip_decode as _orig_gzip_decode + from xmlrpc.client import GzipDecodedResponse as _OrigGzipDecodedResponse +else: + __origin__ = "xmlrpclib" + from xmlrpclib import ExpatParser + import xmlrpclib as xmlrpc_client + + xmlrpc_server = None + from xmlrpclib import gzip_decode as _orig_gzip_decode + from xmlrpclib import GzipDecodedResponse as _OrigGzipDecodedResponse + +try: + import gzip +except ImportError: # pragma: no cover + gzip = None + + +# Limit maximum request size to prevent resource exhaustion DoS +# Also used to limit maximum amount of gzip decoded data in order to prevent +# decompression bombs +# A value of -1 or smaller disables the limit +MAX_DATA = 30 * 1024 * 1024 # 30 MB + + +def defused_gzip_decode(data, limit=None): + """gzip encoded data -> unencoded data + + Decode data using the gzip content encoding as described in RFC 1952 + """ + if not gzip: # pragma: no cover + raise NotImplementedError + if limit is None: + limit = MAX_DATA + f = io.BytesIO(data) + gzf = gzip.GzipFile(mode="rb", fileobj=f) + try: + if limit < 0: # no limit + decoded = gzf.read() + else: + decoded = gzf.read(limit + 1) + except IOError: # pragma: no cover + raise ValueError("invalid data") + f.close() + gzf.close() + if limit >= 0 and len(decoded) > limit: + raise ValueError("max gzipped payload length exceeded") + return decoded + + +class DefusedGzipDecodedResponse(gzip.GzipFile if gzip else object): + """a file-like object to decode a response encoded with the gzip + method, as described in RFC 1952. + """ + + def __init__(self, response, limit=None): + # response doesn't support tell() and read(), required by + # GzipFile + if not gzip: # pragma: no cover + raise NotImplementedError + self.limit = limit = limit if limit is not None else MAX_DATA + if limit < 0: # no limit + data = response.read() + self.readlength = None + else: + data = response.read(limit + 1) + self.readlength = 0 + if limit >= 0 and len(data) > limit: + raise ValueError("max payload length exceeded") + self.stringio = io.BytesIO(data) + gzip.GzipFile.__init__(self, mode="rb", fileobj=self.stringio) + + def read(self, n): + if self.limit >= 0: + left = self.limit - self.readlength + n = min(n, left + 1) + data = gzip.GzipFile.read(self, n) + self.readlength += len(data) + if self.readlength > self.limit: + raise ValueError("max payload length exceeded") + return data + else: + return gzip.GzipFile.read(self, n) + + def close(self): + gzip.GzipFile.close(self) + self.stringio.close() + + +class DefusedExpatParser(ExpatParser): + def __init__(self, target, forbid_dtd=False, forbid_entities=True, forbid_external=True): + ExpatParser.__init__(self, target) + self.forbid_dtd = forbid_dtd + self.forbid_entities = forbid_entities + self.forbid_external = forbid_external + parser = self._parser + if self.forbid_dtd: + parser.StartDoctypeDeclHandler = self.defused_start_doctype_decl + if self.forbid_entities: + parser.EntityDeclHandler = self.defused_entity_decl + parser.UnparsedEntityDeclHandler = self.defused_unparsed_entity_decl + if self.forbid_external: + parser.ExternalEntityRefHandler = self.defused_external_entity_ref_handler + + def defused_start_doctype_decl(self, name, sysid, pubid, has_internal_subset): + raise DTDForbidden(name, sysid, pubid) + + def defused_entity_decl( + self, name, is_parameter_entity, value, base, sysid, pubid, notation_name + ): + raise EntitiesForbidden(name, value, base, sysid, pubid, notation_name) + + def defused_unparsed_entity_decl(self, name, base, sysid, pubid, notation_name): + # expat 1.2 + raise EntitiesForbidden(name, None, base, sysid, pubid, notation_name) # pragma: no cover + + def defused_external_entity_ref_handler(self, context, base, sysid, pubid): + raise ExternalReferenceForbidden(context, base, sysid, pubid) + + +def monkey_patch(): + xmlrpc_client.FastParser = DefusedExpatParser + xmlrpc_client.GzipDecodedResponse = DefusedGzipDecodedResponse + xmlrpc_client.gzip_decode = defused_gzip_decode + if xmlrpc_server: + xmlrpc_server.gzip_decode = defused_gzip_decode + + +def unmonkey_patch(): + xmlrpc_client.FastParser = None + xmlrpc_client.GzipDecodedResponse = _OrigGzipDecodedResponse + xmlrpc_client.gzip_decode = _orig_gzip_decode + if xmlrpc_server: + xmlrpc_server.gzip_decode = _orig_gzip_decode diff --git a/intelliaide/vendor/docx/__init__.py b/intelliaide/vendor/docx/__init__.py new file mode 100644 index 0000000..fd06c84 --- /dev/null +++ b/intelliaide/vendor/docx/__init__.py @@ -0,0 +1,65 @@ +"""Initialize `docx` package. + +Export the `Document` constructor function and establish the mapping of part-type to +the part-classe that implements that type. +""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Type + +from docx.api import Document + +if TYPE_CHECKING: + from docx.opc.part import Part + +__version__ = "1.2.0" + + +__all__ = ["Document"] + + +# -- register custom Part classes with opc package reader -- + +from docx.opc.constants import CONTENT_TYPE as CT +from docx.opc.constants import RELATIONSHIP_TYPE as RT +from docx.opc.part import PartFactory +from docx.opc.parts.coreprops import CorePropertiesPart +from docx.parts.comments import CommentsPart +from docx.parts.document import DocumentPart +from docx.parts.hdrftr import FooterPart, HeaderPart +from docx.parts.image import ImagePart +from docx.parts.numbering import NumberingPart +from docx.parts.settings import SettingsPart +from docx.parts.styles import StylesPart + + +def part_class_selector(content_type: str, reltype: str) -> Type[Part] | None: + if reltype == RT.IMAGE: + return ImagePart + return None + + +PartFactory.part_class_selector = part_class_selector +PartFactory.part_type_for[CT.OPC_CORE_PROPERTIES] = CorePropertiesPart +PartFactory.part_type_for[CT.WML_COMMENTS] = CommentsPart +PartFactory.part_type_for[CT.WML_DOCUMENT_MAIN] = DocumentPart +PartFactory.part_type_for[CT.WML_FOOTER] = FooterPart +PartFactory.part_type_for[CT.WML_HEADER] = HeaderPart +PartFactory.part_type_for[CT.WML_NUMBERING] = NumberingPart +PartFactory.part_type_for[CT.WML_SETTINGS] = SettingsPart +PartFactory.part_type_for[CT.WML_STYLES] = StylesPart + +del ( + CT, + CorePropertiesPart, + CommentsPart, + DocumentPart, + FooterPart, + HeaderPart, + NumberingPart, + PartFactory, + SettingsPart, + StylesPart, + part_class_selector, +) diff --git a/intelliaide/vendor/docx/api.py b/intelliaide/vendor/docx/api.py new file mode 100644 index 0000000..aea8764 --- /dev/null +++ b/intelliaide/vendor/docx/api.py @@ -0,0 +1,37 @@ +"""Directly exposed API functions and classes, :func:`Document` for now. + +Provides a syntactically more convenient API for interacting with the OpcPackage graph. +""" + +from __future__ import annotations + +import os +from typing import IO, TYPE_CHECKING, cast + +from docx.opc.constants import CONTENT_TYPE as CT +from docx.package import Package + +if TYPE_CHECKING: + from docx.document import Document as DocumentObject + from docx.parts.document import DocumentPart + + +def Document(docx: str | IO[bytes] | None = None) -> DocumentObject: + """Return a |Document| object loaded from `docx`, where `docx` can be either a path + to a ``.docx`` file (a string) or a file-like object. + + If `docx` is missing or ``None``, the built-in default document "template" is + loaded. + """ + docx = _default_docx_path() if docx is None else docx + document_part = cast("DocumentPart", Package.open(docx).main_document_part) + if document_part.content_type != CT.WML_DOCUMENT_MAIN: + tmpl = "file '%s' is not a Word file, content type is '%s'" + raise ValueError(tmpl % (docx, document_part.content_type)) + return document_part.document + + +def _default_docx_path(): + """Return the path to the built-in default .docx package.""" + _thisdir = os.path.split(__file__)[0] + return os.path.join(_thisdir, "templates", "default.docx") diff --git a/intelliaide/vendor/docx/blkcntnr.py b/intelliaide/vendor/docx/blkcntnr.py new file mode 100644 index 0000000..82c7ef7 --- /dev/null +++ b/intelliaide/vendor/docx/blkcntnr.py @@ -0,0 +1,101 @@ +# pyright: reportImportCycles=false + +"""Block item container, used by body, cell, header, etc. + +Block level items are things like paragraph and table, although there are a few other +specialized ones like structured document tags. +""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Iterator + +from typing_extensions import TypeAlias + +from docx.oxml.table import CT_Tbl +from docx.oxml.text.paragraph import CT_P +from docx.shared import StoryChild +from docx.text.paragraph import Paragraph + +if TYPE_CHECKING: + import docx.types as t + from docx.oxml.comments import CT_Comment + from docx.oxml.document import CT_Body + from docx.oxml.section import CT_HdrFtr + from docx.oxml.table import CT_Tc + from docx.shared import Length + from docx.styles.style import ParagraphStyle + from docx.table import Table + +BlockItemElement: TypeAlias = "CT_Body | CT_Comment | CT_HdrFtr | CT_Tc" + + +class BlockItemContainer(StoryChild): + """Base class for proxy objects that can contain block items. + + These containers include _Body, _Cell, header, footer, footnote, endnote, comment, + and text box objects. Provides the shared functionality to add a block item like a + paragraph or table. + """ + + def __init__(self, element: BlockItemElement, parent: t.ProvidesStoryPart): + super(BlockItemContainer, self).__init__(parent) + self._element = element + + def add_paragraph(self, text: str = "", style: str | ParagraphStyle | None = None) -> Paragraph: + """Return paragraph newly added to the end of the content in this container. + + The paragraph has `text` in a single run if present, and is given paragraph + style `style`. + + If `style` is |None|, no paragraph style is applied, which has the same effect + as applying the 'Normal' style. + """ + paragraph = self._add_paragraph() + if text: + paragraph.add_run(text) + if style is not None: + paragraph.style = style + return paragraph + + def add_table(self, rows: int, cols: int, width: Length) -> Table: + """Return table of `width` having `rows` rows and `cols` columns. + + The table is appended appended at the end of the content in this container. + + `width` is evenly distributed between the table columns. + """ + from docx.table import Table + + tbl = CT_Tbl.new_tbl(rows, cols, width) + self._element._insert_tbl(tbl) # pyright: ignore[reportPrivateUsage] + return Table(tbl, self) + + def iter_inner_content(self) -> Iterator[Paragraph | Table]: + """Generate each `Paragraph` or `Table` in this container in document order.""" + from docx.table import Table + + for element in self._element.inner_content_elements: + yield (Paragraph(element, self) if isinstance(element, CT_P) else Table(element, self)) + + @property + def paragraphs(self): + """A list containing the paragraphs in this container, in document order. + + Read-only. + """ + return [Paragraph(p, self) for p in self._element.p_lst] + + @property + def tables(self): + """A list containing the tables in this container, in document order. + + Read-only. + """ + from docx.table import Table + + return [Table(tbl, self) for tbl in self._element.tbl_lst] + + def _add_paragraph(self): + """Return paragraph newly added to the end of the content in this container.""" + return Paragraph(self._element.add_p(), self) diff --git a/intelliaide/vendor/docx/comments.py b/intelliaide/vendor/docx/comments.py new file mode 100644 index 0000000..8ea1952 --- /dev/null +++ b/intelliaide/vendor/docx/comments.py @@ -0,0 +1,163 @@ +"""Collection providing access to comments added to this document.""" + +from __future__ import annotations + +import datetime as dt +from typing import TYPE_CHECKING, Iterator + +from docx.blkcntnr import BlockItemContainer + +if TYPE_CHECKING: + from docx.oxml.comments import CT_Comment, CT_Comments + from docx.parts.comments import CommentsPart + from docx.styles.style import ParagraphStyle + from docx.text.paragraph import Paragraph + + +class Comments: + """Collection containing the comments added to this document.""" + + def __init__(self, comments_elm: CT_Comments, comments_part: CommentsPart): + self._comments_elm = comments_elm + self._comments_part = comments_part + + def __iter__(self) -> Iterator[Comment]: + """Iterator over the comments in this collection.""" + return ( + Comment(comment_elm, self._comments_part) + for comment_elm in self._comments_elm.comment_lst + ) + + def __len__(self) -> int: + """The number of comments in this collection.""" + return len(self._comments_elm.comment_lst) + + def add_comment(self, text: str = "", author: str = "", initials: str | None = "") -> Comment: + """Add a new comment to the document and return it. + + The comment is added to the end of the comments collection and is assigned a unique + comment-id. + + If `text` is provided, it is added to the comment. This option provides for the common + case where a comment contains a modest passage of plain text. Multiple paragraphs can be + added using the `text` argument by separating their text with newlines (`"\\\\n"`). + Between newlines, text is interpreted as it is in `Document.add_paragraph(text=...)`. + + The default is to place a single empty paragraph in the comment, which is the same + behavior as the Word UI when you add a comment. New runs can be added to the first + paragraph in the empty comment with `comments.paragraphs[0].add_run()` to adding more + complex text with emphasis or images. Additional paragraphs can be added using + `.add_paragraph()`. + + `author` is a required attribute, set to the empty string by default. + + `initials` is an optional attribute, set to the empty string by default. Passing |None| + for the `initials` parameter causes that attribute to be omitted from the XML. + """ + comment_elm = self._comments_elm.add_comment() + comment_elm.author = author + comment_elm.initials = initials + comment_elm.date = dt.datetime.now(dt.timezone.utc) + comment = Comment(comment_elm, self._comments_part) + + if text == "": + return comment + + para_text_iter = iter(text.split("\n")) + + first_para_text = next(para_text_iter) + first_para = comment.paragraphs[0] + first_para.add_run(first_para_text) + + for s in para_text_iter: + comment.add_paragraph(text=s) + + return comment + + def get(self, comment_id: int) -> Comment | None: + """Return the comment identified by `comment_id`, or |None| if not found.""" + comment_elm = self._comments_elm.get_comment_by_id(comment_id) + return Comment(comment_elm, self._comments_part) if comment_elm is not None else None + + +class Comment(BlockItemContainer): + """Proxy for a single comment in the document. + + Provides methods to access comment metadata such as author, initials, and date. + + A comment is also a block-item container, similar to a table cell, so it can contain both + paragraphs and tables and its paragraphs can contain rich text, hyperlinks and images, + although the common case is that a comment contains a single paragraph of plain text like a + sentence or phrase. + + Note that certain content like tables may not be displayed in the Word comment sidebar due to + space limitations. Such "over-sized" content can still be viewed in the review pane. + """ + + def __init__(self, comment_elm: CT_Comment, comments_part: CommentsPart): + super().__init__(comment_elm, comments_part) + self._comment_elm = comment_elm + + def add_paragraph(self, text: str = "", style: str | ParagraphStyle | None = None) -> Paragraph: + """Return paragraph newly added to the end of the content in this container. + + The paragraph has `text` in a single run if present, and is given paragraph style `style`. + When `style` is |None| or ommitted, the "CommentText" paragraph style is applied, which is + the default style for comments. + """ + paragraph = super().add_paragraph(text, style) + + # -- have to assign style directly to element because `paragraph.style` raises when + # -- a style is not present in the styles part + if style is None: + paragraph._p.style = "CommentText" # pyright: ignore[reportPrivateUsage] + + return paragraph + + @property + def author(self) -> str: + """Read/write. The recorded author of this comment. + + This field is required but can be set to the empty string. + """ + return self._comment_elm.author + + @author.setter + def author(self, value: str): + self._comment_elm.author = value + + @property + def comment_id(self) -> int: + """The unique identifier of this comment.""" + return self._comment_elm.id + + @property + def initials(self) -> str | None: + """Read/write. The recorded initials of the comment author. + + This attribute is optional in the XML, returns |None| if not set. Assigning |None| removes + any existing initials from the XML. + """ + return self._comment_elm.initials + + @initials.setter + def initials(self, value: str | None): + self._comment_elm.initials = value + + @property + def text(self) -> str: + """The text content of this comment as a string. + + Only content in paragraphs is included and of course all emphasis and styling is stripped. + + Paragraph boundaries are indicated with a newline (`"\\\\n"`) + """ + return "\n".join(p.text for p in self.paragraphs) + + @property + def timestamp(self) -> dt.datetime | None: + """The date and time this comment was authored. + + This attribute is optional in the XML, returns |None| if not set. + """ + return self._comment_elm.date diff --git a/intelliaide/vendor/docx/dml/__init__.py b/intelliaide/vendor/docx/dml/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/intelliaide/vendor/docx/dml/color.py b/intelliaide/vendor/docx/dml/color.py new file mode 100644 index 0000000..a8322d2 --- /dev/null +++ b/intelliaide/vendor/docx/dml/color.py @@ -0,0 +1,112 @@ +"""DrawingML objects related to color, ColorFormat being the most prominent.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, cast + +from typing_extensions import TypeAlias + +from docx.enum.dml import MSO_COLOR_TYPE +from docx.oxml.simpletypes import ST_HexColorAuto +from docx.shared import ElementProxy, RGBColor + +if TYPE_CHECKING: + from docx.enum.dml import MSO_THEME_COLOR + from docx.oxml.text.font import CT_Color + from docx.oxml.text.run import CT_R + +# -- other element types can be a parent of an `w:rPr` element, but for now only `w:r` is -- +RPrParent: TypeAlias = "CT_R" + + +class ColorFormat(ElementProxy): + """Provides access to color settings like RGB color, theme color, and luminance adjustments.""" + + def __init__(self, rPr_parent: RPrParent): + super(ColorFormat, self).__init__(rPr_parent) + self._element = rPr_parent + + @property + def rgb(self) -> RGBColor | None: + """An |RGBColor| value or |None| if no RGB color is specified. + + When :attr:`type` is `MSO_COLOR_TYPE.RGB`, the value of this property will always be an + |RGBColor| value. It may also be an |RGBColor| value if :attr:`type` is + `MSO_COLOR_TYPE.THEME`, as Word writes the current value of a theme color when one is + assigned. In that case, the RGB value should be interpreted as no more than a good guess + however, as the theme color takes precedence at rendering time. Its value is |None| + whenever :attr:`type` is either |None| or `MSO_COLOR_TYPE.AUTO`. + + Assigning an |RGBColor| value causes :attr:`type` to become `MSO_COLOR_TYPE.RGB` and any + theme color is removed. Assigning |None| causes any color to be removed such that the + effective color is inherited from the style hierarchy. + """ + color = self._color + if color is None: + return None + if color.val == ST_HexColorAuto.AUTO: + return None + return cast(RGBColor, color.val) + + @rgb.setter + def rgb(self, value: RGBColor | None): + if value is None and self._color is None: + return + rPr = self._element.get_or_add_rPr() + rPr._remove_color() # pyright: ignore[reportPrivateUsage] + if value is not None: + rPr.get_or_add_color().val = value + + @property + def theme_color(self) -> MSO_THEME_COLOR | None: + """Member of :ref:`MsoThemeColorIndex` or |None| if no theme color is specified. + + When :attr:`type` is `MSO_COLOR_TYPE.THEME`, the value of this property will always be a + member of :ref:`MsoThemeColorIndex`. When :attr:`type` has any other value, the value of + this property is |None|. + + Assigning a member of :ref:`MsoThemeColorIndex` causes :attr:`type` to become + `MSO_COLOR_TYPE.THEME`. Any existing RGB value is retained but ignored by Word. Assigning + |None| causes any color specification to be removed such that the effective color is + inherited from the style hierarchy. + """ + color = self._color + if color is None: + return None + return color.themeColor + + @theme_color.setter + def theme_color(self, value: MSO_THEME_COLOR | None): + if value is None: + if self._color is not None and self._element.rPr is not None: + self._element.rPr._remove_color() # pyright: ignore[reportPrivateUsage] + return + self._element.get_or_add_rPr().get_or_add_color().themeColor = value + + @property + def type(self) -> MSO_COLOR_TYPE | None: + """Read-only. + + A member of :ref:`MsoColorType`, one of RGB, THEME, or AUTO, corresponding to the way this + color is defined. Its value is |None| if no color is applied at this level, which causes + the effective color to be inherited from the style hierarchy. + """ + color = self._color + if color is None: + return None + if color.themeColor is not None: + return MSO_COLOR_TYPE.THEME + if color.val == ST_HexColorAuto.AUTO: + return MSO_COLOR_TYPE.AUTO + return MSO_COLOR_TYPE.RGB + + @property + def _color(self) -> CT_Color | None: + """Return `w:rPr/w:color` or |None| if not present. + + Helper to factor out repetitive element access. + """ + rPr = self._element.rPr + if rPr is None: + return None + return rPr.color diff --git a/intelliaide/vendor/docx/document.py b/intelliaide/vendor/docx/document.py new file mode 100644 index 0000000..73757b4 --- /dev/null +++ b/intelliaide/vendor/docx/document.py @@ -0,0 +1,265 @@ +# pyright: reportImportCycles=false +# pyright: reportPrivateUsage=false + +"""|Document| and closely related objects.""" + +from __future__ import annotations + +from typing import IO, TYPE_CHECKING, Iterator, List, Sequence + +from docx.blkcntnr import BlockItemContainer +from docx.enum.section import WD_SECTION +from docx.enum.text import WD_BREAK +from docx.section import Section, Sections +from docx.shared import ElementProxy, Emu, Inches, Length +from docx.text.run import Run + +if TYPE_CHECKING: + import docx.types as t + from docx.comments import Comment, Comments + from docx.oxml.document import CT_Body, CT_Document + from docx.parts.document import DocumentPart + from docx.settings import Settings + from docx.styles.style import ParagraphStyle, _TableStyle + from docx.table import Table + from docx.text.paragraph import Paragraph + + +class Document(ElementProxy): + """WordprocessingML (WML) document. + + Not intended to be constructed directly. Use :func:`docx.Document` to open or create + a document. + """ + + def __init__(self, element: CT_Document, part: DocumentPart): + super(Document, self).__init__(element) + self._element = element + self._part = part + self.__body = None + + def add_comment( + self, + runs: Run | Sequence[Run], + text: str | None = "", + author: str = "", + initials: str | None = "", + ) -> Comment: + """Add a comment to the document, anchored to the specified runs. + + `runs` can be a single `Run` object or a non-empty sequence of `Run` objects. Only the + first and last run of a sequence are used, it's just more convenient to pass a whole + sequence when that's what you have handy, like `paragraph.runs` for example. When `runs` + contains a single `Run` object, that run serves as both the first and last run. + + A comment can be anchored only on an even run boundary, meaning the text the comment + "references" must be a non-zero integer number of consecutive runs. The runs need not be + _contiguous_ per se, like the first can be in one paragraph and the last in the next + paragraph, but all runs between the first and the last will be included in the reference. + + The comment reference range is delimited by placing a `w:commentRangeStart` element before + the first run and a `w:commentRangeEnd` element after the last run. This is why only the + first and last run are required and why a single run can serve as both first and last. + Word works out which text to highlight in the UI based on these range markers. + + `text` allows the contents of a simple comment to be provided in the call, providing for + the common case where a comment is a single phrase or sentence without special formatting + such as bold or italics. More complex comments can be added using the returned `Comment` + object in much the same way as a `Document` or (table) `Cell` object, using methods like + `.add_paragraph()`, .add_run()`, etc. + + The `author` and `initials` parameters allow that metadata to be set for the comment. + `author` is a required attribute on a comment and is the empty string by default. + `initials` is optional on a comment and may be omitted by passing |None|, but Word adds an + `initials` attribute by default and we follow that convention by using the empty string + when no `initials` argument is provided. + """ + # -- normalize `runs` to a sequence of runs -- + runs = [runs] if isinstance(runs, Run) else runs + first_run = runs[0] + last_run = runs[-1] + + # -- Note that comments can only appear in the document part -- + comment = self.comments.add_comment(text=text, author=author, initials=initials) + + # -- let the first run orchestrate placement of the comment range start and end -- + first_run.mark_comment_range(last_run, comment.comment_id) + + return comment + + def add_heading(self, text: str = "", level: int = 1): + """Return a heading paragraph newly added to the end of the document. + + The heading paragraph will contain `text` and have its paragraph style + determined by `level`. If `level` is 0, the style is set to `Title`. If `level` + is 1 (or omitted), `Heading 1` is used. Otherwise the style is set to `Heading + {level}`. Raises |ValueError| if `level` is outside the range 0-9. + """ + if not 0 <= level <= 9: + raise ValueError("level must be in range 0-9, got %d" % level) + style = "Title" if level == 0 else "Heading %d" % level + return self.add_paragraph(text, style) + + def add_page_break(self): + """Return newly |Paragraph| object containing only a page break.""" + paragraph = self.add_paragraph() + paragraph.add_run().add_break(WD_BREAK.PAGE) + return paragraph + + def add_paragraph(self, text: str = "", style: str | ParagraphStyle | None = None) -> Paragraph: + """Return paragraph newly added to the end of the document. + + The paragraph is populated with `text` and having paragraph style `style`. + + `text` can contain tab (``\\t``) characters, which are converted to the + appropriate XML form for a tab. `text` can also include newline (``\\n``) or + carriage return (``\\r``) characters, each of which is converted to a line + break. + """ + return self._body.add_paragraph(text, style) + + def add_picture( + self, + image_path_or_stream: str | IO[bytes], + width: int | Length | None = None, + height: int | Length | None = None, + ): + """Return new picture shape added in its own paragraph at end of the document. + + The picture contains the image at `image_path_or_stream`, scaled based on + `width` and `height`. If neither width nor height is specified, the picture + appears at its native size. If only one is specified, it is used to compute a + scaling factor that is then applied to the unspecified dimension, preserving the + aspect ratio of the image. The native size of the picture is calculated using + the dots-per-inch (dpi) value specified in the image file, defaulting to 72 dpi + if no value is specified, as is often the case. + """ + run = self.add_paragraph().add_run() + return run.add_picture(image_path_or_stream, width, height) + + def add_section(self, start_type: WD_SECTION = WD_SECTION.NEW_PAGE): + """Return a |Section| object newly added at the end of the document. + + The optional `start_type` argument must be a member of the :ref:`WdSectionStart` + enumeration, and defaults to ``WD_SECTION.NEW_PAGE`` if not provided. + """ + new_sectPr = self._element.body.add_section_break() + new_sectPr.start_type = start_type + return Section(new_sectPr, self._part) + + def add_table(self, rows: int, cols: int, style: str | _TableStyle | None = None): + """Add a table having row and column counts of `rows` and `cols` respectively. + + `style` may be a table style object or a table style name. If `style` is |None|, + the table inherits the default table style of the document. + """ + table = self._body.add_table(rows, cols, self._block_width) + table.style = style + return table + + @property + def comments(self) -> Comments: + """A |Comments| object providing access to comments added to the document.""" + return self._part.comments + + @property + def core_properties(self): + """A |CoreProperties| object providing Dublin Core properties of document.""" + return self._part.core_properties + + @property + def inline_shapes(self): + """The |InlineShapes| collection for this document. + + An inline shape is a graphical object, such as a picture, contained in a run of + text and behaving like a character glyph, being flowed like other text in a + paragraph. + """ + return self._part.inline_shapes + + def iter_inner_content(self) -> Iterator[Paragraph | Table]: + """Generate each `Paragraph` or `Table` in this document in document order.""" + return self._body.iter_inner_content() + + @property + def paragraphs(self) -> List[Paragraph]: + """The |Paragraph| instances in the document, in document order. + + Note that paragraphs within revision marks such as ```` or ```` do + not appear in this list. + """ + return self._body.paragraphs + + @property + def part(self) -> DocumentPart: + """The |DocumentPart| object of this document.""" + return self._part + + def save(self, path_or_stream: str | IO[bytes]): + """Save this document to `path_or_stream`. + + `path_or_stream` can be either a path to a filesystem location (a string) or a + file-like object. + """ + self._part.save(path_or_stream) + + @property + def sections(self) -> Sections: + """|Sections| object providing access to each section in this document.""" + return Sections(self._element, self._part) + + @property + def settings(self) -> Settings: + """A |Settings| object providing access to the document-level settings.""" + return self._part.settings + + @property + def styles(self): + """A |Styles| object providing access to the styles in this document.""" + return self._part.styles + + @property + def tables(self) -> List[Table]: + """All |Table| instances in the document, in document order. + + Note that only tables appearing at the top level of the document appear in this + list; a table nested inside a table cell does not appear. A table within + revision marks such as ```` or ```` will also not appear in the + list. + """ + return self._body.tables + + @property + def _block_width(self) -> Length: + """A |Length| object specifying the space between margins in last section.""" + section = self.sections[-1] + page_width = section.page_width or Inches(8.5) + left_margin = section.left_margin or Inches(1) + right_margin = section.right_margin or Inches(1) + return Emu(page_width - left_margin - right_margin) + + @property + def _body(self) -> _Body: + """The |_Body| instance containing the content for this document.""" + if self.__body is None: + self.__body = _Body(self._element.body, self) + return self.__body + + +class _Body(BlockItemContainer): + """Proxy for `` element in this document. + + It's primary role is a container for document content. + """ + + def __init__(self, body_elm: CT_Body, parent: t.ProvidesStoryPart): + super(_Body, self).__init__(body_elm, parent) + self._body = body_elm + + def clear_content(self) -> _Body: + """Return this |_Body| instance after clearing it of all content. + + Section properties for the main document story, if present, are preserved. + """ + self._body.clear_content() + return self diff --git a/intelliaide/vendor/docx/drawing/__init__.py b/intelliaide/vendor/docx/drawing/__init__.py new file mode 100644 index 0000000..00d1f51 --- /dev/null +++ b/intelliaide/vendor/docx/drawing/__init__.py @@ -0,0 +1,59 @@ +"""DrawingML-related objects are in this subpackage.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING + +from docx.oxml.drawing import CT_Drawing +from docx.shared import Parented + +if TYPE_CHECKING: + import docx.types as t + from docx.image.image import Image + + +class Drawing(Parented): + """Container for a DrawingML object.""" + + def __init__(self, drawing: CT_Drawing, parent: t.ProvidesStoryPart): + super().__init__(parent) + self._parent = parent + self._drawing = self._element = drawing + + @property + def has_picture(self) -> bool: + """True when `drawing` contains an embedded picture. + + A drawing can contain a picture, but it can also contain a chart, SmartArt, or a + drawing canvas. Methods related to a picture, like `.image`, will raise when the drawing + does not contain a picture. Use this value to determine whether image methods will succeed. + + This value is `False` when a linked picture is present. This should be relatively rare and + the image would only be retrievable from the filesystem. + + Note this does not distinguish between inline and floating images. The presence of either + one will cause this value to be `True`. + """ + xpath_expr = ( + # -- an inline picture -- + "./wp:inline/a:graphic/a:graphicData/pic:pic" + # -- a floating picture -- + " | ./wp:anchor/a:graphic/a:graphicData/pic:pic" + ) + # -- xpath() will return a list, empty if there are no matches -- + return bool(self._drawing.xpath(xpath_expr)) + + @property + def image(self) -> Image: + """An `Image` proxy object for the image in this (picture) drawing. + + Raises `ValueError` when this drawing does contains something other than a picture. Use + `.has_picture` to qualify drawing objects before using this property. + """ + picture_rIds = self._drawing.xpath(".//pic:blipFill/a:blip/@r:embed") + if not picture_rIds: + raise ValueError("drawing does not contain a picture") + rId = picture_rIds[0] + doc_part = self.part + image_part = doc_part.related_parts[rId] + return image_part.image diff --git a/intelliaide/vendor/docx/enum/__init__.py b/intelliaide/vendor/docx/enum/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/intelliaide/vendor/docx/enum/base.py b/intelliaide/vendor/docx/enum/base.py new file mode 100644 index 0000000..66e9897 --- /dev/null +++ b/intelliaide/vendor/docx/enum/base.py @@ -0,0 +1,150 @@ +"""Base classes and other objects used by enumerations.""" + +from __future__ import annotations + +import enum +import textwrap +from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar + +if TYPE_CHECKING: + from typing_extensions import Self + +_T = TypeVar("_T", bound="BaseXmlEnum") + + +class BaseEnum(int, enum.Enum): + """Base class for Enums that do not map XML attr values. + + The enum's value will be an integer, corresponding to the integer assigned the + corresponding member in the MS API enum of the same name. + """ + + def __new__(cls, ms_api_value: int, docstr: str): + self = int.__new__(cls, ms_api_value) + self._value_ = ms_api_value + self.__doc__ = docstr.strip() + return self + + def __str__(self): + """The symbolic name and string value of this member, e.g. 'MIDDLE (3)'.""" + return f"{self.name} ({self.value})" + + +class BaseXmlEnum(int, enum.Enum): + """Base class for Enums that also map XML attr values. + + The enum's value will be an integer, corresponding to the integer assigned the + corresponding member in the MS API enum of the same name. + """ + + xml_value: str | None + + def __new__(cls, ms_api_value: int, xml_value: str | None, docstr: str): + self = int.__new__(cls, ms_api_value) + self._value_ = ms_api_value + self.xml_value = xml_value + self.__doc__ = docstr.strip() + return self + + def __str__(self): + """The symbolic name and string value of this member, e.g. 'MIDDLE (3)'.""" + return f"{self.name} ({self.value})" + + @classmethod + def from_xml(cls, xml_value: str | None) -> Self: + """Enumeration member corresponding to XML attribute value `xml_value`. + + Example:: + + >>> WD_PARAGRAPH_ALIGNMENT.from_xml("center") + WD_PARAGRAPH_ALIGNMENT.CENTER + + """ + member = next((member for member in cls if member.xml_value == xml_value), None) + if member is None: + raise ValueError(f"{cls.__name__} has no XML mapping for '{xml_value}'") + return member + + @classmethod + def to_xml(cls: Type[_T], value: int | _T | None) -> str | None: + """XML value of this enum member, generally an XML attribute value.""" + # -- presence of multi-arg `__new__()` method fools type-checker, but getting a + # -- member by its value using EnumCls(val) works as usual. + member = cls(value) + xml_value = member.xml_value + if not xml_value: + raise ValueError(f"{cls.__name__}.{member.name} has no XML representation") + return xml_value + + +class DocsPageFormatter: + """Generate an .rst doc page for an enumeration. + + Formats a RestructuredText documention page (string) for the enumeration class parts + passed to the constructor. An immutable one-shot service object. + """ + + def __init__(self, clsname: str, clsdict: Dict[str, Any]): + self._clsname = clsname + self._clsdict = clsdict + + @property + def page_str(self): + """The RestructuredText documentation page for the enumeration. + + This is the only API member for the class. + """ + tmpl = ".. _%s:\n\n%s\n\n%s\n\n----\n\n%s" + components = ( + self._ms_name, + self._page_title, + self._intro_text, + self._member_defs, + ) + return tmpl % components + + @property + def _intro_text(self): + """Docstring of the enumeration, formatted for documentation page.""" + try: + cls_docstring = self._clsdict["__doc__"] + except KeyError: + cls_docstring = "" + + if cls_docstring is None: + return "" + + return textwrap.dedent(cls_docstring).strip() + + def _member_def(self, member: BaseEnum | BaseXmlEnum): + """Return an individual member definition formatted as an RST glossary entry, + wrapped to fit within 78 columns.""" + assert member.__doc__ is not None + member_docstring = textwrap.dedent(member.__doc__).strip() + member_docstring = textwrap.fill( + member_docstring, + width=78, + initial_indent=" " * 4, + subsequent_indent=" " * 4, + ) + return "%s\n%s\n" % (member.name, member_docstring) + + @property + def _member_defs(self): + """A single string containing the aggregated member definitions section of the + documentation page.""" + members = self._clsdict["__members__"] + member_defs = [self._member_def(member) for member in members if member.name is not None] + return "\n".join(member_defs) + + @property + def _ms_name(self): + """The Microsoft API name for this enumeration.""" + return self._clsdict["__ms_name__"] + + @property + def _page_title(self): + """The title for the documentation page, formatted as code (surrounded in + double-backtics) and underlined with '=' characters.""" + title_underscore = "=" * (len(self._clsname) + 4) + return "``%s``\n%s" % (self._clsname, title_underscore) diff --git a/intelliaide/vendor/docx/enum/dml.py b/intelliaide/vendor/docx/enum/dml.py new file mode 100644 index 0000000..27c63a2 --- /dev/null +++ b/intelliaide/vendor/docx/enum/dml.py @@ -0,0 +1,103 @@ +"""Enumerations used by DrawingML objects.""" + +from .base import BaseEnum, BaseXmlEnum + + +class MSO_COLOR_TYPE(BaseEnum): + """Specifies the color specification scheme. + + Example:: + + from docx.enum.dml import MSO_COLOR_TYPE + + assert font.color.type == MSO_COLOR_TYPE.SCHEME + + MS API name: `MsoColorType` + + http://msdn.microsoft.com/en-us/library/office/ff864912(v=office.15).aspx + """ + + RGB = (1, "Color is specified by an |RGBColor| value.") + """Color is specified by an |RGBColor| value.""" + + THEME = (2, "Color is one of the preset theme colors.") + """Color is one of the preset theme colors.""" + + AUTO = (101, "Color is determined automatically by the application.") + """Color is determined automatically by the application.""" + + +class MSO_THEME_COLOR_INDEX(BaseXmlEnum): + """Indicates the Office theme color, one of those shown in the color gallery on the + formatting ribbon. + + Alias: ``MSO_THEME_COLOR`` + + Example:: + + from docx.enum.dml import MSO_THEME_COLOR + + font.color.theme_color = MSO_THEME_COLOR.ACCENT_1 + + MS API name: `MsoThemeColorIndex` + + http://msdn.microsoft.com/en-us/library/office/ff860782(v=office.15).aspx + """ + + NOT_THEME_COLOR = (0, "UNMAPPED", "Indicates the color is not a theme color.") + """Indicates the color is not a theme color.""" + + ACCENT_1 = (5, "accent1", "Specifies the Accent 1 theme color.") + """Specifies the Accent 1 theme color.""" + + ACCENT_2 = (6, "accent2", "Specifies the Accent 2 theme color.") + """Specifies the Accent 2 theme color.""" + + ACCENT_3 = (7, "accent3", "Specifies the Accent 3 theme color.") + """Specifies the Accent 3 theme color.""" + + ACCENT_4 = (8, "accent4", "Specifies the Accent 4 theme color.") + """Specifies the Accent 4 theme color.""" + + ACCENT_5 = (9, "accent5", "Specifies the Accent 5 theme color.") + """Specifies the Accent 5 theme color.""" + + ACCENT_6 = (10, "accent6", "Specifies the Accent 6 theme color.") + """Specifies the Accent 6 theme color.""" + + BACKGROUND_1 = (14, "background1", "Specifies the Background 1 theme color.") + """Specifies the Background 1 theme color.""" + + BACKGROUND_2 = (16, "background2", "Specifies the Background 2 theme color.") + """Specifies the Background 2 theme color.""" + + DARK_1 = (1, "dark1", "Specifies the Dark 1 theme color.") + """Specifies the Dark 1 theme color.""" + + DARK_2 = (3, "dark2", "Specifies the Dark 2 theme color.") + """Specifies the Dark 2 theme color.""" + + FOLLOWED_HYPERLINK = ( + 12, + "followedHyperlink", + "Specifies the theme color for a clicked hyperlink.", + ) + """Specifies the theme color for a clicked hyperlink.""" + + HYPERLINK = (11, "hyperlink", "Specifies the theme color for a hyperlink.") + """Specifies the theme color for a hyperlink.""" + + LIGHT_1 = (2, "light1", "Specifies the Light 1 theme color.") + """Specifies the Light 1 theme color.""" + + LIGHT_2 = (4, "light2", "Specifies the Light 2 theme color.") + """Specifies the Light 2 theme color.""" + + TEXT_1 = (13, "text1", "Specifies the Text 1 theme color.") + """Specifies the Text 1 theme color.""" + + TEXT_2 = (15, "text2", "Specifies the Text 2 theme color.") + """Specifies the Text 2 theme color.""" + + +MSO_THEME_COLOR = MSO_THEME_COLOR_INDEX diff --git a/intelliaide/vendor/docx/enum/section.py b/intelliaide/vendor/docx/enum/section.py new file mode 100644 index 0000000..982e191 --- /dev/null +++ b/intelliaide/vendor/docx/enum/section.py @@ -0,0 +1,86 @@ +"""Enumerations related to the main document in WordprocessingML files.""" + +from .base import BaseXmlEnum + + +class WD_HEADER_FOOTER_INDEX(BaseXmlEnum): + """Alias: **WD_HEADER_FOOTER** + + Specifies one of the three possible header/footer definitions for a section. + + For internal use only; not part of the python-docx API. + + MS API name: `WdHeaderFooterIndex` + URL: https://docs.microsoft.com/en-us/office/vba/api/word.wdheaderfooterindex + """ + + PRIMARY = (1, "default", "Header for odd pages or all if no even header.") + """Header for odd pages or all if no even header.""" + + FIRST_PAGE = (2, "first", "Header for first page of section.") + """Header for first page of section.""" + + EVEN_PAGE = (3, "even", "Header for even pages of recto/verso section.") + """Header for even pages of recto/verso section.""" + + +WD_HEADER_FOOTER = WD_HEADER_FOOTER_INDEX + + +class WD_ORIENTATION(BaseXmlEnum): + """Alias: **WD_ORIENT** + + Specifies the page layout orientation. + + Example:: + + from docx.enum.section import WD_ORIENT + + section = document.sections[-1] section.orientation = WD_ORIENT.LANDSCAPE + + MS API name: `WdOrientation` + MS API URL: http://msdn.microsoft.com/en-us/library/office/ff837902.aspx + """ + + PORTRAIT = (0, "portrait", "Portrait orientation.") + """Portrait orientation.""" + + LANDSCAPE = (1, "landscape", "Landscape orientation.") + """Landscape orientation.""" + + +WD_ORIENT = WD_ORIENTATION + + +class WD_SECTION_START(BaseXmlEnum): + """Alias: **WD_SECTION** + + Specifies the start type of a section break. + + Example:: + + from docx.enum.section import WD_SECTION + + section = document.sections[0] section.start_type = WD_SECTION.NEW_PAGE + + MS API name: `WdSectionStart` + MS API URL: http://msdn.microsoft.com/en-us/library/office/ff840975.aspx + """ + + CONTINUOUS = (0, "continuous", "Continuous section break.") + """Continuous section break.""" + + NEW_COLUMN = (1, "nextColumn", "New column section break.") + """New column section break.""" + + NEW_PAGE = (2, "nextPage", "New page section break.") + """New page section break.""" + + EVEN_PAGE = (3, "evenPage", "Even pages section break.") + """Even pages section break.""" + + ODD_PAGE = (4, "oddPage", "Section begins on next odd page.") + """Section begins on next odd page.""" + + +WD_SECTION = WD_SECTION_START diff --git a/intelliaide/vendor/docx/enum/shape.py b/intelliaide/vendor/docx/enum/shape.py new file mode 100644 index 0000000..ed086c3 --- /dev/null +++ b/intelliaide/vendor/docx/enum/shape.py @@ -0,0 +1,19 @@ +"""Enumerations related to DrawingML shapes in WordprocessingML files.""" + +import enum + + +class WD_INLINE_SHAPE_TYPE(enum.Enum): + """Corresponds to WdInlineShapeType enumeration. + + http://msdn.microsoft.com/en-us/library/office/ff192587.aspx. + """ + + CHART = 12 + LINKED_PICTURE = 4 + PICTURE = 3 + SMART_ART = 15 + NOT_IMPLEMENTED = -6 + + +WD_INLINE_SHAPE = WD_INLINE_SHAPE_TYPE diff --git a/intelliaide/vendor/docx/enum/style.py b/intelliaide/vendor/docx/enum/style.py new file mode 100644 index 0000000..d247461 --- /dev/null +++ b/intelliaide/vendor/docx/enum/style.py @@ -0,0 +1,452 @@ +"""Enumerations related to styles.""" + +from .base import BaseEnum, BaseXmlEnum + + +class WD_BUILTIN_STYLE(BaseEnum): + """Alias: **WD_STYLE** + + Specifies a built-in Microsoft Word style. + + Example:: + + from docx import Document + from docx.enum.style import WD_STYLE + + document = Document() + styles = document.styles + style = styles[WD_STYLE.BODY_TEXT] + + + MS API name: `WdBuiltinStyle` + + http://msdn.microsoft.com/en-us/library/office/ff835210.aspx + """ + + BLOCK_QUOTATION = (-85, "Block Text.") + """Block Text.""" + + BODY_TEXT = (-67, "Body Text.") + """Body Text.""" + + BODY_TEXT_2 = (-81, "Body Text 2.") + """Body Text 2.""" + + BODY_TEXT_3 = (-82, "Body Text 3.") + """Body Text 3.""" + + BODY_TEXT_FIRST_INDENT = (-78, "Body Text First Indent.") + """Body Text First Indent.""" + + BODY_TEXT_FIRST_INDENT_2 = (-79, "Body Text First Indent 2.") + """Body Text First Indent 2.""" + + BODY_TEXT_INDENT = (-68, "Body Text Indent.") + """Body Text Indent.""" + + BODY_TEXT_INDENT_2 = (-83, "Body Text Indent 2.") + """Body Text Indent 2.""" + + BODY_TEXT_INDENT_3 = (-84, "Body Text Indent 3.") + """Body Text Indent 3.""" + + BOOK_TITLE = (-265, "Book Title.") + """Book Title.""" + + CAPTION = (-35, "Caption.") + """Caption.""" + + CLOSING = (-64, "Closing.") + """Closing.""" + + COMMENT_REFERENCE = (-40, "Comment Reference.") + """Comment Reference.""" + + COMMENT_TEXT = (-31, "Comment Text.") + """Comment Text.""" + + DATE = (-77, "Date.") + """Date.""" + + DEFAULT_PARAGRAPH_FONT = (-66, "Default Paragraph Font.") + """Default Paragraph Font.""" + + EMPHASIS = (-89, "Emphasis.") + """Emphasis.""" + + ENDNOTE_REFERENCE = (-43, "Endnote Reference.") + """Endnote Reference.""" + + ENDNOTE_TEXT = (-44, "Endnote Text.") + """Endnote Text.""" + + ENVELOPE_ADDRESS = (-37, "Envelope Address.") + """Envelope Address.""" + + ENVELOPE_RETURN = (-38, "Envelope Return.") + """Envelope Return.""" + + FOOTER = (-33, "Footer.") + """Footer.""" + + FOOTNOTE_REFERENCE = (-39, "Footnote Reference.") + """Footnote Reference.""" + + FOOTNOTE_TEXT = (-30, "Footnote Text.") + """Footnote Text.""" + + HEADER = (-32, "Header.") + """Header.""" + + HEADING_1 = (-2, "Heading 1.") + """Heading 1.""" + + HEADING_2 = (-3, "Heading 2.") + """Heading 2.""" + + HEADING_3 = (-4, "Heading 3.") + """Heading 3.""" + + HEADING_4 = (-5, "Heading 4.") + """Heading 4.""" + + HEADING_5 = (-6, "Heading 5.") + """Heading 5.""" + + HEADING_6 = (-7, "Heading 6.") + """Heading 6.""" + + HEADING_7 = (-8, "Heading 7.") + """Heading 7.""" + + HEADING_8 = (-9, "Heading 8.") + """Heading 8.""" + + HEADING_9 = (-10, "Heading 9.") + """Heading 9.""" + + HTML_ACRONYM = (-96, "HTML Acronym.") + """HTML Acronym.""" + + HTML_ADDRESS = (-97, "HTML Address.") + """HTML Address.""" + + HTML_CITE = (-98, "HTML Cite.") + """HTML Cite.""" + + HTML_CODE = (-99, "HTML Code.") + """HTML Code.""" + + HTML_DFN = (-100, "HTML Definition.") + """HTML Definition.""" + + HTML_KBD = (-101, "HTML Keyboard.") + """HTML Keyboard.""" + + HTML_NORMAL = (-95, "Normal (Web).") + """Normal (Web).""" + + HTML_PRE = (-102, "HTML Preformatted.") + """HTML Preformatted.""" + + HTML_SAMP = (-103, "HTML Sample.") + """HTML Sample.""" + + HTML_TT = (-104, "HTML Typewriter.") + """HTML Typewriter.""" + + HTML_VAR = (-105, "HTML Variable.") + """HTML Variable.""" + + HYPERLINK = (-86, "Hyperlink.") + """Hyperlink.""" + + HYPERLINK_FOLLOWED = (-87, "Followed Hyperlink.") + """Followed Hyperlink.""" + + INDEX_1 = (-11, "Index 1.") + """Index 1.""" + + INDEX_2 = (-12, "Index 2.") + """Index 2.""" + + INDEX_3 = (-13, "Index 3.") + """Index 3.""" + + INDEX_4 = (-14, "Index 4.") + """Index 4.""" + + INDEX_5 = (-15, "Index 5.") + """Index 5.""" + + INDEX_6 = (-16, "Index 6.") + """Index 6.""" + + INDEX_7 = (-17, "Index 7.") + """Index 7.""" + + INDEX_8 = (-18, "Index 8.") + """Index 8.""" + + INDEX_9 = (-19, "Index 9.") + """Index 9.""" + + INDEX_HEADING = (-34, "Index Heading") + """Index Heading""" + + INTENSE_EMPHASIS = (-262, "Intense Emphasis.") + """Intense Emphasis.""" + + INTENSE_QUOTE = (-182, "Intense Quote.") + """Intense Quote.""" + + INTENSE_REFERENCE = (-264, "Intense Reference.") + """Intense Reference.""" + + LINE_NUMBER = (-41, "Line Number.") + """Line Number.""" + + LIST = (-48, "List.") + """List.""" + + LIST_2 = (-51, "List 2.") + """List 2.""" + + LIST_3 = (-52, "List 3.") + """List 3.""" + + LIST_4 = (-53, "List 4.") + """List 4.""" + + LIST_5 = (-54, "List 5.") + """List 5.""" + + LIST_BULLET = (-49, "List Bullet.") + """List Bullet.""" + + LIST_BULLET_2 = (-55, "List Bullet 2.") + """List Bullet 2.""" + + LIST_BULLET_3 = (-56, "List Bullet 3.") + """List Bullet 3.""" + + LIST_BULLET_4 = (-57, "List Bullet 4.") + """List Bullet 4.""" + + LIST_BULLET_5 = (-58, "List Bullet 5.") + """List Bullet 5.""" + + LIST_CONTINUE = (-69, "List Continue.") + """List Continue.""" + + LIST_CONTINUE_2 = (-70, "List Continue 2.") + """List Continue 2.""" + + LIST_CONTINUE_3 = (-71, "List Continue 3.") + """List Continue 3.""" + + LIST_CONTINUE_4 = (-72, "List Continue 4.") + """List Continue 4.""" + + LIST_CONTINUE_5 = (-73, "List Continue 5.") + """List Continue 5.""" + + LIST_NUMBER = (-50, "List Number.") + """List Number.""" + + LIST_NUMBER_2 = (-59, "List Number 2.") + """List Number 2.""" + + LIST_NUMBER_3 = (-60, "List Number 3.") + """List Number 3.""" + + LIST_NUMBER_4 = (-61, "List Number 4.") + """List Number 4.""" + + LIST_NUMBER_5 = (-62, "List Number 5.") + """List Number 5.""" + + LIST_PARAGRAPH = (-180, "List Paragraph.") + """List Paragraph.""" + + MACRO_TEXT = (-46, "Macro Text.") + """Macro Text.""" + + MESSAGE_HEADER = (-74, "Message Header.") + """Message Header.""" + + NAV_PANE = (-90, "Document Map.") + """Document Map.""" + + NORMAL = (-1, "Normal.") + """Normal.""" + + NORMAL_INDENT = (-29, "Normal Indent.") + """Normal Indent.""" + + NORMAL_OBJECT = (-158, "Normal (applied to an object).") + """Normal (applied to an object).""" + + NORMAL_TABLE = (-106, "Normal (applied within a table).") + """Normal (applied within a table).""" + + NOTE_HEADING = (-80, "Note Heading.") + """Note Heading.""" + + PAGE_NUMBER = (-42, "Page Number.") + """Page Number.""" + + PLAIN_TEXT = (-91, "Plain Text.") + """Plain Text.""" + + QUOTE = (-181, "Quote.") + """Quote.""" + + SALUTATION = (-76, "Salutation.") + """Salutation.""" + + SIGNATURE = (-65, "Signature.") + """Signature.""" + + STRONG = (-88, "Strong.") + """Strong.""" + + SUBTITLE = (-75, "Subtitle.") + """Subtitle.""" + + SUBTLE_EMPHASIS = (-261, "Subtle Emphasis.") + """Subtle Emphasis.""" + + SUBTLE_REFERENCE = (-263, "Subtle Reference.") + """Subtle Reference.""" + + TABLE_COLORFUL_GRID = (-172, "Colorful Grid.") + """Colorful Grid.""" + + TABLE_COLORFUL_LIST = (-171, "Colorful List.") + """Colorful List.""" + + TABLE_COLORFUL_SHADING = (-170, "Colorful Shading.") + """Colorful Shading.""" + + TABLE_DARK_LIST = (-169, "Dark List.") + """Dark List.""" + + TABLE_LIGHT_GRID = (-161, "Light Grid.") + """Light Grid.""" + + TABLE_LIGHT_GRID_ACCENT_1 = (-175, "Light Grid Accent 1.") + """Light Grid Accent 1.""" + + TABLE_LIGHT_LIST = (-160, "Light List.") + """Light List.""" + + TABLE_LIGHT_LIST_ACCENT_1 = (-174, "Light List Accent 1.") + """Light List Accent 1.""" + + TABLE_LIGHT_SHADING = (-159, "Light Shading.") + """Light Shading.""" + + TABLE_LIGHT_SHADING_ACCENT_1 = (-173, "Light Shading Accent 1.") + """Light Shading Accent 1.""" + + TABLE_MEDIUM_GRID_1 = (-166, "Medium Grid 1.") + """Medium Grid 1.""" + + TABLE_MEDIUM_GRID_2 = (-167, "Medium Grid 2.") + """Medium Grid 2.""" + + TABLE_MEDIUM_GRID_3 = (-168, "Medium Grid 3.") + """Medium Grid 3.""" + + TABLE_MEDIUM_LIST_1 = (-164, "Medium List 1.") + """Medium List 1.""" + + TABLE_MEDIUM_LIST_1_ACCENT_1 = (-178, "Medium List 1 Accent 1.") + """Medium List 1 Accent 1.""" + + TABLE_MEDIUM_LIST_2 = (-165, "Medium List 2.") + """Medium List 2.""" + + TABLE_MEDIUM_SHADING_1 = (-162, "Medium Shading 1.") + """Medium Shading 1.""" + + TABLE_MEDIUM_SHADING_1_ACCENT_1 = (-176, "Medium Shading 1 Accent 1.") + """Medium Shading 1 Accent 1.""" + + TABLE_MEDIUM_SHADING_2 = (-163, "Medium Shading 2.") + """Medium Shading 2.""" + + TABLE_MEDIUM_SHADING_2_ACCENT_1 = (-177, "Medium Shading 2 Accent 1.") + """Medium Shading 2 Accent 1.""" + + TABLE_OF_AUTHORITIES = (-45, "Table of Authorities.") + """Table of Authorities.""" + + TABLE_OF_FIGURES = (-36, "Table of Figures.") + """Table of Figures.""" + + TITLE = (-63, "Title.") + """Title.""" + + TOAHEADING = (-47, "TOA Heading.") + """TOA Heading.""" + + TOC_1 = (-20, "TOC 1.") + """TOC 1.""" + + TOC_2 = (-21, "TOC 2.") + """TOC 2.""" + + TOC_3 = (-22, "TOC 3.") + """TOC 3.""" + + TOC_4 = (-23, "TOC 4.") + """TOC 4.""" + + TOC_5 = (-24, "TOC 5.") + """TOC 5.""" + + TOC_6 = (-25, "TOC 6.") + """TOC 6.""" + + TOC_7 = (-26, "TOC 7.") + """TOC 7.""" + + TOC_8 = (-27, "TOC 8.") + """TOC 8.""" + + TOC_9 = (-28, "TOC 9.") + """TOC 9.""" + + +WD_STYLE = WD_BUILTIN_STYLE + + +class WD_STYLE_TYPE(BaseXmlEnum): + """Specifies one of the four style types: paragraph, character, list, or table. + + Example:: + + from docx import Document + from docx.enum.style import WD_STYLE_TYPE + + styles = Document().styles + assert styles[0].type == WD_STYLE_TYPE.PARAGRAPH + + MS API name: `WdStyleType` + + http://msdn.microsoft.com/en-us/library/office/ff196870.aspx + """ + + CHARACTER = (2, "character", "Character style.") + """Character style.""" + + LIST = (4, "numbering", "List style.") + """List style.""" + + PARAGRAPH = (1, "paragraph", "Paragraph style.") + """Paragraph style.""" + + TABLE = (3, "table", "Table style.") + """Table style.""" diff --git a/intelliaide/vendor/docx/enum/table.py b/intelliaide/vendor/docx/enum/table.py new file mode 100644 index 0000000..eb1eb9d --- /dev/null +++ b/intelliaide/vendor/docx/enum/table.py @@ -0,0 +1,136 @@ +"""Enumerations related to tables in WordprocessingML files.""" + +from docx.enum.base import BaseEnum, BaseXmlEnum + + +class WD_CELL_VERTICAL_ALIGNMENT(BaseXmlEnum): + """Alias: **WD_ALIGN_VERTICAL** + + Specifies the vertical alignment of text in one or more cells of a table. + + Example:: + + from docx.enum.table import WD_ALIGN_VERTICAL + + table = document.add_table(3, 3) + table.cell(0, 0).vertical_alignment = WD_ALIGN_VERTICAL.BOTTOM + + MS API name: `WdCellVerticalAlignment` + + https://msdn.microsoft.com/en-us/library/office/ff193345.aspx + """ + + TOP = (0, "top", "Text is aligned to the top border of the cell.") + """Text is aligned to the top border of the cell.""" + + CENTER = (1, "center", "Text is aligned to the center of the cell.") + """Text is aligned to the center of the cell.""" + + BOTTOM = (3, "bottom", "Text is aligned to the bottom border of the cell.") + """Text is aligned to the bottom border of the cell.""" + + BOTH = ( + 101, + "both", + "This is an option in the OpenXml spec, but not in Word itself. It's not" + " clear what Word behavior this setting produces. If you find out please" + " let us know and we'll update this documentation. Otherwise, probably best" + " to avoid this option.", + ) + """This is an option in the OpenXml spec, but not in Word itself. + + It's not clear what Word behavior this setting produces. If you find out please let + us know and we'll update this documentation. Otherwise, probably best to avoid this + option. + """ + + +WD_ALIGN_VERTICAL = WD_CELL_VERTICAL_ALIGNMENT + + +class WD_ROW_HEIGHT_RULE(BaseXmlEnum): + """Alias: **WD_ROW_HEIGHT** + + Specifies the rule for determining the height of a table row + + Example:: + + from docx.enum.table import WD_ROW_HEIGHT_RULE + + table = document.add_table(3, 3) + table.rows[0].height_rule = WD_ROW_HEIGHT_RULE.EXACTLY + + MS API name: `WdRowHeightRule` + + https://msdn.microsoft.com/en-us/library/office/ff193620.aspx + """ + + AUTO = ( + 0, + "auto", + "The row height is adjusted to accommodate the tallest value in the row.", + ) + """The row height is adjusted to accommodate the tallest value in the row.""" + + AT_LEAST = (1, "atLeast", "The row height is at least a minimum specified value.") + """The row height is at least a minimum specified value.""" + + EXACTLY = (2, "exact", "The row height is an exact value.") + """The row height is an exact value.""" + + +WD_ROW_HEIGHT = WD_ROW_HEIGHT_RULE + + +class WD_TABLE_ALIGNMENT(BaseXmlEnum): + """Specifies table justification type. + + Example:: + + from docx.enum.table import WD_TABLE_ALIGNMENT + + table = document.add_table(3, 3) + table.alignment = WD_TABLE_ALIGNMENT.CENTER + + MS API name: `WdRowAlignment` + + http://office.microsoft.com/en-us/word-help/HV080607259.aspx + """ + + LEFT = (0, "left", "Left-aligned") + """Left-aligned""" + + CENTER = (1, "center", "Center-aligned.") + """Center-aligned.""" + + RIGHT = (2, "right", "Right-aligned.") + """Right-aligned.""" + + +class WD_TABLE_DIRECTION(BaseEnum): + """Specifies the direction in which an application orders cells in the specified + table or row. + + Example:: + + from docx.enum.table import WD_TABLE_DIRECTION + + table = document.add_table(3, 3) + table.direction = WD_TABLE_DIRECTION.RTL + + MS API name: `WdTableDirection` + + http://msdn.microsoft.com/en-us/library/ff835141.aspx + """ + + LTR = ( + 0, + "The table or row is arranged with the first column in the leftmost position.", + ) + """The table or row is arranged with the first column in the leftmost position.""" + + RTL = ( + 1, + "The table or row is arranged with the first column in the rightmost position.", + ) + """The table or row is arranged with the first column in the rightmost position.""" diff --git a/intelliaide/vendor/docx/enum/text.py b/intelliaide/vendor/docx/enum/text.py new file mode 100644 index 0000000..99e776f --- /dev/null +++ b/intelliaide/vendor/docx/enum/text.py @@ -0,0 +1,367 @@ +"""Enumerations related to text in WordprocessingML files.""" + +from __future__ import annotations + +import enum + +from docx.enum.base import BaseXmlEnum + + +class WD_PARAGRAPH_ALIGNMENT(BaseXmlEnum): + """Alias: **WD_ALIGN_PARAGRAPH** + + Specifies paragraph justification type. + + Example:: + + from docx.enum.text import WD_ALIGN_PARAGRAPH + + paragraph = document.add_paragraph() + paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER + """ + + LEFT = (0, "left", "Left-aligned") + """Left-aligned""" + + CENTER = (1, "center", "Center-aligned.") + """Center-aligned.""" + + RIGHT = (2, "right", "Right-aligned.") + """Right-aligned.""" + + JUSTIFY = (3, "both", "Fully justified.") + """Fully justified.""" + + DISTRIBUTE = ( + 4, + "distribute", + "Paragraph characters are distributed to fill entire width of paragraph.", + ) + """Paragraph characters are distributed to fill entire width of paragraph.""" + + JUSTIFY_MED = ( + 5, + "mediumKashida", + "Justified with a medium character compression ratio.", + ) + """Justified with a medium character compression ratio.""" + + JUSTIFY_HI = ( + 7, + "highKashida", + "Justified with a high character compression ratio.", + ) + """Justified with a high character compression ratio.""" + + JUSTIFY_LOW = (8, "lowKashida", "Justified with a low character compression ratio.") + """Justified with a low character compression ratio.""" + + THAI_JUSTIFY = ( + 9, + "thaiDistribute", + "Justified according to Thai formatting layout.", + ) + """Justified according to Thai formatting layout.""" + + +WD_ALIGN_PARAGRAPH = WD_PARAGRAPH_ALIGNMENT + + +class WD_BREAK_TYPE(enum.Enum): + """Corresponds to WdBreakType enumeration. + + http://msdn.microsoft.com/en-us/library/office/ff195905.aspx. + """ + + COLUMN = 8 + LINE = 6 + LINE_CLEAR_LEFT = 9 + LINE_CLEAR_RIGHT = 10 + LINE_CLEAR_ALL = 11 # -- added for consistency, not in MS version -- + PAGE = 7 + SECTION_CONTINUOUS = 3 + SECTION_EVEN_PAGE = 4 + SECTION_NEXT_PAGE = 2 + SECTION_ODD_PAGE = 5 + TEXT_WRAPPING = 11 + + +WD_BREAK = WD_BREAK_TYPE + + +class WD_COLOR_INDEX(BaseXmlEnum): + """Specifies a standard preset color to apply. + + Used for font highlighting and perhaps other applications. + + * MS API name: `WdColorIndex` + * URL: https://msdn.microsoft.com/EN-US/library/office/ff195343.aspx + """ + + INHERITED = (-1, None, "Color is inherited from the style hierarchy.") + """Color is inherited from the style hierarchy.""" + + AUTO = (0, "default", "Automatic color. Default; usually black.") + """Automatic color. Default; usually black.""" + + BLACK = (1, "black", "Black color.") + """Black color.""" + + BLUE = (2, "blue", "Blue color") + """Blue color""" + + BRIGHT_GREEN = (4, "green", "Bright green color.") + """Bright green color.""" + + DARK_BLUE = (9, "darkBlue", "Dark blue color.") + """Dark blue color.""" + + DARK_RED = (13, "darkRed", "Dark red color.") + """Dark red color.""" + + DARK_YELLOW = (14, "darkYellow", "Dark yellow color.") + """Dark yellow color.""" + + GRAY_25 = (16, "lightGray", "25% shade of gray color.") + """25% shade of gray color.""" + + GRAY_50 = (15, "darkGray", "50% shade of gray color.") + """50% shade of gray color.""" + + GREEN = (11, "darkGreen", "Green color.") + """Green color.""" + + PINK = (5, "magenta", "Pink color.") + """Pink color.""" + + RED = (6, "red", "Red color.") + """Red color.""" + + TEAL = (10, "darkCyan", "Teal color.") + """Teal color.""" + + TURQUOISE = (3, "cyan", "Turquoise color.") + """Turquoise color.""" + + VIOLET = (12, "darkMagenta", "Violet color.") + """Violet color.""" + + WHITE = (8, "white", "White color.") + """White color.""" + + YELLOW = (7, "yellow", "Yellow color.") + """Yellow color.""" + + +WD_COLOR = WD_COLOR_INDEX + + +class WD_LINE_SPACING(BaseXmlEnum): + """Specifies a line spacing format to be applied to a paragraph. + + Example:: + + from docx.enum.text import WD_LINE_SPACING + + paragraph = document.add_paragraph() + paragraph.line_spacing_rule = WD_LINE_SPACING.EXACTLY + + + MS API name: `WdLineSpacing` + + URL: http://msdn.microsoft.com/en-us/library/office/ff844910.aspx + """ + + SINGLE = (0, "UNMAPPED", "Single spaced (default).") + """Single spaced (default).""" + + ONE_POINT_FIVE = (1, "UNMAPPED", "Space-and-a-half line spacing.") + """Space-and-a-half line spacing.""" + + DOUBLE = (2, "UNMAPPED", "Double spaced.") + """Double spaced.""" + + AT_LEAST = ( + 3, + "atLeast", + "Minimum line spacing is specified amount. Amount is specified separately.", + ) + """Minimum line spacing is specified amount. Amount is specified separately.""" + + EXACTLY = ( + 4, + "exact", + "Line spacing is exactly specified amount. Amount is specified separately.", + ) + """Line spacing is exactly specified amount. Amount is specified separately.""" + + MULTIPLE = ( + 5, + "auto", + "Line spacing is specified as multiple of line heights. Changing font size" + " will change line spacing proportionately.", + ) + """Line spacing is specified as multiple of line heights. Changing font size will + change the line spacing proportionately.""" + + +class WD_TAB_ALIGNMENT(BaseXmlEnum): + """Specifies the tab stop alignment to apply. + + MS API name: `WdTabAlignment` + + URL: https://msdn.microsoft.com/EN-US/library/office/ff195609.aspx + """ + + LEFT = (0, "left", "Left-aligned.") + """Left-aligned.""" + + CENTER = (1, "center", "Center-aligned.") + """Center-aligned.""" + + RIGHT = (2, "right", "Right-aligned.") + """Right-aligned.""" + + DECIMAL = (3, "decimal", "Decimal-aligned.") + """Decimal-aligned.""" + + BAR = (4, "bar", "Bar-aligned.") + """Bar-aligned.""" + + LIST = (6, "list", "List-aligned. (deprecated)") + """List-aligned. (deprecated)""" + + CLEAR = (101, "clear", "Clear an inherited tab stop.") + """Clear an inherited tab stop.""" + + END = (102, "end", "Right-aligned. (deprecated)") + """Right-aligned. (deprecated)""" + + NUM = (103, "num", "Left-aligned. (deprecated)") + """Left-aligned. (deprecated)""" + + START = (104, "start", "Left-aligned. (deprecated)") + """Left-aligned. (deprecated)""" + + +class WD_TAB_LEADER(BaseXmlEnum): + """Specifies the character to use as the leader with formatted tabs. + + MS API name: `WdTabLeader` + + URL: https://msdn.microsoft.com/en-us/library/office/ff845050.aspx + """ + + SPACES = (0, "none", "Spaces. Default.") + """Spaces. Default.""" + + DOTS = (1, "dot", "Dots.") + """Dots.""" + + DASHES = (2, "hyphen", "Dashes.") + """Dashes.""" + + LINES = (3, "underscore", "Double lines.") + """Double lines.""" + + HEAVY = (4, "heavy", "A heavy line.") + """A heavy line.""" + + MIDDLE_DOT = (5, "middleDot", "A vertically-centered dot.") + """A vertically-centered dot.""" + + +class WD_UNDERLINE(BaseXmlEnum): + """Specifies the style of underline applied to a run of characters. + + MS API name: `WdUnderline` + + URL: http://msdn.microsoft.com/en-us/library/office/ff822388.aspx + """ + + INHERITED = (-1, None, "Inherit underline setting from containing paragraph.") + """Inherit underline setting from containing paragraph.""" + + NONE = ( + 0, + "none", + "No underline.\n\nThis setting overrides any inherited underline value, so can" + " be used to remove underline from a run that inherits underlining from its" + " containing paragraph. Note this is not the same as assigning |None| to" + " Run.underline. |None| is a valid assignment value, but causes the run to" + " inherit its underline value. Assigning `WD_UNDERLINE.NONE` causes" + " underlining to be unconditionally turned off.", + ) + """No underline. + + This setting overrides any inherited underline value, so can be used to remove + underline from a run that inherits underlining from its containing paragraph. Note + this is not the same as assigning |None| to Run.underline. |None| is a valid + assignment value, but causes the run to inherit its underline value. Assigning + ``WD_UNDERLINE.NONE`` causes underlining to be unconditionally turned off. + """ + + SINGLE = ( + 1, + "single", + "A single line.\n\nNote that this setting is write-only in the sense that" + " |True| (rather than `WD_UNDERLINE.SINGLE`) is returned for a run having" + " this setting.", + ) + """A single line. + + Note that this setting is write-only in the sense that |True| + (rather than ``WD_UNDERLINE.SINGLE``) is returned for a run having this setting. + """ + + WORDS = (2, "words", "Underline individual words only.") + """Underline individual words only.""" + + DOUBLE = (3, "double", "A double line.") + """A double line.""" + + DOTTED = (4, "dotted", "Dots.") + """Dots.""" + + THICK = (6, "thick", "A single thick line.") + """A single thick line.""" + + DASH = (7, "dash", "Dashes.") + """Dashes.""" + + DOT_DASH = (9, "dotDash", "Alternating dots and dashes.") + """Alternating dots and dashes.""" + + DOT_DOT_DASH = (10, "dotDotDash", "An alternating dot-dot-dash pattern.") + """An alternating dot-dot-dash pattern.""" + + WAVY = (11, "wave", "A single wavy line.") + """A single wavy line.""" + + DOTTED_HEAVY = (20, "dottedHeavy", "Heavy dots.") + """Heavy dots.""" + + DASH_HEAVY = (23, "dashedHeavy", "Heavy dashes.") + """Heavy dashes.""" + + DOT_DASH_HEAVY = (25, "dashDotHeavy", "Alternating heavy dots and heavy dashes.") + """Alternating heavy dots and heavy dashes.""" + + DOT_DOT_DASH_HEAVY = ( + 26, + "dashDotDotHeavy", + "An alternating heavy dot-dot-dash pattern.", + ) + """An alternating heavy dot-dot-dash pattern.""" + + WAVY_HEAVY = (27, "wavyHeavy", "A heavy wavy line.") + """A heavy wavy line.""" + + DASH_LONG = (39, "dashLong", "Long dashes.") + """Long dashes.""" + + WAVY_DOUBLE = (43, "wavyDouble", "A double wavy line.") + """A double wavy line.""" + + DASH_LONG_HEAVY = (55, "dashLongHeavy", "Long heavy dashes.") + """Long heavy dashes.""" diff --git a/intelliaide/vendor/docx/exceptions.py b/intelliaide/vendor/docx/exceptions.py new file mode 100644 index 0000000..e26f4c3 --- /dev/null +++ b/intelliaide/vendor/docx/exceptions.py @@ -0,0 +1,18 @@ +"""Exceptions used with python-docx. + +The base exception class is PythonDocxError. +""" + + +class PythonDocxError(Exception): + """Generic error class.""" + + +class InvalidSpanError(PythonDocxError): + """Raised when an invalid merge region is specified in a request to merge table + cells.""" + + +class InvalidXmlError(PythonDocxError): + """Raised when invalid XML is encountered, such as on attempt to access a missing + required child element.""" diff --git a/intelliaide/vendor/docx/image/__init__.py b/intelliaide/vendor/docx/image/__init__.py new file mode 100644 index 0000000..9d5e4b0 --- /dev/null +++ b/intelliaide/vendor/docx/image/__init__.py @@ -0,0 +1,23 @@ +"""Provides objects that can characterize image streams. + +That characterization is as to content type and size, as a required step in including +them in a document. +""" + +from docx.image.bmp import Bmp +from docx.image.gif import Gif +from docx.image.jpeg import Exif, Jfif +from docx.image.png import Png +from docx.image.tiff import Tiff + +SIGNATURES = ( + # class, offset, signature_bytes + (Png, 0, b"\x89PNG\x0d\x0a\x1a\x0a"), + (Jfif, 6, b"JFIF"), + (Exif, 6, b"Exif"), + (Gif, 0, b"GIF87a"), + (Gif, 0, b"GIF89a"), + (Tiff, 0, b"MM\x00*"), # big-endian (Motorola) TIFF + (Tiff, 0, b"II*\x00"), # little-endian (Intel) TIFF + (Bmp, 0, b"BM"), +) diff --git a/intelliaide/vendor/docx/image/bmp.py b/intelliaide/vendor/docx/image/bmp.py new file mode 100644 index 0000000..115b01d --- /dev/null +++ b/intelliaide/vendor/docx/image/bmp.py @@ -0,0 +1,43 @@ +from .constants import MIME_TYPE +from .helpers import LITTLE_ENDIAN, StreamReader +from .image import BaseImageHeader + + +class Bmp(BaseImageHeader): + """Image header parser for BMP images.""" + + @classmethod + def from_stream(cls, stream): + """Return |Bmp| instance having header properties parsed from the BMP image in + `stream`.""" + stream_rdr = StreamReader(stream, LITTLE_ENDIAN) + + px_width = stream_rdr.read_long(0x12) + px_height = stream_rdr.read_long(0x16) + + horz_px_per_meter = stream_rdr.read_long(0x26) + vert_px_per_meter = stream_rdr.read_long(0x2A) + + horz_dpi = cls._dpi(horz_px_per_meter) + vert_dpi = cls._dpi(vert_px_per_meter) + + return cls(px_width, px_height, horz_dpi, vert_dpi) + + @property + def content_type(self): + """MIME content type for this image, unconditionally `image/bmp` for BMP + images.""" + return MIME_TYPE.BMP + + @property + def default_ext(self): + """Default filename extension, always 'bmp' for BMP images.""" + return "bmp" + + @staticmethod + def _dpi(px_per_meter): + """Return the integer pixels per inch from `px_per_meter`, defaulting to 96 if + `px_per_meter` is zero.""" + if px_per_meter == 0: + return 96 + return int(round(px_per_meter * 0.0254)) diff --git a/intelliaide/vendor/docx/image/constants.py b/intelliaide/vendor/docx/image/constants.py new file mode 100644 index 0000000..03fae58 --- /dev/null +++ b/intelliaide/vendor/docx/image/constants.py @@ -0,0 +1,172 @@ +"""Constants specific the the image sub-package.""" + + +class JPEG_MARKER_CODE: + """JPEG marker codes.""" + + TEM = b"\x01" + DHT = b"\xc4" + DAC = b"\xcc" + JPG = b"\xc8" + + SOF0 = b"\xc0" + SOF1 = b"\xc1" + SOF2 = b"\xc2" + SOF3 = b"\xc3" + SOF5 = b"\xc5" + SOF6 = b"\xc6" + SOF7 = b"\xc7" + SOF9 = b"\xc9" + SOFA = b"\xca" + SOFB = b"\xcb" + SOFD = b"\xcd" + SOFE = b"\xce" + SOFF = b"\xcf" + + RST0 = b"\xd0" + RST1 = b"\xd1" + RST2 = b"\xd2" + RST3 = b"\xd3" + RST4 = b"\xd4" + RST5 = b"\xd5" + RST6 = b"\xd6" + RST7 = b"\xd7" + + SOI = b"\xd8" + EOI = b"\xd9" + SOS = b"\xda" + DQT = b"\xdb" # Define Quantization Table(s) + DNL = b"\xdc" + DRI = b"\xdd" + DHP = b"\xde" + EXP = b"\xdf" + + APP0 = b"\xe0" + APP1 = b"\xe1" + APP2 = b"\xe2" + APP3 = b"\xe3" + APP4 = b"\xe4" + APP5 = b"\xe5" + APP6 = b"\xe6" + APP7 = b"\xe7" + APP8 = b"\xe8" + APP9 = b"\xe9" + APPA = b"\xea" + APPB = b"\xeb" + APPC = b"\xec" + APPD = b"\xed" + APPE = b"\xee" + APPF = b"\xef" + + STANDALONE_MARKERS = (TEM, SOI, EOI, RST0, RST1, RST2, RST3, RST4, RST5, RST6, RST7) + + SOF_MARKER_CODES = ( + SOF0, + SOF1, + SOF2, + SOF3, + SOF5, + SOF6, + SOF7, + SOF9, + SOFA, + SOFB, + SOFD, + SOFE, + SOFF, + ) + + marker_names = { + b"\x00": "UNKNOWN", + b"\xc0": "SOF0", + b"\xc2": "SOF2", + b"\xc4": "DHT", + b"\xda": "SOS", # start of scan + b"\xd8": "SOI", # start of image + b"\xd9": "EOI", # end of image + b"\xdb": "DQT", + b"\xe0": "APP0", + b"\xe1": "APP1", + b"\xe2": "APP2", + b"\xed": "APP13", + b"\xee": "APP14", + } + + @classmethod + def is_standalone(cls, marker_code): + return marker_code in cls.STANDALONE_MARKERS + + +class MIME_TYPE: + """Image content types.""" + + BMP = "image/bmp" + GIF = "image/gif" + JPEG = "image/jpeg" + PNG = "image/png" + TIFF = "image/tiff" + + +class PNG_CHUNK_TYPE: + """PNG chunk type names.""" + + IHDR = "IHDR" + pHYs = "pHYs" + IEND = "IEND" + + +class TIFF_FLD_TYPE: + """Tag codes for TIFF Image File Directory (IFD) entries.""" + + BYTE = 1 + ASCII = 2 + SHORT = 3 + LONG = 4 + RATIONAL = 5 + + field_type_names = { + 1: "BYTE", + 2: "ASCII char", + 3: "SHORT", + 4: "LONG", + 5: "RATIONAL", + } + + +TIFF_FLD = TIFF_FLD_TYPE + + +class TIFF_TAG: + """Tag codes for TIFF Image File Directory (IFD) entries.""" + + IMAGE_WIDTH = 0x0100 + IMAGE_LENGTH = 0x0101 + X_RESOLUTION = 0x011A + Y_RESOLUTION = 0x011B + RESOLUTION_UNIT = 0x0128 + + tag_names = { + 0x00FE: "NewSubfileType", + 0x0100: "ImageWidth", + 0x0101: "ImageLength", + 0x0102: "BitsPerSample", + 0x0103: "Compression", + 0x0106: "PhotometricInterpretation", + 0x010E: "ImageDescription", + 0x010F: "Make", + 0x0110: "Model", + 0x0111: "StripOffsets", + 0x0112: "Orientation", + 0x0115: "SamplesPerPixel", + 0x0117: "StripByteCounts", + 0x011A: "XResolution", + 0x011B: "YResolution", + 0x011C: "PlanarConfiguration", + 0x0128: "ResolutionUnit", + 0x0131: "Software", + 0x0132: "DateTime", + 0x0213: "YCbCrPositioning", + 0x8769: "ExifTag", + 0x8825: "GPS IFD", + 0xC4A5: "PrintImageMatching", + } diff --git a/intelliaide/vendor/docx/image/exceptions.py b/intelliaide/vendor/docx/image/exceptions.py new file mode 100644 index 0000000..2b35187 --- /dev/null +++ b/intelliaide/vendor/docx/image/exceptions.py @@ -0,0 +1,13 @@ +"""Exceptions specific the the image sub-package.""" + + +class InvalidImageStreamError(Exception): + """The recognized image stream appears to be corrupted.""" + + +class UnexpectedEndOfFileError(Exception): + """EOF was unexpectedly encountered while reading an image stream.""" + + +class UnrecognizedImageError(Exception): + """The provided image stream could not be recognized.""" diff --git a/intelliaide/vendor/docx/image/gif.py b/intelliaide/vendor/docx/image/gif.py new file mode 100644 index 0000000..e164872 --- /dev/null +++ b/intelliaide/vendor/docx/image/gif.py @@ -0,0 +1,38 @@ +from struct import Struct + +from .constants import MIME_TYPE +from .image import BaseImageHeader + + +class Gif(BaseImageHeader): + """Image header parser for GIF images. + + Note that the GIF format does not support resolution (DPI) information. Both + horizontal and vertical DPI default to 72. + """ + + @classmethod + def from_stream(cls, stream): + """Return |Gif| instance having header properties parsed from GIF image in + `stream`.""" + px_width, px_height = cls._dimensions_from_stream(stream) + return cls(px_width, px_height, 72, 72) + + @property + def content_type(self): + """MIME content type for this image, unconditionally `image/gif` for GIF + images.""" + return MIME_TYPE.GIF + + @property + def default_ext(self): + """Default filename extension, always 'gif' for GIF images.""" + return "gif" + + @classmethod + def _dimensions_from_stream(cls, stream): + stream.seek(6) + bytes_ = stream.read(4) + struct = Struct("L" + return self._read_int(fmt, base, offset) + + def read_short(self, base, offset=0): + """Return the int value of the two bytes at the file position determined by + `base` and `offset`, similarly to ``read_long()`` above.""" + fmt = b"H" + return self._read_int(fmt, base, offset) + + def read_str(self, char_count, base, offset=0): + """Return a string containing the `char_count` bytes at the file position + determined by self._base_offset + `base` + `offset`.""" + + def str_struct(char_count): + format_ = "%ds" % char_count + return Struct(format_) + + struct = str_struct(char_count) + chars = self._unpack_item(struct, base, offset) + unicode_str = chars.decode("UTF-8") + return unicode_str + + def seek(self, base, offset=0): + location = self._base_offset + base + offset + self._stream.seek(location) + + def tell(self): + """Allow pass-through tell() call.""" + return self._stream.tell() + + def _read_bytes(self, byte_count, base, offset): + self.seek(base, offset) + bytes_ = self._stream.read(byte_count) + if len(bytes_) < byte_count: + raise UnexpectedEndOfFileError + return bytes_ + + def _read_int(self, fmt, base, offset): + struct = Struct(fmt) + return self._unpack_item(struct, base, offset) + + def _unpack_item(self, struct, base, offset): + bytes_ = self._read_bytes(struct.size, base, offset) + return struct.unpack(bytes_)[0] diff --git a/intelliaide/vendor/docx/image/image.py b/intelliaide/vendor/docx/image/image.py new file mode 100644 index 0000000..e5e7f8a --- /dev/null +++ b/intelliaide/vendor/docx/image/image.py @@ -0,0 +1,234 @@ +"""Provides objects that can characterize image streams. + +That characterization is as to content type and size, as a required step in including +them in a document. +""" + +from __future__ import annotations + +import hashlib +import io +import os +from typing import IO, Tuple + +from docx.image.exceptions import UnrecognizedImageError +from docx.shared import Emu, Inches, Length, lazyproperty + + +class Image: + """Graphical image stream such as JPEG, PNG, or GIF with properties and methods + required by ImagePart.""" + + def __init__(self, blob: bytes, filename: str, image_header: BaseImageHeader): + super(Image, self).__init__() + self._blob = blob + self._filename = filename + self._image_header = image_header + + @classmethod + def from_blob(cls, blob: bytes) -> Image: + """Return a new |Image| subclass instance parsed from the image binary contained + in `blob`.""" + stream = io.BytesIO(blob) + return cls._from_stream(stream, blob) + + @classmethod + def from_file(cls, image_descriptor: str | IO[bytes]): + """Return a new |Image| subclass instance loaded from the image file identified + by `image_descriptor`, a path or file-like object.""" + if isinstance(image_descriptor, str): + path = image_descriptor + with open(path, "rb") as f: + blob = f.read() + stream = io.BytesIO(blob) + filename = os.path.basename(path) + else: + stream = image_descriptor + stream.seek(0) + blob = stream.read() + filename = None + return cls._from_stream(stream, blob, filename) + + @property + def blob(self): + """The bytes of the image 'file'.""" + return self._blob + + @property + def content_type(self) -> str: + """MIME content type for this image, e.g. ``'image/jpeg'`` for a JPEG image.""" + return self._image_header.content_type + + @lazyproperty + def ext(self): + """The file extension for the image. + + If an actual one is available from a load filename it is used. Otherwise a + canonical extension is assigned based on the content type. Does not contain the + leading period, e.g. 'jpg', not '.jpg'. + """ + return os.path.splitext(self._filename)[1][1:] + + @property + def filename(self): + """Original image file name, if loaded from disk, or a generic filename if + loaded from an anonymous stream.""" + return self._filename + + @property + def px_width(self) -> int: + """The horizontal pixel dimension of the image.""" + return self._image_header.px_width + + @property + def px_height(self) -> int: + """The vertical pixel dimension of the image.""" + return self._image_header.px_height + + @property + def horz_dpi(self) -> int: + """Integer dots per inch for the width of this image. + + Defaults to 72 when not present in the file, as is often the case. + """ + return self._image_header.horz_dpi + + @property + def vert_dpi(self) -> int: + """Integer dots per inch for the height of this image. + + Defaults to 72 when not present in the file, as is often the case. + """ + return self._image_header.vert_dpi + + @property + def width(self) -> Inches: + """A |Length| value representing the native width of the image, calculated from + the values of `px_width` and `horz_dpi`.""" + return Inches(self.px_width / self.horz_dpi) + + @property + def height(self) -> Inches: + """A |Length| value representing the native height of the image, calculated from + the values of `px_height` and `vert_dpi`.""" + return Inches(self.px_height / self.vert_dpi) + + def scaled_dimensions( + self, width: int | Length | None = None, height: int | Length | None = None + ) -> Tuple[Length, Length]: + """(cx, cy) pair representing scaled dimensions of this image. + + The native dimensions of the image are scaled by applying the following rules to + the `width` and `height` arguments. + + * If both `width` and `height` are specified, the return value is (`width`, + `height`); no scaling is performed. + * If only one is specified, it is used to compute a scaling factor that is then + applied to the unspecified dimension, preserving the aspect ratio of the image. + * If both `width` and `height` are |None|, the native dimensions are returned. + + The native dimensions are calculated using the dots-per-inch (dpi) value + embedded in the image, defaulting to 72 dpi if no value is specified, as is + often the case. The returned values are both |Length| objects. + """ + if width is None and height is None: + return self.width, self.height + + if width is None: + assert height is not None + scaling_factor = float(height) / float(self.height) + width = round(self.width * scaling_factor) + + if height is None: + scaling_factor = float(width) / float(self.width) + height = round(self.height * scaling_factor) + + return Emu(width), Emu(height) + + @lazyproperty + def sha1(self): + """SHA1 hash digest of the image blob.""" + return hashlib.sha1(self._blob).hexdigest() + + @classmethod + def _from_stream( + cls, + stream: IO[bytes], + blob: bytes, + filename: str | None = None, + ) -> Image: + """Return an instance of the |Image| subclass corresponding to the format of the + image in `stream`.""" + image_header = _ImageHeaderFactory(stream) + if filename is None: + filename = "image.%s" % image_header.default_ext + return cls(blob, filename, image_header) + + +def _ImageHeaderFactory(stream: IO[bytes]): + """A |BaseImageHeader| subclass instance that can parse headers of image in `stream`.""" + from docx.image import SIGNATURES + + def read_32(stream: IO[bytes]): + stream.seek(0) + return stream.read(32) + + header = read_32(stream) + for cls, offset, signature_bytes in SIGNATURES: + end = offset + len(signature_bytes) + found_bytes = header[offset:end] + if found_bytes == signature_bytes: + return cls.from_stream(stream) + raise UnrecognizedImageError + + +class BaseImageHeader: + """Base class for image header subclasses like |Jpeg| and |Tiff|.""" + + def __init__(self, px_width: int, px_height: int, horz_dpi: int, vert_dpi: int): + self._px_width = px_width + self._px_height = px_height + self._horz_dpi = horz_dpi + self._vert_dpi = vert_dpi + + @property + def content_type(self) -> str: + """Abstract property definition, must be implemented by all subclasses.""" + msg = "content_type property must be implemented by all subclasses of BaseImageHeader" + raise NotImplementedError(msg) + + @property + def default_ext(self) -> str: + """Default filename extension for images of this type. + + An abstract property definition, must be implemented by all subclasses. + """ + raise NotImplementedError( + "default_ext property must be implemented by all subclasses of BaseImageHeader" + ) + + @property + def px_width(self): + """The horizontal pixel dimension of the image.""" + return self._px_width + + @property + def px_height(self): + """The vertical pixel dimension of the image.""" + return self._px_height + + @property + def horz_dpi(self): + """Integer dots per inch for the width of this image. + + Defaults to 72 when not present in the file, as is often the case. + """ + return self._horz_dpi + + @property + def vert_dpi(self): + """Integer dots per inch for the height of this image. + + Defaults to 72 when not present in the file, as is often the case. + """ + return self._vert_dpi diff --git a/intelliaide/vendor/docx/image/jpeg.py b/intelliaide/vendor/docx/image/jpeg.py new file mode 100644 index 0000000..74da518 --- /dev/null +++ b/intelliaide/vendor/docx/image/jpeg.py @@ -0,0 +1,425 @@ +"""Objects related to parsing headers of JPEG image streams. + +Includes both JFIF and Exif sub-formats. +""" + +import io + +from docx.image.constants import JPEG_MARKER_CODE, MIME_TYPE +from docx.image.helpers import BIG_ENDIAN, StreamReader +from docx.image.image import BaseImageHeader +from docx.image.tiff import Tiff + + +class Jpeg(BaseImageHeader): + """Base class for JFIF and EXIF subclasses.""" + + @property + def content_type(self): + """MIME content type for this image, unconditionally `image/jpeg` for JPEG + images.""" + return MIME_TYPE.JPEG + + @property + def default_ext(self): + """Default filename extension, always 'jpg' for JPG images.""" + return "jpg" + + +class Exif(Jpeg): + """Image header parser for Exif image format.""" + + @classmethod + def from_stream(cls, stream): + """Return |Exif| instance having header properties parsed from Exif image in + `stream`.""" + markers = _JfifMarkers.from_stream(stream) + # print('\n%s' % markers) + + px_width = markers.sof.px_width + px_height = markers.sof.px_height + horz_dpi = markers.app1.horz_dpi + vert_dpi = markers.app1.vert_dpi + + return cls(px_width, px_height, horz_dpi, vert_dpi) + + +class Jfif(Jpeg): + """Image header parser for JFIF image format.""" + + @classmethod + def from_stream(cls, stream): + """Return a |Jfif| instance having header properties parsed from image in + `stream`.""" + markers = _JfifMarkers.from_stream(stream) + + px_width = markers.sof.px_width + px_height = markers.sof.px_height + horz_dpi = markers.app0.horz_dpi + vert_dpi = markers.app0.vert_dpi + + return cls(px_width, px_height, horz_dpi, vert_dpi) + + +class _JfifMarkers: + """Sequence of markers in a JPEG file, perhaps truncated at first SOS marker for + performance reasons.""" + + def __init__(self, markers): + super(_JfifMarkers, self).__init__() + self._markers = list(markers) + + def __str__(self): # pragma: no cover + """Returns a tabular listing of the markers in this instance, which can be handy + for debugging and perhaps other uses.""" + header = " offset seglen mc name\n======= ====== == =====" + tmpl = "%7d %6d %02X %s" + rows = [] + for marker in self._markers: + rows.append( + tmpl + % ( + marker.offset, + marker.segment_length, + ord(marker.marker_code), + marker.name, + ) + ) + lines = [header] + rows + return "\n".join(lines) + + @classmethod + def from_stream(cls, stream): + """Return a |_JfifMarkers| instance containing a |_JfifMarker| subclass instance + for each marker in `stream`.""" + marker_parser = _MarkerParser.from_stream(stream) + markers = [] + for marker in marker_parser.iter_markers(): + markers.append(marker) + if marker.marker_code == JPEG_MARKER_CODE.SOS: + break + return cls(markers) + + @property + def app0(self): + """First APP0 marker in image markers.""" + for m in self._markers: + if m.marker_code == JPEG_MARKER_CODE.APP0: + return m + raise KeyError("no APP0 marker in image") + + @property + def app1(self): + """First APP1 marker in image markers.""" + for m in self._markers: + if m.marker_code == JPEG_MARKER_CODE.APP1: + return m + raise KeyError("no APP1 marker in image") + + @property + def sof(self): + """First start of frame (SOFn) marker in this sequence.""" + for m in self._markers: + if m.marker_code in JPEG_MARKER_CODE.SOF_MARKER_CODES: + return m + raise KeyError("no start of frame (SOFn) marker in image") + + +class _MarkerParser: + """Service class that knows how to parse a JFIF stream and iterate over its + markers.""" + + def __init__(self, stream_reader): + super(_MarkerParser, self).__init__() + self._stream = stream_reader + + @classmethod + def from_stream(cls, stream): + """Return a |_MarkerParser| instance to parse JFIF markers from `stream`.""" + stream_reader = StreamReader(stream, BIG_ENDIAN) + return cls(stream_reader) + + def iter_markers(self): + """Generate a (marker_code, segment_offset) 2-tuple for each marker in the JPEG + `stream`, in the order they occur in the stream.""" + marker_finder = _MarkerFinder.from_stream(self._stream) + start = 0 + marker_code = None + while marker_code != JPEG_MARKER_CODE.EOI: + marker_code, segment_offset = marker_finder.next(start) + marker = _MarkerFactory(marker_code, self._stream, segment_offset) + yield marker + start = segment_offset + marker.segment_length + + +class _MarkerFinder: + """Service class that knows how to find the next JFIF marker in a stream.""" + + def __init__(self, stream): + super(_MarkerFinder, self).__init__() + self._stream = stream + + @classmethod + def from_stream(cls, stream): + """Return a |_MarkerFinder| instance to find JFIF markers in `stream`.""" + return cls(stream) + + def next(self, start): + """Return a (marker_code, segment_offset) 2-tuple identifying and locating the + first marker in `stream` occuring after offset `start`. + + The returned `segment_offset` points to the position immediately following the + 2-byte marker code, the start of the marker segment, for those markers that have + a segment. + """ + position = start + while True: + # skip over any non-\xFF bytes + position = self._offset_of_next_ff_byte(start=position) + # skip over any \xFF padding bytes + position, byte_ = self._next_non_ff_byte(start=position + 1) + # 'FF 00' sequence is not a marker, start over if found + if byte_ == b"\x00": + continue + # this is a marker, gather return values and break out of scan + marker_code, segment_offset = byte_, position + 1 + break + return marker_code, segment_offset + + def _next_non_ff_byte(self, start): + """Return an offset, byte 2-tuple for the next byte in `stream` that is not + '\xff', starting with the byte at offset `start`. + + If the byte at offset `start` is not '\xff', `start` and the returned `offset` + will be the same. + """ + self._stream.seek(start) + byte_ = self._read_byte() + while byte_ == b"\xff": + byte_ = self._read_byte() + offset_of_non_ff_byte = self._stream.tell() - 1 + return offset_of_non_ff_byte, byte_ + + def _offset_of_next_ff_byte(self, start): + """Return the offset of the next '\xff' byte in `stream` starting with the byte + at offset `start`. + + Returns `start` if the byte at that offset is a hex 255; it does not necessarily + advance in the stream. + """ + self._stream.seek(start) + byte_ = self._read_byte() + while byte_ != b"\xff": + byte_ = self._read_byte() + offset_of_ff_byte = self._stream.tell() - 1 + return offset_of_ff_byte + + def _read_byte(self): + """Return the next byte read from stream. + + Raise Exception if stream is at end of file. + """ + byte_ = self._stream.read(1) + if not byte_: # pragma: no cover + raise Exception("unexpected end of file") + return byte_ + + +def _MarkerFactory(marker_code, stream, offset): + """Return |_Marker| or subclass instance appropriate for marker at `offset` in + `stream` having `marker_code`.""" + if marker_code == JPEG_MARKER_CODE.APP0: + marker_cls = _App0Marker + elif marker_code == JPEG_MARKER_CODE.APP1: + marker_cls = _App1Marker + elif marker_code in JPEG_MARKER_CODE.SOF_MARKER_CODES: + marker_cls = _SofMarker + else: + marker_cls = _Marker + return marker_cls.from_stream(stream, marker_code, offset) + + +class _Marker: + """Base class for JFIF marker classes. + + Represents a marker and its segment occuring in a JPEG byte stream. + """ + + def __init__(self, marker_code, offset, segment_length): + super(_Marker, self).__init__() + self._marker_code = marker_code + self._offset = offset + self._segment_length = segment_length + + @classmethod + def from_stream(cls, stream, marker_code, offset): + """Return a generic |_Marker| instance for the marker at `offset` in `stream` + having `marker_code`.""" + if JPEG_MARKER_CODE.is_standalone(marker_code): + segment_length = 0 + else: + segment_length = stream.read_short(offset) + return cls(marker_code, offset, segment_length) + + @property + def marker_code(self): + """The single-byte code that identifies the type of this marker, e.g. ``'\xe0'`` + for start of image (SOI).""" + return self._marker_code + + @property + def name(self): # pragma: no cover + return JPEG_MARKER_CODE.marker_names[self._marker_code] + + @property + def offset(self): # pragma: no cover + return self._offset + + @property + def segment_length(self): + """The length in bytes of this marker's segment.""" + return self._segment_length + + +class _App0Marker(_Marker): + """Represents a JFIF APP0 marker segment.""" + + def __init__(self, marker_code, offset, length, density_units, x_density, y_density): + super(_App0Marker, self).__init__(marker_code, offset, length) + self._density_units = density_units + self._x_density = x_density + self._y_density = y_density + + @property + def horz_dpi(self): + """Horizontal dots per inch specified in this marker, defaults to 72 if not + specified.""" + return self._dpi(self._x_density) + + @property + def vert_dpi(self): + """Vertical dots per inch specified in this marker, defaults to 72 if not + specified.""" + return self._dpi(self._y_density) + + def _dpi(self, density): + """Return dots per inch corresponding to `density` value.""" + if self._density_units == 1: + dpi = density + elif self._density_units == 2: + dpi = int(round(density * 2.54)) + else: + dpi = 72 + return dpi + + @classmethod + def from_stream(cls, stream, marker_code, offset): + """Return an |_App0Marker| instance for the APP0 marker at `offset` in + `stream`.""" + # field off type notes + # ------------------ --- ----- ------------------- + # segment length 0 short + # JFIF identifier 2 5 chr 'JFIF\x00' + # major JPEG version 7 byte typically 1 + # minor JPEG version 8 byte typically 1 or 2 + # density units 9 byte 1=inches, 2=cm + # horz dots per unit 10 short + # vert dots per unit 12 short + # ------------------ --- ----- ------------------- + segment_length = stream.read_short(offset) + density_units = stream.read_byte(offset, 9) + x_density = stream.read_short(offset, 10) + y_density = stream.read_short(offset, 12) + return cls(marker_code, offset, segment_length, density_units, x_density, y_density) + + +class _App1Marker(_Marker): + """Represents a JFIF APP1 (Exif) marker segment.""" + + def __init__(self, marker_code, offset, length, horz_dpi, vert_dpi): + super(_App1Marker, self).__init__(marker_code, offset, length) + self._horz_dpi = horz_dpi + self._vert_dpi = vert_dpi + + @classmethod + def from_stream(cls, stream, marker_code, offset): + """Extract the horizontal and vertical dots-per-inch value from the APP1 header + at `offset` in `stream`.""" + # field off len type notes + # -------------------- --- --- ----- ---------------------------- + # segment length 0 2 short + # Exif identifier 2 6 6 chr 'Exif\x00\x00' + # TIFF byte order 8 2 2 chr 'II'=little 'MM'=big endian + # meaning of universe 10 2 2 chr '*\x00' or '\x00*' depending + # IFD0 off fr/II or MM 10 16 long relative to ...? + # -------------------- --- --- ----- ---------------------------- + segment_length = stream.read_short(offset) + if cls._is_non_Exif_APP1_segment(stream, offset): + return cls(marker_code, offset, segment_length, 72, 72) + tiff = cls._tiff_from_exif_segment(stream, offset, segment_length) + return cls(marker_code, offset, segment_length, tiff.horz_dpi, tiff.vert_dpi) + + @property + def horz_dpi(self): + """Horizontal dots per inch specified in this marker, defaults to 72 if not + specified.""" + return self._horz_dpi + + @property + def vert_dpi(self): + """Vertical dots per inch specified in this marker, defaults to 72 if not + specified.""" + return self._vert_dpi + + @classmethod + def _is_non_Exif_APP1_segment(cls, stream, offset): + """Return True if the APP1 segment at `offset` in `stream` is NOT an Exif + segment, as determined by the ``'Exif\x00\x00'`` signature at offset 2 in the + segment.""" + stream.seek(offset + 2) + exif_signature = stream.read(6) + return exif_signature != b"Exif\x00\x00" + + @classmethod + def _tiff_from_exif_segment(cls, stream, offset, segment_length): + """Return a |Tiff| instance parsed from the Exif APP1 segment of + `segment_length` at `offset` in `stream`.""" + # wrap full segment in its own stream and feed to Tiff() + stream.seek(offset + 8) + segment_bytes = stream.read(segment_length - 8) + substream = io.BytesIO(segment_bytes) + return Tiff.from_stream(substream) + + +class _SofMarker(_Marker): + """Represents a JFIF start of frame (SOFx) marker segment.""" + + def __init__(self, marker_code, offset, segment_length, px_width, px_height): + super(_SofMarker, self).__init__(marker_code, offset, segment_length) + self._px_width = px_width + self._px_height = px_height + + @classmethod + def from_stream(cls, stream, marker_code, offset): + """Return an |_SofMarker| instance for the SOFn marker at `offset` in stream.""" + # field off type notes + # ------------------ --- ----- ---------------------------- + # segment length 0 short + # Data precision 2 byte + # Vertical lines 3 short px_height + # Horizontal lines 5 short px_width + # ------------------ --- ----- ---------------------------- + segment_length = stream.read_short(offset) + px_height = stream.read_short(offset, 3) + px_width = stream.read_short(offset, 5) + return cls(marker_code, offset, segment_length, px_width, px_height) + + @property + def px_height(self): + """Image height in pixels.""" + return self._px_height + + @property + def px_width(self): + """Image width in pixels.""" + return self._px_width diff --git a/intelliaide/vendor/docx/image/png.py b/intelliaide/vendor/docx/image/png.py new file mode 100644 index 0000000..dd3cf81 --- /dev/null +++ b/intelliaide/vendor/docx/image/png.py @@ -0,0 +1,253 @@ +from .constants import MIME_TYPE, PNG_CHUNK_TYPE +from .exceptions import InvalidImageStreamError +from .helpers import BIG_ENDIAN, StreamReader +from .image import BaseImageHeader + + +class Png(BaseImageHeader): + """Image header parser for PNG images.""" + + @property + def content_type(self): + """MIME content type for this image, unconditionally `image/png` for PNG + images.""" + return MIME_TYPE.PNG + + @property + def default_ext(self): + """Default filename extension, always 'png' for PNG images.""" + return "png" + + @classmethod + def from_stream(cls, stream): + """Return a |Png| instance having header properties parsed from image in + `stream`.""" + parser = _PngParser.parse(stream) + + px_width = parser.px_width + px_height = parser.px_height + horz_dpi = parser.horz_dpi + vert_dpi = parser.vert_dpi + + return cls(px_width, px_height, horz_dpi, vert_dpi) + + +class _PngParser: + """Parses a PNG image stream to extract the image properties found in its chunks.""" + + def __init__(self, chunks): + super(_PngParser, self).__init__() + self._chunks = chunks + + @classmethod + def parse(cls, stream): + """Return a |_PngParser| instance containing the header properties parsed from + the PNG image in `stream`.""" + chunks = _Chunks.from_stream(stream) + return cls(chunks) + + @property + def px_width(self): + """The number of pixels in each row of the image.""" + IHDR = self._chunks.IHDR + return IHDR.px_width + + @property + def px_height(self): + """The number of stacked rows of pixels in the image.""" + IHDR = self._chunks.IHDR + return IHDR.px_height + + @property + def horz_dpi(self): + """Integer dots per inch for the width of this image. + + Defaults to 72 when not present in the file, as is often the case. + """ + pHYs = self._chunks.pHYs + if pHYs is None: + return 72 + return self._dpi(pHYs.units_specifier, pHYs.horz_px_per_unit) + + @property + def vert_dpi(self): + """Integer dots per inch for the height of this image. + + Defaults to 72 when not present in the file, as is often the case. + """ + pHYs = self._chunks.pHYs + if pHYs is None: + return 72 + return self._dpi(pHYs.units_specifier, pHYs.vert_px_per_unit) + + @staticmethod + def _dpi(units_specifier, px_per_unit): + """Return dots per inch value calculated from `units_specifier` and + `px_per_unit`.""" + if units_specifier == 1 and px_per_unit: + return int(round(px_per_unit * 0.0254)) + return 72 + + +class _Chunks: + """Collection of the chunks parsed from a PNG image stream.""" + + def __init__(self, chunk_iterable): + super(_Chunks, self).__init__() + self._chunks = list(chunk_iterable) + + @classmethod + def from_stream(cls, stream): + """Return a |_Chunks| instance containing the PNG chunks in `stream`.""" + chunk_parser = _ChunkParser.from_stream(stream) + chunks = list(chunk_parser.iter_chunks()) + return cls(chunks) + + @property + def IHDR(self): + """IHDR chunk in PNG image.""" + match = lambda chunk: chunk.type_name == PNG_CHUNK_TYPE.IHDR # noqa + IHDR = self._find_first(match) + if IHDR is None: + raise InvalidImageStreamError("no IHDR chunk in PNG image") + return IHDR + + @property + def pHYs(self): + """PHYs chunk in PNG image, or |None| if not present.""" + match = lambda chunk: chunk.type_name == PNG_CHUNK_TYPE.pHYs # noqa + return self._find_first(match) + + def _find_first(self, match): + """Return first chunk in stream order returning True for function `match`.""" + for chunk in self._chunks: + if match(chunk): + return chunk + return None + + +class _ChunkParser: + """Extracts chunks from a PNG image stream.""" + + def __init__(self, stream_rdr): + super(_ChunkParser, self).__init__() + self._stream_rdr = stream_rdr + + @classmethod + def from_stream(cls, stream): + """Return a |_ChunkParser| instance that can extract the chunks from the PNG + image in `stream`.""" + stream_rdr = StreamReader(stream, BIG_ENDIAN) + return cls(stream_rdr) + + def iter_chunks(self): + """Generate a |_Chunk| subclass instance for each chunk in this parser's PNG + stream, in the order encountered in the stream.""" + for chunk_type, offset in self._iter_chunk_offsets(): + chunk = _ChunkFactory(chunk_type, self._stream_rdr, offset) + yield chunk + + def _iter_chunk_offsets(self): + """Generate a (chunk_type, chunk_offset) 2-tuple for each of the chunks in the + PNG image stream. + + Iteration stops after the IEND chunk is returned. + """ + chunk_offset = 8 + while True: + chunk_data_len = self._stream_rdr.read_long(chunk_offset) + chunk_type = self._stream_rdr.read_str(4, chunk_offset, 4) + data_offset = chunk_offset + 8 + yield chunk_type, data_offset + if chunk_type == "IEND": + break + # incr offset for chunk len long, chunk type, chunk data, and CRC + chunk_offset += 4 + 4 + chunk_data_len + 4 + + +def _ChunkFactory(chunk_type, stream_rdr, offset): + """Return a |_Chunk| subclass instance appropriate to `chunk_type` parsed from + `stream_rdr` at `offset`.""" + chunk_cls_map = { + PNG_CHUNK_TYPE.IHDR: _IHDRChunk, + PNG_CHUNK_TYPE.pHYs: _pHYsChunk, + } + chunk_cls = chunk_cls_map.get(chunk_type, _Chunk) + return chunk_cls.from_offset(chunk_type, stream_rdr, offset) + + +class _Chunk: + """Base class for specific chunk types. + + Also serves as the default chunk type. + """ + + def __init__(self, chunk_type): + super(_Chunk, self).__init__() + self._chunk_type = chunk_type + + @classmethod + def from_offset(cls, chunk_type, stream_rdr, offset): + """Return a default _Chunk instance that only knows its chunk type.""" + return cls(chunk_type) + + @property + def type_name(self): + """The chunk type name, e.g. 'IHDR', 'pHYs', etc.""" + return self._chunk_type + + +class _IHDRChunk(_Chunk): + """IHDR chunk, contains the image dimensions.""" + + def __init__(self, chunk_type, px_width, px_height): + super(_IHDRChunk, self).__init__(chunk_type) + self._px_width = px_width + self._px_height = px_height + + @classmethod + def from_offset(cls, chunk_type, stream_rdr, offset): + """Return an _IHDRChunk instance containing the image dimensions extracted from + the IHDR chunk in `stream` at `offset`.""" + px_width = stream_rdr.read_long(offset) + px_height = stream_rdr.read_long(offset, 4) + return cls(chunk_type, px_width, px_height) + + @property + def px_width(self): + return self._px_width + + @property + def px_height(self): + return self._px_height + + +class _pHYsChunk(_Chunk): + """PYHs chunk, contains the image dpi information.""" + + def __init__(self, chunk_type, horz_px_per_unit, vert_px_per_unit, units_specifier): + super(_pHYsChunk, self).__init__(chunk_type) + self._horz_px_per_unit = horz_px_per_unit + self._vert_px_per_unit = vert_px_per_unit + self._units_specifier = units_specifier + + @classmethod + def from_offset(cls, chunk_type, stream_rdr, offset): + """Return a _pHYsChunk instance containing the image resolution extracted from + the pHYs chunk in `stream` at `offset`.""" + horz_px_per_unit = stream_rdr.read_long(offset) + vert_px_per_unit = stream_rdr.read_long(offset, 4) + units_specifier = stream_rdr.read_byte(offset, 8) + return cls(chunk_type, horz_px_per_unit, vert_px_per_unit, units_specifier) + + @property + def horz_px_per_unit(self): + return self._horz_px_per_unit + + @property + def vert_px_per_unit(self): + return self._vert_px_per_unit + + @property + def units_specifier(self): + return self._units_specifier diff --git a/intelliaide/vendor/docx/image/tiff.py b/intelliaide/vendor/docx/image/tiff.py new file mode 100644 index 0000000..1194929 --- /dev/null +++ b/intelliaide/vendor/docx/image/tiff.py @@ -0,0 +1,289 @@ +from .constants import MIME_TYPE, TIFF_FLD, TIFF_TAG +from .helpers import BIG_ENDIAN, LITTLE_ENDIAN, StreamReader +from .image import BaseImageHeader + + +class Tiff(BaseImageHeader): + """Image header parser for TIFF images. + + Handles both big and little endian byte ordering. + """ + + @property + def content_type(self): + """Return the MIME type of this TIFF image, unconditionally the string + ``image/tiff``.""" + return MIME_TYPE.TIFF + + @property + def default_ext(self): + """Default filename extension, always 'tiff' for TIFF images.""" + return "tiff" + + @classmethod + def from_stream(cls, stream): + """Return a |Tiff| instance containing the properties of the TIFF image in + `stream`.""" + parser = _TiffParser.parse(stream) + + px_width = parser.px_width + px_height = parser.px_height + horz_dpi = parser.horz_dpi + vert_dpi = parser.vert_dpi + + return cls(px_width, px_height, horz_dpi, vert_dpi) + + +class _TiffParser: + """Parses a TIFF image stream to extract the image properties found in its main + image file directory (IFD)""" + + def __init__(self, ifd_entries): + super(_TiffParser, self).__init__() + self._ifd_entries = ifd_entries + + @classmethod + def parse(cls, stream): + """Return an instance of |_TiffParser| containing the properties parsed from the + TIFF image in `stream`.""" + stream_rdr = cls._make_stream_reader(stream) + ifd0_offset = stream_rdr.read_long(4) + ifd_entries = _IfdEntries.from_stream(stream_rdr, ifd0_offset) + return cls(ifd_entries) + + @property + def horz_dpi(self): + """The horizontal dots per inch value calculated from the XResolution and + ResolutionUnit tags of the IFD; defaults to 72 if those tags are not present.""" + return self._dpi(TIFF_TAG.X_RESOLUTION) + + @property + def vert_dpi(self): + """The vertical dots per inch value calculated from the XResolution and + ResolutionUnit tags of the IFD; defaults to 72 if those tags are not present.""" + return self._dpi(TIFF_TAG.Y_RESOLUTION) + + @property + def px_height(self): + """The number of stacked rows of pixels in the image, |None| if the IFD contains + no ``ImageLength`` tag, the expected case when the TIFF is embeded in an Exif + image.""" + return self._ifd_entries.get(TIFF_TAG.IMAGE_LENGTH) + + @property + def px_width(self): + """The number of pixels in each row in the image, |None| if the IFD contains no + ``ImageWidth`` tag, the expected case when the TIFF is embeded in an Exif + image.""" + return self._ifd_entries.get(TIFF_TAG.IMAGE_WIDTH) + + @classmethod + def _detect_endian(cls, stream): + """Return either BIG_ENDIAN or LITTLE_ENDIAN depending on the endian indicator + found in the TIFF `stream` header, either 'MM' or 'II'.""" + stream.seek(0) + endian_str = stream.read(2) + return BIG_ENDIAN if endian_str == b"MM" else LITTLE_ENDIAN + + def _dpi(self, resolution_tag): + """Return the dpi value calculated for `resolution_tag`, which can be either + TIFF_TAG.X_RESOLUTION or TIFF_TAG.Y_RESOLUTION. + + The calculation is based on the values of both that tag and the + TIFF_TAG.RESOLUTION_UNIT tag in this parser's |_IfdEntries| instance. + """ + ifd_entries = self._ifd_entries + + if resolution_tag not in ifd_entries: + return 72 + + # resolution unit defaults to inches (2) + resolution_unit = ifd_entries.get(TIFF_TAG.RESOLUTION_UNIT, 2) + + if resolution_unit == 1: # aspect ratio only + return 72 + # resolution_unit == 2 for inches, 3 for centimeters + units_per_inch = 1 if resolution_unit == 2 else 2.54 + dots_per_unit = ifd_entries[resolution_tag] + return int(round(dots_per_unit * units_per_inch)) + + @classmethod + def _make_stream_reader(cls, stream): + """Return a |StreamReader| instance with wrapping `stream` and having "endian- + ness" determined by the 'MM' or 'II' indicator in the TIFF stream header.""" + endian = cls._detect_endian(stream) + return StreamReader(stream, endian) + + +class _IfdEntries: + """Image File Directory for a TIFF image, having mapping (dict) semantics allowing + "tag" values to be retrieved by tag code.""" + + def __init__(self, entries): + super(_IfdEntries, self).__init__() + self._entries = entries + + def __contains__(self, key): + """Provides ``in`` operator, e.g. ``tag in ifd_entries``""" + return self._entries.__contains__(key) + + def __getitem__(self, key): + """Provides indexed access, e.g. ``tag_value = ifd_entries[tag_code]``""" + return self._entries.__getitem__(key) + + @classmethod + def from_stream(cls, stream, offset): + """Return a new |_IfdEntries| instance parsed from `stream` starting at + `offset`.""" + ifd_parser = _IfdParser(stream, offset) + entries = {e.tag: e.value for e in ifd_parser.iter_entries()} + return cls(entries) + + def get(self, tag_code, default=None): + """Return value of IFD entry having tag matching `tag_code`, or `default` if no + matching tag found.""" + return self._entries.get(tag_code, default) + + +class _IfdParser: + """Service object that knows how to extract directory entries from an Image File + Directory (IFD)""" + + def __init__(self, stream_rdr, offset): + super(_IfdParser, self).__init__() + self._stream_rdr = stream_rdr + self._offset = offset + + def iter_entries(self): + """Generate an |_IfdEntry| instance corresponding to each entry in the + directory.""" + for idx in range(self._entry_count): + dir_entry_offset = self._offset + 2 + (idx * 12) + ifd_entry = _IfdEntryFactory(self._stream_rdr, dir_entry_offset) + yield ifd_entry + + @property + def _entry_count(self): + """The count of directory entries, read from the top of the IFD header.""" + return self._stream_rdr.read_short(self._offset) + + +def _IfdEntryFactory(stream_rdr, offset): + """Return an |_IfdEntry| subclass instance containing the value of the directory + entry at `offset` in `stream_rdr`.""" + ifd_entry_classes = { + TIFF_FLD.ASCII: _AsciiIfdEntry, + TIFF_FLD.SHORT: _ShortIfdEntry, + TIFF_FLD.LONG: _LongIfdEntry, + TIFF_FLD.RATIONAL: _RationalIfdEntry, + } + field_type = stream_rdr.read_short(offset, 2) + EntryCls = ifd_entry_classes.get(field_type, _IfdEntry) + return EntryCls.from_stream(stream_rdr, offset) + + +class _IfdEntry: + """Base class for IFD entry classes. + + Subclasses are differentiated by value type, e.g. ASCII, long int, etc. + """ + + def __init__(self, tag_code, value): + super(_IfdEntry, self).__init__() + self._tag_code = tag_code + self._value = value + + @classmethod + def from_stream(cls, stream_rdr, offset): + """Return an |_IfdEntry| subclass instance containing the tag and value of the + tag parsed from `stream_rdr` at `offset`. + + Note this method is common to all subclasses. Override the ``_parse_value()`` + method to provide distinctive behavior based on field type. + """ + tag_code = stream_rdr.read_short(offset, 0) + value_count = stream_rdr.read_long(offset, 4) + value_offset = stream_rdr.read_long(offset, 8) + value = cls._parse_value(stream_rdr, offset, value_count, value_offset) + return cls(tag_code, value) + + @classmethod + def _parse_value(cls, stream_rdr, offset, value_count, value_offset): + """Return the value of this field parsed from `stream_rdr` at `offset`. + + Intended to be overridden by subclasses. + """ + return "UNIMPLEMENTED FIELD TYPE" # pragma: no cover + + @property + def tag(self): + """Short int code that identifies this IFD entry.""" + return self._tag_code + + @property + def value(self): + """Value of this tag, its type being dependent on the tag.""" + return self._value + + +class _AsciiIfdEntry(_IfdEntry): + """IFD entry having the form of a NULL-terminated ASCII string.""" + + @classmethod + def _parse_value(cls, stream_rdr, offset, value_count, value_offset): + """Return the ASCII string parsed from `stream_rdr` at `value_offset`. + + The length of the string, including a terminating '\x00' (NUL) character, is in + `value_count`. + """ + return stream_rdr.read_str(value_count - 1, value_offset) + + +class _ShortIfdEntry(_IfdEntry): + """IFD entry expressed as a short (2-byte) integer.""" + + @classmethod + def _parse_value(cls, stream_rdr, offset, value_count, value_offset): + """Return the short int value contained in the `value_offset` field of this + entry. + + Only supports single values at present. + """ + if value_count == 1: + return stream_rdr.read_short(offset, 8) + else: # pragma: no cover + return "Multi-value short integer NOT IMPLEMENTED" + + +class _LongIfdEntry(_IfdEntry): + """IFD entry expressed as a long (4-byte) integer.""" + + @classmethod + def _parse_value(cls, stream_rdr, offset, value_count, value_offset): + """Return the long int value contained in the `value_offset` field of this + entry. + + Only supports single values at present. + """ + if value_count == 1: + return stream_rdr.read_long(offset, 8) + else: # pragma: no cover + return "Multi-value long integer NOT IMPLEMENTED" + + +class _RationalIfdEntry(_IfdEntry): + """IFD entry expressed as a numerator, denominator pair.""" + + @classmethod + def _parse_value(cls, stream_rdr, offset, value_count, value_offset): + """Return the rational (numerator / denominator) value at `value_offset` in + `stream_rdr` as a floating-point number. + + Only supports single values at present. + """ + if value_count == 1: + numerator = stream_rdr.read_long(value_offset) + denominator = stream_rdr.read_long(value_offset, 4) + return numerator / denominator + else: # pragma: no cover + return "Multi-value Rational NOT IMPLEMENTED" diff --git a/intelliaide/vendor/docx/opc/__init__.py b/intelliaide/vendor/docx/opc/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/intelliaide/vendor/docx/opc/constants.py b/intelliaide/vendor/docx/opc/constants.py new file mode 100644 index 0000000..a3d0e08 --- /dev/null +++ b/intelliaide/vendor/docx/opc/constants.py @@ -0,0 +1,306 @@ +"""Constant values related to the Open Packaging Convention. + +In particular it includes content types and relationship types. +""" + + +class CONTENT_TYPE: + """Content type URIs (like MIME-types) that specify a part's format.""" + + BMP = "image/bmp" + DML_CHART = "application/vnd.openxmlformats-officedocument.drawingml.chart+xml" + DML_CHARTSHAPES = "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml" + DML_DIAGRAM_COLORS = "application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml" + DML_DIAGRAM_DATA = "application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml" + DML_DIAGRAM_LAYOUT = "application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml" + DML_DIAGRAM_STYLE = "application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml" + GIF = "image/gif" + JPEG = "image/jpeg" + MS_PHOTO = "image/vnd.ms-photo" + OFC_CUSTOM_PROPERTIES = "application/vnd.openxmlformats-officedocument.custom-properties+xml" + OFC_CUSTOM_XML_PROPERTIES = ( + "application/vnd.openxmlformats-officedocument.customXmlProperties+xml" + ) + OFC_DRAWING = "application/vnd.openxmlformats-officedocument.drawing+xml" + OFC_EXTENDED_PROPERTIES = ( + "application/vnd.openxmlformats-officedocument.extended-properties+xml" + ) + OFC_OLE_OBJECT = "application/vnd.openxmlformats-officedocument.oleObject" + OFC_PACKAGE = "application/vnd.openxmlformats-officedocument.package" + OFC_THEME = "application/vnd.openxmlformats-officedocument.theme+xml" + OFC_THEME_OVERRIDE = "application/vnd.openxmlformats-officedocument.themeOverride+xml" + OFC_VML_DRAWING = "application/vnd.openxmlformats-officedocument.vmlDrawing" + OPC_CORE_PROPERTIES = "application/vnd.openxmlformats-package.core-properties+xml" + OPC_DIGITAL_SIGNATURE_CERTIFICATE = ( + "application/vnd.openxmlformats-package.digital-signature-certificate" + ) + OPC_DIGITAL_SIGNATURE_ORIGIN = "application/vnd.openxmlformats-package.digital-signature-origin" + OPC_DIGITAL_SIGNATURE_XMLSIGNATURE = ( + "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml" + ) + OPC_RELATIONSHIPS = "application/vnd.openxmlformats-package.relationships+xml" + PML_COMMENTS = "application/vnd.openxmlformats-officedocument.presentationml.comments+xml" + PML_COMMENT_AUTHORS = ( + "application/vnd.openxmlformats-officedocument.presentationml.commentAuthors+xml" + ) + PML_HANDOUT_MASTER = ( + "application/vnd.openxmlformats-officedocument.presentationml.handoutMaster+xml" + ) + PML_NOTES_MASTER = ( + "application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml" + ) + PML_NOTES_SLIDE = "application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml" + PML_PRESENTATION_MAIN = ( + "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml" + ) + PML_PRES_PROPS = "application/vnd.openxmlformats-officedocument.presentationml.presProps+xml" + PML_PRINTER_SETTINGS = ( + "application/vnd.openxmlformats-officedocument.presentationml.printerSettings" + ) + PML_SLIDE = "application/vnd.openxmlformats-officedocument.presentationml.slide+xml" + PML_SLIDESHOW_MAIN = ( + "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml" + ) + PML_SLIDE_LAYOUT = ( + "application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml" + ) + PML_SLIDE_MASTER = ( + "application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml" + ) + PML_SLIDE_UPDATE_INFO = ( + "application/vnd.openxmlformats-officedocument.presentationml.slideUpdateInfo+xml" + ) + PML_TABLE_STYLES = ( + "application/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml" + ) + PML_TAGS = "application/vnd.openxmlformats-officedocument.presentationml.tags+xml" + PML_TEMPLATE_MAIN = ( + "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml" + ) + PML_VIEW_PROPS = "application/vnd.openxmlformats-officedocument.presentationml.viewProps+xml" + PNG = "image/png" + SML_CALC_CHAIN = "application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml" + SML_CHARTSHEET = "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml" + SML_COMMENTS = "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml" + SML_CONNECTIONS = "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml" + SML_CUSTOM_PROPERTY = ( + "application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty" + ) + SML_DIALOGSHEET = "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml" + SML_EXTERNAL_LINK = ( + "application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml" + ) + SML_PIVOT_CACHE_DEFINITION = ( + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml" + ) + SML_PIVOT_CACHE_RECORDS = ( + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml" + ) + SML_PIVOT_TABLE = "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml" + SML_PRINTER_SETTINGS = ( + "application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings" + ) + SML_QUERY_TABLE = "application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml" + SML_REVISION_HEADERS = ( + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml" + ) + SML_REVISION_LOG = "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml" + SML_SHARED_STRINGS = ( + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml" + ) + SML_SHEET = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + SML_SHEET_MAIN = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" + SML_SHEET_METADATA = ( + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml" + ) + SML_STYLES = "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" + SML_TABLE = "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml" + SML_TABLE_SINGLE_CELLS = ( + "application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml" + ) + SML_TEMPLATE_MAIN = ( + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml" + ) + SML_USER_NAMES = "application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml" + SML_VOLATILE_DEPENDENCIES = ( + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml" + ) + SML_WORKSHEET = "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" + TIFF = "image/tiff" + WML_COMMENTS = "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml" + WML_DOCUMENT = "application/vnd.openxmlformats-officedocument.wordprocessingml.document" + WML_DOCUMENT_GLOSSARY = ( + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml" + ) + WML_DOCUMENT_MAIN = ( + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml" + ) + WML_ENDNOTES = "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml" + WML_FONT_TABLE = "application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml" + WML_FOOTER = "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml" + WML_FOOTNOTES = "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml" + WML_HEADER = "application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml" + WML_NUMBERING = "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml" + WML_PRINTER_SETTINGS = ( + "application/vnd.openxmlformats-officedocument.wordprocessingml.printerSettings" + ) + WML_SETTINGS = "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml" + WML_STYLES = "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml" + WML_WEB_SETTINGS = ( + "application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml" + ) + XML = "application/xml" + X_EMF = "image/x-emf" + X_FONTDATA = "application/x-fontdata" + X_FONT_TTF = "application/x-font-ttf" + X_WMF = "image/x-wmf" + + +class NAMESPACE: + """Constant values for OPC XML namespaces.""" + + DML_WORDPROCESSING_DRAWING = ( + "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" + ) + OFC_RELATIONSHIPS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships" + OPC_RELATIONSHIPS = "http://schemas.openxmlformats.org/package/2006/relationships" + OPC_CONTENT_TYPES = "http://schemas.openxmlformats.org/package/2006/content-types" + WML_MAIN = "http://schemas.openxmlformats.org/wordprocessingml/2006/main" + + +class RELATIONSHIP_TARGET_MODE: + """Open XML relationship target modes.""" + + EXTERNAL = "External" + INTERNAL = "Internal" + + +class RELATIONSHIP_TYPE: + AUDIO = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/audio" + A_F_CHUNK = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk" + CALC_CHAIN = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain" + CERTIFICATE = ( + "http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/certificate" + ) + CHART = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart" + CHARTSHEET = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet" + CHART_USER_SHAPES = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartUserShapes" + ) + COMMENTS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments" + COMMENT_AUTHORS = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/commentAuthors" + ) + CONNECTIONS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/connections" + CONTROL = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/control" + CORE_PROPERTIES = ( + "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" + ) + CUSTOM_PROPERTIES = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties" + ) + CUSTOM_PROPERTY = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customProperty" + ) + CUSTOM_XML = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml" + CUSTOM_XML_PROPS = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps" + ) + DIAGRAM_COLORS = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramColors" + ) + DIAGRAM_DATA = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramData" + DIAGRAM_LAYOUT = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramLayout" + ) + DIAGRAM_QUICK_STYLE = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramQuickStyle" + ) + DIALOGSHEET = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet" + DRAWING = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing" + ENDNOTES = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes" + EXTENDED_PROPERTIES = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" + ) + EXTERNAL_LINK = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink" + ) + FONT = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/font" + FONT_TABLE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable" + FOOTER = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer" + FOOTNOTES = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes" + GLOSSARY_DOCUMENT = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/glossaryDocument" + ) + HANDOUT_MASTER = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/handoutMaster" + ) + HEADER = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header" + HYPERLINK = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" + IMAGE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" + NOTES_MASTER = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster" + NOTES_SLIDE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide" + NUMBERING = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering" + OFFICE_DOCUMENT = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" + ) + OLE_OBJECT = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject" + ORIGIN = "http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/origin" + PACKAGE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/package" + PIVOT_CACHE_DEFINITION = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheDefinition" + ) + PIVOT_CACHE_RECORDS = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships" + "/spreadsheetml/pivotCacheRecords" + ) + PIVOT_TABLE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotTable" + PRES_PROPS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/presProps" + PRINTER_SETTINGS = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings" + ) + QUERY_TABLE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/queryTable" + REVISION_HEADERS = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/revisionHeaders" + ) + REVISION_LOG = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/revisionLog" + SETTINGS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings" + SHARED_STRINGS = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" + ) + SHEET_METADATA = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata" + ) + SIGNATURE = ( + "http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/signature" + ) + SLIDE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide" + SLIDE_LAYOUT = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout" + SLIDE_MASTER = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster" + SLIDE_UPDATE_INFO = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideUpdateInfo" + ) + STYLES = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" + TABLE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/table" + TABLE_SINGLE_CELLS = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/tableSingleCells" + ) + TABLE_STYLES = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/tableStyles" + TAGS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/tags" + THEME = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" + THEME_OVERRIDE = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/themeOverride" + ) + THUMBNAIL = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail" + USERNAMES = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/usernames" + VIDEO = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/video" + VIEW_PROPS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/viewProps" + VML_DRAWING = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing" + VOLATILE_DEPENDENCIES = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/volatileDependencies" + ) + WEB_SETTINGS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings" + WORKSHEET_SOURCE = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheetSource" + ) + XML_MAPS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/xmlMaps" diff --git a/intelliaide/vendor/docx/opc/coreprops.py b/intelliaide/vendor/docx/opc/coreprops.py new file mode 100644 index 0000000..62f0c5a --- /dev/null +++ b/intelliaide/vendor/docx/opc/coreprops.py @@ -0,0 +1,142 @@ +"""Provides CoreProperties, Dublin-Core attributes of the document. + +These are broadly-standardized attributes like author, last-modified, etc. +""" + +from __future__ import annotations + +import datetime as dt +from typing import TYPE_CHECKING + +from docx.oxml.coreprops import CT_CoreProperties + +if TYPE_CHECKING: + from docx.oxml.coreprops import CT_CoreProperties + + +class CoreProperties: + """Corresponds to part named ``/docProps/core.xml``, containing the core document + properties for this document package.""" + + def __init__(self, element: CT_CoreProperties): + self._element = element + + @property + def author(self): + return self._element.author_text + + @author.setter + def author(self, value: str): + self._element.author_text = value + + @property + def category(self): + return self._element.category_text + + @category.setter + def category(self, value: str): + self._element.category_text = value + + @property + def comments(self): + return self._element.comments_text + + @comments.setter + def comments(self, value: str): + self._element.comments_text = value + + @property + def content_status(self): + return self._element.contentStatus_text + + @content_status.setter + def content_status(self, value: str): + self._element.contentStatus_text = value + + @property + def created(self): + return self._element.created_datetime + + @created.setter + def created(self, value: dt.datetime): + self._element.created_datetime = value + + @property + def identifier(self): + return self._element.identifier_text + + @identifier.setter + def identifier(self, value: str): + self._element.identifier_text = value + + @property + def keywords(self): + return self._element.keywords_text + + @keywords.setter + def keywords(self, value: str): + self._element.keywords_text = value + + @property + def language(self): + return self._element.language_text + + @language.setter + def language(self, value: str): + self._element.language_text = value + + @property + def last_modified_by(self): + return self._element.lastModifiedBy_text + + @last_modified_by.setter + def last_modified_by(self, value: str): + self._element.lastModifiedBy_text = value + + @property + def last_printed(self): + return self._element.lastPrinted_datetime + + @last_printed.setter + def last_printed(self, value: dt.datetime): + self._element.lastPrinted_datetime = value + + @property + def modified(self): + return self._element.modified_datetime + + @modified.setter + def modified(self, value: dt.datetime): + self._element.modified_datetime = value + + @property + def revision(self): + return self._element.revision_number + + @revision.setter + def revision(self, value: int): + self._element.revision_number = value + + @property + def subject(self): + return self._element.subject_text + + @subject.setter + def subject(self, value: str): + self._element.subject_text = value + + @property + def title(self): + return self._element.title_text + + @title.setter + def title(self, value: str): + self._element.title_text = value + + @property + def version(self): + return self._element.version_text + + @version.setter + def version(self, value: str): + self._element.version_text = value diff --git a/intelliaide/vendor/docx/opc/exceptions.py b/intelliaide/vendor/docx/opc/exceptions.py new file mode 100644 index 0000000..c5583d3 --- /dev/null +++ b/intelliaide/vendor/docx/opc/exceptions.py @@ -0,0 +1,12 @@ +"""Exceptions specific to python-opc. + +The base exception class is OpcError. +""" + + +class OpcError(Exception): + """Base error class for python-opc.""" + + +class PackageNotFoundError(OpcError): + """Raised when a package cannot be found at the specified path.""" diff --git a/intelliaide/vendor/docx/opc/oxml.py b/intelliaide/vendor/docx/opc/oxml.py new file mode 100644 index 0000000..7d3c489 --- /dev/null +++ b/intelliaide/vendor/docx/opc/oxml.py @@ -0,0 +1,247 @@ +# pyright: reportPrivateUsage=false + +"""Temporary stand-in for main oxml module. + +This module came across with the PackageReader transplant. Probably much will get +replaced with objects from the pptx.oxml.core and then this module will either get +deleted or only hold the package related custom element classes. +""" + +from __future__ import annotations + +from typing import cast + +from lxml import etree + +from docx.opc.constants import NAMESPACE as NS +from docx.opc.constants import RELATIONSHIP_TARGET_MODE as RTM + +# configure XML parser +element_class_lookup = etree.ElementNamespaceClassLookup() +oxml_parser = etree.XMLParser(remove_blank_text=True, resolve_entities=False) +oxml_parser.set_element_class_lookup(element_class_lookup) + +nsmap = { + "ct": NS.OPC_CONTENT_TYPES, + "pr": NS.OPC_RELATIONSHIPS, + "r": NS.OFC_RELATIONSHIPS, +} + + +# =========================================================================== +# functions +# =========================================================================== + + +def parse_xml(text: str) -> etree._Element: + """`etree.fromstring()` replacement that uses oxml parser.""" + return etree.fromstring(text, oxml_parser) + + +def qn(tag: str) -> str: + """Stands for "qualified name", a utility function to turn a namespace prefixed tag + name into a Clark-notation qualified tag name for lxml. + + For + example, ``qn('p:cSld')`` returns ``'{http://schemas.../main}cSld'``. + """ + prefix, tagroot = tag.split(":") + uri = nsmap[prefix] + return "{%s}%s" % (uri, tagroot) + + +def serialize_part_xml(part_elm: etree._Element) -> bytes: + """Serialize `part_elm` etree element to XML suitable for storage as an XML part. + + That is to say, no insignificant whitespace added for readability, and an + appropriate XML declaration added with UTF-8 encoding specified. + """ + return etree.tostring(part_elm, encoding="UTF-8", standalone=True) + + +def serialize_for_reading(element: etree._Element) -> str: + """Serialize `element` to human-readable XML suitable for tests. + + No XML declaration. + """ + return etree.tostring(element, encoding="unicode", pretty_print=True) + + +# =========================================================================== +# Custom element classes +# =========================================================================== + + +class BaseOxmlElement(etree.ElementBase): + """Base class for all custom element classes, to add standardized behavior to all + classes in one place.""" + + @property + def xml(self) -> str: + """Return XML string for this element, suitable for testing purposes. + + Pretty printed for readability and without an XML declaration at the top. + """ + return serialize_for_reading(self) + + +class CT_Default(BaseOxmlElement): + """`` element that appears in `[Content_Types].xml` part. + + Used to specify a default content type to be applied to any part with the specified extension. + """ + + @property + def content_type(self): + """String held in the ``ContentType`` attribute of this ```` + element.""" + return self.get("ContentType") + + @property + def extension(self): + """String held in the ``Extension`` attribute of this ```` element.""" + return self.get("Extension") + + @staticmethod + def new(ext: str, content_type: str): + """Return a new ```` element with attributes set to parameter values.""" + xml = '' % nsmap["ct"] + default = parse_xml(xml) + default.set("Extension", ext) + default.set("ContentType", content_type) + return default + + +class CT_Override(BaseOxmlElement): + """```` element, specifying the content type to be applied for a part with + the specified partname.""" + + @property + def content_type(self): + """String held in the ``ContentType`` attribute of this ```` + element.""" + return self.get("ContentType") + + @staticmethod + def new(partname, content_type): + """Return a new ```` element with attributes set to parameter values.""" + xml = '' % nsmap["ct"] + override = parse_xml(xml) + override.set("PartName", partname) + override.set("ContentType", content_type) + return override + + @property + def partname(self): + """String held in the ``PartName`` attribute of this ```` element.""" + return self.get("PartName") + + +class CT_Relationship(BaseOxmlElement): + """`` element, representing a single relationship from source to target part.""" + + @staticmethod + def new(rId: str, reltype: str, target: str, target_mode: str = RTM.INTERNAL): + """Return a new ```` element.""" + xml = '' % nsmap["pr"] + relationship = parse_xml(xml) + relationship.set("Id", rId) + relationship.set("Type", reltype) + relationship.set("Target", target) + if target_mode == RTM.EXTERNAL: + relationship.set("TargetMode", RTM.EXTERNAL) + return relationship + + @property + def rId(self): + """String held in the ``Id`` attribute of this ```` element.""" + return self.get("Id") + + @property + def reltype(self): + """String held in the ``Type`` attribute of this ```` element.""" + return self.get("Type") + + @property + def target_ref(self): + """String held in the ``Target`` attribute of this ```` + element.""" + return self.get("Target") + + @property + def target_mode(self): + """String held in the ``TargetMode`` attribute of this ```` + element, either ``Internal`` or ``External``. + + Defaults to ``Internal``. + """ + return self.get("TargetMode", RTM.INTERNAL) + + +class CT_Relationships(BaseOxmlElement): + """```` element, the root element in a .rels file.""" + + def add_rel(self, rId: str, reltype: str, target: str, is_external: bool = False): + """Add a child ```` element with attributes set according to + parameter values.""" + target_mode = RTM.EXTERNAL if is_external else RTM.INTERNAL + relationship = CT_Relationship.new(rId, reltype, target, target_mode) + self.append(relationship) + + @staticmethod + def new() -> CT_Relationships: + """Return a new ```` element.""" + xml = '' % nsmap["pr"] + return cast(CT_Relationships, parse_xml(xml)) + + @property + def Relationship_lst(self): + """Return a list containing all the ```` child elements.""" + return self.findall(qn("pr:Relationship")) + + @property + def xml(self): + """Return XML string for this element, suitable for saving in a .rels stream, + not pretty printed and with an XML declaration at the top.""" + return serialize_part_xml(self) + + +class CT_Types(BaseOxmlElement): + """```` element, the container element for Default and Override elements in + [Content_Types].xml.""" + + def add_default(self, ext, content_type): + """Add a child ```` element with attributes set to parameter values.""" + default = CT_Default.new(ext, content_type) + self.append(default) + + def add_override(self, partname, content_type): + """Add a child ```` element with attributes set to parameter + values.""" + override = CT_Override.new(partname, content_type) + self.append(override) + + @property + def defaults(self): + return self.findall(qn("ct:Default")) + + @staticmethod + def new(): + """Return a new ```` element.""" + xml = '' % nsmap["ct"] + types = parse_xml(xml) + return types + + @property + def overrides(self): + return self.findall(qn("ct:Override")) + + +ct_namespace = element_class_lookup.get_namespace(nsmap["ct"]) +ct_namespace["Default"] = CT_Default +ct_namespace["Override"] = CT_Override +ct_namespace["Types"] = CT_Types + +pr_namespace = element_class_lookup.get_namespace(nsmap["pr"]) +pr_namespace["Relationship"] = CT_Relationship +pr_namespace["Relationships"] = CT_Relationships diff --git a/intelliaide/vendor/docx/opc/package.py b/intelliaide/vendor/docx/opc/package.py new file mode 100644 index 0000000..3c1cdca --- /dev/null +++ b/intelliaide/vendor/docx/opc/package.py @@ -0,0 +1,219 @@ +"""Objects that implement reading and writing OPC packages.""" + +from __future__ import annotations + +from typing import IO, TYPE_CHECKING, Iterator, cast + +from docx.opc.constants import RELATIONSHIP_TYPE as RT +from docx.opc.packuri import PACKAGE_URI, PackURI +from docx.opc.part import PartFactory +from docx.opc.parts.coreprops import CorePropertiesPart +from docx.opc.pkgreader import PackageReader +from docx.opc.pkgwriter import PackageWriter +from docx.opc.rel import Relationships +from docx.shared import lazyproperty + +if TYPE_CHECKING: + from typing_extensions import Self + + from docx.opc.coreprops import CoreProperties + from docx.opc.part import Part + from docx.opc.rel import _Relationship # pyright: ignore[reportPrivateUsage] + + +class OpcPackage: + """Main API class for |python-opc|. + + A new instance is constructed by calling the :meth:`open` class method with a path + to a package file or file-like object containing one. + """ + + def after_unmarshal(self): + """Entry point for any post-unmarshaling processing. + + May be overridden by subclasses without forwarding call to super. + """ + # don't place any code here, just catch call if not overridden by + # subclass + pass + + @property + def core_properties(self) -> CoreProperties: + """|CoreProperties| object providing read/write access to the Dublin Core + properties for this document.""" + return self._core_properties_part.core_properties + + def iter_rels(self) -> Iterator[_Relationship]: + """Generate exactly one reference to each relationship in the package by + performing a depth-first traversal of the rels graph.""" + + def walk_rels( + source: OpcPackage | Part, visited: list[Part] | None = None + ) -> Iterator[_Relationship]: + visited = [] if visited is None else visited + for rel in source.rels.values(): + yield rel + if rel.is_external: + continue + part = rel.target_part + if part in visited: + continue + visited.append(part) + new_source = part + for rel in walk_rels(new_source, visited): + yield rel + + for rel in walk_rels(self): + yield rel + + def iter_parts(self) -> Iterator[Part]: + """Generate exactly one reference to each of the parts in the package by + performing a depth-first traversal of the rels graph.""" + + def walk_parts(source, visited=[]): + for rel in source.rels.values(): + if rel.is_external: + continue + part = rel.target_part + if part in visited: + continue + visited.append(part) + yield part + new_source = part + for part in walk_parts(new_source, visited): + yield part + + for part in walk_parts(self): + yield part + + def load_rel(self, reltype: str, target: Part | str, rId: str, is_external: bool = False): + """Return newly added |_Relationship| instance of `reltype` between this part + and `target` with key `rId`. + + Target mode is set to ``RTM.EXTERNAL`` if `is_external` is |True|. Intended for + use during load from a serialized package, where the rId is well known. Other + methods exist for adding a new relationship to the package during processing. + """ + return self.rels.add_relationship(reltype, target, rId, is_external) + + @property + def main_document_part(self): + """Return a reference to the main document part for this package. + + Examples include a document part for a WordprocessingML package, a presentation + part for a PresentationML package, or a workbook part for a SpreadsheetML + package. + """ + return self.part_related_by(RT.OFFICE_DOCUMENT) + + def next_partname(self, template: str) -> PackURI: + """Return a |PackURI| instance representing partname matching `template`. + + The returned part-name has the next available numeric suffix to distinguish it + from other parts of its type. `template` is a printf (%)-style template string + containing a single replacement item, a '%d' to be used to insert the integer + portion of the partname. Example: "/word/header%d.xml" + """ + partnames = {part.partname for part in self.iter_parts()} + for n in range(1, len(partnames) + 2): + candidate_partname = template % n + if candidate_partname not in partnames: + return PackURI(candidate_partname) + + @classmethod + def open(cls, pkg_file: str | IO[bytes]) -> Self: + """Return an |OpcPackage| instance loaded with the contents of `pkg_file`.""" + pkg_reader = PackageReader.from_file(pkg_file) + package = cls() + Unmarshaller.unmarshal(pkg_reader, package, PartFactory) + return package + + def part_related_by(self, reltype: str) -> Part: + """Return part to which this package has a relationship of `reltype`. + + Raises |KeyError| if no such relationship is found and |ValueError| if more than + one such relationship is found. + """ + return self.rels.part_with_reltype(reltype) + + @property + def parts(self) -> list[Part]: + """Return a list containing a reference to each of the parts in this package.""" + return list(self.iter_parts()) + + def relate_to(self, part: Part, reltype: str): + """Return rId key of new or existing relationship to `part`. + + If a relationship of `reltype` to `part` already exists, its rId is returned. Otherwise a + new relationship is created and that rId is returned. + """ + rel = self.rels.get_or_add(reltype, part) + return rel.rId + + @lazyproperty + def rels(self): + """Return a reference to the |Relationships| instance holding the collection of + relationships for this package.""" + return Relationships(PACKAGE_URI.baseURI) + + def save(self, pkg_file: str | IO[bytes]): + """Save this package to `pkg_file`. + + `pkg_file` can be either a file-path or a file-like object. + """ + for part in self.parts: + part.before_marshal() + PackageWriter.write(pkg_file, self.rels, self.parts) + + @property + def _core_properties_part(self) -> CorePropertiesPart: + """|CorePropertiesPart| object related to this package. + + Creates a default core properties part if one is not present (not common). + """ + try: + return cast(CorePropertiesPart, self.part_related_by(RT.CORE_PROPERTIES)) + except KeyError: + core_properties_part = CorePropertiesPart.default(self) + self.relate_to(core_properties_part, RT.CORE_PROPERTIES) + return core_properties_part + + +class Unmarshaller: + """Hosts static methods for unmarshalling a package from a |PackageReader|.""" + + @staticmethod + def unmarshal(pkg_reader, package, part_factory): + """Construct graph of parts and realized relationships based on the contents of + `pkg_reader`, delegating construction of each part to `part_factory`. + + Package relationships are added to `pkg`. + """ + parts = Unmarshaller._unmarshal_parts(pkg_reader, package, part_factory) + Unmarshaller._unmarshal_relationships(pkg_reader, package, parts) + for part in parts.values(): + part.after_unmarshal() + package.after_unmarshal() + + @staticmethod + def _unmarshal_parts(pkg_reader, package, part_factory): + """Return a dictionary of |Part| instances unmarshalled from `pkg_reader`, keyed + by partname. + + Side-effect is that each part in `pkg_reader` is constructed using + `part_factory`. + """ + parts = {} + for partname, content_type, reltype, blob in pkg_reader.iter_sparts(): + parts[partname] = part_factory(partname, content_type, reltype, blob, package) + return parts + + @staticmethod + def _unmarshal_relationships(pkg_reader, package, parts): + """Add a relationship to the source object corresponding to each of the + relationships in `pkg_reader` with its target_part set to the actual target part + in `parts`.""" + for source_uri, srel in pkg_reader.iter_srels(): + source = package if source_uri == "/" else parts[source_uri] + target = srel.target_ref if srel.is_external else parts[srel.target_partname] + source.load_rel(srel.reltype, target, srel.rId, srel.is_external) diff --git a/intelliaide/vendor/docx/opc/packuri.py b/intelliaide/vendor/docx/opc/packuri.py new file mode 100644 index 0000000..89437b1 --- /dev/null +++ b/intelliaide/vendor/docx/opc/packuri.py @@ -0,0 +1,109 @@ +"""Provides the PackURI value type. + +Also some useful known pack URI strings such as PACKAGE_URI. +""" + +from __future__ import annotations + +import posixpath +import re + + +class PackURI(str): + """Provides access to pack URI components such as the baseURI and the filename slice. + + Behaves as |str| otherwise. + """ + + _filename_re = re.compile("([a-zA-Z]+)([1-9][0-9]*)?") + + def __new__(cls, pack_uri_str: str): + if pack_uri_str[0] != "/": + tmpl = "PackURI must begin with slash, got '%s'" + raise ValueError(tmpl % pack_uri_str) + return str.__new__(cls, pack_uri_str) + + @staticmethod + def from_rel_ref(baseURI: str, relative_ref: str) -> PackURI: + """The absolute PackURI formed by translating `relative_ref` onto `baseURI`.""" + joined_uri = posixpath.join(baseURI, relative_ref) + abs_uri = posixpath.abspath(joined_uri) + return PackURI(abs_uri) + + @property + def baseURI(self) -> str: + """The base URI of this pack URI, the directory portion, roughly speaking. + + E.g. ``'/ppt/slides'`` for ``'/ppt/slides/slide1.xml'``. For the package pseudo- + partname '/', baseURI is '/'. + """ + return posixpath.split(self)[0] + + @property + def ext(self) -> str: + """The extension portion of this pack URI, e.g. ``'xml'`` for ``'/word/document.xml'``. + + Note the period is not included. + """ + # raw_ext is either empty string or starts with period, e.g. '.xml' + raw_ext = posixpath.splitext(self)[1] + return raw_ext[1:] if raw_ext.startswith(".") else raw_ext + + @property + def filename(self): + """The "filename" portion of this pack URI, e.g. ``'slide1.xml'`` for + ``'/ppt/slides/slide1.xml'``. + + For the package pseudo-partname '/', filename is ''. + """ + return posixpath.split(self)[1] + + @property + def idx(self): + """Return partname index as integer for tuple partname or None for singleton + partname, e.g. ``21`` for ``'/ppt/slides/slide21.xml'`` and |None| for + ``'/ppt/presentation.xml'``.""" + filename = self.filename + if not filename: + return None + name_part = posixpath.splitext(filename)[0] # filename w/ext removed + match = self._filename_re.match(name_part) + if match is None: + return None + if match.group(2): + return int(match.group(2)) + return None + + @property + def membername(self): + """The pack URI with the leading slash stripped off, the form used as the Zip + file membername for the package item. + + Returns '' for the package pseudo-partname '/'. + """ + return self[1:] + + def relative_ref(self, baseURI: str): + """Return string containing relative reference to package item from `baseURI`. + + E.g. PackURI('/ppt/slideLayouts/slideLayout1.xml') would return + '../slideLayouts/slideLayout1.xml' for baseURI '/ppt/slides'. + """ + # workaround for posixpath bug in 2.6, doesn't generate correct + # relative path when `start` (second) parameter is root ('/') + return self[1:] if baseURI == "/" else posixpath.relpath(self, baseURI) + + @property + def rels_uri(self): + """The pack URI of the .rels part corresponding to the current pack URI. + + Only produces sensible output if the pack URI is a partname or the package + pseudo-partname '/'. + """ + rels_filename = "%s.rels" % self.filename + rels_uri_str = posixpath.join(self.baseURI, "_rels", rels_filename) + return PackURI(rels_uri_str) + + +PACKAGE_URI = PackURI("/") +CONTENT_TYPES_URI = PackURI("/[Content_Types].xml") diff --git a/intelliaide/vendor/docx/opc/part.py b/intelliaide/vendor/docx/opc/part.py new file mode 100644 index 0000000..cbb4ab5 --- /dev/null +++ b/intelliaide/vendor/docx/opc/part.py @@ -0,0 +1,247 @@ +# pyright: reportImportCycles=false + +"""Open Packaging Convention (OPC) objects related to package parts.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Callable, Type, cast + +from docx.opc.oxml import serialize_part_xml +from docx.opc.packuri import PackURI +from docx.opc.rel import Relationships +from docx.opc.shared import cls_method_fn +from docx.oxml.parser import parse_xml +from docx.shared import lazyproperty + +if TYPE_CHECKING: + from docx.oxml.xmlchemy import BaseOxmlElement + from docx.package import Package + + +class Part: + """Base class for package parts. + + Provides common properties and methods, but intended to be subclassed in client code + to implement specific part behaviors. + """ + + def __init__( + self, + partname: PackURI, + content_type: str, + blob: bytes | None = None, + package: Package | None = None, + ): + super(Part, self).__init__() + self._partname = partname + self._content_type = content_type + self._blob = blob + self._package = package + + def after_unmarshal(self): + """Entry point for post-unmarshaling processing, for example to parse the part + XML. + + May be overridden by subclasses without forwarding call to super. + """ + # don't place any code here, just catch call if not overridden by + # subclass + pass + + def before_marshal(self): + """Entry point for pre-serialization processing, for example to finalize part + naming if necessary. + + May be overridden by subclasses without forwarding call to super. + """ + # don't place any code here, just catch call if not overridden by + # subclass + pass + + @property + def blob(self) -> bytes: + """Contents of this package part as a sequence of bytes. + + May be text or binary. Intended to be overridden by subclasses. Default behavior + is to return load blob. + """ + return self._blob or b"" + + @property + def content_type(self): + """Content type of this part.""" + return self._content_type + + def drop_rel(self, rId: str): + """Remove the relationship identified by `rId` if its reference count is less + than 2. + + Relationships with a reference count of 0 are implicit relationships. + """ + if self._rel_ref_count(rId) < 2: + del self.rels[rId] + + @classmethod + def load(cls, partname: PackURI, content_type: str, blob: bytes, package: Package): + return cls(partname, content_type, blob, package) + + def load_rel(self, reltype: str, target: Part | str, rId: str, is_external: bool = False): + """Return newly added |_Relationship| instance of `reltype`. + + The new relationship relates the `target` part to this part with key `rId`. + + Target mode is set to ``RTM.EXTERNAL`` if `is_external` is |True|. Intended for + use during load from a serialized package, where the rId is well-known. Other + methods exist for adding a new relationship to a part when manipulating a part. + """ + return self.rels.add_relationship(reltype, target, rId, is_external) + + @property + def package(self): + """|OpcPackage| instance this part belongs to.""" + return self._package + + @property + def partname(self): + """|PackURI| instance holding partname of this part, e.g. + '/ppt/slides/slide1.xml'.""" + return self._partname + + @partname.setter + def partname(self, partname: str): + if not isinstance(partname, PackURI): + tmpl = "partname must be instance of PackURI, got '%s'" + raise TypeError(tmpl % type(partname).__name__) + self._partname = partname + + def part_related_by(self, reltype: str) -> Part: + """Return part to which this part has a relationship of `reltype`. + + Raises |KeyError| if no such relationship is found and |ValueError| if more than + one such relationship is found. Provides ability to resolve implicitly related + part, such as Slide -> SlideLayout. + """ + return self.rels.part_with_reltype(reltype) + + def relate_to(self, target: Part | str, reltype: str, is_external: bool = False) -> str: + """Return rId key of relationship of `reltype` to `target`. + + The returned `rId` is from an existing relationship if there is one, otherwise a + new relationship is created. + """ + if is_external: + return self.rels.get_or_add_ext_rel(reltype, cast(str, target)) + else: + rel = self.rels.get_or_add(reltype, cast(Part, target)) + return rel.rId + + @property + def related_parts(self): + """Dictionary mapping related parts by rId, so child objects can resolve + explicit relationships present in the part XML, e.g. sldIdLst to a specific + |Slide| instance.""" + return self.rels.related_parts + + @lazyproperty + def rels(self): + """|Relationships| instance holding the relationships for this part.""" + # -- prevent breakage in `python-docx-template` by retaining legacy `._rels` attribute -- + self._rels = Relationships(self._partname.baseURI) + return self._rels + + def target_ref(self, rId: str) -> str: + """Return URL contained in target ref of relationship identified by `rId`.""" + rel = self.rels[rId] + return rel.target_ref + + def _rel_ref_count(self, rId: str) -> int: + """Return the count of references in this part to the relationship identified by `rId`. + + Only an XML part can contain references, so this is 0 for `Part`. + """ + return 0 + + +class PartFactory: + """Provides a way for client code to specify a subclass of |Part| to be constructed + by |Unmarshaller| based on its content type and/or a custom callable. + + Setting ``PartFactory.part_class_selector`` to a callable object will cause that + object to be called with the parameters ``content_type, reltype``, once for each + part in the package. If the callable returns an object, it is used as the class for + that part. If it returns |None|, part class selection falls back to the content type + map defined in ``PartFactory.part_type_for``. If no class is returned from either of + these, the class contained in ``PartFactory.default_part_type`` is used to construct + the part, which is by default ``opc.package.Part``. + """ + + part_class_selector: Callable[[str, str], Type[Part] | None] | None + part_type_for: dict[str, Type[Part]] = {} + default_part_type = Part + + def __new__( + cls, + partname: PackURI, + content_type: str, + reltype: str, + blob: bytes, + package: Package, + ): + PartClass: Type[Part] | None = None + if cls.part_class_selector is not None: + part_class_selector = cls_method_fn(cls, "part_class_selector") + PartClass = part_class_selector(content_type, reltype) + if PartClass is None: + PartClass = cls._part_cls_for(content_type) + return PartClass.load(partname, content_type, blob, package) + + @classmethod + def _part_cls_for(cls, content_type: str): + """Return the custom part class registered for `content_type`, or the default + part class if no custom class is registered for `content_type`.""" + if content_type in cls.part_type_for: + return cls.part_type_for[content_type] + return cls.default_part_type + + +class XmlPart(Part): + """Base class for package parts containing an XML payload, which is most of them. + + Provides additional methods to the |Part| base class that take care of parsing and + reserializing the XML payload and managing relationships to other parts. + """ + + def __init__( + self, partname: PackURI, content_type: str, element: BaseOxmlElement, package: Package + ): + super(XmlPart, self).__init__(partname, content_type, package=package) + self._element = element + + @property + def blob(self): + return serialize_part_xml(self._element) + + @property + def element(self): + """The root XML element of this XML part.""" + return self._element + + @classmethod + def load(cls, partname: PackURI, content_type: str, blob: bytes, package: Package): + element = parse_xml(blob) + return cls(partname, content_type, element, package) + + @property + def part(self): + """Part of the parent protocol, "children" of the document will not know the + part that contains them so must ask their parent object. + + That chain of delegation ends here for child objects. + """ + return self + + def _rel_ref_count(self, rId: str) -> int: + """Return the count of references in this part's XML to the relationship + identified by `rId`.""" + rIds = cast("list[str]", self._element.xpath("//@r:id")) + return len([_rId for _rId in rIds if _rId == rId]) diff --git a/intelliaide/vendor/docx/opc/parts/__init__.py b/intelliaide/vendor/docx/opc/parts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/intelliaide/vendor/docx/opc/parts/coreprops.py b/intelliaide/vendor/docx/opc/parts/coreprops.py new file mode 100644 index 0000000..fda0112 --- /dev/null +++ b/intelliaide/vendor/docx/opc/parts/coreprops.py @@ -0,0 +1,48 @@ +"""Core properties part, corresponds to ``/docProps/core.xml`` part in package.""" + +from __future__ import annotations + +import datetime as dt +from typing import TYPE_CHECKING + +from docx.opc.constants import CONTENT_TYPE as CT +from docx.opc.coreprops import CoreProperties +from docx.opc.packuri import PackURI +from docx.opc.part import XmlPart +from docx.oxml.coreprops import CT_CoreProperties + +if TYPE_CHECKING: + from docx.opc.package import OpcPackage + + +class CorePropertiesPart(XmlPart): + """Corresponds to part named ``/docProps/core.xml``. + + The "core" is short for "Dublin Core" and contains document metadata relatively common across + documents of all types, not just DOCX. + """ + + @classmethod + def default(cls, package: OpcPackage): + """Return a new |CorePropertiesPart| object initialized with default values for + its base properties.""" + core_properties_part = cls._new(package) + core_properties = core_properties_part.core_properties + core_properties.title = "Word Document" + core_properties.last_modified_by = "python-docx" + core_properties.revision = 1 + core_properties.modified = dt.datetime.now(dt.timezone.utc) + return core_properties_part + + @property + def core_properties(self): + """A |CoreProperties| object providing read/write access to the core properties + contained in this core properties part.""" + return CoreProperties(self.element) + + @classmethod + def _new(cls, package: OpcPackage) -> CorePropertiesPart: + partname = PackURI("/docProps/core.xml") + content_type = CT.OPC_CORE_PROPERTIES + coreProperties = CT_CoreProperties.new() + return CorePropertiesPart(partname, content_type, coreProperties, package) diff --git a/intelliaide/vendor/docx/opc/phys_pkg.py b/intelliaide/vendor/docx/opc/phys_pkg.py new file mode 100644 index 0000000..5ec3223 --- /dev/null +++ b/intelliaide/vendor/docx/opc/phys_pkg.py @@ -0,0 +1,119 @@ +"""Provides a general interface to a `physical` OPC package, such as a zip file.""" + +import os +from zipfile import ZIP_DEFLATED, ZipFile, is_zipfile + +from docx.opc.exceptions import PackageNotFoundError +from docx.opc.packuri import CONTENT_TYPES_URI + + +class PhysPkgReader: + """Factory for physical package reader objects.""" + + def __new__(cls, pkg_file): + # if `pkg_file` is a string, treat it as a path + if isinstance(pkg_file, str): + if os.path.isdir(pkg_file): + reader_cls = _DirPkgReader + elif is_zipfile(pkg_file): + reader_cls = _ZipPkgReader + else: + raise PackageNotFoundError("Package not found at '%s'" % pkg_file) + else: # assume it's a stream and pass it to Zip reader to sort out + reader_cls = _ZipPkgReader + + return super(PhysPkgReader, cls).__new__(reader_cls) + + +class PhysPkgWriter: + """Factory for physical package writer objects.""" + + def __new__(cls, pkg_file): + return super(PhysPkgWriter, cls).__new__(_ZipPkgWriter) + + +class _DirPkgReader(PhysPkgReader): + """Implements |PhysPkgReader| interface for an OPC package extracted into a + directory.""" + + def __init__(self, path): + """`path` is the path to a directory containing an expanded package.""" + super(_DirPkgReader, self).__init__() + self._path = os.path.abspath(path) + + def blob_for(self, pack_uri): + """Return contents of file corresponding to `pack_uri` in package directory.""" + path = os.path.join(self._path, pack_uri.membername) + with open(path, "rb") as f: + blob = f.read() + return blob + + def close(self): + """Provides interface consistency with |ZipFileSystem|, but does nothing, a + directory file system doesn't need closing.""" + pass + + @property + def content_types_xml(self): + """Return the `[Content_Types].xml` blob from the package.""" + return self.blob_for(CONTENT_TYPES_URI) + + def rels_xml_for(self, source_uri): + """Return rels item XML for source with `source_uri`, or None if the item has no + rels item.""" + try: + rels_xml = self.blob_for(source_uri.rels_uri) + except IOError: + rels_xml = None + return rels_xml + + +class _ZipPkgReader(PhysPkgReader): + """Implements |PhysPkgReader| interface for a zip file OPC package.""" + + def __init__(self, pkg_file): + super(_ZipPkgReader, self).__init__() + self._zipf = ZipFile(pkg_file, "r") + + def blob_for(self, pack_uri): + """Return blob corresponding to `pack_uri`. + + Raises |ValueError| if no matching member is present in zip archive. + """ + return self._zipf.read(pack_uri.membername) + + def close(self): + """Close the zip archive, releasing any resources it is using.""" + self._zipf.close() + + @property + def content_types_xml(self): + """Return the `[Content_Types].xml` blob from the zip package.""" + return self.blob_for(CONTENT_TYPES_URI) + + def rels_xml_for(self, source_uri): + """Return rels item XML for source with `source_uri` or None if no rels item is + present.""" + try: + rels_xml = self.blob_for(source_uri.rels_uri) + except KeyError: + rels_xml = None + return rels_xml + + +class _ZipPkgWriter(PhysPkgWriter): + """Implements |PhysPkgWriter| interface for a zip file OPC package.""" + + def __init__(self, pkg_file): + super(_ZipPkgWriter, self).__init__() + self._zipf = ZipFile(pkg_file, "w", compression=ZIP_DEFLATED) + + def close(self): + """Close the zip archive, flushing any pending physical writes and releasing any + resources it's using.""" + self._zipf.close() + + def write(self, pack_uri, blob): + """Write `blob` to this zip package with the membername corresponding to + `pack_uri`.""" + self._zipf.writestr(pack_uri.membername, blob) diff --git a/intelliaide/vendor/docx/opc/pkgreader.py b/intelliaide/vendor/docx/opc/pkgreader.py new file mode 100644 index 0000000..15207e5 --- /dev/null +++ b/intelliaide/vendor/docx/opc/pkgreader.py @@ -0,0 +1,254 @@ +"""Low-level, read-only API to a serialized Open Packaging Convention (OPC) package.""" + +from docx.opc.constants import RELATIONSHIP_TARGET_MODE as RTM +from docx.opc.oxml import parse_xml +from docx.opc.packuri import PACKAGE_URI, PackURI +from docx.opc.phys_pkg import PhysPkgReader +from docx.opc.shared import CaseInsensitiveDict + + +class PackageReader: + """Provides access to the contents of a zip-format OPC package via its + :attr:`serialized_parts` and :attr:`pkg_srels` attributes.""" + + def __init__(self, content_types, pkg_srels, sparts): + super(PackageReader, self).__init__() + self._pkg_srels = pkg_srels + self._sparts = sparts + + @staticmethod + def from_file(pkg_file): + """Return a |PackageReader| instance loaded with contents of `pkg_file`.""" + phys_reader = PhysPkgReader(pkg_file) + content_types = _ContentTypeMap.from_xml(phys_reader.content_types_xml) + pkg_srels = PackageReader._srels_for(phys_reader, PACKAGE_URI) + sparts = PackageReader._load_serialized_parts(phys_reader, pkg_srels, content_types) + phys_reader.close() + return PackageReader(content_types, pkg_srels, sparts) + + def iter_sparts(self): + """Generate a 4-tuple `(partname, content_type, reltype, blob)` for each of the + serialized parts in the package.""" + for s in self._sparts: + yield (s.partname, s.content_type, s.reltype, s.blob) + + def iter_srels(self): + """Generate a 2-tuple `(source_uri, srel)` for each of the relationships in the + package.""" + for srel in self._pkg_srels: + yield (PACKAGE_URI, srel) + for spart in self._sparts: + for srel in spart.srels: + yield (spart.partname, srel) + + @staticmethod + def _load_serialized_parts(phys_reader, pkg_srels, content_types): + """Return a list of |_SerializedPart| instances corresponding to the parts in + `phys_reader` accessible by walking the relationship graph starting with + `pkg_srels`.""" + sparts = [] + part_walker = PackageReader._walk_phys_parts(phys_reader, pkg_srels) + for partname, blob, reltype, srels in part_walker: + content_type = content_types[partname] + spart = _SerializedPart(partname, content_type, reltype, blob, srels) + sparts.append(spart) + return tuple(sparts) + + @staticmethod + def _srels_for(phys_reader, source_uri): + """Return |_SerializedRelationships| instance populated with relationships for + source identified by `source_uri`.""" + rels_xml = phys_reader.rels_xml_for(source_uri) + return _SerializedRelationships.load_from_xml(source_uri.baseURI, rels_xml) + + @staticmethod + def _walk_phys_parts(phys_reader, srels, visited_partnames=None): + """Generate a 4-tuple `(partname, blob, reltype, srels)` for each of the parts + in `phys_reader` by walking the relationship graph rooted at srels.""" + if visited_partnames is None: + visited_partnames = [] + for srel in srels: + if srel.is_external: + continue + partname = srel.target_partname + if partname in visited_partnames: + continue + visited_partnames.append(partname) + reltype = srel.reltype + part_srels = PackageReader._srels_for(phys_reader, partname) + blob = phys_reader.blob_for(partname) + yield (partname, blob, reltype, part_srels) + next_walker = PackageReader._walk_phys_parts(phys_reader, part_srels, visited_partnames) + for partname, blob, reltype, srels in next_walker: + yield (partname, blob, reltype, srels) + + +class _ContentTypeMap: + """Value type providing dictionary semantics for looking up content type by part + name, e.g. ``content_type = cti['/ppt/presentation.xml']``.""" + + def __init__(self): + super(_ContentTypeMap, self).__init__() + self._overrides = CaseInsensitiveDict() + self._defaults = CaseInsensitiveDict() + + def __getitem__(self, partname): + """Return content type for part identified by `partname`.""" + if not isinstance(partname, PackURI): + tmpl = "_ContentTypeMap key must be , got %s" + raise KeyError(tmpl % type(partname)) + if partname in self._overrides: + return self._overrides[partname] + if partname.ext in self._defaults: + return self._defaults[partname.ext] + tmpl = "no content type for partname '%s' in [Content_Types].xml" + raise KeyError(tmpl % partname) + + @staticmethod + def from_xml(content_types_xml): + """Return a new |_ContentTypeMap| instance populated with the contents of + `content_types_xml`.""" + types_elm = parse_xml(content_types_xml) + ct_map = _ContentTypeMap() + for o in types_elm.overrides: + ct_map._add_override(o.partname, o.content_type) + for d in types_elm.defaults: + ct_map._add_default(d.extension, d.content_type) + return ct_map + + def _add_default(self, extension, content_type): + """Add the default mapping of `extension` to `content_type` to this content type + mapping.""" + self._defaults[extension] = content_type + + def _add_override(self, partname, content_type): + """Add the default mapping of `partname` to `content_type` to this content type + mapping.""" + self._overrides[partname] = content_type + + +class _SerializedPart: + """Value object for an OPC package part. + + Provides access to the partname, content type, blob, and serialized relationships + for the part. + """ + + def __init__(self, partname, content_type, reltype, blob, srels): + super(_SerializedPart, self).__init__() + self._partname = partname + self._content_type = content_type + self._reltype = reltype + self._blob = blob + self._srels = srels + + @property + def partname(self): + return self._partname + + @property + def content_type(self): + return self._content_type + + @property + def blob(self): + return self._blob + + @property + def reltype(self): + """The referring relationship type of this part.""" + return self._reltype + + @property + def srels(self): + return self._srels + + +class _SerializedRelationship: + """Value object representing a serialized relationship in an OPC package. + + Serialized, in this case, means any target part is referred to via its partname + rather than a direct link to an in-memory |Part| object. + """ + + def __init__(self, baseURI, rel_elm): + super(_SerializedRelationship, self).__init__() + self._baseURI = baseURI + self._rId = rel_elm.rId + self._reltype = rel_elm.reltype + self._target_mode = rel_elm.target_mode + self._target_ref = rel_elm.target_ref + + @property + def is_external(self): + """True if target_mode is ``RTM.EXTERNAL``""" + return self._target_mode == RTM.EXTERNAL + + @property + def reltype(self): + """Relationship type, like ``RT.OFFICE_DOCUMENT``""" + return self._reltype + + @property + def rId(self): + """Relationship id, like 'rId9', corresponds to the ``Id`` attribute on the + ``CT_Relationship`` element.""" + return self._rId + + @property + def target_mode(self): + """String in ``TargetMode`` attribute of ``CT_Relationship`` element, one of + ``RTM.INTERNAL`` or ``RTM.EXTERNAL``.""" + return self._target_mode + + @property + def target_ref(self): + """String in ``Target`` attribute of ``CT_Relationship`` element, a relative + part reference for internal target mode or an arbitrary URI, e.g. an HTTP URL, + for external target mode.""" + return self._target_ref + + @property + def target_partname(self): + """|PackURI| instance containing partname targeted by this relationship. + + Raises ``ValueError`` on reference if target_mode is ``'External'``. Use + :attr:`target_mode` to check before referencing. + """ + if self.is_external: + msg = ( + "target_partname attribute on Relationship is undefined w" + 'here TargetMode == "External"' + ) + raise ValueError(msg) + # lazy-load _target_partname attribute + if not hasattr(self, "_target_partname"): + self._target_partname = PackURI.from_rel_ref(self._baseURI, self.target_ref) + return self._target_partname + + +class _SerializedRelationships: + """Read-only sequence of |_SerializedRelationship| instances corresponding to the + relationships item XML passed to constructor.""" + + def __init__(self): + super(_SerializedRelationships, self).__init__() + self._srels = [] + + def __iter__(self): + """Support iteration, e.g. 'for x in srels:'.""" + return self._srels.__iter__() + + @staticmethod + def load_from_xml(baseURI, rels_item_xml): + """Return |_SerializedRelationships| instance loaded with the relationships + contained in `rels_item_xml`. + + Returns an empty collection if `rels_item_xml` is |None|. + """ + srels = _SerializedRelationships() + if rels_item_xml is not None: + rels_elm = parse_xml(rels_item_xml) + for rel_elm in rels_elm.Relationship_lst: + srels._srels.append(_SerializedRelationship(baseURI, rel_elm)) + return srels diff --git a/intelliaide/vendor/docx/opc/pkgwriter.py b/intelliaide/vendor/docx/opc/pkgwriter.py new file mode 100644 index 0000000..e635169 --- /dev/null +++ b/intelliaide/vendor/docx/opc/pkgwriter.py @@ -0,0 +1,115 @@ +"""Provides low-level, write-only API to serialized (OPC) package. + +OPC stands for Open Packaging Convention. This is e, essentially an implementation of +OpcPackage.save(). +""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Iterable + +from docx.opc.constants import CONTENT_TYPE as CT +from docx.opc.oxml import CT_Types, serialize_part_xml +from docx.opc.packuri import CONTENT_TYPES_URI, PACKAGE_URI +from docx.opc.phys_pkg import PhysPkgWriter +from docx.opc.shared import CaseInsensitiveDict +from docx.opc.spec import default_content_types + +if TYPE_CHECKING: + from docx.opc.part import Part + + +class PackageWriter: + """Writes a zip-format OPC package to `pkg_file`, where `pkg_file` can be either a + path to a zip file (a string) or a file-like object. + + Its single API method, :meth:`write`, is static, so this class is not intended to be + instantiated. + """ + + @staticmethod + def write(pkg_file, pkg_rels, parts): + """Write a physical package (.pptx file) to `pkg_file` containing `pkg_rels` and + `parts` and a content types stream based on the content types of the parts.""" + phys_writer = PhysPkgWriter(pkg_file) + PackageWriter._write_content_types_stream(phys_writer, parts) + PackageWriter._write_pkg_rels(phys_writer, pkg_rels) + PackageWriter._write_parts(phys_writer, parts) + phys_writer.close() + + @staticmethod + def _write_content_types_stream(phys_writer, parts): + """Write ``[Content_Types].xml`` part to the physical package with an + appropriate content type lookup target for each part in `parts`.""" + cti = _ContentTypesItem.from_parts(parts) + phys_writer.write(CONTENT_TYPES_URI, cti.blob) + + @staticmethod + def _write_parts(phys_writer: PhysPkgWriter, parts: Iterable[Part]): + """Write the blob of each part in `parts` to the package, along with a rels item + for its relationships if and only if it has any.""" + for part in parts: + phys_writer.write(part.partname, part.blob) + if len(part.rels): + phys_writer.write(part.partname.rels_uri, part.rels.xml) + + @staticmethod + def _write_pkg_rels(phys_writer, pkg_rels): + """Write the XML rels item for `pkg_rels` ('/_rels/.rels') to the package.""" + phys_writer.write(PACKAGE_URI.rels_uri, pkg_rels.xml) + + +class _ContentTypesItem: + """Service class that composes a content types item ([Content_Types].xml) based on a + list of parts. + + Not meant to be instantiated directly, its single interface method is xml_for(), + e.g. ``_ContentTypesItem.xml_for(parts)``. + """ + + def __init__(self): + self._defaults = CaseInsensitiveDict() + self._overrides = {} + + @property + def blob(self): + """Return XML form of this content types item, suitable for storage as + ``[Content_Types].xml`` in an OPC package.""" + return serialize_part_xml(self._element) + + @classmethod + def from_parts(cls, parts): + """Return content types XML mapping each part in `parts` to the appropriate + content type and suitable for storage as ``[Content_Types].xml`` in an OPC + package.""" + cti = cls() + cti._defaults["rels"] = CT.OPC_RELATIONSHIPS + cti._defaults["xml"] = CT.XML + for part in parts: + cti._add_content_type(part.partname, part.content_type) + return cti + + def _add_content_type(self, partname, content_type): + """Add a content type for the part with `partname` and `content_type`, using a + default or override as appropriate.""" + ext = partname.ext + if (ext.lower(), content_type) in default_content_types: + self._defaults[ext] = content_type + else: + self._overrides[partname] = content_type + + @property + def _element(self): + """Return XML form of this content types item, suitable for storage as + ``[Content_Types].xml`` in an OPC package. + + Although the sequence of elements is not strictly significant, as an aid to + testing and readability Default elements are sorted by extension and Override + elements are sorted by partname. + """ + _types_elm = CT_Types.new() + for ext in sorted(self._defaults.keys()): + _types_elm.add_default(ext, self._defaults[ext]) + for partname in sorted(self._overrides.keys()): + _types_elm.add_override(partname, self._overrides[partname]) + return _types_elm diff --git a/intelliaide/vendor/docx/opc/rel.py b/intelliaide/vendor/docx/opc/rel.py new file mode 100644 index 0000000..153b308 --- /dev/null +++ b/intelliaide/vendor/docx/opc/rel.py @@ -0,0 +1,153 @@ +"""Relationship-related objects.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Any, Dict, cast + +from docx.opc.oxml import CT_Relationships + +if TYPE_CHECKING: + from docx.opc.part import Part + + +class Relationships(Dict[str, "_Relationship"]): + """Collection object for |_Relationship| instances, having list semantics.""" + + def __init__(self, baseURI: str): + super(Relationships, self).__init__() + self._baseURI = baseURI + self._target_parts_by_rId: dict[str, Any] = {} + + def add_relationship( + self, reltype: str, target: Part | str, rId: str, is_external: bool = False + ) -> "_Relationship": + """Return a newly added |_Relationship| instance.""" + rel = _Relationship(rId, reltype, target, self._baseURI, is_external) + self[rId] = rel + if not is_external: + self._target_parts_by_rId[rId] = target + return rel + + def get_or_add(self, reltype: str, target_part: Part) -> _Relationship: + """Return relationship of `reltype` to `target_part`, newly added if not already + present in collection.""" + rel = self._get_matching(reltype, target_part) + if rel is None: + rId = self._next_rId + rel = self.add_relationship(reltype, target_part, rId) + return rel + + def get_or_add_ext_rel(self, reltype: str, target_ref: str) -> str: + """Return rId of external relationship of `reltype` to `target_ref`, newly added + if not already present in collection.""" + rel = self._get_matching(reltype, target_ref, is_external=True) + if rel is None: + rId = self._next_rId + rel = self.add_relationship(reltype, target_ref, rId, is_external=True) + return rel.rId + + def part_with_reltype(self, reltype: str) -> Part: + """Return target part of rel with matching `reltype`, raising |KeyError| if not + found and |ValueError| if more than one matching relationship is found.""" + rel = self._get_rel_of_type(reltype) + return rel.target_part + + @property + def related_parts(self): + """Dict mapping rIds to target parts for all the internal relationships in the + collection.""" + return self._target_parts_by_rId + + @property + def xml(self) -> str: + """Serialize this relationship collection into XML suitable for storage as a + .rels file in an OPC package.""" + rels_elm = CT_Relationships.new() + for rel in self.values(): + rels_elm.add_rel(rel.rId, rel.reltype, rel.target_ref, rel.is_external) + return rels_elm.xml + + def _get_matching( + self, reltype: str, target: Part | str, is_external: bool = False + ) -> _Relationship | None: + """Return relationship of matching `reltype`, `target`, and `is_external` from + collection, or None if not found.""" + + def matches(rel: _Relationship, reltype: str, target: Part | str, is_external: bool): + if rel.reltype != reltype: + return False + if rel.is_external != is_external: + return False + rel_target = rel.target_ref if rel.is_external else rel.target_part + return rel_target == target + + for rel in self.values(): + if matches(rel, reltype, target, is_external): + return rel + return None + + def _get_rel_of_type(self, reltype: str): + """Return single relationship of type `reltype` from the collection. + + Raises |KeyError| if no matching relationship is found. Raises |ValueError| if + more than one matching relationship is found. + """ + matching = [rel for rel in self.values() if rel.reltype == reltype] + if len(matching) == 0: + tmpl = "no relationship of type '%s' in collection" + raise KeyError(tmpl % reltype) + if len(matching) > 1: + tmpl = "multiple relationships of type '%s' in collection" + raise ValueError(tmpl % reltype) + return matching[0] + + @property + def _next_rId(self) -> str: # pyright: ignore[reportReturnType] + """Next available rId in collection, starting from 'rId1' and making use of any + gaps in numbering, e.g. 'rId2' for rIds ['rId1', 'rId3'].""" + for n in range(1, len(self) + 2): + rId_candidate = "rId%d" % n # like 'rId19' + if rId_candidate not in self: + return rId_candidate + + +class _Relationship: + """Value object for relationship to part.""" + + def __init__( + self, rId: str, reltype: str, target: Part | str, baseURI: str, external: bool = False + ): + super(_Relationship, self).__init__() + self._rId = rId + self._reltype = reltype + self._target = target + self._baseURI = baseURI + self._is_external = bool(external) + + @property + def is_external(self) -> bool: + return self._is_external + + @property + def reltype(self) -> str: + return self._reltype + + @property + def rId(self) -> str: + return self._rId + + @property + def target_part(self) -> Part: + if self._is_external: + raise ValueError( + "target_part property on _Relationship is undefined when target mode is External" + ) + return cast("Part", self._target) + + @property + def target_ref(self) -> str: + if self._is_external: + return cast(str, self._target) + else: + target = cast("Part", self._target) + return target.partname.relative_ref(self._baseURI) diff --git a/intelliaide/vendor/docx/opc/shared.py b/intelliaide/vendor/docx/opc/shared.py new file mode 100644 index 0000000..9d4c0a6 --- /dev/null +++ b/intelliaide/vendor/docx/opc/shared.py @@ -0,0 +1,31 @@ +"""Objects shared by opc modules.""" + +from __future__ import annotations + +from typing import Any, Dict, TypeVar + +_T = TypeVar("_T") + + +class CaseInsensitiveDict(Dict[str, Any]): + """Mapping type that behaves like dict except that it matches without respect to the + case of the key. + + E.g. cid['A'] == cid['a']. Note this is not general-purpose, just complete enough to + satisfy opc package needs. It assumes str keys, and that it is created empty; keys + passed in constructor are not accounted for + """ + + def __contains__(self, key): + return super(CaseInsensitiveDict, self).__contains__(key.lower()) + + def __getitem__(self, key): + return super(CaseInsensitiveDict, self).__getitem__(key.lower()) + + def __setitem__(self, key, value): + return super(CaseInsensitiveDict, self).__setitem__(key.lower(), value) + + +def cls_method_fn(cls: type, method_name: str): + """Return method of `cls` having `method_name`.""" + return getattr(cls, method_name) diff --git a/intelliaide/vendor/docx/opc/spec.py b/intelliaide/vendor/docx/opc/spec.py new file mode 100644 index 0000000..011a482 --- /dev/null +++ b/intelliaide/vendor/docx/opc/spec.py @@ -0,0 +1,24 @@ +"""Provides mappings that embody aspects of the Open XML spec ISO/IEC 29500.""" + +from docx.opc.constants import CONTENT_TYPE as CT + +default_content_types = ( + ("bin", CT.PML_PRINTER_SETTINGS), + ("bin", CT.SML_PRINTER_SETTINGS), + ("bin", CT.WML_PRINTER_SETTINGS), + ("bmp", CT.BMP), + ("emf", CT.X_EMF), + ("fntdata", CT.X_FONTDATA), + ("gif", CT.GIF), + ("jpe", CT.JPEG), + ("jpeg", CT.JPEG), + ("jpg", CT.JPEG), + ("png", CT.PNG), + ("rels", CT.OPC_RELATIONSHIPS), + ("tif", CT.TIFF), + ("tiff", CT.TIFF), + ("wdp", CT.MS_PHOTO), + ("wmf", CT.X_WMF), + ("xlsx", CT.SML_SHEET), + ("xml", CT.XML), +) diff --git a/intelliaide/vendor/docx/oxml/__init__.py b/intelliaide/vendor/docx/oxml/__init__.py new file mode 100644 index 0000000..37f608c --- /dev/null +++ b/intelliaide/vendor/docx/oxml/__init__.py @@ -0,0 +1,251 @@ +# ruff: noqa: E402, I001 + +"""Initializes oxml sub-package. + +This including registering custom element classes corresponding to Open XML elements. +""" + +from __future__ import annotations + +from docx.oxml.drawing import CT_Drawing +from docx.oxml.parser import OxmlElement, parse_xml, register_element_cls +from docx.oxml.shape import ( + CT_Anchor, + CT_Blip, + CT_BlipFillProperties, + CT_GraphicalObject, + CT_GraphicalObjectData, + CT_Inline, + CT_NonVisualDrawingProps, + CT_Picture, + CT_PictureNonVisual, + CT_Point2D, + CT_PositiveSize2D, + CT_ShapeProperties, + CT_Transform2D, +) +from docx.oxml.shared import CT_DecimalNumber, CT_OnOff, CT_String +from docx.oxml.text.hyperlink import CT_Hyperlink +from docx.oxml.text.pagebreak import CT_LastRenderedPageBreak +from docx.oxml.text.run import ( + CT_R, + CT_Br, + CT_Cr, + CT_NoBreakHyphen, + CT_PTab, + CT_Text, +) + +# -- `OxmlElement` and `parse_xml()` are not used in this module but several downstream +# -- "extension" packages expect to find them here and there's no compelling reason +# -- not to republish them here so those keep working. +__all__ = ["OxmlElement", "parse_xml"] + +# --------------------------------------------------------------------------- +# DrawingML-related elements + +register_element_cls("a:blip", CT_Blip) +register_element_cls("a:ext", CT_PositiveSize2D) +register_element_cls("a:graphic", CT_GraphicalObject) +register_element_cls("a:graphicData", CT_GraphicalObjectData) +register_element_cls("a:off", CT_Point2D) +register_element_cls("a:xfrm", CT_Transform2D) +register_element_cls("pic:blipFill", CT_BlipFillProperties) +register_element_cls("pic:cNvPr", CT_NonVisualDrawingProps) +register_element_cls("pic:nvPicPr", CT_PictureNonVisual) +register_element_cls("pic:pic", CT_Picture) +register_element_cls("pic:spPr", CT_ShapeProperties) +register_element_cls("w:drawing", CT_Drawing) +register_element_cls("wp:anchor", CT_Anchor) +register_element_cls("wp:docPr", CT_NonVisualDrawingProps) +register_element_cls("wp:extent", CT_PositiveSize2D) +register_element_cls("wp:inline", CT_Inline) + +# --------------------------------------------------------------------------- +# hyperlink-related elements + +register_element_cls("w:hyperlink", CT_Hyperlink) + +# --------------------------------------------------------------------------- +# text-related elements + +register_element_cls("w:br", CT_Br) +register_element_cls("w:cr", CT_Cr) +register_element_cls("w:lastRenderedPageBreak", CT_LastRenderedPageBreak) +register_element_cls("w:noBreakHyphen", CT_NoBreakHyphen) +register_element_cls("w:ptab", CT_PTab) +register_element_cls("w:r", CT_R) +register_element_cls("w:t", CT_Text) + +# --------------------------------------------------------------------------- +# header/footer-related mappings + +register_element_cls("w:evenAndOddHeaders", CT_OnOff) +register_element_cls("w:titlePg", CT_OnOff) + +# --------------------------------------------------------------------------- +# other custom element class mappings + +from .comments import CT_Comments, CT_Comment + +register_element_cls("w:comments", CT_Comments) +register_element_cls("w:comment", CT_Comment) + +from .coreprops import CT_CoreProperties + +register_element_cls("cp:coreProperties", CT_CoreProperties) + +from .document import CT_Body, CT_Document + +register_element_cls("w:body", CT_Body) +register_element_cls("w:document", CT_Document) + +from .numbering import CT_Num, CT_Numbering, CT_NumLvl, CT_NumPr + +register_element_cls("w:abstractNumId", CT_DecimalNumber) +register_element_cls("w:ilvl", CT_DecimalNumber) +register_element_cls("w:lvlOverride", CT_NumLvl) +register_element_cls("w:num", CT_Num) +register_element_cls("w:numId", CT_DecimalNumber) +register_element_cls("w:numPr", CT_NumPr) +register_element_cls("w:numbering", CT_Numbering) +register_element_cls("w:startOverride", CT_DecimalNumber) + +from .section import ( + CT_HdrFtr, + CT_HdrFtrRef, + CT_PageMar, + CT_PageSz, + CT_SectPr, + CT_SectType, +) + +register_element_cls("w:footerReference", CT_HdrFtrRef) +register_element_cls("w:ftr", CT_HdrFtr) +register_element_cls("w:hdr", CT_HdrFtr) +register_element_cls("w:headerReference", CT_HdrFtrRef) +register_element_cls("w:pgMar", CT_PageMar) +register_element_cls("w:pgSz", CT_PageSz) +register_element_cls("w:sectPr", CT_SectPr) +register_element_cls("w:type", CT_SectType) + +from .settings import CT_Settings + +register_element_cls("w:settings", CT_Settings) + +from .styles import CT_LatentStyles, CT_LsdException, CT_Style, CT_Styles + +register_element_cls("w:basedOn", CT_String) +register_element_cls("w:latentStyles", CT_LatentStyles) +register_element_cls("w:locked", CT_OnOff) +register_element_cls("w:lsdException", CT_LsdException) +register_element_cls("w:name", CT_String) +register_element_cls("w:next", CT_String) +register_element_cls("w:qFormat", CT_OnOff) +register_element_cls("w:semiHidden", CT_OnOff) +register_element_cls("w:style", CT_Style) +register_element_cls("w:styles", CT_Styles) +register_element_cls("w:uiPriority", CT_DecimalNumber) +register_element_cls("w:unhideWhenUsed", CT_OnOff) + +from .table import ( + CT_Height, + CT_Row, + CT_Tbl, + CT_TblGrid, + CT_TblGridCol, + CT_TblLayoutType, + CT_TblPr, + CT_TblPrEx, + CT_TblWidth, + CT_Tc, + CT_TcPr, + CT_TrPr, + CT_VMerge, + CT_VerticalJc, +) + +register_element_cls("w:bidiVisual", CT_OnOff) +register_element_cls("w:gridAfter", CT_DecimalNumber) +register_element_cls("w:gridBefore", CT_DecimalNumber) +register_element_cls("w:gridCol", CT_TblGridCol) +register_element_cls("w:gridSpan", CT_DecimalNumber) +register_element_cls("w:tbl", CT_Tbl) +register_element_cls("w:tblGrid", CT_TblGrid) +register_element_cls("w:tblLayout", CT_TblLayoutType) +register_element_cls("w:tblPr", CT_TblPr) +register_element_cls("w:tblPrEx", CT_TblPrEx) +register_element_cls("w:tblStyle", CT_String) +register_element_cls("w:tc", CT_Tc) +register_element_cls("w:tcPr", CT_TcPr) +register_element_cls("w:tcW", CT_TblWidth) +register_element_cls("w:tr", CT_Row) +register_element_cls("w:trHeight", CT_Height) +register_element_cls("w:trPr", CT_TrPr) +register_element_cls("w:vAlign", CT_VerticalJc) +register_element_cls("w:vMerge", CT_VMerge) + +from .text.font import ( + CT_Color, + CT_Fonts, + CT_Highlight, + CT_HpsMeasure, + CT_RPr, + CT_Underline, + CT_VerticalAlignRun, +) + +register_element_cls("w:b", CT_OnOff) +register_element_cls("w:bCs", CT_OnOff) +register_element_cls("w:caps", CT_OnOff) +register_element_cls("w:color", CT_Color) +register_element_cls("w:cs", CT_OnOff) +register_element_cls("w:dstrike", CT_OnOff) +register_element_cls("w:emboss", CT_OnOff) +register_element_cls("w:highlight", CT_Highlight) +register_element_cls("w:i", CT_OnOff) +register_element_cls("w:iCs", CT_OnOff) +register_element_cls("w:imprint", CT_OnOff) +register_element_cls("w:noProof", CT_OnOff) +register_element_cls("w:oMath", CT_OnOff) +register_element_cls("w:outline", CT_OnOff) +register_element_cls("w:rFonts", CT_Fonts) +register_element_cls("w:rPr", CT_RPr) +register_element_cls("w:rStyle", CT_String) +register_element_cls("w:rtl", CT_OnOff) +register_element_cls("w:shadow", CT_OnOff) +register_element_cls("w:smallCaps", CT_OnOff) +register_element_cls("w:snapToGrid", CT_OnOff) +register_element_cls("w:specVanish", CT_OnOff) +register_element_cls("w:strike", CT_OnOff) +register_element_cls("w:sz", CT_HpsMeasure) +register_element_cls("w:u", CT_Underline) +register_element_cls("w:vanish", CT_OnOff) +register_element_cls("w:vertAlign", CT_VerticalAlignRun) +register_element_cls("w:webHidden", CT_OnOff) + +from .text.paragraph import CT_P + +register_element_cls("w:p", CT_P) + +from .text.parfmt import ( + CT_Ind, + CT_Jc, + CT_PPr, + CT_Spacing, + CT_TabStop, + CT_TabStops, +) + +register_element_cls("w:ind", CT_Ind) +register_element_cls("w:jc", CT_Jc) +register_element_cls("w:keepLines", CT_OnOff) +register_element_cls("w:keepNext", CT_OnOff) +register_element_cls("w:outlineLvl", CT_DecimalNumber) +register_element_cls("w:pageBreakBefore", CT_OnOff) +register_element_cls("w:pPr", CT_PPr) +register_element_cls("w:pStyle", CT_String) +register_element_cls("w:spacing", CT_Spacing) +register_element_cls("w:tab", CT_TabStop) +register_element_cls("w:tabs", CT_TabStops) +register_element_cls("w:widowControl", CT_OnOff) diff --git a/intelliaide/vendor/docx/oxml/comments.py b/intelliaide/vendor/docx/oxml/comments.py new file mode 100644 index 0000000..ad98217 --- /dev/null +++ b/intelliaide/vendor/docx/oxml/comments.py @@ -0,0 +1,124 @@ +"""Custom element classes related to document comments.""" + +from __future__ import annotations + +import datetime as dt +from typing import TYPE_CHECKING, Callable, cast + +from docx.oxml.ns import nsdecls +from docx.oxml.parser import parse_xml +from docx.oxml.simpletypes import ST_DateTime, ST_DecimalNumber, ST_String +from docx.oxml.xmlchemy import BaseOxmlElement, OptionalAttribute, RequiredAttribute, ZeroOrMore + +if TYPE_CHECKING: + from docx.oxml.table import CT_Tbl + from docx.oxml.text.paragraph import CT_P + + +class CT_Comments(BaseOxmlElement): + """`w:comments` element, the root element for the comments part. + + Simply contains a collection of `w:comment` elements, each representing a single comment. Each + contained comment is identified by a unique `w:id` attribute, used to reference the comment + from the document text. The offset of the comment in this collection is arbitrary; it is + essentially a _set_ implemented as a list. + """ + + # -- type-declarations to fill in the gaps for metaclass-added methods -- + comment_lst: list[CT_Comment] + + comment = ZeroOrMore("w:comment") + + def add_comment(self) -> CT_Comment: + """Return newly added `w:comment` child of this `w:comments`. + + The returned `w:comment` element is the minimum valid value, having a `w:id` value unique + within the existing comments and the required `w:author` attribute present but set to the + empty string. It's content is limited to a single run containing the necessary annotation + reference but no text. Content is added by adding runs to this first paragraph and by + adding additional paragraphs as needed. + """ + next_id = self._next_available_comment_id() + comment = cast( + CT_Comment, + parse_xml( + f'' + f" " + f" " + f' ' + f" " + f" " + f" " + f' ' + f" " + f" " + f" " + f" " + f"" + ), + ) + self.append(comment) + return comment + + def get_comment_by_id(self, comment_id: int) -> CT_Comment | None: + """Return the `w:comment` element identified by `comment_id`, or |None| if not found.""" + comment_elms = self.xpath(f"(./w:comment[@w:id='{comment_id}'])[1]") + return comment_elms[0] if comment_elms else None + + def _next_available_comment_id(self) -> int: + """The next available comment id. + + According to the schema, this can be any positive integer, as big as you like, and the + default mechanism is to use `max() + 1`. However, if that yields a value larger than will + fit in a 32-bit signed integer, we take a more deliberate approach to use the first + ununsed integer starting from 0. + """ + used_ids = [int(x) for x in self.xpath("./w:comment/@w:id")] + + next_id = max(used_ids, default=-1) + 1 + + if next_id <= 2**31 - 1: + return next_id + + # -- fall-back to enumerating all used ids to find the first unused one -- + for expected, actual in enumerate(sorted(used_ids)): + if expected != actual: + return expected + + return len(used_ids) + + +class CT_Comment(BaseOxmlElement): + """`w:comment` element, representing a single comment. + + A comment is a so-called "story" and can contain paragraphs and tables much like a table-cell. + While probably most often used for a single sentence or phrase, a comment can contain rich + content, including multiple rich-text paragraphs, hyperlinks, images, and tables. + """ + + # -- attributes on `w:comment` -- + id: int = RequiredAttribute("w:id", ST_DecimalNumber) # pyright: ignore[reportAssignmentType] + author: str = RequiredAttribute("w:author", ST_String) # pyright: ignore[reportAssignmentType] + initials: str | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:initials", ST_String + ) + date: dt.datetime | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:date", ST_DateTime + ) + + # -- children -- + + p = ZeroOrMore("w:p", successors=()) + tbl = ZeroOrMore("w:tbl", successors=()) + + # -- type-declarations for methods added by metaclass -- + + add_p: Callable[[], CT_P] + p_lst: list[CT_P] + tbl_lst: list[CT_Tbl] + _insert_tbl: Callable[[CT_Tbl], CT_Tbl] + + @property + def inner_content_elements(self) -> list[CT_P | CT_Tbl]: + """Generate all `w:p` and `w:tbl` elements in this comment.""" + return self.xpath("./w:p | ./w:tbl") diff --git a/intelliaide/vendor/docx/oxml/coreprops.py b/intelliaide/vendor/docx/oxml/coreprops.py new file mode 100644 index 0000000..fcff0c7 --- /dev/null +++ b/intelliaide/vendor/docx/oxml/coreprops.py @@ -0,0 +1,298 @@ +"""Custom element classes for core properties-related XML elements.""" + +from __future__ import annotations + +import datetime as dt +import re +from typing import TYPE_CHECKING, Any, Callable, cast + +from docx.oxml.ns import nsdecls, qn +from docx.oxml.parser import parse_xml +from docx.oxml.xmlchemy import BaseOxmlElement, ZeroOrOne + +if TYPE_CHECKING: + from lxml.etree import _Element as etree_Element # pyright: ignore[reportPrivateUsage] + + +class CT_CoreProperties(BaseOxmlElement): + """`` element, the root element of the Core Properties part. + + Stored as `/docProps/core.xml`. Implements many of the Dublin Core document metadata + elements. String elements resolve to an empty string ("") if the element is not + present in the XML. String elements are limited in length to 255 unicode characters. + """ + + get_or_add_revision: Callable[[], etree_Element] + + category = ZeroOrOne("cp:category", successors=()) + contentStatus = ZeroOrOne("cp:contentStatus", successors=()) + created = ZeroOrOne("dcterms:created", successors=()) + creator = ZeroOrOne("dc:creator", successors=()) + description = ZeroOrOne("dc:description", successors=()) + identifier = ZeroOrOne("dc:identifier", successors=()) + keywords = ZeroOrOne("cp:keywords", successors=()) + language = ZeroOrOne("dc:language", successors=()) + lastModifiedBy = ZeroOrOne("cp:lastModifiedBy", successors=()) + lastPrinted = ZeroOrOne("cp:lastPrinted", successors=()) + modified = ZeroOrOne("dcterms:modified", successors=()) + revision: etree_Element | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "cp:revision", successors=() + ) + subject = ZeroOrOne("dc:subject", successors=()) + title = ZeroOrOne("dc:title", successors=()) + version = ZeroOrOne("cp:version", successors=()) + + _coreProperties_tmpl = "\n" % nsdecls("cp", "dc", "dcterms") + + @classmethod + def new(cls) -> CT_CoreProperties: + """Return a new `` element.""" + xml = cls._coreProperties_tmpl + coreProperties = cast(CT_CoreProperties, parse_xml(xml)) + return coreProperties + + @property + def author_text(self) -> str: + """The text in the `dc:creator` child element.""" + return self._text_of_element("creator") + + @author_text.setter + def author_text(self, value: str): + self._set_element_text("creator", value) + + @property + def category_text(self) -> str: + return self._text_of_element("category") + + @category_text.setter + def category_text(self, value: str): + self._set_element_text("category", value) + + @property + def comments_text(self) -> str: + return self._text_of_element("description") + + @comments_text.setter + def comments_text(self, value: str): + self._set_element_text("description", value) + + @property + def contentStatus_text(self) -> str: + return self._text_of_element("contentStatus") + + @contentStatus_text.setter + def contentStatus_text(self, value: str): + self._set_element_text("contentStatus", value) + + @property + def created_datetime(self) -> dt.datetime | None: + return self._datetime_of_element("created") + + @created_datetime.setter + def created_datetime(self, value: dt.datetime): + self._set_element_datetime("created", value) + + @property + def identifier_text(self) -> str: + return self._text_of_element("identifier") + + @identifier_text.setter + def identifier_text(self, value: str): + self._set_element_text("identifier", value) + + @property + def keywords_text(self) -> str: + return self._text_of_element("keywords") + + @keywords_text.setter + def keywords_text(self, value: str): + self._set_element_text("keywords", value) + + @property + def language_text(self) -> str: + return self._text_of_element("language") + + @language_text.setter + def language_text(self, value: str): + self._set_element_text("language", value) + + @property + def lastModifiedBy_text(self) -> str: + return self._text_of_element("lastModifiedBy") + + @lastModifiedBy_text.setter + def lastModifiedBy_text(self, value: str): + self._set_element_text("lastModifiedBy", value) + + @property + def lastPrinted_datetime(self) -> dt.datetime | None: + return self._datetime_of_element("lastPrinted") + + @lastPrinted_datetime.setter + def lastPrinted_datetime(self, value: dt.datetime): + self._set_element_datetime("lastPrinted", value) + + @property + def modified_datetime(self) -> dt.datetime | None: + return self._datetime_of_element("modified") + + @modified_datetime.setter + def modified_datetime(self, value: dt.datetime): + self._set_element_datetime("modified", value) + + @property + def revision_number(self) -> int: + """Integer value of revision property.""" + revision = self.revision + if revision is None: + return 0 + revision_str = str(revision.text) + try: + revision = int(revision_str) + except ValueError: + # non-integer revision strings also resolve to 0 + revision = 0 + # as do negative integers + if revision < 0: + revision = 0 + return revision + + @revision_number.setter + def revision_number(self, value: int): + """Set revision property to string value of integer `value`.""" + if not isinstance(value, int) or value < 1: # pyright: ignore[reportUnnecessaryIsInstance] + tmpl = "revision property requires positive int, got '%s'" + raise ValueError(tmpl % value) + revision = self.get_or_add_revision() + revision.text = str(value) + + @property + def subject_text(self) -> str: + return self._text_of_element("subject") + + @subject_text.setter + def subject_text(self, value: str): + self._set_element_text("subject", value) + + @property + def title_text(self) -> str: + return self._text_of_element("title") + + @title_text.setter + def title_text(self, value: str): + self._set_element_text("title", value) + + @property + def version_text(self) -> str: + return self._text_of_element("version") + + @version_text.setter + def version_text(self, value: str): + self._set_element_text("version", value) + + def _datetime_of_element(self, property_name: str) -> dt.datetime | None: + element = getattr(self, property_name) + if element is None: + return None + datetime_str = element.text + try: + return self._parse_W3CDTF_to_datetime(datetime_str) + except ValueError: + # invalid datetime strings are ignored + return None + + def _get_or_add(self, prop_name: str) -> BaseOxmlElement: + """Return element returned by "get_or_add_" method for `prop_name`.""" + get_or_add_method_name = "get_or_add_%s" % prop_name + get_or_add_method = getattr(self, get_or_add_method_name) + element = get_or_add_method() + return element + + @classmethod + def _offset_dt(cls, dt_: dt.datetime, offset_str: str) -> dt.datetime: + """A |datetime| instance offset from `dt_` by timezone offset in `offset_str`. + + `offset_str` is like `"-07:00"`. + """ + match = cls._offset_pattern.match(offset_str) + if match is None: + raise ValueError("'%s' is not a valid offset string" % offset_str) + sign, hours_str, minutes_str = match.groups() + sign_factor = -1 if sign == "+" else 1 + hours = int(hours_str) * sign_factor + minutes = int(minutes_str) * sign_factor + td = dt.timedelta(hours=hours, minutes=minutes) + return dt_ + td + + _offset_pattern = re.compile(r"([+-])(\d\d):(\d\d)") + + @classmethod + def _parse_W3CDTF_to_datetime(cls, w3cdtf_str: str) -> dt.datetime: + # valid W3CDTF date cases: + # yyyy e.g. "2003" + # yyyy-mm e.g. "2003-12" + # yyyy-mm-dd e.g. "2003-12-31" + # UTC timezone e.g. "2003-12-31T10:14:55Z" + # numeric timezone e.g. "2003-12-31T10:14:55-08:00" + templates = ( + "%Y-%m-%dT%H:%M:%S", + "%Y-%m-%d", + "%Y-%m", + "%Y", + ) + # strptime isn't smart enough to parse literal timezone offsets like + # "-07:30", so we have to do it ourselves + parseable_part = w3cdtf_str[:19] + offset_str = w3cdtf_str[19:] + dt_ = None + for tmpl in templates: + try: + dt_ = dt.datetime.strptime(parseable_part, tmpl) + except ValueError: + continue + if dt_ is None: + tmpl = "could not parse W3CDTF datetime string '%s'" + raise ValueError(tmpl % w3cdtf_str) + if len(offset_str) == 6: + dt_ = cls._offset_dt(dt_, offset_str) + return dt_.replace(tzinfo=dt.timezone.utc) + + def _set_element_datetime(self, prop_name: str, value: dt.datetime) -> None: + """Set date/time value of child element having `prop_name` to `value`.""" + if not isinstance(value, dt.datetime): # pyright: ignore[reportUnnecessaryIsInstance] + tmpl = "property requires object, got %s" + raise ValueError(tmpl % type(value)) + element = self._get_or_add(prop_name) + dt_str = value.strftime("%Y-%m-%dT%H:%M:%SZ") + element.text = dt_str + if prop_name in ("created", "modified"): + # These two require an explicit "xsi:type="dcterms:W3CDTF"" + # attribute. The first and last line are a hack required to add + # the xsi namespace to the root element rather than each child + # element in which it is referenced + self.set(qn("xsi:foo"), "bar") + element.set(qn("xsi:type"), "dcterms:W3CDTF") + del self.attrib[qn("xsi:foo")] + + def _set_element_text(self, prop_name: str, value: Any) -> None: + """Set string value of `name` property to `value`.""" + if not isinstance(value, str): + value = str(value) + + if len(value) > 255: + tmpl = "exceeded 255 char limit for property, got:\n\n'%s'" + raise ValueError(tmpl % value) + element = self._get_or_add(prop_name) + element.text = value + + def _text_of_element(self, property_name: str) -> str: + """The text in the element matching `property_name`. + + The empty string if the element is not present or contains no text. + """ + element = getattr(self, property_name) + if element is None: + return "" + if element.text is None: + return "" + return element.text diff --git a/intelliaide/vendor/docx/oxml/document.py b/intelliaide/vendor/docx/oxml/document.py new file mode 100644 index 0000000..36819ef --- /dev/null +++ b/intelliaide/vendor/docx/oxml/document.py @@ -0,0 +1,88 @@ +"""Custom element classes that correspond to the document part, e.g. .""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Callable, List + +from docx.oxml.section import CT_SectPr +from docx.oxml.xmlchemy import BaseOxmlElement, ZeroOrMore, ZeroOrOne + +if TYPE_CHECKING: + from docx.oxml.table import CT_Tbl + from docx.oxml.text.paragraph import CT_P + + +class CT_Document(BaseOxmlElement): + """```` element, the root element of a document.xml file.""" + + body: CT_Body = ZeroOrOne("w:body") # pyright: ignore[reportAssignmentType] + + @property + def sectPr_lst(self) -> List[CT_SectPr]: + """All `w:sectPr` elements directly accessible from document element. + + Note this does not include a `sectPr` child in a paragraphs wrapped in + revision marks or other intervening layer, perhaps `w:sdt` or customXml + elements. + + `w:sectPr` elements appear in document order. The last one is always + `w:body/w:sectPr`, all preceding are `w:p/w:pPr/w:sectPr`. + """ + xpath = "./w:body/w:p/w:pPr/w:sectPr | ./w:body/w:sectPr" + return self.xpath(xpath) + + +class CT_Body(BaseOxmlElement): + """`w:body`, the container element for the main document story in `document.xml`.""" + + add_p: Callable[[], CT_P] + get_or_add_sectPr: Callable[[], CT_SectPr] + p_lst: List[CT_P] + tbl_lst: List[CT_Tbl] + + _insert_tbl: Callable[[CT_Tbl], CT_Tbl] + + p = ZeroOrMore("w:p", successors=("w:sectPr",)) + tbl = ZeroOrMore("w:tbl", successors=("w:sectPr",)) + sectPr: CT_SectPr | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:sectPr", successors=() + ) + + def add_section_break(self) -> CT_SectPr: + """Return `w:sectPr` element for new section added at end of document. + + The last `w:sectPr` becomes the second-to-last, with the new `w:sectPr` being an + exact clone of the previous one, except that all header and footer references + are removed (and are therefore now "inherited" from the prior section). + + A copy of the previously-last `w:sectPr` will now appear in a new `w:p` at the + end of the document. The returned `w:sectPr` is the sentinel `w:sectPr` for the + document (and as implemented, `is` the prior sentinel `w:sectPr` with headers + and footers removed). + """ + # ---get the sectPr at file-end, which controls last section (sections[-1])--- + sentinel_sectPr = self.get_or_add_sectPr() + # ---add exact copy to new `w:p` element; that is now second-to last section--- + self.add_p().set_sectPr(sentinel_sectPr.clone()) + # ---remove any header or footer references from "new" last section--- + for hdrftr_ref in sentinel_sectPr.xpath("w:headerReference|w:footerReference"): + sentinel_sectPr.remove(hdrftr_ref) + # ---the sentinel `w:sectPr` now controls the new last section--- + return sentinel_sectPr + + def clear_content(self): + """Remove all content child elements from this element. + + Leave the element if it is present. + """ + for content_elm in self.xpath("./*[not(self::w:sectPr)]"): + self.remove(content_elm) + + @property + def inner_content_elements(self) -> List[CT_P | CT_Tbl]: + """Generate all `w:p` and `w:tbl` elements in this document-body. + + Elements appear in document order. Elements shaded by nesting in a `w:ins` or + other "wrapper" element will not be included. + """ + return self.xpath("./w:p | ./w:tbl") diff --git a/intelliaide/vendor/docx/oxml/drawing.py b/intelliaide/vendor/docx/oxml/drawing.py new file mode 100644 index 0000000..5b627f9 --- /dev/null +++ b/intelliaide/vendor/docx/oxml/drawing.py @@ -0,0 +1,11 @@ +"""Custom element-classes for DrawingML-related elements like ``. + +For legacy reasons, many DrawingML-related elements are in `docx.oxml.shape`. Expect +those to move over here as we have reason to touch them. +""" + +from docx.oxml.xmlchemy import BaseOxmlElement + + +class CT_Drawing(BaseOxmlElement): + """`` element, containing a DrawingML object like a picture or chart.""" diff --git a/intelliaide/vendor/docx/oxml/exceptions.py b/intelliaide/vendor/docx/oxml/exceptions.py new file mode 100644 index 0000000..8919239 --- /dev/null +++ b/intelliaide/vendor/docx/oxml/exceptions.py @@ -0,0 +1,10 @@ +"""Exceptions for oxml sub-package.""" + + +class XmlchemyError(Exception): + """Generic error class.""" + + +class InvalidXmlError(XmlchemyError): + """Raised when invalid XML is encountered, such as on attempt to access a missing + required child element.""" diff --git a/intelliaide/vendor/docx/oxml/ns.py b/intelliaide/vendor/docx/oxml/ns.py new file mode 100644 index 0000000..ce03940 --- /dev/null +++ b/intelliaide/vendor/docx/oxml/ns.py @@ -0,0 +1,109 @@ +"""Namespace-related objects.""" + +from __future__ import annotations + +from typing import Dict + +nsmap = { + "a": "http://schemas.openxmlformats.org/drawingml/2006/main", + "c": "http://schemas.openxmlformats.org/drawingml/2006/chart", + "cp": "http://schemas.openxmlformats.org/package/2006/metadata/core-properties", + "dc": "http://purl.org/dc/elements/1.1/", + "dcmitype": "http://purl.org/dc/dcmitype/", + "dcterms": "http://purl.org/dc/terms/", + "dgm": "http://schemas.openxmlformats.org/drawingml/2006/diagram", + "m": "http://schemas.openxmlformats.org/officeDocument/2006/math", + "pic": "http://schemas.openxmlformats.org/drawingml/2006/picture", + "r": "http://schemas.openxmlformats.org/officeDocument/2006/relationships", + "sl": "http://schemas.openxmlformats.org/schemaLibrary/2006/main", + "w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main", + "w14": "http://schemas.microsoft.com/office/word/2010/wordml", + "wp": "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", + "xml": "http://www.w3.org/XML/1998/namespace", + "xsi": "http://www.w3.org/2001/XMLSchema-instance", +} + +pfxmap = {value: key for key, value in nsmap.items()} + + +class NamespacePrefixedTag(str): + """Value object that knows the semantics of an XML tag having a namespace prefix.""" + + def __new__(cls, nstag: str): + return super(NamespacePrefixedTag, cls).__new__(cls, nstag) + + def __init__(self, nstag: str): + self._pfx, self._local_part = nstag.split(":") + self._ns_uri = nsmap[self._pfx] + + @property + def clark_name(self) -> str: + return "{%s}%s" % (self._ns_uri, self._local_part) + + @classmethod + def from_clark_name(cls, clark_name: str) -> NamespacePrefixedTag: + nsuri, local_name = clark_name[1:].split("}") + nstag = "%s:%s" % (pfxmap[nsuri], local_name) + return cls(nstag) + + @property + def local_part(self) -> str: + """The local part of this tag. + + E.g. "foobar" is returned for tag "f:foobar". + """ + return self._local_part + + @property + def nsmap(self) -> Dict[str, str]: + """Single-member dict mapping prefix of this tag to it's namespace name. + + Example: `{"f": "http://foo/bar"}`. This is handy for passing to xpath calls + and other uses. + """ + return {self._pfx: self._ns_uri} + + @property + def nspfx(self) -> str: + """The namespace-prefix for this tag. + + For example, "f" is returned for tag "f:foobar". + """ + return self._pfx + + @property + def nsuri(self) -> str: + """The namespace URI for this tag. + + For example, "http://foo/bar" would be returned for tag "f:foobar" if the "f" + prefix maps to "http://foo/bar" in nsmap. + """ + return self._ns_uri + + +def nsdecls(*prefixes: str) -> str: + """Namespace declaration including each namespace-prefix in `prefixes`. + + Handy for adding required namespace declarations to a tree root element. + """ + return " ".join(['xmlns:%s="%s"' % (pfx, nsmap[pfx]) for pfx in prefixes]) + + +def nspfxmap(*nspfxs: str) -> Dict[str, str]: + """Subset namespace-prefix mappings specified by *nspfxs*. + + Any number of namespace prefixes can be supplied, e.g. namespaces("a", "r", "p"). + """ + return {pfx: nsmap[pfx] for pfx in nspfxs} + + +def qn(tag: str) -> str: + """Stands for "qualified name". + + This utility function converts a familiar namespace-prefixed tag name like "w:p" + into a Clark-notation qualified tag name for lxml. For example, `qn("w:p")` returns + "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}p". + """ + prefix, tagroot = tag.split(":") + uri = nsmap[prefix] + return "{%s}%s" % (uri, tagroot) diff --git a/intelliaide/vendor/docx/oxml/numbering.py b/intelliaide/vendor/docx/oxml/numbering.py new file mode 100644 index 0000000..3512de6 --- /dev/null +++ b/intelliaide/vendor/docx/oxml/numbering.py @@ -0,0 +1,109 @@ +"""Custom element classes related to the numbering part.""" + +from docx.oxml.parser import OxmlElement +from docx.oxml.shared import CT_DecimalNumber +from docx.oxml.simpletypes import ST_DecimalNumber +from docx.oxml.xmlchemy import ( + BaseOxmlElement, + OneAndOnlyOne, + RequiredAttribute, + ZeroOrMore, + ZeroOrOne, +) + + +class CT_Num(BaseOxmlElement): + """```` element, which represents a concrete list definition instance, having + a required child that references an abstract numbering definition + that defines most of the formatting details.""" + + abstractNumId = OneAndOnlyOne("w:abstractNumId") + lvlOverride = ZeroOrMore("w:lvlOverride") + numId = RequiredAttribute("w:numId", ST_DecimalNumber) + + def add_lvlOverride(self, ilvl): + """Return a newly added CT_NumLvl () element having its ``ilvl`` + attribute set to `ilvl`.""" + return self._add_lvlOverride(ilvl=ilvl) + + @classmethod + def new(cls, num_id, abstractNum_id): + """Return a new ```` element having numId of `num_id` and having a + ```` child with val attribute set to `abstractNum_id`.""" + num = OxmlElement("w:num") + num.numId = num_id + abstractNumId = CT_DecimalNumber.new("w:abstractNumId", abstractNum_id) + num.append(abstractNumId) + return num + + +class CT_NumLvl(BaseOxmlElement): + """```` element, which identifies a level in a list definition to + override with settings it contains.""" + + startOverride = ZeroOrOne("w:startOverride", successors=("w:lvl",)) + ilvl = RequiredAttribute("w:ilvl", ST_DecimalNumber) + + def add_startOverride(self, val): + """Return a newly added CT_DecimalNumber element having tagname + ``w:startOverride`` and ``val`` attribute set to `val`.""" + return self._add_startOverride(val=val) + + +class CT_NumPr(BaseOxmlElement): + """A ```` element, a container for numbering properties applied to a + paragraph.""" + + ilvl = ZeroOrOne("w:ilvl", successors=("w:numId", "w:numberingChange", "w:ins")) + numId = ZeroOrOne("w:numId", successors=("w:numberingChange", "w:ins")) + + # @ilvl.setter + # def _set_ilvl(self, val): + # """ + # Get or add a child and set its ``w:val`` attribute to `val`. + # """ + # ilvl = self.get_or_add_ilvl() + # ilvl.val = val + + # @numId.setter + # def numId(self, val): + # """ + # Get or add a child and set its ``w:val`` attribute to + # `val`. + # """ + # numId = self.get_or_add_numId() + # numId.val = val + + +class CT_Numbering(BaseOxmlElement): + """```` element, the root element of a numbering part, i.e. + numbering.xml.""" + + num = ZeroOrMore("w:num", successors=("w:numIdMacAtCleanup",)) + + def add_num(self, abstractNum_id): + """Return a newly added CT_Num () element referencing the abstract + numbering definition identified by `abstractNum_id`.""" + next_num_id = self._next_numId + num = CT_Num.new(next_num_id, abstractNum_id) + return self._insert_num(num) + + def num_having_numId(self, numId): + """Return the ```` child element having ``numId`` attribute matching + `numId`.""" + xpath = './w:num[@w:numId="%d"]' % numId + try: + return self.xpath(xpath)[0] + except IndexError: + raise KeyError("no element with numId %d" % numId) + + @property + def _next_numId(self): + """The first ``numId`` unused by a ```` element, starting at 1 and + filling any gaps in numbering between existing ```` elements.""" + numId_strs = self.xpath("./w:num/@w:numId") + num_ids = [int(numId_str) for numId_str in numId_strs] + for num in range(1, len(num_ids) + 2): + if num not in num_ids: + break + return num diff --git a/intelliaide/vendor/docx/oxml/parser.py b/intelliaide/vendor/docx/oxml/parser.py new file mode 100644 index 0000000..e16ba30 --- /dev/null +++ b/intelliaide/vendor/docx/oxml/parser.py @@ -0,0 +1,62 @@ +# pyright: reportImportCycles=false + +"""XML parser for python-docx.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Dict, Type, cast + +from lxml import etree + +from docx.oxml.ns import NamespacePrefixedTag, nsmap + +if TYPE_CHECKING: + from docx.oxml.xmlchemy import BaseOxmlElement + + +# -- configure XML parser -- +element_class_lookup = etree.ElementNamespaceClassLookup() +oxml_parser = etree.XMLParser(remove_blank_text=True, resolve_entities=False) +oxml_parser.set_element_class_lookup(element_class_lookup) + + +def parse_xml(xml: str | bytes) -> "BaseOxmlElement": + """Root lxml element obtained by parsing XML character string `xml`. + + The custom parser is used, so custom element classes are produced for elements in + `xml` that have them. + """ + return cast("BaseOxmlElement", etree.fromstring(xml, oxml_parser)) + + +def register_element_cls(tag: str, cls: Type["BaseOxmlElement"]): + """Register an lxml custom element-class to use for `tag`. + + A instance of `cls` to be constructed when the oxml parser encounters an element + with matching `tag`. `tag` is a string of the form `nspfx:tagroot`, e.g. + `'w:document'`. + """ + nspfx, tagroot = tag.split(":") + namespace = element_class_lookup.get_namespace(nsmap[nspfx]) + namespace[tagroot] = cls + + +def OxmlElement( + nsptag_str: str, + attrs: Dict[str, str] | None = None, + nsdecls: Dict[str, str] | None = None, +) -> BaseOxmlElement | etree._Element: # pyright: ignore[reportPrivateUsage] + """Return a 'loose' lxml element having the tag specified by `nsptag_str`. + + The tag in `nsptag_str` must contain the standard namespace prefix, e.g. `a:tbl`. + The resulting element is an instance of the custom element class for this tag name + if one is defined. A dictionary of attribute values may be provided as `attrs`; they + are set if present. All namespaces defined in the dict `nsdecls` are declared in the + element using the key as the prefix and the value as the namespace name. If + `nsdecls` is not provided, a single namespace declaration is added based on the + prefix on `nsptag_str`. + """ + nsptag = NamespacePrefixedTag(nsptag_str) + if nsdecls is None: + nsdecls = nsptag.nsmap + return oxml_parser.makeelement(nsptag.clark_name, attrib=attrs, nsmap=nsdecls) diff --git a/intelliaide/vendor/docx/oxml/section.py b/intelliaide/vendor/docx/oxml/section.py new file mode 100644 index 0000000..71072e2 --- /dev/null +++ b/intelliaide/vendor/docx/oxml/section.py @@ -0,0 +1,537 @@ +"""Section-related custom element classes.""" + +from __future__ import annotations + +from copy import deepcopy +from typing import Callable, Iterator, List, Sequence, cast + +from lxml import etree +from typing_extensions import TypeAlias + +from docx.enum.section import WD_HEADER_FOOTER, WD_ORIENTATION, WD_SECTION_START +from docx.oxml.ns import nsmap +from docx.oxml.shared import CT_OnOff +from docx.oxml.simpletypes import ST_SignedTwipsMeasure, ST_TwipsMeasure, XsdString +from docx.oxml.table import CT_Tbl +from docx.oxml.text.paragraph import CT_P +from docx.oxml.xmlchemy import ( + BaseOxmlElement, + OptionalAttribute, + RequiredAttribute, + ZeroOrMore, + ZeroOrOne, +) +from docx.shared import Length, lazyproperty + +BlockElement: TypeAlias = "CT_P | CT_Tbl" + + +class CT_HdrFtr(BaseOxmlElement): + """`w:hdr` and `w:ftr`, the root element for header and footer part respectively.""" + + add_p: Callable[[], CT_P] + p_lst: List[CT_P] + tbl_lst: List[CT_Tbl] + + _insert_tbl: Callable[[CT_Tbl], CT_Tbl] + + p = ZeroOrMore("w:p", successors=()) + tbl = ZeroOrMore("w:tbl", successors=()) + + @property + def inner_content_elements(self) -> List[CT_P | CT_Tbl]: + """Generate all `w:p` and `w:tbl` elements in this header or footer. + + Elements appear in document order. Elements shaded by nesting in a `w:ins` or + other "wrapper" element will not be included. + """ + return self.xpath("./w:p | ./w:tbl") + + +class CT_HdrFtrRef(BaseOxmlElement): + """`w:headerReference` and `w:footerReference` elements.""" + + type_: WD_HEADER_FOOTER = RequiredAttribute( # pyright: ignore[reportAssignmentType] + "w:type", WD_HEADER_FOOTER + ) + rId: str = RequiredAttribute("r:id", XsdString) # pyright: ignore[reportAssignmentType] + + +class CT_PageMar(BaseOxmlElement): + """```` element, defining page margins.""" + + top: Length | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:top", ST_SignedTwipsMeasure + ) + right: Length | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:right", ST_TwipsMeasure + ) + bottom: Length | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:bottom", ST_SignedTwipsMeasure + ) + left: Length | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:left", ST_TwipsMeasure + ) + header: Length | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:header", ST_TwipsMeasure + ) + footer: Length | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:footer", ST_TwipsMeasure + ) + gutter: Length | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:gutter", ST_TwipsMeasure + ) + + +class CT_PageSz(BaseOxmlElement): + """```` element, defining page dimensions and orientation.""" + + w: Length | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:w", ST_TwipsMeasure + ) + h: Length | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:h", ST_TwipsMeasure + ) + orient: WD_ORIENTATION = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:orient", WD_ORIENTATION, default=WD_ORIENTATION.PORTRAIT + ) + + +class CT_SectPr(BaseOxmlElement): + """`w:sectPr` element, the container element for section properties.""" + + get_or_add_pgMar: Callable[[], CT_PageMar] + get_or_add_pgSz: Callable[[], CT_PageSz] + get_or_add_titlePg: Callable[[], CT_OnOff] + get_or_add_type: Callable[[], CT_SectType] + _add_footerReference: Callable[[], CT_HdrFtrRef] + _add_headerReference: Callable[[], CT_HdrFtrRef] + _remove_titlePg: Callable[[], None] + _remove_type: Callable[[], None] + + _tag_seq = ( + "w:footnotePr", + "w:endnotePr", + "w:type", + "w:pgSz", + "w:pgMar", + "w:paperSrc", + "w:pgBorders", + "w:lnNumType", + "w:pgNumType", + "w:cols", + "w:formProt", + "w:vAlign", + "w:noEndnote", + "w:titlePg", + "w:textDirection", + "w:bidi", + "w:rtlGutter", + "w:docGrid", + "w:printerSettings", + "w:sectPrChange", + ) + headerReference = ZeroOrMore("w:headerReference", successors=_tag_seq) + footerReference = ZeroOrMore("w:footerReference", successors=_tag_seq) + type: CT_SectType | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:type", successors=_tag_seq[3:] + ) + pgSz: CT_PageSz | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:pgSz", successors=_tag_seq[4:] + ) + pgMar: CT_PageMar | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:pgMar", successors=_tag_seq[5:] + ) + titlePg: CT_OnOff | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:titlePg", successors=_tag_seq[14:] + ) + del _tag_seq + + def add_footerReference(self, type_: WD_HEADER_FOOTER, rId: str) -> CT_HdrFtrRef: + """Return newly added CT_HdrFtrRef element of `type_` with `rId`. + + The element tag is `w:footerReference`. + """ + footerReference = self._add_footerReference() + footerReference.type_ = type_ + footerReference.rId = rId + return footerReference + + def add_headerReference(self, type_: WD_HEADER_FOOTER, rId: str) -> CT_HdrFtrRef: + """Return newly added CT_HdrFtrRef element of `type_` with `rId`. + + The element tag is `w:headerReference`. + """ + headerReference = self._add_headerReference() + headerReference.type_ = type_ + headerReference.rId = rId + return headerReference + + @property + def bottom_margin(self) -> Length | None: + """Value of the `w:bottom` attr of `` child element, as |Length|. + + |None| when either the element or the attribute is not present. + """ + pgMar = self.pgMar + if pgMar is None: + return None + return pgMar.bottom + + @bottom_margin.setter + def bottom_margin(self, value: int | Length | None): + pgMar = self.get_or_add_pgMar() + pgMar.bottom = value if value is None or isinstance(value, Length) else Length(value) + + def clone(self) -> CT_SectPr: + """Return an exact duplicate of this ```` element tree suitable for + use in adding a section break. + + All rsid* attributes are removed from the root ```` element. + """ + cloned_sectPr = deepcopy(self) + cloned_sectPr.attrib.clear() + return cloned_sectPr + + @property + def footer(self) -> Length | None: + """Distance from bottom edge of page to bottom edge of the footer. + + This is the value of the `w:footer` attribute in the `w:pgMar` child element, + as a |Length| object, or |None| if either the element or the attribute is not + present. + """ + pgMar = self.pgMar + if pgMar is None: + return None + return pgMar.footer + + @footer.setter + def footer(self, value: int | Length | None): + pgMar = self.get_or_add_pgMar() + pgMar.footer = value if value is None or isinstance(value, Length) else Length(value) + + def get_footerReference(self, type_: WD_HEADER_FOOTER) -> CT_HdrFtrRef | None: + """Return footerReference element of `type_` or None if not present.""" + path = "./w:footerReference[@w:type='%s']" % WD_HEADER_FOOTER.to_xml(type_) + footerReferences = self.xpath(path) + if not footerReferences: + return None + return footerReferences[0] + + def get_headerReference(self, type_: WD_HEADER_FOOTER) -> CT_HdrFtrRef | None: + """Return headerReference element of `type_` or None if not present.""" + matching_headerReferences = self.xpath( + "./w:headerReference[@w:type='%s']" % WD_HEADER_FOOTER.to_xml(type_) + ) + if len(matching_headerReferences) == 0: + return None + return matching_headerReferences[0] + + @property + def gutter(self) -> Length | None: + """The value of the ``w:gutter`` attribute in the ```` child element, + as a |Length| object, or |None| if either the element or the attribute is not + present.""" + pgMar = self.pgMar + if pgMar is None: + return None + return pgMar.gutter + + @gutter.setter + def gutter(self, value: int | Length | None): + pgMar = self.get_or_add_pgMar() + pgMar.gutter = value if value is None or isinstance(value, Length) else Length(value) + + @property + def header(self) -> Length | None: + """Distance from top edge of page to top edge of header. + + This value comes from the `w:header` attribute on the `w:pgMar` child element. + |None| if either the element or the attribute is not present. + """ + pgMar = self.pgMar + if pgMar is None: + return None + return pgMar.header + + @header.setter + def header(self, value: int | Length | None): + pgMar = self.get_or_add_pgMar() + pgMar.header = value if value is None or isinstance(value, Length) else Length(value) + + def iter_inner_content(self) -> Iterator[CT_P | CT_Tbl]: + """Generate all `w:p` and `w:tbl` elements in this section. + + Elements appear in document order. Elements shaded by nesting in a `w:ins` or + other "wrapper" element will not be included. + """ + return _SectBlockElementIterator.iter_sect_block_elements(self) + + @property + def left_margin(self) -> Length | None: + """The value of the ``w:left`` attribute in the ```` child element, as + a |Length| object, or |None| if either the element or the attribute is not + present.""" + pgMar = self.pgMar + if pgMar is None: + return None + return pgMar.left + + @left_margin.setter + def left_margin(self, value: int | Length | None): + pgMar = self.get_or_add_pgMar() + pgMar.left = value if value is None or isinstance(value, Length) else Length(value) + + @property + def orientation(self) -> WD_ORIENTATION: + """`WD_ORIENTATION` member indicating page-orientation for this section. + + This is the value of the `orient` attribute on the `w:pgSz` child, or + `WD_ORIENTATION.PORTRAIT` if not present. + """ + pgSz = self.pgSz + if pgSz is None: + return WD_ORIENTATION.PORTRAIT + return pgSz.orient + + @orientation.setter + def orientation(self, value: WD_ORIENTATION | None): + pgSz = self.get_or_add_pgSz() + pgSz.orient = value if value else WD_ORIENTATION.PORTRAIT + + @property + def page_height(self) -> Length | None: + """Value in EMU of the `h` attribute of the `w:pgSz` child element. + + |None| if not present. + """ + pgSz = self.pgSz + if pgSz is None: + return None + return pgSz.h + + @page_height.setter + def page_height(self, value: Length | None): + pgSz = self.get_or_add_pgSz() + pgSz.h = value + + @property + def page_width(self) -> Length | None: + """Value in EMU of the ``w`` attribute of the ```` child element. + + |None| if not present. + """ + pgSz = self.pgSz + if pgSz is None: + return None + return pgSz.w + + @page_width.setter + def page_width(self, value: Length | None): + pgSz = self.get_or_add_pgSz() + pgSz.w = value + + @property + def preceding_sectPr(self) -> CT_SectPr | None: + """SectPr immediately preceding this one or None if this is the first.""" + # -- [1] predicate returns list of zero or one value -- + preceding_sectPrs = self.xpath("./preceding::w:sectPr[1]") + return preceding_sectPrs[0] if len(preceding_sectPrs) > 0 else None + + def remove_footerReference(self, type_: WD_HEADER_FOOTER) -> str: + """Return rId of w:footerReference child of `type_` after removing it.""" + footerReference = self.get_footerReference(type_) + if footerReference is None: + # -- should never happen, but to satisfy type-check and just in case -- + raise ValueError("CT_SectPr has no footer reference") + rId = footerReference.rId + self.remove(footerReference) + return rId + + def remove_headerReference(self, type_: WD_HEADER_FOOTER): + """Return rId of w:headerReference child of `type_` after removing it.""" + headerReference = self.get_headerReference(type_) + if headerReference is None: + # -- should never happen, but to satisfy type-check and just in case -- + raise ValueError("CT_SectPr has no header reference") + rId = headerReference.rId + self.remove(headerReference) + return rId + + @property + def right_margin(self) -> Length | None: + """The value of the ``w:right`` attribute in the ```` child element, as + a |Length| object, or |None| if either the element or the attribute is not + present.""" + pgMar = self.pgMar + if pgMar is None: + return None + return pgMar.right + + @right_margin.setter + def right_margin(self, value: Length | None): + pgMar = self.get_or_add_pgMar() + pgMar.right = value + + @property + def start_type(self) -> WD_SECTION_START: + """The member of the ``WD_SECTION_START`` enumeration corresponding to the value + of the ``val`` attribute of the ```` child element, or + ``WD_SECTION_START.NEW_PAGE`` if not present.""" + type = self.type + if type is None or type.val is None: + return WD_SECTION_START.NEW_PAGE + return type.val + + @start_type.setter + def start_type(self, value: WD_SECTION_START | None): + if value is None or value is WD_SECTION_START.NEW_PAGE: + self._remove_type() + return + type = self.get_or_add_type() + type.val = value + + @property + def titlePg_val(self) -> bool: + """Value of `w:titlePg/@val` or |False| if `./w:titlePg` is not present.""" + titlePg = self.titlePg + if titlePg is None: + return False + return titlePg.val + + @titlePg_val.setter + def titlePg_val(self, value: bool | None): + if value in [None, False]: + self._remove_titlePg() + else: + self.get_or_add_titlePg().val = True + + @property + def top_margin(self) -> Length | None: + """The value of the ``w:top`` attribute in the ```` child element, as a + |Length| object, or |None| if either the element or the attribute is not + present.""" + pgMar = self.pgMar + if pgMar is None: + return None + return pgMar.top + + @top_margin.setter + def top_margin(self, value: Length | None): + pgMar = self.get_or_add_pgMar() + pgMar.top = value + + +class CT_SectType(BaseOxmlElement): + """```` element, defining the section start type.""" + + val: WD_SECTION_START | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:val", WD_SECTION_START + ) + + +# == HELPERS ========================================================================= + + +class _SectBlockElementIterator: + """Generates the block-item XML elements in a section. + + A block-item element is a `CT_P` (paragraph) or a `CT_Tbl` (table). + """ + + _compiled_blocks_xpath: etree.XPath | None = None + _compiled_count_xpath: etree.XPath | None = None + + def __init__(self, sectPr: CT_SectPr): + self._sectPr = sectPr + + @classmethod + def iter_sect_block_elements(cls, sectPr: CT_SectPr) -> Iterator[BlockElement]: + """Generate each CT_P or CT_Tbl element within extents governed by `sectPr`.""" + return cls(sectPr)._iter_sect_block_elements() + + def _iter_sect_block_elements(self) -> Iterator[BlockElement]: + """Generate each CT_P or CT_Tbl element in section.""" + # -- General strategy is to get all block ( and ) elements from + # -- start of doc to and including this section, then compute the count of those + # -- elements that came from prior sections and skip that many to leave only the + # -- ones in this section. It's possible to express this "between here and + # -- there" (end of prior section and end of this one) concept in XPath, but it + # -- would be harder to follow because there are special cases (e.g. no prior + # -- section) and the boundary expressions are fairly hairy. I also believe it + # -- would be computationally more expensive than doing it this straighforward + # -- albeit (theoretically) slightly wasteful way. + + sectPr, sectPrs = self._sectPr, self._sectPrs + sectPr_idx = sectPrs.index(sectPr) + + # -- count block items belonging to prior sections -- + n_blks_to_skip = ( + 0 + if sectPr_idx == 0 + else self._count_of_blocks_in_and_above_section(sectPrs[sectPr_idx - 1]) + ) + + # -- and skip those in set of all blks from doc start to end of this section -- + for element in self._blocks_in_and_above_section(sectPr)[n_blks_to_skip:]: + yield element + + def _blocks_in_and_above_section(self, sectPr: CT_SectPr) -> Sequence[BlockElement]: + """All ps and tbls in section defined by `sectPr` and all prior sections.""" + if self._compiled_blocks_xpath is None: + self._compiled_blocks_xpath = etree.XPath( + self._blocks_in_and_above_section_xpath, + namespaces=nsmap, + regexp=False, + ) + xpath = self._compiled_blocks_xpath + # -- XPath callable results are Any (basically), so need a cast. -- + return cast(Sequence[BlockElement], xpath(sectPr)) + + @lazyproperty + def _blocks_in_and_above_section_xpath(self) -> str: + """XPath expr for ps and tbls in context of a sectPr and all prior sectPrs.""" + # -- "p_sect" is a section with sectPr located at w:p/w:pPr/w:sectPr. + # -- "body_sect" is a section with sectPr located at w:body/w:sectPr. The last + # -- section in the document is a "body_sect". All others are of the "p_sect" + # -- variety. "term" means "terminal", like the last p or tbl in the section. + # -- "pred" means "predecessor", like a preceding p or tbl in the section. + + # -- the terminal block in a p-based sect is the p the sectPr appears in -- + p_sect_term_block = "./parent::w:pPr/parent::w:p" + # -- the terminus of a body-based sect is the sectPr itself (not a block) -- + body_sect_term = "self::w:sectPr[parent::w:body]" + # -- all the ps and tbls preceding (but not including) the context node -- + pred_ps_and_tbls = "preceding-sibling::*[self::w:p | self::w:tbl]" + + # -- p_sect_term_block and body_sect_term(inus) are mutually exclusive. So the + # -- result is either the union of nodes found by the first two selectors or the + # -- nodes found by the last selector, never both. + return ( + # -- include the p containing a sectPr -- + f"{p_sect_term_block}" + # -- along with all the blocks that precede it -- + f" | {p_sect_term_block}/{pred_ps_and_tbls}" + # -- or all the preceding blocks if sectPr is body-based (last sectPr) -- + f" | {body_sect_term}/{pred_ps_and_tbls}" + ) + + def _count_of_blocks_in_and_above_section(self, sectPr: CT_SectPr) -> int: + """All ps and tbls in section defined by `sectPr` and all prior sections.""" + if self._compiled_count_xpath is None: + self._compiled_count_xpath = etree.XPath( + f"count({self._blocks_in_and_above_section_xpath})", + namespaces=nsmap, + regexp=False, + ) + xpath = self._compiled_count_xpath + # -- numeric XPath results are always float, so need an int() conversion -- + return int(cast(float, xpath(sectPr))) + + @lazyproperty + def _sectPrs(self) -> Sequence[CT_SectPr]: + """All w:sectPr elements in document, in document-order.""" + return self._sectPr.xpath( + "/w:document/w:body/w:p/w:pPr/w:sectPr | /w:document/w:body/w:sectPr", + ) diff --git a/intelliaide/vendor/docx/oxml/settings.py b/intelliaide/vendor/docx/oxml/settings.py new file mode 100644 index 0000000..d5bb41a --- /dev/null +++ b/intelliaide/vendor/docx/oxml/settings.py @@ -0,0 +1,138 @@ +"""Custom element classes related to document settings.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Callable + +from docx.oxml.xmlchemy import BaseOxmlElement, ZeroOrOne + +if TYPE_CHECKING: + from docx.oxml.shared import CT_OnOff + + +class CT_Settings(BaseOxmlElement): + """`w:settings` element, root element for the settings part.""" + + get_or_add_evenAndOddHeaders: Callable[[], CT_OnOff] + _remove_evenAndOddHeaders: Callable[[], None] + + _tag_seq = ( + "w:writeProtection", + "w:view", + "w:zoom", + "w:removePersonalInformation", + "w:removeDateAndTime", + "w:doNotDisplayPageBoundaries", + "w:displayBackgroundShape", + "w:printPostScriptOverText", + "w:printFractionalCharacterWidth", + "w:printFormsData", + "w:embedTrueTypeFonts", + "w:embedSystemFonts", + "w:saveSubsetFonts", + "w:saveFormsData", + "w:mirrorMargins", + "w:alignBordersAndEdges", + "w:bordersDoNotSurroundHeader", + "w:bordersDoNotSurroundFooter", + "w:gutterAtTop", + "w:hideSpellingErrors", + "w:hideGrammaticalErrors", + "w:activeWritingStyle", + "w:proofState", + "w:formsDesign", + "w:attachedTemplate", + "w:linkStyles", + "w:stylePaneFormatFilter", + "w:stylePaneSortMethod", + "w:documentType", + "w:mailMerge", + "w:revisionView", + "w:trackRevisions", + "w:doNotTrackMoves", + "w:doNotTrackFormatting", + "w:documentProtection", + "w:autoFormatOverride", + "w:styleLockTheme", + "w:styleLockQFSet", + "w:defaultTabStop", + "w:autoHyphenation", + "w:consecutiveHyphenLimit", + "w:hyphenationZone", + "w:doNotHyphenateCaps", + "w:showEnvelope", + "w:summaryLength", + "w:clickAndTypeStyle", + "w:defaultTableStyle", + "w:evenAndOddHeaders", + "w:bookFoldRevPrinting", + "w:bookFoldPrinting", + "w:bookFoldPrintingSheets", + "w:drawingGridHorizontalSpacing", + "w:drawingGridVerticalSpacing", + "w:displayHorizontalDrawingGridEvery", + "w:displayVerticalDrawingGridEvery", + "w:doNotUseMarginsForDrawingGridOrigin", + "w:drawingGridHorizontalOrigin", + "w:drawingGridVerticalOrigin", + "w:doNotShadeFormData", + "w:noPunctuationKerning", + "w:characterSpacingControl", + "w:printTwoOnOne", + "w:strictFirstAndLastChars", + "w:noLineBreaksAfter", + "w:noLineBreaksBefore", + "w:savePreviewPicture", + "w:doNotValidateAgainstSchema", + "w:saveInvalidXml", + "w:ignoreMixedContent", + "w:alwaysShowPlaceholderText", + "w:doNotDemarcateInvalidXml", + "w:saveXmlDataOnly", + "w:useXSLTWhenSaving", + "w:saveThroughXslt", + "w:showXMLTags", + "w:alwaysMergeEmptyNamespace", + "w:updateFields", + "w:hdrShapeDefaults", + "w:footnotePr", + "w:endnotePr", + "w:compat", + "w:docVars", + "w:rsids", + "m:mathPr", + "w:attachedSchema", + "w:themeFontLang", + "w:clrSchemeMapping", + "w:doNotIncludeSubdocsInStats", + "w:doNotAutoCompressPictures", + "w:forceUpgrade", + "w:captions", + "w:readModeInkLockDown", + "w:smartTagType", + "sl:schemaLibrary", + "w:shapeDefaults", + "w:doNotEmbedSmartTags", + "w:decimalSymbol", + "w:listSeparator", + ) + evenAndOddHeaders: CT_OnOff | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:evenAndOddHeaders", successors=_tag_seq[48:] + ) + del _tag_seq + + @property + def evenAndOddHeaders_val(self) -> bool: + """Value of `w:evenAndOddHeaders/@w:val` or |None| if not present.""" + evenAndOddHeaders = self.evenAndOddHeaders + if evenAndOddHeaders is None: + return False + return evenAndOddHeaders.val + + @evenAndOddHeaders_val.setter + def evenAndOddHeaders_val(self, value: bool | None): + if value is None or value is False: + self._remove_evenAndOddHeaders() + return + + self.get_or_add_evenAndOddHeaders().val = value diff --git a/intelliaide/vendor/docx/oxml/shape.py b/intelliaide/vendor/docx/oxml/shape.py new file mode 100644 index 0000000..c6df8e7 --- /dev/null +++ b/intelliaide/vendor/docx/oxml/shape.py @@ -0,0 +1,299 @@ +"""Custom element classes for shape-related elements like ``.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, cast + +from docx.oxml.ns import nsdecls +from docx.oxml.parser import parse_xml +from docx.oxml.simpletypes import ( + ST_Coordinate, + ST_DrawingElementId, + ST_PositiveCoordinate, + ST_RelationshipId, + XsdString, + XsdToken, +) +from docx.oxml.xmlchemy import ( + BaseOxmlElement, + OneAndOnlyOne, + OptionalAttribute, + RequiredAttribute, + ZeroOrOne, +) + +if TYPE_CHECKING: + from docx.shared import Length + + +class CT_Anchor(BaseOxmlElement): + """`` element, container for a "floating" shape.""" + + +class CT_Blip(BaseOxmlElement): + """```` element, specifies image source and adjustments such as alpha and + tint.""" + + embed: str | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "r:embed", ST_RelationshipId + ) + link: str | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "r:link", ST_RelationshipId + ) + + +class CT_BlipFillProperties(BaseOxmlElement): + """```` element, specifies picture properties.""" + + blip: CT_Blip = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "a:blip", successors=("a:srcRect", "a:tile", "a:stretch") + ) + + +class CT_GraphicalObject(BaseOxmlElement): + """```` element, container for a DrawingML object.""" + + graphicData: CT_GraphicalObjectData = OneAndOnlyOne( # pyright: ignore[reportAssignmentType] + "a:graphicData" + ) + + +class CT_GraphicalObjectData(BaseOxmlElement): + """```` element, container for the XML of a DrawingML object.""" + + pic: CT_Picture = ZeroOrOne("pic:pic") # pyright: ignore[reportAssignmentType] + uri: str = RequiredAttribute("uri", XsdToken) # pyright: ignore[reportAssignmentType] + + +class CT_Inline(BaseOxmlElement): + """`` element, container for an inline shape.""" + + extent: CT_PositiveSize2D = OneAndOnlyOne("wp:extent") # pyright: ignore[reportAssignmentType] + docPr: CT_NonVisualDrawingProps = OneAndOnlyOne( # pyright: ignore[reportAssignmentType] + "wp:docPr" + ) + graphic: CT_GraphicalObject = OneAndOnlyOne( # pyright: ignore[reportAssignmentType] + "a:graphic" + ) + + @classmethod + def new(cls, cx: Length, cy: Length, shape_id: int, pic: CT_Picture) -> CT_Inline: + """Return a new ```` element populated with the values passed as + parameters.""" + inline = cast(CT_Inline, parse_xml(cls._inline_xml())) + inline.extent.cx = cx + inline.extent.cy = cy + inline.docPr.id = shape_id + inline.docPr.name = "Picture %d" % shape_id + inline.graphic.graphicData.uri = "http://schemas.openxmlformats.org/drawingml/2006/picture" + inline.graphic.graphicData._insert_pic(pic) + return inline + + @classmethod + def new_pic_inline( + cls, shape_id: int, rId: str, filename: str, cx: Length, cy: Length + ) -> CT_Inline: + """Create `wp:inline` element containing a `pic:pic` element. + + The contents of the `pic:pic` element is taken from the argument values. + """ + pic_id = 0 # Word doesn't seem to use this, but does not omit it + pic = CT_Picture.new(pic_id, filename, rId, cx, cy) + inline = cls.new(cx, cy, shape_id, pic) + return inline + + @classmethod + def _inline_xml(cls): + return ( + "\n" + ' \n' + ' \n' + " \n" + ' \n' + " \n" + " \n" + ' \n' + " \n" + "" % nsdecls("wp", "a", "pic", "r") + ) + + +class CT_NonVisualDrawingProps(BaseOxmlElement): + """Used for ```` element, and perhaps others. + + Specifies the id and name of a DrawingML drawing. + """ + + id = RequiredAttribute("id", ST_DrawingElementId) + name = RequiredAttribute("name", XsdString) + + +class CT_NonVisualPictureProperties(BaseOxmlElement): + """```` element, specifies picture locking and resize behaviors.""" + + +class CT_Picture(BaseOxmlElement): + """```` element, a DrawingML picture.""" + + nvPicPr: CT_PictureNonVisual = OneAndOnlyOne( # pyright: ignore[reportAssignmentType] + "pic:nvPicPr" + ) + blipFill: CT_BlipFillProperties = OneAndOnlyOne( # pyright: ignore[reportAssignmentType] + "pic:blipFill" + ) + spPr: CT_ShapeProperties = OneAndOnlyOne("pic:spPr") # pyright: ignore[reportAssignmentType] + + @classmethod + def new(cls, pic_id: int, filename: str, rId: str, cx: Length, cy: Length) -> CT_Picture: + """A new minimum viable `` (picture) element.""" + pic = parse_xml(cls._pic_xml()) + pic.nvPicPr.cNvPr.id = pic_id + pic.nvPicPr.cNvPr.name = filename + pic.blipFill.blip.embed = rId + pic.spPr.cx = cx + pic.spPr.cy = cy + return pic + + @classmethod + def _pic_xml(cls): + return ( + "\n" + " \n" + ' \n' + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ' \n' + ' \n' + " \n" + ' \n' + " \n" + "" % nsdecls("pic", "a", "r") + ) + + +class CT_PictureNonVisual(BaseOxmlElement): + """```` element, non-visual picture properties.""" + + cNvPr = OneAndOnlyOne("pic:cNvPr") + + +class CT_Point2D(BaseOxmlElement): + """Used for ```` element, and perhaps others. + + Specifies an x, y coordinate (point). + """ + + x = RequiredAttribute("x", ST_Coordinate) + y = RequiredAttribute("y", ST_Coordinate) + + +class CT_PositiveSize2D(BaseOxmlElement): + """Used for ```` element, and perhaps others later. + + Specifies the size of a DrawingML drawing. + """ + + cx: Length = RequiredAttribute( # pyright: ignore[reportAssignmentType] + "cx", ST_PositiveCoordinate + ) + cy: Length = RequiredAttribute( # pyright: ignore[reportAssignmentType] + "cy", ST_PositiveCoordinate + ) + + +class CT_PresetGeometry2D(BaseOxmlElement): + """```` element, specifies an preset autoshape geometry, such as + ``rect``.""" + + +class CT_RelativeRect(BaseOxmlElement): + """```` element, specifying picture should fill containing rectangle + shape.""" + + +class CT_ShapeProperties(BaseOxmlElement): + """```` element, specifies size and shape of picture container.""" + + xfrm = ZeroOrOne( + "a:xfrm", + successors=( + "a:custGeom", + "a:prstGeom", + "a:ln", + "a:effectLst", + "a:effectDag", + "a:scene3d", + "a:sp3d", + "a:extLst", + ), + ) + + @property + def cx(self): + """Shape width as an instance of Emu, or None if not present.""" + xfrm = self.xfrm + if xfrm is None: + return None + return xfrm.cx + + @cx.setter + def cx(self, value): + xfrm = self.get_or_add_xfrm() + xfrm.cx = value + + @property + def cy(self): + """Shape height as an instance of Emu, or None if not present.""" + xfrm = self.xfrm + if xfrm is None: + return None + return xfrm.cy + + @cy.setter + def cy(self, value): + xfrm = self.get_or_add_xfrm() + xfrm.cy = value + + +class CT_StretchInfoProperties(BaseOxmlElement): + """```` element, specifies how picture should fill its containing + shape.""" + + +class CT_Transform2D(BaseOxmlElement): + """```` element, specifies size and shape of picture container.""" + + off = ZeroOrOne("a:off", successors=("a:ext",)) + ext = ZeroOrOne("a:ext", successors=()) + + @property + def cx(self): + ext = self.ext + if ext is None: + return None + return ext.cx + + @cx.setter + def cx(self, value): + ext = self.get_or_add_ext() + ext.cx = value + + @property + def cy(self): + ext = self.ext + if ext is None: + return None + return ext.cy + + @cy.setter + def cy(self, value): + ext = self.get_or_add_ext() + ext.cy = value diff --git a/intelliaide/vendor/docx/oxml/shared.py b/intelliaide/vendor/docx/oxml/shared.py new file mode 100644 index 0000000..8cfcd2b --- /dev/null +++ b/intelliaide/vendor/docx/oxml/shared.py @@ -0,0 +1,52 @@ +"""Objects shared by modules in the docx.oxml subpackage.""" + +from __future__ import annotations + +from typing import cast + +from docx.oxml.ns import qn +from docx.oxml.parser import OxmlElement +from docx.oxml.simpletypes import ST_DecimalNumber, ST_OnOff, ST_String +from docx.oxml.xmlchemy import BaseOxmlElement, OptionalAttribute, RequiredAttribute + + +class CT_DecimalNumber(BaseOxmlElement): + """Used for ````, ````, ```` and several others, + containing a text representation of a decimal number (e.g. 42) in its ``val`` + attribute.""" + + val: int = RequiredAttribute("w:val", ST_DecimalNumber) # pyright: ignore[reportAssignmentType] + + @classmethod + def new(cls, nsptagname: str, val: int): + """Return a new ``CT_DecimalNumber`` element having tagname `nsptagname` and + ``val`` attribute set to `val`.""" + return OxmlElement(nsptagname, attrs={qn("w:val"): str(val)}) + + +class CT_OnOff(BaseOxmlElement): + """Used for `w:b`, `w:i` elements and others. + + Contains a bool-ish string in its `val` attribute, xsd:boolean plus "on" and + "off". Defaults to `True`, so `` for example means "bold is turned on". + """ + + val: bool = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:val", ST_OnOff, default=True + ) + + +class CT_String(BaseOxmlElement): + """Used for `w:pStyle` and `w:tblStyle` elements and others. + + In those cases, it containing a style name in its `val` attribute. + """ + + val: str = RequiredAttribute("w:val", ST_String) # pyright: ignore[reportAssignmentType] + + @classmethod + def new(cls, nsptagname: str, val: str): + """A new `CT_String`` element with tagname `nsptagname` and `val` attribute set to `val`.""" + elm = cast(CT_String, OxmlElement(nsptagname)) + elm.val = val + return elm diff --git a/intelliaide/vendor/docx/oxml/simpletypes.py b/intelliaide/vendor/docx/oxml/simpletypes.py new file mode 100644 index 0000000..a0fc87d --- /dev/null +++ b/intelliaide/vendor/docx/oxml/simpletypes.py @@ -0,0 +1,434 @@ +# pyright: reportImportCycles=false + +"""Simple-type classes, corresponding to ST_* schema items. + +These provide validation and format translation for values stored in XML element +attributes. Naming generally corresponds to the simple type in the associated XML +schema. +""" + +from __future__ import annotations + +import datetime as dt +from typing import TYPE_CHECKING, Any, Tuple + +from docx.exceptions import InvalidXmlError +from docx.shared import Emu, Pt, RGBColor, Twips + +if TYPE_CHECKING: + from docx.shared import Length + + +class BaseSimpleType: + """Base class for simple-types.""" + + @classmethod + def from_xml(cls, xml_value: str) -> Any: + return cls.convert_from_xml(xml_value) + + @classmethod + def to_xml(cls, value: Any) -> str: + cls.validate(value) + str_value = cls.convert_to_xml(value) + return str_value + + @classmethod + def convert_from_xml(cls, str_value: str) -> Any: + return int(str_value) + + @classmethod + def convert_to_xml(cls, value: Any) -> str: ... + + @classmethod + def validate(cls, value: Any) -> None: ... + + @classmethod + def validate_int(cls, value: object): + if not isinstance(value, int): + raise TypeError("value must be , got %s" % type(value)) + + @classmethod + def validate_int_in_range(cls, value: int, min_inclusive: int, max_inclusive: int) -> None: + cls.validate_int(value) + if value < min_inclusive or value > max_inclusive: + raise ValueError( + "value must be in range %d to %d inclusive, got %d" + % (min_inclusive, max_inclusive, value) + ) + + @classmethod + def validate_string(cls, value: Any) -> str: + if not isinstance(value, str): + raise TypeError("value must be a string, got %s" % type(value)) + return value + + +class BaseIntType(BaseSimpleType): + @classmethod + def convert_from_xml(cls, str_value: str) -> int: + return int(str_value) + + @classmethod + def convert_to_xml(cls, value: int) -> str: + return str(value) + + @classmethod + def validate(cls, value: Any) -> None: + cls.validate_int(value) + + +class BaseStringType(BaseSimpleType): + @classmethod + def convert_from_xml(cls, str_value: str) -> str: + return str_value + + @classmethod + def convert_to_xml(cls, value: str) -> str: + return value + + @classmethod + def validate(cls, value: str): + cls.validate_string(value) + + +class BaseStringEnumerationType(BaseStringType): + _members: Tuple[str, ...] + + @classmethod + def validate(cls, value: Any) -> None: + cls.validate_string(value) + if value not in cls._members: + raise ValueError("must be one of %s, got '%s'" % (cls._members, value)) + + +class XsdAnyUri(BaseStringType): + """There's a regex in the spec this is supposed to meet... + + but current assessment is that spending cycles on validating wouldn't be worth it + for the number of programming errors it would catch. + """ + + +class XsdBoolean(BaseSimpleType): + @classmethod + def convert_from_xml(cls, str_value: str) -> bool: + if str_value not in ("1", "0", "true", "false"): + raise InvalidXmlError( + "value must be one of '1', '0', 'true' or 'false', got '%s'" % str_value + ) + return str_value in ("1", "true") + + @classmethod + def convert_to_xml(cls, value: bool) -> str: + return {True: "1", False: "0"}[value] + + @classmethod + def validate(cls, value: Any) -> None: + if value not in (True, False): + raise TypeError( + "only True or False (and possibly None) may be assigned, got '%s'" % value + ) + + +class XsdId(BaseStringType): + """String that must begin with a letter or underscore and cannot contain any colons. + + Not fully validated because not used in external API. + """ + + pass + + +class XsdInt(BaseIntType): + @classmethod + def validate(cls, value: Any) -> None: + cls.validate_int_in_range(value, -2147483648, 2147483647) + + +class XsdLong(BaseIntType): + @classmethod + def validate(cls, value: Any) -> None: + cls.validate_int_in_range(value, -9223372036854775808, 9223372036854775807) + + +class XsdString(BaseStringType): + pass + + +class XsdStringEnumeration(BaseStringEnumerationType): + """Set of enumerated xsd:string values.""" + + +class XsdToken(BaseStringType): + """Xsd:string with whitespace collapsing, e.g. multiple spaces reduced to one, + leading and trailing space stripped.""" + + pass + + +class XsdUnsignedInt(BaseIntType): + @classmethod + def validate(cls, value: Any) -> None: + cls.validate_int_in_range(value, 0, 4294967295) + + +class XsdUnsignedLong(BaseIntType): + @classmethod + def validate(cls, value: Any) -> None: + cls.validate_int_in_range(value, 0, 18446744073709551615) + + +class ST_BrClear(XsdString): + @classmethod + def validate(cls, value: str) -> None: + cls.validate_string(value) + valid_values = ("none", "left", "right", "all") + if value not in valid_values: + raise ValueError("must be one of %s, got '%s'" % (valid_values, value)) + + +class ST_BrType(XsdString): + @classmethod + def validate(cls, value: Any) -> None: + cls.validate_string(value) + valid_values = ("page", "column", "textWrapping") + if value not in valid_values: + raise ValueError("must be one of %s, got '%s'" % (valid_values, value)) + + +class ST_Coordinate(BaseIntType): + @classmethod + def convert_from_xml(cls, str_value: str) -> Length: + if "i" in str_value or "m" in str_value or "p" in str_value: + return ST_UniversalMeasure.convert_from_xml(str_value) + return Emu(int(str_value)) + + @classmethod + def validate(cls, value: Any) -> None: + ST_CoordinateUnqualified.validate(value) + + +class ST_CoordinateUnqualified(XsdLong): + @classmethod + def validate(cls, value: Any) -> None: + cls.validate_int_in_range(value, -27273042329600, 27273042316900) + + +class ST_DateTime(BaseSimpleType): + @classmethod + def convert_from_xml(cls, str_value: str) -> dt.datetime: + """Convert an xsd:dateTime string to a datetime object.""" + + def parse_xsd_datetime(dt_str: str) -> dt.datetime: + # -- handle trailing 'Z' (Zulu/UTC), common in Word files -- + if dt_str.endswith("Z"): + try: + # -- optional fractional seconds case -- + return dt.datetime.strptime(dt_str, "%Y-%m-%dT%H:%M:%S.%fZ").replace( + tzinfo=dt.timezone.utc + ) + except ValueError: + return dt.datetime.strptime(dt_str, "%Y-%m-%dT%H:%M:%SZ").replace( + tzinfo=dt.timezone.utc + ) + + # -- handles explicit offsets like +00:00, -05:00, or naive datetimes -- + try: + return dt.datetime.fromisoformat(dt_str) + except ValueError: + # -- fall-back to parsing as naive datetime (with or without fractional seconds) -- + try: + return dt.datetime.strptime(dt_str, "%Y-%m-%dT%H:%M:%S.%f") + except ValueError: + return dt.datetime.strptime(dt_str, "%Y-%m-%dT%H:%M:%S") + + try: + # -- parse anything reasonable, but never raise, just use default epoch time -- + return parse_xsd_datetime(str_value) + except Exception: + return dt.datetime(1970, 1, 1, tzinfo=dt.timezone.utc) + + @classmethod + def convert_to_xml(cls, value: dt.datetime) -> str: + # -- convert naive datetime to timezon-aware assuming local timezone -- + if value.tzinfo is None: + value = value.astimezone() + + # -- convert to UTC if not already -- + value = value.astimezone(dt.timezone.utc) + + # -- format with 'Z' suffix for UTC -- + return value.strftime("%Y-%m-%dT%H:%M:%SZ") + + @classmethod + def validate(cls, value: Any) -> None: + if not isinstance(value, dt.datetime): + raise TypeError("only a datetime.datetime object may be assigned, got '%s'" % value) + + +class ST_DecimalNumber(XsdInt): + pass + + +class ST_DrawingElementId(XsdUnsignedInt): + pass + + +class ST_HexColor(BaseStringType): + @classmethod + def convert_from_xml( # pyright: ignore[reportIncompatibleMethodOverride] + cls, str_value: str + ) -> RGBColor | str: + if str_value == "auto": + return ST_HexColorAuto.AUTO + return RGBColor.from_string(str_value) + + @classmethod + def convert_to_xml( # pyright: ignore[reportIncompatibleMethodOverride] + cls, value: RGBColor + ) -> str: + """Keep alpha hex numerals all uppercase just for consistency.""" + # expecting 3-tuple of ints in range 0-255 + return "%02X%02X%02X" % value + + @classmethod + def validate(cls, value: Any) -> None: + # must be an RGBColor object --- + if not isinstance(value, RGBColor): + raise ValueError( + "rgb color value must be RGBColor object, got %s %s" % (type(value), value) + ) + + +class ST_HexColorAuto(XsdStringEnumeration): + """Value for `w:color/[@val="auto"] attribute setting.""" + + AUTO = "auto" + + _members = (AUTO,) + + +class ST_HpsMeasure(XsdUnsignedLong): + """Half-point measure, e.g. 24.0 represents 12.0 points.""" + + @classmethod + def convert_from_xml(cls, str_value: str) -> Length: + if "m" in str_value or "n" in str_value or "p" in str_value: + return ST_UniversalMeasure.convert_from_xml(str_value) + return Pt(int(str_value) / 2.0) + + @classmethod + def convert_to_xml(cls, value: int | Length) -> str: + emu = Emu(value) + half_points = int(emu.pt * 2) + return str(half_points) + + +class ST_Merge(XsdStringEnumeration): + """Valid values for attribute.""" + + CONTINUE = "continue" + RESTART = "restart" + + _members = (CONTINUE, RESTART) + + +class ST_OnOff(XsdBoolean): + @classmethod + def convert_from_xml(cls, str_value: str) -> bool: + if str_value not in ("1", "0", "true", "false", "on", "off"): + raise InvalidXmlError( + "value must be one of '1', '0', 'true', 'false', 'on', or 'o" + "ff', got '%s'" % str_value + ) + return str_value in ("1", "true", "on") + + +class ST_PositiveCoordinate(XsdLong): + @classmethod + def convert_from_xml(cls, str_value: str) -> Length: + return Emu(int(str_value)) + + @classmethod + def validate(cls, value: Any) -> None: + cls.validate_int_in_range(value, 0, 27273042316900) + + +class ST_RelationshipId(XsdString): + pass + + +class ST_SignedTwipsMeasure(XsdInt): + @classmethod + def convert_from_xml(cls, str_value: str) -> Length: + if "i" in str_value or "m" in str_value or "p" in str_value: + return ST_UniversalMeasure.convert_from_xml(str_value) + return Twips(int(round(float(str_value)))) + + @classmethod + def convert_to_xml(cls, value: int | Length) -> str: + emu = Emu(value) + twips = emu.twips + return str(twips) + + +class ST_String(XsdString): + pass + + +class ST_TblLayoutType(XsdString): + @classmethod + def validate(cls, value: Any) -> None: + cls.validate_string(value) + valid_values = ("fixed", "autofit") + if value not in valid_values: + raise ValueError("must be one of %s, got '%s'" % (valid_values, value)) + + +class ST_TblWidth(XsdString): + @classmethod + def validate(cls, value: Any) -> None: + cls.validate_string(value) + valid_values = ("auto", "dxa", "nil", "pct") + if value not in valid_values: + raise ValueError("must be one of %s, got '%s'" % (valid_values, value)) + + +class ST_TwipsMeasure(XsdUnsignedLong): + @classmethod + def convert_from_xml(cls, str_value: str) -> Length: + if "i" in str_value or "m" in str_value or "p" in str_value: + return ST_UniversalMeasure.convert_from_xml(str_value) + return Twips(int(str_value)) + + @classmethod + def convert_to_xml(cls, value: int | Length) -> str: + emu = Emu(value) + twips = emu.twips + return str(twips) + + +class ST_UniversalMeasure(BaseSimpleType): + @classmethod + def convert_from_xml(cls, str_value: str) -> Emu: + float_part, units_part = str_value[:-2], str_value[-2:] + quantity = float(float_part) + multiplier = { + "mm": 36000, + "cm": 360000, + "in": 914400, + "pt": 12700, + "pc": 152400, + "pi": 152400, + }[units_part] + return Emu(int(round(quantity * multiplier))) + + +class ST_VerticalAlignRun(XsdStringEnumeration): + """Valid values for `w:vertAlign/@val`.""" + + BASELINE = "baseline" + SUPERSCRIPT = "superscript" + SUBSCRIPT = "subscript" + + _members = (BASELINE, SUPERSCRIPT, SUBSCRIPT) diff --git a/intelliaide/vendor/docx/oxml/styles.py b/intelliaide/vendor/docx/oxml/styles.py new file mode 100644 index 0000000..fb0e5d0 --- /dev/null +++ b/intelliaide/vendor/docx/oxml/styles.py @@ -0,0 +1,320 @@ +"""Custom element classes related to the styles part.""" + +from __future__ import annotations + +from docx.enum.style import WD_STYLE_TYPE +from docx.oxml.simpletypes import ST_DecimalNumber, ST_OnOff, ST_String +from docx.oxml.xmlchemy import ( + BaseOxmlElement, + OptionalAttribute, + RequiredAttribute, + ZeroOrMore, + ZeroOrOne, +) + + +def styleId_from_name(name): + """Return the style id corresponding to `name`, taking into account special-case + names such as 'Heading 1'.""" + return { + "caption": "Caption", + "heading 1": "Heading1", + "heading 2": "Heading2", + "heading 3": "Heading3", + "heading 4": "Heading4", + "heading 5": "Heading5", + "heading 6": "Heading6", + "heading 7": "Heading7", + "heading 8": "Heading8", + "heading 9": "Heading9", + }.get(name, name.replace(" ", "")) + + +class CT_LatentStyles(BaseOxmlElement): + """`w:latentStyles` element, defining behavior defaults for latent styles and + containing `w:lsdException` child elements that each override those defaults for a + named latent style.""" + + lsdException = ZeroOrMore("w:lsdException", successors=()) + + count = OptionalAttribute("w:count", ST_DecimalNumber) + defLockedState = OptionalAttribute("w:defLockedState", ST_OnOff) + defQFormat = OptionalAttribute("w:defQFormat", ST_OnOff) + defSemiHidden = OptionalAttribute("w:defSemiHidden", ST_OnOff) + defUIPriority = OptionalAttribute("w:defUIPriority", ST_DecimalNumber) + defUnhideWhenUsed = OptionalAttribute("w:defUnhideWhenUsed", ST_OnOff) + + def bool_prop(self, attr_name): + """Return the boolean value of the attribute having `attr_name`, or |False| if + not present.""" + value = getattr(self, attr_name) + if value is None: + return False + return value + + def get_by_name(self, name): + """Return the `w:lsdException` child having `name`, or |None| if not found.""" + found = self.xpath('w:lsdException[@w:name="%s"]' % name) + if not found: + return None + return found[0] + + def set_bool_prop(self, attr_name, value): + """Set the on/off attribute having `attr_name` to `value`.""" + setattr(self, attr_name, bool(value)) + + +class CT_LsdException(BaseOxmlElement): + """```` element, defining override visibility behaviors for a named + latent style.""" + + locked = OptionalAttribute("w:locked", ST_OnOff) + name = RequiredAttribute("w:name", ST_String) + qFormat = OptionalAttribute("w:qFormat", ST_OnOff) + semiHidden = OptionalAttribute("w:semiHidden", ST_OnOff) + uiPriority = OptionalAttribute("w:uiPriority", ST_DecimalNumber) + unhideWhenUsed = OptionalAttribute("w:unhideWhenUsed", ST_OnOff) + + def delete(self): + """Remove this `w:lsdException` element from the XML document.""" + self.getparent().remove(self) + + def on_off_prop(self, attr_name): + """Return the boolean value of the attribute having `attr_name`, or |None| if + not present.""" + return getattr(self, attr_name) + + def set_on_off_prop(self, attr_name, value): + """Set the on/off attribute having `attr_name` to `value`.""" + setattr(self, attr_name, value) + + +class CT_Style(BaseOxmlElement): + """A ```` element, representing a style definition.""" + + _tag_seq = ( + "w:name", + "w:aliases", + "w:basedOn", + "w:next", + "w:link", + "w:autoRedefine", + "w:hidden", + "w:uiPriority", + "w:semiHidden", + "w:unhideWhenUsed", + "w:qFormat", + "w:locked", + "w:personal", + "w:personalCompose", + "w:personalReply", + "w:rsid", + "w:pPr", + "w:rPr", + "w:tblPr", + "w:trPr", + "w:tcPr", + "w:tblStylePr", + ) + name = ZeroOrOne("w:name", successors=_tag_seq[1:]) + basedOn = ZeroOrOne("w:basedOn", successors=_tag_seq[3:]) + next = ZeroOrOne("w:next", successors=_tag_seq[4:]) + uiPriority = ZeroOrOne("w:uiPriority", successors=_tag_seq[8:]) + semiHidden = ZeroOrOne("w:semiHidden", successors=_tag_seq[9:]) + unhideWhenUsed = ZeroOrOne("w:unhideWhenUsed", successors=_tag_seq[10:]) + qFormat = ZeroOrOne("w:qFormat", successors=_tag_seq[11:]) + locked = ZeroOrOne("w:locked", successors=_tag_seq[12:]) + pPr = ZeroOrOne("w:pPr", successors=_tag_seq[17:]) + rPr = ZeroOrOne("w:rPr", successors=_tag_seq[18:]) + del _tag_seq + + type: WD_STYLE_TYPE | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:type", WD_STYLE_TYPE + ) + styleId: str | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:styleId", ST_String + ) + default = OptionalAttribute("w:default", ST_OnOff) + customStyle = OptionalAttribute("w:customStyle", ST_OnOff) + + @property + def basedOn_val(self): + """Value of `w:basedOn/@w:val` or |None| if not present.""" + basedOn = self.basedOn + if basedOn is None: + return None + return basedOn.val + + @basedOn_val.setter + def basedOn_val(self, value): + if value is None: + self._remove_basedOn() + else: + self.get_or_add_basedOn().val = value + + @property + def base_style(self): + """Sibling CT_Style element this style is based on or |None| if no base style or + base style not found.""" + basedOn = self.basedOn + if basedOn is None: + return None + styles = self.getparent() + base_style = styles.get_by_id(basedOn.val) + if base_style is None: + return None + return base_style + + def delete(self): + """Remove this `w:style` element from its parent `w:styles` element.""" + self.getparent().remove(self) + + @property + def locked_val(self): + """Value of `w:locked/@w:val` or |False| if not present.""" + locked = self.locked + if locked is None: + return False + return locked.val + + @locked_val.setter + def locked_val(self, value): + self._remove_locked() + if bool(value) is True: + locked = self._add_locked() + locked.val = value + + @property + def name_val(self): + """Value of ```` child or |None| if not present.""" + name = self.name + if name is None: + return None + return name.val + + @name_val.setter + def name_val(self, value): + self._remove_name() + if value is not None: + name = self._add_name() + name.val = value + + @property + def next_style(self): + """Sibling CT_Style element identified by the value of `w:name/@w:val` or |None| + if no value is present or no style with that style id is found.""" + next = self.next + if next is None: + return None + styles = self.getparent() + return styles.get_by_id(next.val) # None if not found + + @property + def qFormat_val(self): + """Value of `w:qFormat/@w:val` or |False| if not present.""" + qFormat = self.qFormat + if qFormat is None: + return False + return qFormat.val + + @qFormat_val.setter + def qFormat_val(self, value): + self._remove_qFormat() + if bool(value): + self._add_qFormat() + + @property + def semiHidden_val(self): + """Value of ```` child or |False| if not present.""" + semiHidden = self.semiHidden + if semiHidden is None: + return False + return semiHidden.val + + @semiHidden_val.setter + def semiHidden_val(self, value): + self._remove_semiHidden() + if bool(value) is True: + semiHidden = self._add_semiHidden() + semiHidden.val = value + + @property + def uiPriority_val(self): + """Value of ```` child or |None| if not present.""" + uiPriority = self.uiPriority + if uiPriority is None: + return None + return uiPriority.val + + @uiPriority_val.setter + def uiPriority_val(self, value): + self._remove_uiPriority() + if value is not None: + uiPriority = self._add_uiPriority() + uiPriority.val = value + + @property + def unhideWhenUsed_val(self): + """Value of `w:unhideWhenUsed/@w:val` or |False| if not present.""" + unhideWhenUsed = self.unhideWhenUsed + if unhideWhenUsed is None: + return False + return unhideWhenUsed.val + + @unhideWhenUsed_val.setter + def unhideWhenUsed_val(self, value): + self._remove_unhideWhenUsed() + if bool(value) is True: + unhideWhenUsed = self._add_unhideWhenUsed() + unhideWhenUsed.val = value + + +class CT_Styles(BaseOxmlElement): + """```` element, the root element of a styles part, i.e. styles.xml.""" + + _tag_seq = ("w:docDefaults", "w:latentStyles", "w:style") + latentStyles = ZeroOrOne("w:latentStyles", successors=_tag_seq[2:]) + style = ZeroOrMore("w:style", successors=()) + del _tag_seq + + def add_style_of_type(self, name, style_type, builtin): + """Return a newly added `w:style` element having `name` and `style_type`. + + `w:style/@customStyle` is set based on the value of `builtin`. + """ + style = self.add_style() + style.type = style_type + style.customStyle = None if builtin else True + style.styleId = styleId_from_name(name) + style.name_val = name + return style + + def default_for(self, style_type): + """Return `w:style[@w:type="*{style_type}*][-1]` or |None| if not found.""" + default_styles_for_type = [ + s for s in self._iter_styles() if s.type == style_type and s.default + ] + if not default_styles_for_type: + return None + # spec calls for last default in document order + return default_styles_for_type[-1] + + def get_by_id(self, styleId: str) -> CT_Style | None: + """`w:style` child where @styleId = `styleId`. + + |None| if not found. + """ + xpath = f'w:style[@w:styleId="{styleId}"]' + return next(iter(self.xpath(xpath)), None) + + def get_by_name(self, name: str) -> CT_Style | None: + """`w:style` child with `w:name` grandchild having value `name`. + + |None| if not found. + """ + xpath = 'w:style[w:name/@w:val="%s"]' % name + return next(iter(self.xpath(xpath)), None) + + def _iter_styles(self): + """Generate each of the `w:style` child elements in document order.""" + return (style for style in self.xpath("w:style")) diff --git a/intelliaide/vendor/docx/oxml/table.py b/intelliaide/vendor/docx/oxml/table.py new file mode 100644 index 0000000..9457da2 --- /dev/null +++ b/intelliaide/vendor/docx/oxml/table.py @@ -0,0 +1,977 @@ +"""Custom element classes for tables.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Callable, cast + +from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT, WD_ROW_HEIGHT_RULE, WD_TABLE_DIRECTION +from docx.exceptions import InvalidSpanError +from docx.oxml.ns import nsdecls, qn +from docx.oxml.parser import parse_xml +from docx.oxml.shared import CT_DecimalNumber +from docx.oxml.simpletypes import ( + ST_Merge, + ST_TblLayoutType, + ST_TblWidth, + ST_TwipsMeasure, + XsdInt, +) +from docx.oxml.text.paragraph import CT_P +from docx.oxml.xmlchemy import ( + BaseOxmlElement, + OneAndOnlyOne, + OneOrMore, + OptionalAttribute, + RequiredAttribute, + ZeroOrMore, + ZeroOrOne, +) +from docx.shared import Emu, Length, Twips + +if TYPE_CHECKING: + from docx.enum.table import WD_TABLE_ALIGNMENT + from docx.enum.text import WD_ALIGN_PARAGRAPH + from docx.oxml.shared import CT_OnOff, CT_String + from docx.oxml.text.parfmt import CT_Jc + + +class CT_Height(BaseOxmlElement): + """Used for `w:trHeight` to specify a row height and row height rule.""" + + val: Length | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:val", ST_TwipsMeasure + ) + hRule: WD_ROW_HEIGHT_RULE | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:hRule", WD_ROW_HEIGHT_RULE + ) + + +class CT_Row(BaseOxmlElement): + """```` element.""" + + add_tc: Callable[[], CT_Tc] + get_or_add_trPr: Callable[[], CT_TrPr] + _add_trPr: Callable[[], CT_TrPr] + + tc_lst: list[CT_Tc] + # -- custom inserter below -- + tblPrEx: CT_TblPrEx | None = ZeroOrOne("w:tblPrEx") # pyright: ignore[reportAssignmentType] + # -- custom inserter below -- + trPr: CT_TrPr | None = ZeroOrOne("w:trPr") # pyright: ignore[reportAssignmentType] + tc = ZeroOrMore("w:tc") + + @property + def grid_after(self) -> int: + """The number of unpopulated layout-grid cells at the end of this row.""" + trPr = self.trPr + if trPr is None: + return 0 + return trPr.grid_after + + @property + def grid_before(self) -> int: + """The number of unpopulated layout-grid cells at the start of this row.""" + trPr = self.trPr + if trPr is None: + return 0 + return trPr.grid_before + + def tc_at_grid_offset(self, grid_offset: int) -> CT_Tc: + """The `tc` element in this tr at exact `grid offset`. + + Raises ValueError when this `w:tr` contains no `w:tc` with exact starting `grid_offset`. + """ + # -- account for omitted cells at the start of the row -- + remaining_offset = grid_offset - self.grid_before + + for tc in self.tc_lst: + # -- We've gone past grid_offset without finding a tc, no sense searching further. -- + if remaining_offset < 0: + break + # -- We've arrived at grid_offset, this is the `w:tc` we're looking for. -- + if remaining_offset == 0: + return tc + # -- We're not there yet, skip forward the number of layout-grid cells this cell + # -- occupies. + remaining_offset -= tc.grid_span + + raise ValueError(f"no `tc` element at grid_offset={grid_offset}") + + @property + def tr_idx(self) -> int: + """Index of this `w:tr` element within its parent `w:tbl` element.""" + tbl = cast(CT_Tbl, self.getparent()) + return tbl.tr_lst.index(self) + + @property + def trHeight_hRule(self) -> WD_ROW_HEIGHT_RULE | None: + """The value of `./w:trPr/w:trHeight/@w:hRule`, or |None| if not present.""" + trPr = self.trPr + if trPr is None: + return None + return trPr.trHeight_hRule + + @trHeight_hRule.setter + def trHeight_hRule(self, value: WD_ROW_HEIGHT_RULE | None): + trPr = self.get_or_add_trPr() + trPr.trHeight_hRule = value + + @property + def trHeight_val(self): + """Return the value of `w:trPr/w:trHeight@w:val`, or |None| if not present.""" + trPr = self.trPr + if trPr is None: + return None + return trPr.trHeight_val + + @trHeight_val.setter + def trHeight_val(self, value: Length | None): + trPr = self.get_or_add_trPr() + trPr.trHeight_val = value + + def _insert_tblPrEx(self, tblPrEx: CT_TblPrEx): + self.insert(0, tblPrEx) + + def _insert_trPr(self, trPr: CT_TrPr): + tblPrEx = self.tblPrEx + if tblPrEx is not None: + tblPrEx.addnext(trPr) + else: + self.insert(0, trPr) + + def _new_tc(self): + return CT_Tc.new() + + +class CT_Tbl(BaseOxmlElement): + """```` element.""" + + add_tr: Callable[[], CT_Row] + tr_lst: list[CT_Row] + + tblPr: CT_TblPr = OneAndOnlyOne("w:tblPr") # pyright: ignore[reportAssignmentType] + tblGrid: CT_TblGrid = OneAndOnlyOne("w:tblGrid") # pyright: ignore[reportAssignmentType] + tr = ZeroOrMore("w:tr") + + @property + def bidiVisual_val(self) -> bool | None: + """Value of `./w:tblPr/w:bidiVisual/@w:val` or |None| if not present. + + Controls whether table cells are displayed right-to-left or left-to-right. + """ + bidiVisual = self.tblPr.bidiVisual + if bidiVisual is None: + return None + return bidiVisual.val + + @bidiVisual_val.setter + def bidiVisual_val(self, value: WD_TABLE_DIRECTION | None): + tblPr = self.tblPr + if value is None: + tblPr._remove_bidiVisual() # pyright: ignore[reportPrivateUsage] + else: + tblPr.get_or_add_bidiVisual().val = bool(value) + + @property + def col_count(self): + """The number of grid columns in this table.""" + return len(self.tblGrid.gridCol_lst) + + def iter_tcs(self): + """Generate each of the `w:tc` elements in this table, left to right and top to + bottom. + + Each cell in the first row is generated, followed by each cell in the second + row, etc. + """ + for tr in self.tr_lst: + for tc in tr.tc_lst: + yield tc + + @classmethod + def new_tbl(cls, rows: int, cols: int, width: Length) -> CT_Tbl: + """Return a new `w:tbl` element having `rows` rows and `cols` columns. + + `width` is distributed evenly between the columns. + """ + return cast(CT_Tbl, parse_xml(cls._tbl_xml(rows, cols, width))) + + @property + def tblStyle_val(self) -> str | None: + """`w:tblPr/w:tblStyle/@w:val` (a table style id) or |None| if not present.""" + tblStyle = self.tblPr.tblStyle + if tblStyle is None: + return None + return tblStyle.val + + @tblStyle_val.setter + def tblStyle_val(self, styleId: str | None) -> None: + """Set the value of `w:tblPr/w:tblStyle/@w:val` (a table style id) to `styleId`. + + If `styleId` is None, remove the `w:tblStyle` element. + """ + tblPr = self.tblPr + tblPr._remove_tblStyle() # pyright: ignore[reportPrivateUsage] + if styleId is None: + return + tblPr._add_tblStyle().val = styleId # pyright: ignore[reportPrivateUsage] + + @classmethod + def _tbl_xml(cls, rows: int, cols: int, width: Length) -> str: + col_width = Emu(width // cols) if cols > 0 else Emu(0) + return ( + f"\n" + f" \n" + f' \n' + f' \n' + f" \n" + f"{cls._tblGrid_xml(cols, col_width)}" + f"{cls._trs_xml(rows, cols, col_width)}" + f"\n" + ) + + @classmethod + def _tblGrid_xml(cls, col_count: int, col_width: Length) -> str: + xml = " \n" + for _ in range(col_count): + xml += ' \n' % col_width.twips + xml += " \n" + return xml + + @classmethod + def _trs_xml(cls, row_count: int, col_count: int, col_width: Length) -> str: + return f" \n{cls._tcs_xml(col_count, col_width)} \n" * row_count + + @classmethod + def _tcs_xml(cls, col_count: int, col_width: Length) -> str: + return ( + f" \n" + f" \n" + f' \n' + f" \n" + f" \n" + f" \n" + ) * col_count + + +class CT_TblGrid(BaseOxmlElement): + """`w:tblGrid` element. + + Child of `w:tbl`, holds `w:gridCol> elements that define column count, width, etc. + """ + + add_gridCol: Callable[[], CT_TblGridCol] + gridCol_lst: list[CT_TblGridCol] + + gridCol = ZeroOrMore("w:gridCol", successors=("w:tblGridChange",)) + + +class CT_TblGridCol(BaseOxmlElement): + """`w:gridCol` element, child of `w:tblGrid`, defines a table column.""" + + w: Length | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:w", ST_TwipsMeasure + ) + + @property + def gridCol_idx(self) -> int: + """Index of this `w:gridCol` element within its parent `w:tblGrid` element.""" + tblGrid = cast(CT_TblGrid, self.getparent()) + return tblGrid.gridCol_lst.index(self) + + +class CT_TblLayoutType(BaseOxmlElement): + """`w:tblLayout` element. + + Specifies whether column widths are fixed or can be automatically adjusted based on + content. + """ + + type: str | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:type", ST_TblLayoutType + ) + + +class CT_TblPr(BaseOxmlElement): + """```` element, child of ````, holds child elements that define + table properties such as style and borders.""" + + get_or_add_bidiVisual: Callable[[], CT_OnOff] + get_or_add_jc: Callable[[], CT_Jc] + get_or_add_tblLayout: Callable[[], CT_TblLayoutType] + _add_tblStyle: Callable[[], CT_String] + _remove_bidiVisual: Callable[[], None] + _remove_jc: Callable[[], None] + _remove_tblStyle: Callable[[], None] + + _tag_seq = ( + "w:tblStyle", + "w:tblpPr", + "w:tblOverlap", + "w:bidiVisual", + "w:tblStyleRowBandSize", + "w:tblStyleColBandSize", + "w:tblW", + "w:jc", + "w:tblCellSpacing", + "w:tblInd", + "w:tblBorders", + "w:shd", + "w:tblLayout", + "w:tblCellMar", + "w:tblLook", + "w:tblCaption", + "w:tblDescription", + "w:tblPrChange", + ) + tblStyle: CT_String | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:tblStyle", successors=_tag_seq[1:] + ) + bidiVisual: CT_OnOff | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:bidiVisual", successors=_tag_seq[4:] + ) + jc: CT_Jc | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:jc", successors=_tag_seq[8:] + ) + tblLayout: CT_TblLayoutType | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:tblLayout", successors=_tag_seq[13:] + ) + del _tag_seq + + @property + def alignment(self) -> WD_TABLE_ALIGNMENT | None: + """Horizontal alignment of table, |None| if `./w:jc` is not present.""" + jc = self.jc + if jc is None: + return None + return cast("WD_TABLE_ALIGNMENT | None", jc.val) + + @alignment.setter + def alignment(self, value: WD_TABLE_ALIGNMENT | None): + self._remove_jc() + if value is None: + return + jc = self.get_or_add_jc() + jc.val = cast("WD_ALIGN_PARAGRAPH", value) + + @property + def autofit(self) -> bool: + """|False| when there is a `w:tblLayout` child with `@w:type="fixed"`. + + Otherwise |True|. + """ + tblLayout = self.tblLayout + return True if tblLayout is None else tblLayout.type != "fixed" + + @autofit.setter + def autofit(self, value: bool): + tblLayout = self.get_or_add_tblLayout() + tblLayout.type = "autofit" if value else "fixed" + + @property + def style(self): + """Return the value of the ``val`` attribute of the ```` child or + |None| if not present.""" + tblStyle = self.tblStyle + if tblStyle is None: + return None + return tblStyle.val + + @style.setter + def style(self, value: str | None): + self._remove_tblStyle() + if value is None: + return + self._add_tblStyle().val = value + + +class CT_TblPrEx(BaseOxmlElement): + """`w:tblPrEx` element, exceptions to table-properties. + + Applied at a lower level, like a `w:tr` to modify the appearance. Possibly used when + two tables are merged. For more see: + http://officeopenxml.com/WPtablePropertyExceptions.php + """ + + +class CT_TblWidth(BaseOxmlElement): + """Used for `w:tblW` and `w:tcW` and others, specifies a table-related width.""" + + # the type for `w` attr is actually ST_MeasurementOrPercent, but using + # XsdInt for now because only dxa (twips) values are being used. It's not + # entirely clear what the semantics are for other values like -01.4mm + w: int = RequiredAttribute("w:w", XsdInt) # pyright: ignore[reportAssignmentType] + type = RequiredAttribute("w:type", ST_TblWidth) + + @property + def width(self) -> Length | None: + """EMU length indicated by the combined `w:w` and `w:type` attrs.""" + if self.type != "dxa": + return None + return Twips(self.w) + + @width.setter + def width(self, value: Length): + self.type = "dxa" + self.w = Emu(value).twips + + +class CT_Tc(BaseOxmlElement): + """`w:tc` table cell element.""" + + add_p: Callable[[], CT_P] + get_or_add_tcPr: Callable[[], CT_TcPr] + p_lst: list[CT_P] + tbl_lst: list[CT_Tbl] + _insert_tbl: Callable[[CT_Tbl], CT_Tbl] + _new_p: Callable[[], CT_P] + + # -- tcPr has many successors, `._insert_tcPr()` is overridden below -- + tcPr: CT_TcPr | None = ZeroOrOne("w:tcPr") # pyright: ignore[reportAssignmentType] + p = OneOrMore("w:p") + tbl = OneOrMore("w:tbl") + + @property + def bottom(self) -> int: + """The row index that marks the bottom extent of the vertical span of this cell. + + This is one greater than the index of the bottom-most row of the span, similar + to how a slice of the cell's rows would be specified. + """ + if self.vMerge is not None: + tc_below = self._tc_below + if tc_below is not None and tc_below.vMerge == ST_Merge.CONTINUE: + return tc_below.bottom + return self._tr_idx + 1 + + def clear_content(self): + """Remove all content elements, preserving `w:tcPr` element if present. + + Note that this leaves the `w:tc` element in an invalid state because it doesn't + contain at least one block-level element. It's up to the caller to add a + `w:p`child element as the last content element. + """ + # -- remove all cell inner-content except a `w:tcPr` when present. -- + for e in self.xpath("./*[not(self::w:tcPr)]"): + self.remove(e) + + @property + def grid_offset(self) -> int: + """Starting offset of `tc` in the layout-grid columns of its table. + + A cell in the leftmost grid-column has offset 0. + """ + grid_before = self._tr.grid_before + preceding_tc_grid_spans = sum( + tc.grid_span for tc in self.xpath("./preceding-sibling::w:tc") + ) + return grid_before + preceding_tc_grid_spans + + @property + def grid_span(self) -> int: + """The integer number of columns this cell spans. + + Determined by ./w:tcPr/w:gridSpan/@val, it defaults to 1. + """ + tcPr = self.tcPr + return 1 if tcPr is None else tcPr.grid_span + + @grid_span.setter + def grid_span(self, value: int): + tcPr = self.get_or_add_tcPr() + tcPr.grid_span = value + + @property + def inner_content_elements(self) -> list[CT_P | CT_Tbl]: + """Generate all `w:p` and `w:tbl` elements in this document-body. + + Elements appear in document order. Elements shaded by nesting in a `w:ins` or + other "wrapper" element will not be included. + """ + return self.xpath("./w:p | ./w:tbl") + + def iter_block_items(self): + """Generate a reference to each of the block-level content elements in this + cell, in the order they appear.""" + block_item_tags = (qn("w:p"), qn("w:tbl"), qn("w:sdt")) + for child in self: + if child.tag in block_item_tags: + yield child + + @property + def left(self) -> int: + """The grid column index at which this ```` element appears.""" + return self.grid_offset + + def merge(self, other_tc: CT_Tc) -> CT_Tc: + """Return top-left `w:tc` element of a new span. + + Span is formed by merging the rectangular region defined by using this tc + element and `other_tc` as diagonal corners. + """ + top, left, height, width = self._span_dimensions(other_tc) + top_tc = self._tbl.tr_lst[top].tc_at_grid_offset(left) + top_tc._grow_to(width, height) + return top_tc + + @classmethod + def new(cls) -> CT_Tc: + """A new `w:tc` element, containing an empty paragraph as the required EG_BlockLevelElt.""" + return cast(CT_Tc, parse_xml("" % nsdecls("w"))) + + @property + def right(self) -> int: + """The grid column index that marks the right-side extent of the horizontal span + of this cell. + + This is one greater than the index of the right-most column of the span, similar + to how a slice of the cell's columns would be specified. + """ + return self.grid_offset + self.grid_span + + @property + def top(self) -> int: + """The top-most row index in the vertical span of this cell.""" + if self.vMerge is None or self.vMerge == ST_Merge.RESTART: + return self._tr_idx + return self._tc_above.top + + @property + def vMerge(self) -> str | None: + """Value of ./w:tcPr/w:vMerge/@val, |None| if w:vMerge is not present.""" + tcPr = self.tcPr + if tcPr is None: + return None + return tcPr.vMerge_val + + @vMerge.setter + def vMerge(self, value: str | None): + tcPr = self.get_or_add_tcPr() + tcPr.vMerge_val = value + + @property + def width(self) -> Length | None: + """EMU length represented in `./w:tcPr/w:tcW` or |None| if not present.""" + tcPr = self.tcPr + if tcPr is None: + return None + return tcPr.width + + @width.setter + def width(self, value: Length): + tcPr = self.get_or_add_tcPr() + tcPr.width = value + + def _add_width_of(self, other_tc: CT_Tc): + """Add the width of `other_tc` to this cell. + + Does nothing if either this tc or `other_tc` does not have a specified width. + """ + if self.width and other_tc.width: + self.width = Length(self.width + other_tc.width) + + def _grow_to(self, width: int, height: int, top_tc: CT_Tc | None = None): + """Grow this cell to `width` grid columns and `height` rows. + + This is accomplished by expanding horizontal spans and creating continuation + cells to form vertical spans. + """ + + def vMerge_val(top_tc: CT_Tc): + return ( + ST_Merge.CONTINUE + if top_tc is not self + else None + if height == 1 + else ST_Merge.RESTART + ) + + top_tc = self if top_tc is None else top_tc + self._span_to_width(width, top_tc, vMerge_val(top_tc)) + if height > 1: + tc_below = self._tc_below + assert tc_below is not None + tc_below._grow_to(width, height - 1, top_tc) + + def _insert_tcPr(self, tcPr: CT_TcPr) -> CT_TcPr: + """Override default `._insert_tcPr()`.""" + # -- `tcPr`` has a large number of successors, but always comes first if it appears, + # -- so just using insert(0, ...) rather than spelling out successors. + self.insert(0, tcPr) + return tcPr + + @property + def _is_empty(self) -> bool: + """True if this cell contains only a single empty `w:p` element.""" + block_items = list(self.iter_block_items()) + if len(block_items) > 1: + return False + # -- cell must include at least one block item but can be a `w:tbl`, `w:sdt`, + # -- `w:customXml` or a `w:p` + only_item = block_items[0] + return isinstance(only_item, CT_P) and len(only_item.r_lst) == 0 + + def _move_content_to(self, other_tc: CT_Tc): + """Append the content of this cell to `other_tc`. + + Leaves this cell with a single empty ```` element. + """ + if other_tc is self: + return + if self._is_empty: + return + other_tc._remove_trailing_empty_p() + # -- appending moves each element from self to other_tc -- + for block_element in self.iter_block_items(): + other_tc.append(block_element) + # -- add back the required minimum single empty element -- + self.append(self._new_p()) + + def _new_tbl(self) -> None: + raise NotImplementedError( + "use CT_Tbl.new_tbl() to add a new table, specifying rows and columns" + ) + + @property + def _next_tc(self) -> CT_Tc | None: + """The `w:tc` element immediately following this one in this row, or |None| if + this is the last `w:tc` element in the row.""" + following_tcs = self.xpath("./following-sibling::w:tc") + return following_tcs[0] if following_tcs else None + + def _remove(self): + """Remove this `w:tc` element from the XML tree.""" + parent_element = self.getparent() + assert parent_element is not None + parent_element.remove(self) + + def _remove_trailing_empty_p(self): + """Remove last content element from this cell if it's an empty `w:p` element.""" + block_items = list(self.iter_block_items()) + last_content_elm = block_items[-1] + if not isinstance(last_content_elm, CT_P): + return + p = last_content_elm + if len(p.r_lst) > 0: + return + self.remove(p) + + def _span_dimensions(self, other_tc: CT_Tc) -> tuple[int, int, int, int]: + """Return a (top, left, height, width) 4-tuple specifying the extents of the + merged cell formed by using this tc and `other_tc` as opposite corner + extents.""" + + def raise_on_inverted_L(a: CT_Tc, b: CT_Tc): + if a.top == b.top and a.bottom != b.bottom: + raise InvalidSpanError("requested span not rectangular") + if a.left == b.left and a.right != b.right: + raise InvalidSpanError("requested span not rectangular") + + def raise_on_tee_shaped(a: CT_Tc, b: CT_Tc): + top_most, other = (a, b) if a.top < b.top else (b, a) + if top_most.top < other.top and top_most.bottom > other.bottom: + raise InvalidSpanError("requested span not rectangular") + + left_most, other = (a, b) if a.left < b.left else (b, a) + if left_most.left < other.left and left_most.right > other.right: + raise InvalidSpanError("requested span not rectangular") + + raise_on_inverted_L(self, other_tc) + raise_on_tee_shaped(self, other_tc) + + top = min(self.top, other_tc.top) + left = min(self.left, other_tc.left) + bottom = max(self.bottom, other_tc.bottom) + right = max(self.right, other_tc.right) + + return top, left, bottom - top, right - left + + def _span_to_width(self, grid_width: int, top_tc: CT_Tc, vMerge: str | None): + """Incorporate `w:tc` elements to the right until this cell spans `grid_width`. + + Incorporated `w:tc` elements are removed (replaced by gridSpan value). + + Raises |ValueError| if `grid_width` cannot be exactly achieved, such as when a + merged cell would drive the span width greater than `grid_width` or if not + enough grid columns are available to make this cell that wide. All content from + incorporated cells is appended to `top_tc`. The val attribute of the vMerge + element on the single remaining cell is set to `vMerge`. If `vMerge` is |None|, + the vMerge element is removed if present. + """ + self._move_content_to(top_tc) + while self.grid_span < grid_width: + self._swallow_next_tc(grid_width, top_tc) + self.vMerge = vMerge + + def _swallow_next_tc(self, grid_width: int, top_tc: CT_Tc): + """Extend the horizontal span of this `w:tc` element to incorporate the + following `w:tc` element in the row and then delete that following `w:tc` + element. + + Any content in the following `w:tc` element is appended to the content of + `top_tc`. The width of the following `w:tc` element is added to this one, if + present. Raises |InvalidSpanError| if the width of the resulting cell is greater + than `grid_width` or if there is no next `` element in the row. + """ + + def raise_on_invalid_swallow(next_tc: CT_Tc | None): + if next_tc is None: + raise InvalidSpanError("not enough grid columns") + if self.grid_span + next_tc.grid_span > grid_width: + raise InvalidSpanError("span is not rectangular") + + next_tc = self._next_tc + raise_on_invalid_swallow(next_tc) + assert next_tc is not None + next_tc._move_content_to(top_tc) + self._add_width_of(next_tc) + self.grid_span += next_tc.grid_span + next_tc._remove() + + @property + def _tbl(self) -> CT_Tbl: + """The tbl element this tc element appears in.""" + return cast(CT_Tbl, self.xpath("./ancestor::w:tbl[position()=1]")[0]) + + @property + def _tc_above(self) -> CT_Tc: + """The `w:tc` element immediately above this one in its grid column.""" + return self._tr_above.tc_at_grid_offset(self.grid_offset) + + @property + def _tc_below(self) -> CT_Tc | None: + """The tc element immediately below this one in its grid column.""" + tr_below = self._tr_below + if tr_below is None: + return None + return tr_below.tc_at_grid_offset(self.grid_offset) + + @property + def _tr(self) -> CT_Row: + """The tr element this tc element appears in.""" + return cast(CT_Row, self.xpath("./ancestor::w:tr[position()=1]")[0]) + + @property + def _tr_above(self) -> CT_Row: + """The tr element prior in sequence to the tr this cell appears in. + + Raises |ValueError| if called on a cell in the top-most row. + """ + tr_aboves = self.xpath("./ancestor::w:tr[position()=1]/preceding-sibling::w:tr[1]") + if not tr_aboves: + raise ValueError("no tr above topmost tr in w:tbl") + return tr_aboves[0] + + @property + def _tr_below(self) -> CT_Row | None: + """The tr element next in sequence after the tr this cell appears in, or |None| + if this cell appears in the last row.""" + tr_lst = self._tbl.tr_lst + tr_idx = tr_lst.index(self._tr) + try: + return tr_lst[tr_idx + 1] + except IndexError: + return None + + @property + def _tr_idx(self) -> int: + """The row index of the tr element this tc element appears in.""" + return self._tbl.tr_lst.index(self._tr) + + +class CT_TcPr(BaseOxmlElement): + """```` element, defining table cell properties.""" + + get_or_add_gridSpan: Callable[[], CT_DecimalNumber] + get_or_add_tcW: Callable[[], CT_TblWidth] + get_or_add_vAlign: Callable[[], CT_VerticalJc] + _add_vMerge: Callable[[], CT_VMerge] + _remove_gridSpan: Callable[[], None] + _remove_vAlign: Callable[[], None] + _remove_vMerge: Callable[[], None] + + _tag_seq = ( + "w:cnfStyle", + "w:tcW", + "w:gridSpan", + "w:hMerge", + "w:vMerge", + "w:tcBorders", + "w:shd", + "w:noWrap", + "w:tcMar", + "w:textDirection", + "w:tcFitText", + "w:vAlign", + "w:hideMark", + "w:headers", + "w:cellIns", + "w:cellDel", + "w:cellMerge", + "w:tcPrChange", + ) + tcW: CT_TblWidth | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:tcW", successors=_tag_seq[2:] + ) + gridSpan: CT_DecimalNumber | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:gridSpan", successors=_tag_seq[3:] + ) + vMerge: CT_VMerge | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:vMerge", successors=_tag_seq[5:] + ) + vAlign: CT_VerticalJc | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:vAlign", successors=_tag_seq[12:] + ) + del _tag_seq + + @property + def grid_span(self) -> int: + """The integer number of columns this cell spans. + + Determined by ./w:gridSpan/@val, it defaults to 1. + """ + gridSpan = self.gridSpan + return 1 if gridSpan is None else gridSpan.val + + @grid_span.setter + def grid_span(self, value: int): + self._remove_gridSpan() + if value > 1: + self.get_or_add_gridSpan().val = value + + @property + def vAlign_val(self): + """Value of `w:val` attribute on `w:vAlign` child. + + Value is |None| if `w:vAlign` child is not present. The `w:val` attribute on + `w:vAlign` is required. + """ + vAlign = self.vAlign + if vAlign is None: + return None + return vAlign.val + + @vAlign_val.setter + def vAlign_val(self, value: WD_CELL_VERTICAL_ALIGNMENT | None): + if value is None: + self._remove_vAlign() + return + self.get_or_add_vAlign().val = value + + @property + def vMerge_val(self): + """The value of the ./w:vMerge/@val attribute, or |None| if the w:vMerge element + is not present.""" + vMerge = self.vMerge + if vMerge is None: + return None + return vMerge.val + + @vMerge_val.setter + def vMerge_val(self, value: str | None): + self._remove_vMerge() + if value is not None: + self._add_vMerge().val = value + + @property + def width(self) -> Length | None: + """EMU length in `./w:tcW` or |None| if not present or its type is not 'dxa'.""" + tcW = self.tcW + if tcW is None: + return None + return tcW.width + + @width.setter + def width(self, value: Length): + tcW = self.get_or_add_tcW() + tcW.width = value + + +class CT_TrPr(BaseOxmlElement): + """```` element, defining table row properties.""" + + get_or_add_trHeight: Callable[[], CT_Height] + + _tag_seq = ( + "w:cnfStyle", + "w:divId", + "w:gridBefore", + "w:gridAfter", + "w:wBefore", + "w:wAfter", + "w:cantSplit", + "w:trHeight", + "w:tblHeader", + "w:tblCellSpacing", + "w:jc", + "w:hidden", + "w:ins", + "w:del", + "w:trPrChange", + ) + gridAfter: CT_DecimalNumber | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:gridAfter", successors=_tag_seq[4:] + ) + gridBefore: CT_DecimalNumber | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:gridBefore", successors=_tag_seq[3:] + ) + trHeight: CT_Height | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:trHeight", successors=_tag_seq[8:] + ) + del _tag_seq + + @property + def grid_after(self) -> int: + """The number of unpopulated layout-grid cells at the end of this row.""" + gridAfter = self.gridAfter + return 0 if gridAfter is None else gridAfter.val + + @property + def grid_before(self) -> int: + """The number of unpopulated layout-grid cells at the start of this row.""" + gridBefore = self.gridBefore + return 0 if gridBefore is None else gridBefore.val + + @property + def trHeight_hRule(self) -> WD_ROW_HEIGHT_RULE | None: + """Return the value of `w:trHeight@w:hRule`, or |None| if not present.""" + trHeight = self.trHeight + return None if trHeight is None else trHeight.hRule + + @trHeight_hRule.setter + def trHeight_hRule(self, value: WD_ROW_HEIGHT_RULE | None): + if value is None and self.trHeight is None: + return + trHeight = self.get_or_add_trHeight() + trHeight.hRule = value + + @property + def trHeight_val(self): + """Return the value of `w:trHeight@w:val`, or |None| if not present.""" + trHeight = self.trHeight + return None if trHeight is None else trHeight.val + + @trHeight_val.setter + def trHeight_val(self, value: Length | None): + if value is None and self.trHeight is None: + return + trHeight = self.get_or_add_trHeight() + trHeight.val = value + + +class CT_VerticalJc(BaseOxmlElement): + """`w:vAlign` element, specifying vertical alignment of cell.""" + + val: WD_CELL_VERTICAL_ALIGNMENT = RequiredAttribute( # pyright: ignore[reportAssignmentType] + "w:val", WD_CELL_VERTICAL_ALIGNMENT + ) + + +class CT_VMerge(BaseOxmlElement): + """```` element, specifying vertical merging behavior of a cell.""" + + val: str | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:val", ST_Merge, default=ST_Merge.CONTINUE + ) diff --git a/intelliaide/vendor/docx/oxml/text/__init__.py b/intelliaide/vendor/docx/oxml/text/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/intelliaide/vendor/docx/oxml/text/font.py b/intelliaide/vendor/docx/oxml/text/font.py new file mode 100644 index 0000000..32eb567 --- /dev/null +++ b/intelliaide/vendor/docx/oxml/text/font.py @@ -0,0 +1,331 @@ +# pyright: reportAssignmentType=false + +"""Custom element classes related to run properties (font).""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Callable + +from docx.enum.dml import MSO_THEME_COLOR +from docx.enum.text import WD_COLOR_INDEX, WD_UNDERLINE +from docx.oxml.ns import nsdecls +from docx.oxml.parser import parse_xml +from docx.oxml.simpletypes import ( + ST_HexColor, + ST_HpsMeasure, + ST_String, + ST_VerticalAlignRun, +) +from docx.oxml.xmlchemy import ( + BaseOxmlElement, + OptionalAttribute, + RequiredAttribute, + ZeroOrOne, +) +from docx.shared import RGBColor + +if TYPE_CHECKING: + from docx.oxml.shared import CT_OnOff, CT_String + from docx.shared import Length + + +class CT_Color(BaseOxmlElement): + """`w:color` element, specifying the color of a font and perhaps other objects.""" + + val: RGBColor | str = RequiredAttribute("w:val", ST_HexColor) + themeColor: MSO_THEME_COLOR | None = OptionalAttribute("w:themeColor", MSO_THEME_COLOR) + + +class CT_Fonts(BaseOxmlElement): + """`` element. + + Specifies typeface name for the various language types. + """ + + ascii: str | None = OptionalAttribute("w:ascii", ST_String) + hAnsi: str | None = OptionalAttribute("w:hAnsi", ST_String) + + +class CT_Highlight(BaseOxmlElement): + """`w:highlight` element, specifying font highlighting/background color.""" + + val: WD_COLOR_INDEX = RequiredAttribute("w:val", WD_COLOR_INDEX) + + +class CT_HpsMeasure(BaseOxmlElement): + """Used for `` element and others, specifying font size in half-points.""" + + val: Length = RequiredAttribute("w:val", ST_HpsMeasure) + + +class CT_RPr(BaseOxmlElement): + """`` element, containing the properties for a run.""" + + get_or_add_color: Callable[[], CT_Color] + get_or_add_highlight: Callable[[], CT_Highlight] + get_or_add_rFonts: Callable[[], CT_Fonts] + get_or_add_sz: Callable[[], CT_HpsMeasure] + get_or_add_vertAlign: Callable[[], CT_VerticalAlignRun] + _add_rStyle: Callable[..., CT_String] + _add_u: Callable[[], CT_Underline] + _remove_color: Callable[[], None] + _remove_highlight: Callable[[], None] + _remove_rFonts: Callable[[], None] + _remove_rStyle: Callable[[], None] + _remove_sz: Callable[[], None] + _remove_u: Callable[[], None] + _remove_vertAlign: Callable[[], None] + + _tag_seq = ( + "w:rStyle", + "w:rFonts", + "w:b", + "w:bCs", + "w:i", + "w:iCs", + "w:caps", + "w:smallCaps", + "w:strike", + "w:dstrike", + "w:outline", + "w:shadow", + "w:emboss", + "w:imprint", + "w:noProof", + "w:snapToGrid", + "w:vanish", + "w:webHidden", + "w:color", + "w:spacing", + "w:w", + "w:kern", + "w:position", + "w:sz", + "w:szCs", + "w:highlight", + "w:u", + "w:effect", + "w:bdr", + "w:shd", + "w:fitText", + "w:vertAlign", + "w:rtl", + "w:cs", + "w:em", + "w:lang", + "w:eastAsianLayout", + "w:specVanish", + "w:oMath", + ) + rStyle: CT_String | None = ZeroOrOne("w:rStyle", successors=_tag_seq[1:]) + rFonts: CT_Fonts | None = ZeroOrOne("w:rFonts", successors=_tag_seq[2:]) + b: CT_OnOff | None = ZeroOrOne("w:b", successors=_tag_seq[3:]) + bCs = ZeroOrOne("w:bCs", successors=_tag_seq[4:]) + i = ZeroOrOne("w:i", successors=_tag_seq[5:]) + iCs = ZeroOrOne("w:iCs", successors=_tag_seq[6:]) + caps = ZeroOrOne("w:caps", successors=_tag_seq[7:]) + smallCaps = ZeroOrOne("w:smallCaps", successors=_tag_seq[8:]) + strike = ZeroOrOne("w:strike", successors=_tag_seq[9:]) + dstrike = ZeroOrOne("w:dstrike", successors=_tag_seq[10:]) + outline = ZeroOrOne("w:outline", successors=_tag_seq[11:]) + shadow = ZeroOrOne("w:shadow", successors=_tag_seq[12:]) + emboss = ZeroOrOne("w:emboss", successors=_tag_seq[13:]) + imprint = ZeroOrOne("w:imprint", successors=_tag_seq[14:]) + noProof = ZeroOrOne("w:noProof", successors=_tag_seq[15:]) + snapToGrid = ZeroOrOne("w:snapToGrid", successors=_tag_seq[16:]) + vanish = ZeroOrOne("w:vanish", successors=_tag_seq[17:]) + webHidden = ZeroOrOne("w:webHidden", successors=_tag_seq[18:]) + color: CT_Color | None = ZeroOrOne("w:color", successors=_tag_seq[19:]) + sz: CT_HpsMeasure | None = ZeroOrOne("w:sz", successors=_tag_seq[24:]) + highlight: CT_Highlight | None = ZeroOrOne("w:highlight", successors=_tag_seq[26:]) + u: CT_Underline | None = ZeroOrOne("w:u", successors=_tag_seq[27:]) + vertAlign: CT_VerticalAlignRun | None = ZeroOrOne("w:vertAlign", successors=_tag_seq[32:]) + rtl = ZeroOrOne("w:rtl", successors=_tag_seq[33:]) + cs = ZeroOrOne("w:cs", successors=_tag_seq[34:]) + specVanish = ZeroOrOne("w:specVanish", successors=_tag_seq[38:]) + oMath = ZeroOrOne("w:oMath", successors=_tag_seq[39:]) + del _tag_seq + + def _new_color(self): + """Override metaclass method to set `w:color/@val` to RGB black on create.""" + return parse_xml('' % nsdecls("w")) + + @property + def highlight_val(self) -> WD_COLOR_INDEX | None: + """Value of `./w:highlight/@val`. + + Specifies font's highlight color, or `None` if the text is not highlighted. + """ + highlight = self.highlight + if highlight is None: + return None + return highlight.val + + @highlight_val.setter + def highlight_val(self, value: WD_COLOR_INDEX | None) -> None: + if value is None: + self._remove_highlight() + return + highlight = self.get_or_add_highlight() + highlight.val = value + + @property + def rFonts_ascii(self) -> str | None: + """The value of `w:rFonts/@w:ascii` or |None| if not present. + + Represents the assigned typeface name. The rFonts element also specifies other + special-case typeface names; this method handles the case where just the common + name is required. + """ + rFonts = self.rFonts + if rFonts is None: + return None + return rFonts.ascii + + @rFonts_ascii.setter + def rFonts_ascii(self, value: str | None) -> None: + if value is None: + self._remove_rFonts() + return + rFonts = self.get_or_add_rFonts() + rFonts.ascii = value + + @property + def rFonts_hAnsi(self) -> str | None: + """The value of `w:rFonts/@w:hAnsi` or |None| if not present.""" + rFonts = self.rFonts + if rFonts is None: + return None + return rFonts.hAnsi + + @rFonts_hAnsi.setter + def rFonts_hAnsi(self, value: str | None): + if value is None and self.rFonts is None: + return + rFonts = self.get_or_add_rFonts() + rFonts.hAnsi = value + + @property + def style(self) -> str | None: + """String in `./w:rStyle/@val`, or None if `w:rStyle` is not present.""" + rStyle = self.rStyle + if rStyle is None: + return None + return rStyle.val + + @style.setter + def style(self, style: str | None) -> None: + """Set `./w:rStyle/@val` to `style`, adding the `w:rStyle` element if necessary. + + If `style` is |None|, remove `w:rStyle` element if present. + """ + if style is None: + self._remove_rStyle() + elif self.rStyle is None: + self._add_rStyle(val=style) + else: + self.rStyle.val = style + + @property + def subscript(self) -> bool | None: + """|True| if `./w:vertAlign/@w:val` is "subscript". + + |False| if `w:vertAlign/@w:val` contains any other value. |None| if + `w:vertAlign` is not present. + """ + vertAlign = self.vertAlign + if vertAlign is None: + return None + return vertAlign.val == ST_VerticalAlignRun.SUBSCRIPT + + @subscript.setter + def subscript(self, value: bool | None) -> None: + if value is None: + self._remove_vertAlign() + elif bool(value) is True: + self.get_or_add_vertAlign().val = ST_VerticalAlignRun.SUBSCRIPT + # -- assert bool(value) is False -- + elif self.vertAlign is not None and self.vertAlign.val == ST_VerticalAlignRun.SUBSCRIPT: + self._remove_vertAlign() + + @property + def superscript(self) -> bool | None: + """|True| if `w:vertAlign/@w:val` is 'superscript'. + + |False| if `w:vertAlign/@w:val` contains any other value. |None| if + `w:vertAlign` is not present. + """ + vertAlign = self.vertAlign + if vertAlign is None: + return None + return vertAlign.val == ST_VerticalAlignRun.SUPERSCRIPT + + @superscript.setter + def superscript(self, value: bool | None): + if value is None: + self._remove_vertAlign() + elif bool(value) is True: + self.get_or_add_vertAlign().val = ST_VerticalAlignRun.SUPERSCRIPT + # -- assert bool(value) is False -- + elif self.vertAlign is not None and self.vertAlign.val == ST_VerticalAlignRun.SUPERSCRIPT: + self._remove_vertAlign() + + @property + def sz_val(self) -> Length | None: + """The value of `w:sz/@w:val` or |None| if not present.""" + sz = self.sz + if sz is None: + return None + return sz.val + + @sz_val.setter + def sz_val(self, value: Length | None): + if value is None: + self._remove_sz() + return + sz = self.get_or_add_sz() + sz.val = value + + @property + def u_val(self) -> WD_UNDERLINE | None: + """Value of `w:u/@val`, or None if not present. + + Values `WD_UNDERLINE.SINGLE` and `WD_UNDERLINE.NONE` are mapped to `True` and + `False` respectively. + """ + u = self.u + if u is None: + return None + return u.val + + @u_val.setter + def u_val(self, value: WD_UNDERLINE | None): + self._remove_u() + if value is not None: + self._add_u().val = value + + def _get_bool_val(self, name: str) -> bool | None: + """Value of boolean child with `name`, e.g. "w:b", "w:i", and "w:smallCaps".""" + element = getattr(self, name) + if element is None: + return None + return element.val + + def _set_bool_val(self, name: str, value: bool | None): + if value is None: + getattr(self, "_remove_%s" % name)() + return + element = getattr(self, "get_or_add_%s" % name)() + element.val = value + + +class CT_Underline(BaseOxmlElement): + """`` element, specifying the underlining style for a run.""" + + val: WD_UNDERLINE | None = OptionalAttribute("w:val", WD_UNDERLINE) + + +class CT_VerticalAlignRun(BaseOxmlElement): + """`` element, specifying subscript or superscript.""" + + val: str = RequiredAttribute("w:val", ST_VerticalAlignRun) diff --git a/intelliaide/vendor/docx/oxml/text/hyperlink.py b/intelliaide/vendor/docx/oxml/text/hyperlink.py new file mode 100644 index 0000000..38a33ff --- /dev/null +++ b/intelliaide/vendor/docx/oxml/text/hyperlink.py @@ -0,0 +1,45 @@ +"""Custom element classes related to hyperlinks (CT_Hyperlink).""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, List + +from docx.oxml.simpletypes import ST_OnOff, ST_String, XsdString +from docx.oxml.text.run import CT_R +from docx.oxml.xmlchemy import ( + BaseOxmlElement, + OptionalAttribute, + ZeroOrMore, +) + +if TYPE_CHECKING: + from docx.oxml.text.pagebreak import CT_LastRenderedPageBreak + + +class CT_Hyperlink(BaseOxmlElement): + """`` element, containing the text and address for a hyperlink.""" + + r_lst: List[CT_R] + + rId: str | None = OptionalAttribute("r:id", XsdString) # pyright: ignore[reportAssignmentType] + anchor: str | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:anchor", ST_String + ) + history: bool = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:history", ST_OnOff, default=True + ) + + r = ZeroOrMore("w:r") + + @property + def lastRenderedPageBreaks(self) -> List[CT_LastRenderedPageBreak]: + """All `w:lastRenderedPageBreak` descendants of this hyperlink.""" + return self.xpath("./w:r/w:lastRenderedPageBreak") + + @property + def text(self) -> str: # pyright: ignore[reportIncompatibleMethodOverride] + """The textual content of this hyperlink. + + `CT_Hyperlink` stores the hyperlink-text as one or more `w:r` children. + """ + return "".join(r.text for r in self.xpath("w:r")) diff --git a/intelliaide/vendor/docx/oxml/text/pagebreak.py b/intelliaide/vendor/docx/oxml/text/pagebreak.py new file mode 100644 index 0000000..45a6f51 --- /dev/null +++ b/intelliaide/vendor/docx/oxml/text/pagebreak.py @@ -0,0 +1,278 @@ +"""Custom element class for rendered page-break (CT_LastRenderedPageBreak).""" + +from __future__ import annotations + +import copy +from typing import TYPE_CHECKING + +from docx.oxml.xmlchemy import BaseOxmlElement +from docx.shared import lazyproperty + +if TYPE_CHECKING: + from docx.oxml.text.hyperlink import CT_Hyperlink + from docx.oxml.text.paragraph import CT_P + + +class CT_LastRenderedPageBreak(BaseOxmlElement): + """`` element, indicating page break inserted by renderer. + + A rendered page-break is one inserted by the renderer when it runs out of room on a + page. It is an empty element (no attrs or children) and is a child of CT_R, peer to + CT_Text. + + NOTE: this complex-type name does not exist in the schema, where + `w:lastRenderedPageBreak` maps to `CT_Empty`. This name was added to give it + distinguished behavior. CT_Empty is used for many elements. + """ + + @property + def following_fragment_p(self) -> CT_P: + """A "loose" `CT_P` containing only the paragraph content before this break. + + Raises `ValueError` if this `w:lastRenderedPageBreak` is not the first rendered + page-break in its paragraph. + + The returned `CT_P` is a "clone" (deepcopy) of the `w:p` ancestor of this + page-break with this `w:lastRenderedPageBreak` element and all content preceding + it removed. + + NOTE: this `w:p` can itself contain one or more `w:renderedPageBreak` elements + (when the paragraph contained more than one). While this is rare, the caller + should treat this paragraph the same as other paragraphs and split it if + necessary in a folloing step or recursion. + """ + if not self == self._first_lrpb_in_p(self._enclosing_p): + raise ValueError("only defined on first rendered page-break in paragraph") + + # -- splitting approach is different when break is inside a hyperlink -- + return ( + self._following_frag_in_hlink if self._is_in_hyperlink else self._following_frag_in_run + ) + + @property + def follows_all_content(self) -> bool: + """True when this page-break element is the last "content" in the paragraph. + + This is very uncommon case and may only occur in contrived or cases where the + XML is edited by hand, but it is not precluded by the spec. + """ + # -- a page-break inside a hyperlink never meets these criteria (for our + # -- purposes at least) because it is considered "atomic" and always associated + # -- with the page it starts on. + if self._is_in_hyperlink: + return False + + return bool( + # -- XPath will match zero-or-one w:lastRenderedPageBreak element -- + self._enclosing_p.xpath( + # -- in first run of paragraph -- + f"(./w:r)[last()]" + # -- all page-breaks -- + f"/w:lastRenderedPageBreak" + # -- that are not preceded by any content-bearing elements -- + f"[not(following-sibling::*[{self._run_inner_content_xpath}])]" + ) + ) + + @property + def precedes_all_content(self) -> bool: + """True when a `w:lastRenderedPageBreak` precedes all paragraph content. + + This is a common case; it occurs whenever the page breaks on an even paragraph + boundary. + """ + # -- a page-break inside a hyperlink never meets these criteria because there + # -- is always part of the hyperlink text before the page-break. + if self._is_in_hyperlink: + return False + + return bool( + # -- XPath will match zero-or-one w:lastRenderedPageBreak element -- + self._enclosing_p.xpath( + # -- in first run of paragraph -- + f"./w:r[1]" + # -- all page-breaks -- + f"/w:lastRenderedPageBreak" + # -- that are not preceded by any content-bearing elements -- + f"[not(preceding-sibling::*[{self._run_inner_content_xpath}])]" + ) + ) + + @property + def preceding_fragment_p(self) -> CT_P: + """A "loose" `CT_P` containing only the paragraph content before this break. + + Raises `ValueError` if this `w:lastRenderedPageBreak` is not the first rendered + paragraph in its paragraph. + + The returned `CT_P` is a "clone" (deepcopy) of the `w:p` ancestor of this + page-break with this `w:lastRenderedPageBreak` element and all its following + siblings removed. + """ + if not self == self._first_lrpb_in_p(self._enclosing_p): + raise ValueError("only defined on first rendered page-break in paragraph") + + # -- splitting approach is different when break is inside a hyperlink -- + return ( + self._preceding_frag_in_hlink if self._is_in_hyperlink else self._preceding_frag_in_run + ) + + def _enclosing_hyperlink(self, lrpb: CT_LastRenderedPageBreak) -> CT_Hyperlink: + """The `w:hyperlink` grandparent of this `w:lastRenderedPageBreak`. + + Raises `IndexError` when this page-break has a `w:p` grandparent, so only call + when `._is_in_hyperlink` is True. + """ + return lrpb.xpath("./parent::w:r/parent::w:hyperlink")[0] + + @property + def _enclosing_p(self) -> CT_P: + """The `w:p` element parent or grandparent of this `w:lastRenderedPageBreak`.""" + return self.xpath("./ancestor::w:p[1]")[0] + + def _first_lrpb_in_p(self, p: CT_P) -> CT_LastRenderedPageBreak: + """The first `w:lastRenderedPageBreak` element in `p`. + + Raises `ValueError` if there are no rendered page-breaks in `p`. + """ + lrpbs = p.xpath("./w:r/w:lastRenderedPageBreak | ./w:hyperlink/w:r/w:lastRenderedPageBreak") + if not lrpbs: + raise ValueError("no rendered page-breaks in paragraph element") + return lrpbs[0] + + @lazyproperty + def _following_frag_in_hlink(self) -> CT_P: + """Following CT_P fragment when break occurs within a hyperlink. + + Note this is a *partial-function* and raises when `lrpb` is not inside a + hyperlink. + """ + if not self._is_in_hyperlink: + raise ValueError("only defined on a rendered page-break in a hyperlink") + + # -- work on a clone `w:p` so our mutations don't persist -- + p = copy.deepcopy(self._enclosing_p) + + # -- get this `w:lastRenderedPageBreak` in the cloned `w:p` (not self) -- + lrpb = self._first_lrpb_in_p(p) + + # -- locate `w:hyperlink` in which this `w:lastRenderedPageBreak` is found -- + hyperlink = lrpb._enclosing_hyperlink(lrpb) + + # -- delete all w:p inner-content preceding the hyperlink -- + for e in hyperlink.xpath("./preceding-sibling::*[not(self::w:pPr)]"): + p.remove(e) + + # -- remove the whole hyperlink, it belongs to the preceding-fragment-p -- + hyperlink.getparent().remove(hyperlink) + + # -- that's it, return the remaining fragment of `w:p` clone -- + return p + + @lazyproperty + def _following_frag_in_run(self) -> CT_P: + """following CT_P fragment when break does not occur in a hyperlink. + + Note this is a *partial-function* and raises when `lrpb` is inside a hyperlink. + """ + if self._is_in_hyperlink: + raise ValueError("only defined on a rendered page-break not in a hyperlink") + + # -- work on a clone `w:p` so our mutations don't persist -- + p = copy.deepcopy(self._enclosing_p) + + # -- get this `w:lastRenderedPageBreak` in the cloned `w:p` (not self) -- + lrpb = self._first_lrpb_in_p(p) + + # -- locate `w:r` in which this `w:lastRenderedPageBreak` is found -- + enclosing_r = lrpb.xpath("./parent::w:r")[0] + + # -- delete all w:p inner-content preceding that run (but not w:pPr) -- + for e in enclosing_r.xpath("./preceding-sibling::*[not(self::w:pPr)]"): + p.remove(e) + + # -- then remove all run inner-content preceding this lrpb in its run (but not + # -- the `w:rPr`) and also remove the page-break itself + for e in lrpb.xpath("./preceding-sibling::*[not(self::w:rPr)]"): + enclosing_r.remove(e) + enclosing_r.remove(lrpb) + + return p + + @lazyproperty + def _is_in_hyperlink(self) -> bool: + """True when this page-break is embedded in a hyperlink run.""" + return bool(self.xpath("./parent::w:r/parent::w:hyperlink")) + + @lazyproperty + def _preceding_frag_in_hlink(self) -> CT_P: + """Preceding CT_P fragment when break occurs within a hyperlink. + + Note this is a *partial-function* and raises when `lrpb` is not inside a + hyperlink. + """ + if not self._is_in_hyperlink: + raise ValueError("only defined on a rendered page-break in a hyperlink") + + # -- work on a clone `w:p` so our mutations don't persist -- + p = copy.deepcopy(self._enclosing_p) + + # -- get this `w:lastRenderedPageBreak` in the cloned `w:p` (not self) -- + lrpb = self._first_lrpb_in_p(p) + + # -- locate `w:hyperlink` in which this `w:lastRenderedPageBreak` is found -- + hyperlink = lrpb._enclosing_hyperlink(lrpb) + + # -- delete all w:p inner-content following the hyperlink -- + for e in hyperlink.xpath("./following-sibling::*"): + p.remove(e) + + # -- remove this page-break from inside the hyperlink -- + lrpb.getparent().remove(lrpb) + + # -- that's it, the entire hyperlink goes into the preceding fragment so + # -- the hyperlink is not "split". + return p + + @lazyproperty + def _preceding_frag_in_run(self) -> CT_P: + """Preceding CT_P fragment when break does not occur in a hyperlink. + + Note this is a *partial-function* and raises when `lrpb` is inside a hyperlink. + """ + if self._is_in_hyperlink: + raise ValueError("only defined on a rendered page-break not in a hyperlink") + + # -- work on a clone `w:p` so our mutations don't persist -- + p = copy.deepcopy(self._enclosing_p) + + # -- get this `w:lastRenderedPageBreak` in the cloned `w:p` (not self) -- + lrpb = self._first_lrpb_in_p(p) + + # -- locate `w:r` in which this `w:lastRenderedPageBreak` is found -- + enclosing_r = lrpb.xpath("./parent::w:r")[0] + + # -- delete all `w:p` inner-content following that run -- + for e in enclosing_r.xpath("./following-sibling::*"): + p.remove(e) + + # -- then delete all `w:r` inner-content following this lrpb in its run and + # -- also remove the page-break itself + for e in lrpb.xpath("./following-sibling::*"): + enclosing_r.remove(e) + enclosing_r.remove(lrpb) + + return p + + @lazyproperty + def _run_inner_content_xpath(self) -> str: + """XPath fragment matching any run inner-content elements.""" + return ( + "self::w:br" + " | self::w:cr" + " | self::w:drawing" + " | self::w:noBreakHyphen" + " | self::w:ptab" + " | self::w:t" + " | self::w:tab" + ) diff --git a/intelliaide/vendor/docx/oxml/text/paragraph.py b/intelliaide/vendor/docx/oxml/text/paragraph.py new file mode 100644 index 0000000..63e96f3 --- /dev/null +++ b/intelliaide/vendor/docx/oxml/text/paragraph.py @@ -0,0 +1,106 @@ +# pyright: reportPrivateUsage=false + +"""Custom element classes related to paragraphs (CT_P).""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Callable, List, cast + +from docx.oxml.parser import OxmlElement +from docx.oxml.xmlchemy import BaseOxmlElement, ZeroOrMore, ZeroOrOne + +if TYPE_CHECKING: + from docx.enum.text import WD_PARAGRAPH_ALIGNMENT + from docx.oxml.section import CT_SectPr + from docx.oxml.text.hyperlink import CT_Hyperlink + from docx.oxml.text.pagebreak import CT_LastRenderedPageBreak + from docx.oxml.text.parfmt import CT_PPr + from docx.oxml.text.run import CT_R + + +class CT_P(BaseOxmlElement): + """`` element, containing the properties and text for a paragraph.""" + + add_r: Callable[[], CT_R] + get_or_add_pPr: Callable[[], CT_PPr] + hyperlink_lst: List[CT_Hyperlink] + r_lst: List[CT_R] + + pPr: CT_PPr | None = ZeroOrOne("w:pPr") # pyright: ignore[reportAssignmentType] + hyperlink = ZeroOrMore("w:hyperlink") + r = ZeroOrMore("w:r") + + def add_p_before(self) -> CT_P: + """Return a new `` element inserted directly prior to this one.""" + new_p = cast(CT_P, OxmlElement("w:p")) + self.addprevious(new_p) + return new_p + + @property + def alignment(self) -> WD_PARAGRAPH_ALIGNMENT | None: + """The value of the `` grandchild element or |None| if not present.""" + pPr = self.pPr + if pPr is None: + return None + return pPr.jc_val + + @alignment.setter + def alignment(self, value: WD_PARAGRAPH_ALIGNMENT): + pPr = self.get_or_add_pPr() + pPr.jc_val = value + + def clear_content(self): + """Remove all child elements, except the `` element if present.""" + for child in self.xpath("./*[not(self::w:pPr)]"): + self.remove(child) + + @property + def inner_content_elements(self) -> List[CT_R | CT_Hyperlink]: + """Run and hyperlink children of the `w:p` element, in document order.""" + return self.xpath("./w:r | ./w:hyperlink") + + @property + def lastRenderedPageBreaks(self) -> List[CT_LastRenderedPageBreak]: + """All `w:lastRenderedPageBreak` descendants of this paragraph. + + Rendered page-breaks commonly occur in a run but can also occur in a run inside + a hyperlink. This returns both. + """ + return self.xpath( + "./w:r/w:lastRenderedPageBreak | ./w:hyperlink/w:r/w:lastRenderedPageBreak" + ) + + def set_sectPr(self, sectPr: CT_SectPr): + """Unconditionally replace or add `sectPr` as grandchild in correct sequence.""" + pPr = self.get_or_add_pPr() + pPr._remove_sectPr() + pPr._insert_sectPr(sectPr) + + @property + def style(self) -> str | None: + """String contained in `w:val` attribute of `./w:pPr/w:pStyle` grandchild. + + |None| if not present. + """ + pPr = self.pPr + if pPr is None: + return None + return pPr.style + + @style.setter + def style(self, style: str | None): + pPr = self.get_or_add_pPr() + pPr.style = style + + @property + def text(self): # pyright: ignore[reportIncompatibleMethodOverride] + """The textual content of this paragraph. + + Inner-content child elements like `w:r` and `w:hyperlink` are translated to + their text equivalent. + """ + return "".join(e.text for e in self.xpath("w:r | w:hyperlink")) + + def _insert_pPr(self, pPr: CT_PPr) -> CT_PPr: + self.insert(0, pPr) + return pPr diff --git a/intelliaide/vendor/docx/oxml/text/parfmt.py b/intelliaide/vendor/docx/oxml/text/parfmt.py new file mode 100644 index 0000000..2133686 --- /dev/null +++ b/intelliaide/vendor/docx/oxml/text/parfmt.py @@ -0,0 +1,392 @@ +"""Custom element classes related to paragraph properties (CT_PPr).""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Callable + +from docx.enum.text import ( + WD_ALIGN_PARAGRAPH, + WD_LINE_SPACING, + WD_TAB_ALIGNMENT, + WD_TAB_LEADER, +) +from docx.oxml.shared import CT_DecimalNumber +from docx.oxml.simpletypes import ST_SignedTwipsMeasure, ST_TwipsMeasure +from docx.oxml.xmlchemy import ( + BaseOxmlElement, + OneOrMore, + OptionalAttribute, + RequiredAttribute, + ZeroOrOne, +) +from docx.shared import Length + +if TYPE_CHECKING: + from docx.oxml.section import CT_SectPr + from docx.oxml.shared import CT_String + + +class CT_Ind(BaseOxmlElement): + """```` element, specifying paragraph indentation.""" + + left: Length | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:left", ST_SignedTwipsMeasure + ) + right: Length | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:right", ST_SignedTwipsMeasure + ) + firstLine: Length | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:firstLine", ST_TwipsMeasure + ) + hanging: Length | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:hanging", ST_TwipsMeasure + ) + + +class CT_Jc(BaseOxmlElement): + """```` element, specifying paragraph justification.""" + + val: WD_ALIGN_PARAGRAPH = RequiredAttribute( # pyright: ignore[reportAssignmentType] + "w:val", WD_ALIGN_PARAGRAPH + ) + + +class CT_PPr(BaseOxmlElement): + """```` element, containing the properties for a paragraph.""" + + get_or_add_ind: Callable[[], CT_Ind] + get_or_add_pStyle: Callable[[], CT_String] + get_or_add_sectPr: Callable[[], CT_SectPr] + _insert_sectPr: Callable[[CT_SectPr], None] + _remove_pStyle: Callable[[], None] + _remove_sectPr: Callable[[], None] + + _tag_seq = ( + "w:pStyle", + "w:keepNext", + "w:keepLines", + "w:pageBreakBefore", + "w:framePr", + "w:widowControl", + "w:numPr", + "w:suppressLineNumbers", + "w:pBdr", + "w:shd", + "w:tabs", + "w:suppressAutoHyphens", + "w:kinsoku", + "w:wordWrap", + "w:overflowPunct", + "w:topLinePunct", + "w:autoSpaceDE", + "w:autoSpaceDN", + "w:bidi", + "w:adjustRightInd", + "w:snapToGrid", + "w:spacing", + "w:ind", + "w:contextualSpacing", + "w:mirrorIndents", + "w:suppressOverlap", + "w:jc", + "w:textDirection", + "w:textAlignment", + "w:textboxTightWrap", + "w:outlineLvl", + "w:divId", + "w:cnfStyle", + "w:rPr", + "w:sectPr", + "w:pPrChange", + ) + pStyle: CT_String | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:pStyle", successors=_tag_seq[1:] + ) + keepNext = ZeroOrOne("w:keepNext", successors=_tag_seq[2:]) + keepLines = ZeroOrOne("w:keepLines", successors=_tag_seq[3:]) + pageBreakBefore = ZeroOrOne("w:pageBreakBefore", successors=_tag_seq[4:]) + widowControl = ZeroOrOne("w:widowControl", successors=_tag_seq[6:]) + numPr = ZeroOrOne("w:numPr", successors=_tag_seq[7:]) + tabs = ZeroOrOne("w:tabs", successors=_tag_seq[11:]) + spacing = ZeroOrOne("w:spacing", successors=_tag_seq[22:]) + ind: CT_Ind | None = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:ind", successors=_tag_seq[23:] + ) + jc = ZeroOrOne("w:jc", successors=_tag_seq[27:]) + outlineLvl: CT_DecimalNumber = ZeroOrOne( # pyright: ignore[reportAssignmentType] + "w:outlineLvl", successors=_tag_seq[31:] + ) + sectPr = ZeroOrOne("w:sectPr", successors=_tag_seq[35:]) + del _tag_seq + + @property + def first_line_indent(self) -> Length | None: + """A |Length| value calculated from the values of `w:ind/@w:firstLine` and + `w:ind/@w:hanging`. + + Returns |None| if the `w:ind` child is not present. + """ + ind = self.ind + if ind is None: + return None + hanging = ind.hanging + if hanging is not None: + return Length(-hanging) + firstLine = ind.firstLine + if firstLine is None: + return None + return firstLine + + @first_line_indent.setter + def first_line_indent(self, value: Length | None): + if self.ind is None and value is None: + return + ind = self.get_or_add_ind() + ind.firstLine = ind.hanging = None + if value is None: + return + elif value < 0: + ind.hanging = -value + else: + ind.firstLine = value + + @property + def ind_left(self) -> Length | None: + """The value of `w:ind/@w:left` or |None| if not present.""" + ind = self.ind + if ind is None: + return None + return ind.left + + @ind_left.setter + def ind_left(self, value: Length | None): + if value is None and self.ind is None: + return + ind = self.get_or_add_ind() + ind.left = value + + @property + def ind_right(self) -> Length | None: + """The value of `w:ind/@w:right` or |None| if not present.""" + ind = self.ind + if ind is None: + return None + return ind.right + + @ind_right.setter + def ind_right(self, value: Length | None): + if value is None and self.ind is None: + return + ind = self.get_or_add_ind() + ind.right = value + + @property + def jc_val(self) -> WD_ALIGN_PARAGRAPH | None: + """Value of the `` child element or |None| if not present.""" + return self.jc.val if self.jc is not None else None + + @jc_val.setter + def jc_val(self, value): + if value is None: + self._remove_jc() + return + self.get_or_add_jc().val = value + + @property + def keepLines_val(self): + """The value of `keepLines/@val` or |None| if not present.""" + keepLines = self.keepLines + if keepLines is None: + return None + return keepLines.val + + @keepLines_val.setter + def keepLines_val(self, value): + if value is None: + self._remove_keepLines() + else: + self.get_or_add_keepLines().val = value + + @property + def keepNext_val(self): + """The value of `keepNext/@val` or |None| if not present.""" + keepNext = self.keepNext + if keepNext is None: + return None + return keepNext.val + + @keepNext_val.setter + def keepNext_val(self, value): + if value is None: + self._remove_keepNext() + else: + self.get_or_add_keepNext().val = value + + @property + def pageBreakBefore_val(self): + """The value of `pageBreakBefore/@val` or |None| if not present.""" + pageBreakBefore = self.pageBreakBefore + if pageBreakBefore is None: + return None + return pageBreakBefore.val + + @pageBreakBefore_val.setter + def pageBreakBefore_val(self, value): + if value is None: + self._remove_pageBreakBefore() + else: + self.get_or_add_pageBreakBefore().val = value + + @property + def spacing_after(self): + """The value of `w:spacing/@w:after` or |None| if not present.""" + spacing = self.spacing + if spacing is None: + return None + return spacing.after + + @spacing_after.setter + def spacing_after(self, value): + if value is None and self.spacing is None: + return + self.get_or_add_spacing().after = value + + @property + def spacing_before(self): + """The value of `w:spacing/@w:before` or |None| if not present.""" + spacing = self.spacing + if spacing is None: + return None + return spacing.before + + @spacing_before.setter + def spacing_before(self, value): + if value is None and self.spacing is None: + return + self.get_or_add_spacing().before = value + + @property + def spacing_line(self): + """The value of `w:spacing/@w:line` or |None| if not present.""" + spacing = self.spacing + if spacing is None: + return None + return spacing.line + + @spacing_line.setter + def spacing_line(self, value): + if value is None and self.spacing is None: + return + self.get_or_add_spacing().line = value + + @property + def spacing_lineRule(self): + """The value of `w:spacing/@w:lineRule` as a member of the :ref:`WdLineSpacing` + enumeration. + + Only the `MULTIPLE`, `EXACTLY`, and `AT_LEAST` members are used. It is the + responsibility of the client to calculate the use of `SINGLE`, `DOUBLE`, and + `MULTIPLE` based on the value of `w:spacing/@w:line` if that behavior is + desired. + """ + spacing = self.spacing + if spacing is None: + return None + lineRule = spacing.lineRule + if lineRule is None and spacing.line is not None: + return WD_LINE_SPACING.MULTIPLE + return lineRule + + @spacing_lineRule.setter + def spacing_lineRule(self, value): + if value is None and self.spacing is None: + return + self.get_or_add_spacing().lineRule = value + + @property + def style(self) -> str | None: + """String contained in `./w:pStyle/@val`, or None if child is not present.""" + pStyle = self.pStyle + if pStyle is None: + return None + return pStyle.val + + @style.setter + def style(self, style: str | None): + """Set `./w:pStyle/@val` `style`, adding a new element if necessary. + + If `style` is |None|, remove `./w:pStyle` when present. + """ + if style is None: + self._remove_pStyle() + return + pStyle = self.get_or_add_pStyle() + pStyle.val = style + + @property + def widowControl_val(self): + """The value of `widowControl/@val` or |None| if not present.""" + widowControl = self.widowControl + if widowControl is None: + return None + return widowControl.val + + @widowControl_val.setter + def widowControl_val(self, value): + if value is None: + self._remove_widowControl() + else: + self.get_or_add_widowControl().val = value + + +class CT_Spacing(BaseOxmlElement): + """```` element, specifying paragraph spacing attributes such as space + before and line spacing.""" + + after = OptionalAttribute("w:after", ST_TwipsMeasure) + before = OptionalAttribute("w:before", ST_TwipsMeasure) + line = OptionalAttribute("w:line", ST_SignedTwipsMeasure) + lineRule = OptionalAttribute("w:lineRule", WD_LINE_SPACING) + + +class CT_TabStop(BaseOxmlElement): + """`` element, representing an individual tab stop. + + Overloaded to use for a tab-character in a run, which also uses the w:tab tag but + only needs a __str__ method. + """ + + val: WD_TAB_ALIGNMENT = RequiredAttribute( # pyright: ignore[reportAssignmentType] + "w:val", WD_TAB_ALIGNMENT + ) + leader: WD_TAB_LEADER | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:leader", WD_TAB_LEADER, default=WD_TAB_LEADER.SPACES + ) + pos: Length = RequiredAttribute( # pyright: ignore[reportAssignmentType] + "w:pos", ST_SignedTwipsMeasure + ) + + def __str__(self) -> str: + """Text equivalent of a `w:tab` element appearing in a run. + + Allows text of run inner-content to be accessed consistently across all text + inner-content. + """ + return "\t" + + +class CT_TabStops(BaseOxmlElement): + """```` element, container for a sorted sequence of tab stops.""" + + tab = OneOrMore("w:tab", successors=()) + + def insert_tab_in_order(self, pos, align, leader): + """Insert a newly created `w:tab` child element in `pos` order.""" + new_tab = self._new_tab() + new_tab.pos, new_tab.val, new_tab.leader = pos, align, leader + for tab in self.tab_lst: + if new_tab.pos < tab.pos: + tab.addprevious(new_tab) + return new_tab + self.append(new_tab) + return new_tab diff --git a/intelliaide/vendor/docx/oxml/text/run.py b/intelliaide/vendor/docx/oxml/text/run.py new file mode 100644 index 0000000..7496aa6 --- /dev/null +++ b/intelliaide/vendor/docx/oxml/text/run.py @@ -0,0 +1,307 @@ +"""Custom element classes related to text runs (CT_R).""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Callable, Iterator, List, cast + +from docx.oxml.drawing import CT_Drawing +from docx.oxml.ns import qn +from docx.oxml.parser import OxmlElement +from docx.oxml.simpletypes import ST_BrClear, ST_BrType +from docx.oxml.text.font import CT_RPr +from docx.oxml.xmlchemy import BaseOxmlElement, OptionalAttribute, ZeroOrMore, ZeroOrOne +from docx.shared import TextAccumulator + +if TYPE_CHECKING: + from docx.oxml.shape import CT_Anchor, CT_Inline + from docx.oxml.text.pagebreak import CT_LastRenderedPageBreak + from docx.oxml.text.parfmt import CT_TabStop + +# ------------------------------------------------------------------------------------ +# Run-level elements + + +class CT_R(BaseOxmlElement): + """`` element, containing the properties and text for a run.""" + + add_br: Callable[[], CT_Br] + add_tab: Callable[[], CT_TabStop] + get_or_add_rPr: Callable[[], CT_RPr] + _add_drawing: Callable[[], CT_Drawing] + _add_t: Callable[..., CT_Text] + + rPr: CT_RPr | None = ZeroOrOne("w:rPr") # pyright: ignore[reportAssignmentType] + br = ZeroOrMore("w:br") + cr = ZeroOrMore("w:cr") + drawing = ZeroOrMore("w:drawing") + t = ZeroOrMore("w:t") + tab = ZeroOrMore("w:tab") + + def add_t(self, text: str) -> CT_Text: + """Return a newly added `` element containing `text`.""" + t = self._add_t(text=text) + if len(text.strip()) < len(text): + t.set(qn("xml:space"), "preserve") + return t + + def add_drawing(self, inline_or_anchor: CT_Inline | CT_Anchor) -> CT_Drawing: + """Return newly appended `CT_Drawing` (`w:drawing`) child element. + + The `w:drawing` element has `inline_or_anchor` as its child. + """ + drawing = self._add_drawing() + drawing.append(inline_or_anchor) + return drawing + + def clear_content(self) -> None: + """Remove all child elements except a `w:rPr` element if present.""" + # -- remove all run inner-content except a `w:rPr` when present. -- + for e in self.xpath("./*[not(self::w:rPr)]"): + self.remove(e) + + @property + def inner_content_items(self) -> List[str | CT_Drawing | CT_LastRenderedPageBreak]: + """Text of run, possibly punctuated by `w:lastRenderedPageBreak` elements.""" + from docx.oxml.text.pagebreak import CT_LastRenderedPageBreak + + accum = TextAccumulator() + + def iter_items() -> Iterator[str | CT_Drawing | CT_LastRenderedPageBreak]: + for e in self.xpath( + "w:br" + " | w:cr" + " | w:drawing" + " | w:lastRenderedPageBreak" + " | w:noBreakHyphen" + " | w:ptab" + " | w:t" + " | w:tab" + ): + if isinstance(e, (CT_Drawing, CT_LastRenderedPageBreak)): + yield from accum.pop() + yield e + else: + accum.push(str(e)) + + # -- don't forget the "tail" string -- + yield from accum.pop() + + return list(iter_items()) + + def insert_comment_range_end_and_reference_below(self, comment_id: int) -> None: + """Insert a `w:commentRangeEnd` and `w:commentReference` element after this run. + + The `w:commentRangeEnd` element is the immediate sibling of this `w:r` and is followed by + a `w:r` containing the `w:commentReference` element. + """ + self.addnext(self._new_comment_reference_run(comment_id)) + self.addnext(OxmlElement("w:commentRangeEnd", attrs={qn("w:id"): str(comment_id)})) + + def insert_comment_range_start_above(self, comment_id: int) -> None: + """Insert a `w:commentRangeStart` element with `comment_id` before this run.""" + self.addprevious(OxmlElement("w:commentRangeStart", attrs={qn("w:id"): str(comment_id)})) + + @property + def lastRenderedPageBreaks(self) -> List[CT_LastRenderedPageBreak]: + """All `w:lastRenderedPageBreaks` descendants of this run.""" + return self.xpath("./w:lastRenderedPageBreak") + + @property + def style(self) -> str | None: + """String contained in `w:val` attribute of `w:rStyle` grandchild. + + |None| if that element is not present. + """ + rPr = self.rPr + if rPr is None: + return None + return rPr.style + + @style.setter + def style(self, style: str | None): + """Set character style of this `w:r` element to `style`. + + If `style` is None, remove the style element. + """ + rPr = self.get_or_add_rPr() + rPr.style = style + + @property + def text(self) -> str: + """The textual content of this run. + + Inner-content child elements like `w:tab` are translated to their text + equivalent. + """ + return "".join( + str(e) for e in self.xpath("w:br | w:cr | w:noBreakHyphen | w:ptab | w:t | w:tab") + ) + + @text.setter + def text(self, text: str): # pyright: ignore[reportIncompatibleMethodOverride] + self.clear_content() + _RunContentAppender.append_to_run_from_text(self, text) + + def _insert_rPr(self, rPr: CT_RPr) -> CT_RPr: + self.insert(0, rPr) + return rPr + + def _new_comment_reference_run(self, comment_id: int) -> CT_R: + """Return a new `w:r` element with `w:commentReference` referencing `comment_id`. + + Should look like this: + + + + + + + """ + r = cast(CT_R, OxmlElement("w:r")) + rPr = r.get_or_add_rPr() + rPr.style = "CommentReference" + r.append(OxmlElement("w:commentReference", attrs={qn("w:id"): str(comment_id)})) + return r + + +# ------------------------------------------------------------------------------------ +# Run inner-content elements + + +class CT_Br(BaseOxmlElement): + """`` element, indicating a line, page, or column break in a run.""" + + type: str | None = OptionalAttribute( # pyright: ignore[reportAssignmentType] + "w:type", ST_BrType, default="textWrapping" + ) + clear: str | None = OptionalAttribute("w:clear", ST_BrClear) # pyright: ignore + + def __str__(self) -> str: + """Text equivalent of this element. Actual value depends on break type. + + A line break is translated as "\n". Column and page breaks produce the empty + string (""). + + This allows the text of run inner-content to be accessed in a consistent way + for all run inner-context text elements. + """ + return "\n" if self.type == "textWrapping" else "" + + +class CT_Cr(BaseOxmlElement): + """`` element, representing a carriage-return (0x0D) character within a run. + + In Word, this represents a "soft carriage-return" in the sense that it does not end + the paragraph the way pressing Enter (aka. Return) on the keyboard does. Here the + text equivalent is considered to be newline ("\n") since in plain-text that's the + closest Python equivalent. + + NOTE: this complex-type name does not exist in the schema, where `w:tab` maps to + `CT_Empty`. This name was added to give it distinguished behavior. CT_Empty is used + for many elements. + """ + + def __str__(self) -> str: + """Text equivalent of this element, a single newline ("\n").""" + return "\n" + + +class CT_NoBreakHyphen(BaseOxmlElement): + """`` element, a hyphen ineligible for a line-wrap position. + + This maps to a plain-text dash ("-"). + + NOTE: this complex-type name does not exist in the schema, where `w:noBreakHyphen` + maps to `CT_Empty`. This name was added to give it behavior distinguished from the + many other elements represented in the schema by CT_Empty. + """ + + def __str__(self) -> str: + """Text equivalent of this element, a single dash character ("-").""" + return "-" + + +class CT_PTab(BaseOxmlElement): + """`` element, representing an absolute-position tab character within a run. + + This character advances the rendering position to the specified position regardless + of any tab-stops, perhaps for layout of a table-of-contents (TOC) or similar. + """ + + def __str__(self) -> str: + """Text equivalent of this element, a single tab ("\t") character. + + This allows the text of run inner-content to be accessed in a consistent way + for all run inner-context text elements. + """ + return "\t" + + +# -- CT_Tab functionality is provided by CT_TabStop which also uses `w:tab` tag. That +# -- element class provides the __str__() method for this empty element, unconditionally +# -- returning "\t". + + +class CT_Text(BaseOxmlElement): + """`` element, containing a sequence of characters within a run.""" + + def __str__(self) -> str: + """Text contained in this element, the empty string if it has no content. + + This property allows this run inner-content element to be queried for its text + the same way as other run-content elements are. In particular, this never + returns None, as etree._Element does when there is no content. + """ + return self.text or "" + + +# ------------------------------------------------------------------------------------ +# Utility + + +class _RunContentAppender: + """Translates a Python string into run content elements appended in a `w:r` element. + + Contiguous sequences of regular characters are appended in a single `` element. + Each tab character ('\t') causes a `` element to be appended. Likewise a + newline or carriage return character ('\n', '\r') causes a `` element to be + appended. + """ + + def __init__(self, r: CT_R): + self._r = r + self._bfr: List[str] = [] + + @classmethod + def append_to_run_from_text(cls, r: CT_R, text: str): + """Append inner-content elements for `text` to `r` element.""" + appender = cls(r) + appender.add_text(text) + + def add_text(self, text: str): + """Append inner-content elements for `text` to the `w:r` element.""" + for char in text: + self.add_char(char) + self.flush() + + def add_char(self, char: str): + """Process next character of input through finite state maching (FSM). + + There are two possible states, buffer pending and not pending, but those are + hidden behind the `.flush()` method which must be called at the end of text to + ensure any pending `` element is written. + """ + if char == "\t": + self.flush() + self._r.add_tab() + elif char in "\r\n": + self.flush() + self._r.add_br() + else: + self._bfr.append(char) + + def flush(self): + text = "".join(self._bfr) + if text: + self._r.add_t(text) + self._bfr.clear() diff --git a/intelliaide/vendor/docx/oxml/xmlchemy.py b/intelliaide/vendor/docx/oxml/xmlchemy.py new file mode 100644 index 0000000..e2c54b3 --- /dev/null +++ b/intelliaide/vendor/docx/oxml/xmlchemy.py @@ -0,0 +1,696 @@ +# pyright: reportImportCycles=false + +"""Enabling declarative definition of lxml custom element classes.""" + +from __future__ import annotations + +import re +from typing import TYPE_CHECKING, Any, Callable, Sequence, Type, TypeVar + +from lxml import etree +from lxml.etree import ElementBase, _Element # pyright: ignore[reportPrivateUsage] + +from docx.oxml.exceptions import InvalidXmlError +from docx.oxml.ns import NamespacePrefixedTag, nsmap, qn +from docx.shared import lazyproperty + +if TYPE_CHECKING: + from docx.enum.base import BaseXmlEnum + from docx.oxml.simpletypes import BaseSimpleType + + +def serialize_for_reading(element: ElementBase): + """Serialize `element` to human-readable XML suitable for tests. + + No XML declaration. + """ + xml = etree.tostring(element, encoding="unicode", pretty_print=True) + return XmlString(xml) + + +class XmlString(str): + """Provides string comparison override suitable for serialized XML that is useful + for tests.""" + + # ' text' + # | | || | + # +----------+------------------------------------------++-----------+ + # front attrs | text + # close + + _xml_elm_line_patt = re.compile(r"( *)([^<]*)?$") + + def __eq__(self, other: object) -> bool: + if not isinstance(other, str): + return False + lines = self.splitlines() + lines_other = other.splitlines() + if len(lines) != len(lines_other): + return False + for line, line_other in zip(lines, lines_other): + if not self._eq_elm_strs(line, line_other): + return False + return True + + def __ne__(self, other: object) -> bool: + return not self.__eq__(other) + + def _attr_seq(self, attrs: str) -> list[str]: + """Return a sequence of attribute strings parsed from `attrs`. + + Each attribute string is stripped of whitespace on both ends. + """ + attrs = attrs.strip() + attr_lst = attrs.split() + return sorted(attr_lst) + + def _eq_elm_strs(self, line: str, line_2: str): + """Return True if the element in `line_2` is XML equivalent to the element in + `line`.""" + front, attrs, close, text = self._parse_line(line) + front_2, attrs_2, close_2, text_2 = self._parse_line(line_2) + if front != front_2: + return False + if self._attr_seq(attrs) != self._attr_seq(attrs_2): + return False + if close != close_2: + return False + return text == text_2 + + @classmethod + def _parse_line(cls, line: str) -> tuple[str, str, str, str]: + """(front, attrs, close, text) 4-tuple result of parsing XML element `line`.""" + match = cls._xml_elm_line_patt.match(line) + if match is None: + return "", "", "", "" + front, attrs, close, text = [match.group(n) for n in range(1, 5)] + return front, attrs, close, text + + +_T = TypeVar("_T") + + +class MetaOxmlElement(type): + """Metaclass for BaseOxmlElement.""" + + def __init__(cls, clsname: str, bases: tuple[type, ...], namespace: dict[str, Any]): + dispatchable = ( + OneAndOnlyOne, + OneOrMore, + OptionalAttribute, + RequiredAttribute, + ZeroOrMore, + ZeroOrOne, + ZeroOrOneChoice, + ) + for key, value in namespace.items(): + if isinstance(value, dispatchable): + value.populate_class_members(cls, key) + + +class BaseAttribute: + """Base class for OptionalAttribute and RequiredAttribute. + + Provides common methods. + """ + + def __init__(self, attr_name: str, simple_type: Type[BaseXmlEnum] | Type[BaseSimpleType]): + super(BaseAttribute, self).__init__() + self._attr_name = attr_name + self._simple_type = simple_type + + def populate_class_members(self, element_cls: MetaOxmlElement, prop_name: str) -> None: + """Add the appropriate methods to `element_cls`.""" + self._element_cls = element_cls + self._prop_name = prop_name + + self._add_attr_property() + + def _add_attr_property(self): + """Add a read/write `.{prop_name}` property to the element class. + + The property returns the interpreted value of this attribute on access and + changes the attribute value to its ST_* counterpart on assignment. + """ + property_ = property(self._getter, self._setter, None) + # -- assign unconditionally to overwrite element name definition -- + setattr(self._element_cls, self._prop_name, property_) + + @property + def _clark_name(self): + if ":" in self._attr_name: + return qn(self._attr_name) + return self._attr_name + + @property + def _getter(self) -> Callable[[BaseOxmlElement], Any | None]: ... + + @property + def _setter( + self, + ) -> Callable[[BaseOxmlElement, Any | None], None]: ... + + +class OptionalAttribute(BaseAttribute): + """Defines an optional attribute on a custom element class. + + An optional attribute returns a default value when not present for reading. When + assigned |None|, the attribute is removed, but still returns the default value when + one is specified. + """ + + def __init__( + self, + attr_name: str, + simple_type: Type[BaseXmlEnum] | Type[BaseSimpleType], + default: BaseXmlEnum | BaseSimpleType | str | bool | None = None, + ): + super(OptionalAttribute, self).__init__(attr_name, simple_type) + self._default = default + + @property + def _docstring(self): + """String to use as `__doc__` attribute of attribute property.""" + return ( + f"{self._simple_type.__name__} type-converted value of" + f" ``{self._attr_name}`` attribute, or |None| (or specified default" + f" value) if not present. Assigning the default value causes the" + f" attribute to be removed from the element." + ) + + @property + def _getter( + self, + ) -> Callable[[BaseOxmlElement], Any | None]: + """Function suitable for `__get__()` method on attribute property descriptor.""" + + def get_attr_value( + obj: BaseOxmlElement, + ) -> Any | None: + attr_str_value = obj.get(self._clark_name) + if attr_str_value is None: + return self._default + return self._simple_type.from_xml(attr_str_value) + + get_attr_value.__doc__ = self._docstring + return get_attr_value + + @property + def _setter(self) -> Callable[[BaseOxmlElement, Any], None]: + """Function suitable for `__set__()` method on attribute property descriptor.""" + + def set_attr_value(obj: BaseOxmlElement, value: Any | None): + if value is None or value == self._default: + if self._clark_name in obj.attrib: + del obj.attrib[self._clark_name] + return + str_value = self._simple_type.to_xml(value) + if str_value is None: + if self._clark_name in obj.attrib: + del obj.attrib[self._clark_name] + return + obj.set(self._clark_name, str_value) + + return set_attr_value + + +class RequiredAttribute(BaseAttribute): + """Defines a required attribute on a custom element class. + + A required attribute is assumed to be present for reading, so does not have a + default value; its actual value is always used. If missing on read, an + |InvalidXmlError| is raised. It also does not remove the attribute if |None| is + assigned. Assigning |None| raises |TypeError| or |ValueError|, depending on the + simple type of the attribute. + """ + + @property + def _docstring(self): + """Return the string to use as the ``__doc__`` attribute of the property for + this attribute.""" + return "%s type-converted value of ``%s`` attribute." % ( + self._simple_type.__name__, + self._attr_name, + ) + + @property + def _getter(self) -> Callable[[BaseOxmlElement], Any]: + """function object suitable for "get" side of attr property descriptor.""" + + def get_attr_value(obj: BaseOxmlElement) -> Any | None: + attr_str_value = obj.get(self._clark_name) + if attr_str_value is None: + raise InvalidXmlError( + "required '%s' attribute not present on element %s" % (self._attr_name, obj.tag) + ) + return self._simple_type.from_xml(attr_str_value) + + get_attr_value.__doc__ = self._docstring + return get_attr_value + + @property + def _setter(self) -> Callable[[BaseOxmlElement, Any], None]: + """function object suitable for "set" side of attribute property descriptor.""" + + def set_attr_value(obj: BaseOxmlElement, value: Any): + str_value = self._simple_type.to_xml(value) + if str_value is None: + raise ValueError(f"cannot assign {value} to this required attribute") + obj.set(self._clark_name, str_value) + + return set_attr_value + + +class _BaseChildElement: + """Base class for the child-element classes. + + The child-element sub-classes correspond to varying cardinalities, such as ZeroOrOne + and ZeroOrMore. + """ + + def __init__(self, nsptagname: str, successors: tuple[str, ...] = ()): + super(_BaseChildElement, self).__init__() + self._nsptagname = nsptagname + self._successors = successors + + def populate_class_members(self, element_cls: MetaOxmlElement, prop_name: str) -> None: + """Baseline behavior for adding the appropriate methods to `element_cls`.""" + self._element_cls = element_cls + self._prop_name = prop_name + + def _add_adder(self): + """Add an ``_add_x()`` method to the element class for this child element.""" + + def _add_child(obj: BaseOxmlElement, **attrs: Any): + new_method = getattr(obj, self._new_method_name) + child = new_method() + for key, value in attrs.items(): + setattr(child, key, value) + insert_method = getattr(obj, self._insert_method_name) + insert_method(child) + return child + + _add_child.__doc__ = ( + "Add a new ``<%s>`` child element unconditionally, inserted in t" + "he correct sequence." % self._nsptagname + ) + self._add_to_class(self._add_method_name, _add_child) + + def _add_creator(self): + """Add a ``_new_{prop_name}()`` method to the element class that creates a new, + empty element of the correct type, having no attributes.""" + creator = self._creator + creator.__doc__ = ( + 'Return a "loose", newly created ``<%s>`` element having no attri' + "butes, text, or children." % self._nsptagname + ) + self._add_to_class(self._new_method_name, creator) + + def _add_getter(self): + """Add a read-only ``{prop_name}`` property to the element class for this child + element.""" + property_ = property(self._getter, None, None) + # -- assign unconditionally to overwrite element name definition -- + setattr(self._element_cls, self._prop_name, property_) + + def _add_inserter(self): + """Add an ``_insert_x()`` method to the element class for this child element.""" + + def _insert_child(obj: BaseOxmlElement, child: BaseOxmlElement): + obj.insert_element_before(child, *self._successors) + return child + + _insert_child.__doc__ = ( + "Return the passed ``<%s>`` element after inserting it as a chil" + "d in the correct sequence." % self._nsptagname + ) + self._add_to_class(self._insert_method_name, _insert_child) + + def _add_list_getter(self): + """Add a read-only ``{prop_name}_lst`` property to the element class to retrieve + a list of child elements matching this type.""" + prop_name = "%s_lst" % self._prop_name + property_ = property(self._list_getter, None, None) + setattr(self._element_cls, prop_name, property_) + + @lazyproperty + def _add_method_name(self): + return "_add_%s" % self._prop_name + + def _add_public_adder(self): + """Add a public ``add_x()`` method to the parent element class.""" + + def add_child(obj: BaseOxmlElement): + private_add_method = getattr(obj, self._add_method_name) + child = private_add_method() + return child + + add_child.__doc__ = ( + "Add a new ``<%s>`` child element unconditionally, inserted in t" + "he correct sequence." % self._nsptagname + ) + self._add_to_class(self._public_add_method_name, add_child) + + def _add_to_class(self, name: str, method: Callable[..., Any]): + """Add `method` to the target class as `name`, unless `name` is already defined + on the class.""" + if hasattr(self._element_cls, name): + return + setattr(self._element_cls, name, method) + + @property + def _creator(self) -> Callable[[BaseOxmlElement], BaseOxmlElement]: + """Callable that creates an empty element of the right type, with no attrs.""" + from docx.oxml.parser import OxmlElement + + def new_child_element(obj: BaseOxmlElement): + return OxmlElement(self._nsptagname) + + return new_child_element + + @property + def _getter(self): + """Return a function object suitable for the "get" side of the property + descriptor. + + This default getter returns the child element with matching tag name or |None| + if not present. + """ + + def get_child_element(obj: BaseOxmlElement): + return obj.find(qn(self._nsptagname)) + + get_child_element.__doc__ = ( + "``<%s>`` child element or |None| if not present." % self._nsptagname + ) + return get_child_element + + @lazyproperty + def _insert_method_name(self): + return "_insert_%s" % self._prop_name + + @property + def _list_getter(self): + """Return a function object suitable for the "get" side of a list property + descriptor.""" + + def get_child_element_list(obj: BaseOxmlElement): + return obj.findall(qn(self._nsptagname)) + + get_child_element_list.__doc__ = ( + "A list containing each of the ``<%s>`` child elements, in the o" + "rder they appear." % self._nsptagname + ) + return get_child_element_list + + @lazyproperty + def _public_add_method_name(self): + """add_childElement() is public API for a repeating element, allowing new + elements to be added to the sequence. + + May be overridden to provide a friendlier API to clients having domain + appropriate parameter names for required attributes. + """ + return "add_%s" % self._prop_name + + @lazyproperty + def _remove_method_name(self): + return "_remove_%s" % self._prop_name + + @lazyproperty + def _new_method_name(self): + return "_new_%s" % self._prop_name + + +class Choice(_BaseChildElement): + """Defines a child element belonging to a group, only one of which may appear as a child.""" + + @property + def nsptagname(self): + return self._nsptagname + + def populate_class_members( # pyright: ignore[reportIncompatibleMethodOverride] + self, + element_cls: MetaOxmlElement, + group_prop_name: str, + successors: tuple[str, ...], + ) -> None: + """Add the appropriate methods to `element_cls`.""" + self._element_cls = element_cls + self._group_prop_name = group_prop_name + self._successors = successors + + self._add_getter() + self._add_creator() + self._add_inserter() + self._add_adder() + self._add_get_or_change_to_method() + + def _add_get_or_change_to_method(self): + """Add a ``get_or_change_to_x()`` method to the element class for this child + element.""" + + def get_or_change_to_child(obj: BaseOxmlElement): + child = getattr(obj, self._prop_name) + if child is not None: + return child + remove_group_method = getattr(obj, self._remove_group_method_name) + remove_group_method() + add_method = getattr(obj, self._add_method_name) + child = add_method() + return child + + get_or_change_to_child.__doc__ = ( + "Return the ``<%s>`` child, replacing any other group element if found." + ) % self._nsptagname + self._add_to_class(self._get_or_change_to_method_name, get_or_change_to_child) + + @property + def _prop_name(self): + """Property name computed from tag name, e.g. a:schemeClr -> schemeClr.""" + start = self._nsptagname.index(":") + 1 if ":" in self._nsptagname else 0 + return self._nsptagname[start:] + + @lazyproperty + def _get_or_change_to_method_name(self): + return "get_or_change_to_%s" % self._prop_name + + @lazyproperty + def _remove_group_method_name(self): + return "_remove_%s" % self._group_prop_name + + +class OneAndOnlyOne(_BaseChildElement): + """Defines a required child element for MetaOxmlElement.""" + + def __init__(self, nsptagname: str): + super(OneAndOnlyOne, self).__init__(nsptagname, ()) + + def populate_class_members(self, element_cls: MetaOxmlElement, prop_name: str) -> None: + """Add the appropriate methods to `element_cls`.""" + super(OneAndOnlyOne, self).populate_class_members(element_cls, prop_name) + self._add_getter() + + @property + def _getter(self): + """Return a function object suitable for the "get" side of the property + descriptor.""" + + def get_child_element(obj: BaseOxmlElement): + child = obj.find(qn(self._nsptagname)) + if child is None: + raise InvalidXmlError( + "required ``<%s>`` child element not present" % self._nsptagname + ) + return child + + get_child_element.__doc__ = "Required ``<%s>`` child element." % self._nsptagname + return get_child_element + + +class OneOrMore(_BaseChildElement): + """Defines a repeating child element for MetaOxmlElement that must appear at least + once.""" + + def populate_class_members(self, element_cls: MetaOxmlElement, prop_name: str) -> None: + """Add the appropriate methods to `element_cls`.""" + super(OneOrMore, self).populate_class_members(element_cls, prop_name) + self._add_list_getter() + self._add_creator() + self._add_inserter() + self._add_adder() + self._add_public_adder() + delattr(element_cls, prop_name) + + +class ZeroOrMore(_BaseChildElement): + """Defines an optional repeating child element for MetaOxmlElement.""" + + def populate_class_members(self, element_cls: MetaOxmlElement, prop_name: str) -> None: + """Add the appropriate methods to `element_cls`.""" + super(ZeroOrMore, self).populate_class_members(element_cls, prop_name) + self._add_list_getter() + self._add_creator() + self._add_inserter() + self._add_adder() + self._add_public_adder() + delattr(element_cls, prop_name) + + +class ZeroOrOne(_BaseChildElement): + """Defines an optional child element for MetaOxmlElement.""" + + def populate_class_members(self, element_cls: MetaOxmlElement, prop_name: str) -> None: + """Add the appropriate methods to `element_cls`.""" + super(ZeroOrOne, self).populate_class_members(element_cls, prop_name) + self._add_getter() + self._add_creator() + self._add_inserter() + self._add_adder() + self._add_get_or_adder() + self._add_remover() + + def _add_get_or_adder(self): + """Add a ``get_or_add_x()`` method to the element class for this child + element.""" + + def get_or_add_child(obj: BaseOxmlElement): + child = getattr(obj, self._prop_name) + if child is None: + add_method = getattr(obj, self._add_method_name) + child = add_method() + return child + + get_or_add_child.__doc__ = ( + "Return the ``<%s>`` child element, newly added if not present." + ) % self._nsptagname + self._add_to_class(self._get_or_add_method_name, get_or_add_child) + + def _add_remover(self): + """Add a ``_remove_x()`` method to the element class for this child element.""" + + def _remove_child(obj: BaseOxmlElement): + obj.remove_all(self._nsptagname) + + _remove_child.__doc__ = ("Remove all ``<%s>`` child elements.") % self._nsptagname + self._add_to_class(self._remove_method_name, _remove_child) + + @lazyproperty + def _get_or_add_method_name(self): + return "get_or_add_%s" % self._prop_name + + +class ZeroOrOneChoice(_BaseChildElement): + """Correspondes to an ``EG_*`` element group where at most one of its members may + appear as a child.""" + + def __init__(self, choices: Sequence[Choice], successors: tuple[str, ...] = ()): + self._choices = choices + self._successors = successors + + def populate_class_members(self, element_cls: MetaOxmlElement, prop_name: str) -> None: + """Add the appropriate methods to `element_cls`.""" + super(ZeroOrOneChoice, self).populate_class_members(element_cls, prop_name) + self._add_choice_getter() + for choice in self._choices: + choice.populate_class_members(element_cls, self._prop_name, self._successors) + self._add_group_remover() + + def _add_choice_getter(self): + """Add a read-only ``{prop_name}`` property to the element class that returns + the present member of this group, or |None| if none are present.""" + property_ = property(self._choice_getter, None, None) + # assign unconditionally to overwrite element name definition + setattr(self._element_cls, self._prop_name, property_) + + def _add_group_remover(self): + """Add a ``_remove_eg_x()`` method to the element class for this choice + group.""" + + def _remove_choice_group(obj: BaseOxmlElement): + for tagname in self._member_nsptagnames: + obj.remove_all(tagname) + + _remove_choice_group.__doc__ = "Remove the current choice group child element if present." + self._add_to_class(self._remove_choice_group_method_name, _remove_choice_group) + + @property + def _choice_getter(self): + """Return a function object suitable for the "get" side of the property + descriptor.""" + + def get_group_member_element(obj: BaseOxmlElement): + return obj.first_child_found_in(*self._member_nsptagnames) + + get_group_member_element.__doc__ = ( + "Return the child element belonging to this element group, or " + "|None| if no member child is present." + ) + return get_group_member_element + + @lazyproperty + def _member_nsptagnames(self): + """Sequence of namespace-prefixed tagnames, one for each of the member elements + of this choice group.""" + return [choice.nsptagname for choice in self._choices] + + @lazyproperty + def _remove_choice_group_method_name(self): + return "_remove_%s" % self._prop_name + + +# -- lxml typing isn't quite right here, just ignore this error on _Element -- +class BaseOxmlElement(etree.ElementBase, metaclass=MetaOxmlElement): + """Effective base class for all custom element classes. + + Adds standardized behavior to all classes in one place. + """ + + def __repr__(self): + return "<%s '<%s>' at 0x%0x>" % ( + self.__class__.__name__, + self._nsptag, + id(self), + ) + + def first_child_found_in(self, *tagnames: str) -> _Element | None: + """First child with tag in `tagnames`, or None if not found.""" + for tagname in tagnames: + child = self.find(qn(tagname)) + if child is not None: + return child + return None + + def insert_element_before(self, elm: ElementBase, *tagnames: str): + successor = self.first_child_found_in(*tagnames) + if successor is not None: + successor.addprevious(elm) + else: + self.append(elm) + return elm + + def remove_all(self, *tagnames: str) -> None: + """Remove child elements with tagname (e.g. "a:p") in `tagnames`.""" + for tagname in tagnames: + matching = self.findall(qn(tagname)) + for child in matching: + self.remove(child) + + @property + def xml(self) -> str: + """XML string for this element, suitable for testing purposes. + + Pretty printed for readability and without an XML declaration at the top. + """ + return serialize_for_reading(self) + + def xpath(self, xpath_str: str) -> Any: # pyright: ignore[reportIncompatibleMethodOverride] + """Override of `lxml` _Element.xpath() method. + + Provides standard Open XML namespace mapping (`nsmap`) in centralized location. + """ + return super().xpath(xpath_str, namespaces=nsmap) + + @property + def _nsptag(self) -> str: + return NamespacePrefixedTag.from_clark_name(self.tag) diff --git a/intelliaide/vendor/docx/package.py b/intelliaide/vendor/docx/package.py new file mode 100644 index 0000000..7ea47e6 --- /dev/null +++ b/intelliaide/vendor/docx/package.py @@ -0,0 +1,110 @@ +"""WordprocessingML Package class and related objects.""" + +from __future__ import annotations + +from typing import IO, cast + +from docx.image.image import Image +from docx.opc.constants import RELATIONSHIP_TYPE as RT +from docx.opc.package import OpcPackage +from docx.opc.packuri import PackURI +from docx.parts.image import ImagePart +from docx.shared import lazyproperty + + +class Package(OpcPackage): + """Customizations specific to a WordprocessingML package.""" + + def after_unmarshal(self): + """Called by loading code after all parts and relationships have been loaded. + + This method affords the opportunity for any required post-processing. + """ + self._gather_image_parts() + + def get_or_add_image_part(self, image_descriptor: str | IO[bytes]) -> ImagePart: + """Return |ImagePart| containing image specified by `image_descriptor`. + + The image-part is newly created if a matching one is not already present in the + collection. + """ + return self.image_parts.get_or_add_image_part(image_descriptor) + + @lazyproperty + def image_parts(self) -> ImageParts: + """|ImageParts| collection object for this package.""" + return ImageParts() + + def _gather_image_parts(self): + """Load the image part collection with all the image parts in package.""" + for rel in self.iter_rels(): + if rel.is_external: + continue + if rel.reltype != RT.IMAGE: + continue + if rel.target_part in self.image_parts: + continue + self.image_parts.append(cast("ImagePart", rel.target_part)) + + +class ImageParts: + """Collection of |ImagePart| objects corresponding to images in the package.""" + + def __init__(self): + self._image_parts: list[ImagePart] = [] + + def __contains__(self, item: object): + return self._image_parts.__contains__(item) + + def __iter__(self): + return self._image_parts.__iter__() + + def __len__(self): + return self._image_parts.__len__() + + def append(self, item: ImagePart): + self._image_parts.append(item) + + def get_or_add_image_part(self, image_descriptor: str | IO[bytes]) -> ImagePart: + """Return |ImagePart| object containing image identified by `image_descriptor`. + + The image-part is newly created if a matching one is not present in the + collection. + """ + image = Image.from_file(image_descriptor) + matching_image_part = self._get_by_sha1(image.sha1) + if matching_image_part is not None: + return matching_image_part + return self._add_image_part(image) + + def _add_image_part(self, image: Image): + """Return |ImagePart| instance newly created from `image` and appended to the collection.""" + partname = self._next_image_partname(image.ext) + image_part = ImagePart.from_image(image, partname) + self.append(image_part) + return image_part + + def _get_by_sha1(self, sha1: str) -> ImagePart | None: + """Return the image part in this collection having a SHA1 hash matching `sha1`, + or |None| if not found.""" + for image_part in self._image_parts: + if image_part.sha1 == sha1: + return image_part + return None + + def _next_image_partname(self, ext: str) -> PackURI: + """The next available image partname, starting from ``/word/media/image1.{ext}`` + where unused numbers are reused. + + The partname is unique by number, without regard to the extension. `ext` does + not include the leading period. + """ + + def image_partname(n: int) -> PackURI: + return PackURI("/word/media/image%d.%s" % (n, ext)) + + used_numbers = [image_part.partname.idx for image_part in self] + for n in range(1, len(self) + 1): + if n not in used_numbers: + return image_partname(n) + return image_partname(len(self) + 1) diff --git a/intelliaide/vendor/docx/parts/__init__.py b/intelliaide/vendor/docx/parts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/intelliaide/vendor/docx/parts/comments.py b/intelliaide/vendor/docx/parts/comments.py new file mode 100644 index 0000000..0e4cc74 --- /dev/null +++ b/intelliaide/vendor/docx/parts/comments.py @@ -0,0 +1,51 @@ +"""Contains comments added to the document.""" + +from __future__ import annotations + +import os +from typing import TYPE_CHECKING, cast + +from typing_extensions import Self + +from docx.comments import Comments +from docx.opc.constants import CONTENT_TYPE as CT +from docx.opc.packuri import PackURI +from docx.oxml.comments import CT_Comments +from docx.oxml.parser import parse_xml +from docx.package import Package +from docx.parts.story import StoryPart + +if TYPE_CHECKING: + from docx.oxml.comments import CT_Comments + from docx.package import Package + + +class CommentsPart(StoryPart): + """Container part for comments added to the document.""" + + def __init__( + self, partname: PackURI, content_type: str, element: CT_Comments, package: Package + ): + super().__init__(partname, content_type, element, package) + self._comments = element + + @property + def comments(self) -> Comments: + """A |Comments| proxy object for the `w:comments` root element of this part.""" + return Comments(self._comments, self) + + @classmethod + def default(cls, package: Package) -> Self: + """A newly created comments part, containing a default empty `w:comments` element.""" + partname = PackURI("/word/comments.xml") + content_type = CT.WML_COMMENTS + element = cast("CT_Comments", parse_xml(cls._default_comments_xml())) + return cls(partname, content_type, element, package) + + @classmethod + def _default_comments_xml(cls) -> bytes: + """A byte-string containing XML for a default comments part.""" + path = os.path.join(os.path.split(__file__)[0], "..", "templates", "default-comments.xml") + with open(path, "rb") as f: + xml_bytes = f.read() + return xml_bytes diff --git a/intelliaide/vendor/docx/parts/document.py b/intelliaide/vendor/docx/parts/document.py new file mode 100644 index 0000000..4960264 --- /dev/null +++ b/intelliaide/vendor/docx/parts/document.py @@ -0,0 +1,169 @@ +"""|DocumentPart| and closely related objects.""" + +from __future__ import annotations + +from typing import IO, TYPE_CHECKING, cast + +from docx.document import Document +from docx.opc.constants import RELATIONSHIP_TYPE as RT +from docx.parts.comments import CommentsPart +from docx.parts.hdrftr import FooterPart, HeaderPart +from docx.parts.numbering import NumberingPart +from docx.parts.settings import SettingsPart +from docx.parts.story import StoryPart +from docx.parts.styles import StylesPart +from docx.shape import InlineShapes +from docx.shared import lazyproperty + +if TYPE_CHECKING: + from docx.comments import Comments + from docx.enum.style import WD_STYLE_TYPE + from docx.opc.coreprops import CoreProperties + from docx.settings import Settings + from docx.styles.style import BaseStyle + + +class DocumentPart(StoryPart): + """Main document part of a WordprocessingML (WML) package, aka a .docx file. + + Acts as broker to other parts such as image, core properties, and style parts. It + also acts as a convenient delegate when a mid-document object needs a service + involving a remote ancestor. The `Parented.part` property inherited by many content + objects provides access to this part object for that purpose. + """ + + def add_footer_part(self): + """Return (footer_part, rId) pair for newly-created footer part.""" + footer_part = FooterPart.new(self.package) + rId = self.relate_to(footer_part, RT.FOOTER) + return footer_part, rId + + def add_header_part(self): + """Return (header_part, rId) pair for newly-created header part.""" + header_part = HeaderPart.new(self.package) + rId = self.relate_to(header_part, RT.HEADER) + return header_part, rId + + @property + def comments(self) -> Comments: + """|Comments| object providing access to the comments added to this document.""" + return self._comments_part.comments + + @property + def core_properties(self) -> CoreProperties: + """A |CoreProperties| object providing read/write access to the core properties + of this document.""" + return self.package.core_properties + + @property + def document(self): + """A |Document| object providing access to the content of this document.""" + return Document(self._element, self) + + def drop_header_part(self, rId: str) -> None: + """Remove related header part identified by `rId`.""" + self.drop_rel(rId) + + def footer_part(self, rId: str): + """Return |FooterPart| related by `rId`.""" + return self.related_parts[rId] + + def get_style(self, style_id: str | None, style_type: WD_STYLE_TYPE) -> BaseStyle: + """Return the style in this document matching `style_id`. + + Returns the default style for `style_type` if `style_id` is |None| or does not + match a defined style of `style_type`. + """ + return self.styles.get_by_id(style_id, style_type) + + def get_style_id(self, style_or_name, style_type): + """Return the style_id (|str|) of the style of `style_type` matching + `style_or_name`. + + Returns |None| if the style resolves to the default style for `style_type` or if + `style_or_name` is itself |None|. Raises if `style_or_name` is a style of the + wrong type or names a style not present in the document. + """ + return self.styles.get_style_id(style_or_name, style_type) + + def header_part(self, rId: str): + """Return |HeaderPart| related by `rId`.""" + return self.related_parts[rId] + + @lazyproperty + def inline_shapes(self): + """The |InlineShapes| instance containing the inline shapes in the document.""" + return InlineShapes(self._element.body, self) + + @lazyproperty + def numbering_part(self) -> NumberingPart: + """A |NumberingPart| object providing access to the numbering definitions for this document. + + Creates an empty numbering part if one is not present. + """ + try: + return cast(NumberingPart, self.part_related_by(RT.NUMBERING)) + except KeyError: + numbering_part = NumberingPart.new() + self.relate_to(numbering_part, RT.NUMBERING) + return numbering_part + + def save(self, path_or_stream: str | IO[bytes]): + """Save this document to `path_or_stream`, which can be either a path to a + filesystem location (a string) or a file-like object.""" + self.package.save(path_or_stream) + + @property + def settings(self) -> Settings: + """A |Settings| object providing access to the settings in the settings part of + this document.""" + return self._settings_part.settings + + @property + def styles(self): + """A |Styles| object providing access to the styles in the styles part of this + document.""" + return self._styles_part.styles + + @property + def _comments_part(self) -> CommentsPart: + """A |CommentsPart| object providing access to the comments added to this document. + + Creates a default comments part if one is not present. + """ + try: + return cast(CommentsPart, self.part_related_by(RT.COMMENTS)) + except KeyError: + assert self.package is not None + comments_part = CommentsPart.default(self.package) + self.relate_to(comments_part, RT.COMMENTS) + return comments_part + + @property + def _settings_part(self) -> SettingsPart: + """A |SettingsPart| object providing access to the document-level settings for + this document. + + Creates a default settings part if one is not present. + """ + try: + return cast(SettingsPart, self.part_related_by(RT.SETTINGS)) + except KeyError: + settings_part = SettingsPart.default(self.package) + self.relate_to(settings_part, RT.SETTINGS) + return settings_part + + @property + def _styles_part(self) -> StylesPart: + """Instance of |StylesPart| for this document. + + Creates an empty styles part if one is not present. + """ + try: + return cast(StylesPart, self.part_related_by(RT.STYLES)) + except KeyError: + package = self.package + assert package is not None + styles_part = StylesPart.default(package) + self.relate_to(styles_part, RT.STYLES) + return styles_part diff --git a/intelliaide/vendor/docx/parts/hdrftr.py b/intelliaide/vendor/docx/parts/hdrftr.py new file mode 100644 index 0000000..3511380 --- /dev/null +++ b/intelliaide/vendor/docx/parts/hdrftr.py @@ -0,0 +1,53 @@ +"""Header and footer part objects.""" + +from __future__ import annotations + +import os +from typing import TYPE_CHECKING + +from docx.opc.constants import CONTENT_TYPE as CT +from docx.oxml.parser import parse_xml +from docx.parts.story import StoryPart + +if TYPE_CHECKING: + from docx.package import Package + + +class FooterPart(StoryPart): + """Definition of a section footer.""" + + @classmethod + def new(cls, package: Package): + """Return newly created footer part.""" + partname = package.next_partname("/word/footer%d.xml") + content_type = CT.WML_FOOTER + element = parse_xml(cls._default_footer_xml()) + return cls(partname, content_type, element, package) + + @classmethod + def _default_footer_xml(cls): + """Return bytes containing XML for a default footer part.""" + path = os.path.join(os.path.split(__file__)[0], "..", "templates", "default-footer.xml") + with open(path, "rb") as f: + xml_bytes = f.read() + return xml_bytes + + +class HeaderPart(StoryPart): + """Definition of a section header.""" + + @classmethod + def new(cls, package: Package): + """Return newly created header part.""" + partname = package.next_partname("/word/header%d.xml") + content_type = CT.WML_HEADER + element = parse_xml(cls._default_header_xml()) + return cls(partname, content_type, element, package) + + @classmethod + def _default_header_xml(cls): + """Return bytes containing XML for a default header part.""" + path = os.path.join(os.path.split(__file__)[0], "..", "templates", "default-header.xml") + with open(path, "rb") as f: + xml_bytes = f.read() + return xml_bytes diff --git a/intelliaide/vendor/docx/parts/image.py b/intelliaide/vendor/docx/parts/image.py new file mode 100644 index 0000000..5aec070 --- /dev/null +++ b/intelliaide/vendor/docx/parts/image.py @@ -0,0 +1,80 @@ +"""The proxy class for an image part, and related objects.""" + +from __future__ import annotations + +import hashlib +from typing import TYPE_CHECKING + +from docx.image.image import Image +from docx.opc.part import Part +from docx.shared import Emu, Inches + +if TYPE_CHECKING: + from docx.opc.package import OpcPackage + from docx.opc.packuri import PackURI + + +class ImagePart(Part): + """An image part. + + Corresponds to the target part of a relationship with type RELATIONSHIP_TYPE.IMAGE. + """ + + def __init__( + self, partname: PackURI, content_type: str, blob: bytes, image: Image | None = None + ): + super(ImagePart, self).__init__(partname, content_type, blob) + self._image = image + + @property + def default_cx(self): + """Native width of this image, calculated from its width in pixels and + horizontal dots per inch (dpi).""" + px_width = self.image.px_width + horz_dpi = self.image.horz_dpi + width_in_inches = px_width / horz_dpi + return Inches(width_in_inches) + + @property + def default_cy(self): + """Native height of this image, calculated from its height in pixels and + vertical dots per inch (dpi).""" + px_height = self.image.px_height + horz_dpi = self.image.horz_dpi + height_in_emu = int(round(914400 * px_height / horz_dpi)) + return Emu(height_in_emu) + + @property + def filename(self): + """Filename from which this image part was originally created. + + A generic name, e.g. 'image.png', is substituted if no name is available, for + example when the image was loaded from an unnamed stream. In that case a default + extension is applied based on the detected MIME type of the image. + """ + if self._image is not None: + return self._image.filename + return "image.%s" % self.partname.ext + + @classmethod + def from_image(cls, image: Image, partname: PackURI): + """Return an |ImagePart| instance newly created from `image` and assigned + `partname`.""" + return ImagePart(partname, image.content_type, image.blob, image) + + @property + def image(self) -> Image: + if self._image is None: + self._image = Image.from_blob(self.blob) + return self._image + + @classmethod + def load(cls, partname: PackURI, content_type: str, blob: bytes, package: OpcPackage): + """Called by ``docx.opc.package.PartFactory`` to load an image part from a + package being opened by ``Document(...)`` call.""" + return cls(partname, content_type, blob) + + @property + def sha1(self): + """SHA1 hash digest of the blob of this image part.""" + return hashlib.sha1(self.blob).hexdigest() diff --git a/intelliaide/vendor/docx/parts/numbering.py b/intelliaide/vendor/docx/parts/numbering.py new file mode 100644 index 0000000..745c845 --- /dev/null +++ b/intelliaide/vendor/docx/parts/numbering.py @@ -0,0 +1,32 @@ +"""|NumberingPart| and closely related objects.""" + +from ..opc.part import XmlPart +from ..shared import lazyproperty + + +class NumberingPart(XmlPart): + """Proxy for the numbering.xml part containing numbering definitions for a document + or glossary.""" + + @classmethod + def new(cls) -> "NumberingPart": + """Newly created numbering part, containing only the root ```` element.""" + raise NotImplementedError + + @lazyproperty + def numbering_definitions(self): + """The |_NumberingDefinitions| instance containing the numbering definitions + ( element proxies) for this numbering part.""" + return _NumberingDefinitions(self._element) + + +class _NumberingDefinitions: + """Collection of |_NumberingDefinition| instances corresponding to the ```` + elements in a numbering part.""" + + def __init__(self, numbering_elm): + super(_NumberingDefinitions, self).__init__() + self._numbering = numbering_elm + + def __len__(self): + return len(self._numbering.num_lst) diff --git a/intelliaide/vendor/docx/parts/settings.py b/intelliaide/vendor/docx/parts/settings.py new file mode 100644 index 0000000..7fe371f --- /dev/null +++ b/intelliaide/vendor/docx/parts/settings.py @@ -0,0 +1,50 @@ +"""|SettingsPart| and closely related objects.""" + +from __future__ import annotations + +import os +from typing import TYPE_CHECKING, cast + +from docx.opc.constants import CONTENT_TYPE as CT +from docx.opc.packuri import PackURI +from docx.opc.part import XmlPart +from docx.oxml.parser import parse_xml +from docx.settings import Settings + +if TYPE_CHECKING: + from docx.oxml.settings import CT_Settings + from docx.package import Package + + +class SettingsPart(XmlPart): + """Document-level settings part of a WordprocessingML (WML) package.""" + + def __init__( + self, partname: PackURI, content_type: str, element: CT_Settings, package: Package + ): + super().__init__(partname, content_type, element, package) + self._settings = element + + @classmethod + def default(cls, package: Package): + """Return a newly created settings part, containing a default `w:settings` element tree.""" + partname = PackURI("/word/settings.xml") + content_type = CT.WML_SETTINGS + element = cast("CT_Settings", parse_xml(cls._default_settings_xml())) + return cls(partname, content_type, element, package) + + @property + def settings(self) -> Settings: + """A |Settings| proxy object for the `w:settings` element in this part. + + Contains the document-level settings for this document. + """ + return Settings(self._settings) + + @classmethod + def _default_settings_xml(cls): + """Return a bytestream containing XML for a default settings part.""" + path = os.path.join(os.path.split(__file__)[0], "..", "templates", "default-settings.xml") + with open(path, "rb") as f: + xml_bytes = f.read() + return xml_bytes diff --git a/intelliaide/vendor/docx/parts/story.py b/intelliaide/vendor/docx/parts/story.py new file mode 100644 index 0000000..7482c91 --- /dev/null +++ b/intelliaide/vendor/docx/parts/story.py @@ -0,0 +1,95 @@ +"""|StoryPart| and related objects.""" + +from __future__ import annotations + +from typing import IO, TYPE_CHECKING, Tuple, cast + +from docx.opc.constants import RELATIONSHIP_TYPE as RT +from docx.opc.part import XmlPart +from docx.oxml.shape import CT_Inline +from docx.shared import Length, lazyproperty + +if TYPE_CHECKING: + from docx.enum.style import WD_STYLE_TYPE + from docx.image.image import Image + from docx.parts.document import DocumentPart + from docx.styles.style import BaseStyle + + +class StoryPart(XmlPart): + """Base class for story parts. + + A story part is one that can contain textual content, such as the document-part and + header or footer parts. These all share content behaviors like `.paragraphs`, + `.add_paragraph()`, `.add_table()` etc. + """ + + def get_or_add_image(self, image_descriptor: str | IO[bytes]) -> Tuple[str, Image]: + """Return (rId, image) pair for image identified by `image_descriptor`. + + `rId` is the str key (often like "rId7") for the relationship between this story + part and the image part, reused if already present, newly created if not. + `image` is an |Image| instance providing access to the properties of the image, + such as dimensions and image type. + """ + package = self._package + assert package is not None + image_part = package.get_or_add_image_part(image_descriptor) + rId = self.relate_to(image_part, RT.IMAGE) + return rId, image_part.image + + def get_style(self, style_id: str | None, style_type: WD_STYLE_TYPE) -> BaseStyle: + """Return the style in this document matching `style_id`. + + Returns the default style for `style_type` if `style_id` is |None| or does not + match a defined style of `style_type`. + """ + return self._document_part.get_style(style_id, style_type) + + def get_style_id( + self, style_or_name: BaseStyle | str | None, style_type: WD_STYLE_TYPE + ) -> str | None: + """Return str style_id for `style_or_name` of `style_type`. + + Returns |None| if the style resolves to the default style for `style_type` or if + `style_or_name` is itself |None|. Raises if `style_or_name` is a style of the + wrong type or names a style not present in the document. + """ + return self._document_part.get_style_id(style_or_name, style_type) + + def new_pic_inline( + self, + image_descriptor: str | IO[bytes], + width: int | Length | None = None, + height: int | Length | None = None, + ) -> CT_Inline: + """Return a newly-created `w:inline` element. + + The element contains the image specified by `image_descriptor` and is scaled + based on the values of `width` and `height`. + """ + rId, image = self.get_or_add_image(image_descriptor) + cx, cy = image.scaled_dimensions(width, height) + shape_id, filename = self.next_id, image.filename + return CT_Inline.new_pic_inline(shape_id, rId, filename, cx, cy) + + @property + def next_id(self) -> int: + """Next available positive integer id value in this story XML document. + + The value is determined by incrementing the maximum existing id value. Gaps in + the existing id sequence are not filled. The id attribute value is unique in the + document, without regard to the element type it appears on. + """ + id_str_lst = self._element.xpath("//@id") + used_ids = [int(id_str) for id_str in id_str_lst if id_str.isdigit()] + if not used_ids: + return 1 + return max(used_ids) + 1 + + @lazyproperty + def _document_part(self) -> DocumentPart: + """|DocumentPart| object for this package.""" + package = self.package + assert package is not None + return cast("DocumentPart", package.main_document_part) diff --git a/intelliaide/vendor/docx/parts/styles.py b/intelliaide/vendor/docx/parts/styles.py new file mode 100644 index 0000000..6e065be --- /dev/null +++ b/intelliaide/vendor/docx/parts/styles.py @@ -0,0 +1,42 @@ +"""Provides StylesPart and related objects.""" + +from __future__ import annotations + +import os +from typing import TYPE_CHECKING + +from docx.opc.constants import CONTENT_TYPE as CT +from docx.opc.packuri import PackURI +from docx.opc.part import XmlPart +from docx.oxml.parser import parse_xml +from docx.styles.styles import Styles + +if TYPE_CHECKING: + from docx.opc.package import OpcPackage + + +class StylesPart(XmlPart): + """Proxy for the styles.xml part containing style definitions for a document or + glossary.""" + + @classmethod + def default(cls, package: OpcPackage) -> StylesPart: + """Return a newly created styles part, containing a default set of elements.""" + partname = PackURI("/word/styles.xml") + content_type = CT.WML_STYLES + element = parse_xml(cls._default_styles_xml()) + return cls(partname, content_type, element, package) + + @property + def styles(self): + """The |_Styles| instance containing the styles ( element proxies) for + this styles part.""" + return Styles(self.element) + + @classmethod + def _default_styles_xml(cls): + """Return a bytestream containing XML for a default styles part.""" + path = os.path.join(os.path.split(__file__)[0], "..", "templates", "default-styles.xml") + with open(path, "rb") as f: + xml_bytes = f.read() + return xml_bytes diff --git a/intelliaide/vendor/docx/py.typed b/intelliaide/vendor/docx/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/intelliaide/vendor/docx/section.py b/intelliaide/vendor/docx/section.py new file mode 100644 index 0000000..982a143 --- /dev/null +++ b/intelliaide/vendor/docx/section.py @@ -0,0 +1,479 @@ +"""The |Section| object and related proxy classes.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Iterator, List, Sequence, overload + +from docx.blkcntnr import BlockItemContainer +from docx.enum.section import WD_HEADER_FOOTER +from docx.oxml.text.paragraph import CT_P +from docx.parts.hdrftr import FooterPart, HeaderPart +from docx.shared import lazyproperty +from docx.table import Table +from docx.text.paragraph import Paragraph + +if TYPE_CHECKING: + from docx.enum.section import WD_ORIENTATION, WD_SECTION_START + from docx.oxml.document import CT_Document + from docx.oxml.section import CT_SectPr + from docx.parts.document import DocumentPart + from docx.parts.story import StoryPart + from docx.shared import Length + + +class Section: + """Document section, providing access to section and page setup settings. + + Also provides access to headers and footers. + """ + + def __init__(self, sectPr: CT_SectPr, document_part: DocumentPart): + super(Section, self).__init__() + self._sectPr = sectPr + self._document_part = document_part + + @property + def bottom_margin(self) -> Length | None: + """Read/write. Bottom margin for pages in this section, in EMU. + + `None` when no bottom margin has been specified. Assigning |None| removes any + bottom-margin setting. + """ + return self._sectPr.bottom_margin + + @bottom_margin.setter + def bottom_margin(self, value: int | Length | None): + self._sectPr.bottom_margin = value + + @property + def different_first_page_header_footer(self) -> bool: + """True if this section displays a distinct first-page header and footer. + + Read/write. The definition of the first-page header and footer are accessed + using :attr:`.first_page_header` and :attr:`.first_page_footer` respectively. + """ + return self._sectPr.titlePg_val + + @different_first_page_header_footer.setter + def different_first_page_header_footer(self, value: bool): + self._sectPr.titlePg_val = value + + @property + def even_page_footer(self) -> _Footer: + """|_Footer| object defining footer content for even pages. + + The content of this footer definition is ignored unless the document setting + :attr:`~.Settings.odd_and_even_pages_header_footer` is set True. + """ + return _Footer(self._sectPr, self._document_part, WD_HEADER_FOOTER.EVEN_PAGE) + + @property + def even_page_header(self) -> _Header: + """|_Header| object defining header content for even pages. + + The content of this header definition is ignored unless the document setting + :attr:`~.Settings.odd_and_even_pages_header_footer` is set True. + """ + return _Header(self._sectPr, self._document_part, WD_HEADER_FOOTER.EVEN_PAGE) + + @property + def first_page_footer(self) -> _Footer: + """|_Footer| object defining footer content for the first page of this section. + + The content of this footer definition is ignored unless the property + :attr:`.different_first_page_header_footer` is set True. + """ + return _Footer(self._sectPr, self._document_part, WD_HEADER_FOOTER.FIRST_PAGE) + + @property + def first_page_header(self) -> _Header: + """|_Header| object defining header content for the first page of this section. + + The content of this header definition is ignored unless the property + :attr:`.different_first_page_header_footer` is set True. + """ + return _Header(self._sectPr, self._document_part, WD_HEADER_FOOTER.FIRST_PAGE) + + @lazyproperty + def footer(self) -> _Footer: + """|_Footer| object representing default page footer for this section. + + The default footer is used for odd-numbered pages when separate odd/even footers + are enabled. It is used for both odd and even-numbered pages otherwise. + """ + return _Footer(self._sectPr, self._document_part, WD_HEADER_FOOTER.PRIMARY) + + @property + def footer_distance(self) -> Length | None: + """Distance from bottom edge of page to bottom edge of the footer. + + Read/write. |None| if no setting is present in the XML. + """ + return self._sectPr.footer + + @footer_distance.setter + def footer_distance(self, value: int | Length | None): + self._sectPr.footer = value + + @property + def gutter(self) -> Length | None: + """|Length| object representing page gutter size in English Metric Units. + + Read/write. The page gutter is extra spacing added to the `inner` margin to + ensure even margins after page binding. Generally only used in book-bound + documents with double-sided and facing pages. + + This setting applies to all pages in this section. + + """ + return self._sectPr.gutter + + @gutter.setter + def gutter(self, value: int | Length | None): + self._sectPr.gutter = value + + @lazyproperty + def header(self) -> _Header: + """|_Header| object representing default page header for this section. + + The default header is used for odd-numbered pages when separate odd/even headers + are enabled. It is used for both odd and even-numbered pages otherwise. + """ + return _Header(self._sectPr, self._document_part, WD_HEADER_FOOTER.PRIMARY) + + @property + def header_distance(self) -> Length | None: + """Distance from top edge of page to top edge of header. + + Read/write. |None| if no setting is present in the XML. Assigning |None| causes + default value to be used. + """ + return self._sectPr.header + + @header_distance.setter + def header_distance(self, value: int | Length | None): + self._sectPr.header = value + + def iter_inner_content(self) -> Iterator[Paragraph | Table]: + """Generate each Paragraph or Table object in this `section`. + + Items appear in document order. + """ + for element in self._sectPr.iter_inner_content(): + yield (Paragraph(element, self) if isinstance(element, CT_P) else Table(element, self)) + + @property + def left_margin(self) -> Length | None: + """|Length| object representing the left margin for all pages in this section in + English Metric Units.""" + return self._sectPr.left_margin + + @left_margin.setter + def left_margin(self, value: int | Length | None): + self._sectPr.left_margin = value + + @property + def orientation(self) -> WD_ORIENTATION: + """:ref:`WdOrientation` member specifying page orientation for this section. + + One of ``WD_ORIENT.PORTRAIT`` or ``WD_ORIENT.LANDSCAPE``. + """ + return self._sectPr.orientation + + @orientation.setter + def orientation(self, value: WD_ORIENTATION | None): + self._sectPr.orientation = value + + @property + def page_height(self) -> Length | None: + """Total page height used for this section. + + This value is inclusive of all edge spacing values such as margins. + + Page orientation is taken into account, so for example, its expected value + would be ``Inches(8.5)`` for letter-sized paper when orientation is landscape. + """ + return self._sectPr.page_height + + @page_height.setter + def page_height(self, value: Length | None): + self._sectPr.page_height = value + + @property + def page_width(self) -> Length | None: + """Total page width used for this section. + + This value is like "paper size" and includes all edge spacing values such as + margins. + + Page orientation is taken into account, so for example, its expected value + would be ``Inches(11)`` for letter-sized paper when orientation is landscape. + """ + return self._sectPr.page_width + + @page_width.setter + def page_width(self, value: Length | None): + self._sectPr.page_width = value + + @property + def part(self) -> StoryPart: + return self._document_part + + @property + def right_margin(self) -> Length | None: + """|Length| object representing the right margin for all pages in this section + in English Metric Units.""" + return self._sectPr.right_margin + + @right_margin.setter + def right_margin(self, value: Length | None): + self._sectPr.right_margin = value + + @property + def start_type(self) -> WD_SECTION_START: + """Type of page-break (if any) inserted at the start of this section. + + For exmple, ``WD_SECTION_START.ODD_PAGE`` if the section should begin on the + next odd page, possibly inserting two page-breaks instead of one. + """ + return self._sectPr.start_type + + @start_type.setter + def start_type(self, value: WD_SECTION_START | None): + self._sectPr.start_type = value + + @property + def top_margin(self) -> Length | None: + """|Length| object representing the top margin for all pages in this section in + English Metric Units.""" + return self._sectPr.top_margin + + @top_margin.setter + def top_margin(self, value: Length | None): + self._sectPr.top_margin = value + + +class Sections(Sequence[Section]): + """Sequence of |Section| objects corresponding to the sections in the document. + + Supports ``len()``, iteration, and indexed access. + """ + + def __init__(self, document_elm: CT_Document, document_part: DocumentPart): + super(Sections, self).__init__() + self._document_elm = document_elm + self._document_part = document_part + + @overload + def __getitem__(self, key: int) -> Section: ... + + @overload + def __getitem__(self, key: slice) -> List[Section]: ... + + def __getitem__(self, key: int | slice) -> Section | List[Section]: + if isinstance(key, slice): + return [ + Section(sectPr, self._document_part) + for sectPr in self._document_elm.sectPr_lst[key] + ] + return Section(self._document_elm.sectPr_lst[key], self._document_part) + + def __iter__(self) -> Iterator[Section]: + for sectPr in self._document_elm.sectPr_lst: + yield Section(sectPr, self._document_part) + + def __len__(self) -> int: + return len(self._document_elm.sectPr_lst) + + +class _BaseHeaderFooter(BlockItemContainer): + """Base class for header and footer classes.""" + + def __init__( + self, + sectPr: CT_SectPr, + document_part: DocumentPart, + header_footer_index: WD_HEADER_FOOTER, + ): + self._sectPr = sectPr + self._document_part = document_part + self._hdrftr_index = header_footer_index + + @property + def is_linked_to_previous(self) -> bool: + """``True`` if this header/footer uses the definition from the prior section. + + ``False`` if this header/footer has an explicit definition. + + Assigning ``True`` to this property removes the header/footer definition for + this section, causing it to "inherit" the corresponding definition of the prior + section. Assigning ``False`` causes a new, empty definition to be added for this + section, but only if no definition is already present. + """ + # ---absence of a header/footer part indicates "linked" behavior--- + return not self._has_definition + + @is_linked_to_previous.setter + def is_linked_to_previous(self, value: bool) -> None: + new_state = bool(value) + # ---do nothing when value is not being changed--- + if new_state == self.is_linked_to_previous: + return + if new_state is True: + self._drop_definition() + else: + self._add_definition() + + @property + def part(self) -> HeaderPart | FooterPart: + """The |HeaderPart| or |FooterPart| for this header/footer. + + This overrides `BlockItemContainer.part` and is required to support image + insertion and perhaps other content like hyperlinks. + """ + # ---should not appear in documentation; + # ---not an interface property, even though public + return self._get_or_add_definition() + + def _add_definition(self) -> HeaderPart | FooterPart: + """Return newly-added header/footer part.""" + raise NotImplementedError("must be implemented by each subclass") + + @property + def _definition(self) -> HeaderPart | FooterPart: + """|HeaderPart| or |FooterPart| object containing header/footer content.""" + raise NotImplementedError("must be implemented by each subclass") + + def _drop_definition(self) -> None: + """Remove header/footer part containing the definition of this header/footer.""" + raise NotImplementedError("must be implemented by each subclass") + + @property + def _element(self): + """`w:hdr` or `w:ftr` element, root of header/footer part.""" + return self._get_or_add_definition().element + + def _get_or_add_definition(self) -> HeaderPart | FooterPart: + """Return HeaderPart or FooterPart object for this section. + + If this header/footer inherits its content, the part for the prior header/footer + is returned; this process continue recursively until a definition is found. If + the definition cannot be inherited (because the header/footer belongs to the + first section), a new definition is added for that first section and then + returned. + """ + # ---note this method is called recursively to access inherited definitions--- + # ---case-1: definition is not inherited--- + if self._has_definition: + return self._definition + # ---case-2: definition is inherited and belongs to second-or-later section--- + prior_headerfooter = self._prior_headerfooter + if prior_headerfooter: + return prior_headerfooter._get_or_add_definition() + # ---case-3: definition is inherited, but belongs to first section--- + return self._add_definition() + + @property + def _has_definition(self) -> bool: + """True if this header/footer has a related part containing its definition.""" + raise NotImplementedError("must be implemented by each subclass") + + @property + def _prior_headerfooter(self) -> _Header | _Footer | None: + """|_Header| or |_Footer| proxy on prior sectPr element. + + Returns None if this is first section. + """ + raise NotImplementedError("must be implemented by each subclass") + + +class _Footer(_BaseHeaderFooter): + """Page footer, used for all three types (default, even-page, and first-page). + + Note that, like a document or table cell, a footer must contain a minimum of one + paragraph and a new or otherwise "empty" footer contains a single empty paragraph. + This first paragraph can be accessed as `footer.paragraphs[0]` for purposes of + adding content to it. Using :meth:`add_paragraph()` by itself to add content will + leave an empty paragraph above the newly added one. + """ + + def _add_definition(self) -> FooterPart: + """Return newly-added footer part.""" + footer_part, rId = self._document_part.add_footer_part() + self._sectPr.add_footerReference(self._hdrftr_index, rId) + return footer_part + + @property + def _definition(self): + """|FooterPart| object containing content of this footer.""" + footerReference = self._sectPr.get_footerReference(self._hdrftr_index) + # -- currently this is never called when `._has_definition` evaluates False -- + assert footerReference is not None + return self._document_part.footer_part(footerReference.rId) + + def _drop_definition(self): + """Remove footer definition (footer part) associated with this section.""" + rId = self._sectPr.remove_footerReference(self._hdrftr_index) + self._document_part.drop_rel(rId) + + @property + def _has_definition(self) -> bool: + """True if a footer is defined for this section.""" + footerReference = self._sectPr.get_footerReference(self._hdrftr_index) + return footerReference is not None + + @property + def _prior_headerfooter(self): + """|_Footer| proxy on prior sectPr element or None if this is first section.""" + preceding_sectPr = self._sectPr.preceding_sectPr + return ( + None + if preceding_sectPr is None + else _Footer(preceding_sectPr, self._document_part, self._hdrftr_index) + ) + + +class _Header(_BaseHeaderFooter): + """Page header, used for all three types (default, even-page, and first-page). + + Note that, like a document or table cell, a header must contain a minimum of one + paragraph and a new or otherwise "empty" header contains a single empty paragraph. + This first paragraph can be accessed as `header.paragraphs[0]` for purposes of + adding content to it. Using :meth:`add_paragraph()` by itself to add content will + leave an empty paragraph above the newly added one. + """ + + def _add_definition(self): + """Return newly-added header part.""" + header_part, rId = self._document_part.add_header_part() + self._sectPr.add_headerReference(self._hdrftr_index, rId) + return header_part + + @property + def _definition(self): + """|HeaderPart| object containing content of this header.""" + headerReference = self._sectPr.get_headerReference(self._hdrftr_index) + # -- currently this is never called when `._has_definition` evaluates False -- + assert headerReference is not None + return self._document_part.header_part(headerReference.rId) + + def _drop_definition(self): + """Remove header definition associated with this section.""" + rId = self._sectPr.remove_headerReference(self._hdrftr_index) + self._document_part.drop_header_part(rId) + + @property + def _has_definition(self) -> bool: + """True if a header is explicitly defined for this section.""" + headerReference = self._sectPr.get_headerReference(self._hdrftr_index) + return headerReference is not None + + @property + def _prior_headerfooter(self): + """|_Header| proxy on prior sectPr element or None if this is first section.""" + preceding_sectPr = self._sectPr.preceding_sectPr + return ( + None + if preceding_sectPr is None + else _Header(preceding_sectPr, self._document_part, self._hdrftr_index) + ) diff --git a/intelliaide/vendor/docx/settings.py b/intelliaide/vendor/docx/settings.py new file mode 100644 index 0000000..0a5aa2f --- /dev/null +++ b/intelliaide/vendor/docx/settings.py @@ -0,0 +1,35 @@ +"""Settings object, providing access to document-level settings.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, cast + +from docx.shared import ElementProxy + +if TYPE_CHECKING: + import docx.types as t + from docx.oxml.settings import CT_Settings + from docx.oxml.xmlchemy import BaseOxmlElement + + +class Settings(ElementProxy): + """Provides access to document-level settings for a document. + + Accessed using the :attr:`.Document.settings` property. + """ + + def __init__(self, element: BaseOxmlElement, parent: t.ProvidesXmlPart | None = None): + super().__init__(element, parent) + self._settings = cast("CT_Settings", element) + + @property + def odd_and_even_pages_header_footer(self) -> bool: + """True if this document has distinct odd and even page headers and footers. + + Read/write. + """ + return self._settings.evenAndOddHeaders_val + + @odd_and_even_pages_header_footer.setter + def odd_and_even_pages_header_footer(self, value: bool): + self._settings.evenAndOddHeaders_val = value diff --git a/intelliaide/vendor/docx/shape.py b/intelliaide/vendor/docx/shape.py new file mode 100644 index 0000000..cd35deb --- /dev/null +++ b/intelliaide/vendor/docx/shape.py @@ -0,0 +1,103 @@ +"""Objects related to shapes. + +A shape is a visual object that appears on the drawing layer of a document. +""" + +from __future__ import annotations + +from typing import TYPE_CHECKING + +from docx.enum.shape import WD_INLINE_SHAPE +from docx.oxml.ns import nsmap +from docx.shared import Parented + +if TYPE_CHECKING: + from docx.oxml.document import CT_Body + from docx.oxml.shape import CT_Inline + from docx.parts.story import StoryPart + from docx.shared import Length + + +class InlineShapes(Parented): + """Sequence of |InlineShape| instances, supporting len(), iteration, and indexed access.""" + + def __init__(self, body_elm: CT_Body, parent: StoryPart): + super(InlineShapes, self).__init__(parent) + self._body = body_elm + + def __getitem__(self, idx: int): + """Provide indexed access, e.g. 'inline_shapes[idx]'.""" + try: + inline = self._inline_lst[idx] + except IndexError: + msg = "inline shape index [%d] out of range" % idx + raise IndexError(msg) + + return InlineShape(inline) + + def __iter__(self): + return (InlineShape(inline) for inline in self._inline_lst) + + def __len__(self): + return len(self._inline_lst) + + @property + def _inline_lst(self): + body = self._body + xpath = "//w:p/w:r/w:drawing/wp:inline" + return body.xpath(xpath) + + +class InlineShape: + """Proxy for an ```` element, representing the container for an inline + graphical object.""" + + def __init__(self, inline: CT_Inline): + super(InlineShape, self).__init__() + self._inline = inline + + @property + def height(self) -> Length: + """Read/write. + + The display height of this inline shape as an |Emu| instance. + """ + return self._inline.extent.cy + + @height.setter + def height(self, cy: Length): + self._inline.extent.cy = cy + self._inline.graphic.graphicData.pic.spPr.cy = cy + + @property + def type(self): + """The type of this inline shape as a member of + ``docx.enum.shape.WD_INLINE_SHAPE``, e.g. ``LINKED_PICTURE``. + + Read-only. + """ + graphicData = self._inline.graphic.graphicData + uri = graphicData.uri + if uri == nsmap["pic"]: + blip = graphicData.pic.blipFill.blip + if blip.link is not None: + return WD_INLINE_SHAPE.LINKED_PICTURE + return WD_INLINE_SHAPE.PICTURE + if uri == nsmap["c"]: + return WD_INLINE_SHAPE.CHART + if uri == nsmap["dgm"]: + return WD_INLINE_SHAPE.SMART_ART + return WD_INLINE_SHAPE.NOT_IMPLEMENTED + + @property + def width(self): + """Read/write. + + The display width of this inline shape as an |Emu| instance. + """ + return self._inline.extent.cx + + @width.setter + def width(self, cx: Length): + self._inline.extent.cx = cx + self._inline.graphic.graphicData.pic.spPr.cx = cx diff --git a/intelliaide/vendor/docx/shared.py b/intelliaide/vendor/docx/shared.py new file mode 100644 index 0000000..6c12dc9 --- /dev/null +++ b/intelliaide/vendor/docx/shared.py @@ -0,0 +1,382 @@ +"""Objects shared by docx modules.""" + +from __future__ import annotations + +import functools +from typing import ( + TYPE_CHECKING, + Any, + Callable, + Generic, + Iterator, + List, + Tuple, + TypeVar, + cast, +) + +if TYPE_CHECKING: + import docx.types as t + from docx.opc.part import XmlPart + from docx.oxml.xmlchemy import BaseOxmlElement + from docx.parts.story import StoryPart + + +class Length(int): + """Base class for length constructor classes Inches, Cm, Mm, Px, and Emu. + + Behaves as an int count of English Metric Units, 914,400 to the inch, 36,000 to the + mm. Provides convenience unit conversion methods in the form of read-only + properties. Immutable. + """ + + _EMUS_PER_INCH = 914400 + _EMUS_PER_CM = 360000 + _EMUS_PER_MM = 36000 + _EMUS_PER_PT = 12700 + _EMUS_PER_TWIP = 635 + + def __new__(cls, emu: int): + return int.__new__(cls, emu) + + @property + def cm(self): + """The equivalent length expressed in centimeters (float).""" + return self / float(self._EMUS_PER_CM) + + @property + def emu(self): + """The equivalent length expressed in English Metric Units (int).""" + return self + + @property + def inches(self): + """The equivalent length expressed in inches (float).""" + return self / float(self._EMUS_PER_INCH) + + @property + def mm(self): + """The equivalent length expressed in millimeters (float).""" + return self / float(self._EMUS_PER_MM) + + @property + def pt(self): + """Floating point length in points.""" + return self / float(self._EMUS_PER_PT) + + @property + def twips(self): + """The equivalent length expressed in twips (int).""" + return int(round(self / float(self._EMUS_PER_TWIP))) + + +class Inches(Length): + """Convenience constructor for length in inches, e.g. ``width = Inches(0.5)``.""" + + def __new__(cls, inches: float): + emu = int(inches * Length._EMUS_PER_INCH) + return Length.__new__(cls, emu) + + +class Cm(Length): + """Convenience constructor for length in centimeters, e.g. ``height = Cm(12)``.""" + + def __new__(cls, cm: float): + emu = int(cm * Length._EMUS_PER_CM) + return Length.__new__(cls, emu) + + +class Emu(Length): + """Convenience constructor for length in English Metric Units, e.g. ``width = + Emu(457200)``.""" + + def __new__(cls, emu: int): + return Length.__new__(cls, int(emu)) + + +class Mm(Length): + """Convenience constructor for length in millimeters, e.g. ``width = Mm(240.5)``.""" + + def __new__(cls, mm: float): + emu = int(mm * Length._EMUS_PER_MM) + return Length.__new__(cls, emu) + + +class Pt(Length): + """Convenience value class for specifying a length in points.""" + + def __new__(cls, points: float): + emu = int(points * Length._EMUS_PER_PT) + return Length.__new__(cls, emu) + + +class Twips(Length): + """Convenience constructor for length in twips, e.g. ``width = Twips(42)``. + + A twip is a twentieth of a point, 635 EMU. + """ + + def __new__(cls, twips: float): + emu = int(twips * Length._EMUS_PER_TWIP) + return Length.__new__(cls, emu) + + +class RGBColor(Tuple[int, int, int]): + """Immutable value object defining a particular RGB color.""" + + def __new__(cls, r: int, g: int, b: int): + msg = "RGBColor() takes three integer values 0-255" + for val in (r, g, b): + if not isinstance(val, int): # pyright: ignore[reportUnnecessaryIsInstance] + raise TypeError(msg) + if val < 0 or val > 255: + raise ValueError(msg) + return super(RGBColor, cls).__new__(cls, (r, g, b)) + + def __repr__(self): + return "RGBColor(0x%02x, 0x%02x, 0x%02x)" % self + + def __str__(self): + """Return a hex string rgb value, like '3C2F80'.""" + return "%02X%02X%02X" % self + + @classmethod + def from_string(cls, rgb_hex_str: str) -> RGBColor: + """Return a new instance from an RGB color hex string like ``'3C2F80'``.""" + r = int(rgb_hex_str[:2], 16) + g = int(rgb_hex_str[2:4], 16) + b = int(rgb_hex_str[4:], 16) + return cls(r, g, b) + + +T = TypeVar("T") + + +class lazyproperty(Generic[T]): + """Decorator like @property, but evaluated only on first access. + + Like @property, this can only be used to decorate methods having only a `self` + parameter, and is accessed like an attribute on an instance, i.e. trailing + parentheses are not used. Unlike @property, the decorated method is only evaluated + on first access; the resulting value is cached and that same value returned on + second and later access without re-evaluation of the method. + + Like @property, this class produces a *data descriptor* object, which is stored in + the __dict__ of the *class* under the name of the decorated method ('fget' + nominally). The cached value is stored in the __dict__ of the *instance* under that + same name. + + Because it is a data descriptor (as opposed to a *non-data descriptor*), its + `__get__()` method is executed on each access of the decorated attribute; the + __dict__ item of the same name is "shadowed" by the descriptor. + + While this may represent a performance improvement over a property, its greater + benefit may be its other characteristics. One common use is to construct + collaborator objects, removing that "real work" from the constructor, while still + only executing once. It also de-couples client code from any sequencing + considerations; if it's accessed from more than one location, it's assured it will + be ready whenever needed. + + Loosely based on: https://stackoverflow.com/a/6849299/1902513. + + A lazyproperty is read-only. There is no counterpart to the optional "setter" (or + deleter) behavior of an @property. This is critically important to maintaining its + immutability and idempotence guarantees. Attempting to assign to a lazyproperty + raises AttributeError unconditionally. + + The parameter names in the methods below correspond to this usage example:: + + class Obj(object) + + @lazyproperty + def fget(self): + return 'some result' + + obj = Obj() + + Not suitable for wrapping a function (as opposed to a method) because it is not + callable.""" + + def __init__(self, fget: Callable[..., T]) -> None: + """*fget* is the decorated method (a "getter" function). + + A lazyproperty is read-only, so there is only an *fget* function (a regular + @property can also have an fset and fdel function). This name was chosen for + consistency with Python's `property` class which uses this name for the + corresponding parameter. + """ + # --- maintain a reference to the wrapped getter method + self._fget = fget + # --- and store the name of that decorated method + self._name = fget.__name__ + # --- adopt fget's __name__, __doc__, and other attributes + functools.update_wrapper(self, fget) # pyright: ignore + + def __get__(self, obj: Any, type: Any = None) -> T: + """Called on each access of 'fget' attribute on class or instance. + + *self* is this instance of a lazyproperty descriptor "wrapping" the property + method it decorates (`fget`, nominally). + + *obj* is the "host" object instance when the attribute is accessed from an + object instance, e.g. `obj = Obj(); obj.fget`. *obj* is None when accessed on + the class, e.g. `Obj.fget`. + + *type* is the class hosting the decorated getter method (`fget`) on both class + and instance attribute access. + """ + # --- when accessed on class, e.g. Obj.fget, just return this descriptor + # --- instance (patched above to look like fget). + if obj is None: + return self # type: ignore + + # --- when accessed on instance, start by checking instance __dict__ for + # --- item with key matching the wrapped function's name + value = obj.__dict__.get(self._name) + if value is None: + # --- on first access, the __dict__ item will be absent. Evaluate fget() + # --- and store that value in the (otherwise unused) host-object + # --- __dict__ value of same name ('fget' nominally) + value = self._fget(obj) + obj.__dict__[self._name] = value + return cast(T, value) + + def __set__(self, obj: Any, value: Any) -> None: + """Raises unconditionally, to preserve read-only behavior. + + This decorator is intended to implement immutable (and idempotent) object + attributes. For that reason, assignment to this property must be explicitly + prevented. + + If this __set__ method was not present, this descriptor would become a + *non-data descriptor*. That would be nice because the cached value would be + accessed directly once set (__dict__ attrs have precedence over non-data + descriptors on instance attribute lookup). The problem is, there would be + nothing to stop assignment to the cached value, which would overwrite the result + of `fget()` and break both the immutability and idempotence guarantees of this + decorator. + + The performance with this __set__() method in place was roughly 0.4 usec per + access when measured on a 2.8GHz development machine; so quite snappy and + probably not a rich target for optimization efforts. + """ + raise AttributeError("can't set attribute") + + +def write_only_property(f: Callable[[Any, Any], None]): + """@write_only_property decorator. + + Creates a property (descriptor attribute) that accepts assignment, but not getattr + (use in an expression). + """ + docstring = f.__doc__ + + return property(fset=f, doc=docstring) + + +class ElementProxy: + """Base class for lxml element proxy classes. + + An element proxy class is one whose primary responsibilities are fulfilled by + manipulating the attributes and child elements of an XML element. They are the most + common type of class in python-docx other than custom element (oxml) classes. + """ + + def __init__(self, element: BaseOxmlElement, parent: t.ProvidesXmlPart | None = None): + self._element = element + self._parent = parent + + def __eq__(self, other: object): + """Return |True| if this proxy object refers to the same oxml element as does + `other`. + + ElementProxy objects are value objects and should maintain no mutable local + state. Equality for proxy objects is defined as referring to the same XML + element, whether or not they are the same proxy object instance. + """ + if not isinstance(other, ElementProxy): + return False + return self._element is other._element + + def __ne__(self, other: object): + if not isinstance(other, ElementProxy): + return True + return self._element is not other._element + + @property + def element(self): + """The lxml element proxied by this object.""" + return self._element + + @property + def part(self) -> XmlPart: + """The package part containing this object.""" + if self._parent is None: + raise ValueError("part is not accessible from this element") + return self._parent.part + + +class Parented: + """Provides common services for document elements that occur below a part but may + occasionally require an ancestor object to provide a service, such as add or drop a + relationship. + + Provides ``self._parent`` attribute to subclasses. + """ + + def __init__(self, parent: t.ProvidesXmlPart): + self._parent = parent + + @property + def part(self) -> XmlPart: + """The package part containing this object.""" + return self._parent.part + + +class StoryChild: + """A document element within a story part. + + Story parts include DocumentPart and Header/FooterPart and can contain block items + (paragraphs and tables). Items from the block-item subtree occasionally require an + ancestor object to provide access to part-level or package-level items like styles + or images or to add or drop a relationship. + + Provides `self._parent` attribute to subclasses. + """ + + def __init__(self, parent: t.ProvidesStoryPart): + self._parent = parent + + @property + def part(self) -> StoryPart: + """The package part containing this object.""" + return self._parent.part + + +class TextAccumulator: + """Accepts `str` fragments and joins them together, in order, on `.pop(). + + Handy when text in a stream is broken up arbitrarily and you want to join it back + together within certain bounds. The optional `separator` argument determines how + the text fragments are punctuated, defaulting to the empty string. + """ + + def __init__(self, separator: str = ""): + self._separator = separator + self._texts: List[str] = [] + + def push(self, text: str) -> None: + """Add a text fragment to the accumulator.""" + self._texts.append(text) + + def pop(self) -> Iterator[str]: + """Generate sero-or-one str from those accumulated. + + Using `yield from accum.pop()` in a generator setting avoids producing an empty + string when no text is in the accumulator. + """ + if not self._texts: + return + text = self._separator.join(self._texts) + self._texts.clear() + yield text diff --git a/intelliaide/vendor/docx/styles/__init__.py b/intelliaide/vendor/docx/styles/__init__.py new file mode 100644 index 0000000..6358baf --- /dev/null +++ b/intelliaide/vendor/docx/styles/__init__.py @@ -0,0 +1,40 @@ +"""Sub-package module for docx.styles sub-package.""" + +from __future__ import annotations + +from typing import Dict + + +class BabelFish: + """Translates special-case style names from UI name (e.g. Heading 1) to + internal/styles.xml name (e.g. heading 1) and back.""" + + style_aliases = ( + ("Caption", "caption"), + ("Footer", "footer"), + ("Header", "header"), + ("Heading 1", "heading 1"), + ("Heading 2", "heading 2"), + ("Heading 3", "heading 3"), + ("Heading 4", "heading 4"), + ("Heading 5", "heading 5"), + ("Heading 6", "heading 6"), + ("Heading 7", "heading 7"), + ("Heading 8", "heading 8"), + ("Heading 9", "heading 9"), + ) + + internal_style_names: Dict[str, str] = dict(style_aliases) + ui_style_names = {item[1]: item[0] for item in style_aliases} + + @classmethod + def ui2internal(cls, ui_style_name: str) -> str: + """Return the internal style name corresponding to `ui_style_name`, such as + 'heading 1' for 'Heading 1'.""" + return cls.internal_style_names.get(ui_style_name, ui_style_name) + + @classmethod + def internal2ui(cls, internal_style_name: str) -> str: + """Return the user interface style name corresponding to `internal_style_name`, + such as 'Heading 1' for 'heading 1'.""" + return cls.ui_style_names.get(internal_style_name, internal_style_name) diff --git a/intelliaide/vendor/docx/styles/latent.py b/intelliaide/vendor/docx/styles/latent.py new file mode 100644 index 0000000..c9db62f --- /dev/null +++ b/intelliaide/vendor/docx/styles/latent.py @@ -0,0 +1,198 @@ +"""Latent style-related objects.""" + +from docx.shared import ElementProxy +from docx.styles import BabelFish + + +class LatentStyles(ElementProxy): + """Provides access to the default behaviors for latent styles in this document and + to the collection of |_LatentStyle| objects that define overrides of those defaults + for a particular named latent style.""" + + def __getitem__(self, key): + """Enables dictionary-style access to a latent style by name.""" + style_name = BabelFish.ui2internal(key) + lsdException = self._element.get_by_name(style_name) + if lsdException is None: + raise KeyError("no latent style with name '%s'" % key) + return _LatentStyle(lsdException) + + def __iter__(self): + return (_LatentStyle(ls) for ls in self._element.lsdException_lst) + + def __len__(self): + return len(self._element.lsdException_lst) + + def add_latent_style(self, name): + """Return a newly added |_LatentStyle| object to override the inherited defaults + defined in this latent styles object for the built-in style having `name`.""" + lsdException = self._element.add_lsdException() + lsdException.name = BabelFish.ui2internal(name) + return _LatentStyle(lsdException) + + @property + def default_priority(self): + """Integer between 0 and 99 inclusive specifying the default sort order for + latent styles in style lists and the style gallery. + + |None| if no value is assigned, which causes Word to use the default value 99. + """ + return self._element.defUIPriority + + @default_priority.setter + def default_priority(self, value): + self._element.defUIPriority = value + + @property + def default_to_hidden(self): + """Boolean specifying whether the default behavior for latent styles is to be + hidden. + + A hidden style does not appear in the recommended list or in the style gallery. + """ + return self._element.bool_prop("defSemiHidden") + + @default_to_hidden.setter + def default_to_hidden(self, value): + self._element.set_bool_prop("defSemiHidden", value) + + @property + def default_to_locked(self): + """Boolean specifying whether the default behavior for latent styles is to be + locked. + + A locked style does not appear in the styles panel or the style gallery and + cannot be applied to document content. This behavior is only active when + formatting protection is turned on for the document (via the Developer menu). + """ + return self._element.bool_prop("defLockedState") + + @default_to_locked.setter + def default_to_locked(self, value): + self._element.set_bool_prop("defLockedState", value) + + @property + def default_to_quick_style(self): + """Boolean specifying whether the default behavior for latent styles is to + appear in the style gallery when not hidden.""" + return self._element.bool_prop("defQFormat") + + @default_to_quick_style.setter + def default_to_quick_style(self, value): + self._element.set_bool_prop("defQFormat", value) + + @property + def default_to_unhide_when_used(self): + """Boolean specifying whether the default behavior for latent styles is to be + unhidden when first applied to content.""" + return self._element.bool_prop("defUnhideWhenUsed") + + @default_to_unhide_when_used.setter + def default_to_unhide_when_used(self, value): + self._element.set_bool_prop("defUnhideWhenUsed", value) + + @property + def load_count(self): + """Integer specifying the number of built-in styles to initialize to the + defaults specified in this |LatentStyles| object. + + |None| if there is no setting in the XML (very uncommon). The default Word 2011 + template sets this value to 276, accounting for the built-in styles in Word + 2010. + """ + return self._element.count + + @load_count.setter + def load_count(self, value): + self._element.count = value + + +class _LatentStyle(ElementProxy): + """Proxy for an `w:lsdException` element, which specifies display behaviors for a + built-in style when no definition for that style is stored yet in the `styles.xml` + part. + + The values in this element override the defaults specified in the parent + `w:latentStyles` element. + """ + + def delete(self): + """Remove this latent style definition such that the defaults defined in the + containing |LatentStyles| object provide the effective value for each of its + attributes. + + Attempting to access any attributes on this object after calling this method + will raise |AttributeError|. + """ + self._element.delete() + self._element = None + + @property + def hidden(self): + """Tri-state value specifying whether this latent style should appear in the + recommended list. + + |None| indicates the effective value is inherited from the parent + ```` element. + """ + return self._element.on_off_prop("semiHidden") + + @hidden.setter + def hidden(self, value): + self._element.set_on_off_prop("semiHidden", value) + + @property + def locked(self): + """Tri-state value specifying whether this latent styles is locked. + + A locked style does not appear in the styles panel or the style gallery and + cannot be applied to document content. This behavior is only active when + formatting protection is turned on for the document (via the Developer menu). + """ + return self._element.on_off_prop("locked") + + @locked.setter + def locked(self, value): + self._element.set_on_off_prop("locked", value) + + @property + def name(self): + """The name of the built-in style this exception applies to.""" + return BabelFish.internal2ui(self._element.name) + + @property + def priority(self): + """The integer sort key for this latent style in the Word UI.""" + return self._element.uiPriority + + @priority.setter + def priority(self, value): + self._element.uiPriority = value + + @property + def quick_style(self): + """Tri-state value specifying whether this latent style should appear in the + Word styles gallery when not hidden. + + |None| indicates the effective value should be inherited from the default values + in its parent |LatentStyles| object. + """ + return self._element.on_off_prop("qFormat") + + @quick_style.setter + def quick_style(self, value): + self._element.set_on_off_prop("qFormat", value) + + @property + def unhide_when_used(self): + """Tri-state value specifying whether this style should have its :attr:`hidden` + attribute set |False| the next time the style is applied to content. + + |None| indicates the effective value should be inherited from the default + specified by its parent |LatentStyles| object. + """ + return self._element.on_off_prop("unhideWhenUsed") + + @unhide_when_used.setter + def unhide_when_used(self, value): + self._element.set_on_off_prop("unhideWhenUsed", value) diff --git a/intelliaide/vendor/docx/styles/style.py b/intelliaide/vendor/docx/styles/style.py new file mode 100644 index 0000000..aa175ea --- /dev/null +++ b/intelliaide/vendor/docx/styles/style.py @@ -0,0 +1,254 @@ +"""Style object hierarchy.""" + +from __future__ import annotations + +from typing import Type + +from docx.enum.style import WD_STYLE_TYPE +from docx.oxml.styles import CT_Style +from docx.shared import ElementProxy +from docx.styles import BabelFish +from docx.text.font import Font +from docx.text.parfmt import ParagraphFormat + + +def StyleFactory(style_elm: CT_Style) -> BaseStyle: + """Return `Style` object of appropriate |BaseStyle| subclass for `style_elm`.""" + style_cls: Type[BaseStyle] = { + WD_STYLE_TYPE.PARAGRAPH: ParagraphStyle, + WD_STYLE_TYPE.CHARACTER: CharacterStyle, + WD_STYLE_TYPE.TABLE: _TableStyle, + WD_STYLE_TYPE.LIST: _NumberingStyle, + }[style_elm.type] + + return style_cls(style_elm) + + +class BaseStyle(ElementProxy): + """Base class for the various types of style object, paragraph, character, table, + and numbering. + + These properties and methods are inherited by all style objects. + """ + + def __init__(self, style_elm: CT_Style): + super().__init__(style_elm) + self._style_elm = style_elm + + @property + def builtin(self): + """Read-only. + + |True| if this style is a built-in style. |False| indicates it is a custom + (user-defined) style. Note this value is based on the presence of a + `customStyle` attribute in the XML, not on specific knowledge of which styles + are built into Word. + """ + return not self._element.customStyle + + def delete(self): + """Remove this style definition from the document. + + Note that calling this method does not remove or change the style applied to any + document content. Content items having the deleted style will be rendered using + the default style, as is any content with a style not defined in the document. + """ + self._element.delete() + self._element = None + + @property + def hidden(self): + """|True| if display of this style in the style gallery and list of recommended + styles is suppressed. + + |False| otherwise. In order to be shown in the style gallery, this value must be + |False| and :attr:`.quick_style` must be |True|. + """ + return self._element.semiHidden_val + + @hidden.setter + def hidden(self, value): + self._element.semiHidden_val = value + + @property + def locked(self): + """Read/write Boolean. + + |True| if this style is locked. A locked style does not appear in the styles + panel or the style gallery and cannot be applied to document content. This + behavior is only active when formatting protection is turned on for the document + (via the Developer menu). + """ + return self._element.locked_val + + @locked.setter + def locked(self, value): + self._element.locked_val = value + + @property + def name(self): + """The UI name of this style.""" + name = self._element.name_val + if name is None: + return None + return BabelFish.internal2ui(name) + + @name.setter + def name(self, value): + self._element.name_val = value + + @property + def priority(self): + """The integer sort key governing display sequence of this style in the Word UI. + + |None| indicates no setting is defined, causing Word to use the default value of + 0. Style name is used as a secondary sort key to resolve ordering of styles + having the same priority value. + """ + return self._element.uiPriority_val + + @priority.setter + def priority(self, value): + self._element.uiPriority_val = value + + @property + def quick_style(self): + """|True| if this style should be displayed in the style gallery when + :attr:`.hidden` is |False|. + + Read/write Boolean. + """ + return self._element.qFormat_val + + @quick_style.setter + def quick_style(self, value): + self._element.qFormat_val = value + + @property + def style_id(self) -> str: + """The unique key name (string) for this style. + + This value is subject to rewriting by Word and should generally not be changed + unless you are familiar with the internals involved. + """ + return self._style_elm.styleId + + @style_id.setter + def style_id(self, value): + self._element.styleId = value + + @property + def type(self): + """Member of :ref:`WdStyleType` corresponding to the type of this style, e.g. + ``WD_STYLE_TYPE.PARAGRAPH``.""" + type = self._style_elm.type + if type is None: + return WD_STYLE_TYPE.PARAGRAPH + return type + + @property + def unhide_when_used(self): + """|True| if an application should make this style visible the next time it is + applied to content. + + False otherwise. Note that |docx| does not automatically unhide a style having + |True| for this attribute when it is applied to content. + """ + return self._element.unhideWhenUsed_val + + @unhide_when_used.setter + def unhide_when_used(self, value): + self._element.unhideWhenUsed_val = value + + +class CharacterStyle(BaseStyle): + """A character style. + + A character style is applied to a |Run| object and primarily provides character- + level formatting via the |Font| object in its :attr:`.font` property. + """ + + @property + def base_style(self): + """Style object this style inherits from or |None| if this style is not based on + another style.""" + base_style = self._element.base_style + if base_style is None: + return None + return StyleFactory(base_style) + + @base_style.setter + def base_style(self, style): + style_id = style.style_id if style is not None else None + self._element.basedOn_val = style_id + + @property + def font(self): + """The |Font| object providing access to the character formatting properties for + this style, such as font name and size.""" + return Font(self._element) + + +# -- just in case someone uses the old name in an extension function -- +_CharacterStyle = CharacterStyle + + +class ParagraphStyle(CharacterStyle): + """A paragraph style. + + A paragraph style provides both character formatting and paragraph formatting such + as indentation and line-spacing. + """ + + def __repr__(self): + return "_ParagraphStyle('%s') id: %s" % (self.name, id(self)) + + @property + def next_paragraph_style(self): + """|_ParagraphStyle| object representing the style to be applied automatically + to a new paragraph inserted after a paragraph of this style. + + Returns self if no next paragraph style is defined. Assigning |None| or `self` + removes the setting such that new paragraphs are created using this same style. + """ + next_style_elm = self._element.next_style + if next_style_elm is None: + return self + if next_style_elm.type != WD_STYLE_TYPE.PARAGRAPH: + return self + return StyleFactory(next_style_elm) + + @next_paragraph_style.setter + def next_paragraph_style(self, style): + if style is None or style.style_id == self.style_id: + self._element._remove_next() + else: + self._element.get_or_add_next().val = style.style_id + + @property + def paragraph_format(self): + """The |ParagraphFormat| object providing access to the paragraph formatting + properties for this style such as indentation.""" + return ParagraphFormat(self._element) + + +# -- just in case someone uses the old name in an extension function -- +_ParagraphStyle = ParagraphStyle + + +class _TableStyle(ParagraphStyle): + """A table style. + + A table style provides character and paragraph formatting for its contents as well + as special table formatting properties. + """ + + def __repr__(self): + return "_TableStyle('%s') id: %s" % (self.name, id(self)) + + +class _NumberingStyle(BaseStyle): + """A numbering style. + + Not yet implemented. + """ diff --git a/intelliaide/vendor/docx/styles/styles.py b/intelliaide/vendor/docx/styles/styles.py new file mode 100644 index 0000000..b05b3eb --- /dev/null +++ b/intelliaide/vendor/docx/styles/styles.py @@ -0,0 +1,136 @@ +"""Styles object, container for all objects in the styles part.""" + +from __future__ import annotations + +from warnings import warn + +from docx.enum.style import WD_STYLE_TYPE +from docx.oxml.styles import CT_Styles +from docx.shared import ElementProxy +from docx.styles import BabelFish +from docx.styles.latent import LatentStyles +from docx.styles.style import BaseStyle, StyleFactory + + +class Styles(ElementProxy): + """Provides access to the styles defined in a document. + + Accessed using the :attr:`.Document.styles` property. Supports ``len()``, iteration, + and dictionary-style access by style name. + """ + + def __init__(self, styles: CT_Styles): + super().__init__(styles) + self._element = styles + + def __contains__(self, name): + """Enables `in` operator on style name.""" + internal_name = BabelFish.ui2internal(name) + return any(style.name_val == internal_name for style in self._element.style_lst) + + def __getitem__(self, key: str): + """Enables dictionary-style access by UI name. + + Lookup by style id is deprecated, triggers a warning, and will be removed in a + near-future release. + """ + style_elm = self._element.get_by_name(BabelFish.ui2internal(key)) + if style_elm is not None: + return StyleFactory(style_elm) + + style_elm = self._element.get_by_id(key) + if style_elm is not None: + msg = "style lookup by style_id is deprecated. Use style name as key instead." + warn(msg, UserWarning, stacklevel=2) + return StyleFactory(style_elm) + + raise KeyError("no style with name '%s'" % key) + + def __iter__(self): + return (StyleFactory(style) for style in self._element.style_lst) + + def __len__(self): + return len(self._element.style_lst) + + def add_style(self, name, style_type, builtin=False): + """Return a newly added style object of `style_type` and identified by `name`. + + A builtin style can be defined by passing True for the optional `builtin` + argument. + """ + style_name = BabelFish.ui2internal(name) + if style_name in self: + raise ValueError("document already contains style '%s'" % name) + style = self._element.add_style_of_type(style_name, style_type, builtin) + return StyleFactory(style) + + def default(self, style_type: WD_STYLE_TYPE): + """Return the default style for `style_type` or |None| if no default is defined + for that type (not common).""" + style = self._element.default_for(style_type) + if style is None: + return None + return StyleFactory(style) + + def get_by_id(self, style_id: str | None, style_type: WD_STYLE_TYPE): + """Return the style of `style_type` matching `style_id`. + + Returns the default for `style_type` if `style_id` is not found or is |None|, or + if the style having `style_id` is not of `style_type`. + """ + if style_id is None: + return self.default(style_type) + return self._get_by_id(style_id, style_type) + + def get_style_id(self, style_or_name, style_type): + """Return the id of the style corresponding to `style_or_name`, or |None| if + `style_or_name` is |None|. + + If `style_or_name` is not a style object, the style is looked up using + `style_or_name` as a style name, raising |ValueError| if no style with that name + is defined. Raises |ValueError| if the target style is not of `style_type`. + """ + if style_or_name is None: + return None + elif isinstance(style_or_name, BaseStyle): + return self._get_style_id_from_style(style_or_name, style_type) + else: + return self._get_style_id_from_name(style_or_name, style_type) + + @property + def latent_styles(self): + """A |LatentStyles| object providing access to the default behaviors for latent + styles and the collection of |_LatentStyle| objects that define overrides of + those defaults for a particular named latent style.""" + return LatentStyles(self._element.get_or_add_latentStyles()) + + def _get_by_id(self, style_id: str | None, style_type: WD_STYLE_TYPE): + """Return the style of `style_type` matching `style_id`. + + Returns the default for `style_type` if `style_id` is not found or if the style + having `style_id` is not of `style_type`. + """ + style = self._element.get_by_id(style_id) if style_id else None + if style is None or style.type != style_type: + return self.default(style_type) + return StyleFactory(style) + + def _get_style_id_from_name(self, style_name: str, style_type: WD_STYLE_TYPE) -> str | None: + """Return the id of the style of `style_type` corresponding to `style_name`. + + Returns |None| if that style is the default style for `style_type`. Raises + |ValueError| if the named style is not found in the document or does not match + `style_type`. + """ + return self._get_style_id_from_style(self[style_name], style_type) + + def _get_style_id_from_style(self, style: BaseStyle, style_type: WD_STYLE_TYPE) -> str | None: + """Id of `style`, or |None| if it is the default style of `style_type`. + + Raises |ValueError| if style is not of `style_type`. + """ + if style.type != style_type: + raise ValueError("assigned style is type %s, need type %s" % (style.type, style_type)) + if style == self.default(style_type): + return None + return style.style_id diff --git a/intelliaide/vendor/docx/table.py b/intelliaide/vendor/docx/table.py new file mode 100644 index 0000000..545c468 --- /dev/null +++ b/intelliaide/vendor/docx/table.py @@ -0,0 +1,537 @@ +"""The |Table| object and related proxy classes.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Iterator, cast, overload + +from typing_extensions import TypeAlias + +from docx.blkcntnr import BlockItemContainer +from docx.enum.style import WD_STYLE_TYPE +from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT +from docx.oxml.simpletypes import ST_Merge +from docx.oxml.table import CT_TblGridCol +from docx.shared import Inches, Parented, StoryChild, lazyproperty + +if TYPE_CHECKING: + import docx.types as t + from docx.enum.table import WD_ROW_HEIGHT_RULE, WD_TABLE_ALIGNMENT, WD_TABLE_DIRECTION + from docx.oxml.table import CT_Row, CT_Tbl, CT_TblPr, CT_Tc + from docx.shared import Length + from docx.styles.style import ( + ParagraphStyle, + _TableStyle, # pyright: ignore[reportPrivateUsage] + ) + +TableParent: TypeAlias = "Table | _Columns | _Rows" + + +class Table(StoryChild): + """Proxy class for a WordprocessingML ```` element.""" + + def __init__(self, tbl: CT_Tbl, parent: t.ProvidesStoryPart): + super(Table, self).__init__(parent) + self._element = tbl + self._tbl = tbl + + def add_column(self, width: Length): + """Return a |_Column| object of `width`, newly added rightmost to the table.""" + tblGrid = self._tbl.tblGrid + gridCol = tblGrid.add_gridCol() + gridCol.w = width + for tr in self._tbl.tr_lst: + tc = tr.add_tc() + tc.width = width + return _Column(gridCol, self) + + def add_row(self): + """Return a |_Row| instance, newly added bottom-most to the table.""" + tbl = self._tbl + tr = tbl.add_tr() + for gridCol in tbl.tblGrid.gridCol_lst: + tc = tr.add_tc() + if gridCol.w is not None: + tc.width = gridCol.w + return _Row(tr, self) + + @property + def alignment(self) -> WD_TABLE_ALIGNMENT | None: + """Read/write. + + A member of :ref:`WdRowAlignment` or None, specifying the positioning of this + table between the page margins. |None| if no setting is specified, causing the + effective value to be inherited from the style hierarchy. + """ + return self._tblPr.alignment + + @alignment.setter + def alignment(self, value: WD_TABLE_ALIGNMENT | None): + self._tblPr.alignment = value + + @property + def autofit(self) -> bool: + """|True| if column widths can be automatically adjusted to improve the fit of + cell contents. + + |False| if table layout is fixed. Column widths are adjusted in either case if + total column width exceeds page width. Read/write boolean. + """ + return self._tblPr.autofit + + @autofit.setter + def autofit(self, value: bool): + self._tblPr.autofit = value + + def cell(self, row_idx: int, col_idx: int) -> _Cell: + """|_Cell| at `row_idx`, `col_idx` intersection. + + (0, 0) is the top, left-most cell. + """ + cell_idx = col_idx + (row_idx * self._column_count) + return self._cells[cell_idx] + + def column_cells(self, column_idx: int) -> list[_Cell]: + """Sequence of cells in the column at `column_idx` in this table.""" + cells = self._cells + idxs = range(column_idx, len(cells), self._column_count) + return [cells[idx] for idx in idxs] + + @lazyproperty + def columns(self): + """|_Columns| instance representing the sequence of columns in this table.""" + return _Columns(self._tbl, self) + + def row_cells(self, row_idx: int) -> list[_Cell]: + """DEPRECATED: Use `table.rows[row_idx].cells` instead. + + Sequence of cells in the row at `row_idx` in this table. + """ + column_count = self._column_count + start = row_idx * column_count + end = start + column_count + return self._cells[start:end] + + @lazyproperty + def rows(self) -> _Rows: + """|_Rows| instance containing the sequence of rows in this table.""" + return _Rows(self._tbl, self) + + @property + def style(self) -> _TableStyle | None: + """|_TableStyle| object representing the style applied to this table. + + Read/write. The default table style for the document (often `Normal Table`) is + returned if the table has no directly-applied style. Assigning |None| to this + property removes any directly-applied table style causing it to inherit the + default table style of the document. + + Note that the style name of a table style differs slightly from that displayed + in the user interface; a hyphen, if it appears, must be removed. For example, + `Light Shading - Accent 1` becomes `Light Shading Accent 1`. + """ + style_id = self._tbl.tblStyle_val + return cast("_TableStyle | None", self.part.get_style(style_id, WD_STYLE_TYPE.TABLE)) + + @style.setter + def style(self, style_or_name: _TableStyle | str | None): + style_id = self.part.get_style_id(style_or_name, WD_STYLE_TYPE.TABLE) + self._tbl.tblStyle_val = style_id + + @property + def table(self): + """Provide child objects with reference to the |Table| object they belong to, + without them having to know their direct parent is a |Table| object. + + This is the terminus of a series of `parent._table` calls from an arbitrary + child through its ancestors. + """ + return self + + @property + def table_direction(self) -> WD_TABLE_DIRECTION | None: + """Member of :ref:`WdTableDirection` indicating cell-ordering direction. + + For example: `WD_TABLE_DIRECTION.LTR`. |None| indicates the value is inherited + from the style hierarchy. + """ + return cast("WD_TABLE_DIRECTION | None", self._tbl.bidiVisual_val) + + @table_direction.setter + def table_direction(self, value: WD_TABLE_DIRECTION | None): + self._element.bidiVisual_val = value + + @property + def _cells(self) -> list[_Cell]: + """A sequence of |_Cell| objects, one for each cell of the layout grid. + + If the table contains a span, one or more |_Cell| object references are + repeated. + """ + col_count = self._column_count + cells: list[_Cell] = [] + for tc in self._tbl.iter_tcs(): + for grid_span_idx in range(tc.grid_span): + if tc.vMerge == ST_Merge.CONTINUE: + cells.append(cells[-col_count]) + elif grid_span_idx > 0: + cells.append(cells[-1]) + else: + cells.append(_Cell(tc, self)) + return cells + + @property + def _column_count(self): + """The number of grid columns in this table.""" + return self._tbl.col_count + + @property + def _tblPr(self) -> CT_TblPr: + return self._tbl.tblPr + + +class _Cell(BlockItemContainer): + """Table cell.""" + + def __init__(self, tc: CT_Tc, parent: TableParent): + super(_Cell, self).__init__(tc, cast("t.ProvidesStoryPart", parent)) + self._parent = parent + self._tc = self._element = tc + + def add_paragraph(self, text: str = "", style: str | ParagraphStyle | None = None): + """Return a paragraph newly added to the end of the content in this cell. + + If present, `text` is added to the paragraph in a single run. If specified, the + paragraph style `style` is applied. If `style` is not specified or is |None|, + the result is as though the 'Normal' style was applied. Note that the formatting + of text in a cell can be influenced by the table style. `text` can contain tab + (``\\t``) characters, which are converted to the appropriate XML form for a tab. + `text` can also include newline (``\\n``) or carriage return (``\\r``) + characters, each of which is converted to a line break. + """ + return super(_Cell, self).add_paragraph(text, style) + + def add_table( # pyright: ignore[reportIncompatibleMethodOverride] + self, rows: int, cols: int + ) -> Table: + """Return a table newly added to this cell after any existing cell content. + + The new table will have `rows` rows and `cols` columns. + + An empty paragraph is added after the table because Word requires a paragraph + element as the last element in every cell. + """ + width = self.width if self.width is not None else Inches(1) + table = super(_Cell, self).add_table(rows, cols, width) + self.add_paragraph() + return table + + @property + def grid_span(self) -> int: + """Number of layout-grid cells this cell spans horizontally. + + A "normal" cell has a grid-span of 1. A horizontally merged cell has a grid-span of 2 or + more. + """ + return self._tc.grid_span + + def merge(self, other_cell: _Cell): + """Return a merged cell created by spanning the rectangular region having this + cell and `other_cell` as diagonal corners. + + Raises |InvalidSpanError| if the cells do not define a rectangular region. + """ + tc, tc_2 = self._tc, other_cell._tc + merged_tc = tc.merge(tc_2) + return _Cell(merged_tc, self._parent) + + @property + def paragraphs(self): + """List of paragraphs in the cell. + + A table cell is required to contain at least one block-level element and end + with a paragraph. By default, a new cell contains a single paragraph. Read-only + """ + return super(_Cell, self).paragraphs + + @property + def tables(self): + """List of tables in the cell, in the order they appear. + + Read-only. + """ + return super(_Cell, self).tables + + @property + def text(self) -> str: + """The entire contents of this cell as a string of text. + + Assigning a string to this property replaces all existing content with a single + paragraph containing the assigned text in a single run. + """ + return "\n".join(p.text for p in self.paragraphs) + + @text.setter + def text(self, text: str): + """Write-only. + + Set entire contents of cell to the string `text`. Any existing content or + revisions are replaced. + """ + tc = self._tc + tc.clear_content() + p = tc.add_p() + r = p.add_r() + r.text = text + + @property + def vertical_alignment(self): + """Member of :ref:`WdCellVerticalAlignment` or None. + + A value of |None| indicates vertical alignment for this cell is inherited. + Assigning |None| causes any explicitly defined vertical alignment to be removed, + restoring inheritance. + """ + tcPr = self._element.tcPr + if tcPr is None: + return None + return tcPr.vAlign_val + + @vertical_alignment.setter + def vertical_alignment(self, value: WD_CELL_VERTICAL_ALIGNMENT | None): + tcPr = self._element.get_or_add_tcPr() + tcPr.vAlign_val = value + + @property + def width(self): + """The width of this cell in EMU, or |None| if no explicit width is set.""" + return self._tc.width + + @width.setter + def width(self, value: Length): + self._tc.width = value + + +class _Column(Parented): + """Table column.""" + + def __init__(self, gridCol: CT_TblGridCol, parent: TableParent): + super(_Column, self).__init__(parent) + self._parent = parent + self._gridCol = gridCol + + @property + def cells(self) -> tuple[_Cell, ...]: + """Sequence of |_Cell| instances corresponding to cells in this column.""" + return tuple(self.table.column_cells(self._index)) + + @property + def table(self) -> Table: + """Reference to the |Table| object this column belongs to.""" + return self._parent.table + + @property + def width(self) -> Length | None: + """The width of this column in EMU, or |None| if no explicit width is set.""" + return self._gridCol.w + + @width.setter + def width(self, value: Length | None): + self._gridCol.w = value + + @property + def _index(self): + """Index of this column in its table, starting from zero.""" + return self._gridCol.gridCol_idx + + +class _Columns(Parented): + """Sequence of |_Column| instances corresponding to the columns in a table. + + Supports ``len()``, iteration and indexed access. + """ + + def __init__(self, tbl: CT_Tbl, parent: TableParent): + super(_Columns, self).__init__(parent) + self._parent = parent + self._tbl = tbl + + def __getitem__(self, idx: int): + """Provide indexed access, e.g. 'columns[0]'.""" + try: + gridCol = self._gridCol_lst[idx] + except IndexError: + msg = "column index [%d] is out of range" % idx + raise IndexError(msg) + return _Column(gridCol, self) + + def __iter__(self): + for gridCol in self._gridCol_lst: + yield _Column(gridCol, self) + + def __len__(self): + return len(self._gridCol_lst) + + @property + def table(self) -> Table: + """Reference to the |Table| object this column collection belongs to.""" + return self._parent.table + + @property + def _gridCol_lst(self): + """Sequence containing ```` elements for this table, each + representing a table column.""" + tblGrid = self._tbl.tblGrid + return tblGrid.gridCol_lst + + +class _Row(Parented): + """Table row.""" + + def __init__(self, tr: CT_Row, parent: TableParent): + super(_Row, self).__init__(parent) + self._parent = parent + self._tr = self._element = tr + + @property + def cells(self) -> tuple[_Cell, ...]: + """Sequence of |_Cell| instances corresponding to cells in this row. + + Note that Word allows table rows to start later than the first column and end before the + last column. + + - Only cells actually present are included in the return value. + - This implies the length of this cell sequence may differ between rows of the same table. + - If you are reading the cells from each row to form a rectangular "matrix" data structure + of the table cell values, you will need to account for empty leading and/or trailing + layout-grid positions using `.grid_cols_before` and `.grid_cols_after`. + + """ + + def iter_tc_cells(tc: CT_Tc) -> Iterator[_Cell]: + """Generate a cell object for each layout-grid cell in `tc`. + + In particular, a `` element with a horizontal "span" with generate the same cell + multiple times, one for each grid-cell being spanned. This approximates a row in a + "uniform" table, where each row has a cell for each column in the table. + """ + # -- a cell comprising the second or later row of a vertical span is indicated by + # -- tc.vMerge="continue" (the default value of the `w:vMerge` attribute, when it is + # -- present in the XML). The `w:tc` element at the same grid-offset in the prior row + # -- is guaranteed to be the same width (gridSpan). So we can delegate content + # -- discovery to that prior-row `w:tc` element (recursively) until we arrive at the + # -- "root" cell -- for the vertical span. + if tc.vMerge == "continue": + yield from iter_tc_cells(tc._tc_above) # pyright: ignore[reportPrivateUsage] + return + + # -- Otherwise, vMerge is either "restart" or None, meaning this `tc` holds the actual + # -- content of the cell (whether it is vertically merged or not). + cell = _Cell(tc, self.table) + for _ in range(tc.grid_span): + yield cell + + def _iter_row_cells() -> Iterator[_Cell]: + """Generate `_Cell` instance for each populated layout-grid cell in this row.""" + for tc in self._tr.tc_lst: + yield from iter_tc_cells(tc) + + return tuple(_iter_row_cells()) + + @property + def grid_cols_after(self) -> int: + """Count of unpopulated grid-columns after the last cell in this row. + + Word allows a row to "end early", meaning that one or more cells are not present at the + end of that row. + + Note these are not simply "empty" cells. The renderer reads this value and "skips" this + many columns after drawing the last cell. + + Note this also implies that not all rows are guaranteed to have the same number of cells, + e.g. `_Row.cells` could have length `n` for one row and `n - m` for the next row in the same + table. Visually this appears as a column (at the beginning or end, not in the middle) with + one or more cells missing. + """ + return self._tr.grid_after + + @property + def grid_cols_before(self) -> int: + """Count of unpopulated grid-columns before the first cell in this row. + + Word allows a row to "start late", meaning that one or more cells are not present at the + beginning of that row. + + Note these are not simply "empty" cells. The renderer reads this value and skips forward to + the table layout-grid position of the first cell in this row; the renderer "skips" this many + columns before drawing the first cell. + + Note this also implies that not all rows are guaranteed to have the same number of cells, + e.g. `_Row.cells` could have length `n` for one row and `n - m` for the next row in the same + table. + """ + return self._tr.grid_before + + @property + def height(self) -> Length | None: + """Return a |Length| object representing the height of this cell, or |None| if + no explicit height is set.""" + return self._tr.trHeight_val + + @height.setter + def height(self, value: Length | None): + self._tr.trHeight_val = value + + @property + def height_rule(self) -> WD_ROW_HEIGHT_RULE | None: + """Return the height rule of this cell as a member of the :ref:`WdRowHeightRule`. + + This value is |None| if no explicit height_rule is set. + """ + return self._tr.trHeight_hRule + + @height_rule.setter + def height_rule(self, value: WD_ROW_HEIGHT_RULE | None): + self._tr.trHeight_hRule = value + + @property + def table(self) -> Table: + """Reference to the |Table| object this row belongs to.""" + return self._parent.table + + @property + def _index(self) -> int: + """Index of this row in its table, starting from zero.""" + return self._tr.tr_idx + + +class _Rows(Parented): + """Sequence of |_Row| objects corresponding to the rows in a table. + + Supports ``len()``, iteration, indexed access, and slicing. + """ + + def __init__(self, tbl: CT_Tbl, parent: TableParent): + super(_Rows, self).__init__(parent) + self._parent = parent + self._tbl = tbl + + @overload + def __getitem__(self, idx: int) -> _Row: ... + + @overload + def __getitem__(self, idx: slice) -> list[_Row]: ... + + def __getitem__(self, idx: int | slice) -> _Row | list[_Row]: + """Provide indexed access, (e.g. `rows[0]` or `rows[1:3]`)""" + return list(self)[idx] + + def __iter__(self): + return (_Row(tr, self) for tr in self._tbl.tr_lst) + + def __len__(self): + return len(self._tbl.tr_lst) + + @property + def table(self) -> Table: + """Reference to the |Table| object this row collection belongs to.""" + return self._parent.table diff --git a/intelliaide/vendor/docx/templates/default-comments.xml b/intelliaide/vendor/docx/templates/default-comments.xml new file mode 100644 index 0000000..2a36ca9 --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-comments.xml @@ -0,0 +1,12 @@ + + diff --git a/intelliaide/vendor/docx/templates/default-docx-template/[Content_Types].xml b/intelliaide/vendor/docx/templates/default-docx-template/[Content_Types].xml new file mode 100644 index 0000000..a2e37e8 --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-docx-template/[Content_Types].xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/intelliaide/vendor/docx/templates/default-docx-template/_rels/.rels b/intelliaide/vendor/docx/templates/default-docx-template/_rels/.rels new file mode 100644 index 0000000..40657c7 --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-docx-template/_rels/.rels @@ -0,0 +1,7 @@ + + + + + + + diff --git a/intelliaide/vendor/docx/templates/default-docx-template/customXml/_rels/item1.xml.rels b/intelliaide/vendor/docx/templates/default-docx-template/customXml/_rels/item1.xml.rels new file mode 100644 index 0000000..8a65d21 --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-docx-template/customXml/_rels/item1.xml.rels @@ -0,0 +1,4 @@ + + + + diff --git a/intelliaide/vendor/docx/templates/default-docx-template/customXml/item1.xml b/intelliaide/vendor/docx/templates/default-docx-template/customXml/item1.xml new file mode 100644 index 0000000..94c8bab --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-docx-template/customXml/item1.xml @@ -0,0 +1,2 @@ + + diff --git a/intelliaide/vendor/docx/templates/default-docx-template/customXml/itemProps1.xml b/intelliaide/vendor/docx/templates/default-docx-template/customXml/itemProps1.xml new file mode 100644 index 0000000..6664fc0 --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-docx-template/customXml/itemProps1.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/intelliaide/vendor/docx/templates/default-docx-template/docProps/app.xml b/intelliaide/vendor/docx/templates/default-docx-template/docProps/app.xml new file mode 100644 index 0000000..bf89187 --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-docx-template/docProps/app.xml @@ -0,0 +1,36 @@ + + + + 0 + 1 + 0 + 0 + Microsoft Macintosh Word + 0 + 0 + 0 + false + + + + Title + + + 1 + + + + + + + + + + + false + 0 + false + + false + 14.0000 + diff --git a/intelliaide/vendor/docx/templates/default-docx-template/docProps/core.xml b/intelliaide/vendor/docx/templates/default-docx-template/docProps/core.xml new file mode 100644 index 0000000..55109c7 --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-docx-template/docProps/core.xml @@ -0,0 +1,13 @@ + + + + + python-docx + + generated by python-docx + + 1 + 2013-12-23T23:15:00Z + 2013-12-23T23:15:00Z + + diff --git a/intelliaide/vendor/docx/templates/default-docx-template/docProps/thumbnail.jpeg b/intelliaide/vendor/docx/templates/default-docx-template/docProps/thumbnail.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..d0c4f1f553fedc9e469c7c5253fbed0b10e7476e GIT binary patch literal 8324 zcmeHJdu&rx82|3Q=eA>;4dt=HFmQQKvXO2>*hIj!>$Z+DO1JTf3F+F~wXAE)ZM%(S zCNdwO{2>G1|2PIJ8WV$x4%EmL0gVO_2Mh>th&p_QhvF+xzjNE(wqy|_f0^9V^xR*+ z*ZF=MS$>wZ7?BhEohW0GKqC z`<+2YGvYP?-s=cRApp$6_4;)W<*DcjW9OlU*7>Ktyn z6LAOPyoMxsV-k*XKnsjhA^Jqg;}B>qtdig5@rtq{I^9B@Wcg39*&D{38Erz=tc5^M_X(&G&2pOq-2I3#XP4%USX92LITvB;`)SkV!-Cef=aTdy* zo{*(3CU5sO)GS4ezHCpEe=&_iZ4NtvCafh)L43|FTIe1l9}b*inHg~&;)(8XWh_2d z6>O=cayd@B+f;)X<8abidzBS&4&qIc-$vI$&Rmb^t)OdReC}W%WQ}p)hJ4-{x)$b3 zbYf7>5o2;gA$J{~Q|e3RhNQZfFInyKlv`r<9RaU=7Lgm-DTQs68^$L`?UK0yF~%WR zL|;9v8)AN((_ThvI~(yrSkBl%1V1$3>;NBJ2LWtQ0Y-cVKthcRJm5u%h*}XP9_9{c zLfPMU?l^Hc7 zE04SrLB%dVC5Jw=41pczLA3KD*ErLZ9d-G(*GG)4sx$^?WsPxx~aM{-6Y*~UA1B*=(2SMx=P(l)J#zJ&707tO%=uQH%~JY zbtO2P7533LN3lrBKuog2swi>tl2{G5B4`Oi*w+lZzKPm9qdFJwReM^sc6Z z-mlar`eeJ=xCOJhn~P&~#Su9JCi?H;wgwGyTLGwZWIyQBSYS4Dj2>7$!|9pG0holD z@X^>ZUz`}0BfLhNHX=O(4fc!#mf<*-a6C`25X=Lp2cqXkO)eQd)5X+;g;66_3aNm{K%slH$C?F)@@Hd_4G5(KKFdjj-4;Q^zyD(UVY=uxAwgK zPVe4*AAWS;A~|~U-;(R?}jdZfBDMQUw*yz+wXt;N%LZW zQ%V-i?54c12nj^)(Kr^aznby8;^pwI4X=99C+jsYkm|A4JG`2xH zmYy|j&fxURG&MQ1f0tP2f67crERok~$mH-)>N!0uf*Ut-p__d$9sdHT548m9DNtVo z^)67aL$xEQ-B9g@YByB7q1p}AZm4!cwHvD4Q0<0lH&nZ!+6~oi_`m9gkpcJ{PX}Y} literal 0 HcmV?d00001 diff --git a/intelliaide/vendor/docx/templates/default-docx-template/word/_rels/document.xml.rels b/intelliaide/vendor/docx/templates/default-docx-template/word/_rels/document.xml.rels new file mode 100644 index 0000000..de8ebbc --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-docx-template/word/_rels/document.xml.rels @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/intelliaide/vendor/docx/templates/default-docx-template/word/document.xml b/intelliaide/vendor/docx/templates/default-docx-template/word/document.xml new file mode 100644 index 0000000..3edb08e --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-docx-template/word/document.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/intelliaide/vendor/docx/templates/default-docx-template/word/fontTable.xml b/intelliaide/vendor/docx/templates/default-docx-template/word/fontTable.xml new file mode 100644 index 0000000..a2e0658 --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-docx-template/word/fontTable.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/intelliaide/vendor/docx/templates/default-docx-template/word/numbering.xml b/intelliaide/vendor/docx/templates/default-docx-template/word/numbering.xml new file mode 100644 index 0000000..cba57e2 --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-docx-template/word/numbering.xml @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/intelliaide/vendor/docx/templates/default-docx-template/word/settings.xml b/intelliaide/vendor/docx/templates/default-docx-template/word/settings.xml new file mode 100644 index 0000000..1e84bf1 --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-docx-template/word/settings.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/intelliaide/vendor/docx/templates/default-docx-template/word/styles.xml b/intelliaide/vendor/docx/templates/default-docx-template/word/styles.xml new file mode 100644 index 0000000..46d1e98 --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-docx-template/word/styles.xml @@ -0,0 +1,11844 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/intelliaide/vendor/docx/templates/default-docx-template/word/stylesWithEffects.xml b/intelliaide/vendor/docx/templates/default-docx-template/word/stylesWithEffects.xml new file mode 100644 index 0000000..91c1734 --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-docx-template/word/stylesWithEffects.xml @@ -0,0 +1,11800 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/intelliaide/vendor/docx/templates/default-docx-template/word/theme/theme1.xml b/intelliaide/vendor/docx/templates/default-docx-template/word/theme/theme1.xml new file mode 100644 index 0000000..2b30074 --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-docx-template/word/theme/theme1.xml @@ -0,0 +1,318 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/intelliaide/vendor/docx/templates/default-docx-template/word/webSettings.xml b/intelliaide/vendor/docx/templates/default-docx-template/word/webSettings.xml new file mode 100644 index 0000000..189a20a --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-docx-template/word/webSettings.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/intelliaide/vendor/docx/templates/default-footer.xml b/intelliaide/vendor/docx/templates/default-footer.xml new file mode 100644 index 0000000..944ae1a --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-footer.xml @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/intelliaide/vendor/docx/templates/default-header.xml b/intelliaide/vendor/docx/templates/default-header.xml new file mode 100644 index 0000000..df6848c --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-header.xml @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/intelliaide/vendor/docx/templates/default-settings.xml b/intelliaide/vendor/docx/templates/default-settings.xml new file mode 100644 index 0000000..fda1ade --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-settings.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + diff --git a/intelliaide/vendor/docx/templates/default-styles.xml b/intelliaide/vendor/docx/templates/default-styles.xml new file mode 100644 index 0000000..b8b97bc --- /dev/null +++ b/intelliaide/vendor/docx/templates/default-styles.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/intelliaide/vendor/docx/templates/default.docx b/intelliaide/vendor/docx/templates/default.docx new file mode 100644 index 0000000000000000000000000000000000000000..c22ff36205f90636c3057b94f99157be64203896 GIT binary patch literal 38116 zcmZ^}b9g4-vNrt0nAo;$TNB&P#I}t|GO=wN6HaVrV%xSR{+{{mbI!N-dEfV+?(14z zeXqK!YOShT-HI|`;Aj8<02(0HN+nO4hbxr}0suTh0syGMQ5{ixI~P+s7XwvK2UBM~ z1`k`Crep<$H6f(It7kM?1D~>Ucz#ti^f1vtQgN$_$2P6lMEX|+UR0v3t_FlAq!7b+ zhkBFAjwio{#TfG=#NQFTk`_VsV+~%~u-80|L$w*VOS=^>+OT8?I;O#4CF`ImM|Yz( z_0a)Ag9Mr1oST12Z4n5I|WvRi^iLN&T~`3`CF-!4?0dpp>Y`0-%f za`v5Sg*$ok%{BQ{CIM5s|{gaGeWYr=rZ4 zQcCQqVFx5e)n)$J?zGNH-17DHT9D0|6a4;9gF-F6!TKkEXw#>{(vXgP9gC-dDU;8o z422I6#sBap!eyoFJJ65kpa8%Z;N8H<)W(^S;qSFNVNx2587bh(HzH0(e#53Re8kKf zIiEBB1z^n5j=S*|C)?!fT^Qb`SZx@4_jJR|I%#zz@fbzDww4%J zm>OgXYHtWfki2Y+QR%k0z5}glc57&C2C>_)3#QbOz;XtHzfU7}Up)JLKR`Oo3tL!F zIMzvP36sUw{Mv138GL+E;--BhdS{zlbZ$>jCg+Ko7=N)ECp66v7rive~l?8x6lS@uLd2XH- z%O3l)e~u3-7V35>T=`l(Pe@_l1N!;nUrr&>hnEv+u%CSv5!&D&}9cTw6UL zh!wyvX+}rU_H>ys=E2oNK+PS>;g74sVctg^uo{C?kIB}xCL6cB!Jp_L0S*rBY@n7bWJR};=@~xhuwJCy~gEoffrBk zAjHnFYMO>}hJp-QwUReKG^?YVosD#ar-nzs5`z0zF!?YEmy6q$<8bvHBm)B3Ex|$h z|KJI9?;AD@>RwM?^1_Mfxu_G2mm0pL8-v|up6^6cNxzn2( zr(=exlE|6!>@>^D<*`hfI-BjTo>s1cQWJf*BQjB={L6*U_syF9AJv1=n+lu!Is;!b%8Q6rK^?z^O~fYMCD+k&Xxd#k}k1`y7tW9m@FdgSUbAwQ=lq zN!SdkQQkrgef+s#MA2~rwy8E^_;79Vh{PGZ0-_vUeGpmC(O_zoCnw%i#ncM1M z^39P7oe|JE+|I%M8Gzl#G%nf}@|%8;aH!0_q*?=DMl_x^5UKnu*9gCjzKHAA6dumw zW(Rv0rHUGzB~7+6vhTe|&eaTDcZ_R&Y$)fALy&ny0Ds{XS$@M1qgfS&(#DTVY)(h@ zuOG9&JLlwrORT;H(*%jQ-G4pIu0u@{vcy|yLnib6JtH7qKVDZUy~|KV%wID^NtS~D z`i&5m)|mQI*(_x<-M;*w#hf4!;{zuxx7DBo{XMsezfIGc);8gdy+3e+fM!$LFUhf3fu<;k@} zc9jk{)hR2_=Kk(78qLBkj+v2QG3M3?juN)RUk*ZDDk%j8cQ2Wh6Q30=*~zJfxE&<~ z!7kZImLa~c5ou`U-HOJyBc9hx~y%v}+y9@ST3X(l%-v+;)ftlQP`PzfpGrp}y( zfjTwLC8J~rVG@4s_YMy?oQ9oOCY!IbPJ`_*7=!)G+U;=6c0 z{#uMV5`;ps@LeK#b;kq=cS|fk*I?ZR1Lm_ks?Sh_03+l>?W8f6%!f=}|JiT1VE^f# zf{{h@P6z-Xga`n@{CEGjSh(7Lvoo@^VX$&AHNQ}|c0g4_6KMD5q_&+zqM}EG>T74| zDWVsl1?8|@ElJ`iqOWxfl}eOD&7d%HpG%R?1}6N6Fg~BpdNfs+EJwweARc9Lp|4O# zU(m3INUUzy`Opl&Zq_%7U=%~*4St_*th{$+-EBBeaeE)x6$}>`^iSWSc*8Kkfth*; z-#2!R+cniVa8*j5qjR_bj$3~9?EtJnE#Srq8s@)gx7qxX+WJBl6~s0Y%9g4Fi^+|L z9uRD`)8=>r&4h-iK)C){OF9YMBLNf;o+G5caN}D5*C6hiNgyuf)B4kNVew~IVmZX$ zf<`8jmMS~aZh4X!)!5kOX`M16doP?l<64Mw)l*Gs6?Ux<#zv^ngMyCTGc6eLzKxtA zLQ9=&4){hEG9&${<%GO)DbM!;`G!!vL7BpB+|hsWQ;jq?+{a(DS@G3mUr-#!Dl$$1 z!Z6HpFhN^wYIE(hQY(lL_17@tn)SEGMMFK)WS-Ou8)$lmA-30z1axo6z4+W)m`7N4 zLIggM`sl|m&sYXUbQrm`sTmcvH(b>M*2Oqss2Xi!_#+MRwWy-MY1qwcRG^c17XGYn z)}4nR^gKX;C8Jx(enTQFmKbDswHllMWs(xbsFW>};{8tknASy)r}#*6DA62&Y;G&- zJWakTy}-2}gj5whxc}8lcd)UAHEt?+FzO39v@pKF22#klAt+^15Ck(EiC4#V7(g5R z9@gT9)m;c|6>^CiEqV+!!pqc6Fgv;uu0~0N3wJI=5`#I>r{gFNmL(M}PJ}7`d0&7f z7Ok);ZUQ^)Oj0|y#?_7JH%+*qYK0D5%EL;0)_~W=E^PN}PvTKc27ViZIdP7H6O>RN z!a(v|;@Q^HfU&bQH!Ai>_;flAB>rj~#NCDKhl zaztwC;C-C7o0Q(~Qv&nf6I?W^kKt>kX`4K33L^H*GepK5jA? z5Le0VP+Nju1J*__b_JkNTQbiM1@<3-x&4Z~vl90zHqgCx9=A5d3-YW901`aNw93@0 zXoF>)W>O|Oz-of+1aBHjeT>b2y_v8iQ!|J-evN%~x@}$FrhWgCuT?Ij%!3!Quyp>p zY{L?|kMhdi-W+gw&?;g+hkh2(QUxQ*N<>zkaF$hb z&eNuGa!xTw8A$Yno`v6{I{(^g#^5SZ&eQD9Mg`fg0z8rbIEQ(19~N9TLWbo>5Lvif zkU8Y^Ri2lafeXzRC&ism9|a?L+Uu7bEhyCH1LS}u@_?#z7#)P1AEf%=#~BAP;d1q? zxkg=pxQ=Jf(^{7=IdY{1Gm#$pC!CwqQFlSW= zl>?YodgfL*JuTdzV5FN&}0-F4Yn7vJHE`BcCqpu)v)EMR*Z|`QQ70sX;7Jm}h zSx*zS;0FJ=gfxbYq;`rz)+Fu6PCq8Viu`q3LG)o{su^?5<2x2N&xUr61xwfONVnsW zV`w=6b`14xKP-Bjeiq(fe>T=2IljfL|1b$Aoko1QJ!M>Vkmn|Gs|zORDs=i~hb4|v>ORZkvU zC-%R6UN@fJ&HcIjcXn&L^B$1 zPV_26W2bZy6O2~sJiVXdV4iqEz7=(~sS_fWwlcHtGJm@X_`)2-`(-Ir z<7{(6iOMU*Q(MSpXojbS?I8!$H2*!)?;3n05jdk0_Lf3RA$CB0{I>Sf%knN<36&HOgPT! zYz}efg&@PBUp|G*opmi(=%-$N+~R`>ORY>cH57>h*Dt zeux~eH+uH#pt@uF8Wtk>XYuq>mv2gF@6WJx{_E|!rkKMiy_d>-cE6gQulweD@l`wr zPd|`7w2uC5G6RFVW(S-b-5(r{c8LBEECb-4ho|U0A|JiNlfv4O6~bGNDwr(i>M?RG56=x^S96YcYN&@ceN57wI*wdc&JTGdm2Wmi&s@$s&5U3bw#kAms1p!n7ojRiYe z$C2u^&q60iabrrP8O4r29e$b~326Q4jO!U52`!2fr$Hi#wZqf7l}yGG6I96@y)b6$ z6~3lAVnin{l*FQArgS*WbYP8pe1XM`BbhH&W^Km$9HC6>%nN=JF5WyCbeM^ZiGoP7 zyEZgpXP~M6`*#Khw^_-D-w-5;bg^m_GiHQPp@PHyTHd~K``Jn_mW=ql7YB_6u^C%N zHCdL05|VL6@Qrk)p;T%m-El-rR7M%da#indn(3AuH;9Xga(j)S`OWK(2JJ-Vh@b~%G5Cp&9%{fK8bccsIO z2A@ip9FKDemL8lmm~D)xv$=yNi2ZS!@kXx3eegolfF;vtm``vd{ubtTt^x{6HQ}@3 z=dGf|> zSl*@xHtTPz8anLvrrZgns0>%t?b<_tGEUZC9r*tE?fRD5MR8W@C08R+;d_JopCLJd z-|UkB20XgO`L~d?1NI1}PL_7&e>290)<(=O2U=HdsZcykjoB?Pah|CUG4y}#pK%Mb*;68*1t zwCP z&iS*1@`b0@yY3MOUqQ|{YT^#I_!{Ed=(gqPcQIDjD8oVCq4>pqxl%BE*vX_6s+n%H zDiv)0$*`0}^8-)acy6*PWPEMMkCSNncDRNpt6PX#X5W>PR!KHGs^5f!2UaPwB*y3M zzg_S=z8bZ0D1oMe1@Zyt)lUni>1o`~Suh${IEG=2!qr&-mk|E6Dt=B^`eFW35k!Mu z^nR3dkA7>+1gVaOl zli-ucUx|zkKz3GrG%%nWE4xISjdNeMUxA@b^x=Z0P_pN|c4YhHF_CEX6dRd-9`!o> zkV#j?p1w6i!0uS;$j9v+`;s$i)lw#te(s|)|DaQ)VO?Ja5h<6Ybj(li7!gSrT(g6w zT0a7V!TOxa1tH#a`=k@Mb@n8JiFa-9nr3ambfof0g9A5}J-GE|rF^4Z&+wY^E$)vX zsRul?5oyp?fWuZe5*rbCH1rcZbf-i}9Z0Xe*fBeiM>Mn&SkPMdw7rmnKJmG|n?Ef7 z`rH4iLuTE(1lNEoxD%LE{-+LcHg$0Uu3zWB3%E&r&1shl$#+Vl)nmsLrrB{~0G&nL za7B*hyl62UG0qlb^;kUt&Zx^zyV*2Tx<22{D!1+>tE+4Q^Rlap_4J~CR_uC(sr508 z;P4j}^w#gtEdz~0Mo|UafiGeZ!woygXFE%;mF=Ph^~^o91e)7CM$a~NtP&J^^}pTI zh<)kF4gq!{-$r_rY=_~>Ta;s*ddXPGNR!g`xbELQrqhrcgv&i<)3BHmX!8e$G?T?_ zILL-4W9Jl8|5U4`kT7B&mfUiwr-{G?o#Dr?Y8ihn-~{lRn|#`*F0-C`g!Oc9w?XAc zsP83QR|Tn(3~Tp;F`t5xbvWbsGR?nqL2gZ=)2ieV{8`Yz{8f?)t}Hr5rXq>|s#M44 zx$cy&C~;#0n1Q>jLZ_6kOzBW^tjw&k#5w>j)o)2id;9UEWVa;UoQu*mgGAZZL1*=`a2VnNTNb}>n6 z_d*W@JoWoTWQBUn7y0UYT2Lz_VC?em{ph`JBNP}9~n+R5}MBp#iPxy$V2dW!b z(oE@hf3K=dXYn7psKp^(`w(n5wcZ`LPq_pg{j&5fxRLzt^dXMgU7tvDrKsJQHN`G< zfBn9BK01hj=!f^!d}o2A zE4!*KtJ$){_y_(^#tNmX*k&_+by`NGaWvu0)!)00GUM}WU^_8MMp#OJz_L=(jiV&^ zRawPOU=M>u-w8C4=uuW1SQw7n4stgwY;s zk?e9{obwnO?!|KZ!7q2n8M`i$Wt;@-uL&S&x-%fA%B(V_!R}_B<`?-SRwvkn8+rvT z?(b*ilq!_hSUsYPs$S{WAR9o)*Ro-%N&;0t`~elB&G5K%Rdsbk6<}kwC;=NjEFuyqkq? zVaa&NTbryGMPWRv-aia3E1s;G-4y7(f=tlw`M7H&gAl#C-uL6O-D*_IUohiVDuY2E zq#0AOhF~cZq!^|Q)m`$1{<&Jj9cU*ROLx}1=j!b!%{HM8(>@PHmQGpShgtq%;zp9RNtKhXf%0cX{dT z;%Q_0&pvRWH=eS`k+3nPu|FEEahV_)k>I1t`W0=odCIYUL(gtXJGs0zjYA$*B)kX0VGk1f=Hm11p!sQdG5ZL4eL;?qO_@)BXo;Ht~h)5HI> zam)YtaHD;rf9}?_{&oCt+{yRP^_BZVq=IOn+?>c7NKn`v}~(YF*{18@Q!z`k|g&v`jwUjJw^{ ztzRHKz1{kpUYXWw8?<9Xa^iPZ5j1CR9L{|(hGlYp78q-U)gnR-e|md%b$fgMIeeWu zn{>Om@qGUHn4Wp}|6JPGFuEq-M7+73+kNot98Ntd&=<-Ixi^$!23|7h^#?x6qR<;>rAaV%8g)fMJit>DC_*Pll{ zJFMUSXppCd+h45DyOM_No=k7*cs}9=OW$t;n)+4E)pIqVOt!rDu5X704H{0gJ1#i~ z4Q|LkX(K2aXp5!zH=jNLGl-?hP8M}<_x*=EO9y*l?>oUyPhZc%B0pa~N-wM$_^U#n zp5{)Tcf$_GPumyv_MF~7{5&jM{j~WRKA$XqeJt5M|8aXKJVBm0A|T|bJ$pY1tpU65 z@Rs%S*Yq337|kE`ikG{KU1`Z_s6BTYit+8J+4P$|5gEO|+5OZzM_>dSWPNDVHSr$X zs9Ri3n$8$L*X<(AEz1ok%SBcaBvukMF7TredzWQ@U9l&Smz;dsQ4sHP1LLl*-5`=Z zx8@8$d0mC~8vqVr0*CTMfkTE!ud9>mOa2!|j&HArk)+)7Zyl?GjMh&r#Di{L0_K-~ z+BTTEEs=~0?%0g2%xX)MVN0>z^@RLne`W|D*Ct<_tLdjm>ykTsJhji&+r6yO=5CxN zt}j2@^!OK7aUFlR;CvC}XCz2b$UGW8c)UD1xbiNR_gi20<#Nn>fuY1oCRESOeRLs=MR2jEd$WCR_454{l?3<->kG@P-hc@{^XB1~vn8GAkXDp+s zvex$b>ut))op}BBu50{eb2aza8B#1_^li_zp_X!#;JeGsyH~gFRf_vJ3SZbqZ7wNt zirj6<>A(9(K_oOG(NqB%mYm)MTX52LVtzSVNQo>__C#@l00|MClNQHWEc94m- zlU49RKugME03a%jzz4#szz0OY2Zqtt&`AFS0bYen0CLFA=_oVsSLnar{woBX!3zp5 ztMnJe;xGI^DE}_-A1MDp^=!xUBRK#3iv_6;bsXyKp|m(VAlVk>wl@_0zR)p zA^;Ra0g5d`|4U40c^#;8#OYrgZ*XX=qQ5x*F7R)h4Wo~t%UZ;IfMR5Pp#M+^2T8y6ibl^q~Vr0@j1xm14Y`f1yxorhqcU#j)d4Wb^;nBARaFVlhu zKyf=gsuSjFWbTP7`LAPPEeZ5~JUwr?kDsw77e7&A36gp5(0_WZ-K;)WPmA8Y6B;0N z`i%;fJa~AS@4VSO*Y7;VE~QS_2r|C%yC1njOyzdIKi<`PwAXFmryT!!FpT@%U!L3b z-cuO=V&L{pzXDCya=vxz@^U_TKRjrZ@zHhov3RubvNRr68grx&=>ugS>|@C>*2zH8m)y;Gr8dnHH8Po8DJ;cqs9u8e|1Mk8<`3(GFz;a4+b^h?5zkx>jYwTl=2<#tXQu*A` zcMG}wN;4qJ9PT5$>$?y%$$E2Q^y88)9cFhrzZzLWw7!;{-(oQTEj1K58x*e#8!UAa ztP2_}<=5Cu68Q^dLZ3a2KiKfGsApoWUI*-%TRfO(Bn%(aGfqBKX#$KJYL=LAmYBZi z-AeKmlKA2YW>$ZTNDgc&4<{#3*aK4e+6NVq2TW_rcBBT@e;MRRi9PEpQ$Z!P=j?zR1i$lnc-~SYp>jSI`7&v4+0+Mv5;)lx%Po`Fz!(xAR0vrM_Xe z1AbJv8&S~(T}U50;KS)kxQAZbCg4?|SBeB33+|0mv)gLxlgx7Zz8#;J%kq35WDVDk zgt?J3gRxUvwGGKnYur8VZHdEMnBU6<*fJS&b3dD@%+NONyHx!j8XM>YFBB$2gQe8^ zV>93V?ntKhn3J@Y4wy@{UN(-bNv?IfyL@!*rlx`&ayPgRhj%9qs68{>_7&U3+C}HrwuW5FnHxDlDj_rL@S5=0PrLDo zN`E8`N`SsOL*7j!9e@(4KrT2*$tJKgl|MZp1^Za8-_tg?N%LRSz6$t2;m1hdOwPdX z&P|5p7F>EYKP2DCj=4Y2&)Rdz8Papr)eHDdA9pJVO{0E2g^hd zgE+i5*<iHfqyutJ}ryl+ee*5jac#BHPlI5hblUeRL zRrvDjHM_eYD)W*8{P|F7*BPe?PwdHdbV|i@RSx!)Z+0ll(()#L>?1Q6hC>)B0$*pq z7X?P9=3#V06&UTd?3j8uE5p+XvnA}ex|SAMUa#@ni4YlT)W$#Z?q5IziPp;1zj8Cr zz5T>Qf+_~9NJ%Y^Qfu^l+tWk~;g($~EzKa_B~3CAP2H61cxBFn-;<)NNrdNLbUtT$ zRoM}!{F-1F+$NuW-E#}22*r~{IlpzOd5G=02oK8_wh8A`V>kc&{v$MGahGczo`b)~ zDune8dXJCk!)=ZwHmc!Lal8JynS%<_)q__q%;$%lg?s^RjP}O-^j^J032MJ_@ZOj? zwU1MQxYTiPhB?K@$xd78;ES{R=~LGqjw0rgglO2KGHy&KD~}N$M%hxZd}3VhYItn( zD?WtuiRP92IC!YU#UVN`Uq5|yy5H^2VC@oD>PK9<&mS+oUDGoY4(in#Dqqf0945oP z=wmGwW(8u)Y-u~p#NHPr?uYkCY0<&F?6&6}Vzdct z0LKVshEh8=!(()CXP)!V7G9E3A-EAvnttesY9H{hoOp?LoUrJsoqfy>wIwsMm%*1e zJPTKAzbpwi+1|*&pT^&EGFABN@Y!(s%)FAnrjZKkc3X)sRbY=-*hs7Z%z(!l3T!w> zG38?^{YC=ox*IN8h*}yP4{yRmt1imPZspVSh!O=Y=y)C~H=3Tfyy<0jDN{GD?L08w zhAr0Ck_!Y}Twx~o4-JS%(3M8PAL?No0lT*N)TfS|0WF>^%ig2qi!{z73WPtdhWike z@OW!B0{F6JRR(_`#b6@FeAXKzF++T`%xq7A;vbGDYO`K$U>}Nvq8v&Z{c6y=_dQo&={n0vMOlVc1G}# z{hIX-Vcl!tWbGhclsmY6dM-XBbjG_A2l)jyDtSnL7Tc02e#fzKz$REDGDV@sO3)Q; z=|)bAH-tgwWxaZiiG)BJYd`?!*l8=h0z{MZMo!-OC+MYyT~VvyBIn z&f4@q3i}QnRp786I0td{=4(^L7mGiZ-WLaRR_$wqhAz3d0qZ2x^ofyJ>JvHi&1TY- zB^`FsN!KZ8U9^l1d!6V#&x)sZpAKN^g$|wEUQ3lnnN!gqZ6TPKh*a4{Zxr1Q8F+ze z1gmp{xe?2}h1IYDQ(v|b|5zjX55r$Oh(3YW#fkdvNeB{P^<1YOxcMst?egR`frrec z+_;zqB2JADHcuQN`U5*ALWrF6E%cR>n{V;irc3fDKXX&$bs;+NDR&k1dBI^1P4t!GBCQEoWcmjn{NfLvL|ezb80DfCk1 z_7y0s^mGP#i^6Le&nsVIa!JtdYyyI9jgc*P9hPq<3O3 zIv210(0l)1x(NR#-EPmO)QQ>MGyE1^ z_{)D;E(EAumxwA*y8*-_F!}q#i@4)l@5Go=qaJSZad8thd86Ksoz0$3;;<@aE9$2& zc!enr_5r=k%+OCIOC3DXi9`&P=QPgjt(*u7!3o}X{Z=itx0W%vXRpl9Y}SipKJIJd zNK?ZTQ*`!@HAidY(PFc{uF-bIVfTLwJW~W22>jkVHaZAmvb{ONkobZ^TJBI*Z!MXc zVyAL=;bSwGV(rKI=htK=E`v+lMGC!%*WqN=qlT2Dz+OY^6wa>!NHqYFl?Rkj&FrQ^ zSq*ptx~-}kliAxZQwgdI6<-k3>vj^^PZE=_)h9M#YO7#sW%*?qf8b5So2Qp-y6j|g zpJW@sYqmkIKF$K7QUdeOs?{jAe|uY_t+YIEuJYl87zv1jcd);#FW-(&B}}YU$RPgc z+^J?isRlyIO2FDz!`RF515;SiB0S~fU&w0ilj{G1T>NjyL)0lCNumI%xys>1AmcTSj%Eji+Z09vl<-`wS)a3X`ccm zhBIq6%WLj?%VAMVD7)baj>Vb|7?U<+XibZH`UU@0wNjB+SWAliq6dlFcc}Oa$-A1i z`#5oeP3^*~YV;fR37;?j;@IEzCyZ;-iR;JB?U1{nZ<1-y^!*H1OZpvo|eSF`vtxF&vie z=eo5chOd>wYM#+|7Vy40tz}MuuGWgCj>g>aR(y8r zEHQphZb)9f(1XTpP~p7gOtU_5@9o-Sm`LLW4b4=P4oeKlmT{$A02{;}$hy&32UBu` zqBfPqn4fK^MejbWs_s9F+EB+|IZTC|&V+m``i7v=w_FXjvO!68%eQi1NhM7C-C(zc zuI(LR3IlM|nTq@+Kl8vCF3GcDK>%2xfyAY0Lw;ElqYLWwcD5f@?m-|zdB_=aRAG*w z`?ipf0H-HmJ03AbEoC-Bk~}Kv2qfVyZ0QJXW#y!U(o7bjU!HkXRz`cG;XST$J=qm* z>qvq8rWaALQ5ULuV&Qp%C zBoHKvkVCdHqbz`DCNXHhx^G-20aKNuuB2Ih~XfaW6&vyc1P-_wJ-N8*Y z^;X#{nlqge|L+U*bDhfJLYo2mhr|{DV$cxi^=a@Bji?j+O1G)qQ0RTxwDo2n`(1Bb z5paC1zHh{!?kP;_4qs@oh(W{bv0ZvLI*U|@K>__tO#Ab5T+x)H`&P8IIgsBgH(-zf zff5$-g?K|SaV^*+fRPQTUnfYtl5Ap3z|-O(Bw?h9S_MM-jsnRaCo<{uww zv*A)Mwd#>Vs{uACEX-hkO}!mTLDcb0_DZwK8>1T|FbO7cEk!9%$;VzaJdadHvkoJW zRR)W;^*eeLQeb}z9MAUU|2QV$v>dpBe-nA+RC)eiDrrXoh};SGOGLr*Ey9V!{!xi1 zClmxq&uCO3&R~b7v$D!Q{R3USMfORW7}OIiAu}uwBm^3X#6c7lNuRmIy=s*|5|<>7 z)yQd$g@!5O$`%^g#RMkuJM_9%pJp$8m0<`pUYF@Ki2GB5{C8*oTz^lTiozTh%x>?3 zx;{Vr7mapQ5&&rQbe05n6e^KDs~8}z9nt9&sdpnq%w ztA$jty-e9JYqEE^(d_&5l9c_&7Z|t1EFLeD9xs}iom!dKe{`Py{Hq9`;J=d z(RLopNzZ}3?Q`n=_Jhve!_=H3+aX%vEe#@7v8cg#)>wS4sp3x0($CWUhf3{`CB)ip z>lr+`htsQ_KOr9ACH|MOj5hZ z=KbRa-sB3;g{L*abqG74)zGbUh!Y^NHad1V5xc*D-7qXdcQ|t z>^$_J*$_kDAf^>~-_c>kB5Ue=yovTHqU`|Ef7luW}q z{p3&dbCwj8dNB3G89a^hGY>y%$A)^DSCd{A`wRZVVI0Vk{We!onuZ`@sW=#no8*6-HD z5RBOO^<*TF?@CG(+{c#`Z&UV8fPDl*L?Iw6hoX+!!o3|`6@fw02UVQ3i^j2t7U}@( ztTDD6%77Gsu2;A2WeJUKIA}X)*sPOju|nvww>`T86kWql-uY;~KC=m~JQCh3muv5G zP4u@}UgfQSet&ps(lnSf)NUYguS0R+UByN^fWSZV1^sF?mr77IzvFV(eBzoUua6Ak0qsKDaPt<1Umy)ke<0_07bL_12cRsE6UdJ zRX4~&9g!){GTclkP^}q_*4r%fnIh8150SwLrrvO{gFxi4aJ!id;P61(tZVRpeTMUTuzP@vSWf*%Z zB+BNDS@IY2*ROY1fO2-6!^Cf(;@$(~;bsp2u=G$1NHk6IjOcx_2J24!e@)Mv2Qvf5 z+ktJiR>*RSG`aqr`Y)uNoj-nnDkT|S11tQ@1c4(=ffj#{5YQkX5b8h7^0O@5=-uIg zWP$TTvJqz(g>e>1L;-82Lxb&M+h{Eso$L&jN0>VD1WR@ zRX%*Ycjm5Mh2yjn!wb-=!hQ@`Q=jz&Z>Qj_N;t^4a!naKsD!I{_M@B=l3|jyAm;@h zTCw2mIJ((T2)lxWNF3Xp4_hWMf$7(v=m)nHDR@?X`GrBvD2}e7xT!3Cve z15H(H_?g#{*AWeXPtr&{fsSo3W`!C1Lc}KGnRwrWw6Zb~p|O$Q0ckIld#j#mM60YH zfn$@`Q5@Q=w5bdq)z`d>s;J-lA?zvai3@^5RZB64Okh52hLVISWD$BBDuoi8_BQRF ze4Eiu?mMQVCsr)!NljB0aQl~srwn%0mo;f2Ay0@`r~`-tTX2iKjttqa9$EOAQi}S3 z{B$VXS&xLIt?rKXq|BtHZTb_H%~P~v@iCeBPrRg-`DujQkFL7MaM{)~=1D!lb43e;~k1{z7!3{Wk=G+OoO`=osy? zAQdB(J*g1b!GZ}--`@GMY|t$zbhP3on|x4f*7~-SikTXr5FicJGFl$GNgXN%P?$s#WxfGB4#s2F?a#lDQ zEHy=7W_FJ90aI6;JFK7qfsnLSdME;E4)7z@WFMT=qP%B{v6Q@`nsRhfA(90+ z@))|segZC!Fm*e_%!nMe7*05wM8HCKv`-KkhHD=%3O z(|W%I?i>674r$NnaMc?9;xXFKKIJ2Mo&lVpSI*z_AE%9)bA4<=RmcH~GT)+wzH`O? z6v6we2HC<1n*MWh;bS%s){_4p*rTd=n%x8N>hm^DQchDOYobLg5OqPb4ZC`YQgG4~ z9`{+|MJ82H^9pr0ohnN|9HK>Np)&G%iM;0WuUczpfAvUctGLx2PN=A^*vAn!B3^_h zNupgGNzQc%Qg_pXNSz{Gm%61;eN3zq)f(_t+ zK(kXVzPYx0Rn>qd1NXHLHaoq{ldJ+{xS#$uYDZ2tjc$dF0H$KYm^S9(FqQeq@&Sy6 z>SVXu(DV1%kWPULe#F7fVF$gz*_xUv4qv+Hb)RAN zjYKP+Mp=~%Ol^X*uzW8$rjVKPDPN-#hGt=Knz>Z>GlhiK>!ubRdnk6#AYEN6z=YFB1?I7S}2F<=S zki>N3soDogL+H9pP$w770qYtS$>AInwZHt)f&6JQrix%H{_3vl}jBv6!y6bs4e`T4y(xaBRcw}D0 z;hjey&Ed7^Q&qtW4wzbF0?luU8!98gonCE221W6|c>ukVbq2khM4W<0anOe~N{6F-=S+RNpfT1gx;H5iP~cmXr)(nGzuJzoFt)@2KYT9oHX0hAHN_czfZFOb$hpjp1<3 zxiFuDYJ>gAe2qjyZn=gHy6ydwQrZ26+%qTOaX9=b_A8(^mVBS5GSrkD1QF)};}?iI;|S4c$z)G>7Sr%Y|7= z8Qi$ZR5~+2fgI(}EiLM`f%4R!28#g>U^_!uUmjN8<59Wi#=I+S{K8Ql$4{h0$@r}wJdFu9A>3ZDC@61g!=+RoU^^g@tq~PgkZ_C zx`Kxz3%O8^zz`(4F83iQlN~}vTiZfNe?P%A4j!7A(+{Qn5M z>##P~u2J~7dvPyPTuX}IGxM87*}%}3I>+Lukgp4NuHRh62;pxj3gNts%k0MAq9#sS`9MVs zd~pUA$8l7|z!zt%@JvVvuC&4p{XD--YO_H!xc_zF0b0H#Al_?*)??uu-(F z1EP59$&0N{Gf!MMO5he0R2Q@i(eHr?>MD=n1`ZOKC?QIJ5z2}!7CDiMQ=-06rHiGX zXwmqnYzAFrB;SJ~*tsV%qeMiV${`62ij97w9ce?pu2rxC?jy!Ri-bZfI9UshF&jox zVEr?$LxChUu^#(Z=JlX+4=CNY0-S)=p-Hsy;c_*i+`7>+wfCv@Erxrgx;+|I`g9`FstJ}ahKitm_!0S{4kql` z}MSckDD53mbD(OcbQt@u*F^%TMFNpM~zXhXp{ycp0pSX)hk}FevG{>dEWvG2=_F0gCcgD+yarVY!bTMD=BQLiNzGA>uC5zrc zTFj=s3B7{eKxbaVK85clv+SeY07ludGbpG&{qnIjX4{eS0T}4v&p<&`8cp3~k+z6W z>mFlx{V>0KDHGkG=CEF+fF~VD{s7?_aOI1$WlktM5tN1#PY%hrfgU8FJJM8Zj0xn{ z0h>zk;CUgevwD!g+R4|e!T|qv?V#Pws67* zx-FqxG@@M&8a~mR4fHjWAb}d0udjSr*RUUvx?Pmx#QdJBm@VbCzIeL5;j?I`}5MMF9DhxdK`pCq9o?-qogz6^x)7~-NDKnA7X&FK{S^F4< zSH)*7*a=I1lQu0LtX+i=^P_`=k+K9A7eeyDf}AYDLn6Ng5}*yZA-6vz1qcUU$lh+r@n~V zO_WWc<4wm66w#_&v1X*)p{jYclfXeplxRc>6mO15?l^i>Wqq z76W9!!U>B+m8fJxIFG{`wgZbSljCEid=WZ^zKv>ew>bpuV*M4C*obQ|oNG{shd}Hw zWX2|LoxbaX3T$}wZUx?zS-E?K*8*Rg8E0$K#~tB{#=|_MK({Qz!+E=rp!JTzq!z9AUUd?!n0gz{xw{ zQkyjnr#Uk#Xk?q@W{xPEr`mbHa{vEh;K_{@IiKgX*;%D7k7>SdoXSc`{Z*{rc`6D5ny`?Scj*u0aHr}G4pcw z>p}O!s_i_%>l{w=W~6x?_Ixkkp;LE`c}70zLW1lPUSWZ%d0!Omao8cHt#XaPh>kvO zZFQAq>_cz!luMV{@sQ*ps#uK8@B-!<$L}Gt%fJ|2!eC!uYp1lGw-pctjnXd=3l`FX zr|pxuXSl6XjXw{jK5fc*z!4hD>;trh0A!~F+Sud5M|b9hO5O3~9tkEJg+Ek-dw~M9 z<$$B!2bOE(W3mL-$gxar>6H5tyg&=7EXiBNx-oY%dndEJ6SmzcYt3D@gsb!G(gr#S z!;^TRIo`O zu#TO4rTZi!M3(KMTFd>zwc8t-yKM@Cx5%%`iduwyI0NdS8x~wExRhvRwHEmwX!=V! zBYy;J8KDQ`iB@}k<`l`AE>9rX#?fwj&kUM?#eJk}d-I^gAsV$msBdKJSJjTM9Ie=u zUPP7Ws^h;xXO9K^agN1GI?jswCBqP`#9~zN!dHW$t~e`RkjYk#>2#;VeR%W-a!dDH zc$GsxMp?7H)HW?E1vWEiyK$Lm^0`q46DEl68gne!opX_`^rZ<|<4xMI7wejz!TN#V zPCAx8B@k`#un;%ho5Lh9#Z+?$uxR@XEZ)V&c+%1AQ3b!ye%G}qj4_B9`+}AR>|CwH zO%T!2*ym}LsE&*{IB;R085c7d8-JNHw2d1V^OhBUTLcwcM$GaF7#AGn>j!3cW3&!Hu~RyOdQY4{FLz{StlJ&mv&`Q2_(_ zKN*c)|2v~2Y+_SL^8C0ME}1)t+_OyH!2!PT&7>=)0a_XkLdb$#3OUNm!cv5=Ody#s z!Cut(IRry&1e`Fzd@opF;bsc+ZVKTWmF&WMms52qQ<2YgDiMI;< z3@a8v;lh*+OEs8bnH+g}b`Ri2(XdR^VIfL+UoD0{X(9-=GR)!Kb0MwKoemQXji zLR5pg*sdmOzK?o+Q#h$j$$Z;>+23Bp#wZFO01LA)C^H1)#b!mZ2>sfj_a`}uCsG9O zsBTmTe!QIcGeyA865Xv9%j{=h*2+>5tfh|SHEC%+DuBM(auHQi8V*y~$b-I;Ef%N7 z=GWMd>M++QP2|7=Q?B5v#Y^x`10v}33#lG4&0(q;W5D)jFgsCCjvtdv<=?Z^Ko87P zVI|U^SrQQ=j#LF1+7sYxivW!Q7H+gO_llrNDpahus&xFpQ2%3UMAm7ED-hpRW0A+k z9Q4)E)8x@HrJW}XG11d}(nT8#Cfw5C*8UC=WVTHewn47H``(C+5id4|BYDi&a@)^A zS|0RW5%hH3^&9X&WpJxVv|K7uu%8Nr&(OX^k&?x{NL(||FUC{B{9u9eg}`^OJ?7l4 zGMv<#0-?5BC9_pqAvarJITec@NHmk<2XVz^Q@kkB6tY&1D(>7Zbbke$@_fMuaxadK zd$md^@Id1#+p zmTln*p*+ljS#4dDpMQo(C$VwVLa_=RdWS%Q`>mepVWi`NQqI@`; zJQe6z%pXT}UY)yij%K4Co1T*M43Xa3#DYXs z2(Jtn42+V6MtcZs*{rI6;-4T)cQc6(ODIc(}i#iL|bGlGdh?{o}H+bJ{&7^WD(qmi?+VA2KP^+S)8wF<_>@7M=O*&XD5z;NJ81{FNkH$EMPo5lRevs(jq=`By9> zgr`_2LjQ@ifDgnn!-mJaonV*^^A*)#4;roN2QJ=W-viwaQ!L^G)v<@|R1>6tD`!KH z87J46w$-*SywGW`AOFW~lXP7^PjLf+%B~y^0szr}?&cQ*5*`@W?qj9C z9UqepZgbl|#K{^xCBZ30E<*)<$VrEDvCnB#my7GJZSH7CuW^yOcPI4XBy{<{s4)Rm z$ATp^@chvM&R6p6x4DPe=4JTX@*xNC*|W)_@v;)2X`AB&USCnqmL4`w#aYJs zc+0J9xz_NbYJ!JYoULA3pS#nj|MZAENVeSdR5@5|v*xrepPN-NFS~De0GlzW!-;(7 z2~)V7a5U#UUpG5VmdQ*AJn_8ywql7#mJ!1%<$A{~y7i2^K34I)vm))>F6dc2_e>z= zCSH7~dPl-b%0tHY=y1ooQu@2OxqOxB=}b}iz&&+YTPc>X!0>GIj0f1basJ4pd4|G` zorgqvOdt=B-3z#~#sm$%q;KZFIrU;$XW&B{3t+o=M@NdTzy8`f*T27Z2RA-ku98*# zPU8N>#&-SSS$Tiib@;vW_X+#5%?;(8La>jj%4!Sljn(faXEhQl!&9?1nb|tSE2WaL z5^Rpqd4b2%@_PGWT^|& zZ31d?Xb-o2I&~!@Z`GGpSLF%{e97WjO2||qB8Dz*Z`ZFoFQ)cwuOHLn54=v|Bjz?A ziO6;yi+Tb_7G1sEGo|6*osi}Tkj9tqWv6OYY3Fv`+1-@v{-SCAQYlPiU2?!gf{rai zhW7ASy}aI-GbrK5FwmN^=vD>2SH}(Zs?uL>d+ zKuX2xPYp`x8Ows3V$bf;#>F1 z9(~u-5#^rH8LnjAr&Jk(hBVgoB{s~4FSuNvio`vghJb-+-8nkA3bTGCXo((&xlZS5 zXG6`Z?hov$H#z=b#K^hJ;&??WX7yd?i%l7mK_hpD<}>UH79NB)nwe2+kKM0g)D1EA zz-5)FmPf{?Qmce59bj61)Ocw9o`zU|)o{Z8t^N{sIT{U9pZ)Q+ZecFQFz|iTm2Hd8 zSEnIf{upLhw~?b_-Ov@^$S!^dwPic|GuiiqR?^W9gJH!}u!)(NN z);yGX*#qf{Ns_v-kHUxbA|1u8dIPa4#MWdG)hL&sxJogtAV;p$p=N{Xyj`WcH6a3p zI+?t?2-k7j^}=kB*M1Hb)j^;sDFZLieFt73KLTEe1YW2RYk;-+Cj{{3fk{Hgc9st&c9dqSIre-HL!pU zTLD(X0#%aYSTl3Xjxn#^Y2v7HEFD3z|`k@Qxz5^y~m9a5; z-S`dEU%J)T;J)9I-kP6@+1yGZ#!5!k^9lv5QNCEL>OSt?9S3f2rww-ge({A!Qowo0 zbH$O%@#dJP(fx7PVshW&@=aOaCMR-%(-1n|!H+Msu=hN~kNM0F+i5ut{q4~@(%>lbGc9(x0T?Han? zTKIKmRym>tCJ8$CS86=wN*#5_Ou7RYuKPWAW1Ew|fk4^p(8tTQi>`r)A-R-KlO8Ku z-lJ1au?cUEZ7y~`Wq68QPo0b<@HQ^JKc*a9nk!pP@K|iRlIy82+Z&j)*0gK;=DC^tuv4gg{UWj9>8mhq>!33k62@@J%BgADo8 z(+u4XriGDo9g8~-O<}4jVRr6rOd$H@GT`k#yU)LjbUQV~_cJ1A@u|^4Gt0o8w0e{K zF)Y&Y7RIc=Ix^plNBymSd@^Hs`@&YVs>w~`p%zV1hoj=lp}0- zOopi4Bta#KdJ+G!TtK~E<%()W!v*y<9=#$uIDROfmCa!@>zC3o(-wy7lEWM^gBQ(^k1Y=e0&px9f(bbp5D2+b&_N_~=T$S5{f1 zVo7CNyCdAYDhp-lW9OrIwXk=ukoWa!`+ zbR0$B4LbO!$H{nDH=I`tb|V2>m%T}|7_~BVKv2SX4SHux3?Als*DG_2DJ10AaDiYu zfVlznat1-cekitu@fyufMjL8>LU zc{4t}HP#M))S&Hrbk51ejnQ)r&6%JR5&K}e(nXUm!#V8KN(-&G%eLy>ioMp22xxiM zd9UFcg(o{-2Bb2Vg`*(ayTPu96P9m=c_nmJ=n zYDIb*;YEry`MR0zo!hYL*sAaXx4l&hKYr)=ccWGolWILK#A}DDtS;AxG-Hp!cP0*U zlT7jnS)0f6XK2bkpaG)&IT~CS@w5wX;*%^+=!{Szha1oAmsxLC(H+uc(JKhoWdu5< zwDH^cYx)^BOKG;8nZA|5h6s^-ZQiTU$|l;6`Ek~w!pZT=xio6;>gT*}TYPma7@RHg zgsY5R9iMJL<0_5*i=R%=GSo+L(PcZzBDw3#b|eDnXbnx4hc&ZC)E2v0Ln84b`OTJG zi8Zq(9gFAZRr=tSG-lS4-&PLcTm2CUs|m;?BladUOYgMxmaxC>DHLpzmL-2LAbs;G zVD4ApqDI7nyR%VVwy+$Y+Duwbd~>z=AX&Mo=OC}rYFa#Ct4J?2k0*-hy!I!03%+SY zglis5xJ>>szgNM6<+k73#;R_r8FVn5ya;ffYHTjvxxXgdG;WnIc$+(F%v)=|ufsD_ zGr%%k1V6YcSpHyeTCp4(y27%zhlRLtrbO~tL00D&kIbpjfrH!T!S=h)-s@H?$ALP5 zQA?#bRkXkb8@r3VP0RkKGsQj<=Whw1Dq-OE%m-o4WJA)@KWagFlwYeNfL)Z?g*+PkxFBrP#G_r8P}gKhQ7$#WrRRNzXPa~n7m2sj zA;Mj?$dNhGX7mCWOQ#zh>jIa7>`m=nM`33QnO*L-@)kEOyvwOW@|}l!=WdOp*KUp4 z7f>r<-APvv$E zRS^STXM`yh2GdfLl+P0-AVCa2G^A1=V#cvhH~vEFf!$DM$$X#4tBO7TYTU>=OQpb0 z^XAv|6aZCujUr#uMcm6Q3;Tx)J4SEn43;FVM-QM%>{m+l`G8~mh|;hR(%6J!ZW|6= z)LSBPOTLYl6?EYm-VEr1U7M@I_lpK$L~B%kpUJ8db$*iGc2g|z@hD4C@;^NIVDE7} zd2!9WV43k^UuPu?Fji}E_NEUp`}Lik5=cLjS6Z2jMdp{kH_~6rD|<4Ro1{)QfpA<~MhCfdN}nbZ{w0n_x|6y!}W}W$y@q;Zmym zMhc}6|0_*p3%|MTVzZspe1)>O86JY~+vp-kclnc}bRLF!hpi_@p2LepUWN5;^nL1= z=_dKp6*o|8$X5=@xZZcYz4xDouGeIt(uc!U>e`8kPrW|1!U5kj17~y+MoDlJ61)6^ z7rrAqFsjEyBletrNAIJ^opxzDM zgR{E5xFFf_^|#(}c!EmY=5fGl%B1p^^J5f~Om){s90bFzJRfOcB=t|Ziic>7IdL`? z&$4GOf3B3rzKbgaskEtoW^GB04+Z8}*39!ofSXd(PA<{$$h4iu9E00pPTMi+t|seb zGwX@w+b0txFRVgTi`@)8R7kxvAroR0=pOal3KaxE-#@_>$wx4&8_@x2#)|9iuK0f&0yK;`N<$32Ob^pi%0= zgc>;ScV;}X{V89SJKBk_uc+|=xrNcJtr)(JaGY!*=vlGnGdO{p%LF|xr3|$HHU_D; z6*hCG9{q))K21ND`d^6YOP3^v-kCXz6ZUafUKe1tzQ8P{SiYSCHE|x>Y{)`iTG=?r z-|ntBcUbcO{{PPo#1VR);j{z>OcX9U0LnIz8#ot`6w>UiDdsZJrLsBaWV5}FW%<%? zvKHum1@~tAVq6Cme%^}WiBHLm`Tv8s=l+dD2PqjsGWT4u!Pukq+wWN%4m6^t^Ptg z$vxhbggcXHlwG#vM<;LfBySfnt36uHQ63~d6SVM*W{FID+Qlqwm34xf#knry7j31Gsg65dV#t ziUG_d$9GVsK=lH^Of99S%BvewW04{oRZ8eCgU?&{(tBSm;0oh?*cEfS#vMt$m9-azCS=@zkF7vK;r_cdXbhbD{+;qtG zwdPvqyU0ei9+9#}wQC>e9>1xZ#%lN9ZFgB^a1)o3s`k7zThiNC^!$;v09*nciX%>!bs3|qnf2z^r;Y4E*qt)5 zxSsGmk>b<&)BgFJBTbMig>Fvt=`;ly-G=A0Q`qAzM zKoGURTJ6k>b5Gv~?K#BGq>&$)un0TQ2p98KezX1v2a|v{T`s6DmHQ3JNuv6z`cWPAf#Y({$+z%v*W5F{10Onb^f5bfhAC~OxT zA;O%7c=iKiN1&j84~YT!_mBtkCcuymhtEUuTn0QNtLGt8{~#+g+4gkB!MvAHcII>z zIQWZn7hxDep-PD?BD!PPy(m_CaFimtrn7uKVH&TtKzO1y;wV zPVZp^GjX3tStUTq0uUg;w?bceMb=IO5UOt8y@%=bL%0fU85*{Unl;*~m$=2M*35M& z!tiN;?C9~Gf_M*ufH|LqXfuYt%%F0V{DF`H<8_wZ!X!QGS@|;{LOS|lE8 z0i&nkIHcR$A3!wHj-e#i#g!@&6Ixd4y1yOnNFxFPW1htw2F7O)Trm!UAg?FeY7&N_ zT*2r-cnS4F7)F~lWlY*!B?8Iwvj{z#&uku6Fk%f$jF?QOOQQx%C!9!i>?wg@5MaM} zIUtV-a@=}~KUNP~U?L=qH(HwE;9t+Z^+Vuc_vg02RD12u=Bt?q=r^^y{!Hl0uYkG3 zguqYsd0CjwGr>4YW7w8F2)rBqJvB2L07APUpCh68=^_ln{~qR50K&%U^lz#0ZM-{} zQv&A6rr|qWGaY@$P!1Lx3Jgy224@?>|Cx`JFpT~yduB}ySh0s%)R&*bW%ODBCZ~k| zy1}0SKwmu(C_K6+8qXRpivVAL-;7vHo2%hz!aV=?2?LQ(T=kvVUR<65$9)r*?tr}l zE^RxfrXR-?J`6DMRdFa7#F^Kgx{(hI8|H0yluDlW4e_wH9eR;LaDzlKNT`D;F~Khe zHDhis1qVqxA$I&B>G@8&e7d|dIxxu|7|?F}db$$E7DqHY1JC0Z-KyolJRIL@I9eMx zTE0mP2Kq}Q6rQjB)bZgVJJCs^B*MXB{Se#tl-Wjoy&+LxR5J7eW{9VMKTC1mi`9p7@nd2nso1F6F*<%aV5 zC8||4+si{5eqQL0t(cG6o>CmG{WTTC9Bt$H!YkjL*-^emM50D@Oj-9%^(`HaEcx}V zHuaG;=@E-kBWqvMx_h3xVrqMR?+Q;ghwIO zxfC?;IpG~r`RX@qzqyRd3Wl8vlXs5J_r1>dKD-%nQv1>kaYV7x`Q?Tn;~`ac+RAl? zg_yG&Bc{%Sz`50+ITitGLLEa5HREI*(=S=pQ{)I@s=Kt(t6C2EaOD|Y2Y(8iTWy^? z0saTmtN*MLU%yD112UZ=z3l$>P%4d9zKUP&MJQ)16wG+^!Af2+r8Sy6iAiT5vpb;N zP;T%b;UCd;7i;PsWu}*8=9$G7(27G(xGQZ2sHo0=MroQO>s_Zxj%9RS$oY9QasVi+ zKKA$TwIB1IlvT{LvO;)w3HPRWDKq!22eq9d*+mh4>~*eOPx_M6ee~bTDj@?ajD?+v z@%0D`NAGz3`>0O$zm!#CN=s78&nIP71}Lk}Iz2B1qtKRz=*bo%Z2?h89q0RnAycF) zkZ(tWq3;<3CvB0e&OoZN2O5qq`!kG74h-SOY`SbGsjQ`Vs# z98hWexHvaD&5>A1xY$_VLgv2iszRlcQ#E%|9Cch1>hz_$Aa6W%6XsW!riJW8hA37q zQ-ChR4B91kzula5r}K{WZQfQ*rIe7yOT}Hnd4VT6D*>q*#_UM~p-iIhDli(o;#F|V zo0|JbKYMVPG>xp4-)1IT$NJDXJ2c&q35jo7qrGl-U(2NuCsX5*4uMUZDJVwy!#`ReuV=<$?o4m37AgSVR#ED_;XC!63d-exOP4G@)j12!5l8QC$Rn=L@DlJEuV03#X zQWzsQjh&%v?W8zW{-(w(&oZgn?)r~R`auH7q@91uBvvVoO$NDR`FNT@Q=o{ynAM*m zo|x5B5dgFLe-{zfEmAH0U(AZ(8|h!n>hKSHm%t|cSxHZw#k?y~k zmH*rmvuf?Tq`rd!m{st9m{m3S|60rwvod>TR@y>}uU_A3Xz=cny4MVpcx_Y_Zv(wd=67!y*6}1Td?e zznE30f4;)Xdz`YRstpWz?a|ABj1&7Tmz(Wr+y^IPhX@7d?Gw@@7N+M@Yg%VY6jRJ1JK<0#t~Ikd!V*I5<} z+cUo<_G9atf~3;V6qV&6x0$p|3AdRHD@K_ZNFlekEy-f>VxO?s89h76pDJ7+{fxCO zgSsS@fg5(-$vZ0kRfkgME>OpVo&3t5Ivxg=s@N(1A4xc5tEYPPT-?aVD{6Z@x8g4bdNkmlwfy?d86g0E7( zmI{XL-53U+2=^QnABotl^kBM(3)fo9q~Tm2JWiwAXEB2)?zYzTP^ zdvqVrj$XLX*xqhHL@N$q+v7hBC!rbb$RNDNFqWut45=m-27exmHqRyY7wifiSM(8M zY|O%mtvbL8n~xOA^^wSdRlCP`s5T;uo32UR&+|pg3OH>leY4=s%QRENih^Om^(3OY z&d*ScMopfekHnd5s2z!LmHJS$1=Uc1+Edg@F-E3xoSLcw{imn^#`-I24`E#H{&UpI zfT)hiWWHZ%xE31tfQTY~5>e}gDr@p84BpQoO7Sz-99u4$FJq%v5`55`R0Jj*i*Bqz z&1Yv7g!=5PGyoH(z^PfP06426ZJr+hGNSi+gQMKUG|M6IPp%3keOaZ|(9e1+jLi0{ zfduSJb#NGzC{PTh2K{VM-22LBx`aveOqXf^x|Cy8rT`fl!6oDK3>!P1vSAez&GdV<;$!+|$a2STOmBBm~*gjp2YD$mwT zU-;RY;R4oddIZ-(S&CJ^H~|gtTLDtKvNMBLp>Iae0TP9VP)jvyGyT?q)*|KolVDR+ z{g8TquUPvbUMq)|v6~R&7a#IQf19T4S%q~6JgYD!K!p{iFwGWXqxUMakO0=~i*|kf z3ivN!nM(CRRH!C4f5RsjICisncAy_JkI>6IGu z2Uq|~z?V(3yVp%8_l%;rWQOH%Gk{6!i} z#xoO|sr(TI$4)V>RT*V4)?A^IMid8;5lK;09Y97mC6eCs#y^F{aBz0;3$vq?*}j-; zCXK!8u*?j3`uw6-nG+sR5)E;s%?w!>k|@+)8{LhG9+tMcpr94Ti5nh}7p3;aQdSs9 z$9^(V5;#VHiP|4CLM=}008Er}B4DD#6nk9o1FE@y!&Ljw1D^yA#cF9`@8odksw#cy zjahQ&xbU9#)Y=X|uzXg8)lwdojLTJGqg7Ip==txcPtxk&QOVH)sL7@)UL~R`|J4Gm z3ZMm1$hc1}7-XSDJ`xsvAh*X$OiEH*yyhGzG12t*8`K+LN+F^>D`tC6<*r4++ z@c225{&)(8R3(w_cThncl7c#ZahMT@tu+AwNlrv2AgxHx@Pqv>X^(ht*dD{2d^(n9 zI*g_(lfx~xSebINNf~V9b7@pXhs?o}z^^{u_sP<=7-5InkWMpW>_z2Lz<(S8QTzU9JN%PD-Gw{S^+w{JPFV zP>p)kB)B4N2G0}G#GuO!6>O2d2vN+G2_7gWeS-a-AZf@j{!ME|Lk~LJ%>4S9l3z)_K-A0V_8D(Kxo9)M~s*nNZ=W(f}l&QYvMjQjk3VU(`wh(F9vgYDGi; z0`G}wC1i0fu?6};=K?~A+j){P;w7(0#}+iM1lQ&C0ePHF!$89~zpk<0h^+?}p4fmr zvQbvErDZ4;1niO0{-zvUYl0+foTlxRQ36VA;$qCUm-KYpsT&Zy6 z>-O0pp;1`jFM8N`@w@j~o;t-WY~5f0q%Yy)H)Z!zB!@M8KAk-VU5$KwUP(MuxpV#1 z<{1{6z^W>|F>=m45n^D@S(32&HOi9@J2RwvI*_{%I#}3_PX%5_s9}yn7SHrZ(&B;| z8QSi|d`q5;95@C+l?qZ;eXYxJ6kOLFG3`uj{xo42$fzJO7OHm}O9)BnMl zvEVJczangMLP;pSrC<#Tea5pab2ZQQdm&z_ij`;hfA*Qzxzm)eN*G&)U)RUaKyKMg z5iv03uW=y~Mt@TNi4NXw;1G6z;6XL*|@sX&&|tTr@xGb(AK<*TGC9*>He1BIFm zO7-hmn4&Vf*YOy;pXAhe7!oT3hSiWJCT9U{XkQG$v)-xu`7F;(XOB(-*6_oppZh^? zOI~C}Q&>h^d+iRuyz{2<{Y6$#{V5X-U70A{yu}!$VBx!Q!h7%aU*SI@DaUO*#edyY zQBa@-aglF$2MO0xpk)#DQWwo*+ClIN4|fQfe<)l`%cu_GA>SYWn1E!5Ya59BO4(}z z?dErUdM9=iyfkabJT$GpBf?m(5b;^_au7enTo8XETif&|dbr@-x?(rMAJUV_@%hRZ z@-&bZZ8`G(B}qvk-#_6wLgjkaJyUFe?xFR6 zSeiezG885&#Ag_%je+aQx^gyrI^6KmrBwc9S&`di~6y9ajCw#WH<8`SK6y z(uHYEh7)4dH}R*IfOv*niPerH&pxT*FQ3Ho?32dH-XnL}^fGI8ga2YstOlM%ePnz- zSHf?(yq}oSlV%#vyAs9^j4|!hDty=bKI{tmieLksDW(KC4I&ld<#P87$5Mgx?Pk-t zpT~Rq2ad`7fn(oa5_fm7659Yh`&TKHK381`{~)N6Q+S%>p6giWU4Nd(4={f^hA;H> zo9^3;Y5``F)AK_5Fa$e5at*7y?K}grd2gjBLB&dv1C*`!qx_K-NgR{culK)eare3M zjrgaMi7R2?pqFGO*Vy0I3IU80@$?n0&BOEAT0PAMx5d~~Ij8VMf2>vhA8U1wfwof} zE$6Ie#kqmr4wy6JVHO}@!@TFU*|W9UTWIbw+ve(Wj^thjrM{Gl-!fGVwj3Zd8iyi%{Pu~ppG8p(Wy;Bd2{qCKl+!eWnp6!Y`ZBryC3B%IARNu>JYXu z(%YXk&RUa^8u34k`hS&^h<-AyMn{5##K!-wh-{9!&Uy(}$Q1m{4_n~#0kW%5r=p$J z9A8Ym?dq4}N=2^#e_N!J1JfF9mqJ~)!sW&QtFCHkKnaQ}!PhEAo6_Y#lCdz4OSc4@ zc!JG&Gn0i2@zdBe7?@-5*wQv&i2@s?p%D`n(tVWelSx1Y3r~1x;cbBnKRzm7-PECB z;0w^}C+OrcAMDY0N?dO!>OHl@QsA=R*m`jKUnB_{AW6?*K7tCa6^BTkw$n`AF~fk# zp|e|QTv+$}!sk!iT}spbfGveX*}m7FtnFsUU#FfB8HbY@`8vnq>&Ot0on+QIQ9)8>Klf89 zs9saU3b1JZ1WM~L-H4D@`D4hI*Sk~T?sS17KNd8iG6K;i1v|~^OvrK4cB1!FIYF<5 zjGob0ibJxCR6_e7h{nQuYJV68Z^ZD&T16d<{U6qf5U^I4D7l4G?rMOwB9Wm+rdu@O z*RgkMm0C6!&0l>xYQX$+cS_qfG@&G$La z9d1(MP48F!JRhwVbh%)DbKS-hK}X;-8R_vjG6VZ z%>C1y3ih+L68+0sb^5>_1(zxPprSaErlqDB5oXv+Qo-s44TEUlYW=KLgqeIa z^fNRzhFh)^(`DsgxhbL{m( zPRcOwAuYBP0khqWvYngzO)ClfUcm@$P;$L9osNd0Y>1ZTX-FDiNbbD^FqT|4D}9NH zb2H+5ZXYn1j4AUpvj8puVG!wLmFo!TAi~&ZzV60w1$=_2N1`y%R+8d&UPrT&uPCg_O?BH{0!>+u0ol&0FSNL~Krio_}rlQ6*Id>p|wACpUgxZ3~ht~qub z!S4;!vFHFP7JOJH1ECM66LedtbNMSCw6L|iaSe{oosqbg*XQfFZ$1P5EKCp$TxJRQ zGm&~R){HTDJ+>5a?yf2!N`wtv{Hi?SS<3Yzq}MB7X^TqK^Hb$x=lsBm4dVcLme-&Z zC%juaV~(4k)H!0GyD0>A7sb$l-9>g+1P=7=T%AElY~bF3D|6?ynVG2w3^Yrj(eI{l z2PIWwUzi+@^&TP+R3i|_#tfM$#l`%U)7#gsHQwBSoQt%e$q`3}m`I=KLhlMndmYwO zVJQzX&auI+gk_$k6yjzR=BA_jssW@lt>*tHB@q!~3{{YbJpsYCNUjGWuyA?SRvWaJ z6mL}r+McwP8uz+(?BQP!4(6es>~C%L?=1e7dH-|`>uyM;KxJe{h_HS)vE?J~x@T{%uQ2=cf#cQ{a@<&^xJE=Pd5I<`x zcZj1_<30KF*{C`p)-_vt7tvRW^`BP?sXq9RDO`iDfKw!mX${KM3=W=eJg*{t`)EDD zE9zyX`lC!q)0Nlz&VLCGSz>T5w=kZZYNahX3(<#j8*r+lI@jiJYe>b zJDia_udoLatkHn6RTEK*DF_l3V^_z^4i+4xeKBCRP5|Ee^~#P2pj$=J3Xw`AThkHQ zHr*{*^Marpbv~2@D75qE1YFjt0p5hj_g4b1w&A#O2nK99(%hg#GMEz!G5>wHi?T5w9y;C1N zfSc94%nOvBZY)G*PHu~g46S;Ve7rPDgFMw7#{=TBWwL)Sq7Q3#xe>`Hz`(B^npreBVbx*`X zeQQ30hgnX?N3?EIwMl)852cIXQLEBN6gUj>e#Mtv}&6=IvTE-1dYZJg*b2+yjlr`HKzI!KvEMxBts1NuIMonHM<@-+@jMc1U18t z8(EB@xe|OZxatiUj8!a*iaZ0pM~v)0yDF$si2q3_mp9c}>9Uz}SPR0#IO@}{xXa%Z z;_I~f3C_Czs*d3EQ+2`^YKDJTXNdw-$A!@1eZPD|=I;Pev@yOSY#UushO_wO)LS z-}+k>qiJjUX3-&}N%V03Xf_`et6n&wMnuz+R)KtvsulIfw%uEAxuOf{u&%43Oc42S z@;=#$qz>(e4nEyN2(1Emr$_cXHGCh%HJ^K%j^fXmgFsTq+aOz+`%8^&MHf`^)qJ$e zzN1<<--n)A!ZoNHG^%OwqguKRi@EZT4M^n(crFMM4P)i)b=ydoT6A#@Oo1=kM4-2Z z8ZnJXvCpEyfSYu}N6%8`nKv#mx?tSm{>%#eKD#`Du!w+yo#$`_1!4C<8b#K+X3j`l zi?~?Zl@=qxkc_U%uPVLn&rv#mOA7Kefx}jy_B_)2xrz<%u#}V_$fd zOiD^dLiKRKM%xdCftMv>;_~C=s#o^x2@hT+YXsz{%T3X99uR$aA^T2vinc=5Bxmtc zvMC`!vN6Bx@MQ5p6()3zS@fa0~L~{Q+?(FGsIaLrqvkodu1z zL1o`XX7@uFmihCAUrEQY%u63pZ?s7gn~VW{&7cN0mqNPQgQ{SOzW9KKZC675P{qlt z(s_vbSbWJv*}GGy#(65lc^{iL`BE!-Ki3$+9YW@%+ye^PxK9*0Na0ZtF!FZx=vfqZ z&|ls>TI!`JfW)Er+B2bTD__Dp(+>YgnU4ui#~oxAma6_S>oJ~{YttoLQ!Z@S^j@(6 zks=w-sy*0SyHaJGQnLRO?b3Tu$AaNm;y!Z0aW`S06#mIG?^ z^r{MO7vBpul{nDZ{S2I#e!JeiD#q?J=Jwr1j`zgOq_BXgRI22}&~+~4*z3G`dBR~# z(|(ai@4aJBZ04etwYOGs@7~Zt&V(u7Rwzrh4?~;z_t-CL!Njle(V)b7Xw({-nNf0O za2RU45-qB_bI3EbRx+48=yeKzHT}59j*myfd-LnJI1d@N=5+Av%;1iHR`$7v(nfsj zw?_Ku=~ zt`xpy)a}ar6t+bo?s);#NTynb8C|(rXW211VSWhP_dCk!*1;~j0J_XlBi`aN_3MjC zxG$ly{mVgIT5)yEr>ObGZ}$hOOKLxu&1g((#Qpvd`eOiN-IU{f9jlm&K7FkNhXH-F zJq5<1LmD(I)r&glJcoS+9-hP@Xmy8&c0-^4Z!6Cmh3bEJ#x$+&eg2B#hfW?$;^(;h zwD;e0DY@Cx@zlTi;DS#V3r@MM-W2;*_LkoAO>=I)`;u$ETK0sysd_R;bex|A%PNa4 zx~E!z=W}t#{^cwu1KJeOBxFU-X@^7KjgRSfeH$z4?+HKi|^csK~Wf?qzj!NnCtAUv}94@x63QvJWYA- zvFXMI!|YtkYm)5`9VCszrziJCmdt#*QY($`zKVW=I@?U;z7!1=9=W-$N&0Qu;&=K_ z-*S;@{($^~AIl2q#o;`K3f7_i!x-ZzD2Qmfj zIsPL5JV$E%%uoO1Q>J|JuxPW9+nl>4sBn+YwG%IDwP$^M5wD^UU3GK)AG!mzRC1qFDC7=eKh|u?BcEGKnyQLWhIFWrv2J@&akk`M~h{ z25c}014Ut=0VoE%!P*&kk$P%gNqk6UL27Xw!pgjV~V^FFpWNr~_0chobQt(5U3n;*$K_h};}~h!L43skz{W3s$q{ zHCSC=4m5)eXcnq3J^^p>MVJLQ1>G@Qcl-E01R9V8G(ZByF{fD24G1X8FDM4P1>KY{ zw{MHT2AYrq)FXgm%0pHLhLrqduvY!Vf&y$Ix&8iT^FpBRk3jE(E**w}2F73PNV=2r zi@?{~qg%e{#I^LjKx7>GzYrj zDbNQpD2DU^Z$B;1FG_*N2hcO6xxkbG@(9)_d3V?E3=7aFR=|XX>YKm7paGkNYzDeR zep@amP6lfK4ZML_2*n`=zz7CwPXngSki?`Mtf7H^2RqD&2FAm{HZfQ~%8l&k_M_hb zjnLmJ3Du8$A2hml^lM`g+WTc;+ToYTqH9J!F#)0ZVi1aEwDS|t%|Y)7Ak1;` element and providing access to + character properties such as font name, font size, bold, and subscript.""" + + def __init__(self, r: CT_R, parent: Any | None = None): + super().__init__(r, parent) + self._element = r + self._r = r + + @property + def all_caps(self) -> bool | None: + """Read/write. + + Causes text in this font to appear in capital letters. + """ + return self._get_bool_prop("caps") + + @all_caps.setter + def all_caps(self, value: bool | None) -> None: + self._set_bool_prop("caps", value) + + @property + def bold(self) -> bool | None: + """Read/write. + + Causes text in this font to appear in bold. + """ + return self._get_bool_prop("b") + + @bold.setter + def bold(self, value: bool | None) -> None: + self._set_bool_prop("b", value) + + @property + def color(self): + """A |ColorFormat| object providing a way to get and set the text color for this + font.""" + return ColorFormat(self._element) + + @property + def complex_script(self) -> bool | None: + """Read/write tri-state value. + + When |True|, causes the characters in the run to be treated as complex script + regardless of their Unicode values. + """ + return self._get_bool_prop("cs") + + @complex_script.setter + def complex_script(self, value: bool | None) -> None: + self._set_bool_prop("cs", value) + + @property + def cs_bold(self) -> bool | None: + """Read/write tri-state value. + + When |True|, causes the complex script characters in the run to be displayed in + bold typeface. + """ + return self._get_bool_prop("bCs") + + @cs_bold.setter + def cs_bold(self, value: bool | None) -> None: + self._set_bool_prop("bCs", value) + + @property + def cs_italic(self) -> bool | None: + """Read/write tri-state value. + + When |True|, causes the complex script characters in the run to be displayed in + italic typeface. + """ + return self._get_bool_prop("iCs") + + @cs_italic.setter + def cs_italic(self, value: bool | None) -> None: + self._set_bool_prop("iCs", value) + + @property + def double_strike(self) -> bool | None: + """Read/write tri-state value. + + When |True|, causes the text in the run to appear with double strikethrough. + """ + return self._get_bool_prop("dstrike") + + @double_strike.setter + def double_strike(self, value: bool | None) -> None: + self._set_bool_prop("dstrike", value) + + @property + def emboss(self) -> bool | None: + """Read/write tri-state value. + + When |True|, causes the text in the run to appear as if raised off the page in + relief. + """ + return self._get_bool_prop("emboss") + + @emboss.setter + def emboss(self, value: bool | None) -> None: + self._set_bool_prop("emboss", value) + + @property + def hidden(self) -> bool | None: + """Read/write tri-state value. + + When |True|, causes the text in the run to be hidden from display, unless + applications settings force hidden text to be shown. + """ + return self._get_bool_prop("vanish") + + @hidden.setter + def hidden(self, value: bool | None) -> None: + self._set_bool_prop("vanish", value) + + @property + def highlight_color(self) -> WD_COLOR_INDEX | None: + """Color of highlighing applied or |None| if not highlighted.""" + rPr = self._element.rPr + if rPr is None: + return None + return rPr.highlight_val + + @highlight_color.setter + def highlight_color(self, value: WD_COLOR_INDEX | None): + rPr = self._element.get_or_add_rPr() + rPr.highlight_val = value + + @property + def italic(self) -> bool | None: + """Read/write tri-state value. + + When |True|, causes the text of the run to appear in italics. |None| indicates + the effective value is inherited from the style hierarchy. + """ + return self._get_bool_prop("i") + + @italic.setter + def italic(self, value: bool | None) -> None: + self._set_bool_prop("i", value) + + @property + def imprint(self) -> bool | None: + """Read/write tri-state value. + + When |True|, causes the text in the run to appear as if pressed into the page. + """ + return self._get_bool_prop("imprint") + + @imprint.setter + def imprint(self, value: bool | None) -> None: + self._set_bool_prop("imprint", value) + + @property + def math(self) -> bool | None: + """Read/write tri-state value. + + When |True|, specifies this run contains WML that should be handled as though it + was Office Open XML Math. + """ + return self._get_bool_prop("oMath") + + @math.setter + def math(self, value: bool | None) -> None: + self._set_bool_prop("oMath", value) + + @property + def name(self) -> str | None: + """The typeface name for this |Font|. + + Causes the text it controls to appear in the named font, if a matching font is + found. |None| indicates the typeface is inherited from the style hierarchy. + """ + rPr = self._element.rPr + if rPr is None: + return None + return rPr.rFonts_ascii + + @name.setter + def name(self, value: str | None) -> None: + rPr = self._element.get_or_add_rPr() + rPr.rFonts_ascii = value + rPr.rFonts_hAnsi = value + + @property + def no_proof(self) -> bool | None: + """Read/write tri-state value. + + When |True|, specifies that the contents of this run should not report any + errors when the document is scanned for spelling and grammar. + """ + return self._get_bool_prop("noProof") + + @no_proof.setter + def no_proof(self, value: bool | None) -> None: + self._set_bool_prop("noProof", value) + + @property + def outline(self) -> bool | None: + """Read/write tri-state value. + + When |True| causes the characters in the run to appear as if they have an + outline, by drawing a one pixel wide border around the inside and outside + borders of each character glyph. + """ + return self._get_bool_prop("outline") + + @outline.setter + def outline(self, value: bool | None) -> None: + self._set_bool_prop("outline", value) + + @property + def rtl(self) -> bool | None: + """Read/write tri-state value. + + When |True| causes the text in the run to have right-to-left characteristics. + """ + return self._get_bool_prop("rtl") + + @rtl.setter + def rtl(self, value: bool | None) -> None: + self._set_bool_prop("rtl", value) + + @property + def shadow(self) -> bool | None: + """Read/write tri-state value. + + When |True| causes the text in the run to appear as if each character has a + shadow. + """ + return self._get_bool_prop("shadow") + + @shadow.setter + def shadow(self, value: bool | None) -> None: + self._set_bool_prop("shadow", value) + + @property + def size(self) -> Length | None: + """Font height in English Metric Units (EMU). + + |None| indicates the font size should be inherited from the style hierarchy. + |Length| is a subclass of |int| having properties for convenient conversion into + points or other length units. The :class:`docx.shared.Pt` class allows + convenient specification of point values:: + + >>> font.size = Pt(24) + >>> font.size + 304800 + >>> font.size.pt + 24.0 + + """ + rPr = self._element.rPr + if rPr is None: + return None + return rPr.sz_val + + @size.setter + def size(self, emu: int | Length | None) -> None: + rPr = self._element.get_or_add_rPr() + rPr.sz_val = None if emu is None else Emu(emu) + + @property + def small_caps(self) -> bool | None: + """Read/write tri-state value. + + When |True| causes the lowercase characters in the run to appear as capital + letters two points smaller than the font size specified for the run. + """ + return self._get_bool_prop("smallCaps") + + @small_caps.setter + def small_caps(self, value: bool | None) -> None: + self._set_bool_prop("smallCaps", value) + + @property + def snap_to_grid(self) -> bool | None: + """Read/write tri-state value. + + When |True| causes the run to use the document grid characters per line settings + defined in the docGrid element when laying out the characters in this run. + """ + return self._get_bool_prop("snapToGrid") + + @snap_to_grid.setter + def snap_to_grid(self, value: bool | None) -> None: + self._set_bool_prop("snapToGrid", value) + + @property + def spec_vanish(self) -> bool | None: + """Read/write tri-state value. + + When |True|, specifies that the given run shall always behave as if it is + hidden, even when hidden text is being displayed in the current document. The + property has a very narrow, specialized use related to the table of contents. + Consult the spec (§17.3.2.36) for more details. + """ + return self._get_bool_prop("specVanish") + + @spec_vanish.setter + def spec_vanish(self, value: bool | None) -> None: + self._set_bool_prop("specVanish", value) + + @property + def strike(self) -> bool | None: + """Read/write tri-state value. + + When |True| causes the text in the run to appear with a single horizontal line + through the center of the line. + """ + return self._get_bool_prop("strike") + + @strike.setter + def strike(self, value: bool | None) -> None: + self._set_bool_prop("strike", value) + + @property + def subscript(self) -> bool | None: + """Boolean indicating whether the characters in this |Font| appear as subscript. + + |None| indicates the subscript/subscript value is inherited from the style + hierarchy. + """ + rPr = self._element.rPr + if rPr is None: + return None + return rPr.subscript + + @subscript.setter + def subscript(self, value: bool | None) -> None: + rPr = self._element.get_or_add_rPr() + rPr.subscript = value + + @property + def superscript(self) -> bool | None: + """Boolean indicating whether the characters in this |Font| appear as + superscript. + + |None| indicates the subscript/superscript value is inherited from the style + hierarchy. + """ + rPr = self._element.rPr + if rPr is None: + return None + return rPr.superscript + + @superscript.setter + def superscript(self, value: bool | None) -> None: + rPr = self._element.get_or_add_rPr() + rPr.superscript = value + + @property + def underline(self) -> bool | WD_UNDERLINE | None: + """The underline style for this |Font|. + + The value is one of |None|, |True|, |False|, or a member of :ref:`WdUnderline`. + + |None| indicates the font inherits its underline value from the style hierarchy. + |False| indicates no underline. |True| indicates single underline. The values + from :ref:`WdUnderline` are used to specify other outline styles such as double, + wavy, and dotted. + """ + rPr = self._element.rPr + if rPr is None: + return None + val = rPr.u_val + return ( + None + if val == WD_UNDERLINE.INHERITED + else True + if val == WD_UNDERLINE.SINGLE + else False + if val == WD_UNDERLINE.NONE + else val + ) + + @underline.setter + def underline(self, value: bool | WD_UNDERLINE | None) -> None: + rPr = self._element.get_or_add_rPr() + # -- works fine without these two mappings, but only because True == 1 and + # -- False == 0, which happen to match the mapping for WD_UNDERLINE.SINGLE + # -- and .NONE respectively. + val = ( + WD_UNDERLINE.SINGLE if value is True else WD_UNDERLINE.NONE if value is False else value + ) + rPr.u_val = val + + @property + def web_hidden(self) -> bool | None: + """Read/write tri-state value. + + When |True|, specifies that the contents of this run shall be hidden when the + document is displayed in web page view. + """ + return self._get_bool_prop("webHidden") + + @web_hidden.setter + def web_hidden(self, value: bool | None) -> None: + self._set_bool_prop("webHidden", value) + + def _get_bool_prop(self, name: str) -> bool | None: + """Return the value of boolean child of `w:rPr` having `name`.""" + rPr = self._element.rPr + if rPr is None: + return None + return rPr._get_bool_val(name) # pyright: ignore[reportPrivateUsage] + + def _set_bool_prop(self, name: str, value: bool | None): + """Assign `value` to the boolean child `name` of `w:rPr`.""" + rPr = self._element.get_or_add_rPr() + rPr._set_bool_val(name, value) # pyright: ignore[reportPrivateUsage] diff --git a/intelliaide/vendor/docx/text/hyperlink.py b/intelliaide/vendor/docx/text/hyperlink.py new file mode 100644 index 0000000..a23df1c --- /dev/null +++ b/intelliaide/vendor/docx/text/hyperlink.py @@ -0,0 +1,121 @@ +"""Hyperlink-related proxy objects for python-docx, Hyperlink in particular. + +A hyperlink occurs in a paragraph, at the same level as a Run, and a hyperlink itself +contains runs, which is where the visible text of the hyperlink is stored. So it's kind +of in-between, less than a paragraph and more than a run. So it gets its own module. +""" + +from __future__ import annotations + +from typing import TYPE_CHECKING + +from docx.shared import Parented +from docx.text.run import Run + +if TYPE_CHECKING: + import docx.types as t + from docx.oxml.text.hyperlink import CT_Hyperlink + + +class Hyperlink(Parented): + """Proxy object wrapping a `` element. + + A hyperlink occurs as a child of a paragraph, at the same level as a Run. A + hyperlink itself contains runs, which is where the visible text of the hyperlink is + stored. + """ + + def __init__(self, hyperlink: CT_Hyperlink, parent: t.ProvidesStoryPart): + super().__init__(parent) + self._parent = parent + self._hyperlink = self._element = hyperlink + + @property + def address(self) -> str: + """The "URL" of the hyperlink (but not necessarily a web link). + + While commonly a web link like "https://google.com" the hyperlink address can + take a variety of forms including "internal links" to bookmarked locations + within the document. When this hyperlink is an internal "jump" to for example a + heading from the table-of-contents (TOC), the address is blank. The bookmark + reference (like "_Toc147925734") is stored in the `.fragment` property. + """ + rId = self._hyperlink.rId + return self._parent.part.rels[rId].target_ref if rId else "" + + @property + def contains_page_break(self) -> bool: + """True when the text of this hyperlink is broken across page boundaries. + + This is not uncommon and can happen for example when the hyperlink text is + multiple words and occurs in the last line of a page. Theoretically, a hyperlink + can contain more than one page break but that would be extremely uncommon in + practice. Still, this value should be understood to mean that "one-or-more" + rendered page breaks are present. + """ + return bool(self._hyperlink.lastRenderedPageBreaks) + + @property + def fragment(self) -> str: + """Reference like `#glossary` at end of URL that refers to a sub-resource. + + Note that this value does not include the fragment-separator character ("#"). + + This value is known as a "named anchor" in an HTML context and "anchor" in the + MS API, but an "anchor" element (``) represents a full hyperlink in HTML so + we avoid confusion by using the more precise RFC 3986 naming "URI fragment". + + These are also used to refer to bookmarks within the same document, in which + case the `.address` value with be blank ("") and this property will hold a + value like "_Toc147925734". + + To reliably get an entire web URL you will need to concatenate this with the + `.address` value, separated by "#" when both are present. Consider using the + `.url` property for that purpose. + + Word sometimes stores a fragment in this property (an XML attribute) and + sometimes with the address, depending on how the URL is inserted, so don't + depend on this field being empty to indicate no fragment is present. + """ + return self._hyperlink.anchor or "" + + @property + def runs(self) -> list[Run]: + """List of |Run| instances in this hyperlink. + + Together these define the visible text of the hyperlink. The text of a hyperlink + is typically contained in a single run will be broken into multiple runs if for + example part of the hyperlink is bold or the text was changed after the document + was saved. + """ + return [Run(r, self._parent) for r in self._hyperlink.r_lst] + + @property + def text(self) -> str: + """String formed by concatenating the text of each run in the hyperlink. + + Tabs and line breaks in the XML are mapped to ``\\t`` and ``\\n`` characters + respectively. Note that rendered page-breaks can occur within a hyperlink but + they are not reflected in this text. + """ + return self._hyperlink.text + + @property + def url(self) -> str: + """Convenience property to get web URLs from hyperlinks that contain them. + + This value is the empty string ("") when there is no address portion, so its + boolean value can also be used to distinguish external URIs from internal "jump" + hyperlinks like those found in a table-of-contents. + + Note that this value may also be a link to a file, so if you only want web-urls + you'll need to check for a protocol prefix like `https://`. + + When both an address and fragment are present, the return value joins the two + separated by the fragment-separator hash ("#"). Otherwise this value is the same + as that of the `.address` property. + """ + address, fragment = self.address, self.fragment + if not address: + return "" + return f"{address}#{fragment}" if fragment else address diff --git a/intelliaide/vendor/docx/text/pagebreak.py b/intelliaide/vendor/docx/text/pagebreak.py new file mode 100644 index 0000000..0977cce --- /dev/null +++ b/intelliaide/vendor/docx/text/pagebreak.py @@ -0,0 +1,104 @@ +"""Proxy objects related to rendered page-breaks.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING + +from docx.oxml.text.pagebreak import CT_LastRenderedPageBreak +from docx.shared import Parented + +if TYPE_CHECKING: + import docx.types as t + from docx.text.paragraph import Paragraph + + +class RenderedPageBreak(Parented): + """A page-break inserted by Word during page-layout for print or display purposes. + + This usually does not correspond to a "hard" page-break inserted by the document + author, rather just that Word ran out of room on one page and needed to start + another. The position of these can change depending on the printer and page-size, as + well as margins, etc. They also will change in response to edits, but not until Word + loads and saves the document. + + Note these are never inserted by `python-docx` because it has no rendering function. + These are generally only useful for text-extraction of existing documents when + `python-docx` is being used solely as a document "reader". + + NOTE: a rendered page-break can occur within a hyperlink; consider a multi-word + hyperlink like "excellent Wikipedia article on LLMs" that happens to fall close to + the end of the last line on a page such that the page breaks between "Wikipedia" and + "article". In such a "page-breaks-in-hyperlink" case, THESE METHODS WILL "MOVE" THE + PAGE-BREAK to occur after the hyperlink, such that the entire hyperlink appears in + the paragraph returned by `.preceding_paragraph_fragment`. While this places the + "tail" text of the hyperlink on the "wrong" page, it avoids having two hyperlinks + each with a fragment of the actual text and pointing to the same address. + """ + + def __init__( + self, + lastRenderedPageBreak: CT_LastRenderedPageBreak, + parent: t.ProvidesStoryPart, + ): + super().__init__(parent) + self._element = lastRenderedPageBreak + self._lastRenderedPageBreak = lastRenderedPageBreak + + @property + def preceding_paragraph_fragment(self) -> Paragraph | None: + """A "loose" paragraph containing the content preceding this page-break. + + Compare `.following_paragraph_fragment` as these two are intended to be used + together. + + This value is `None` when no content precedes this page-break. This case is + common and occurs whenever a page breaks on an even paragraph boundary. + Returning `None` for this case avoids "inserting" a non-existent paragraph into + the content stream. Note that content can include DrawingML items like images or + charts. + + Note the returned paragraph *is divorced from the document body*. Any changes + made to it will not be reflected in the document. It is intended to provide a + familiar container (`Paragraph`) to interrogate for the content preceding this + page-break in the paragraph in which it occured. + + Contains the entire hyperlink when this break occurs within a hyperlink. + """ + if self._lastRenderedPageBreak.precedes_all_content: + return None + + from docx.text.paragraph import Paragraph + + return Paragraph(self._lastRenderedPageBreak.preceding_fragment_p, self._parent) + + @property + def following_paragraph_fragment(self) -> Paragraph | None: + """A "loose" paragraph containing the content following this page-break. + + HAS POTENTIALLY SURPRISING BEHAVIORS so read carefully to be sure this is what + you want. This is primarily targeted toward text-extraction use-cases for which + precisely associating text with the page it occurs on is important. + + Compare `.preceding_paragraph_fragment` as these two are intended to be used + together. + + This value is `None` when no content follows this page-break. This case is + unlikely to occur in practice because Word places even-paragraph-boundary + page-breaks on the paragraph *following* the page-break. Still, it is possible + and must be checked for. Returning `None` for this case avoids "inserting" an + extra, non-existent paragraph into the content stream. Note that content can + include DrawingML items like images or charts, not just text. + + The returned paragraph *is divorced from the document body*. Any changes made to + it will not be reflected in the document. It is intended to provide a container + (`Paragraph`) with familiar properties and methods that can be used to + characterize the paragraph content following a mid-paragraph page-break. + + Contains no portion of the hyperlink when this break occurs within a hyperlink. + """ + if self._lastRenderedPageBreak.follows_all_content: + return None + + from docx.text.paragraph import Paragraph + + return Paragraph(self._lastRenderedPageBreak.following_fragment_p, self._parent) diff --git a/intelliaide/vendor/docx/text/paragraph.py b/intelliaide/vendor/docx/text/paragraph.py new file mode 100644 index 0000000..234ea66 --- /dev/null +++ b/intelliaide/vendor/docx/text/paragraph.py @@ -0,0 +1,173 @@ +"""Paragraph-related proxy types.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Iterator, List, cast + +from docx.enum.style import WD_STYLE_TYPE +from docx.oxml.text.run import CT_R +from docx.shared import StoryChild +from docx.styles.style import ParagraphStyle +from docx.text.hyperlink import Hyperlink +from docx.text.pagebreak import RenderedPageBreak +from docx.text.parfmt import ParagraphFormat +from docx.text.run import Run + +if TYPE_CHECKING: + import docx.types as t + from docx.enum.text import WD_PARAGRAPH_ALIGNMENT + from docx.oxml.text.paragraph import CT_P + from docx.styles.style import CharacterStyle + + +class Paragraph(StoryChild): + """Proxy object wrapping a `` element.""" + + def __init__(self, p: CT_P, parent: t.ProvidesStoryPart): + super(Paragraph, self).__init__(parent) + self._p = self._element = p + + def add_run(self, text: str | None = None, style: str | CharacterStyle | None = None) -> Run: + """Append run containing `text` and having character-style `style`. + + `text` can contain tab (``\\t``) characters, which are converted to the + appropriate XML form for a tab. `text` can also include newline (``\\n``) or + carriage return (``\\r``) characters, each of which is converted to a line + break. When `text` is `None`, the new run is empty. + """ + r = self._p.add_r() + run = Run(r, self) + if text: + run.text = text + if style: + run.style = style + return run + + @property + def alignment(self) -> WD_PARAGRAPH_ALIGNMENT | None: + """A member of the :ref:`WdParagraphAlignment` enumeration specifying the + justification setting for this paragraph. + + A value of |None| indicates the paragraph has no directly-applied alignment + value and will inherit its alignment value from its style hierarchy. Assigning + |None| to this property removes any directly-applied alignment value. + """ + return self._p.alignment + + @alignment.setter + def alignment(self, value: WD_PARAGRAPH_ALIGNMENT): + self._p.alignment = value + + def clear(self): + """Return this same paragraph after removing all its content. + + Paragraph-level formatting, such as style, is preserved. + """ + self._p.clear_content() + return self + + @property + def contains_page_break(self) -> bool: + """`True` when one or more rendered page-breaks occur in this paragraph.""" + return bool(self._p.lastRenderedPageBreaks) + + @property + def hyperlinks(self) -> List[Hyperlink]: + """A |Hyperlink| instance for each hyperlink in this paragraph.""" + return [Hyperlink(hyperlink, self) for hyperlink in self._p.hyperlink_lst] + + def insert_paragraph_before( + self, text: str | None = None, style: str | ParagraphStyle | None = None + ) -> Paragraph: + """Return a newly created paragraph, inserted directly before this paragraph. + + If `text` is supplied, the new paragraph contains that text in a single run. If + `style` is provided, that style is assigned to the new paragraph. + """ + paragraph = self._insert_paragraph_before() + if text: + paragraph.add_run(text) + if style is not None: + paragraph.style = style + return paragraph + + def iter_inner_content(self) -> Iterator[Run | Hyperlink]: + """Generate the runs and hyperlinks in this paragraph, in the order they appear. + + The content in a paragraph consists of both runs and hyperlinks. This method + allows accessing each of those separately, in document order, for when the + precise position of the hyperlink within the paragraph text is important. Note + that a hyperlink itself contains runs. + """ + for r_or_hlink in self._p.inner_content_elements: + yield ( + Run(r_or_hlink, self) + if isinstance(r_or_hlink, CT_R) + else Hyperlink(r_or_hlink, self) + ) + + @property + def paragraph_format(self): + """The |ParagraphFormat| object providing access to the formatting properties + for this paragraph, such as line spacing and indentation.""" + return ParagraphFormat(self._element) + + @property + def rendered_page_breaks(self) -> List[RenderedPageBreak]: + """All rendered page-breaks in this paragraph. + + Most often an empty list, sometimes contains one page-break, but can contain + more than one is rare or contrived cases. + """ + return [RenderedPageBreak(lrpb, self) for lrpb in self._p.lastRenderedPageBreaks] + + @property + def runs(self) -> List[Run]: + """Sequence of |Run| instances corresponding to the elements in this + paragraph.""" + return [Run(r, self) for r in self._p.r_lst] + + @property + def style(self) -> ParagraphStyle | None: + """Read/Write. + + |_ParagraphStyle| object representing the style assigned to this paragraph. If + no explicit style is assigned to this paragraph, its value is the default + paragraph style for the document. A paragraph style name can be assigned in lieu + of a paragraph style object. Assigning |None| removes any applied style, making + its effective value the default paragraph style for the document. + """ + style_id = self._p.style + style = self.part.get_style(style_id, WD_STYLE_TYPE.PARAGRAPH) + return cast(ParagraphStyle, style) + + @style.setter + def style(self, style_or_name: str | ParagraphStyle | None): + style_id = self.part.get_style_id(style_or_name, WD_STYLE_TYPE.PARAGRAPH) + self._p.style = style_id + + @property + def text(self) -> str: + """The textual content of this paragraph. + + The text includes the visible-text portion of any hyperlinks in the paragraph. + Tabs and line breaks in the XML are mapped to ``\\t`` and ``\\n`` characters + respectively. + + Assigning text to this property causes all existing paragraph content to be + replaced with a single run containing the assigned text. A ``\\t`` character in + the text is mapped to a ```` element and each ``\\n`` or ``\\r`` + character is mapped to a line break. Paragraph-level formatting, such as style, + is preserved. All run-level formatting, such as bold or italic, is removed. + """ + return self._p.text + + @text.setter + def text(self, text: str | None): + self.clear() + self.add_run(text) + + def _insert_paragraph_before(self): + """Return a newly created paragraph, inserted directly before this paragraph.""" + p = self._p.add_p_before() + return Paragraph(p, self._parent) diff --git a/intelliaide/vendor/docx/text/parfmt.py b/intelliaide/vendor/docx/text/parfmt.py new file mode 100644 index 0000000..ea37437 --- /dev/null +++ b/intelliaide/vendor/docx/text/parfmt.py @@ -0,0 +1,286 @@ +"""Paragraph-related proxy types.""" + +from docx.enum.text import WD_LINE_SPACING +from docx.shared import ElementProxy, Emu, Length, Pt, Twips, lazyproperty +from docx.text.tabstops import TabStops + + +class ParagraphFormat(ElementProxy): + """Provides access to paragraph formatting such as justification, indentation, line + spacing, space before and after, and widow/orphan control.""" + + @property + def alignment(self): + """A member of the :ref:`WdParagraphAlignment` enumeration specifying the + justification setting for this paragraph. + + A value of |None| indicates paragraph alignment is inherited from the style + hierarchy. + """ + pPr = self._element.pPr + if pPr is None: + return None + return pPr.jc_val + + @alignment.setter + def alignment(self, value): + pPr = self._element.get_or_add_pPr() + pPr.jc_val = value + + @property + def first_line_indent(self): + """|Length| value specifying the relative difference in indentation for the + first line of the paragraph. + + A positive value causes the first line to be indented. A negative value produces + a hanging indent. |None| indicates first line indentation is inherited from the + style hierarchy. + """ + pPr = self._element.pPr + if pPr is None: + return None + return pPr.first_line_indent + + @first_line_indent.setter + def first_line_indent(self, value): + pPr = self._element.get_or_add_pPr() + pPr.first_line_indent = value + + @property + def keep_together(self): + """|True| if the paragraph should be kept "in one piece" and not broken across a + page boundary when the document is rendered. + + |None| indicates its effective value is inherited from the style hierarchy. + """ + pPr = self._element.pPr + if pPr is None: + return None + return pPr.keepLines_val + + @keep_together.setter + def keep_together(self, value): + self._element.get_or_add_pPr().keepLines_val = value + + @property + def keep_with_next(self): + """|True| if the paragraph should be kept on the same page as the subsequent + paragraph when the document is rendered. + + For example, this property could be used to keep a section heading on the same + page as its first paragraph. |None| indicates its effective value is inherited + from the style hierarchy. + """ + pPr = self._element.pPr + if pPr is None: + return None + return pPr.keepNext_val + + @keep_with_next.setter + def keep_with_next(self, value): + self._element.get_or_add_pPr().keepNext_val = value + + @property + def left_indent(self): + """|Length| value specifying the space between the left margin and the left side + of the paragraph. + + |None| indicates the left indent value is inherited from the style hierarchy. + Use an |Inches| value object as a convenient way to apply indentation in units + of inches. + """ + pPr = self._element.pPr + if pPr is None: + return None + return pPr.ind_left + + @left_indent.setter + def left_indent(self, value): + pPr = self._element.get_or_add_pPr() + pPr.ind_left = value + + @property + def line_spacing(self): + """|float| or |Length| value specifying the space between baselines in + successive lines of the paragraph. + + A value of |None| indicates line spacing is inherited from the style hierarchy. + A float value, e.g. ``2.0`` or ``1.75``, indicates spacing is applied in + multiples of line heights. A |Length| value such as ``Pt(12)`` indicates spacing + is a fixed height. The |Pt| value class is a convenient way to apply line + spacing in units of points. Assigning |None| resets line spacing to inherit from + the style hierarchy. + """ + pPr = self._element.pPr + if pPr is None: + return None + return self._line_spacing(pPr.spacing_line, pPr.spacing_lineRule) + + @line_spacing.setter + def line_spacing(self, value): + pPr = self._element.get_or_add_pPr() + if value is None: + pPr.spacing_line = None + pPr.spacing_lineRule = None + elif isinstance(value, Length): + pPr.spacing_line = value + if pPr.spacing_lineRule != WD_LINE_SPACING.AT_LEAST: + pPr.spacing_lineRule = WD_LINE_SPACING.EXACTLY + else: + pPr.spacing_line = Emu(value * Twips(240)) + pPr.spacing_lineRule = WD_LINE_SPACING.MULTIPLE + + @property + def line_spacing_rule(self): + """A member of the :ref:`WdLineSpacing` enumeration indicating how the value of + :attr:`line_spacing` should be interpreted. + + Assigning any of the :ref:`WdLineSpacing` members :attr:`SINGLE`, + :attr:`DOUBLE`, or :attr:`ONE_POINT_FIVE` will cause the value of + :attr:`line_spacing` to be updated to produce the corresponding line spacing. + """ + pPr = self._element.pPr + if pPr is None: + return None + return self._line_spacing_rule(pPr.spacing_line, pPr.spacing_lineRule) + + @line_spacing_rule.setter + def line_spacing_rule(self, value): + pPr = self._element.get_or_add_pPr() + if value == WD_LINE_SPACING.SINGLE: + pPr.spacing_line = Twips(240) + pPr.spacing_lineRule = WD_LINE_SPACING.MULTIPLE + elif value == WD_LINE_SPACING.ONE_POINT_FIVE: + pPr.spacing_line = Twips(360) + pPr.spacing_lineRule = WD_LINE_SPACING.MULTIPLE + elif value == WD_LINE_SPACING.DOUBLE: + pPr.spacing_line = Twips(480) + pPr.spacing_lineRule = WD_LINE_SPACING.MULTIPLE + else: + pPr.spacing_lineRule = value + + @property + def page_break_before(self): + """|True| if the paragraph should appear at the top of the page following the + prior paragraph. + + |None| indicates its effective value is inherited from the style hierarchy. + """ + pPr = self._element.pPr + if pPr is None: + return None + return pPr.pageBreakBefore_val + + @page_break_before.setter + def page_break_before(self, value): + self._element.get_or_add_pPr().pageBreakBefore_val = value + + @property + def right_indent(self): + """|Length| value specifying the space between the right margin and the right + side of the paragraph. + + |None| indicates the right indent value is inherited from the style hierarchy. + Use a |Cm| value object as a convenient way to apply indentation in units of + centimeters. + """ + pPr = self._element.pPr + if pPr is None: + return None + return pPr.ind_right + + @right_indent.setter + def right_indent(self, value): + pPr = self._element.get_or_add_pPr() + pPr.ind_right = value + + @property + def space_after(self): + """|Length| value specifying the spacing to appear between this paragraph and + the subsequent paragraph. + + |None| indicates this value is inherited from the style hierarchy. |Length| + objects provide convenience properties, such as :attr:`~.Length.pt` and + :attr:`~.Length.inches`, that allow easy conversion to various length units. + """ + pPr = self._element.pPr + if pPr is None: + return None + return pPr.spacing_after + + @space_after.setter + def space_after(self, value): + self._element.get_or_add_pPr().spacing_after = value + + @property + def space_before(self): + """|Length| value specifying the spacing to appear between this paragraph and + the prior paragraph. + + |None| indicates this value is inherited from the style hierarchy. |Length| + objects provide convenience properties, such as :attr:`~.Length.pt` and + :attr:`~.Length.cm`, that allow easy conversion to various length units. + """ + pPr = self._element.pPr + if pPr is None: + return None + return pPr.spacing_before + + @space_before.setter + def space_before(self, value): + self._element.get_or_add_pPr().spacing_before = value + + @lazyproperty + def tab_stops(self): + """|TabStops| object providing access to the tab stops defined for this + paragraph format.""" + pPr = self._element.get_or_add_pPr() + return TabStops(pPr) + + @property + def widow_control(self): + """|True| if the first and last lines in the paragraph remain on the same page + as the rest of the paragraph when Word repaginates the document. + + |None| indicates its effective value is inherited from the style hierarchy. + """ + pPr = self._element.pPr + if pPr is None: + return None + return pPr.widowControl_val + + @widow_control.setter + def widow_control(self, value): + self._element.get_or_add_pPr().widowControl_val = value + + @staticmethod + def _line_spacing(spacing_line, spacing_lineRule): + """Return the line spacing value calculated from the combination of + `spacing_line` and `spacing_lineRule`. + + Returns a |float| number of lines when `spacing_lineRule` is + ``WD_LINE_SPACING.MULTIPLE``, otherwise a |Length| object of absolute line + height is returned. Returns |None| when `spacing_line` is |None|. + """ + if spacing_line is None: + return None + if spacing_lineRule == WD_LINE_SPACING.MULTIPLE: + return spacing_line / Pt(12) + return spacing_line + + @staticmethod + def _line_spacing_rule(line, lineRule): + """Return the line spacing rule value calculated from the combination of `line` + and `lineRule`. + + Returns special members of the :ref:`WdLineSpacing` enumeration when line + spacing is single, double, or 1.5 lines. + """ + if lineRule == WD_LINE_SPACING.MULTIPLE: + if line == Twips(240): + return WD_LINE_SPACING.SINGLE + if line == Twips(360): + return WD_LINE_SPACING.ONE_POINT_FIVE + if line == Twips(480): + return WD_LINE_SPACING.DOUBLE + return lineRule diff --git a/intelliaide/vendor/docx/text/run.py b/intelliaide/vendor/docx/text/run.py new file mode 100644 index 0000000..57ea31f --- /dev/null +++ b/intelliaide/vendor/docx/text/run.py @@ -0,0 +1,257 @@ +"""Run-related proxy objects for python-docx, Run in particular.""" + +from __future__ import annotations + +from typing import IO, TYPE_CHECKING, Iterator, cast + +from docx.drawing import Drawing +from docx.enum.style import WD_STYLE_TYPE +from docx.enum.text import WD_BREAK +from docx.oxml.drawing import CT_Drawing +from docx.oxml.text.pagebreak import CT_LastRenderedPageBreak +from docx.shape import InlineShape +from docx.shared import StoryChild +from docx.styles.style import CharacterStyle +from docx.text.font import Font +from docx.text.pagebreak import RenderedPageBreak + +if TYPE_CHECKING: + import docx.types as t + from docx.enum.text import WD_UNDERLINE + from docx.oxml.text.run import CT_R, CT_Text + from docx.shared import Length + + +class Run(StoryChild): + """Proxy object wrapping `` element. + + Several of the properties on Run take a tri-state value, |True|, |False|, or |None|. + |True| and |False| correspond to on and off respectively. |None| indicates the + property is not specified directly on the run and its effective value is taken from + the style hierarchy. + """ + + def __init__(self, r: CT_R, parent: t.ProvidesStoryPart): + super().__init__(parent) + self._r = self._element = self.element = r + + def add_break(self, break_type: WD_BREAK = WD_BREAK.LINE): + """Add a break element of `break_type` to this run. + + `break_type` can take the values `WD_BREAK.LINE`, `WD_BREAK.PAGE`, and + `WD_BREAK.COLUMN` where `WD_BREAK` is imported from `docx.enum.text`. + `break_type` defaults to `WD_BREAK.LINE`. + """ + type_, clear = { + WD_BREAK.LINE: (None, None), + WD_BREAK.PAGE: ("page", None), + WD_BREAK.COLUMN: ("column", None), + WD_BREAK.LINE_CLEAR_LEFT: ("textWrapping", "left"), + WD_BREAK.LINE_CLEAR_RIGHT: ("textWrapping", "right"), + WD_BREAK.LINE_CLEAR_ALL: ("textWrapping", "all"), + }[break_type] + br = self._r.add_br() + if type_ is not None: + br.type = type_ + if clear is not None: + br.clear = clear + + def add_picture( + self, + image_path_or_stream: str | IO[bytes], + width: int | Length | None = None, + height: int | Length | None = None, + ) -> InlineShape: + """Return |InlineShape| containing image identified by `image_path_or_stream`. + + The picture is added to the end of this run. + + `image_path_or_stream` can be a path (a string) or a file-like object containing + a binary image. + + If neither width nor height is specified, the picture appears at + its native size. If only one is specified, it is used to compute a scaling + factor that is then applied to the unspecified dimension, preserving the aspect + ratio of the image. The native size of the picture is calculated using the dots- + per-inch (dpi) value specified in the image file, defaulting to 72 dpi if no + value is specified, as is often the case. + """ + inline = self.part.new_pic_inline(image_path_or_stream, width, height) + self._r.add_drawing(inline) + return InlineShape(inline) + + def add_tab(self) -> None: + """Add a ```` element at the end of the run, which Word interprets as a + tab character.""" + self._r.add_tab() + + def add_text(self, text: str): + """Returns a newly appended |_Text| object (corresponding to a new ```` + child element) to the run, containing `text`. + + Compare with the possibly more friendly approach of assigning text to the + :attr:`Run.text` property. + """ + t = self._r.add_t(text) + return _Text(t) + + @property + def bold(self) -> bool | None: + """Read/write tri-state value. + + When |True|, causes the text of the run to appear in bold face. When |False|, + the text unconditionally appears non-bold. When |None| the bold setting for this + run is inherited from the style hierarchy. + """ + return self.font.bold + + @bold.setter + def bold(self, value: bool | None): + self.font.bold = value + + def clear(self): + """Return reference to this run after removing all its content. + + All run formatting is preserved. + """ + self._r.clear_content() + return self + + @property + def contains_page_break(self) -> bool: + """`True` when one or more rendered page-breaks occur in this run. + + Note that "hard" page-breaks inserted by the author are not included. A hard + page-break gives rise to a rendered page-break in the right position so if those + were included that page-break would be "double-counted". + + It would be very rare for multiple rendered page-breaks to occur in a single + run, but it is possible. + """ + return bool(self._r.lastRenderedPageBreaks) + + @property + def font(self) -> Font: + """The |Font| object providing access to the character formatting properties for + this run, such as font name and size.""" + return Font(self._element) + + @property + def italic(self) -> bool | None: + """Read/write tri-state value. + + When |True|, causes the text of the run to appear in italics. When |False|, the + text unconditionally appears non-italic. When |None| the italic setting for this + run is inherited from the style hierarchy. + """ + return self.font.italic + + @italic.setter + def italic(self, value: bool | None): + self.font.italic = value + + def iter_inner_content(self) -> Iterator[str | Drawing | RenderedPageBreak]: + """Generate the content-items in this run in the order they appear. + + NOTE: only content-types currently supported by `python-docx` are generated. In + this version, that is text and rendered page-breaks. Drawing is included but + currently only provides access to its XML element (CT_Drawing) on its + `._drawing` attribute. `Drawing` attributes and methods may be expanded in + future releases. + + There are a number of element-types that can appear inside a run, but most of + those (w:br, w:cr, w:noBreakHyphen, w:t, w:tab) have a clear plain-text + equivalent. Any contiguous range of such elements is generated as a single + `str`. Rendered page-break and drawing elements are generated individually. Any + other elements are ignored. + """ + for item in self._r.inner_content_items: + if isinstance(item, str): + yield item + elif isinstance(item, CT_LastRenderedPageBreak): + yield RenderedPageBreak(item, self) + elif isinstance(item, CT_Drawing): # pyright: ignore[reportUnnecessaryIsInstance] + yield Drawing(item, self) + + def mark_comment_range(self, last_run: Run, comment_id: int) -> None: + """Mark the range of runs from this run to `last_run` (inclusive) as belonging to a comment. + + `comment_id` identfies the comment that references this range. + """ + # -- insert `w:commentRangeStart` with `comment_id` before this (first) run -- + self._r.insert_comment_range_start_above(comment_id) + + # -- insert `w:commentRangeEnd` and `w:commentReference` run with `comment_id` after + # -- `last_run` + last_run._r.insert_comment_range_end_and_reference_below(comment_id) + + @property + def style(self) -> CharacterStyle: + """Read/write. + + A |CharacterStyle| object representing the character style applied to this run. + The default character style for the document (often `Default Character Font`) is + returned if the run has no directly-applied character style. Setting this + property to |None| removes any directly-applied character style. + """ + style_id = self._r.style + return cast(CharacterStyle, self.part.get_style(style_id, WD_STYLE_TYPE.CHARACTER)) + + @style.setter + def style(self, style_or_name: str | CharacterStyle | None): + style_id = self.part.get_style_id(style_or_name, WD_STYLE_TYPE.CHARACTER) + self._r.style = style_id + + @property + def text(self) -> str: + """String formed by concatenating the text equivalent of each run. + + Each `` element adds the text characters it contains. A `` element + adds a `\\t` character. A `` or `` element each add a `\\n` + character. Note that a `` element can indicate a page break or column + break as well as a line break. Only line-break `` elements translate to + a `\\n` character. Others are ignored. All other content child elements, such as + ``, are ignored. + + Assigning text to this property has the reverse effect, translating each `\\t` + character to a `` element and each `\\n` or `\\r` character to a + `` element. Any existing run content is replaced. Run formatting is + preserved. + """ + return self._r.text + + @text.setter + def text(self, text: str): + self._r.text = text + + @property + def underline(self) -> bool | WD_UNDERLINE | None: + """The underline style for this |Run|. + + Value is one of |None|, |True|, |False|, or a member of :ref:`WdUnderline`. + + A value of |None| indicates the run has no directly-applied underline value and + so will inherit the underline value of its containing paragraph. Assigning + |None| to this property removes any directly-applied underline value. + + A value of |False| indicates a directly-applied setting of no underline, + overriding any inherited value. + + A value of |True| indicates single underline. + + The values from :ref:`WdUnderline` are used to specify other outline styles such + as double, wavy, and dotted. + """ + return self.font.underline + + @underline.setter + def underline(self, value: bool | WD_UNDERLINE | None): + self.font.underline = value + + +class _Text: + """Proxy object wrapping `` element.""" + + def __init__(self, t_elm: CT_Text): + super(_Text, self).__init__() + self._t = t_elm diff --git a/intelliaide/vendor/docx/text/tabstops.py b/intelliaide/vendor/docx/text/tabstops.py new file mode 100644 index 0000000..0f8c22c --- /dev/null +++ b/intelliaide/vendor/docx/text/tabstops.py @@ -0,0 +1,123 @@ +"""Tabstop-related proxy types.""" + +from docx.enum.text import WD_TAB_ALIGNMENT, WD_TAB_LEADER +from docx.shared import ElementProxy + + +class TabStops(ElementProxy): + """A sequence of |TabStop| objects providing access to the tab stops of a paragraph + or paragraph style. + + Supports iteration, indexed access, del, and len(). It is accesed using the + :attr:`~.ParagraphFormat.tab_stops` property of ParagraphFormat; it is not intended + to be constructed directly. + """ + + def __init__(self, element): + super(TabStops, self).__init__(element, None) + self._pPr = element + + def __delitem__(self, idx): + """Remove the tab at offset `idx` in this sequence.""" + tabs = self._pPr.tabs + try: + tabs.remove(tabs[idx]) + except (AttributeError, IndexError): + raise IndexError("tab index out of range") + + if len(tabs) == 0: + self._pPr.remove(tabs) + + def __getitem__(self, idx): + """Enables list-style access by index.""" + tabs = self._pPr.tabs + if tabs is None: + raise IndexError("TabStops object is empty") + tab = tabs.tab_lst[idx] + return TabStop(tab) + + def __iter__(self): + """Generate a TabStop object for each of the w:tab elements, in XML document + order.""" + tabs = self._pPr.tabs + if tabs is not None: + for tab in tabs.tab_lst: + yield TabStop(tab) + + def __len__(self): + tabs = self._pPr.tabs + if tabs is None: + return 0 + return len(tabs.tab_lst) + + def add_tab_stop(self, position, alignment=WD_TAB_ALIGNMENT.LEFT, leader=WD_TAB_LEADER.SPACES): + """Add a new tab stop at `position`, a |Length| object specifying the location + of the tab stop relative to the paragraph edge. + + A negative `position` value is valid and appears in hanging indentation. Tab + alignment defaults to left, but may be specified by passing a member of the + :ref:`WdTabAlignment` enumeration as `alignment`. An optional leader character + can be specified by passing a member of the :ref:`WdTabLeader` enumeration as + `leader`. + """ + tabs = self._pPr.get_or_add_tabs() + tab = tabs.insert_tab_in_order(position, alignment, leader) + return TabStop(tab) + + def clear_all(self): + """Remove all custom tab stops.""" + self._pPr._remove_tabs() + + +class TabStop(ElementProxy): + """An individual tab stop applying to a paragraph or style. + + Accessed using list semantics on its containing |TabStops| object. + """ + + def __init__(self, element): + super(TabStop, self).__init__(element, None) + self._tab = element + + @property + def alignment(self): + """A member of :ref:`WdTabAlignment` specifying the alignment setting for this + tab stop. + + Read/write. + """ + return self._tab.val + + @alignment.setter + def alignment(self, value): + self._tab.val = value + + @property + def leader(self): + """A member of :ref:`WdTabLeader` specifying a repeating character used as a + "leader", filling in the space spanned by this tab. + + Assigning |None| produces the same result as assigning `WD_TAB_LEADER.SPACES`. + Read/write. + """ + return self._tab.leader + + @leader.setter + def leader(self, value): + self._tab.leader = value + + @property + def position(self): + """A |Length| object representing the distance of this tab stop from the inside + edge of the paragraph. + + May be positive or negative. Read/write. + """ + return self._tab.pos + + @position.setter + def position(self, value): + tab = self._tab + tabs = tab.getparent() + self._tab = tabs.insert_tab_in_order(value, tab.val, tab.leader) + tabs.remove(tab) diff --git a/intelliaide/vendor/docx/types.py b/intelliaide/vendor/docx/types.py new file mode 100644 index 0000000..06d1a57 --- /dev/null +++ b/intelliaide/vendor/docx/types.py @@ -0,0 +1,34 @@ +"""Abstract types used by `python-docx`.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING + +from typing_extensions import Protocol + +if TYPE_CHECKING: + from docx.opc.part import XmlPart + from docx.parts.story import StoryPart + + +class ProvidesStoryPart(Protocol): + """An object that provides access to the StoryPart. + + This type is for objects that have a story part like document or header as their + root part. + """ + + @property + def part(self) -> StoryPart: ... + + +class ProvidesXmlPart(Protocol): + """An object that provides access to its XmlPart. + + This type is for objects that need access to their part but it either isn't a + StoryPart or they don't care, possibly because they just need access to the package + or related parts. + """ + + @property + def part(self) -> XmlPart: ... diff --git a/intelliaide/vendor/drain3-0.9.11.dist-info/INSTALLER b/intelliaide/vendor/drain3-0.9.11.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/intelliaide/vendor/drain3-0.9.11.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/intelliaide/vendor/drain3-0.9.11.dist-info/METADATA b/intelliaide/vendor/drain3-0.9.11.dist-info/METADATA new file mode 100644 index 0000000..0d766f1 --- /dev/null +++ b/intelliaide/vendor/drain3-0.9.11.dist-info/METADATA @@ -0,0 +1,517 @@ +Metadata-Version: 2.4 +Name: drain3 +Version: 0.9.11 +Summary: Persistent & streaming log template miner +Home-page: https://github.com/IBM/Drain3 +Download-URL: https://github.com/IBM/Drain3/archive/v_01.tar.gz +Author: IBM Research Haifa +Author-email: david.ohana@ibm.com +License: MIT +Keywords: drain,log,parser,IBM,template,logs,miner +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Classifier: Topic :: Software Development :: Libraries +Description-Content-Type: text/markdown +License-File: LICENSE.txt +Requires-Dist: jsonpickle==1.5.1 +Requires-Dist: cachetools==4.2.1 +Provides-Extra: kafka +Requires-Dist: kafka-python==2.0.1; extra == "kafka" +Provides-Extra: redis +Requires-Dist: redis==3.5.3; extra == "redis" +Dynamic: author +Dynamic: author-email +Dynamic: classifier +Dynamic: description +Dynamic: description-content-type +Dynamic: download-url +Dynamic: home-page +Dynamic: keywords +Dynamic: license +Dynamic: license-file +Dynamic: provides-extra +Dynamic: requires-dist +Dynamic: summary + +# Drain3 + +## Introduction + +Drain3 is an online log template miner that can extract templates (clusters) from a stream of log messages in a timely +manner. It employs a parse tree with fixed depth to guide the log group search process, which effectively avoids +constructing a very deep and unbalanced tree. + +Drain3 continuously learns on-the-fly and extracts log templates from raw log entries. + +#### Example: + +For the input: + +``` +connected to 10.0.0.1 +connected to 192.168.0.1 +Hex number 0xDEADBEAF +user davidoh logged in +user eranr logged in +``` + +Drain3 extracts the following templates: + +``` +ID=1 : size=2 : connected to <:IP:> +ID=2 : size=1 : Hex number <:HEX:> +ID=3 : size=2 : user <:*:> logged in +``` + +Full sample program output: + +``` +Starting Drain3 template miner +Checking for saved state +Saved state not found +Drain3 started with 'FILE' persistence +Starting training mode. Reading from std-in ('q' to finish) +> connected to 10.0.0.1 +Saving state of 1 clusters with 1 messages, 528 bytes, reason: cluster_created (1) +{"change_type": "cluster_created", "cluster_id": 1, "cluster_size": 1, "template_mined": "connected to <:IP:>", "cluster_count": 1} +Parameters: [ExtractedParameter(value='10.0.0.1', mask_name='IP')] +> connected to 192.168.0.1 +{"change_type": "none", "cluster_id": 1, "cluster_size": 2, "template_mined": "connected to <:IP:>", "cluster_count": 1} +Parameters: [ExtractedParameter(value='192.168.0.1', mask_name='IP')] +> Hex number 0xDEADBEAF +Saving state of 2 clusters with 3 messages, 584 bytes, reason: cluster_created (2) +{"change_type": "cluster_created", "cluster_id": 2, "cluster_size": 1, "template_mined": "Hex number <:HEX:>", "cluster_count": 2} +Parameters: [ExtractedParameter(value='0xDEADBEAF', mask_name='HEX')] +> user davidoh logged in +Saving state of 3 clusters with 4 messages, 648 bytes, reason: cluster_created (3) +{"change_type": "cluster_created", "cluster_id": 3, "cluster_size": 1, "template_mined": "user davidoh logged in", "cluster_count": 3} +Parameters: [] +> user eranr logged in +Saving state of 3 clusters with 5 messages, 644 bytes, reason: cluster_template_changed (3) +{"change_type": "cluster_template_changed", "cluster_id": 3, "cluster_size": 2, "template_mined": "user <:*:> logged in", "cluster_count": 3} +Parameters: [ExtractedParameter(value='eranr', mask_name='*')] +> q +Training done. Mined clusters: +ID=1 : size=2 : connected to <:IP:> +ID=2 : size=1 : Hex number <:HEX:> +ID=3 : size=2 : user <:*:> logged in +``` + +This project is an upgrade of the original [Drain](https://github.com/logpai/logparser/blob/master/logparser/Drain) +project by LogPAI from Python 2.7 to Python 3.6 or later with additional features and bug-fixes. + +Read more information about Drain from the following paper: + +- Pinjia He, Jieming Zhu, Zibin Zheng, and Michael R. + Lyu. [Drain: An Online Log Parsing Approach with Fixed Depth Tree](http://jiemingzhu.github.io/pub/pjhe_icws2017.pdf), + Proceedings of the 24th International Conference on Web Services (ICWS), 2017. + +A Drain3 use case is presented in this blog +post: [Use open source Drain3 log-template mining project to monitor for network outages](https://developer.ibm.com/blogs/how-mining-log-templates-can-help-ai-ops-in-cloud-scale-data-centers) +. + +#### New features + +- [**Persistence**](#persistence). Save and load Drain state into an [Apache Kafka](https://kafka.apache.org) + topic, [Redis](https://redis.io/) or a file. +- **Streaming**. Support feeding Drain with messages one-be-one. +- [**Masking**](#masking). Replace some message parts (e.g numbers, IPs, emails) with wildcards. This improves the + accuracy of template mining. +- [**Packaging**](#installation). As a pip package. +- [**Configuration**](#configuration). Support for configuring Drain3 using an `.ini` file or a configuration object. +- [**Memory efficiency**](#memory-efficiency). Decrease the memory footprint of internal data structures and introduce + cache to control max memory consumed (thanks to @StanislawSwierc) +- [**Inference mode**](#training-vs-inference-modes). In case you want to separate training and inference phase, Drain3 + provides a function for *fast* matching against already-learned clusters (templates) only, without the usage of + regular expressions. +- [**Parameter extraction**](#parameter-extraction). Accurate extraction of the variable parts from a log message as an + ordered list, based on its mined template and the defined masking instructions (thanks to @Impelon). + +#### Expected Input and Output + +Although Drain3 can be ingested with full raw log message, template mining accuracy can be improved if you feed it with +only the unstructured free-text portion of log messages, by first removing structured parts like timestamp, hostname. +severity, etc. + +The output is a dictionary with the following fields: + +- `change_type` - indicates either if a new template was identified, an existing template was changed or message added + to an existing cluster. +- `cluster_id` - Sequential ID of the cluster that the log belongs to. +- `cluster_size`- The size (message count) of the cluster that the log belongs to. +- `cluster_count` - Count clusters seen so far. +- `template_mined`- the last template of above cluster_id. + +## Configuration + +Drain3 is configured using [configparser](https://docs.python.org/3.4/library/configparser.html). By default, config +filename is `drain3.ini` in working directory. It can also be configured passing +a [TemplateMinerConfig](drain3/template_miner_config.py) object to the [TemplateMiner](drain3/template_miner.py) +constructor. + +Primary configuration parameters: + +- `[DRAIN]/sim_th` - similarity threshold. if percentage of similar tokens for a log message is below this number, a new + log cluster will be created (default 0.4) +- `[DRAIN]/depth` - max depth levels of log clusters. Minimum is 2. (default 4) +- `[DRAIN]/max_children` - max number of children of an internal node (default 100) +- `[DRAIN]/max_clusters` - max number of tracked clusters (unlimited by default). When this number is reached, model + starts replacing old clusters with a new ones according to the LRU cache eviction policy. +- `[DRAIN]/extra_delimiters` - delimiters to apply when splitting log message into words (in addition to whitespace) ( + default none). Format is a Python list e.g. `['_', ':']`. +- `[MASKING]/masking` - parameters masking - in json format (default "") +- `[MASKING]/mask_prefix` & `[MASKING]/mask_suffix` - the wrapping of identified parameters in templates. By default, it + is `<` and `>` respectively. +- `[SNAPSHOT]/snapshot_interval_minutes` - time interval for new snapshots (default 1) +- `[SNAPSHOT]/compress_state` - whether to compress the state before saving it. This can be useful when using Kafka + persistence. + +## Masking + +This feature allows masking of specific variable parts in log message with keywords, prior to passing to Drain. A +well-defined masking can improve template mining accuracy. + +Template parameters that do not match any custom mask in the preliminary masking phase are replaced with `<*>` by Drain +core. + +Use a list of regular expressions in the configuration file with the format `{'regex_pattern', 'mask_with'}` to set +custom masking. + +For example, following masking instructions in `drain3.ini` will mask IP addresses and integers: + +``` +[MASKING] +masking = [ + {"regex_pattern":"((?<=[^A-Za-z0-9])|^)(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})((?=[^A-Za-z0-9])|$)", "mask_with": "IP"}, + {"regex_pattern":"((?<=[^A-Za-z0-9])|^)([\\-\\+]?\\d+)((?=[^A-Za-z0-9])|$)", "mask_with": "NUM"}, + ] + ] +``` + +## Persistence + +The persistence feature saves and loads a snapshot of Drain3 state in a (compressed) json format. This feature adds +restart resiliency to Drain allowing continuation of activity and maintain learned knowledge across restarts. + +Drain3 state includes the search tree and all the clusters that were identified up until snapshot time. + +The snapshot also persist number of log messages matched each cluster, and it's `cluster_id`. + +An example of a snapshot: + +```json +{ + "clusters": [ + { + "cluster_id": 1, + "log_template_tokens": [ + "aa", + "aa", + "<*>" + ], + "py/object": "drain3_core.LogCluster", + "size": 2 + }, + { + "cluster_id": 2, + "log_template_tokens": [ + "My", + "IP", + "is", + "" + ], + "py/object": "drain3_core.LogCluster", + "size": 1 + } + ] +} +``` + +This example snapshot persist two clusters with the templates: + +`["aa", "aa", "<*>"]` - occurs twice + +`["My", "IP", "is", ""]` - occurs once + +Snapshots are created in the following events: + +- `cluster_created` - in any new template +- `cluster_template_changed` - in any update of a template +- `periodic` - after n minutes from the last snapshot. This is intended to save cluster sizes even if no new template + was identified. + +Drain3 currently supports the following persistence modes: + +- **Kafka** - The snapshot is saved in a dedicated topic used only for snapshots - the last message in this topic is the + last snapshot that will be loaded after restart. For Kafka persistence, you need to provide: `topic_name`. You may + also provide other `kwargs` that are supported by `kafka.KafkaConsumer` and `kafka.Producer` e.g `bootstrap_servers` + to change Kafka endpoint (default is `localhost:9092`). + +- **Redis** - The snapshot is saved to a key in Redis database (contributed by @matabares). + +- **File** - The snapshot is saved to a file. + +- **Memory** - The snapshot is saved an in-memory object. + +- **None** - No persistence. + +Drain3 persistence modes can be easily extended to another medium / database by inheriting +the [PersistenceHandler](drain3/persistence_handler.py) class. + +## Training vs. Inference modes + +In some use-cases, it is required to separate training and inference phases. + +In training phase you should call `template_miner.add_log_message(log_line)`. This will match log line against an +existing cluster (if similarity is above threshold) or create a new cluster. It may also change the template of an +existing cluster. + +In inference mode you should call `template_miner.match(log_line)`. This will match log line against previously learned +clusters only. No new clusters are created and templates of existing clusters are not changed. Match to existing cluster +has to be perfect, otherwise `None` is returned. You can use persistence option to load previously trained clusters +before inference. + +## Memory efficiency + +This feature limits the max memory used by the model. It is particularly important for large and possibly unbounded log +streams. This feature is controlled by the `max_clusters​` parameter, which sets the max number of clusters/templates +trarcked by the model. When the limit is reached, new templates start to replace the old ones according to the Least +Recently Used (LRU) eviction policy. This makes the model adapt quickly to the most recent templates in the log stream. + +## Parameter Extraction + +Drain3 supports retrieving an ordered list of variables in a log message, after its template was mined. Each parameter +is accompanied by the name of the mask that was matched, or `*` for the catch-all mask. + +Parameter extraction is performed by generating a regular expression that matches the template and then applying it on +the log message. When `exact_matching` is enabled (by default), the generated regex included the regular expression +defined in relevant masking instructions. If there are multiple masking instructions with the same name, either match +can satisfy the regex. It is possible to disable exact matching so that every variable is matched against a +non-whitespace character sequence. This may improve performance on expanse of accuracy. + +Parameter extraction regexes generated per template are cached by default, to improve performance. You can control cache +size with the ` MASKING/parameter_extraction_cache_capacity` configuration parameter. + +Sample usage: + +```python +result = template_miner.add_log_message(log_line) +params = template_miner.extract_parameters( + result["template_mined"], log_line, exact_matching=True) +``` + +For the input `"user johndoe logged in 11 minuts ago"`, the template would be: + +``` +"user <:*:> logged in <:NUM:> minuts ago" +``` + +... and the extracted parameters: + +``` +[ + ExtractedParameter(value='johndoe', mask_name='*'), + ExtractedParameter(value='11', mask_name='NUM') +] +``` + +## Installation + +Drain3 is available from [PyPI](https://pypi.org/project/drain3). To install use `pip`: + +``` +pip3 install drain3 +``` + +Note: If you decide to use Kafka or Redis persistence, you should install relevant client library explicitly, since it +is declared as an extra (optional) dependency, by either: + +``` +pip3 install kafka-python +``` + +-- or -- + +``` +pip3 install redis +``` + +## Examples + +In order to run the examples directly from the repository, you need to install dependencies. You can do that using * +pipenv* by executing the following command (assuming pipenv already installed): + +```shell +python3 -m pipenv sync +``` + +#### Example 1 - `drain_stdin_demo` + +Run [examples/drain_stdin_demo.py](examples/drain_stdin_demo.py) from the root folder of the repository by: + +``` +python3 -m pipenv run python -m examples.drain_stdin_demo +``` + +This example uses Drain3 on input from stdin and persist to either Kafka / file / no persistence. + +Change `persistence_type` variable in the example to change persistence mode. + +Enter several log lines using the command line. Press `q` to end online learn-and-match mode. + +Next, demo goes to match (inference) only mode, in which no new clusters are trained and input is matched against +previously trained clusters only. Press `q` again to finish execution. + +#### Example 2 - `drain_bigfile_demo` + +Run [examples/drain_bigfile_demo](examples/drain_bigfile_demo.py) from the root folder of the repository by: + +``` +python3 -m pipenv run python -m examples.drain_bigfile_demo +``` + +This example downloads a real-world log file (of an SSH server) and process all lines, then prints result clusters, +prefix tree and performance statistics. + +#### Sample config file + +An example `drain3.ini` file with masking instructions can be found in the [examples](examples) folder as well. + +## Contributing + +Our project welcomes external contributions. Please refer to [CONTRIBUTING.md](CONTRIBUTING.md) for further details. + +## Change Log + +##### v0.9.11 + +* Fixed possible DivideByZero error when the profiler is enabled - [Issue #65](https://github.com/IBM/Drain3/issues/65). + +##### v0.9.10 + +* Fixed compatibility issue with Python 3.10 caused by removal of `KeysView`. + +##### v0.9.9 + +* Added support for accurate log message parameter extraction in a new function - `extract_parameters()`. The + function `get_parameter_list()` is deprecated (Thanks to *@Impelon*). +* Refactored `AbstractMaskingInstruction` as a base class for `RegexMaskingInstruction`, allowing to introduce other + types of masking mechanisms. + +##### v0.9.8 + +* Added an option `full_search_strategy` option in `TemplateMiner.match()` and `Drain.match()`. See more info at + Issue [#48](https://github.com/IBM/Drain3/issues/48). +* Added an option to disable parameterization of tokens that contains digits in + configuration: `TemplateMinerConfig.parametrize_numeric_tokens` +* Loading Drain snapshot now only restores clusters state and not configuration parameters. This improves backwards + compatibility when introducing new Drain configuration parameters. + +##### v0.9.7 + +* Fixed bug in original Drain: log clusters were created multiple times for log messages with fewer tokens + than `max_node_depth`. +* Changed `depth` property name to a more descriptive name `max_node_depth` as Drain always subtracts 2 of `depth` + argument value. Also added `log_cluster_depth` property to reflect original value of depth argument (Breaking Change). +* Restricted `depth` param to minimum sensible value of 3. +* Added log cluster count to nodes in `Drain.print_tree()` +* Added optional log cluster details to `Drain.print_tree()` + +##### v0.9.6 + +* Fix issue https://github.com/IBM/Drain3/issues/38: Unnecessary update of LRU cache in case `max_clusters` is used ( + thanks *@StanislawSwierc*). + +##### v0.9.5 + +* Added: `TemplateMiner.match()` function for fast matching against existing clusters only. + +##### v0.9.4 + +* Added: `TemplateMiner.get_parameter_list()` function to extract template parameters for raw log message (thanks to * + @cwyalpha*) +* Added option to customize mask wrapper - Instead of the default `<*>`, `` etc, you can select any wrapper prefix + or suffix by overriding `TemplateMinerConfig.mask_prefix` and `TemplateMinerConfig.mask_prefix` +* Fixed: config `.ini` file is always read from same folder as source file in demos in tests (thanks *@RobinMaas95*) + +##### v0.9.3 + +* Fixed: comparison of type int with type str in function `add_seq_to_prefix_tree` #28 (bug introduced at v0.9.1) + +##### v0.9.2 + +* Updated jsonpickle version +* Keys `id_to_cluster` dict are now persisted by jsonpickle as `int` instead of `str` to avoid keys type conversion on + load snapshot which caused some issues. +* Added cachetools dependency to `setup.py`. + +##### v0.9.1 + +* Added option to configure `TemplateMiner` using a configuration object (without `.ini` file). +* Support for `print_tree()` to a file/stream. +* Added `MemoryBufferPersistence` +* Added unit tests for state save/load. +* Bug fix: missing type-conversion in state loading, introduced in v0.9.0 +* Refactor: Drain prefix tree keys are now of type `str` also for 1st level + (was `int` before), for type consistency. + +##### v0.9.0 + +* Decrease memory footprint of the main data structures. +* Added `max_clusters` option to limit the number of tracked clusters. +* Changed cluster identifier type from str to int +* Added more unit tests and CI + +##### v0.8.6 + +* Added `extra_delimiters` configuration option to Drain + +##### v0.8.5 + +* Profiler improvements + +##### v0.8.4 + +* Masking speed improvement + +##### v0.8.3 + +* Fix: profiler state after load from snapshot + +##### v0.8.2 + +* Fixed snapshot backward compatibility to v0.7.9 + +##### v0.8.1 + +* Bugfix in profiling configuration read + +##### v0.8.0 + +* Added time profiling support (disabled by default) +* Added cluster ID to snapshot reason log (credit: @boernd) +* Minor Readability and documentation improvements in Drain + +##### v0.7.9 + +* Fix: `KafkaPersistence` now accepts also `bootstrap_servers` as kwargs. + +##### v0.7.8 + +* Using `kafka-python` package instead of `kafka` (newer). +* Added support for specifying additional configuration as `kwargs` in Kafka persistence handler. + +##### v0.7.7 + +* Corrected default Drain config values. + +##### v0.7.6 + +* Improvement in config file handling (Note: new sections were added instead of `DEFAULT` section) + +##### v0.7.5 + +* Made Kafka and Redis optional requirements + diff --git a/intelliaide/vendor/drain3-0.9.11.dist-info/RECORD b/intelliaide/vendor/drain3-0.9.11.dist-info/RECORD new file mode 100644 index 0000000..5f65182 --- /dev/null +++ b/intelliaide/vendor/drain3-0.9.11.dist-info/RECORD @@ -0,0 +1,29 @@ +drain3-0.9.11.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +drain3-0.9.11.dist-info/METADATA,sha256=WHsShQDY3YhluWzid1ToSCccUtkMzdzsF7gAS700ULo,20090 +drain3-0.9.11.dist-info/RECORD,, +drain3-0.9.11.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +drain3-0.9.11.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91 +drain3-0.9.11.dist-info/licenses/LICENSE.txt,sha256=W7SO6tO8xWE_rk2KWakkjpo4KPLC2M93LFQ_LS0a7ow,1130 +drain3-0.9.11.dist-info/top_level.txt,sha256=ba95R2pAEjS5SaYAq2GTkskDgMDudW2oTGtNlr0cdVE,7 +drain3/__init__.py,sha256=b3r7xyKCiz-KeJVjPE1N5nmMUTp92O6vGLP4xY_pX-4,49 +drain3/__pycache__/__init__.cpython-312.pyc,, +drain3/__pycache__/drain.cpython-312.pyc,, +drain3/__pycache__/file_persistence.cpython-312.pyc,, +drain3/__pycache__/kafka_persistence.cpython-312.pyc,, +drain3/__pycache__/masking.cpython-312.pyc,, +drain3/__pycache__/memory_buffer_persistence.cpython-312.pyc,, +drain3/__pycache__/persistence_handler.cpython-312.pyc,, +drain3/__pycache__/redis_persistence.cpython-312.pyc,, +drain3/__pycache__/simple_profiler.cpython-312.pyc,, +drain3/__pycache__/template_miner.cpython-312.pyc,, +drain3/__pycache__/template_miner_config.cpython-312.pyc,, +drain3/drain.py,sha256=1ZTG-8nCgc7-hGNxjcvXtrLMomgtdEWde-E9n1YPLIk,16806 +drain3/file_persistence.py,sha256=Ijixm7F6qM4QtaH_1Xr9auZMov_ijox2ChoKfFw6TsY,477 +drain3/kafka_persistence.py,sha256=dvxE2VRRml2jqRy0FvNaGKvClp8q_89sF3bxH_1vfz4,1364 +drain3/masking.py,sha256=yQiYqTuonbXIhk2pa3_WtWftAvWn4PywHGh1-UO9vpM,2864 +drain3/memory_buffer_persistence.py,sha256=4gWDlWHt688o6ALOfLEJcaZCu9NlQ2sPhaiqzOpACys,306 +drain3/persistence_handler.py,sha256=xMLeIdiqrYjuijYdHgIQGmdV6ZjU_Qo52WX3OfHqYxA,228 +drain3/redis_persistence.py,sha256=AHJN_8DbQixentmcvG02tGDu8Vl_SlrCNCDl_Y_iqC0,842 +drain3/simple_profiler.py,sha256=kI_N25V7fLiq78uNwlsMcwH83pa_ZXzPwZfFf7q6-FA,5434 +drain3/template_miner.py,sha256=IVDz9zXuXyuQIKacyc-BbOUFYxSins17LXxW4DeyVnU,14370 +drain3/template_miner_config.py,sha256=8SwU4EJw7r9eNcpyI_B31XzsS95FMs1n1-xDLw-29jQ,3858 diff --git a/intelliaide/vendor/drain3-0.9.11.dist-info/REQUESTED b/intelliaide/vendor/drain3-0.9.11.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/intelliaide/vendor/drain3-0.9.11.dist-info/WHEEL b/intelliaide/vendor/drain3-0.9.11.dist-info/WHEEL new file mode 100644 index 0000000..14a883f --- /dev/null +++ b/intelliaide/vendor/drain3-0.9.11.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (82.0.1) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/intelliaide/vendor/drain3-0.9.11.dist-info/licenses/LICENSE.txt b/intelliaide/vendor/drain3-0.9.11.dist-info/licenses/LICENSE.txt new file mode 100644 index 0000000..727be5f --- /dev/null +++ b/intelliaide/vendor/drain3-0.9.11.dist-info/licenses/LICENSE.txt @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2020-2022 International Business Machines +and the Drain3 project contributors. + +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/intelliaide/vendor/drain3-0.9.11.dist-info/top_level.txt b/intelliaide/vendor/drain3-0.9.11.dist-info/top_level.txt new file mode 100644 index 0000000..b9e117f --- /dev/null +++ b/intelliaide/vendor/drain3-0.9.11.dist-info/top_level.txt @@ -0,0 +1 @@ +drain3 diff --git a/intelliaide/vendor/drain3/__init__.py b/intelliaide/vendor/drain3/__init__.py new file mode 100644 index 0000000..1bb0d45 --- /dev/null +++ b/intelliaide/vendor/drain3/__init__.py @@ -0,0 +1,2 @@ +from drain3.template_miner import TemplateMiner + diff --git a/intelliaide/vendor/drain3/drain.py b/intelliaide/vendor/drain3/drain.py new file mode 100644 index 0000000..9873d07 --- /dev/null +++ b/intelliaide/vendor/drain3/drain.py @@ -0,0 +1,421 @@ +# SPDX-License-Identifier: MIT +# This file implements the Drain algorithm for log parsing. +# Based on https://github.com/logpai/logparser/blob/master/logparser/Drain/Drain.py by LogPAI team + +from typing import List, Dict, Sequence + +from cachetools import LRUCache, Cache + +from drain3.simple_profiler import Profiler, NullProfiler + + +class LogCluster: + __slots__ = ["log_template_tokens", "cluster_id", "size"] + + def __init__(self, log_template_tokens: list, cluster_id: int): + self.log_template_tokens = tuple(log_template_tokens) + self.cluster_id = cluster_id + self.size = 1 + + def get_template(self): + return ' '.join(self.log_template_tokens) + + def __str__(self): + return f"ID={str(self.cluster_id).ljust(5)} : size={str(self.size).ljust(10)}: {self.get_template()}" + + +class LogClusterCache(LRUCache): + """ + Least Recently Used (LRU) cache which allows callers to conditionally skip + cache eviction algorithm when accessing elements. + """ + + def __missing__(self, key): + return None + + def get(self, key): + """ + Returns the value of the item with the specified key without updating + the cache eviction algorithm. + """ + return Cache.__getitem__(self, key) + + +class Node: + __slots__ = ["key_to_child_node", "cluster_ids"] + + def __init__(self): + self.key_to_child_node: Dict[str, Node] = {} + self.cluster_ids: List[int] = [] + + +class Drain: + def __init__(self, + depth=4, + sim_th=0.4, + max_children=100, + max_clusters=None, + extra_delimiters=(), + profiler: Profiler = NullProfiler(), + param_str="<*>", + parametrize_numeric_tokens=True): + """ + Create a new Drain instance. + + :param depth: max depth levels of log clusters. Minimum is 2. + For example, for depth==4, Root is considered depth level 1. + Token count is considered depth level 2. + First log token is considered depth level 3. + Log clusters below first token node are considered depth level 4. + :param sim_th: similarity threshold - if percentage of similar tokens for a log message is below this + number, a new log cluster will be created. + :param max_children: max number of children of an internal node + :param max_clusters: max number of tracked clusters (unlimited by default). + When this number is reached, model starts replacing old clusters + with a new ones according to the LRU policy. + :param extra_delimiters: delimiters to apply when splitting log message into words (in addition to whitespace). + :param parametrize_numeric_tokens: whether to treat tokens that contains at least one digit + as template parameters. + """ + if depth < 3: + raise ValueError("depth argument must be at least 3") + + self.log_cluster_depth = depth + self.max_node_depth = depth - 2 # max depth of a prefix tree node, starting from zero + self.sim_th = sim_th + self.max_children = max_children + self.root_node = Node() + self.profiler = profiler + self.extra_delimiters = extra_delimiters + self.max_clusters = max_clusters + self.param_str = param_str + self.parametrize_numeric_tokens = parametrize_numeric_tokens + + # key: int, value: LogCluster + self.id_to_cluster = {} if max_clusters is None else LogClusterCache(maxsize=max_clusters) + self.clusters_counter = 0 + + @property + def clusters(self): + return self.id_to_cluster.values() + + @staticmethod + def has_numbers(s): + return any(char.isdigit() for char in s) + + def tree_search(self, root_node: Node, tokens: list, sim_th: float, include_params: bool): + + # at first level, children are grouped by token (word) count + token_count = len(tokens) + cur_node = root_node.key_to_child_node.get(str(token_count)) + + # no template with same token count yet + if cur_node is None: + return None + + # handle case of empty log string - return the single cluster in that group + if token_count == 0: + return self.id_to_cluster.get(cur_node.cluster_ids[0]) + + # find the leaf node for this log - a path of nodes matching the first N tokens (N=tree depth) + cur_node_depth = 1 + for token in tokens: + # at max depth + if cur_node_depth >= self.max_node_depth: + break + + # this is last token + if cur_node_depth == token_count: + break + + key_to_child_node = cur_node.key_to_child_node + cur_node = key_to_child_node.get(token) + if cur_node is None: # no exact next token exist, try wildcard node + cur_node = key_to_child_node.get(self.param_str) + if cur_node is None: # no wildcard node exist + return None + + cur_node_depth += 1 + + # get best match among all clusters with same prefix, or None if no match is above sim_th + cluster = self.fast_match(cur_node.cluster_ids, tokens, sim_th, include_params) + return cluster + + def add_seq_to_prefix_tree(self, root_node, cluster: LogCluster): + token_count = len(cluster.log_template_tokens) + token_count_str = str(token_count) + if token_count_str not in root_node.key_to_child_node: + first_layer_node = Node() + root_node.key_to_child_node[token_count_str] = first_layer_node + else: + first_layer_node = root_node.key_to_child_node[token_count_str] + + cur_node = first_layer_node + + # handle case of empty log string + if token_count == 0: + cur_node.cluster_ids = [cluster.cluster_id] + return + + current_depth = 1 + for token in cluster.log_template_tokens: + + # if at max depth or this is last token in template - add current log cluster to the leaf node + if current_depth >= self.max_node_depth or current_depth >= token_count: + # clean up stale clusters before adding a new one. + new_cluster_ids = [] + for cluster_id in cur_node.cluster_ids: + if cluster_id in self.id_to_cluster: + new_cluster_ids.append(cluster_id) + new_cluster_ids.append(cluster.cluster_id) + cur_node.cluster_ids = new_cluster_ids + break + + # if token not matched in this layer of existing tree. + if token not in cur_node.key_to_child_node: + if self.parametrize_numeric_tokens and self.has_numbers(token): + if self.param_str not in cur_node.key_to_child_node: + new_node = Node() + cur_node.key_to_child_node[self.param_str] = new_node + cur_node = new_node + else: + cur_node = cur_node.key_to_child_node[self.param_str] + + else: + if self.param_str in cur_node.key_to_child_node: + if len(cur_node.key_to_child_node) < self.max_children: + new_node = Node() + cur_node.key_to_child_node[token] = new_node + cur_node = new_node + else: + cur_node = cur_node.key_to_child_node[self.param_str] + else: + if len(cur_node.key_to_child_node) + 1 < self.max_children: + new_node = Node() + cur_node.key_to_child_node[token] = new_node + cur_node = new_node + elif len(cur_node.key_to_child_node) + 1 == self.max_children: + new_node = Node() + cur_node.key_to_child_node[self.param_str] = new_node + cur_node = new_node + else: + cur_node = cur_node.key_to_child_node[self.param_str] + + # if the token is matched + else: + cur_node = cur_node.key_to_child_node[token] + + current_depth += 1 + + # seq1 is a template, seq2 is the log to match + def get_seq_distance(self, seq1, seq2, include_params: bool): + assert len(seq1) == len(seq2) + + # sequences are empty - full match + if len(seq1) == 0: + return 1.0, 0 + + sim_tokens = 0 + param_count = 0 + + for token1, token2 in zip(seq1, seq2): + if token1 == self.param_str: + param_count += 1 + continue + if token1 == token2: + sim_tokens += 1 + + if include_params: + sim_tokens += param_count + + ret_val = float(sim_tokens) / len(seq1) + + return ret_val, param_count + + def fast_match(self, cluster_ids: Sequence, tokens: list, sim_th: float, include_params: bool): + """ + Find the best match for a log message (represented as tokens) versus a list of clusters + :param cluster_ids: List of clusters to match against (represented by their IDs) + :param tokens: the log message, separated to tokens. + :param sim_th: minimum required similarity threshold (None will be returned in no clusters reached it) + :param include_params: consider tokens matched to wildcard parameters in similarity threshold. + :return: Best match cluster or None + """ + match_cluster = None + + max_sim = -1 + max_param_count = -1 + max_cluster = None + + for cluster_id in cluster_ids: + # Try to retrieve cluster from cache with bypassing eviction + # algorithm as we are only testing candidates for a match. + cluster = self.id_to_cluster.get(cluster_id) + if cluster is None: + continue + cur_sim, param_count = self.get_seq_distance(cluster.log_template_tokens, tokens, include_params) + if cur_sim > max_sim or (cur_sim == max_sim and param_count > max_param_count): + max_sim = cur_sim + max_param_count = param_count + max_cluster = cluster + + if max_sim >= sim_th: + match_cluster = max_cluster + + return match_cluster + + def create_template(self, seq1, seq2): + assert len(seq1) == len(seq2) + ret_val = list(seq2) + + for i, (token1, token2) in enumerate(zip(seq1, seq2)): + if token1 != token2: + ret_val[i] = self.param_str + + return ret_val + + def print_tree(self, file=None, max_clusters=5): + self.print_node("root", self.root_node, 0, file, max_clusters) + + def print_node(self, token, node, depth, file, max_clusters): + out_str = '\t' * depth + + if depth == 0: + out_str += f'<{token}>' + elif depth == 1: + out_str += f'' + else: + out_str += f'"{token}"' + + if len(node.cluster_ids) > 0: + out_str += f" (cluster_count={len(node.cluster_ids)})" + + print(out_str, file=file) + + for token, child in node.key_to_child_node.items(): + self.print_node(token, child, depth + 1, file, max_clusters) + + for cid in node.cluster_ids[:max_clusters]: + cluster = self.id_to_cluster[cid] + out_str = '\t' * (depth + 1) + str(cluster) + print(out_str, file=file) + + def get_content_as_tokens(self, content): + content = content.strip() + for delimiter in self.extra_delimiters: + content = content.replace(delimiter, " ") + content_tokens = content.split() + return content_tokens + + def add_log_message(self, content: str): + content_tokens = self.get_content_as_tokens(content) + + if self.profiler: + self.profiler.start_section("tree_search") + match_cluster = self.tree_search(self.root_node, content_tokens, self.sim_th, False) + if self.profiler: + self.profiler.end_section() + + # Match no existing log cluster + if match_cluster is None: + if self.profiler: + self.profiler.start_section("create_cluster") + self.clusters_counter += 1 + cluster_id = self.clusters_counter + match_cluster = LogCluster(content_tokens, cluster_id) + self.id_to_cluster[cluster_id] = match_cluster + self.add_seq_to_prefix_tree(self.root_node, match_cluster) + update_type = "cluster_created" + + # Add the new log message to the existing cluster + else: + if self.profiler: + self.profiler.start_section("cluster_exist") + new_template_tokens = self.create_template(content_tokens, match_cluster.log_template_tokens) + if tuple(new_template_tokens) == match_cluster.log_template_tokens: + update_type = "none" + else: + match_cluster.log_template_tokens = tuple(new_template_tokens) + update_type = "cluster_template_changed" + match_cluster.size += 1 + # Touch cluster to update its state in the cache. + # noinspection PyStatementEffect + self.id_to_cluster[match_cluster.cluster_id] + + if self.profiler: + self.profiler.end_section() + + return match_cluster, update_type + + def get_clusters_ids_for_seq_len(self, seq_len: int): + """ + Return all clusters with the specified count of tokens + """ + + def append_clusters_recursive(node: Node, id_list_to_fill: list): + id_list_to_fill.extend(node.cluster_ids) + for child_node in node.key_to_child_node.values(): + append_clusters_recursive(child_node, id_list_to_fill) + + cur_node = self.root_node.key_to_child_node.get(str(seq_len)) + + # no template with same token count + if cur_node is None: + return [] + + target = [] + append_clusters_recursive(cur_node, target) + return target + + def match(self, content: str, full_search_strategy="never"): + """ + Match log message against an already existing cluster. + Match shall be perfect (sim_th=1.0). + New cluster will not be created as a result of this call, nor any cluster modifications. + + :param content: log message to match + :param full_search_strategy: when to perform full cluster search. + (1) "never" is the fastest, will always perform a tree search [O(log(n)] but might produce + false negatives (wrong mismatches) on some edge cases; + (2) "fallback" will perform a linear search [O(n)] among all clusters with the same token count, but only in + case tree search found no match. + It should not have false negatives, however tree-search may find a non-optimal match with + more wildcard parameters than necessary; + (3) "always" is the slowest. It will select the best match among all known clusters, by always evaluating + all clusters with the same token count, and selecting the cluster with perfect all token match and least + count of wildcard matches. + :return: Matched cluster or None if no match found. + """ + + assert full_search_strategy in ["always", "never", "fallback"] + + required_sim_th = 1.0 + content_tokens = self.get_content_as_tokens(content) + + # consider for future improvement: + # It is possible to implement a recursive tree_search (first try exact token match and fallback to + # wildcard match). This will be both accurate and more efficient than the linear full search + # also fast match can be optimized when exact match is required by early + # quitting on less than exact cluster matches. + def full_search(): + all_ids = self.get_clusters_ids_for_seq_len(len(content_tokens)) + cluster = self.fast_match(all_ids, content_tokens, required_sim_th, include_params=True) + return cluster + + if full_search_strategy == "always": + return full_search() + + match_cluster = self.tree_search(self.root_node, content_tokens, required_sim_th, include_params=True) + if match_cluster is not None: + return match_cluster + + if full_search_strategy == "never": + return None + + return full_search() + + def get_total_cluster_size(self): + size = 0 + for c in self.id_to_cluster.values(): + size += c.size + return size diff --git a/intelliaide/vendor/drain3/file_persistence.py b/intelliaide/vendor/drain3/file_persistence.py new file mode 100644 index 0000000..5042993 --- /dev/null +++ b/intelliaide/vendor/drain3/file_persistence.py @@ -0,0 +1,20 @@ +# SPDX-License-Identifier: MIT + +import os +import pathlib + +from drain3.persistence_handler import PersistenceHandler + + +class FilePersistence(PersistenceHandler): + def __init__(self, file_path): + self.file_path = file_path + + def save_state(self, state): + pathlib.Path(self.file_path).write_bytes(state) + + def load_state(self): + if not os.path.exists(self.file_path): + return None + + return pathlib.Path(self.file_path).read_bytes() diff --git a/intelliaide/vendor/drain3/kafka_persistence.py b/intelliaide/vendor/drain3/kafka_persistence.py new file mode 100644 index 0000000..5efc8c7 --- /dev/null +++ b/intelliaide/vendor/drain3/kafka_persistence.py @@ -0,0 +1,37 @@ +# SPDX-License-Identifier: MIT + +import kafka + +from drain3.persistence_handler import PersistenceHandler + + +class KafkaPersistence(PersistenceHandler): + + def __init__(self, topic, snapshot_poll_timeout_sec=60, **kafka_client_options): + self.topic = topic + self.kafka_client_options = kafka_client_options + self.producer = kafka.KafkaProducer(**self.kafka_client_options) + self.snapshot_poll_timeout_sec = snapshot_poll_timeout_sec + + def save_state(self, state): + self.producer.send(self.topic, value=state) + + def load_state(self): + consumer = kafka.KafkaConsumer(**self.kafka_client_options) + partition = kafka.TopicPartition(self.topic, 0) + consumer.assign([partition]) + end_offsets = consumer.end_offsets([partition]) + end_offset = list(end_offsets.values())[0] + if end_offset > 0: + consumer.seek(partition, end_offset - 1) + snapshot_poll_timeout_ms = self.snapshot_poll_timeout_sec * 1000 + records = consumer.poll(snapshot_poll_timeout_ms) + if not records: + raise RuntimeError(f"No message received from Kafka during restore even though end_offset>0") + last_msg = records[partition][0] + state = last_msg.value + else: + state = None + + consumer.close() + return state diff --git a/intelliaide/vendor/drain3/masking.py b/intelliaide/vendor/drain3/masking.py new file mode 100644 index 0000000..b463e77 --- /dev/null +++ b/intelliaide/vendor/drain3/masking.py @@ -0,0 +1,80 @@ +# SPDX-License-Identifier: MIT + +import abc +import re +from typing import Collection, Optional + + +class AbstractMaskingInstruction(abc.ABC): + + def __init__(self, mask_with: str): + self.mask_with = mask_with + + @abc.abstractmethod + def mask(self, content: str, mask_prefix: str, mask_suffix: str) -> str: + """ + Mask content according to this instruction and return the result. + + :param content: text to apply masking to + :param mask_prefix: the prefix of any masks inserted + :param mask_suffix: the suffix of any masks inserted + """ + pass + + +class MaskingInstruction(AbstractMaskingInstruction): + + def __init__(self, pattern: str, mask_with: str): + super().__init__(mask_with) + self.regex = re.compile(pattern) + + @property + def pattern(self): + return self.regex.pattern + + def mask(self, content: str, mask_prefix: str, mask_suffix: str) -> str: + mask = mask_prefix + self.mask_with + mask_suffix + return self.regex.sub(mask, content) + + +# Alias for `MaskingInstruction`. +RegexMaskingInstruction = MaskingInstruction + + +class LogMasker: + + def __init__(self, masking_instructions: Collection[AbstractMaskingInstruction], + mask_prefix: str, mask_suffix: str): + self.mask_prefix = mask_prefix + self.mask_suffix = mask_suffix + self.masking_instructions = masking_instructions + self.mask_name_to_instructions = {} + for mi in self.masking_instructions: + self.mask_name_to_instructions.setdefault(mi.mask_with, []) + self.mask_name_to_instructions[mi.mask_with].append(mi) + + def mask(self, content: str) -> str: + for mi in self.masking_instructions: + content = mi.mask(content, self.mask_prefix, self.mask_suffix) + return content + + @property + def mask_names(self) -> Collection[str]: + return self.mask_name_to_instructions.keys() + + def instructions_by_mask_name(self, mask_name: str) -> Optional[Collection[AbstractMaskingInstruction]]: + return self.mask_name_to_instructions.get(mask_name, []) + +# Some masking examples +# --------------------- +# +# masking_instances = [ +# MaskingInstruction(r'((?<=[^A-Za-z0-9])|^)(([0-9a-f]{2,}:){3,}([0-9a-f]{2,}))((?=[^A-Za-z0-9])|$)', "ID"), +# MaskingInstruction(r'((?<=[^A-Za-z0-9])|^)(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})((?=[^A-Za-z0-9])|$)', "IP"), +# MaskingInstruction(r'((?<=[^A-Za-z0-9])|^)([0-9a-f]{6,} ?){3,}((?=[^A-Za-z0-9])|$)', "SEQ"), +# MaskingInstruction(r'((?<=[^A-Za-z0-9])|^)([0-9A-F]{4} ?){4,}((?=[^A-Za-z0-9])|$)', "SEQ"), +# +# MaskingInstruction(r'((?<=[^A-Za-z0-9])|^)(0x[a-f0-9A-F]+)((?=[^A-Za-z0-9])|$)', "HEX"), +# MaskingInstruction(r'((?<=[^A-Za-z0-9])|^)([\-\+]?\d+)((?=[^A-Za-z0-9])|$)', "NUM"), +# MaskingInstruction(r'(?<=executed cmd )(".+?")', "CMD"), +# ] diff --git a/intelliaide/vendor/drain3/memory_buffer_persistence.py b/intelliaide/vendor/drain3/memory_buffer_persistence.py new file mode 100644 index 0000000..24d7393 --- /dev/null +++ b/intelliaide/vendor/drain3/memory_buffer_persistence.py @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: MIT + +from drain3.persistence_handler import PersistenceHandler + + +class MemoryBufferPersistence(PersistenceHandler): + def __init__(self): + self.state = None + + def save_state(self, state): + self.state = state + + def load_state(self): + return self.state \ No newline at end of file diff --git a/intelliaide/vendor/drain3/persistence_handler.py b/intelliaide/vendor/drain3/persistence_handler.py new file mode 100644 index 0000000..86e30ef --- /dev/null +++ b/intelliaide/vendor/drain3/persistence_handler.py @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: MIT + +from abc import ABC, abstractmethod + + +class PersistenceHandler(ABC): + + @abstractmethod + def save_state(self, state): + pass + + @abstractmethod + def load_state(self): + pass diff --git a/intelliaide/vendor/drain3/redis_persistence.py b/intelliaide/vendor/drain3/redis_persistence.py new file mode 100644 index 0000000..b2cfd67 --- /dev/null +++ b/intelliaide/vendor/drain3/redis_persistence.py @@ -0,0 +1,26 @@ +# SPDX-License-Identifier: MIT + +import redis + +from drain3.persistence_handler import PersistenceHandler + + +class RedisPersistence(PersistenceHandler): + def __init__(self, redis_host, redis_port, redis_db, redis_pass, is_ssl, redis_key): + self.redis_host = redis_host + self.redis_port = redis_port + self.redis_db = redis_db + self.redis_pass = redis_pass + self.is_ssl = is_ssl + self.redis_key = redis_key + self.r = redis.Redis(host=self.redis_host, + port=self.redis_port, + db=self.redis_db, + password=self.redis_pass, + ssl=self.is_ssl) + + def save_state(self, state): + self.r.set(self.redis_key, state) + + def load_state(self): + return self.r.get(self.redis_key) diff --git a/intelliaide/vendor/drain3/simple_profiler.py b/intelliaide/vendor/drain3/simple_profiler.py new file mode 100644 index 0000000..6f45810 --- /dev/null +++ b/intelliaide/vendor/drain3/simple_profiler.py @@ -0,0 +1,151 @@ +# SPDX-License-Identifier: Apache-2.0 +# Based on https://github.com/davidohana/SimpleProfiler/blob/main/python/simple_profiler.py + +import os +import time + +from abc import ABC, abstractmethod + + +class Profiler(ABC): + + @abstractmethod + def start_section(self, section_name: str): + pass + + @abstractmethod + def end_section(self, section_name=""): + pass + + @abstractmethod + def report(self, period_sec=30): + pass + + +class NullProfiler(Profiler): + """A no-op profiler. Use it instead of SimpleProfiler in case you want to disable profiling.""" + + def start_section(self, section_name: str): + pass + + def end_section(self, section_name=""): + pass + + def report(self, period_sec=30): + pass + + +class SimpleProfiler(Profiler): + def __init__(self, reset_after_sample_count=0, enclosing_section_name="total", printer=print, report_sec=30): + self.printer = printer + self.enclosing_section_name = enclosing_section_name + self.reset_after_sample_count = reset_after_sample_count + self.report_sec = report_sec + + self.section_to_stats = {} + self.last_report_timestamp_sec = time.time() + self.last_started_section_name = "" + + def start_section(self, section_name: str): + """Start measuring a section""" + + if not section_name: + raise ValueError("Section name is empty") + self.last_started_section_name = section_name + + section = self.section_to_stats.get(section_name, None) + if section is None: + section = ProfiledSectionStats(section_name) + self.section_to_stats[section_name] = section + + if section.start_time_sec != 0: + raise ValueError(f"Section {section_name} is already started") + + section.start_time_sec = time.time() + + def end_section(self, name=""): + """End measuring a section. Leave section name empty to end the last started section.""" + + now = time.time() + + section_name = name + if not name: + section_name = self.last_started_section_name + + if not section_name: + raise ValueError("Neither section name is specified nor a section is started") + + section: ProfiledSectionStats = self.section_to_stats.get(section_name, None) + if section is None: + raise ValueError(f"Section {section_name} does not exist") + + if section.start_time_sec == 0: + raise ValueError(f"Section {section_name} was not started") + + took_sec = now - section.start_time_sec + if 0 < self.reset_after_sample_count == section.sample_count: + section.sample_count_batch = 0 + section.total_time_sec_batch = 0 + + section.sample_count += 1 + section.total_time_sec += took_sec + section.sample_count_batch += 1 + section.total_time_sec_batch += took_sec + section.start_time_sec = 0 + + def report(self, period_sec=30): + """Print results using [printer] function. By default prints to stdout.""" + if time.time() - self.last_report_timestamp_sec < period_sec: + return False + + enclosing_time_sec = 0 + if self.enclosing_section_name: + enclosing_section: ProfiledSectionStats = self.section_to_stats.get(self.enclosing_section_name, None) + if enclosing_section: + enclosing_time_sec = enclosing_section.total_time_sec + + include_batch_rates = self.reset_after_sample_count > 0 + + sections = self.section_to_stats.values() + sorted_sections = sorted(sections, key=lambda it: it.total_time_sec, reverse=True) + lines = map(lambda it: it.to_string(enclosing_time_sec, include_batch_rates), sorted_sections) + text = os.linesep.join(lines) + self.printer(text) + + self.last_report_timestamp_sec = time.time() + return True + + +class ProfiledSectionStats: + def __init__(self, section_name, start_time_sec=0, sample_count=0, total_time_sec=0, + sample_count_batch=0, total_time_sec_batch=0): + self.section_name = section_name + self.start_time_sec = start_time_sec + self.sample_count = sample_count + self.total_time_sec = total_time_sec + self.sample_count_batch = sample_count_batch + self.total_time_sec_batch = total_time_sec_batch + + def to_string(self, enclosing_time_sec: int, include_batch_rates: bool): + took_sec_text = f"{self.total_time_sec:>8.2f} s" + if enclosing_time_sec > 0: + took_sec_text += f" ({100 * self.total_time_sec / enclosing_time_sec:>6.2f}%)" + + ms_per_k_samples = f"{1000000 * self.total_time_sec / self.sample_count: 7.2f}" + + if self.total_time_sec > 0: + samples_per_sec = f"{self.sample_count / self.total_time_sec: 15,.2f}" + else: + samples_per_sec = "N/A" + + if include_batch_rates: + ms_per_k_samples += f" ({1000000 * self.total_time_sec_batch / self.sample_count_batch: 7.2f})" + if self.total_time_sec_batch > 0: + samples_per_sec += f" ({self.sample_count_batch / self.total_time_sec_batch: 15,.2f})" + else: + samples_per_sec += " (N/A)" + + return f"{self.section_name: <15}: took {took_sec_text}, " \ + f"{self.sample_count: >10,} samples, " \ + f"{ms_per_k_samples} ms / 1000 samples, " \ + f"{samples_per_sec} hz" diff --git a/intelliaide/vendor/drain3/template_miner.py b/intelliaide/vendor/drain3/template_miner.py new file mode 100644 index 0000000..6a057f2 --- /dev/null +++ b/intelliaide/vendor/drain3/template_miner.py @@ -0,0 +1,314 @@ +# SPDX-License-Identifier: MIT + +import base64 +import logging +import re +import time +import zlib +from typing import Optional, List, NamedTuple + +import jsonpickle +from cachetools import LRUCache, cachedmethod + +from drain3.drain import Drain, LogCluster +from drain3.masking import LogMasker +from drain3.persistence_handler import PersistenceHandler +from drain3.simple_profiler import SimpleProfiler, NullProfiler, Profiler +from drain3.template_miner_config import TemplateMinerConfig + +logger = logging.getLogger(__name__) + +config_filename = 'drain3.ini' + +ExtractedParameter = NamedTuple("ExtractedParameter", [("value", str), ("mask_name", str)]) + + +class TemplateMiner: + + def __init__(self, + persistence_handler: PersistenceHandler = None, + config: TemplateMinerConfig = None): + """ + Wrapper for Drain with persistence and masking support + + :param persistence_handler: The type of persistence to use. When None, no persistence is applied. + :param config: Configuration object. When none, configuration is loaded from default .ini file (if exist) + """ + logger.info("Starting Drain3 template miner") + + if config is None: + logger.info(f"Loading configuration from {config_filename}") + config = TemplateMinerConfig() + config.load(config_filename) + + self.config = config + + self.profiler: Profiler = NullProfiler() + if self.config.profiling_enabled: + self.profiler = SimpleProfiler() + + self.persistence_handler = persistence_handler + + param_str = self.config.mask_prefix + "*" + self.config.mask_suffix + self.drain = Drain( + sim_th=self.config.drain_sim_th, + depth=self.config.drain_depth, + max_children=self.config.drain_max_children, + max_clusters=self.config.drain_max_clusters, + extra_delimiters=self.config.drain_extra_delimiters, + profiler=self.profiler, + param_str=param_str, + parametrize_numeric_tokens=self.config.parametrize_numeric_tokens + ) + self.masker = LogMasker(self.config.masking_instructions, self.config.mask_prefix, self.config.mask_suffix) + self.parameter_extraction_cache = LRUCache(self.config.parameter_extraction_cache_capacity) + self.last_save_time = time.time() + if persistence_handler is not None: + self.load_state() + + def load_state(self): + logger.info("Checking for saved state") + + state = self.persistence_handler.load_state() + if state is None: + logger.info("Saved state not found") + return + + if self.config.snapshot_compress_state: + state = zlib.decompress(base64.b64decode(state)) + + loaded_drain: Drain = jsonpickle.loads(state, keys=True) + + # json-pickle encoded keys as string by default, so we have to convert those back to int + # this is only relevant for backwards compatibility when loading a snapshot of drain <= v0.9.1 + # which did not use json-pickle's keys=true + if len(loaded_drain.id_to_cluster) > 0 and isinstance(next(iter(loaded_drain.id_to_cluster.keys())), str): + loaded_drain.id_to_cluster = {int(k): v for k, v in list(loaded_drain.id_to_cluster.items())} + if self.config.drain_max_clusters: + cache = LRUCache(maxsize=self.config.drain_max_clusters) + cache.update(loaded_drain.id_to_cluster) + loaded_drain.id_to_cluster = cache + + self.drain.id_to_cluster = loaded_drain.id_to_cluster + self.drain.clusters_counter = loaded_drain.clusters_counter + self.drain.root_node = loaded_drain.root_node + + logger.info("Restored {0} clusters built from {1} messages".format( + len(loaded_drain.clusters), loaded_drain.get_total_cluster_size())) + + def save_state(self, snapshot_reason): + state = jsonpickle.dumps(self.drain, keys=True).encode('utf-8') + if self.config.snapshot_compress_state: + state = base64.b64encode(zlib.compress(state)) + + logger.info(f"Saving state of {len(self.drain.clusters)} clusters " + f"with {self.drain.get_total_cluster_size()} messages, {len(state)} bytes, " + f"reason: {snapshot_reason}") + self.persistence_handler.save_state(state) + + def get_snapshot_reason(self, change_type, cluster_id): + if change_type != "none": + return "{} ({})".format(change_type, cluster_id) + + diff_time_sec = time.time() - self.last_save_time + if diff_time_sec >= self.config.snapshot_interval_minutes * 60: + return "periodic" + + return None + + def add_log_message(self, log_message: str) -> dict: + self.profiler.start_section("total") + + self.profiler.start_section("mask") + masked_content = self.masker.mask(log_message) + self.profiler.end_section() + + self.profiler.start_section("drain") + cluster, change_type = self.drain.add_log_message(masked_content) + self.profiler.end_section("drain") + result = { + "change_type": change_type, + "cluster_id": cluster.cluster_id, + "cluster_size": cluster.size, + "template_mined": cluster.get_template(), + "cluster_count": len(self.drain.clusters) + } + + if self.persistence_handler is not None: + self.profiler.start_section("save_state") + snapshot_reason = self.get_snapshot_reason(change_type, cluster.cluster_id) + if snapshot_reason: + self.save_state(snapshot_reason) + self.last_save_time = time.time() + self.profiler.end_section() + + self.profiler.end_section("total") + self.profiler.report(self.config.profiling_report_sec) + return result + + def match(self, log_message: str, full_search_strategy="never") -> LogCluster: + """ + Mask log message and match against an already existing cluster. + Match shall be perfect (sim_th=1.0). + New cluster will not be created as a result of this call, nor any cluster modifications. + + :param log_message: log message to match + :param full_search_strategy: when to perform full cluster search. + (1) "never" is the fastest, will always perform a tree search [O(log(n)] but might produce + false negatives (wrong mismatches) on some edge cases; + (2) "fallback" will perform a linear search [O(n)] among all clusters with the same token count, but only in + case tree search found no match. + It should not have false negatives, however tree-search may find a non-optimal match with + more wildcard parameters than necessary; + (3) "always" is the slowest. It will select the best match among all known clusters, by always evaluating + all clusters with the same token count, and selecting the cluster with perfect all token match and least + count of wildcard matches. + :return: Matched cluster or None if no match found. + """ + + masked_content = self.masker.mask(log_message) + matched_cluster = self.drain.match(masked_content, full_search_strategy) + return matched_cluster + + def get_parameter_list(self, log_template: str, log_message: str) -> List[str]: + """ + Extract parameters from a log message according to a provided template that was generated + by calling `add_log_message()`. + + This function is deprecated. Please use extract_parameters instead. + + :param log_template: log template corresponding to the log message + :param log_message: log message to extract parameters from + :return: An ordered list of parameter values present in the log message. + """ + + extracted_parameters = self.extract_parameters(log_template, log_message, exact_matching=False) + if not extracted_parameters: + return [] + return [parameter.value for parameter in extracted_parameters] + + def extract_parameters(self, + log_template: str, + log_message: str, + exact_matching: bool = True) -> Optional[List[ExtractedParameter]]: + """ + Extract parameters from a log message according to a provided template that was generated + by calling `add_log_message()`. + + For most accurate results, it is recommended that + - Each `MaskingInstruction` has a unique `mask_with` value, + - No `MaskingInstruction` has a `mask_with` value of `*`, + - The regex-patterns of `MaskingInstruction` do not use unnamed back-references; + instead use back-references to named groups e.g. `(?P=some-name)`. + + :param log_template: log template corresponding to the log message + :param log_message: log message to extract parameters from + :param exact_matching: whether to apply the correct masking-patterns to match parameters, or try to approximate; + disabling exact_matching may be faster but may lead to situations in which parameters + are wrongly identified. + :return: A ordered list of ExtractedParameter for the log message + or None if log_message does not correspond to log_template. + """ + + for delimiter in self.config.drain_extra_delimiters: + log_message = re.sub(delimiter, " ", log_message) + + template_regex, param_group_name_to_mask_name = self._get_template_parameter_extraction_regex( + log_template, exact_matching) + + # Parameters are represented by specific named groups inside template_regex. + parameter_match = re.match(template_regex, log_message) + + # log template does not match template + if not parameter_match: + return None + + # create list of extracted parameters + extracted_parameters = [] + for group_name, parameter in parameter_match.groupdict().items(): + if group_name in param_group_name_to_mask_name: + mask_name = param_group_name_to_mask_name[group_name] + extracted_parameter = ExtractedParameter(parameter, mask_name) + extracted_parameters.append(extracted_parameter) + + return extracted_parameters + + @cachedmethod(lambda self: self.parameter_extraction_cache) + def _get_template_parameter_extraction_regex(self, log_template: str, exact_matching: bool): + param_group_name_to_mask_name = dict() + param_name_counter = [0] + + def get_next_param_name(): + param_group_name = "p_" + str(param_name_counter[0]) + param_name_counter[0] += 1 + return param_group_name + + # Create a named group with the respective patterns for the given mask-name. + def create_capture_regex(_mask_name): + allowed_patterns = [] + if exact_matching: + # get all possible regex patterns from masking instructions that match this mask name + masking_instructions = self.masker.instructions_by_mask_name(_mask_name) + for mi in masking_instructions: + # MaskingInstruction may already contain named groups. + # We replace group names in those named groups, to avoid conflicts due to duplicate names. + if hasattr(mi, 'regex'): + mi_groups = mi.regex.groupindex.keys() + pattern = mi.pattern + else: + # non regex masking instructions - support only non-exact matching + mi_groups = [] + pattern = ".+?" + + for group_name in mi_groups: + param_group_name = get_next_param_name() + + def replace_captured_param_name(param_pattern): + _search_str = param_pattern.format(group_name) + _replace_str = param_pattern.format(param_group_name) + return pattern.replace(_search_str, _replace_str) + + pattern = replace_captured_param_name("(?P={}") + pattern = replace_captured_param_name("(?P<{}>") + + # support unnamed back-references in masks (simple cases only) + pattern = re.sub(r"\\(?!0)\d{1,2}", r"(?:.+?)", pattern) + allowed_patterns.append(pattern) + + if not exact_matching or _mask_name == "*": + allowed_patterns.append(r".+?") + + # Give each capture group a unique name to avoid conflicts. + param_group_name = get_next_param_name() + param_group_name_to_mask_name[param_group_name] = _mask_name + joined_patterns = "|".join(allowed_patterns) + capture_regex = "(?P<{}>{})".format(param_group_name, joined_patterns) + return capture_regex + + # For every mask in the template, replace it with a named group of all + # possible masking-patterns it could represent (in order). + mask_names = set(self.masker.mask_names) + + # the Drain catch-all mask + mask_names.add("*") + + escaped_prefix = re.escape(self.masker.mask_prefix) + escaped_suffix = re.escape(self.masker.mask_suffix) + template_regex = re.escape(log_template) + + # replace each mask name with a proper regex that captures it + for mask_name in mask_names: + search_str = escaped_prefix + re.escape(mask_name) + escaped_suffix + while True: + rep_str = create_capture_regex(mask_name) + # Replace one-by-one to get a new param group name for each replacement. + template_regex_new = template_regex.replace(search_str, rep_str, 1) + # Break when all replaces for this mask are done. + if template_regex_new == template_regex: + break + template_regex = template_regex_new + + # match also messages with multiple spaces or other whitespace chars between tokens + template_regex = re.sub(r"\\ ", r"\\s+", template_regex) + template_regex = "^" + template_regex + "$" + return template_regex, param_group_name_to_mask_name diff --git a/intelliaide/vendor/drain3/template_miner_config.py b/intelliaide/vendor/drain3/template_miner_config.py new file mode 100644 index 0000000..ce6c0b3 --- /dev/null +++ b/intelliaide/vendor/drain3/template_miner_config.py @@ -0,0 +1,78 @@ +# SPDX-License-Identifier: MIT + +import ast +import configparser +import json +import logging + +from drain3.masking import MaskingInstruction + +logger = logging.getLogger(__name__) + + +class TemplateMinerConfig: + def __init__(self): + self.profiling_enabled = False + self.profiling_report_sec = 60 + self.snapshot_interval_minutes = 5 + self.snapshot_compress_state = True + self.drain_extra_delimiters = [] + self.drain_sim_th = 0.4 + self.drain_depth = 4 + self.drain_max_children = 100 + self.drain_max_clusters = None + self.masking_instructions = [] + self.mask_prefix = "<" + self.mask_suffix = ">" + self.parameter_extraction_cache_capacity = 3000 + self.parametrize_numeric_tokens = True + + def load(self, config_filename: str): + parser = configparser.ConfigParser() + read_files = parser.read(config_filename) + if len(read_files) == 0: + logger.warning(f"config file not found: {config_filename}") + + section_profiling = 'PROFILING' + section_snapshot = 'SNAPSHOT' + section_drain = 'DRAIN' + section_masking = 'MASKING' + + self.profiling_enabled = parser.getboolean(section_profiling, 'enabled', + fallback=self.profiling_enabled) + self.profiling_report_sec = parser.getint(section_profiling, 'report_sec', + fallback=self.profiling_report_sec) + + self.snapshot_interval_minutes = parser.getint(section_snapshot, 'snapshot_interval_minutes', + fallback=self.snapshot_interval_minutes) + self.snapshot_compress_state = parser.getboolean(section_snapshot, 'compress_state', + fallback=self.snapshot_compress_state) + + drain_extra_delimiters_str = parser.get(section_drain, 'extra_delimiters', + fallback=str(self.drain_extra_delimiters)) + self.drain_extra_delimiters = ast.literal_eval(drain_extra_delimiters_str) + + self.drain_sim_th = parser.getfloat(section_drain, 'sim_th', + fallback=self.drain_sim_th) + self.drain_depth = parser.getint(section_drain, 'depth', + fallback=self.drain_depth) + self.drain_max_children = parser.getint(section_drain, 'max_children', + fallback=self.drain_max_children) + self.drain_max_clusters = parser.getint(section_drain, 'max_clusters', + fallback=self.drain_max_clusters) + self.parametrize_numeric_tokens = parser.getboolean(section_drain, 'parametrize_numeric_tokens', + fallback=self.parametrize_numeric_tokens) + + masking_instructions_str = parser.get(section_masking, 'masking', + fallback=str(self.masking_instructions)) + self.mask_prefix = parser.get(section_masking, 'mask_prefix', fallback=self.mask_prefix) + self.mask_suffix = parser.get(section_masking, 'mask_suffix', fallback=self.mask_suffix) + self.parameter_extraction_cache_capacity = parser.get(section_masking, 'parameter_extraction_cache_capacity', + fallback=self.parameter_extraction_cache_capacity) + + masking_instructions = [] + masking_list = json.loads(masking_instructions_str) + for mi in masking_list: + instruction = MaskingInstruction(mi['regex_pattern'], mi['mask_with']) + masking_instructions.append(instruction) + self.masking_instructions = masking_instructions diff --git a/intelliaide/vendor/google/auth/__init__.py b/intelliaide/vendor/google/auth/__init__.py new file mode 100644 index 0000000..927efdd --- /dev/null +++ b/intelliaide/vendor/google/auth/__init__.py @@ -0,0 +1,34 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Google Auth Library for Python.""" + +import logging + +from google.auth import version as google_auth_version +from google.auth._default import ( + default, + load_credentials_from_dict, + load_credentials_from_file, +) + + +__version__ = google_auth_version.__version__ + + +__all__ = ["default", "load_credentials_from_file", "load_credentials_from_dict"] + + +# Set default logging handler to avoid "No handler found" warnings. +logging.getLogger(__name__).addHandler(logging.NullHandler()) diff --git a/intelliaide/vendor/google/auth/_agent_identity_utils.py b/intelliaide/vendor/google/auth/_agent_identity_utils.py new file mode 100644 index 0000000..8a1eddb --- /dev/null +++ b/intelliaide/vendor/google/auth/_agent_identity_utils.py @@ -0,0 +1,317 @@ +# Copyright 2025 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Helpers for Agent Identity credentials.""" + +import base64 +import hashlib +import logging +import os +import re +import time +from urllib.parse import quote, urlparse + +from google.auth import environment_vars, exceptions + +_LOGGER = logging.getLogger(__name__) + +CRYPTOGRAPHY_NOT_FOUND_ERROR = ( + "The cryptography library is required for certificate-based authentication." + "Please install it with `pip install google-auth[cryptography]`." +) + +# SPIFFE trust domain patterns for Agent Identities. +_AGENT_IDENTITY_SPIFFE_TRUST_DOMAIN_PATTERNS = [ + r"^agents\.global\.org-\d+\.system\.id\.goog$", + r"^agents\.global\.proj-\d+\.system\.id\.goog$", + r"^agents-nonprod\.global\.org-\d+\.system\.id\.goog$", + r"^agents-nonprod\.global\.proj-\d+\.system\.id\.goog$", +] + +_WELL_KNOWN_CERT_PATH = "/var/run/secrets/workload-spiffe-credentials/certificates.pem" + +# Constants for polling the certificate file. +_FAST_POLL_CYCLES = 50 +_FAST_POLL_INTERVAL = 0.1 # 100ms +_SLOW_POLL_INTERVAL = 0.5 # 500ms +_TOTAL_TIMEOUT = 30 # seconds + +# Calculate the number of slow poll cycles based on the total timeout. +_SLOW_POLL_CYCLES = int( + (_TOTAL_TIMEOUT - (_FAST_POLL_CYCLES * _FAST_POLL_INTERVAL)) / _SLOW_POLL_INTERVAL +) + +_POLLING_INTERVALS = ([_FAST_POLL_INTERVAL] * _FAST_POLL_CYCLES) + ( + [_SLOW_POLL_INTERVAL] * _SLOW_POLL_CYCLES +) + + +def _is_certificate_file_ready(path): + """Checks if a file exists and is not empty.""" + return path and os.path.exists(path) and os.path.getsize(path) > 0 + + +def get_agent_identity_certificate_path(): + """Gets the certificate path from the certificate config file. + + The path to the certificate config file is read from the + GOOGLE_API_CERTIFICATE_CONFIG environment variable. This function + implements a retry mechanism to handle cases where the environment + variable is set before the files are available on the filesystem. + + Returns: + str: The path to the leaf certificate file. + + Raises: + google.auth.exceptions.RefreshError: If the certificate config file + or the certificate file cannot be found after retries. + """ + import json + + cert_config_path = os.environ.get(environment_vars.GOOGLE_API_CERTIFICATE_CONFIG) + + # Check if the well-known workload directory is mounted. + well_known_dir = os.path.dirname(_WELL_KNOWN_CERT_PATH) + has_well_known_dir = os.path.exists(well_known_dir) + + # If we have neither a config path nor a well-known mount directory, exit immediately. + if not cert_config_path and not has_well_known_dir: + return None + + has_logged_config_warning = False + has_logged_cert_warning = False + + for interval in _POLLING_INTERVALS: + try: + # Path A: Config file is explicitly set + if cert_config_path: + with open(cert_config_path, "r") as f: + cert_config = json.load(f) + + cert_configs = ( + cert_config.get("cert_configs") + if isinstance(cert_config, dict) + else None + ) + workload_config = ( + cert_configs.get("workload") + if isinstance(cert_configs, dict) + else None + ) + + if ( + not isinstance(workload_config, dict) + or "cert_path" not in workload_config + ): + return None + + cert_path = workload_config["cert_path"] + if _is_certificate_file_ready(cert_path): + return cert_path + + # The config was parsed, but the cert file is not ready yet + target_path = cert_path + + # Path B: Config is NOT set, fallback to the well-known path + else: + if _is_certificate_file_ready(_WELL_KNOWN_CERT_PATH): + return _WELL_KNOWN_CERT_PATH + + # The well-known cert file is not ready yet + target_path = _WELL_KNOWN_CERT_PATH + + # Log a warning on the first failed attempt to load the certificate file + if not has_logged_cert_warning: + _LOGGER.warning( + "Certificate file not ready at %s. Retrying until startup timeout (up to %s seconds total)...", + target_path, + _TOTAL_TIMEOUT, + ) + has_logged_cert_warning = True + + except (IOError, ValueError, KeyError) as e: + if cert_config_path and os.path.exists(cert_config_path): + # If the file exists but has invalid JSON or is unreadable, + # we assume it is in its final format and fail-fast by returning None. + return None + + if not has_logged_config_warning and cert_config_path: + _LOGGER.warning( + "Certificate config file not found or incomplete: %s (from %s " + "environment variable). Retrying until startup timeout (up to %s seconds total)...", + e, + environment_vars.GOOGLE_API_CERTIFICATE_CONFIG, + _TOTAL_TIMEOUT, + ) + has_logged_config_warning = True + pass + + # A sleep is required in two cases: + # 1. The config file is not found (the except block). + # 2. The config file/well-known path is found, but the certificate is not yet available. + # In both cases, we need to poll, so we sleep on every iteration + # that doesn't return a certificate. + time.sleep(interval) + + raise exceptions.RefreshError( + "Certificate config or certificate file not found after multiple retries. " + f"Token binding protection is failing. You can turn off this protection by setting " + f"{environment_vars.GOOGLE_API_PREVENT_AGENT_TOKEN_SHARING_FOR_GCP_SERVICES} to false " + "to fall back to unbound tokens." + ) + + +def get_and_parse_agent_identity_certificate(): + """Gets and parses the agent identity certificate if not opted out. + + Checks if the user has opted out of certificate-bound tokens. If not, + it gets the certificate path, reads the file, and parses it. + + Returns: + The parsed certificate object if found and not opted out, otherwise None. + """ + # If the user has opted out of cert bound tokens, there is no need to + # look up the certificate. + is_opted_out = ( + os.environ.get( + environment_vars.GOOGLE_API_PREVENT_AGENT_TOKEN_SHARING_FOR_GCP_SERVICES, + "true", + ).lower() + == "false" + ) + if is_opted_out: + return None + + cert_path = get_agent_identity_certificate_path() + if not cert_path: + return None + + with open(cert_path, "rb") as cert_file: + cert_bytes = cert_file.read() + + return parse_certificate(cert_bytes) + + +def parse_certificate(cert_bytes): + """Parses a PEM-encoded certificate. + + Args: + cert_bytes (bytes): The PEM-encoded certificate bytes. + + Returns: + cryptography.x509.Certificate: The parsed certificate object. + """ + try: + from cryptography import x509 + + return x509.load_pem_x509_certificate(cert_bytes) + except ImportError as e: + raise ImportError(CRYPTOGRAPHY_NOT_FOUND_ERROR) from e + + +def _is_agent_identity_certificate(cert): + """Checks if a certificate is an Agent Identity certificate. + + This is determined by checking the Subject Alternative Name (SAN) for a + SPIFFE ID with a trust domain matching Agent Identity patterns. + + Args: + cert (cryptography.x509.Certificate): The parsed certificate object. + + Returns: + bool: True if the certificate is an Agent Identity certificate, + False otherwise. + """ + try: + from cryptography import x509 + from cryptography.x509.oid import ExtensionOID + + try: + ext = cert.extensions.get_extension_for_oid( + ExtensionOID.SUBJECT_ALTERNATIVE_NAME + ) + except x509.ExtensionNotFound: + return False + uris = ext.value.get_values_for_type(x509.UniformResourceIdentifier) + + for uri in uris: + parsed_uri = urlparse(uri) + if parsed_uri.scheme == "spiffe": + trust_domain = parsed_uri.netloc + for pattern in _AGENT_IDENTITY_SPIFFE_TRUST_DOMAIN_PATTERNS: + if re.match(pattern, trust_domain): + return True + return False + except ImportError as e: + raise ImportError(CRYPTOGRAPHY_NOT_FOUND_ERROR) from e + + +def calculate_certificate_fingerprint(cert): + """Calculates the URL-encoded, unpadded, base64-encoded SHA256 hash of a + DER-encoded certificate. + + Args: + cert (cryptography.x509.Certificate): The parsed certificate object. + + Returns: + str: The URL-encoded, unpadded, base64-encoded SHA256 fingerprint. + """ + try: + from cryptography.hazmat.primitives import serialization + + der_cert = cert.public_bytes(serialization.Encoding.DER) + fingerprint = hashlib.sha256(der_cert).digest() + # The certificate fingerprint is generated in two steps to align with GFE's + # expectations and ensure proper URL transmission: + # 1. Standard base64 encoding is applied, and padding ('=') is removed. + # 2. The resulting string is then URL-encoded to handle special characters + # ('+', '/') that would otherwise be misinterpreted in URL parameters. + base64_fingerprint = base64.b64encode(fingerprint).decode("utf-8") + unpadded_base64_fingerprint = base64_fingerprint.rstrip("=") + return quote(unpadded_base64_fingerprint) + except ImportError as e: + raise ImportError(CRYPTOGRAPHY_NOT_FOUND_ERROR) from e + + +def should_request_bound_token(cert): + """Determines if a bound token should be requested. + + This is based on the GOOGLE_API_PREVENT_AGENT_TOKEN_SHARING_FOR_GCP_SERVICES + environment variable and whether the certificate is an agent identity cert. + + Args: + cert (cryptography.x509.Certificate): The parsed certificate object. + + Returns: + bool: True if a bound token should be requested, False otherwise. + """ + is_agent_cert = _is_agent_identity_certificate(cert) + is_opted_in = ( + os.environ.get( + environment_vars.GOOGLE_API_PREVENT_AGENT_TOKEN_SHARING_FOR_GCP_SERVICES, + "true", + ).lower() + == "true" + ) + return is_agent_cert and is_opted_in + + +def get_cached_cert_fingerprint(cached_cert): + """Returns the fingerprint of the cached certificate.""" + if cached_cert: + cert_obj = parse_certificate(cached_cert) + cached_cert_fingerprint = calculate_certificate_fingerprint(cert_obj) + else: + raise ValueError("mTLS connection is not configured.") + return cached_cert_fingerprint diff --git a/intelliaide/vendor/google/auth/_cache.py b/intelliaide/vendor/google/auth/_cache.py new file mode 100644 index 0000000..0a4a2af --- /dev/null +++ b/intelliaide/vendor/google/auth/_cache.py @@ -0,0 +1,64 @@ +# Copyright 2025 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from collections import OrderedDict + + +class LRUCache(dict): + def __init__(self, maxsize): + super().__init__() + self._order = OrderedDict() + self.maxsize = maxsize + + def clear(self): + super().clear() + self._order.clear() + + def get(self, key, default=None): + try: + value = super().__getitem__(key) + self._update(key) + return value + except KeyError: + return default + + def __getitem__(self, key): + value = super().__getitem__(key) + self._update(key) + return value + + def __setitem__(self, key, value): + maxsize = self.maxsize + if maxsize <= 0: + return + if key not in self: + while len(self) >= maxsize: + self.popitem() + super().__setitem__(key, value) + self._update(key) + + def __delitem__(self, key): + super().__delitem__(key) + del self._order[key] + + def popitem(self): + """Remove and return the least recently used key-value pair.""" + key, _ = self._order.popitem(last=False) + return key, super().pop(key) + + def _update(self, key): + try: + self._order.move_to_end(key) + except KeyError: + self._order[key] = None diff --git a/intelliaide/vendor/google/auth/_cloud_sdk.py b/intelliaide/vendor/google/auth/_cloud_sdk.py new file mode 100644 index 0000000..85b3c4f --- /dev/null +++ b/intelliaide/vendor/google/auth/_cloud_sdk.py @@ -0,0 +1,153 @@ +# Copyright 2015 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Helpers for reading the Google Cloud SDK's configuration.""" + +import os +import subprocess + +from google.auth import _helpers +from google.auth import environment_vars +from google.auth import exceptions + + +# The ~/.config subdirectory containing gcloud credentials. +_CONFIG_DIRECTORY = "gcloud" +# Windows systems store config at %APPDATA%\gcloud +_WINDOWS_CONFIG_ROOT_ENV_VAR = "APPDATA" +# The name of the file in the Cloud SDK config that contains default +# credentials. +_CREDENTIALS_FILENAME = "application_default_credentials.json" +# The name of the Cloud SDK shell script +_CLOUD_SDK_POSIX_COMMAND = "gcloud" +_CLOUD_SDK_WINDOWS_COMMAND = "gcloud.cmd" +# The command to get the Cloud SDK configuration +_CLOUD_SDK_CONFIG_GET_PROJECT_COMMAND = ("config", "get", "project") +# The command to get google user access token +_CLOUD_SDK_USER_ACCESS_TOKEN_COMMAND = ("auth", "print-access-token") +# Cloud SDK's application-default client ID +CLOUD_SDK_CLIENT_ID = ( + "764086051850-6qr4p6gpi6hn506pt8ejuq83di341hur.apps.googleusercontent.com" +) + + +def get_config_path(): + """Returns the absolute path the the Cloud SDK's configuration directory. + + Returns: + str: The Cloud SDK config path. + """ + # If the path is explicitly set, return that. + try: + return os.environ[environment_vars.CLOUD_SDK_CONFIG_DIR] + except KeyError: + pass + + # Non-windows systems store this at ~/.config/gcloud + if os.name != "nt": + return os.path.join(os.path.expanduser("~"), ".config", _CONFIG_DIRECTORY) + # Windows systems store config at %APPDATA%\gcloud + else: + try: + return os.path.join( + os.environ[_WINDOWS_CONFIG_ROOT_ENV_VAR], _CONFIG_DIRECTORY + ) + except KeyError: + # This should never happen unless someone is really + # messing with things, but we'll cover the case anyway. + drive = os.environ.get("SystemDrive", "C:") + return os.path.join(drive, "\\", _CONFIG_DIRECTORY) + + +def get_application_default_credentials_path(): + """Gets the path to the application default credentials file. + + The path may or may not exist. + + Returns: + str: The full path to application default credentials. + """ + config_path = get_config_path() + return os.path.join(config_path, _CREDENTIALS_FILENAME) + + +def _run_subprocess_ignore_stderr(command): + """Return subprocess.check_output with the given command and ignores stderr.""" + with open(os.devnull, "w") as devnull: + output = subprocess.check_output(command, stderr=devnull) + return output + + +def get_project_id(): + """Gets the project ID from the Cloud SDK. + + Returns: + Optional[str]: The project ID. + """ + if os.name == "nt": + command = _CLOUD_SDK_WINDOWS_COMMAND + else: + command = _CLOUD_SDK_POSIX_COMMAND + + try: + # Ignore the stderr coming from gcloud, so it won't be mixed into the output. + # https://github.com/googleapis/google-auth-library-python/issues/673 + project = _run_subprocess_ignore_stderr( + (command,) + _CLOUD_SDK_CONFIG_GET_PROJECT_COMMAND + ) + + # Turn bytes into a string and remove "\n" + project = _helpers.from_bytes(project).strip() + return project if project else None + except (subprocess.CalledProcessError, OSError, IOError): + return None + + +def get_auth_access_token(account=None): + """Load user access token with the ``gcloud auth print-access-token`` command. + + Args: + account (Optional[str]): Account to get the access token for. If not + specified, the current active account will be used. + + Returns: + str: The user access token. + + Raises: + google.auth.exceptions.UserAccessTokenError: if failed to get access + token from gcloud. + """ + if os.name == "nt": + command = _CLOUD_SDK_WINDOWS_COMMAND + else: + command = _CLOUD_SDK_POSIX_COMMAND + + try: + if account: + command = ( + (command,) + + _CLOUD_SDK_USER_ACCESS_TOKEN_COMMAND + + ("--account=" + account,) + ) + else: + command = (command,) + _CLOUD_SDK_USER_ACCESS_TOKEN_COMMAND + + access_token = subprocess.check_output(command, stderr=subprocess.STDOUT) + # remove the trailing "\n" + return access_token.decode("utf-8").strip() + except (subprocess.CalledProcessError, OSError, IOError) as caught_exc: + new_exc = exceptions.UserAccessTokenError( + "Failed to obtain access token", caught_exc + ) + raise new_exc from caught_exc diff --git a/intelliaide/vendor/google/auth/_credentials_async.py b/intelliaide/vendor/google/auth/_credentials_async.py new file mode 100644 index 0000000..760758d --- /dev/null +++ b/intelliaide/vendor/google/auth/_credentials_async.py @@ -0,0 +1,171 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +"""Interfaces for credentials.""" + +import abc +import inspect + +from google.auth import credentials + + +class Credentials(credentials.Credentials, metaclass=abc.ABCMeta): + """Async inherited credentials class from google.auth.credentials. + The added functionality is the before_request call which requires + async/await syntax. + All credentials have a :attr:`token` that is used for authentication and + may also optionally set an :attr:`expiry` to indicate when the token will + no longer be valid. + + Most credentials will be :attr:`invalid` until :meth:`refresh` is called. + Credentials can do this automatically before the first HTTP request in + :meth:`before_request`. + + Although the token and expiration will change as the credentials are + :meth:`refreshed ` and used, credentials should be considered + immutable. Various credentials will accept configuration such as private + keys, scopes, and other options. These options are not changeable after + construction. Some classes will provide mechanisms to copy the credentials + with modifications such as :meth:`ScopedCredentials.with_scopes`. + """ + + async def before_request(self, request, method, url, headers): + """Performs credential-specific before request logic. + + Refreshes the credentials if necessary, then calls :meth:`apply` to + apply the token to the authentication header. + + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + method (str): The request's HTTP method or the RPC method being + invoked. + url (str): The request's URI or the RPC service's URI. + headers (Mapping): The request's headers. + """ + # pylint: disable=unused-argument + # (Subclasses may use these arguments to ascertain information about + # the http request.) + + if not self.valid: + if inspect.iscoroutinefunction(self.refresh): + await self.refresh(request) + else: + self.refresh(request) + self.apply(headers) + + +class CredentialsWithQuotaProject(credentials.CredentialsWithQuotaProject): + """Abstract base for credentials supporting ``with_quota_project`` factory""" + + +class AnonymousCredentials(credentials.AnonymousCredentials, Credentials): + """Credentials that do not provide any authentication information. + + These are useful in the case of services that support anonymous access or + local service emulators that do not use credentials. This class inherits + from the sync anonymous credentials file, but is kept if async credentials + is initialized and we would like anonymous credentials. + """ + + +class ReadOnlyScoped(credentials.ReadOnlyScoped, metaclass=abc.ABCMeta): + """Interface for credentials whose scopes can be queried. + + OAuth 2.0-based credentials allow limiting access using scopes as described + in `RFC6749 Section 3.3`_. + If a credential class implements this interface then the credentials either + use scopes in their implementation. + + Some credentials require scopes in order to obtain a token. You can check + if scoping is necessary with :attr:`requires_scopes`:: + + if credentials.requires_scopes: + # Scoping is required. + credentials = _credentials_async.with_scopes(scopes=['one', 'two']) + + Credentials that require scopes must either be constructed with scopes:: + + credentials = SomeScopedCredentials(scopes=['one', 'two']) + + Or must copy an existing instance using :meth:`with_scopes`:: + + scoped_credentials = _credentials_async.with_scopes(scopes=['one', 'two']) + + Some credentials have scopes but do not allow or require scopes to be set, + these credentials can be used as-is. + + .. _RFC6749 Section 3.3: https://tools.ietf.org/html/rfc6749#section-3.3 + """ + + +class Scoped(credentials.Scoped): + """Interface for credentials whose scopes can be replaced while copying. + + OAuth 2.0-based credentials allow limiting access using scopes as described + in `RFC6749 Section 3.3`_. + If a credential class implements this interface then the credentials either + use scopes in their implementation. + + Some credentials require scopes in order to obtain a token. You can check + if scoping is necessary with :attr:`requires_scopes`:: + + if credentials.requires_scopes: + # Scoping is required. + credentials = _credentials_async.create_scoped(['one', 'two']) + + Credentials that require scopes must either be constructed with scopes:: + + credentials = SomeScopedCredentials(scopes=['one', 'two']) + + Or must copy an existing instance using :meth:`with_scopes`:: + + scoped_credentials = credentials.with_scopes(scopes=['one', 'two']) + + Some credentials have scopes but do not allow or require scopes to be set, + these credentials can be used as-is. + + .. _RFC6749 Section 3.3: https://tools.ietf.org/html/rfc6749#section-3.3 + """ + + +def with_scopes_if_required(credentials, scopes): + """Creates a copy of the credentials with scopes if scoping is required. + + This helper function is useful when you do not know (or care to know) the + specific type of credentials you are using (such as when you use + :func:`google.auth.default`). This function will call + :meth:`Scoped.with_scopes` if the credentials are scoped credentials and if + the credentials require scoping. Otherwise, it will return the credentials + as-is. + + Args: + credentials (google.auth.credentials.Credentials): The credentials to + scope if necessary. + scopes (Sequence[str]): The list of scopes to use. + + Returns: + google.auth._credentials_async.Credentials: Either a new set of scoped + credentials, or the passed in credentials instance if no scoping + was required. + """ + if isinstance(credentials, Scoped) and credentials.requires_scopes: + return credentials.with_scopes(scopes) + else: + return credentials + + +class Signing(credentials.Signing, metaclass=abc.ABCMeta): + """Interface for credentials that can cryptographically sign messages.""" diff --git a/intelliaide/vendor/google/auth/_credentials_base.py b/intelliaide/vendor/google/auth/_credentials_base.py new file mode 100644 index 0000000..64d5ce3 --- /dev/null +++ b/intelliaide/vendor/google/auth/_credentials_base.py @@ -0,0 +1,75 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +"""Interface for base credentials.""" + +import abc + +from google.auth import _helpers + + +class _BaseCredentials(metaclass=abc.ABCMeta): + """Base class for all credentials. + + All credentials have a :attr:`token` that is used for authentication and + may also optionally set an :attr:`expiry` to indicate when the token will + no longer be valid. + + Most credentials will be :attr:`invalid` until :meth:`refresh` is called. + Credentials can do this automatically before the first HTTP request in + :meth:`before_request`. + + Although the token and expiration will change as the credentials are + :meth:`refreshed ` and used, credentials should be considered + immutable. Various credentials will accept configuration such as private + keys, scopes, and other options. These options are not changeable after + construction. Some classes will provide mechanisms to copy the credentials + with modifications such as :meth:`ScopedCredentials.with_scopes`. + + Attributes: + token (Optional[str]): The bearer token that can be used in HTTP headers to make + authenticated requests. + """ + + def __init__(self): + self.token = None + + @abc.abstractmethod + def refresh(self, request): + """Refreshes the access token. + + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + + Raises: + google.auth.exceptions.RefreshError: If the credentials could + not be refreshed. + """ + # pylint: disable=missing-raises-doc + # (pylint doesn't recognize that this is abstract) + raise NotImplementedError("Refresh must be implemented") + + def _apply(self, headers, token=None): + """Apply the token to the authentication header. + + Args: + headers (Mapping): The HTTP request headers. + token (Optional[str]): If specified, overrides the current access + token. + """ + headers["authorization"] = "Bearer {}".format( + _helpers.from_bytes(token or self.token) + ) diff --git a/intelliaide/vendor/google/auth/_default.py b/intelliaide/vendor/google/auth/_default.py new file mode 100644 index 0000000..cb40c1f --- /dev/null +++ b/intelliaide/vendor/google/auth/_default.py @@ -0,0 +1,748 @@ +# Copyright 2015 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Application default credentials. + +Implements application default credentials and project ID detection. +""" +from __future__ import annotations + +import io +import json +import logging +import os +from typing import Optional, Sequence, TYPE_CHECKING +import warnings + +from google.auth import environment_vars +from google.auth import exceptions + +if TYPE_CHECKING: # pragma: NO COVER + import google.auth.credentials.Credentials # type: ignore + import google.auth.transport.Request # type: ignore + +_LOGGER = logging.getLogger(__name__) + +# Valid types accepted for file-based credentials. +_AUTHORIZED_USER_TYPE = "authorized_user" +_SERVICE_ACCOUNT_TYPE = "service_account" +_EXTERNAL_ACCOUNT_TYPE = "external_account" +_EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE = "external_account_authorized_user" +_IMPERSONATED_SERVICE_ACCOUNT_TYPE = "impersonated_service_account" +_GDCH_SERVICE_ACCOUNT_TYPE = "gdch_service_account" +_VALID_TYPES = ( + _AUTHORIZED_USER_TYPE, + _SERVICE_ACCOUNT_TYPE, + _EXTERNAL_ACCOUNT_TYPE, + _EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE, + _IMPERSONATED_SERVICE_ACCOUNT_TYPE, + _GDCH_SERVICE_ACCOUNT_TYPE, +) + +# Help message when no credentials can be found. +_CLOUD_SDK_MISSING_CREDENTIALS = """\ +Your default credentials were not found. To set up Application Default Credentials, \ +see https://cloud.google.com/docs/authentication/external/set-up-adc for more information.\ +""" + +# Warning when using Cloud SDK user credentials +_CLOUD_SDK_CREDENTIALS_WARNING = """\ +Your application has authenticated using end user credentials from Google \ +Cloud SDK without a quota project. You might receive a "quota exceeded" \ +or "API not enabled" error. See the following page for troubleshooting: \ +https://cloud.google.com/docs/authentication/adc-troubleshooting/user-creds. \ +""" + +_GENERIC_LOAD_METHOD_WARNING = """\ +The {} method is deprecated because of a potential security risk. + +This method does not validate the credential configuration. The security +risk occurs when a credential configuration is accepted from a source that +is not under your control and used without validation on your side. + +If you know that you will be loading credential configurations of a +specific type, it is recommended to use a credential-type-specific +load method. +This will ensure that an unexpected credential type with potential for +malicious intent is not loaded unintentionally. You might still have to do +validation for certain credential types. Please follow the recommendations +for that method. For example, if you want to load only service accounts, +you can create the service account credentials explicitly: + +``` +from google.oauth2 import service_account +creds = service_account.Credentials.from_service_account_file(filename) +``` + +If you are loading your credential configuration from an untrusted source and have +not mitigated the risks (e.g. by validating the configuration yourself), make +these changes as soon as possible to prevent security risks to your environment. + +Regardless of the method used, it is always your responsibility to validate +configurations received from external sources. + +Refer to https://cloud.google.com/docs/authentication/external/externally-sourced-credentials +for more details. +""" + +# The subject token type used for AWS external_account credentials. +_AWS_SUBJECT_TOKEN_TYPE = "urn:ietf:params:aws:token-type:aws4_request" + + +def _warn_about_problematic_credentials(credentials): + """Determines if the credentials are problematic. + + Credentials from the Cloud SDK that are associated with Cloud SDK's project + are problematic because they may not have APIs enabled and have limited + quota. If this is the case, warn about it. + """ + from google.auth import _cloud_sdk + + if credentials.client_id == _cloud_sdk.CLOUD_SDK_CLIENT_ID: + warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING) + + +def _warn_about_generic_load_method(method_name): # pragma: NO COVER + """Warns that a generic load method is being used. + + This is to discourage use of the generic load methods in favor of + more specific methods. The generic methods are more likely to lead to + security issues if the input is not validated. + + Args: + method_name (str): The name of the method being used. + """ + + warnings.warn(_GENERIC_LOAD_METHOD_WARNING.format(method_name), DeprecationWarning) + + +def load_credentials_from_file( + filename, scopes=None, default_scopes=None, quota_project_id=None, request=None +): + """Loads Google credentials from a file. + + The credentials file must be a service account key, stored authorized + user credentials, external account credentials, or impersonated service + account credentials. + + .. warning:: + Important: If you accept a credential configuration (credential JSON/File/Stream) + from an external source for authentication to Google Cloud Platform, you must + validate it before providing it to any Google API or client library. Providing an + unvalidated credential configuration to Google APIs or libraries can compromise + the security of your systems and data. For more information, refer to + `Validate credential configurations from external sources`_. + + .. _Validate credential configurations from external sources: + https://cloud.google.com/docs/authentication/external/externally-sourced-credentials + + Args: + filename (str): The full path to the credentials file. + scopes (Optional[Sequence[str]]): The list of scopes for the credentials. If + specified, the credentials will automatically be scoped if + necessary + default_scopes (Optional[Sequence[str]]): Default scopes passed by a + Google client library. Use 'scopes' for user-defined scopes. + quota_project_id (Optional[str]): The project ID used for + quota and billing. + request (Optional[google.auth.transport.Request]): An object used to make + HTTP requests. This is used to determine the associated project ID + for a workload identity pool resource (external account credentials). + If not specified, then it will use a + google.auth.transport.requests.Request client to make requests. + + Returns: + Tuple[google.auth.credentials.Credentials, Optional[str]]: Loaded + credentials and the project ID. Authorized user credentials do not + have the project ID information. External account credentials project + IDs may not always be determined. + + Raises: + google.auth.exceptions.DefaultCredentialsError: if the file is in the + wrong format or is missing. + """ + _warn_about_generic_load_method("load_credentials_from_file") + + if not os.path.exists(filename): + raise exceptions.DefaultCredentialsError( + "File {} was not found.".format(filename) + ) + + with io.open(filename, "r") as file_obj: + try: + info = json.load(file_obj) + except ValueError as caught_exc: + new_exc = exceptions.DefaultCredentialsError( + "File {} is not a valid json file.".format(filename), caught_exc + ) + raise new_exc from caught_exc + return _load_credentials_from_info( + filename, info, scopes, default_scopes, quota_project_id, request + ) + + +def load_credentials_from_dict( + info, scopes=None, default_scopes=None, quota_project_id=None, request=None +): + """Loads Google credentials from a dict. + + The credentials file must be a service account key, stored authorized + user credentials, external account credentials, or impersonated service + account credentials. + + .. warning:: + Important: If you accept a credential configuration (credential JSON/File/Stream) + from an external source for authentication to Google Cloud Platform, you must + validate it before providing it to any Google API or client library. Providing an + unvalidated credential configuration to Google APIs or libraries can compromise + the security of your systems and data. For more information, refer to + `Validate credential configurations from external sources`_. + + .. _Validate credential configurations from external sources: + https://cloud.google.com/docs/authentication/external/externally-sourced-credentials + + Args: + info (Dict[str, Any]): A dict object containing the credentials + scopes (Optional[Sequence[str]]): The list of scopes for the credentials. If + specified, the credentials will automatically be scoped if + necessary + default_scopes (Optional[Sequence[str]]): Default scopes passed by a + Google client library. Use 'scopes' for user-defined scopes. + quota_project_id (Optional[str]): The project ID used for + quota and billing. + request (Optional[google.auth.transport.Request]): An object used to make + HTTP requests. This is used to determine the associated project ID + for a workload identity pool resource (external account credentials). + If not specified, then it will use a + google.auth.transport.requests.Request client to make requests. + + Returns: + Tuple[google.auth.credentials.Credentials, Optional[str]]: Loaded + credentials and the project ID. Authorized user credentials do not + have the project ID information. External account credentials project + IDs may not always be determined. + + Raises: + google.auth.exceptions.DefaultCredentialsError: if the file is in the + wrong format or is missing. + """ + _warn_about_generic_load_method("load_credentials_from_dict") + if not isinstance(info, dict): + raise exceptions.DefaultCredentialsError( + "info object was of type {} but dict type was expected.".format(type(info)) + ) + + return _load_credentials_from_info( + "dict object", info, scopes, default_scopes, quota_project_id, request + ) + + +def _load_credentials_from_info( + filename, info, scopes, default_scopes, quota_project_id, request +): + from google.auth.credentials import CredentialsWithQuotaProject + + credential_type = info.get("type") + + if credential_type == _AUTHORIZED_USER_TYPE: + credentials, project_id = _get_authorized_user_credentials( + filename, info, scopes + ) + + elif credential_type == _SERVICE_ACCOUNT_TYPE: + credentials, project_id = _get_service_account_credentials( + filename, info, scopes, default_scopes + ) + + elif credential_type == _EXTERNAL_ACCOUNT_TYPE: + credentials, project_id = _get_external_account_credentials( + info, + filename, + scopes=scopes, + default_scopes=default_scopes, + request=request, + ) + + elif credential_type == _EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE: + credentials, project_id = _get_external_account_authorized_user_credentials( + filename, info, request + ) + + elif credential_type == _IMPERSONATED_SERVICE_ACCOUNT_TYPE: + credentials, project_id = _get_impersonated_service_account_credentials( + filename, info, scopes + ) + elif credential_type == _GDCH_SERVICE_ACCOUNT_TYPE: + credentials, project_id = _get_gdch_service_account_credentials(filename, info) + else: + raise exceptions.DefaultCredentialsError( + "The file {file} does not have a valid type. " + "Type is {type}, expected one of {valid_types}.".format( + file=filename, type=credential_type, valid_types=_VALID_TYPES + ) + ) + if isinstance(credentials, CredentialsWithQuotaProject): + credentials = _apply_quota_project_id(credentials, quota_project_id) + return credentials, project_id + + +def _get_gcloud_sdk_credentials(quota_project_id=None): + """Gets the credentials and project ID from the Cloud SDK.""" + from google.auth import _cloud_sdk + + _LOGGER.debug("Checking Cloud SDK credentials as part of auth process...") + + # Check if application default credentials exist. + credentials_filename = _cloud_sdk.get_application_default_credentials_path() + + if not os.path.isfile(credentials_filename): + _LOGGER.debug("Cloud SDK credentials not found on disk; not using them") + return None, None + + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + credentials, project_id = load_credentials_from_file( + credentials_filename, quota_project_id=quota_project_id + ) + credentials._cred_file_path = credentials_filename + + if not project_id: + project_id = _cloud_sdk.get_project_id() + + return credentials, project_id + + +def _get_explicit_environ_credentials(quota_project_id=None): + """Gets credentials from the GOOGLE_APPLICATION_CREDENTIALS environment + variable.""" + from google.auth import _cloud_sdk + + cloud_sdk_adc_path = _cloud_sdk.get_application_default_credentials_path() + explicit_file = os.environ.get(environment_vars.CREDENTIALS, "") + + _LOGGER.debug( + "Checking '%s' for explicit credentials as part of auth process...", + explicit_file, + ) + + if explicit_file != "" and explicit_file == cloud_sdk_adc_path: + # Cloud sdk flow calls gcloud to fetch project id, so if the explicit + # file path is cloud sdk credentials path, then we should fall back + # to cloud sdk flow, otherwise project id cannot be obtained. + _LOGGER.debug( + "Explicit credentials path '%s' is the same as Cloud SDK credentials path, fall back to Cloud SDK credentials flow...", + explicit_file, + ) + return _get_gcloud_sdk_credentials(quota_project_id=quota_project_id) + + if explicit_file != "": + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + credentials, project_id = load_credentials_from_file( + os.environ[environment_vars.CREDENTIALS], + quota_project_id=quota_project_id, + ) + credentials._cred_file_path = f"{explicit_file} file via the GOOGLE_APPLICATION_CREDENTIALS environment variable" + return credentials, project_id + + else: + return None, None + + +def _get_gae_credentials(): + """Gets Google App Engine App Identity credentials and project ID.""" + # If not GAE gen1, prefer the metadata service even if the GAE APIs are + # available as per https://google.aip.dev/auth/4115. + if os.environ.get(environment_vars.LEGACY_APPENGINE_RUNTIME) != "python27": + return None, None + + # While this library is normally bundled with app_engine, there are + # some cases where it's not available, so we tolerate ImportError. + try: + _LOGGER.debug("Checking for App Engine runtime as part of auth process...") + import google.auth.app_engine as app_engine + except ImportError: + _LOGGER.warning("Import of App Engine auth library failed.") + return None, None + + try: + credentials = app_engine.Credentials() + project_id = app_engine.get_project_id() + return credentials, project_id + except EnvironmentError: + _LOGGER.debug( + "No App Engine library was found so cannot authentication via App Engine Identity Credentials." + ) + return None, None + + +def _get_gce_credentials(request=None, quota_project_id=None): + """Gets credentials and project ID from the GCE Metadata Service.""" + # While this library is normally bundled with compute_engine, there are + # some cases where it's not available, so we tolerate ImportError. + # Compute Engine requires optional `requests` dependency. + try: + from google.auth import compute_engine + from google.auth.compute_engine import _metadata + import google.auth.transport.requests + except ImportError: + _LOGGER.warning("Import of Compute Engine auth library failed.") + return None, None + + if request is None: + request = google.auth.transport.requests.Request() + + if _metadata.is_on_gce(request=request): + # Get the project ID. + try: + project_id = _metadata.get_project_id(request=request) + except exceptions.TransportError: + project_id = None + + cred = compute_engine.Credentials() + cred = _apply_quota_project_id(cred, quota_project_id) + + return cred, project_id + else: + _LOGGER.warning( + "Authentication failed using Compute Engine authentication due to unavailable metadata server." + ) + return None, None + + +def _get_external_account_credentials( + info, filename, scopes=None, default_scopes=None, request=None +): + """Loads external account Credentials from the parsed external account info. + + The credentials information must correspond to a supported external account + credentials. + + Args: + info (Mapping[str, str]): The external account info in Google format. + filename (str): The full path to the credentials file. + scopes (Optional[Sequence[str]]): The list of scopes for the credentials. If + specified, the credentials will automatically be scoped if + necessary. + default_scopes (Optional[Sequence[str]]): Default scopes passed by a + Google client library. Use 'scopes' for user-defined scopes. + request (Optional[google.auth.transport.Request]): An object used to make + HTTP requests. This is used to determine the associated project ID + for a workload identity pool resource (external account credentials). + If not specified, then it will use a + google.auth.transport.requests.Request client to make requests. + + Returns: + Tuple[google.auth.credentials.Credentials, Optional[str]]: Loaded + credentials and the project ID. External account credentials project + IDs may not always be determined. + + Raises: + google.auth.exceptions.DefaultCredentialsError: if the info dictionary + is in the wrong format or is missing required information. + """ + # There are currently 3 types of external_account credentials. + if info.get("subject_token_type") == _AWS_SUBJECT_TOKEN_TYPE: + # Check if configuration corresponds to an AWS credentials. + from google.auth import aws + + credentials = aws.Credentials.from_info( + info, scopes=scopes, default_scopes=default_scopes + ) + elif ( + info.get("credential_source") is not None + and info.get("credential_source").get("executable") is not None + ): + from google.auth import pluggable + + credentials = pluggable.Credentials.from_info( + info, scopes=scopes, default_scopes=default_scopes + ) + else: + try: + # Check if configuration corresponds to an Identity Pool credentials. + from google.auth import identity_pool + + credentials = identity_pool.Credentials.from_info( + info, scopes=scopes, default_scopes=default_scopes + ) + except ValueError: + # If the configuration is invalid or does not correspond to any + # supported external_account credentials, raise an error. + raise exceptions.DefaultCredentialsError( + "Failed to load external account credentials from {}".format(filename) + ) + if request is None: + import google.auth.transport.requests + + request = google.auth.transport.requests.Request() + + return credentials, credentials.get_project_id(request=request) + + +def _get_external_account_authorized_user_credentials( + filename, info, scopes=None, default_scopes=None, request=None +): + try: + from google.auth import external_account_authorized_user + + credentials = external_account_authorized_user.Credentials.from_info(info) + except ValueError: + raise exceptions.DefaultCredentialsError( + "Failed to load external account authorized user credentials from {}".format( + filename + ) + ) + + return credentials, None + + +def _get_authorized_user_credentials(filename, info, scopes=None): + from google.oauth2 import credentials + + try: + credentials = credentials.Credentials.from_authorized_user_info( + info, scopes=scopes + ) + except ValueError as caught_exc: + msg = "Failed to load authorized user credentials from {}".format(filename) + new_exc = exceptions.DefaultCredentialsError(msg, caught_exc) + raise new_exc from caught_exc + return credentials, None + + +def _get_service_account_credentials(filename, info, scopes=None, default_scopes=None): + from google.oauth2 import service_account + + try: + credentials = service_account.Credentials.from_service_account_info( + info, scopes=scopes, default_scopes=default_scopes + ) + except ValueError as caught_exc: + msg = "Failed to load service account credentials from {}".format(filename) + new_exc = exceptions.DefaultCredentialsError(msg, caught_exc) + raise new_exc from caught_exc + return credentials, info.get("project_id") + + +def _get_impersonated_service_account_credentials(filename, info, scopes): + from google.auth import impersonated_credentials + + try: + credentials = ( + impersonated_credentials.Credentials.from_impersonated_service_account_info( + info, scopes=scopes + ) + ) + except ValueError as caught_exc: + msg = "Failed to load impersonated service account credentials from {}".format( + filename + ) + new_exc = exceptions.DefaultCredentialsError(msg, caught_exc) + raise new_exc from caught_exc + return credentials, None + + +def _get_gdch_service_account_credentials(filename, info): + from google.oauth2 import gdch_credentials + + try: + credentials = ( + gdch_credentials.ServiceAccountCredentials.from_service_account_info(info) + ) + except ValueError as caught_exc: + msg = "Failed to load GDCH service account credentials from {}".format(filename) + new_exc = exceptions.DefaultCredentialsError(msg, caught_exc) + raise new_exc from caught_exc + return credentials, info.get("project") + + +def get_api_key_credentials(key): + """Return credentials with the given API key.""" + from google.auth import api_key + + return api_key.Credentials(key) + + +def _apply_quota_project_id(credentials, quota_project_id): + if quota_project_id: + credentials = credentials.with_quota_project(quota_project_id) + else: + credentials = credentials.with_quota_project_from_environment() + + from google.oauth2 import credentials as authorized_user_credentials + + if isinstance(credentials, authorized_user_credentials.Credentials) and ( + not credentials.quota_project_id + ): + _warn_about_problematic_credentials(credentials) + return credentials + + +def default( + scopes: Optional[Sequence[str]] = None, + request: Optional["google.auth.transport.Request"] = None, + quota_project_id: Optional[str] = None, + default_scopes: Optional[Sequence[str]] = None, +) -> tuple["google.auth.credentials.Credentials", Optional[str]]: + """Gets the default credentials for the current environment. + + `Application Default Credentials`_ provides an easy way to obtain + credentials to call Google APIs for server-to-server or local applications. + This function acquires credentials from the environment in the following + order: + + 1. If the environment variable ``GOOGLE_APPLICATION_CREDENTIALS`` is set + to the path of a valid service account JSON private key file, then it is + loaded and returned. The project ID returned is the project ID defined + in the service account file if available (some older files do not + contain project ID information). + + If the environment variable is set to the path of a valid external + account JSON configuration file (workload identity federation), then the + configuration file is used to determine and retrieve the external + credentials from the current environment (AWS, Azure, etc). + These will then be exchanged for Google access tokens via the Google STS + endpoint. + The project ID returned in this case is the one corresponding to the + underlying workload identity pool resource if determinable. + + If the environment variable is set to the path of a valid GDCH service + account JSON file (`Google Distributed Cloud Hosted`_), then a GDCH + credential will be returned. The project ID returned is the project + specified in the JSON file. + 2. If the `Google Cloud SDK`_ is installed and has application default + credentials set they are loaded and returned. + + To enable application default credentials with the Cloud SDK run:: + + gcloud auth application-default login + + If the Cloud SDK has an active project, the project ID is returned. The + active project can be set using:: + + gcloud config set project + + 3. If the application is running in the `App Engine standard environment`_ + (first generation) then the credentials and project ID from the + `App Identity Service`_ are used. + 4. If the application is running in `Compute Engine`_ or `Cloud Run`_ or + the `App Engine flexible environment`_ or the `App Engine standard + environment`_ (second generation) then the credentials and project ID + are obtained from the `Metadata Service`_. + 5. If no credentials are found, + :class:`~google.auth.exceptions.DefaultCredentialsError` will be raised. + + .. _Application Default Credentials: https://developers.google.com\ + /identity/protocols/application-default-credentials + .. _Google Cloud SDK: https://cloud.google.com/sdk + .. _App Engine standard environment: https://cloud.google.com/appengine + .. _App Identity Service: https://cloud.google.com/appengine/docs/python\ + /appidentity/ + .. _Compute Engine: https://cloud.google.com/compute + .. _App Engine flexible environment: https://cloud.google.com\ + /appengine/flexible + .. _Metadata Service: https://cloud.google.com/compute/docs\ + /storing-retrieving-metadata + .. _Cloud Run: https://cloud.google.com/run + .. _Google Distributed Cloud Hosted: https://cloud.google.com/blog/topics\ + /hybrid-cloud/announcing-google-distributed-cloud-edge-and-hosted + + Example:: + + import google.auth + + credentials, project_id = google.auth.default() + + Args: + scopes (Sequence[str]): The list of scopes for the credentials. If + specified, the credentials will automatically be scoped if + necessary. + request (Optional[google.auth.transport.Request]): An object used to make + HTTP requests. This is used to either detect whether the application + is running on Compute Engine or to determine the associated project + ID for a workload identity pool resource (external account + credentials). If not specified, then it will either use the standard + library http client to make requests for Compute Engine credentials + or a google.auth.transport.requests.Request client for external + account credentials. + quota_project_id (Optional[str]): The project ID used for + quota and billing. + default_scopes (Optional[Sequence[str]]): Default scopes passed by a + Google client library. Use 'scopes' for user-defined scopes. + Returns: + Tuple[~google.auth.credentials.Credentials, Optional[str]]: + the current environment's credentials and project ID. Project ID + may be None, which indicates that the Project ID could not be + ascertained from the environment. + + Raises: + ~google.auth.exceptions.DefaultCredentialsError: + If no credentials were found, or if the credentials found were + invalid. + """ + from google.auth.credentials import with_scopes_if_required + from google.auth.credentials import CredentialsWithQuotaProject + + explicit_project_id = os.environ.get( + environment_vars.PROJECT, os.environ.get(environment_vars.LEGACY_PROJECT) + ) + + checkers = ( + # Avoid passing scopes here to prevent passing scopes to user credentials. + # with_scopes_if_required() below will ensure scopes/default scopes are + # safely set on the returned credentials since requires_scopes will + # guard against setting scopes on user credentials. + lambda: _get_explicit_environ_credentials(quota_project_id=quota_project_id), + lambda: _get_gcloud_sdk_credentials(quota_project_id=quota_project_id), + _get_gae_credentials, + lambda: _get_gce_credentials(request, quota_project_id=quota_project_id), + ) + + for checker in checkers: + credentials, project_id = checker() + if credentials is not None: + credentials = with_scopes_if_required( + credentials, scopes, default_scopes=default_scopes + ) + + effective_project_id = explicit_project_id or project_id + + # For external account credentials, scopes are required to determine + # the project ID. Try to get the project ID again if not yet + # determined. + if not effective_project_id and callable( + getattr(credentials, "get_project_id", None) + ): + if request is None: + import google.auth.transport.requests + + request = google.auth.transport.requests.Request() + effective_project_id = credentials.get_project_id(request=request) + + if quota_project_id and isinstance( + credentials, CredentialsWithQuotaProject + ): + credentials = credentials.with_quota_project(quota_project_id) + + if not effective_project_id: + _LOGGER.warning( + "No project ID could be determined. Consider running " + "`gcloud config set project` or setting the %s " + "environment variable", + environment_vars.PROJECT, + ) + return credentials, effective_project_id + + raise exceptions.DefaultCredentialsError(_CLOUD_SDK_MISSING_CREDENTIALS) diff --git a/intelliaide/vendor/google/auth/_default_async.py b/intelliaide/vendor/google/auth/_default_async.py new file mode 100644 index 0000000..44bc671 --- /dev/null +++ b/intelliaide/vendor/google/auth/_default_async.py @@ -0,0 +1,288 @@ +# Copyright 2020 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Application default credentials. + +Implements application default credentials and project ID detection. +""" + +import io +import json +import os +import warnings + +from google.auth import _default +from google.auth import environment_vars +from google.auth import exceptions + + +def load_credentials_from_file(filename, scopes=None, quota_project_id=None): + """Loads Google credentials from a file. + + The credentials file must be a service account key or stored authorized + user credentials. + + Args: + filename (str): The full path to the credentials file. + scopes (Optional[Sequence[str]]): The list of scopes for the credentials. If + specified, the credentials will automatically be scoped if + necessary + quota_project_id (Optional[str]): The project ID used for + quota and billing. + + Returns: + Tuple[google.auth.credentials.Credentials, Optional[str]]: Loaded + credentials and the project ID. Authorized user credentials do not + have the project ID information. + + Raises: + google.auth.exceptions.DefaultCredentialsError: if the file is in the + wrong format or is missing. + """ + if not os.path.exists(filename): + raise exceptions.DefaultCredentialsError( + "File {} was not found.".format(filename) + ) + + with io.open(filename, "r") as file_obj: + try: + info = json.load(file_obj) + except ValueError as caught_exc: + new_exc = exceptions.DefaultCredentialsError( + "File {} is not a valid json file.".format(filename), caught_exc + ) + raise new_exc from caught_exc + + # The type key should indicate that the file is either a service account + # credentials file or an authorized user credentials file. + credential_type = info.get("type") + + if credential_type == _default._AUTHORIZED_USER_TYPE: + from google.oauth2 import _credentials_async as credentials + + try: + credentials = credentials.Credentials.from_authorized_user_info( + info, scopes=scopes + ) + except ValueError as caught_exc: + msg = "Failed to load authorized user credentials from {}".format(filename) + new_exc = exceptions.DefaultCredentialsError(msg, caught_exc) + raise new_exc from caught_exc + if quota_project_id: + credentials = credentials.with_quota_project(quota_project_id) + if not credentials.quota_project_id: + _default._warn_about_problematic_credentials(credentials) + return credentials, None + + elif credential_type == _default._SERVICE_ACCOUNT_TYPE: + from google.oauth2 import _service_account_async as service_account + + try: + credentials = service_account.Credentials.from_service_account_info( + info, scopes=scopes + ).with_quota_project(quota_project_id) + except ValueError as caught_exc: + msg = "Failed to load service account credentials from {}".format(filename) + new_exc = exceptions.DefaultCredentialsError(msg, caught_exc) + raise new_exc from caught_exc + return credentials, info.get("project_id") + + else: + raise exceptions.DefaultCredentialsError( + "The file {file} does not have a valid type. " + "Type is {type}, expected one of {valid_types}.".format( + file=filename, type=credential_type, valid_types=_default._VALID_TYPES + ) + ) + + +def _get_gcloud_sdk_credentials(quota_project_id=None): + """Gets the credentials and project ID from the Cloud SDK.""" + from google.auth import _cloud_sdk + + # Check if application default credentials exist. + credentials_filename = _cloud_sdk.get_application_default_credentials_path() + + if not os.path.isfile(credentials_filename): + return None, None + + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + credentials, project_id = load_credentials_from_file( + credentials_filename, quota_project_id=quota_project_id + ) + + if not project_id: + project_id = _cloud_sdk.get_project_id() + + return credentials, project_id + + +def _get_explicit_environ_credentials(quota_project_id=None): + """Gets credentials from the GOOGLE_APPLICATION_CREDENTIALS environment + variable.""" + from google.auth import _cloud_sdk + + cloud_sdk_adc_path = _cloud_sdk.get_application_default_credentials_path() + explicit_file = os.environ.get(environment_vars.CREDENTIALS) + + if explicit_file is not None and explicit_file == cloud_sdk_adc_path: + # Cloud sdk flow calls gcloud to fetch project id, so if the explicit + # file path is cloud sdk credentials path, then we should fall back + # to cloud sdk flow, otherwise project id cannot be obtained. + return _get_gcloud_sdk_credentials(quota_project_id=quota_project_id) + + if explicit_file is not None: + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + credentials, project_id = load_credentials_from_file( + os.environ[environment_vars.CREDENTIALS], + quota_project_id=quota_project_id, + ) + + return credentials, project_id + + else: + return None, None + + +def _get_gae_credentials(): + """Gets Google App Engine App Identity credentials and project ID.""" + # While this library is normally bundled with app_engine, there are + # some cases where it's not available, so we tolerate ImportError. + + return _default._get_gae_credentials() + + +def _get_gce_credentials(request=None): + """Gets credentials and project ID from the GCE Metadata Service.""" + # Ping requires a transport, but we want application default credentials + # to require no arguments. So, we'll use the _http_client transport which + # uses http.client. This is only acceptable because the metadata server + # doesn't do SSL and never requires proxies. + + # While this library is normally bundled with compute_engine, there are + # some cases where it's not available, so we tolerate ImportError. + + return _default._get_gce_credentials(request) + + +def default_async(scopes=None, request=None, quota_project_id=None): + """Gets the default credentials for the current environment. + + `Application Default Credentials`_ provides an easy way to obtain + credentials to call Google APIs for server-to-server or local applications. + This function acquires credentials from the environment in the following + order: + + 1. If the environment variable ``GOOGLE_APPLICATION_CREDENTIALS`` is set + to the path of a valid service account JSON private key file, then it is + loaded and returned. The project ID returned is the project ID defined + in the service account file if available (some older files do not + contain project ID information). + 2. If the `Google Cloud SDK`_ is installed and has application default + credentials set they are loaded and returned. + + To enable application default credentials with the Cloud SDK run:: + + gcloud auth application-default login + + If the Cloud SDK has an active project, the project ID is returned. The + active project can be set using:: + + gcloud config set project + + 3. If the application is running in the `App Engine standard environment`_ + (first generation) then the credentials and project ID from the + `App Identity Service`_ are used. + 4. If the application is running in `Compute Engine`_ or `Cloud Run`_ or + the `App Engine flexible environment`_ or the `App Engine standard + environment`_ (second generation) then the credentials and project ID + are obtained from the `Metadata Service`_. + 5. If no credentials are found, + :class:`~google.auth.exceptions.DefaultCredentialsError` will be raised. + + .. _Application Default Credentials: https://developers.google.com\ + /identity/protocols/application-default-credentials + .. _Google Cloud SDK: https://cloud.google.com/sdk + .. _App Engine standard environment: https://cloud.google.com/appengine + .. _App Identity Service: https://cloud.google.com/appengine/docs/python\ + /appidentity/ + .. _Compute Engine: https://cloud.google.com/compute + .. _App Engine flexible environment: https://cloud.google.com\ + /appengine/flexible + .. _Metadata Service: https://cloud.google.com/compute/docs\ + /storing-retrieving-metadata + .. _Cloud Run: https://cloud.google.com/run + + Example:: + + import google.auth + + credentials, project_id = google.auth.default() + + Args: + scopes (Sequence[str]): The list of scopes for the credentials. If + specified, the credentials will automatically be scoped if + necessary. + request (google.auth.transport.Request): An object used to make + HTTP requests. This is used to detect whether the application + is running on Compute Engine. If not specified, then it will + use the standard library http client to make requests. + quota_project_id (Optional[str]): The project ID used for + quota and billing. + Returns: + Tuple[~google.auth.credentials.Credentials, Optional[str]]: + the current environment's credentials and project ID. Project ID + may be None, which indicates that the Project ID could not be + ascertained from the environment. + + Raises: + ~google.auth.exceptions.DefaultCredentialsError: + If no credentials were found, or if the credentials found were + invalid. + """ + from google.auth._credentials_async import with_scopes_if_required + from google.auth.credentials import CredentialsWithQuotaProject + + explicit_project_id = os.environ.get( + environment_vars.PROJECT, os.environ.get(environment_vars.LEGACY_PROJECT) + ) + + checkers = ( + lambda: _get_explicit_environ_credentials(quota_project_id=quota_project_id), + lambda: _get_gcloud_sdk_credentials(quota_project_id=quota_project_id), + _get_gae_credentials, + lambda: _get_gce_credentials(request), + ) + + for checker in checkers: + credentials, project_id = checker() + if credentials is not None: + credentials = with_scopes_if_required(credentials, scopes) + if quota_project_id and isinstance( + credentials, CredentialsWithQuotaProject + ): + credentials = credentials.with_quota_project(quota_project_id) + effective_project_id = explicit_project_id or project_id + if not effective_project_id: + _default._LOGGER.warning( + "No project ID could be determined. Consider running " + "`gcloud config set project` or setting the %s " + "environment variable", + environment_vars.PROJECT, + ) + return credentials, effective_project_id + + raise exceptions.DefaultCredentialsError(_default._CLOUD_SDK_MISSING_CREDENTIALS) diff --git a/intelliaide/vendor/google/auth/_exponential_backoff.py b/intelliaide/vendor/google/auth/_exponential_backoff.py new file mode 100644 index 0000000..8985344 --- /dev/null +++ b/intelliaide/vendor/google/auth/_exponential_backoff.py @@ -0,0 +1,164 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import asyncio +import random +import time + +from google.auth import exceptions + +# The default amount of retry attempts +_DEFAULT_RETRY_TOTAL_ATTEMPTS = 3 + +# The default initial backoff period (1.0 second). +_DEFAULT_INITIAL_INTERVAL_SECONDS = 1.0 + +# The default randomization factor (0.1 which results in a random period ranging +# between 10% below and 10% above the retry interval). +_DEFAULT_RANDOMIZATION_FACTOR = 0.1 + +# The default multiplier value (2 which is 100% increase per back off). +_DEFAULT_MULTIPLIER = 2.0 + +"""Exponential Backoff Utility + +This is a private module that implements the exponential back off algorithm. +It can be used as a utility for code that needs to retry on failure, for example +an HTTP request. +""" + + +class _BaseExponentialBackoff: + """An exponential backoff iterator base class. + + Args: + total_attempts Optional[int]: + The maximum amount of retries that should happen. + The default value is 3 attempts. + initial_wait_seconds Optional[int]: + The amount of time to sleep in the first backoff. This parameter + should be in seconds. + The default value is 1 second. + randomization_factor Optional[float]: + The amount of jitter that should be in each backoff. For example, + a value of 0.1 will introduce a jitter range of 10% to the + current backoff period. + The default value is 0.1. + multiplier Optional[float]: + The backoff multipler. This adjusts how much each backoff will + increase. For example a value of 2.0 leads to a 200% backoff + on each attempt. If the initial_wait is 1.0 it would look like + this sequence [1.0, 2.0, 4.0, 8.0]. + The default value is 2.0. + """ + + def __init__( + self, + total_attempts=_DEFAULT_RETRY_TOTAL_ATTEMPTS, + initial_wait_seconds=_DEFAULT_INITIAL_INTERVAL_SECONDS, + randomization_factor=_DEFAULT_RANDOMIZATION_FACTOR, + multiplier=_DEFAULT_MULTIPLIER, + ): + if total_attempts < 1: + raise exceptions.InvalidValue( + f"total_attempts must be greater than or equal to 1 but was {total_attempts}" + ) + + self._total_attempts = total_attempts + self._initial_wait_seconds = initial_wait_seconds + + self._current_wait_in_seconds = self._initial_wait_seconds + + self._randomization_factor = randomization_factor + self._multiplier = multiplier + self._backoff_count = 0 + + @property + def total_attempts(self): + """The total amount of backoff attempts that will be made.""" + return self._total_attempts + + @property + def backoff_count(self): + """The current amount of backoff attempts that have been made.""" + return self._backoff_count + + def _reset(self): + self._backoff_count = 0 + self._current_wait_in_seconds = self._initial_wait_seconds + + def _calculate_jitter(self): + jitter_variance = self._current_wait_in_seconds * self._randomization_factor + jitter = random.uniform( + self._current_wait_in_seconds - jitter_variance, + self._current_wait_in_seconds + jitter_variance, + ) + + return jitter + + +class ExponentialBackoff(_BaseExponentialBackoff): + """An exponential backoff iterator. This can be used in a for loop to + perform requests with exponential backoff. + """ + + def __init__(self, *args, **kwargs): + super(ExponentialBackoff, self).__init__(*args, **kwargs) + + def __iter__(self): + self._reset() + return self + + def __next__(self): + if self._backoff_count >= self._total_attempts: + raise StopIteration + self._backoff_count += 1 + + if self._backoff_count <= 1: + return self._backoff_count + + jitter = self._calculate_jitter() + + time.sleep(jitter) + + self._current_wait_in_seconds *= self._multiplier + return self._backoff_count + + +class AsyncExponentialBackoff(_BaseExponentialBackoff): + """An async exponential backoff iterator. This can be used in a for loop to + perform async requests with exponential backoff. + """ + + def __init__(self, *args, **kwargs): + super(AsyncExponentialBackoff, self).__init__(*args, **kwargs) + + def __aiter__(self): + self._reset() + return self + + async def __anext__(self): + if self._backoff_count >= self._total_attempts: + raise StopAsyncIteration + self._backoff_count += 1 + + if self._backoff_count <= 1: + return self._backoff_count + + jitter = self._calculate_jitter() + + await asyncio.sleep(jitter) + + self._current_wait_in_seconds *= self._multiplier + return self._backoff_count diff --git a/intelliaide/vendor/google/auth/_helpers.py b/intelliaide/vendor/google/auth/_helpers.py new file mode 100644 index 0000000..0814622 --- /dev/null +++ b/intelliaide/vendor/google/auth/_helpers.py @@ -0,0 +1,534 @@ +# Copyright 2015 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Helper functions for commonly used utilities.""" + +import base64 +import calendar +import datetime +from email.message import Message +import hashlib +import json +import logging +import sys +from typing import Any, Dict, Mapping, Optional, Union +import urllib + +from google.auth import exceptions + + +# _BASE_LOGGER_NAME is the base logger for all google-based loggers. +_BASE_LOGGER_NAME = "google" + +# _LOGGING_INITIALIZED ensures that base logger is only configured once +# (unless already configured by the end-user). +_LOGGING_INITIALIZED = False + + +# The smallest MDS cache used by this library stores tokens until 4 minutes from +# expiry. +REFRESH_THRESHOLD = datetime.timedelta(minutes=3, seconds=45) + +# TODO(https://github.com/googleapis/google-auth-library-python/issues/1684): Audit and update the list below. +_SENSITIVE_FIELDS = { + "accessToken", + "access_token", + "id_token", + "client_id", + "refresh_token", + "client_secret", +} + + +def copy_docstring(source_class): + """Decorator that copies a method's docstring from another class. + + Args: + source_class (type): The class that has the documented method. + + Returns: + Callable: A decorator that will copy the docstring of the same + named method in the source class to the decorated method. + """ + + def decorator(method): + """Decorator implementation. + + Args: + method (Callable): The method to copy the docstring to. + + Returns: + Callable: the same method passed in with an updated docstring. + + Raises: + google.auth.exceptions.InvalidOperation: if the method already has a docstring. + """ + if method.__doc__: + raise exceptions.InvalidOperation("Method already has a docstring.") + + source_method = getattr(source_class, method.__name__) + method.__doc__ = source_method.__doc__ + + return method + + return decorator + + +def parse_content_type(header_value): + """Parse a 'content-type' header value to get just the plain media-type (without parameters). + + This is done using the class Message from email.message as suggested in PEP 594 + (because the cgi is now deprecated and will be removed in python 3.13, + see https://peps.python.org/pep-0594/#cgi). + + Args: + header_value (str): The value of a 'content-type' header as a string. + + Returns: + str: A string with just the lowercase media-type from the parsed 'content-type' header. + If the provided content-type is not parsable, returns 'text/plain', + the default value for textual files. + """ + m = Message() + m["content-type"] = header_value + return ( + m.get_content_type() + ) # Despite the name, actually returns just the media-type + + +def utcnow(): + """Returns the current UTC datetime. + + Returns: + datetime: The current time in UTC. + """ + # We used datetime.utcnow() before, since it's deprecated from python 3.12, + # we are using datetime.now(timezone.utc) now. "utcnow()" is offset-native + # (no timezone info), but "now()" is offset-aware (with timezone info). + # This will cause datetime comparison problem. For backward compatibility, + # we need to remove the timezone info. + now = datetime.datetime.now(datetime.timezone.utc) + now = now.replace(tzinfo=None) + return now + + +def utcfromtimestamp(timestamp): + """Returns the UTC datetime from a timestamp. + + Args: + timestamp (float): The timestamp to convert. + + Returns: + datetime: The time in UTC. + """ + # We used datetime.utcfromtimestamp() before, since it's deprecated from + # python 3.12, we are using datetime.fromtimestamp(timestamp, timezone.utc) + # now. "utcfromtimestamp()" is offset-native (no timezone info), but + # "fromtimestamp(timestamp, timezone.utc)" is offset-aware (with timezone + # info). This will cause datetime comparison problem. For backward + # compatibility, we need to remove the timezone info. + dt = datetime.datetime.fromtimestamp(timestamp, tz=datetime.timezone.utc) + dt = dt.replace(tzinfo=None) + return dt + + +def datetime_to_secs(value): + """Convert a datetime object to the number of seconds since the UNIX epoch. + + Args: + value (datetime): The datetime to convert. + + Returns: + int: The number of seconds since the UNIX epoch. + """ + return calendar.timegm(value.utctimetuple()) + + +def to_bytes(value, encoding="utf-8"): + """Converts a string value to bytes, if necessary. + + Args: + value (Union[str, bytes]): The value to be converted. + encoding (str): The encoding to use to convert unicode to bytes. + Defaults to "utf-8". + + Returns: + bytes: The original value converted to bytes (if unicode) or as + passed in if it started out as bytes. + + Raises: + google.auth.exceptions.InvalidValue: If the value could not be converted to bytes. + """ + result = value.encode(encoding) if isinstance(value, str) else value + if isinstance(result, bytes): + return result + else: + raise exceptions.InvalidValue( + "{0!r} could not be converted to bytes".format(value) + ) + + +def from_bytes(value): + """Converts bytes to a string value, if necessary. + + Args: + value (Union[str, bytes]): The value to be converted. + + Returns: + str: The original value converted to unicode (if bytes) or as passed in + if it started out as unicode. + + Raises: + google.auth.exceptions.InvalidValue: If the value could not be converted to unicode. + """ + result = value.decode("utf-8") if isinstance(value, bytes) else value + if isinstance(result, str): + return result + else: + raise exceptions.InvalidValue( + "{0!r} could not be converted to unicode".format(value) + ) + + +def update_query(url, params, remove=None): + """Updates a URL's query parameters. + + Replaces any current values if they are already present in the URL. + + Args: + url (str): The URL to update. + params (Mapping[str, str]): A mapping of query parameter + keys to values. + remove (Sequence[str]): Parameters to remove from the query string. + + Returns: + str: The URL with updated query parameters. + + Examples: + + >>> url = 'http://example.com?a=1' + >>> update_query(url, {'a': '2'}) + http://example.com?a=2 + >>> update_query(url, {'b': '3'}) + http://example.com?a=1&b=3 + >> update_query(url, {'b': '3'}, remove=['a']) + http://example.com?b=3 + + """ + if remove is None: + remove = [] + + # Split the URL into parts. + parts = urllib.parse.urlparse(url) + # Parse the query string. + query_params = urllib.parse.parse_qs(parts.query) + # Update the query parameters with the new parameters. + query_params.update(params) + # Remove any values specified in remove. + query_params = { + key: value for key, value in query_params.items() if key not in remove + } + # Re-encoded the query string. + new_query = urllib.parse.urlencode(query_params, doseq=True) + # Unsplit the url. + new_parts = parts._replace(query=new_query) + return urllib.parse.urlunparse(new_parts) + + +def scopes_to_string(scopes): + """Converts scope value to a string suitable for sending to OAuth 2.0 + authorization servers. + + Args: + scopes (Sequence[str]): The sequence of scopes to convert. + + Returns: + str: The scopes formatted as a single string. + """ + return " ".join(scopes) + + +def string_to_scopes(scopes): + """Converts stringifed scopes value to a list. + + Args: + scopes (Union[Sequence, str]): The string of space-separated scopes + to convert. + Returns: + Sequence(str): The separated scopes. + """ + if not scopes: + return [] + + return scopes.split(" ") + + +def padded_urlsafe_b64decode(value): + """Decodes base64 strings lacking padding characters. + + Google infrastructure tends to omit the base64 padding characters. + + Args: + value (Union[str, bytes]): The encoded value. + + Returns: + bytes: The decoded value + """ + b64string = to_bytes(value) + padded = b64string + b"=" * (-len(b64string) % 4) + return base64.urlsafe_b64decode(padded) + + +def unpadded_urlsafe_b64encode(value): + """Encodes base64 strings removing any padding characters. + + `rfc 7515`_ defines Base64url to NOT include any padding + characters, but the stdlib doesn't do that by default. + + _rfc7515: https://tools.ietf.org/html/rfc7515#page-6 + + Args: + value (Union[str|bytes]): The bytes-like value to encode + + Returns: + Union[str|bytes]: The encoded value + """ + return base64.urlsafe_b64encode(value).rstrip(b"=") + + +def is_python_3(): + """Check if the Python interpreter is Python 2 or 3. + + Returns: + bool: True if the Python interpreter is Python 3 and False otherwise. + """ + + return sys.version_info > (3, 0) # pragma: NO COVER + + +def _hash_sensitive_info(data: Union[dict, list]) -> Union[dict, list, str]: + """ + Hashes sensitive information within a dictionary. + + Args: + data: The dictionary containing data to be processed. + + Returns: + A new dictionary with sensitive values replaced by their SHA512 hashes. + If the input is a list, returns a list with each element recursively processed. + If the input is neither a dict nor a list, returns the type of the input as a string. + + """ + if isinstance(data, dict): + hashed_data: Dict[Any, Union[Optional[str], dict, list]] = {} + for key, value in data.items(): + if key in _SENSITIVE_FIELDS and not isinstance(value, (dict, list)): + hashed_data[key] = _hash_value(value, key) + elif isinstance(value, (dict, list)): + hashed_data[key] = _hash_sensitive_info(value) + else: + hashed_data[key] = value + return hashed_data + elif isinstance(data, list): + hashed_list = [] + for val in data: + hashed_list.append(_hash_sensitive_info(val)) + return hashed_list + else: + # TODO(https://github.com/googleapis/google-auth-library-python/issues/1701): + # Investigate and hash sensitive info before logging when the data type is + # not a dict or a list. + return str(type(data)) + + +def _hash_value(value, field_name: str) -> Optional[str]: + """Hashes a value and returns a formatted hash string.""" + if value is None: + return None + encoded_value = str(value).encode("utf-8") + hash_object = hashlib.sha512() + hash_object.update(encoded_value) + hex_digest = hash_object.hexdigest() + return f"hashed_{field_name}-{hex_digest}" + + +def _logger_configured(logger: logging.Logger) -> bool: + """Determines whether `logger` has non-default configuration + + Args: + logger: The logger to check. + + Returns: + bool: Whether the logger has any non-default configuration. + """ + return ( + logger.handlers != [] or logger.level != logging.NOTSET or not logger.propagate + ) + + +def is_logging_enabled(logger: logging.Logger) -> bool: + """ + Checks if debug logging is enabled for the given logger. + + Args: + logger: The logging.Logger instance to check. + + Returns: + True if debug logging is enabled, False otherwise. + """ + # NOTE: Log propagation to the root logger is disabled unless + # the base logger i.e. logging.getLogger("google") is + # explicitly configured by the end user. Ideally this + # needs to happen in the client layer (already does for GAPICs). + # However, this is implemented here to avoid logging + # (if a root logger is configured) when a version of google-auth + # which supports logging is used with: + # - an older version of a GAPIC which does not support logging. + # - Apiary client which does not support logging. + global _LOGGING_INITIALIZED + if not _LOGGING_INITIALIZED: + base_logger = logging.getLogger(_BASE_LOGGER_NAME) + if not _logger_configured(base_logger): + base_logger.propagate = False + _LOGGING_INITIALIZED = True + + return logger.isEnabledFor(logging.DEBUG) + + +def request_log( + logger: logging.Logger, + method: str, + url: str, + body: Optional[bytes], + headers: Optional[Mapping[str, str]], +) -> None: + """ + Logs an HTTP request at the DEBUG level if logging is enabled. + + Args: + logger: The logging.Logger instance to use. + method: The HTTP method (e.g., "GET", "POST"). + url: The URL of the request. + body: The request body (can be None). + headers: The request headers (can be None). + """ + if is_logging_enabled(logger): + content_type = ( + headers["Content-Type"] if headers and "Content-Type" in headers else "" + ) + json_body = _parse_request_body(body, content_type=content_type) + logged_body = _hash_sensitive_info(json_body) + logger.debug( + "Making request...", + extra={ + "httpRequest": { + "method": method, + "url": url, + "body": logged_body, + "headers": headers, + } + }, + ) + + +def _parse_request_body(body: Optional[bytes], content_type: str = "") -> Any: + """ + Parses a request body, handling bytes and string types, and different content types. + + Args: + body (Optional[bytes]): The request body. + content_type (str): The content type of the request body, e.g., "application/json", + "application/x-www-form-urlencoded", or "text/plain". If empty, attempts + to parse as JSON. + + Returns: + Parsed body (dict, str, or None). + - JSON: Decodes if content_type is "application/json" or None (fallback). + - URL-encoded: Parses if content_type is "application/x-www-form-urlencoded". + - Plain text: Returns string if content_type is "text/plain". + - None: Returns if body is None, UTF-8 decode fails, or content_type is unknown. + """ + if body is None: + return None + try: + body_str = body.decode("utf-8") + except (UnicodeDecodeError, AttributeError): + return None + content_type = content_type.lower() + if not content_type or "application/json" in content_type: + try: + return json.loads(body_str) + except (TypeError, ValueError): + return body_str + if "application/x-www-form-urlencoded" in content_type: + parsed_query = urllib.parse.parse_qs(body_str) + result = {k: v[0] for k, v in parsed_query.items()} + return result + if "text/plain" in content_type: + return body_str + return None + + +def _parse_response(response: Any) -> Any: + """ + Parses a response, attempting to decode JSON. + + Args: + response: The response object to parse. This can be any type, but + it is expected to have a `json()` method if it contains JSON. + + Returns: + The parsed response. If the response contains valid JSON, the + decoded JSON object (e.g., a dictionary or list) is returned. + If the response does not have a `json()` method or if the JSON + decoding fails, None is returned. + """ + try: + json_response = response.json() + return json_response + except Exception: + # TODO(https://github.com/googleapis/google-auth-library-python/issues/1744): + # Parse and return response payload as json based on different content types. + return None + + +def _response_log_base(logger: logging.Logger, parsed_response: Any) -> None: + """ + Logs a parsed HTTP response at the DEBUG level. + + This internal helper function takes a parsed response and logs it + using the provided logger. It also applies a hashing function to + potentially sensitive information before logging. + + Args: + logger: The logging.Logger instance to use for logging. + parsed_response: The parsed HTTP response object (e.g., a dictionary, + list, or the original response if parsing failed). + """ + + logged_response = _hash_sensitive_info(parsed_response) + logger.debug("Response received...", extra={"httpResponse": logged_response}) + + +def response_log(logger: logging.Logger, response: Any) -> None: + """ + Logs an HTTP response at the DEBUG level if logging is enabled. + + Args: + logger: The logging.Logger instance to use. + response: The HTTP response object to log. + """ + if is_logging_enabled(logger): + json_response = _parse_response(response) + _response_log_base(logger, json_response) diff --git a/intelliaide/vendor/google/auth/_jwt_async.py b/intelliaide/vendor/google/auth/_jwt_async.py new file mode 100644 index 0000000..3a1abc5 --- /dev/null +++ b/intelliaide/vendor/google/auth/_jwt_async.py @@ -0,0 +1,164 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""JSON Web Tokens + +Provides support for creating (encoding) and verifying (decoding) JWTs, +especially JWTs generated and consumed by Google infrastructure. + +See `rfc7519`_ for more details on JWTs. + +To encode a JWT use :func:`encode`:: + + from google.auth import crypt + from google.auth import jwt_async + + signer = crypt.Signer(private_key) + payload = {'some': 'payload'} + encoded = jwt_async.encode(signer, payload) + +To decode a JWT and verify claims use :func:`decode`:: + + claims = jwt_async.decode(encoded, certs=public_certs) + +You can also skip verification:: + + claims = jwt_async.decode(encoded, verify=False) + +.. _rfc7519: https://tools.ietf.org/html/rfc7519 + + +NOTE: This async support is experimental and marked internal. This surface may +change in minor releases. +""" + +from google.auth import _credentials_async +from google.auth import jwt + + +def encode(signer, payload, header=None, key_id=None): + """Make a signed JWT. + + Args: + signer (google.auth.crypt.Signer): The signer used to sign the JWT. + payload (Mapping[str, str]): The JWT payload. + header (Mapping[str, str]): Additional JWT header payload. + key_id (str): The key id to add to the JWT header. If the + signer has a key id it will be used as the default. If this is + specified it will override the signer's key id. + + Returns: + bytes: The encoded JWT. + """ + return jwt.encode(signer, payload, header, key_id) + + +def decode(token, certs=None, verify=True, audience=None): + """Decode and verify a JWT. + + Args: + token (str): The encoded JWT. + certs (Union[str, bytes, Mapping[str, Union[str, bytes]]]): The + certificate used to validate the JWT signature. If bytes or string, + it must the the public key certificate in PEM format. If a mapping, + it must be a mapping of key IDs to public key certificates in PEM + format. The mapping must contain the same key ID that's specified + in the token's header. + verify (bool): Whether to perform signature and claim validation. + Verification is done by default. + audience (str): The audience claim, 'aud', that this JWT should + contain. If None then the JWT's 'aud' parameter is not verified. + + Returns: + Mapping[str, str]: The deserialized JSON payload in the JWT. + + Raises: + ValueError: if any verification checks failed. + """ + + return jwt.decode(token, certs, verify, audience) + + +class Credentials( + jwt.Credentials, _credentials_async.Signing, _credentials_async.Credentials +): + """Credentials that use a JWT as the bearer token. + + These credentials require an "audience" claim. This claim identifies the + intended recipient of the bearer token. + + The constructor arguments determine the claims for the JWT that is + sent with requests. Usually, you'll construct these credentials with + one of the helper constructors as shown in the next section. + + To create JWT credentials using a Google service account private key + JSON file:: + + audience = 'https://pubsub.googleapis.com/google.pubsub.v1.Publisher' + credentials = jwt_async.Credentials.from_service_account_file( + 'service-account.json', + audience=audience) + + If you already have the service account file loaded and parsed:: + + service_account_info = json.load(open('service_account.json')) + credentials = jwt_async.Credentials.from_service_account_info( + service_account_info, + audience=audience) + + Both helper methods pass on arguments to the constructor, so you can + specify the JWT claims:: + + credentials = jwt_async.Credentials.from_service_account_file( + 'service-account.json', + audience=audience, + additional_claims={'meta': 'data'}) + + You can also construct the credentials directly if you have a + :class:`~google.auth.crypt.Signer` instance:: + + credentials = jwt_async.Credentials( + signer, + issuer='your-issuer', + subject='your-subject', + audience=audience) + + The claims are considered immutable. If you want to modify the claims, + you can easily create another instance using :meth:`with_claims`:: + + new_audience = ( + 'https://pubsub.googleapis.com/google.pubsub.v1.Subscriber') + new_credentials = credentials.with_claims(audience=new_audience) + """ + + +class OnDemandCredentials( + jwt.OnDemandCredentials, _credentials_async.Signing, _credentials_async.Credentials +): + """On-demand JWT credentials. + + Like :class:`Credentials`, this class uses a JWT as the bearer token for + authentication. However, this class does not require the audience at + construction time. Instead, it will generate a new token on-demand for + each request using the request URI as the audience. It caches tokens + so that multiple requests to the same URI do not incur the overhead + of generating a new token every time. + + This behavior is especially useful for `gRPC`_ clients. A gRPC service may + have multiple audience and gRPC clients may not know all of the audiences + required for accessing a particular service. With these credentials, + no knowledge of the audiences is required ahead of time. + + .. _grpc: http://www.grpc.io/ + """ diff --git a/intelliaide/vendor/google/auth/_oauth2client.py b/intelliaide/vendor/google/auth/_oauth2client.py new file mode 100644 index 0000000..8032b26 --- /dev/null +++ b/intelliaide/vendor/google/auth/_oauth2client.py @@ -0,0 +1,167 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Helpers for transitioning from oauth2client to google-auth. + +.. warning:: + This module is private as it is intended to assist first-party downstream + clients with the transition from oauth2client to google-auth. +""" + +from __future__ import absolute_import + +from google.auth import _helpers +import google.auth.app_engine +import google.auth.compute_engine +import google.oauth2.credentials +import google.oauth2.service_account + +try: + import oauth2client.client # type: ignore + import oauth2client.contrib.gce # type: ignore + import oauth2client.service_account # type: ignore +except ImportError as caught_exc: + raise ImportError("oauth2client is not installed.") from caught_exc + +try: + import oauth2client.contrib.appengine # type: ignore + + _HAS_APPENGINE = True +except ImportError: + _HAS_APPENGINE = False + + +_CONVERT_ERROR_TMPL = "Unable to convert {} to a google-auth credentials class." + + +def _convert_oauth2_credentials(credentials): + """Converts to :class:`google.oauth2.credentials.Credentials`. + + Args: + credentials (Union[oauth2client.client.OAuth2Credentials, + oauth2client.client.GoogleCredentials]): The credentials to + convert. + + Returns: + google.oauth2.credentials.Credentials: The converted credentials. + """ + new_credentials = google.oauth2.credentials.Credentials( + token=credentials.access_token, + refresh_token=credentials.refresh_token, + token_uri=credentials.token_uri, + client_id=credentials.client_id, + client_secret=credentials.client_secret, + scopes=credentials.scopes, + ) + + new_credentials._expires = credentials.token_expiry + + return new_credentials + + +def _convert_service_account_credentials(credentials): + """Converts to :class:`google.oauth2.service_account.Credentials`. + + Args: + credentials (Union[ + oauth2client.service_account.ServiceAccountCredentials, + oauth2client.service_account._JWTAccessCredentials]): The + credentials to convert. + + Returns: + google.oauth2.service_account.Credentials: The converted credentials. + """ + info = credentials.serialization_data.copy() + info["token_uri"] = credentials.token_uri + return google.oauth2.service_account.Credentials.from_service_account_info(info) + + +def _convert_gce_app_assertion_credentials(credentials): + """Converts to :class:`google.auth.compute_engine.Credentials`. + + Args: + credentials (oauth2client.contrib.gce.AppAssertionCredentials): The + credentials to convert. + + Returns: + google.oauth2.service_account.Credentials: The converted credentials. + """ + return google.auth.compute_engine.Credentials( + service_account_email=credentials.service_account_email + ) + + +def _convert_appengine_app_assertion_credentials(credentials): + """Converts to :class:`google.auth.app_engine.Credentials`. + + Args: + credentials (oauth2client.contrib.app_engine.AppAssertionCredentials): + The credentials to convert. + + Returns: + google.oauth2.service_account.Credentials: The converted credentials. + """ + # pylint: disable=invalid-name + return google.auth.app_engine.Credentials( + scopes=_helpers.string_to_scopes(credentials.scope), + service_account_id=credentials.service_account_id, + ) + + +_CLASS_CONVERSION_MAP = { + oauth2client.client.OAuth2Credentials: _convert_oauth2_credentials, + oauth2client.client.GoogleCredentials: _convert_oauth2_credentials, + oauth2client.service_account.ServiceAccountCredentials: _convert_service_account_credentials, + oauth2client.service_account._JWTAccessCredentials: _convert_service_account_credentials, + oauth2client.contrib.gce.AppAssertionCredentials: _convert_gce_app_assertion_credentials, +} + +if _HAS_APPENGINE: # pragma: no cover + _CLASS_CONVERSION_MAP[ + oauth2client.contrib.appengine.AppAssertionCredentials + ] = _convert_appengine_app_assertion_credentials + + +def convert(credentials): + """Convert oauth2client credentials to google-auth credentials. + + This class converts: + + - :class:`oauth2client.client.OAuth2Credentials` to + :class:`google.oauth2.credentials.Credentials`. + - :class:`oauth2client.client.GoogleCredentials` to + :class:`google.oauth2.credentials.Credentials`. + - :class:`oauth2client.service_account.ServiceAccountCredentials` to + :class:`google.oauth2.service_account.Credentials`. + - :class:`oauth2client.service_account._JWTAccessCredentials` to + :class:`google.oauth2.service_account.Credentials`. + - :class:`oauth2client.contrib.gce.AppAssertionCredentials` to + :class:`google.auth.compute_engine.Credentials`. + - :class:`oauth2client.contrib.appengine.AppAssertionCredentials` to + :class:`google.auth.app_engine.Credentials`. + + Returns: + google.auth.credentials.Credentials: The converted credentials. + + Raises: + ValueError: If the credentials could not be converted. + """ + + credentials_class = type(credentials) + + try: + return _CLASS_CONVERSION_MAP[credentials_class](credentials) + except KeyError as caught_exc: + new_exc = ValueError(_CONVERT_ERROR_TMPL.format(credentials_class)) + raise new_exc from caught_exc diff --git a/intelliaide/vendor/google/auth/_refresh_worker.py b/intelliaide/vendor/google/auth/_refresh_worker.py new file mode 100644 index 0000000..1bab21a --- /dev/null +++ b/intelliaide/vendor/google/auth/_refresh_worker.py @@ -0,0 +1,109 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import copy +import logging +import threading + +import google.auth.exceptions as e + +_LOGGER = logging.getLogger(__name__) + + +class RefreshThreadManager: + """ + Organizes exactly one background job that refresh a token. + """ + + def __init__(self): + """Initializes the manager.""" + + self._worker = None + self._lock = threading.Lock() # protects access to worker threads. + + def start_refresh(self, cred, request): + """Starts a refresh thread for the given credentials. + The credentials are refreshed using the request parameter. + request and cred MUST not be None + + Returns True if a background refresh was kicked off. False otherwise. + + Args: + cred: A credentials object. + request: A request object. + Returns: + bool + """ + if cred is None or request is None: + raise e.InvalidValue( + "Unable to start refresh. cred and request must be valid and instantiated objects." + ) + + with self._lock: + if self._worker is not None and self._worker._error_info is not None: + return False + + if self._worker is None or not self._worker.is_alive(): # pragma: NO COVER + self._worker = RefreshThread(cred=cred, request=copy.deepcopy(request)) + self._worker.start() + return True + + def clear_error(self): + """ + Removes any errors that were stored from previous background refreshes. + """ + with self._lock: + if self._worker: + self._worker._error_info = None + + def __getstate__(self): + """Pickle helper that serializes the _lock attribute.""" + state = self.__dict__.copy() + state["_lock"] = None + return state + + def __setstate__(self, state): + """Pickle helper that deserializes the _lock attribute.""" + state["_lock"] = threading.Lock() + self.__dict__.update(state) + + +class RefreshThread(threading.Thread): + """ + Thread that refreshes credentials. + """ + + def __init__(self, cred, request, **kwargs): + """Initializes the thread. + + Args: + cred: A Credential object to refresh. + request: A Request object used to perform a credential refresh. + **kwargs: Additional keyword arguments. + """ + + super().__init__(**kwargs) + self._cred = cred + self._request = request + self._error_info = None + + def run(self): + """ + Perform the credential refresh. + """ + try: + self._cred.refresh(self._request) + except Exception as err: # pragma: NO COVER + _LOGGER.error(f"Background refresh failed due to: {err}") + self._error_info = err diff --git a/intelliaide/vendor/google/auth/_regional_access_boundary_utils.py b/intelliaide/vendor/google/auth/_regional_access_boundary_utils.py new file mode 100644 index 0000000..8101191 --- /dev/null +++ b/intelliaide/vendor/google/auth/_regional_access_boundary_utils.py @@ -0,0 +1,386 @@ +# Copyright 2026 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Utilities for Regional Access Boundary management.""" + +import copy +import datetime +import functools +import logging +import os +import threading +from typing import NamedTuple, Optional, TYPE_CHECKING + +from google.auth import _helpers +from google.auth import environment_vars + +if TYPE_CHECKING: + import google.auth.credentials + import google.auth.transport + +_LOGGER = logging.getLogger(__name__) + + +@functools.lru_cache() +def is_regional_access_boundary_enabled(): + """Checks if Regional Access Boundary is enabled via environment variable. + + The environment variable is interpreted as a boolean with the following + (case-insensitive) rules: + - "true", "1" are considered true. + - Any other value (or unset) is considered false. + + Returns: + bool: True if Regional Access Boundary is enabled, False otherwise. + """ + value = os.environ.get(environment_vars.GOOGLE_AUTH_TRUST_BOUNDARY_ENABLED) + if value is None: + return False + + return value.lower() in ("true", "1") + + +# The default lifetime for a cached Regional Access Boundary. +DEFAULT_REGIONAL_ACCESS_BOUNDARY_TTL = datetime.timedelta(hours=6) + +# The period of time prior to the boundary's expiration when a background refresh +# is proactively triggered. +REGIONAL_ACCESS_BOUNDARY_REFRESH_THRESHOLD = datetime.timedelta(hours=1) + +# The initial cooldown period for a failed Regional Access Boundary lookup. +DEFAULT_REGIONAL_ACCESS_BOUNDARY_COOLDOWN = datetime.timedelta(minutes=15) + +# The maximum cooldown period for a failed Regional Access Boundary lookup. +MAX_REGIONAL_ACCESS_BOUNDARY_COOLDOWN = datetime.timedelta(hours=6) + + +# The header key used for Regional Access Boundaries. +_REGIONAL_ACCESS_BOUNDARY_HEADER = "x-allowed-locations" + + +class _RegionalAccessBoundaryData(NamedTuple): + """Data container for a Regional Access Boundary snapshot. + + Attributes: + encoded_locations (Optional[str]): The encoded Regional Access Boundary string. + expiry (Optional[datetime.datetime]): The hard expiration time of the boundary data. + cooldown_expiry (Optional[datetime.datetime]): The time until which further lookups are skipped. + cooldown_duration (datetime.timedelta): The current duration for the exponential cooldown. + """ + + encoded_locations: Optional[str] + expiry: Optional[datetime.datetime] + cooldown_expiry: Optional[datetime.datetime] + cooldown_duration: datetime.timedelta + + +class _RegionalAccessBoundaryManager(object): + """Manages the Regional Access Boundary state and its background refresh. + + The actual data is held in an immutable `_RegionalAccessBoundaryData` object + and is swapped atomically to ensure thread-safe, lock-free reads. + """ + + def __init__(self): + self._data = _RegionalAccessBoundaryData( + encoded_locations=None, + expiry=None, + cooldown_expiry=None, + cooldown_duration=DEFAULT_REGIONAL_ACCESS_BOUNDARY_COOLDOWN, + ) + self.refresh_manager = _RegionalAccessBoundaryRefreshManager() + self._update_lock = threading.Lock() + self._use_blocking_regional_access_boundary_lookup = False + + def __getstate__(self): + """Pickle helper that serializes the _update_lock attribute.""" + state = self.__dict__.copy() + state["_update_lock"] = None + return state + + def __setstate__(self, state): + """Pickle helper that deserializes the _update_lock attribute.""" + self.__dict__.update(state) + self._update_lock = threading.Lock() + + def __eq__(self, other): + """Checks if two managers are equal.""" + if not isinstance(other, _RegionalAccessBoundaryManager): + return NotImplemented + return ( + self._data == other._data + and self._use_blocking_regional_access_boundary_lookup + == other._use_blocking_regional_access_boundary_lookup + ) + + def enable_blocking_lookup(self): + """Enables blocking Regional Access Boundary lookup. + + When enabled, the Regional Access Boundary lookup will be performed + synchronously in the calling thread instead of asynchronously in a + background thread. + """ + self._use_blocking_regional_access_boundary_lookup = True + + def set_initial_regional_access_boundary(self, encoded_locations=None, expiry=None): + """Manually sets the regional access boundary to the client provided seed. + + Args: + encoded_locations (Optional[str]): The encoded locations string. + expiry (Optional[datetime.datetime]): The expiry time for the boundary. + If encoded_locations is not provided, expiry is ignored. + """ + if not encoded_locations: + expiry = None + + self._data = _RegionalAccessBoundaryData( + encoded_locations=encoded_locations, + expiry=expiry, + cooldown_expiry=None, + cooldown_duration=DEFAULT_REGIONAL_ACCESS_BOUNDARY_COOLDOWN, + ) + + def apply_headers(self, headers): + """Applies the Regional Access Boundary header to the provided dictionary. + + If the boundary is valid, the 'x-allowed-locations' header is added + or updated. Otherwise, the header is removed to ensure no stale + data is sent. + + Args: + headers (MutableMapping[str, str]): The headers dictionary to update. + """ + rab_data = self._data + + if rab_data.encoded_locations and ( + rab_data.expiry is not None and _helpers.utcnow() < rab_data.expiry + ): + headers[_REGIONAL_ACCESS_BOUNDARY_HEADER] = rab_data.encoded_locations + else: + headers.pop(_REGIONAL_ACCESS_BOUNDARY_HEADER, None) + + def maybe_start_refresh(self, credentials, request): + """Starts a background thread to refresh the Regional Access Boundary if needed. + + Args: + credentials (google.auth.credentials.Credentials): The credentials to refresh. + request (google.auth.transport.Request): The object used to make HTTP requests. + """ + rab_data = self._data + + # Don't start a new refresh if the Regional Access Boundary info is still fresh. + if ( + rab_data.encoded_locations + and rab_data.expiry + and _helpers.utcnow() + < (rab_data.expiry - REGIONAL_ACCESS_BOUNDARY_REFRESH_THRESHOLD) + ): + return + + # Don't start a new refresh if the cooldown is still in effect. + if rab_data.cooldown_expiry and _helpers.utcnow() < rab_data.cooldown_expiry: + return + + # If all checks pass, start the background refresh. + if self._use_blocking_regional_access_boundary_lookup: + self.start_blocking_refresh(credentials, request) + else: + self.refresh_manager.start_refresh(credentials, request, self) + + def start_blocking_refresh(self, credentials, request): + """Initiates a blocking lookup of the Regional Access Boundary. + + If the lookup raises an exception, it is caught and logged as a warning, + and the lookup is treated as a failure (entering cooldown). Exceptions + are not propagated to the caller. + + Args: + credentials (google.auth.credentials.Credentials): The credentials to refresh. + request (google.auth.transport.Request): The object used to make HTTP requests. + """ + try: + # The fail_fast parameter is set to True to ensure we don't block the calling + # thread for too long. This will do two things: 1) set a timeout to 3s + # instead of the default 120s and 2) ensure we do not retry at all + regional_access_boundary_info = ( + credentials._lookup_regional_access_boundary(request, fail_fast=True) + ) + except Exception as e: + if _helpers.is_logging_enabled(_LOGGER): + _LOGGER.warning( + "Blocking Regional Access Boundary lookup raised an exception: %s", + e, + exc_info=True, + ) + regional_access_boundary_info = None + + self.process_regional_access_boundary_info(regional_access_boundary_info) + + def process_regional_access_boundary_info(self, regional_access_boundary_info): + """Processes the regional access boundary info and updates the state. + + Args: + regional_access_boundary_info (Optional[Mapping[str, str]]): The regional access + boundary info to process. + """ + with self._update_lock: + # Capture the current state before calculating updates. + current_data = self._data + + if regional_access_boundary_info: + # On success, update the boundary and its expiry, and clear any cooldown. + encoded_locations = regional_access_boundary_info.get( + "encodedLocations" + ) + updated_data = _RegionalAccessBoundaryData( + encoded_locations=encoded_locations, + expiry=_helpers.utcnow() + DEFAULT_REGIONAL_ACCESS_BOUNDARY_TTL, + cooldown_expiry=None, + cooldown_duration=DEFAULT_REGIONAL_ACCESS_BOUNDARY_COOLDOWN, + ) + if _helpers.is_logging_enabled(_LOGGER): + _LOGGER.debug("Regional Access Boundary lookup successful.") + else: + # On failure, calculate cooldown and update state. + if _helpers.is_logging_enabled(_LOGGER): + _LOGGER.warning( + "Regional Access Boundary lookup failed. Entering cooldown." + ) + + next_cooldown_expiry = ( + _helpers.utcnow() + current_data.cooldown_duration + ) + next_cooldown_duration = min( + current_data.cooldown_duration * 2, + MAX_REGIONAL_ACCESS_BOUNDARY_COOLDOWN, + ) + + # If the refresh failed, we keep reusing the existing data unless + # it has reached its hard expiration time. + if current_data.expiry and _helpers.utcnow() > current_data.expiry: + next_encoded_locations = None + next_expiry = None + else: + next_encoded_locations = current_data.encoded_locations + next_expiry = current_data.expiry + + updated_data = _RegionalAccessBoundaryData( + encoded_locations=next_encoded_locations, + expiry=next_expiry, + cooldown_expiry=next_cooldown_expiry, + cooldown_duration=next_cooldown_duration, + ) + + # Perform the atomic swap of the state object. + self._data = updated_data + + +class _RegionalAccessBoundaryRefreshThread(threading.Thread): + """Thread for background refreshing of the Regional Access Boundary.""" + + def __init__( + self, + credentials: "google.auth.credentials.CredentialsWithRegionalAccessBoundary", # noqa: F821 + request: "google.auth.transport.Request", # noqa: F821 + rab_manager: "_RegionalAccessBoundaryManager", + ): + super().__init__() + self.daemon = True + self._credentials = credentials + self._request = request + self._rab_manager = rab_manager + + def run(self): + """ + Performs the Regional Access Boundary lookup and updates the state. + + This method is run in a separate thread. It delegates the actual lookup + to the credentials object's `_lookup_regional_access_boundary` method. + Based on the lookup's outcome (success or complete failure after retries), + it updates the cached Regional Access Boundary information, + its expiry, its cooldown expiry, and its exponential cooldown duration. + """ + # Catch exceptions (e.g., from the underlying transport) to prevent the + # background thread from crashing. This ensures we can gracefully enter + # an exponential cooldown state on failure. + try: + regional_access_boundary_info = ( + self._credentials._lookup_regional_access_boundary(self._request) + ) + except Exception as e: + if _helpers.is_logging_enabled(_LOGGER): + _LOGGER.warning( + "Asynchronous Regional Access Boundary lookup raised an exception: %s", + e, + exc_info=True, + ) + regional_access_boundary_info = None + + self._rab_manager.process_regional_access_boundary_info( + regional_access_boundary_info + ) + + +class _RegionalAccessBoundaryRefreshManager(object): + """Manages a thread for background refreshing of the Regional Access Boundary.""" + + def __init__(self): + self._lock = threading.Lock() + self._worker = None + + def __getstate__(self): + """Pickle helper that serializes the _lock and _worker attributes.""" + state = self.__dict__.copy() + state["_lock"] = None + state["_worker"] = None + return state + + def __setstate__(self, state): + """Pickle helper that deserializes the _lock and _worker attributes.""" + self.__dict__.update(state) + self._lock = threading.Lock() + self._worker = None + + def start_refresh(self, credentials, request, rab_manager): + """ + Starts a background thread to refresh the Regional Access Boundary if one is not already running. + + Args: + credentials (CredentialsWithRegionalAccessBoundary): The credentials + to refresh. + request (google.auth.transport.Request): The object used to make + HTTP requests. + rab_manager (_RegionalAccessBoundaryManager): The manager container to update. + """ + with self._lock: + if self._worker and self._worker.is_alive(): + # A refresh is already in progress. + return + + try: + copied_request = copy.deepcopy(request) + except Exception as e: + if _helpers.is_logging_enabled(_LOGGER): + _LOGGER.warning( + "Could not deepcopy transport for background RAB refresh. " + "Skipping background refresh to avoid thread safety issues. " + "Exception: %s", + e, + ) + return + + self._worker = _RegionalAccessBoundaryRefreshThread( + credentials, copied_request, rab_manager + ) + self._worker.start() diff --git a/intelliaide/vendor/google/auth/_service_account_info.py b/intelliaide/vendor/google/auth/_service_account_info.py new file mode 100644 index 0000000..c432080 --- /dev/null +++ b/intelliaide/vendor/google/auth/_service_account_info.py @@ -0,0 +1,80 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Helper functions for loading data from a Google service account file.""" + +import io +import json + +from google.auth import crypt +from google.auth import exceptions + + +def from_dict(data, require=None, use_rsa_signer=True): + """Validates a dictionary containing Google service account data. + + Creates and returns a :class:`google.auth.crypt.Signer` instance from the + private key specified in the data. + + Args: + data (Mapping[str, str]): The service account data + require (Sequence[str]): List of keys required to be present in the + info. + use_rsa_signer (Optional[bool]): Whether to use RSA signer or EC signer. + We use RSA signer by default. + + Returns: + google.auth.crypt.Signer: A signer created from the private key in the + service account file. + + Raises: + MalformedError: if the data was in the wrong format, or if one of the + required keys is missing. + """ + keys_needed = set(require if require is not None else []) + + missing = keys_needed.difference(data.keys()) + + if missing: + raise exceptions.MalformedError( + "Service account info was not in the expected format, missing " + "fields {}.".format(", ".join(missing)) + ) + + # Create a signer. + if use_rsa_signer: + signer = crypt.RSASigner.from_service_account_info(data) + else: + signer = crypt.EsSigner.from_service_account_info(data) + + return signer + + +def from_filename(filename, require=None, use_rsa_signer=True): + """Reads a Google service account JSON file and returns its parsed info. + + Args: + filename (str): The path to the service account .json file. + require (Sequence[str]): List of keys required to be present in the + info. + use_rsa_signer (Optional[bool]): Whether to use RSA signer or EC signer. + We use RSA signer by default. + + Returns: + Tuple[ Mapping[str, str], google.auth.crypt.Signer ]: The verified + info and a signer instance. + """ + with io.open(filename, "r", encoding="utf-8") as json_file: + data = json.load(json_file) + return data, from_dict(data, require=require, use_rsa_signer=use_rsa_signer) diff --git a/intelliaide/vendor/google/auth/aio/__init__.py b/intelliaide/vendor/google/auth/aio/__init__.py new file mode 100644 index 0000000..331708c --- /dev/null +++ b/intelliaide/vendor/google/auth/aio/__init__.py @@ -0,0 +1,25 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Google Auth AIO Library for Python.""" + +import logging + +from google.auth import version as google_auth_version + + +__version__ = google_auth_version.__version__ + +# Set default logging handler to avoid "No handler found" warnings. +logging.getLogger(__name__).addHandler(logging.NullHandler()) diff --git a/intelliaide/vendor/google/auth/aio/_helpers.py b/intelliaide/vendor/google/auth/aio/_helpers.py new file mode 100644 index 0000000..1d5a461 --- /dev/null +++ b/intelliaide/vendor/google/auth/aio/_helpers.py @@ -0,0 +1,62 @@ +# Copyright 2025 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Helper functions for commonly used utilities.""" + + +import logging +from typing import Any + +from google.auth import _helpers + + +async def _parse_response_async(response: Any) -> Any: + """ + Parses an async response, attempting to decode JSON. + + Args: + response: The response object to parse. This can be any type, but + it is expected to have a `json()` method if it contains JSON. + + Returns: + The parsed response. If the response contains valid JSON, the + decoded JSON object (e.g., a dictionary) is returned. + If the response does not have a `json()` method or if the JSON + decoding fails, None is returned. + """ + try: + json_response = await response.json() + return json_response + except Exception: + # TODO(https://github.com/googleapis/google-auth-library-python/issues/1745): + # Parse and return response payload as json based on different content types. + return None + + +async def response_log_async(logger: logging.Logger, response: Any) -> None: + """ + Logs an Async HTTP response at the DEBUG level if logging is enabled. + + Args: + logger: The logging.Logger instance to use. + response: The HTTP response object to log. + """ + if _helpers.is_logging_enabled(logger): + # TODO(https://github.com/googleapis/google-auth-library-python/issues/1755): + # Parsing the response for async streaming logging results in + # the stream to be empty downstream. For now, we will not be logging + # the response for async responses until we investigate further. + # json_response = await _parse_response_async(response) + json_response = None + _helpers._response_log_base(logger, json_response) diff --git a/intelliaide/vendor/google/auth/aio/credentials.py b/intelliaide/vendor/google/auth/aio/credentials.py new file mode 100644 index 0000000..3bc6a5a --- /dev/null +++ b/intelliaide/vendor/google/auth/aio/credentials.py @@ -0,0 +1,143 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +"""Interfaces for asynchronous credentials.""" + + +from google.auth import _helpers +from google.auth import exceptions +from google.auth._credentials_base import _BaseCredentials + + +class Credentials(_BaseCredentials): + """Base class for all asynchronous credentials. + + All credentials have a :attr:`token` that is used for authentication and + may also optionally set an :attr:`expiry` to indicate when the token will + no longer be valid. + + Most credentials will be :attr:`invalid` until :meth:`refresh` is called. + Credentials can do this automatically before the first HTTP request in + :meth:`before_request`. + + Although the token and expiration will change as the credentials are + :meth:`refreshed ` and used, credentials should be considered + immutable. Various credentials will accept configuration such as private + keys, scopes, and other options. These options are not changeable after + construction. Some classes will provide mechanisms to copy the credentials + with modifications such as :meth:`ScopedCredentials.with_scopes`. + """ + + def __init__(self): + super(Credentials, self).__init__() + + async def apply(self, headers, token=None): + """Apply the token to the authentication header. + + Args: + headers (Mapping): The HTTP request headers. + token (Optional[str]): If specified, overrides the current access + token. + """ + self._apply(headers, token=token) + + async def refresh(self, request): + """Refreshes the access token. + + Args: + request (google.auth.aio.transport.Request): The object used to make + HTTP requests. + + Raises: + google.auth.exceptions.RefreshError: If the credentials could + not be refreshed. + """ + raise NotImplementedError("Refresh must be implemented") + + async def before_request(self, request, method, url, headers): + """Performs credential-specific before request logic. + + Refreshes the credentials if necessary, then calls :meth:`apply` to + apply the token to the authentication header. + + Args: + request (google.auth.aio.transport.Request): The object used to make + HTTP requests. + method (str): The request's HTTP method or the RPC method being + invoked. + url (str): The request's URI or the RPC service's URI. + headers (Mapping): The request's headers. + """ + await self.apply(headers) + + +class StaticCredentials(Credentials): + """Asynchronous Credentials representing an immutable access token. + + The credentials are considered immutable except the tokens which can be + configured in the constructor :: + + credentials = StaticCredentials(token="token123") + + StaticCredentials does not support :meth `refresh` and assumes that the configured + token is valid and not expired. StaticCredentials will never attempt to + refresh the token. + """ + + def __init__(self, token): + """ + Args: + token (str): The access token. + """ + super(StaticCredentials, self).__init__() + self.token = token + + @_helpers.copy_docstring(Credentials) + async def refresh(self, request): + raise exceptions.InvalidOperation("Static credentials cannot be refreshed.") + + # Note: before_request should never try to refresh access tokens. + # StaticCredentials intentionally does not support it. + @_helpers.copy_docstring(Credentials) + async def before_request(self, request, method, url, headers): + await self.apply(headers) + + +class AnonymousCredentials(Credentials): + """Asynchronous Credentials that do not provide any authentication information. + + These are useful in the case of services that support anonymous access or + local service emulators that do not use credentials. + """ + + async def refresh(self, request): + """Raises :class:``InvalidOperation``, anonymous credentials cannot be + refreshed.""" + raise exceptions.InvalidOperation("Anonymous credentials cannot be refreshed.") + + async def apply(self, headers, token=None): + """Anonymous credentials do nothing to the request. + + The optional ``token`` argument is not supported. + + Raises: + google.auth.exceptions.InvalidValue: If a token was specified. + """ + if token is not None: + raise exceptions.InvalidValue("Anonymous credentials don't support tokens.") + + async def before_request(self, request, method, url, headers): + """Anonymous credentials do nothing to the request.""" + pass diff --git a/intelliaide/vendor/google/auth/aio/transport/__init__.py b/intelliaide/vendor/google/auth/aio/transport/__init__.py new file mode 100644 index 0000000..166a3be --- /dev/null +++ b/intelliaide/vendor/google/auth/aio/transport/__init__.py @@ -0,0 +1,144 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Transport - Asynchronous HTTP client library support. + +:mod:`google.auth.aio` is designed to work with various asynchronous client libraries such +as aiohttp. In order to work across these libraries with different +interfaces some abstraction is needed. + +This module provides two interfaces that are implemented by transport adapters +to support HTTP libraries. :class:`Request` defines the interface expected by +:mod:`google.auth` to make asynchronous requests. :class:`Response` defines the interface +for the return value of :class:`Request`. +""" + +import abc +from typing import AsyncGenerator, Mapping, Optional + +import google.auth.transport + + +_DEFAULT_TIMEOUT_SECONDS = 180 + +DEFAULT_RETRYABLE_STATUS_CODES = google.auth.transport.DEFAULT_RETRYABLE_STATUS_CODES +"""Sequence[int]: HTTP status codes indicating a request can be retried. +""" + + +DEFAULT_MAX_RETRY_ATTEMPTS = 3 +"""int: How many times to retry a request.""" + + +class Response(metaclass=abc.ABCMeta): + """Asynchronous HTTP Response Interface.""" + + @property + @abc.abstractmethod + def status_code(self) -> int: + """ + The HTTP response status code. + + Returns: + int: The HTTP response status code. + + """ + raise NotImplementedError("status_code must be implemented.") + + @property + @abc.abstractmethod + def headers(self) -> Mapping[str, str]: + """The HTTP response headers. + + Returns: + Mapping[str, str]: The HTTP response headers. + """ + raise NotImplementedError("headers must be implemented.") + + @abc.abstractmethod + async def content(self, chunk_size: int) -> AsyncGenerator[bytes, None]: + """The raw response content. + + Args: + chunk_size (int): The size of each chunk. + + Yields: + AsyncGenerator[bytes, None]: An asynchronous generator yielding + response chunks as bytes. + """ + raise NotImplementedError("content must be implemented.") + + @abc.abstractmethod + async def read(self) -> bytes: + """Read the entire response content as bytes. + + Returns: + bytes: The entire response content. + """ + raise NotImplementedError("read must be implemented.") + + @abc.abstractmethod + async def close(self): + """Close the response after it is fully consumed to resource.""" + raise NotImplementedError("close must be implemented.") + + +class Request(metaclass=abc.ABCMeta): + """Interface for a callable that makes HTTP requests. + + Specific transport implementations should provide an implementation of + this that adapts their specific request / response API. + + .. automethod:: __call__ + """ + + @abc.abstractmethod + async def __call__( + self, + url: str, + method: str, + body: Optional[bytes], + headers: Optional[Mapping[str, str]], + timeout: float, + **kwargs + ) -> Response: + """Make an HTTP request. + + Args: + url (str): The URI to be requested. + method (str): The HTTP method to use for the request. Defaults + to 'GET'. + body (Optional[bytes]): The payload / body in HTTP request. + headers (Mapping[str, str]): Request headers. + timeout (float): The number of seconds to wait for a + response from the server. If not specified or if None, the + transport-specific default timeout will be used. + kwargs: Additional arguments passed on to the transport's + request method. + + Returns: + google.auth.aio.transport.Response: The HTTP response. + + Raises: + google.auth.exceptions.TransportError: If any exception occurred. + """ + # pylint: disable=redundant-returns-doc, missing-raises-doc + # (pylint doesn't play well with abstract docstrings.) + raise NotImplementedError("__call__ must be implemented.") + + async def close(self) -> None: + """ + Close the underlying session. + """ + raise NotImplementedError("close must be implemented.") diff --git a/intelliaide/vendor/google/auth/aio/transport/aiohttp.py b/intelliaide/vendor/google/auth/aio/transport/aiohttp.py new file mode 100644 index 0000000..642d159 --- /dev/null +++ b/intelliaide/vendor/google/auth/aio/transport/aiohttp.py @@ -0,0 +1,205 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Transport adapter for Asynchronous HTTP Requests based on aiohttp.""" + +import asyncio +import logging +from typing import AsyncGenerator, Mapping, Optional, TYPE_CHECKING, Union + +try: + import aiohttp # type: ignore +except ImportError as caught_exc: # pragma: NO COVER + raise ImportError( + "The aiohttp library is not installed from please install the aiohttp package to use the aiohttp transport." + ) from caught_exc + +from google.auth import _helpers +from google.auth import exceptions +from google.auth.aio import _helpers as _helpers_async +from google.auth.aio import transport + +if TYPE_CHECKING: # pragma: NO COVER + from aiohttp import ClientTimeout # type: ignore + +else: + try: + from aiohttp import ClientTimeout + except (ImportError, AttributeError): + ClientTimeout = None + +_LOGGER = logging.getLogger(__name__) + + +class Response(transport.Response): + """ + Represents an HTTP response and its data. It is returned by ``google.auth.aio.transport.sessions.AsyncAuthorizedSession``. + + Args: + response (aiohttp.ClientResponse): An instance of aiohttp.ClientResponse. + + Attributes: + status_code (int): The HTTP status code of the response. + headers (Mapping[str, str]): The HTTP headers of the response. + """ + + def __init__(self, response: aiohttp.ClientResponse): + self._response = response + + @property + @_helpers.copy_docstring(transport.Response) + def status_code(self) -> int: + return self._response.status + + @property + @_helpers.copy_docstring(transport.Response) + def headers(self) -> Mapping[str, str]: + return {key: value for key, value in self._response.headers.items()} + + @_helpers.copy_docstring(transport.Response) + async def content(self, chunk_size: int = 1024) -> AsyncGenerator[bytes, None]: + try: + async for chunk in self._response.content.iter_chunked( + chunk_size + ): # pragma: no branch + yield chunk + except aiohttp.ClientPayloadError as exc: + raise exceptions.ResponseError( + "Failed to read from the payload stream." + ) from exc + + @_helpers.copy_docstring(transport.Response) + async def read(self) -> bytes: + try: + return await self._response.read() + except aiohttp.ClientResponseError as exc: + raise exceptions.ResponseError("Failed to read the response body.") from exc + + @_helpers.copy_docstring(transport.Response) + async def close(self): + self._response.close() + + +class Request(transport.Request): + """Asynchronous Requests request adapter. + + This class is used internally for making requests using aiohttp + in a consistent way. If you use :class:`google.auth.aio.transport.sessions.AsyncAuthorizedSession` + you do not need to construct or use this class directly. + + This class can be useful if you want to configure a Request callable + with a custom ``aiohttp.ClientSession`` in :class:`AuthorizedSession` or if + you want to manually refresh a :class:`~google.auth.aio.credentials.Credentials` instance:: + + import aiohttp + import google.auth.aio.transport.aiohttp + + # Default example: + request = google.auth.aio.transport.aiohttp.Request() + await credentials.refresh(request) + + # Custom aiohttp Session Example: + session = session=aiohttp.ClientSession(auto_decompress=False) + request = google.auth.aio.transport.aiohttp.Request(session=session) + auth_session = google.auth.aio.transport.sessions.AsyncAuthorizedSession(auth_request=request) + + Args: + session (aiohttp.ClientSession): An instance :class:`aiohttp.ClientSession` used + to make HTTP requests. If not specified, a session will be created. + + .. automethod:: __call__ + """ + + def __init__(self, session: Optional[aiohttp.ClientSession] = None): + self._session = session + self._closed = False + + async def __call__( + self, + url: str, + method: str = "GET", + body: Optional[bytes] = None, + headers: Optional[Mapping[str, str]] = None, + timeout: Union[float, ClientTimeout] = transport._DEFAULT_TIMEOUT_SECONDS, + **kwargs, + ) -> transport.Response: + """ + Make an HTTP request using aiohttp. + + Args: + url (str): The URL to be requested. + method (Optional[str]): + The HTTP method to use for the request. Defaults to 'GET'. + body (Optional[bytes]): + The payload or body in HTTP request. + headers (Optional[Mapping[str, str]]): + Request headers. + timeout (float): The number of seconds to wait for a + response from the server. If not specified or if None, the + requests default timeout will be used. + kwargs: Additional arguments passed through to the underlying + aiohttp :meth:`aiohttp.Session.request` method. + + Returns: + google.auth.aio.transport.Response: The HTTP response. + + Raises: + - google.auth.exceptions.TransportError: If the request fails or if the session is closed. + - google.auth.exceptions.TimeoutError: If the request times out. + """ + + try: + if self._closed: + raise exceptions.TransportError("session is closed.") + + if not self._session: + self._session = aiohttp.ClientSession() + + if isinstance(timeout, aiohttp.ClientTimeout): + client_timeout = timeout + else: + client_timeout = aiohttp.ClientTimeout(total=timeout) + _helpers.request_log(_LOGGER, method, url, body, headers) + response = await self._session.request( + method, + url, + data=body, + headers=headers, + timeout=client_timeout, + **kwargs, + ) + await _helpers_async.response_log_async(_LOGGER, response) + return Response(response) + + except aiohttp.ClientError as caught_exc: + client_exc = exceptions.TransportError(f"Failed to send request to {url}.") + raise client_exc from caught_exc + + except asyncio.TimeoutError as caught_exc: + if isinstance(timeout, aiohttp.ClientTimeout): + timeout_seconds = timeout.total + else: + timeout_seconds = timeout + timeout_exc = exceptions.TimeoutError( + f"Request timed out after {timeout_seconds} seconds." + ) + raise timeout_exc from caught_exc + + async def close(self) -> None: + """ + Close the underlying aiohttp session to release the acquired resources. + """ + if not self._closed and self._session: + await self._session.close() + self._closed = True diff --git a/intelliaide/vendor/google/auth/aio/transport/mtls.py b/intelliaide/vendor/google/auth/aio/transport/mtls.py new file mode 100644 index 0000000..b85d30b --- /dev/null +++ b/intelliaide/vendor/google/auth/aio/transport/mtls.py @@ -0,0 +1,197 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Helper functions for mTLS in async for discovery of certs. +""" + +import asyncio +import contextlib +import logging +import os +import ssl +import tempfile +from typing import Optional + +from google.auth import exceptions +import google.auth.transport._mtls_helper +import google.auth.transport.mtls + +_LOGGER = logging.getLogger(__name__) + + +@contextlib.contextmanager +def _create_temp_file(content: bytes): + """Creates a temporary file with the given content. + + Args: + content (bytes): The content to write to the file. + + Yields: + str: The path to the temporary file. + """ + # Create a temporary file that is readable only by the owner. + fd, file_path = tempfile.mkstemp() + try: + with os.fdopen(fd, "wb") as f: + f.write(content) + yield file_path + finally: + # Securely delete the file after use. + if os.path.exists(file_path): + os.remove(file_path) + + +def make_client_cert_ssl_context( + cert_bytes: bytes, key_bytes: bytes, passphrase: Optional[bytes] = None +) -> ssl.SSLContext: + """Creates an SSLContext with the given client certificate and key. + This function writes the certificate and key to temporary files so that + ssl.create_default_context can load them, as the ssl module requires + file paths for client certificates. These temporary files are deleted + immediately after the SSL context is created. + Args: + cert_bytes (bytes): The client certificate content in PEM format. + key_bytes (bytes): The client private key content in PEM format. + passphrase (Optional[bytes]): The passphrase for the private key, if any. + Returns: + ssl.SSLContext: The configured SSL context with client certificate. + + Raises: + google.auth.exceptions.TransportError: If there is an error loading the certificate. + """ + with _create_temp_file(cert_bytes) as cert_path, _create_temp_file( + key_bytes + ) as key_path: + try: + context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH) + context.load_cert_chain( + certfile=cert_path, keyfile=key_path, password=passphrase + ) + return context + except (ssl.SSLError, OSError, IOError, ValueError, RuntimeError) as exc: + raise exceptions.TransportError( + "Failed to load client certificate and key for mTLS." + ) from exc + + +async def _run_in_executor(func, *args): + """Run a blocking function in an executor to avoid blocking the event loop. + + This implements the non-blocking execution strategy for disk I/O operations. + """ + try: + # For python versions 3.9 and newer versions + return await asyncio.to_thread(func, *args) + except AttributeError: + # Fallback for older Python versions + loop = asyncio.get_running_loop() + return await loop.run_in_executor(None, func, *args) + + +def default_client_cert_source(): + """Get a callback which returns the default client SSL credentials. + + Returns: + Awaitable[Callable[[], Tuple[bytes, bytes]]]: A callback which returns the default + client certificate bytes and private key bytes, both in PEM format. + + Raises: + google.auth.exceptions.DefaultClientCertSourceError: If the default + client SSL credentials don't exist or are malformed. + """ + if not google.auth.transport.mtls.has_default_client_cert_source( + include_context_aware=False + ): + raise exceptions.MutualTLSChannelError( + "Default client cert source doesn't exist" + ) + + async def callback(): + try: + _, cert_bytes, key_bytes = await get_client_cert_and_key() + except (OSError, RuntimeError, ValueError) as caught_exc: + new_exc = exceptions.MutualTLSChannelError(caught_exc) + raise new_exc from caught_exc + + return cert_bytes, key_bytes + + return callback + + +async def get_client_ssl_credentials( + certificate_config_path=None, +): + """Returns the client side certificate, private key and passphrase. + + We look for certificates and keys with the following order of priority: + 1. Certificate and key specified by certificate_config.json. + Currently, only X.509 workload certificates are supported. + + Args: + certificate_config_path (str): The certificate_config.json file path. + + Returns: + Tuple[bool, bytes, bytes, bytes]: + A boolean indicating if cert, key and passphrase are obtained, the + cert bytes and key bytes both in PEM format, and passphrase bytes. + + Raises: + google.auth.exceptions.ClientCertError: if problems occurs when getting + the cert, key and passphrase. + """ + + # Attempt to retrieve X.509 Workload cert and key. + cert, key = await _run_in_executor( + google.auth.transport._mtls_helper._get_workload_cert_and_key, + certificate_config_path, + False, + ) + + if cert and key: + return True, cert, key, None + + return False, None, None, None + + +async def get_client_cert_and_key(client_cert_callback=None): + """Returns the client side certificate and private key. The function first + tries to get certificate and key from client_cert_callback; if the callback + is None or doesn't provide certificate and key, the function tries application + default SSL credentials. + + Args: + client_cert_callback (Optional[Callable[[], (bytes, bytes)]]): An + optional callback which returns client certificate bytes and private + key bytes both in PEM format. + + Returns: + Tuple[bool, bytes, bytes]: + A boolean indicating if cert and key are obtained, the cert bytes + and key bytes both in PEM format. + + Raises: + google.auth.exceptions.ClientCertError: if problems occurs when getting + the cert and key. + """ + if client_cert_callback: + result = client_cert_callback() + try: + cert, key = await result + except TypeError: + cert, key = result + return True, cert, key + + has_cert, cert, key, _ = await get_client_ssl_credentials() + return has_cert, cert, key diff --git a/intelliaide/vendor/google/auth/aio/transport/sessions.py b/intelliaide/vendor/google/auth/aio/transport/sessions.py new file mode 100644 index 0000000..027cb09 --- /dev/null +++ b/intelliaide/vendor/google/auth/aio/transport/sessions.py @@ -0,0 +1,576 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import asyncio +from contextlib import asynccontextmanager +import functools +import time +from typing import Mapping, Optional, TYPE_CHECKING, Union + +from google.auth import _exponential_backoff, exceptions +from google.auth.aio import transport +from google.auth.aio.credentials import Credentials +from google.auth.aio.transport import mtls +from google.auth.exceptions import TimeoutError +import google.auth.transport._mtls_helper + +if TYPE_CHECKING: # pragma: NO COVER + import aiohttp + from aiohttp import ClientTimeout # type: ignore + +else: + try: + import aiohttp + from aiohttp import ClientTimeout + except (ImportError, AttributeError): + ClientTimeout = None + +# Tracks the internal aiohttp installation and usage +try: + from google.auth.aio.transport.aiohttp import Request as AiohttpRequest + + AIOHTTP_INSTALLED = True +except ImportError: # pragma: NO COVER + AIOHTTP_INSTALLED = False + + +@asynccontextmanager +async def timeout_guard(timeout): + """ + timeout_guard is an asynchronous context manager to apply a timeout to an asynchronous block of code. + + Args: + timeout (float): The time in seconds before the context manager times out. + + Raises: + google.auth.exceptions.TimeoutError: If the code within the context exceeds the provided timeout. + + Usage: + async with timeout_guard(10) as with_timeout: + await with_timeout(async_function()) + """ + start = time.monotonic() + total_timeout = timeout + + def _remaining_time(): + elapsed = time.monotonic() - start + remaining = total_timeout - elapsed + if remaining <= 0: + raise TimeoutError( + f"Context manager exceeded the configured timeout of {total_timeout}s." + ) + return remaining + + async def with_timeout(coro): + try: + remaining = _remaining_time() + response = await asyncio.wait_for(coro, remaining) + return response + except (asyncio.TimeoutError, TimeoutError) as e: + raise TimeoutError( + f"The operation {coro} exceeded the configured timeout of {total_timeout}s." + ) from e + + try: + yield with_timeout + + finally: + _remaining_time() + + +class AsyncAuthorizedSession: + """This is an asynchronous implementation of :class:`google.auth.requests.AuthorizedSession` class. + We utilize an instance of a class that implements :class:`google.auth.aio.transport.Request` configured + by the caller or otherwise default to `google.auth.aio.transport.aiohttp.Request` if the external aiohttp + package is installed. + + A Requests Session class with credentials. + + This class is used to perform asynchronous requests to API endpoints that require + authorization:: + + import aiohttp + from google.auth.aio.transport import sessions + + async with sessions.AsyncAuthorizedSession(credentials) as authed_session: + response = await authed_session.request( + 'GET', 'https://www.googleapis.com/storage/v1/b') + + The underlying :meth:`request` implementation handles adding the + credentials' headers to the request and refreshing credentials as needed. + + Args: + credentials (google.auth.aio.credentials.Credentials): + The credentials to add to the request. + auth_request (Optional[google.auth.aio.transport.Request]): + An instance of a class that implements + :class:`~google.auth.aio.transport.Request` used to make requests + and refresh credentials. If not passed, + an instance of :class:`~google.auth.aio.transport.aiohttp.Request` + is created. + + Raises: + - google.auth.exceptions.TransportError: If `auth_request` is `None` + and the external package `aiohttp` is not installed. + - google.auth.exceptions.InvalidType: If the provided credentials are + not of type `google.auth.aio.credentials.Credentials`. + """ + + def __init__( + self, credentials: Credentials, auth_request: Optional[transport.Request] = None + ): + if not isinstance(credentials, Credentials): + raise exceptions.InvalidType( + f"The configured credentials of type {type(credentials)} are invalid and must be of type `google.auth.aio.credentials.Credentials`" + ) + self._credentials = credentials + _auth_request = auth_request + if not _auth_request and AIOHTTP_INSTALLED: + _auth_request = AiohttpRequest() + self._is_mtls = False + self._mtls_init_task = None + self._cached_cert = None + if _auth_request is None: + raise exceptions.TransportError( + "`auth_request` must either be configured or the external package `aiohttp` must be installed to use the default value." + ) + self._auth_request = _auth_request + + async def configure_mtls_channel(self, client_cert_callback=None): + """Configure the client certificate and key for SSL connection. + + The function does nothing unless `GOOGLE_API_USE_CLIENT_CERTIFICATE` is + explicitly set to `true`. In this case if client certificate and key are + successfully obtained (from the given client_cert_callback or from application + default SSL credentials), the underlying transport will be reconfigured + to use mTLS. + Note: This function does nothing if the `aiohttp` library is not + installed. + Important: Calling this method will close any ongoing API requests associated + with the current session. To ensure a smooth transition, it is recommended + to call this during session initialization. + + Args: + client_cert_callback (Optional[Callable[[], (bytes, bytes)]]): + The optional callback returns the client certificate and private + key bytes both in PEM format. + If the callback is None, application default SSL credentials + will be used. + + Raises: + google.auth.exceptions.MutualTLSChannelError: If mutual TLS channel + creation failed for any reason. + """ + if self._mtls_init_task is None: + + async def _do_configure(): + # Run the blocking check in an executor + use_client_cert = await mtls._run_in_executor( + google.auth.transport._mtls_helper.check_use_client_cert + ) + if not use_client_cert: + self._is_mtls = False + return + + try: + ( + self._is_mtls, + cert, + key, + ) = await mtls.get_client_cert_and_key(client_cert_callback) + + if self._is_mtls: + self._cached_cert = cert + ssl_context = await mtls._run_in_executor( + mtls.make_client_cert_ssl_context, cert, key + ) + + # Re-create the auth request with the new SSL context + if AIOHTTP_INSTALLED and isinstance( + self._auth_request, AiohttpRequest + ): + connector = aiohttp.TCPConnector(ssl=ssl_context) + new_session = aiohttp.ClientSession(connector=connector) + + old_auth_request = self._auth_request + self._auth_request = AiohttpRequest(session=new_session) + + await old_auth_request.close() + + except ( + exceptions.ClientCertError, + ImportError, + OSError, + ) as caught_exc: + new_exc = exceptions.MutualTLSChannelError(caught_exc) + raise new_exc from caught_exc + + self._mtls_init_task = asyncio.create_task(_do_configure()) + + return await self._mtls_init_task + + async def request( + self, + method: str, + url: str, + data: Optional[bytes] = None, + headers: Optional[Mapping[str, str]] = None, + max_allowed_time: float = transport._DEFAULT_TIMEOUT_SECONDS, + timeout: Union[float, ClientTimeout] = transport._DEFAULT_TIMEOUT_SECONDS, + total_attempts: Optional[int] = transport.DEFAULT_MAX_RETRY_ATTEMPTS, + **kwargs, + ) -> transport.Response: + """ + Args: + method (str): The http method used to make the request. + url (str): The URI to be requested. + data (Optional[bytes]): The payload or body in HTTP request. + headers (Optional[Mapping[str, str]]): Request headers. + timeout (float, aiohttp.ClientTimeout): + The amount of time in seconds to wait for the server response + with each individual request. + max_allowed_time (float): + If the method runs longer than this, a ``Timeout`` exception is + automatically raised. Unlike the ``timeout`` parameter, this + value applies to the total method execution time, even if + multiple requests are made under the hood. + total_attempts (int): + The total number of retry attempts. + + Mind that it is not guaranteed that the timeout error is raised + at ``max_allowed_time``. It might take longer, for example, if + an underlying request takes a lot of time, but the request + itself does not timeout, e.g. if a large file is being + transmitted. The timeout error will be raised after such + request completes. + + Returns: + google.auth.aio.transport.Response: The HTTP response. + + Raises: + google.auth.exceptions.TimeoutError: If the method does not complete within + the configured `max_allowed_time` or the request exceeds the configured + `timeout`. + """ + if self._mtls_init_task: + try: + await self._mtls_init_task + except Exception: + # Suppress all exceptions from the background mTLS initialization task, + # allowing the request to fail naturally elsewhere. + pass + retries = _exponential_backoff.AsyncExponentialBackoff( + total_attempts=total_attempts, + ) + if headers is None: + headers = {} + async with timeout_guard(max_allowed_time) as with_timeout: + await with_timeout( + # Note: before_request will attempt to refresh credentials if expired. + self._credentials.before_request( + self._auth_request, method, url, headers + ) + ) + actual_timeout: float = 0.0 + if ClientTimeout is not None and isinstance(timeout, ClientTimeout): + actual_timeout = timeout.total if timeout.total is not None else 0.0 + elif isinstance(timeout, (int, float)): + actual_timeout = float(timeout) + # Workaround issue in python 3.9 related to code coverage by adding `# pragma: no branch` + # See https://github.com/googleapis/gapic-generator-python/pull/1174#issuecomment-1025132372 + async for _ in retries: # pragma: no branch + response = await with_timeout( + self._auth_request( + url, method, data, headers, actual_timeout, **kwargs + ) + ) + if response.status_code not in transport.DEFAULT_RETRYABLE_STATUS_CODES: + break + return response + + @functools.wraps(request) + async def get( + self, + url: str, + data: Optional[bytes] = None, + headers: Optional[Mapping[str, str]] = None, + max_allowed_time: float = transport._DEFAULT_TIMEOUT_SECONDS, + timeout: Union[float, ClientTimeout] = transport._DEFAULT_TIMEOUT_SECONDS, + total_attempts: Optional[int] = transport.DEFAULT_MAX_RETRY_ATTEMPTS, + **kwargs, + ) -> transport.Response: + """ + Args: + url (str): The URI to be requested. + data (Optional[bytes]): The payload or body in HTTP request. + headers (Optional[Mapping[str, str]]): Request headers. + max_allowed_time (float): + If the method runs longer than this, a ``Timeout`` exception is + automatically raised. Unlike the ``timeout`` parameter, this + value applies to the total method execution time, even if + multiple requests are made under the hood. + timeout (float, aiohttp.ClientTimeout): + The amount of time in seconds to wait for the server response + with each individual request. + total_attempts (int): + The total number of retry attempts. + + Mind that it is not guaranteed that the timeout error is raised + at ``max_allowed_time``. It might take longer, for example, if + an underlying request takes a lot of time, but the request + itself does not timeout, e.g. if a large file is being + transmitted. The timeout error will be raised after such + request completes. + + Returns: + google.auth.aio.transport.Response: The HTTP response. + + Raises: + google.auth.exceptions.TimeoutError: If the method does not complete within + the configured `max_allowed_time` or the request exceeds the configured + `timeout`. + """ + return await self.request( + "GET", + url, + data, + headers, + max_allowed_time, + timeout, + total_attempts, + **kwargs, + ) + + @functools.wraps(request) + async def post( + self, + url: str, + data: Optional[bytes] = None, + headers: Optional[Mapping[str, str]] = None, + max_allowed_time: float = transport._DEFAULT_TIMEOUT_SECONDS, + timeout: Union[float, ClientTimeout] = transport._DEFAULT_TIMEOUT_SECONDS, + total_attempts: Optional[int] = transport.DEFAULT_MAX_RETRY_ATTEMPTS, + **kwargs, + ) -> transport.Response: + """ + Args: + url (str): The URI to be requested. + data (Optional[bytes]): The payload or body in HTTP request. + headers (Optional[Mapping[str, str]]): Request headers. + max_allowed_time (float): + If the method runs longer than this, a ``Timeout`` exception is + automatically raised. Unlike the ``timeout`` parameter, this + value applies to the total method execution time, even if + multiple requests are made under the hood. + timeout (float, aiohttp.ClientTimeout): + The amount of time in seconds to wait for the server response + with each individual request. + total_attempts (int): + The total number of retry attempts. + + Mind that it is not guaranteed that the timeout error is raised + at ``max_allowed_time``. It might take longer, for example, if + an underlying request takes a lot of time, but the request + itself does not timeout, e.g. if a large file is being + transmitted. The timeout error will be raised after such + request completes. + + Returns: + google.auth.aio.transport.Response: The HTTP response. + + Raises: + google.auth.exceptions.TimeoutError: If the method does not complete within + the configured `max_allowed_time` or the request exceeds the configured + `timeout`. + """ + return await self.request( + "POST", + url, + data, + headers, + max_allowed_time, + timeout, + total_attempts, + **kwargs, + ) + + @functools.wraps(request) + async def put( + self, + url: str, + data: Optional[bytes] = None, + headers: Optional[Mapping[str, str]] = None, + max_allowed_time: float = transport._DEFAULT_TIMEOUT_SECONDS, + timeout: Union[float, ClientTimeout] = transport._DEFAULT_TIMEOUT_SECONDS, + total_attempts: Optional[int] = transport.DEFAULT_MAX_RETRY_ATTEMPTS, + **kwargs, + ) -> transport.Response: + """ + Args: + url (str): The URI to be requested. + data (Optional[bytes]): The payload or body in HTTP request. + headers (Optional[Mapping[str, str]]): Request headers. + max_allowed_time (float): + If the method runs longer than this, a ``Timeout`` exception is + automatically raised. Unlike the ``timeout`` parameter, this + value applies to the total method execution time, even if + multiple requests are made under the hood. + timeout (float, aiohttp.ClientTimeout): + The amount of time in seconds to wait for the server response + with each individual request. + total_attempts (int): + The total number of retry attempts. + + Mind that it is not guaranteed that the timeout error is raised + at ``max_allowed_time``. It might take longer, for example, if + an underlying request takes a lot of time, but the request + itself does not timeout, e.g. if a large file is being + transmitted. The timeout error will be raised after such + request completes. + + Returns: + google.auth.aio.transport.Response: The HTTP response. + + Raises: + google.auth.exceptions.TimeoutError: If the method does not complete within + the configured `max_allowed_time` or the request exceeds the configured + `timeout`. + """ + return await self.request( + "PUT", + url, + data, + headers, + max_allowed_time, + timeout, + total_attempts, + **kwargs, + ) + + @functools.wraps(request) + async def patch( + self, + url: str, + data: Optional[bytes] = None, + headers: Optional[Mapping[str, str]] = None, + max_allowed_time: float = transport._DEFAULT_TIMEOUT_SECONDS, + timeout: Union[float, ClientTimeout] = transport._DEFAULT_TIMEOUT_SECONDS, + total_attempts: Optional[int] = transport.DEFAULT_MAX_RETRY_ATTEMPTS, + **kwargs, + ) -> transport.Response: + """ + Args: + url (str): The URI to be requested. + data (Optional[bytes]): The payload or body in HTTP request. + headers (Optional[Mapping[str, str]]): Request headers. + max_allowed_time (float): + If the method runs longer than this, a ``Timeout`` exception is + automatically raised. Unlike the ``timeout`` parameter, this + value applies to the total method execution time, even if + multiple requests are made under the hood. + timeout (float, aiohttp.ClientTimeout): + The amount of time in seconds to wait for the server response + with each individual request. + total_attempts (int): + The total number of retry attempts. + + Mind that it is not guaranteed that the timeout error is raised + at ``max_allowed_time``. It might take longer, for example, if + an underlying request takes a lot of time, but the request + itself does not timeout, e.g. if a large file is being + transmitted. The timeout error will be raised after such + request completes. + + Returns: + google.auth.aio.transport.Response: The HTTP response. + + Raises: + google.auth.exceptions.TimeoutError: If the method does not complete within + the configured `max_allowed_time` or the request exceeds the configured + `timeout`. + """ + return await self.request( + "PATCH", + url, + data, + headers, + max_allowed_time, + timeout, + total_attempts, + **kwargs, + ) + + @functools.wraps(request) + async def delete( + self, + url: str, + data: Optional[bytes] = None, + headers: Optional[Mapping[str, str]] = None, + max_allowed_time: float = transport._DEFAULT_TIMEOUT_SECONDS, + timeout: Union[float, ClientTimeout] = transport._DEFAULT_TIMEOUT_SECONDS, + total_attempts: Optional[int] = transport.DEFAULT_MAX_RETRY_ATTEMPTS, + **kwargs, + ) -> transport.Response: + """ + Args: + url (str): The URI to be requested. + data (Optional[bytes]): The payload or body in HTTP request. + headers (Optional[Mapping[str, str]]): Request headers. + max_allowed_time (float): + If the method runs longer than this, a ``Timeout`` exception is + automatically raised. Unlike the ``timeout`` parameter, this + value applies to the total method execution time, even if + multiple requests are made under the hood. + timeout (float, aiohttp.ClientTimeout): + The amount of time in seconds to wait for the server response + with each individual request. + total_attempts (int): + The total number of retry attempts. + + Mind that it is not guaranteed that the timeout error is raised + at ``max_allowed_time``. It might take longer, for example, if + an underlying request takes a lot of time, but the request + itself does not timeout, e.g. if a large file is being + transmitted. The timeout error will be raised after such + request completes. + + Returns: + google.auth.aio.transport.Response: The HTTP response. + + Raises: + google.auth.exceptions.TimeoutError: If the method does not complete within + the configured `max_allowed_time` or the request exceeds the configured + `timeout`. + """ + return await self.request( + "DELETE", + url, + data, + headers, + max_allowed_time, + timeout, + total_attempts, + **kwargs, + ) + + @property + def is_mtls(self): + """Indicates if mutual TLS is enabled.""" + return self._is_mtls + + async def close(self) -> None: + """ + Close the underlying auth request session. + """ + await self._auth_request.close() diff --git a/intelliaide/vendor/google/auth/api_key.py b/intelliaide/vendor/google/auth/api_key.py new file mode 100644 index 0000000..4fdf7f2 --- /dev/null +++ b/intelliaide/vendor/google/auth/api_key.py @@ -0,0 +1,76 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Google API key support. +This module provides authentication using the `API key`_. +.. _API key: + https://cloud.google.com/docs/authentication/api-keys/ +""" + +from google.auth import _helpers +from google.auth import credentials +from google.auth import exceptions + + +class Credentials(credentials.Credentials): + """API key credentials. + These credentials use API key to provide authorization to applications. + """ + + def __init__(self, token): + """ + Args: + token (str): API key string + Raises: + ValueError: If the provided API key is not a non-empty string. + """ + super(Credentials, self).__init__() + if not token: + raise exceptions.InvalidValue("Token must be a non-empty API key string") + self.token = token + + @property + def expired(self): + return False + + @property + def valid(self): + return True + + @_helpers.copy_docstring(credentials.Credentials) + def refresh(self, request): + return + + def apply(self, headers, token=None): + """Apply the API key token to the x-goog-api-key header. + Args: + headers (Mapping): The HTTP request headers. + token (Optional[str]): If specified, overrides the current access + token. + """ + headers["x-goog-api-key"] = token or self.token + + def before_request(self, request, method, url, headers): + """Performs credential-specific before request logic. + Refreshes the credentials if necessary, then calls :meth:`apply` to + apply the token to the x-goog-api-key header. + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + method (str): The request's HTTP method or the RPC method being + invoked. + url (str): The request's URI or the RPC service's URI. + headers (Mapping): The request's headers. + """ + self.apply(headers) diff --git a/intelliaide/vendor/google/auth/app_engine.py b/intelliaide/vendor/google/auth/app_engine.py new file mode 100644 index 0000000..49f6457 --- /dev/null +++ b/intelliaide/vendor/google/auth/app_engine.py @@ -0,0 +1,179 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Google App Engine standard environment support. + +This module provides authentication and signing for applications running on App +Engine in the standard environment using the `App Identity API`_. + + +.. _App Identity API: + https://cloud.google.com/appengine/docs/python/appidentity/ +""" + + +from google.auth import _helpers +from google.auth import credentials +from google.auth import crypt +from google.auth import exceptions + +# pytype: disable=import-error +try: + from google.appengine.api import app_identity # type: ignore +except ImportError: + app_identity = None # type: ignore +# pytype: enable=import-error + + +class Signer(crypt.Signer): + """Signs messages using the App Engine App Identity service. + + This can be used in place of :class:`google.auth.crypt.Signer` when + running in the App Engine standard environment. + """ + + @property + def key_id(self): + """Optional[str]: The key ID used to identify this private key. + + .. warning:: + This is always ``None``. The key ID used by App Engine can not + be reliably determined ahead of time. + """ + return None + + @_helpers.copy_docstring(crypt.Signer) + def sign(self, message): + message = _helpers.to_bytes(message) + _, signature = app_identity.sign_blob(message) + return signature + + +def get_project_id(): + """Gets the project ID for the current App Engine application. + + Returns: + str: The project ID + + Raises: + google.auth.exceptions.OSError: If the App Engine APIs are unavailable. + """ + # pylint: disable=missing-raises-doc + # Pylint rightfully thinks google.auth.exceptions.OSError is OSError, but doesn't + # realize it's a valid alias. + if app_identity is None: + raise exceptions.OSError("The App Engine APIs are not available.") + return app_identity.get_application_id() + + +class Credentials( + credentials.Scoped, credentials.Signing, credentials.CredentialsWithQuotaProject +): + """App Engine standard environment credentials. + + These credentials use the App Engine App Identity API to obtain access + tokens. + """ + + def __init__( + self, + scopes=None, + default_scopes=None, + service_account_id=None, + quota_project_id=None, + ): + """ + Args: + scopes (Sequence[str]): Scopes to request from the App Identity + API. + default_scopes (Sequence[str]): Default scopes passed by a + Google client library. Use 'scopes' for user-defined scopes. + service_account_id (str): The service account ID passed into + :func:`google.appengine.api.app_identity.get_access_token`. + If not specified, the default application service account + ID will be used. + quota_project_id (Optional[str]): The project ID used for quota + and billing. + + Raises: + google.auth.exceptions.OSError: If the App Engine APIs are unavailable. + """ + # pylint: disable=missing-raises-doc + # Pylint rightfully thinks google.auth.exceptions.OSError is OSError, but doesn't + # realize it's a valid alias. + if app_identity is None: + raise exceptions.OSError("The App Engine APIs are not available.") + + super(Credentials, self).__init__() + self._scopes = scopes + self._default_scopes = default_scopes + self._service_account_id = service_account_id + self._signer = Signer() + self._quota_project_id = quota_project_id + + @_helpers.copy_docstring(credentials.Credentials) + def refresh(self, request): + scopes = self._scopes if self._scopes is not None else self._default_scopes + # pylint: disable=unused-argument + token, ttl = app_identity.get_access_token(scopes, self._service_account_id) + expiry = _helpers.utcfromtimestamp(ttl) + + self.token, self.expiry = token, expiry + + @property + def service_account_email(self): + """The service account email.""" + if self._service_account_id is None: + self._service_account_id = app_identity.get_service_account_name() + return self._service_account_id + + @property + def requires_scopes(self): + """Checks if the credentials requires scopes. + + Returns: + bool: True if there are no scopes set otherwise False. + """ + return not self._scopes and not self._default_scopes + + @_helpers.copy_docstring(credentials.Scoped) + def with_scopes(self, scopes, default_scopes=None): + return self.__class__( + scopes=scopes, + default_scopes=default_scopes, + service_account_id=self._service_account_id, + quota_project_id=self.quota_project_id, + ) + + @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) + def with_quota_project(self, quota_project_id): + return self.__class__( + scopes=self._scopes, + service_account_id=self._service_account_id, + quota_project_id=quota_project_id, + ) + + @_helpers.copy_docstring(credentials.Signing) + def sign_bytes(self, message): + return self._signer.sign(message) + + @property # type: ignore + @_helpers.copy_docstring(credentials.Signing) + def signer_email(self): + return self.service_account_email + + @property # type: ignore + @_helpers.copy_docstring(credentials.Signing) + def signer(self): + return self._signer diff --git a/intelliaide/vendor/google/auth/aws.py b/intelliaide/vendor/google/auth/aws.py new file mode 100644 index 0000000..c640568 --- /dev/null +++ b/intelliaide/vendor/google/auth/aws.py @@ -0,0 +1,863 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""AWS Credentials and AWS Signature V4 Request Signer. + +This module provides credentials to access Google Cloud resources from Amazon +Web Services (AWS) workloads. These credentials are recommended over the +use of service account credentials in AWS as they do not involve the management +of long-live service account private keys. + +AWS Credentials are initialized using external_account arguments which are +typically loaded from the external credentials JSON file. + +This module also provides a definition for an abstract AWS security credentials supplier. +This supplier can be implemented to return valid AWS security credentials and an AWS region +and used to create AWS credentials. The credentials will then call the +supplier instead of using pre-defined methods such as calling the EC2 metadata endpoints. + +This module also provides a basic implementation of the +`AWS Signature Version 4`_ request signing algorithm. + +AWS Credentials use serialized signed requests to the +`AWS STS GetCallerIdentity`_ API that can be exchanged for Google access tokens +via the GCP STS endpoint. + +.. _AWS Signature Version 4: https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html +.. _AWS STS GetCallerIdentity: https://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html +""" + +import abc +from dataclasses import dataclass +import hashlib +import hmac +import http.client as http_client +import json +import os +import posixpath +import re +from typing import Optional +import urllib +from urllib.parse import urljoin + +from google.auth import _helpers +from google.auth import environment_vars +from google.auth import exceptions +from google.auth import external_account + +# AWS Signature Version 4 signing algorithm identifier. +_AWS_ALGORITHM = "AWS4-HMAC-SHA256" +# The termination string for the AWS credential scope value as defined in +# https://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html +_AWS_REQUEST_TYPE = "aws4_request" +# The AWS authorization header name for the security session token if available. +_AWS_SECURITY_TOKEN_HEADER = "x-amz-security-token" +# The AWS authorization header name for the auto-generated date. +_AWS_DATE_HEADER = "x-amz-date" +# The default AWS regional credential verification URL. +_DEFAULT_AWS_REGIONAL_CREDENTIAL_VERIFICATION_URL = ( + "https://sts.{region}.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15" +) +# IMDSV2 session token lifetime. This is set to a low value because the session token is used immediately. +_IMDSV2_SESSION_TOKEN_TTL_SECONDS = "300" + + +class RequestSigner(object): + """Implements an AWS request signer based on the AWS Signature Version 4 signing + process. + https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html + """ + + def __init__(self, region_name): + """Instantiates an AWS request signer used to compute authenticated signed + requests to AWS APIs based on the AWS Signature Version 4 signing process. + + Args: + region_name (str): The AWS region to use. + """ + + self._region_name = region_name + + def get_request_options( + self, + aws_security_credentials, + url, + method, + request_payload="", + additional_headers={}, + ): + """Generates the signed request for the provided HTTP request for calling + an AWS API. This follows the steps described at: + https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html + + Args: + aws_security_credentials (AWSSecurityCredentials): The AWS security credentials. + url (str): The AWS service URL containing the canonical URI and + query string. + method (str): The HTTP method used to call this API. + request_payload (Optional[str]): The optional request payload if + available. + additional_headers (Optional[Mapping[str, str]]): The optional + additional headers needed for the requested AWS API. + + Returns: + Mapping[str, str]: The AWS signed request dictionary object. + """ + + additional_headers = additional_headers or {} + + uri = urllib.parse.urlparse(url) + # Normalize the URL path. This is needed for the canonical_uri. + # os.path.normpath can't be used since it normalizes "/" paths + # to "\\" in Windows OS. + normalized_uri = urllib.parse.urlparse( + urljoin(url, posixpath.normpath(uri.path)) + ) + # Validate provided URL. + if not uri.hostname or uri.scheme != "https": + raise exceptions.InvalidResource("Invalid AWS service URL") + + header_map = _generate_authentication_header_map( + host=uri.hostname, + canonical_uri=normalized_uri.path or "/", + canonical_querystring=_get_canonical_querystring(uri.query), + method=method, + region=self._region_name, + aws_security_credentials=aws_security_credentials, + request_payload=request_payload, + additional_headers=additional_headers, + ) + headers = { + "Authorization": header_map.get("authorization_header"), + "host": uri.hostname, + } + # Add x-amz-date if available. + if "amz_date" in header_map: + headers[_AWS_DATE_HEADER] = header_map.get("amz_date") + # Append additional optional headers, eg. X-Amz-Target, Content-Type, etc. + for key in additional_headers: + headers[key] = additional_headers[key] + + # Add session token if available. + if aws_security_credentials.session_token is not None: + headers[_AWS_SECURITY_TOKEN_HEADER] = aws_security_credentials.session_token + + signed_request = {"url": url, "method": method, "headers": headers} + if request_payload: + signed_request["data"] = request_payload + return signed_request + + +def _get_canonical_querystring(query): + """Generates the canonical query string given a raw query string. + Logic is based on + https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html + + Args: + query (str): The raw query string. + + Returns: + str: The canonical query string. + """ + # Parse raw query string. + querystring = urllib.parse.parse_qs(query) + querystring_encoded_map = {} + for key in querystring: + quote_key = urllib.parse.quote(key, safe="-_.~") + # URI encode key. + querystring_encoded_map[quote_key] = [] + for item in querystring[key]: + # For each key, URI encode all values for that key. + querystring_encoded_map[quote_key].append( + urllib.parse.quote(item, safe="-_.~") + ) + # Sort values for each key. + querystring_encoded_map[quote_key].sort() + # Sort keys. + sorted_keys = list(querystring_encoded_map.keys()) + sorted_keys.sort() + # Reconstruct the query string. Preserve keys with multiple values. + querystring_encoded_pairs = [] + for key in sorted_keys: + for item in querystring_encoded_map[key]: + querystring_encoded_pairs.append("{}={}".format(key, item)) + return "&".join(querystring_encoded_pairs) + + +def _sign(key, msg): + """Creates the HMAC-SHA256 hash of the provided message using the provided + key. + + Args: + key (str): The HMAC-SHA256 key to use. + msg (str): The message to hash. + + Returns: + str: The computed hash bytes. + """ + return hmac.new(key, msg.encode("utf-8"), hashlib.sha256).digest() + + +def _get_signing_key(key, date_stamp, region_name, service_name): + """Calculates the signing key used to calculate the signature for + AWS Signature Version 4 based on: + https://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html + + Args: + key (str): The AWS secret access key. + date_stamp (str): The '%Y%m%d' date format. + region_name (str): The AWS region. + service_name (str): The AWS service name, eg. sts. + + Returns: + str: The signing key bytes. + """ + k_date = _sign(("AWS4" + key).encode("utf-8"), date_stamp) + k_region = _sign(k_date, region_name) + k_service = _sign(k_region, service_name) + k_signing = _sign(k_service, "aws4_request") + return k_signing + + +def _generate_authentication_header_map( + host, + canonical_uri, + canonical_querystring, + method, + region, + aws_security_credentials, + request_payload="", + additional_headers={}, +): + """Generates the authentication header map needed for generating the AWS + Signature Version 4 signed request. + + Args: + host (str): The AWS service URL hostname. + canonical_uri (str): The AWS service URL path name. + canonical_querystring (str): The AWS service URL query string. + method (str): The HTTP method used to call this API. + region (str): The AWS region. + aws_security_credentials (AWSSecurityCredentials): The AWS security credentials. + request_payload (Optional[str]): The optional request payload if + available. + additional_headers (Optional[Mapping[str, str]]): The optional + additional headers needed for the requested AWS API. + + Returns: + Mapping[str, str]: The AWS authentication header dictionary object. + This contains the x-amz-date and authorization header information. + """ + # iam.amazonaws.com host => iam service. + # sts.us-east-2.amazonaws.com host => sts service. + service_name = host.split(".")[0] + + current_time = _helpers.utcnow() + amz_date = current_time.strftime("%Y%m%dT%H%M%SZ") + date_stamp = current_time.strftime("%Y%m%d") + + # Change all additional headers to be lower case. + full_headers = {} + for key in additional_headers: + full_headers[key.lower()] = additional_headers[key] + # Add AWS session token if available. + if aws_security_credentials.session_token is not None: + full_headers[ + _AWS_SECURITY_TOKEN_HEADER + ] = aws_security_credentials.session_token + + # Required headers + full_headers["host"] = host + # Do not use generated x-amz-date if the date header is provided. + # Previously the date was not fixed with x-amz- and could be provided + # manually. + # https://github.com/boto/botocore/blob/879f8440a4e9ace5d3cf145ce8b3d5e5ffb892ef/tests/unit/auth/aws4_testsuite/get-header-value-trim.req + if "date" not in full_headers: + full_headers[_AWS_DATE_HEADER] = amz_date + + # Header keys need to be sorted alphabetically. + canonical_headers = "" + header_keys = list(full_headers.keys()) + header_keys.sort() + for key in header_keys: + canonical_headers = "{}{}:{}\n".format( + canonical_headers, key, full_headers[key] + ) + signed_headers = ";".join(header_keys) + + payload_hash = hashlib.sha256((request_payload or "").encode("utf-8")).hexdigest() + + # https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html + canonical_request = "{}\n{}\n{}\n{}\n{}\n{}".format( + method, + canonical_uri, + canonical_querystring, + canonical_headers, + signed_headers, + payload_hash, + ) + + credential_scope = "{}/{}/{}/{}".format( + date_stamp, region, service_name, _AWS_REQUEST_TYPE + ) + + # https://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html + string_to_sign = "{}\n{}\n{}\n{}".format( + _AWS_ALGORITHM, + amz_date, + credential_scope, + hashlib.sha256(canonical_request.encode("utf-8")).hexdigest(), + ) + + # https://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html + signing_key = _get_signing_key( + aws_security_credentials.secret_access_key, date_stamp, region, service_name + ) + signature = hmac.new( + signing_key, string_to_sign.encode("utf-8"), hashlib.sha256 + ).hexdigest() + + # https://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html + authorization_header = "{} Credential={}/{}, SignedHeaders={}, Signature={}".format( + _AWS_ALGORITHM, + aws_security_credentials.access_key_id, + credential_scope, + signed_headers, + signature, + ) + + authentication_header = {"authorization_header": authorization_header} + # Do not use generated x-amz-date if the date header is provided. + if "date" not in full_headers: + authentication_header["amz_date"] = amz_date + return authentication_header + + +@dataclass +class AwsSecurityCredentials: + """A class that models AWS security credentials with an optional session token. + + Attributes: + access_key_id (str): The AWS security credentials access key id. + secret_access_key (str): The AWS security credentials secret access key. + session_token (Optional[str]): The optional AWS security credentials session token. This should be set when using temporary credentials. + """ + + access_key_id: str + secret_access_key: str + session_token: Optional[str] = None + + +class AwsSecurityCredentialsSupplier(metaclass=abc.ABCMeta): + """Base class for AWS security credential suppliers. This can be implemented with custom logic to retrieve + AWS security credentials to exchange for a Google Cloud access token. The AWS external account credential does + not cache the AWS security credentials, so caching logic should be added in the implementation. + """ + + @abc.abstractmethod + def get_aws_security_credentials(self, context, request): + """Returns the AWS security credentials for the requested context. + + .. warning: This is not cached by the calling Google credential, so caching logic should be implemented in the supplier. + + Args: + context (google.auth.externalaccount.SupplierContext): The context object + containing information about the requested audience and subject token type. + request (google.auth.transport.Request): The object used to make + HTTP requests. + + Raises: + google.auth.exceptions.RefreshError: If an error is encountered during + security credential retrieval logic. + + Returns: + AwsSecurityCredentials: The requested AWS security credentials. + """ + raise NotImplementedError("") + + @abc.abstractmethod + def get_aws_region(self, context, request): + """Returns the AWS region for the requested context. + + Args: + context (google.auth.externalaccount.SupplierContext): The context object + containing information about the requested audience and subject token type. + request (google.auth.transport.Request): The object used to make + HTTP requests. + + Raises: + google.auth.exceptions.RefreshError: If an error is encountered during + region retrieval logic. + + Returns: + str: The AWS region. + """ + raise NotImplementedError("") + + +class _DefaultAwsSecurityCredentialsSupplier(AwsSecurityCredentialsSupplier): + """Default implementation of AWS security credentials supplier. Supports retrieving + credentials and region via EC2 metadata endpoints and environment variables. + """ + + def __init__(self, credential_source): + self._region_url = credential_source.get("region_url") + self._security_credentials_url = credential_source.get("url") + self._imdsv2_session_token_url = credential_source.get( + "imdsv2_session_token_url" + ) + + @_helpers.copy_docstring(AwsSecurityCredentialsSupplier) + def get_aws_security_credentials(self, context, request): + # Check environment variables for permanent credentials first. + # https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html + env_aws_access_key_id = os.environ.get(environment_vars.AWS_ACCESS_KEY_ID) + env_aws_secret_access_key = os.environ.get( + environment_vars.AWS_SECRET_ACCESS_KEY + ) + # This is normally not available for permanent credentials. + env_aws_session_token = os.environ.get(environment_vars.AWS_SESSION_TOKEN) + if env_aws_access_key_id and env_aws_secret_access_key: + return AwsSecurityCredentials( + env_aws_access_key_id, env_aws_secret_access_key, env_aws_session_token + ) + + imdsv2_session_token = self._get_imdsv2_session_token(request) + role_name = self._get_metadata_role_name(request, imdsv2_session_token) + + # Get security credentials. + credentials = self._get_metadata_security_credentials( + request, role_name, imdsv2_session_token + ) + + return AwsSecurityCredentials( + credentials.get("AccessKeyId"), + credentials.get("SecretAccessKey"), + credentials.get("Token"), + ) + + @_helpers.copy_docstring(AwsSecurityCredentialsSupplier) + def get_aws_region(self, context, request): + # The AWS metadata server is not available in some AWS environments + # such as AWS lambda. Instead, it is available via environment + # variable. + env_aws_region = os.environ.get(environment_vars.AWS_REGION) + if env_aws_region is not None: + return env_aws_region + + env_aws_region = os.environ.get(environment_vars.AWS_DEFAULT_REGION) + if env_aws_region is not None: + return env_aws_region + + if not self._region_url: + raise exceptions.RefreshError("Unable to determine AWS region") + + headers = None + imdsv2_session_token = self._get_imdsv2_session_token(request) + if imdsv2_session_token is not None: + headers = {"X-aws-ec2-metadata-token": imdsv2_session_token} + + response = request(url=self._region_url, method="GET", headers=headers) + + # Support both string and bytes type response.data. + response_body = ( + response.data.decode("utf-8") + if hasattr(response.data, "decode") + else response.data + ) + + if response.status != http_client.OK: + raise exceptions.RefreshError( + "Unable to retrieve AWS region: {}".format(response_body) + ) + + # This endpoint will return the region in format: us-east-2b. + # Only the us-east-2 part should be used. + return response_body[:-1] + + def _get_imdsv2_session_token(self, request): + if request is not None and self._imdsv2_session_token_url is not None: + headers = { + "X-aws-ec2-metadata-token-ttl-seconds": _IMDSV2_SESSION_TOKEN_TTL_SECONDS + } + + imdsv2_session_token_response = request( + url=self._imdsv2_session_token_url, method="PUT", headers=headers + ) + + if imdsv2_session_token_response.status != http_client.OK: + raise exceptions.RefreshError( + "Unable to retrieve AWS Session Token: {}".format( + imdsv2_session_token_response.data + ) + ) + + return imdsv2_session_token_response.data + else: + return None + + def _get_metadata_security_credentials( + self, request, role_name, imdsv2_session_token + ): + """Retrieves the AWS security credentials required for signing AWS + requests from the AWS metadata server. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + role_name (str): The AWS role name required by the AWS metadata + server security_credentials endpoint in order to return the + credentials. + imdsv2_session_token (str): The AWS IMDSv2 session token to be added as a + header in the requests to AWS metadata endpoint. + + Returns: + Mapping[str, str]: The AWS metadata server security credentials + response. + + Raises: + google.auth.exceptions.RefreshError: If an error occurs while + retrieving the AWS security credentials. + """ + if imdsv2_session_token is not None: + headers = {"X-aws-ec2-metadata-token": imdsv2_session_token} + else: + headers = None + + response = request( + url="{}/{}".format(self._security_credentials_url, role_name), + method="GET", + headers=headers, + ) + + # support both string and bytes type response.data + response_body = ( + response.data.decode("utf-8") + if hasattr(response.data, "decode") + else response.data + ) + + if response.status != http_client.OK: + raise exceptions.RefreshError( + "Unable to retrieve AWS security credentials: {}".format(response_body) + ) + + credentials_response = json.loads(response_body) + + return credentials_response + + def _get_metadata_role_name(self, request, imdsv2_session_token): + """Retrieves the AWS role currently attached to the current AWS + workload by querying the AWS metadata server. This is needed for the + AWS metadata server security credentials endpoint in order to retrieve + the AWS security credentials needed to sign requests to AWS APIs. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + imdsv2_session_token (str): The AWS IMDSv2 session token to be added as a + header in the requests to AWS metadata endpoint. + + Returns: + str: The AWS role name. + + Raises: + google.auth.exceptions.RefreshError: If an error occurs while + retrieving the AWS role name. + """ + if self._security_credentials_url is None: + raise exceptions.RefreshError( + "Unable to determine the AWS metadata server security credentials endpoint" + ) + + headers = None + if imdsv2_session_token is not None: + headers = {"X-aws-ec2-metadata-token": imdsv2_session_token} + + response = request( + url=self._security_credentials_url, method="GET", headers=headers + ) + + # support both string and bytes type response.data + response_body = ( + response.data.decode("utf-8") + if hasattr(response.data, "decode") + else response.data + ) + + if response.status != http_client.OK: + raise exceptions.RefreshError( + "Unable to retrieve AWS role name {}".format(response_body) + ) + + return response_body + + +class Credentials(external_account.Credentials): + """AWS external account credentials. + This is used to exchange serialized AWS signature v4 signed requests to + AWS STS GetCallerIdentity service for Google access tokens. + """ + + def __init__( + self, + audience, + subject_token_type, + token_url=external_account._DEFAULT_TOKEN_URL, + credential_source=None, + aws_security_credentials_supplier=None, + *args, + **kwargs + ): + """Instantiates an AWS workload external account credentials object. + + Args: + audience (str): The STS audience field. + subject_token_type (str): The subject token type based on the Oauth2.0 token exchange spec. + Expected values include:: + + “urn:ietf:params:aws:token-type:aws4_request” + + token_url (Optional [str]): The STS endpoint URL. If not provided, will default to "https://sts.googleapis.com/v1/token". + credential_source (Optional [Mapping]): The credential source dictionary used + to provide instructions on how to retrieve external credential to be exchanged for Google access tokens. + Either a credential source or an AWS security credentials supplier must be provided. + + Example credential_source for AWS credential:: + + { + "environment_id": "aws1", + "regional_cred_verification_url": "https://sts.{region}.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15", + "region_url": "http://169.254.169.254/latest/meta-data/placement/availability-zone", + "url": "http://169.254.169.254/latest/meta-data/iam/security-credentials", + imdsv2_session_token_url": "http://169.254.169.254/latest/api/token" + } + + aws_security_credentials_supplier (Optional [AwsSecurityCredentialsSupplier]): Optional AWS security credentials supplier. + This will be called to supply valid AWS security credentails which will then + be exchanged for Google access tokens. Either an AWS security credentials supplier + or a credential source must be provided. + args (List): Optional positional arguments passed into the underlying :meth:`~external_account.Credentials.__init__` method. + kwargs (Mapping): Optional keyword arguments passed into the underlying :meth:`~external_account.Credentials.__init__` method. + + Raises: + google.auth.exceptions.RefreshError: If an error is encountered during + access token retrieval logic. + ValueError: For invalid parameters. + + .. note:: Typically one of the helper constructors + :meth:`from_file` or + :meth:`from_info` are used instead of calling the constructor directly. + """ + super(Credentials, self).__init__( + audience=audience, + subject_token_type=subject_token_type, + token_url=token_url, + credential_source=credential_source, + *args, + **kwargs + ) + if credential_source is None and aws_security_credentials_supplier is None: + raise exceptions.InvalidValue( + "A valid credential source or AWS security credentials supplier must be provided." + ) + if ( + credential_source is not None + and aws_security_credentials_supplier is not None + ): + raise exceptions.InvalidValue( + "AWS credential cannot have both a credential source and an AWS security credentials supplier." + ) + + if aws_security_credentials_supplier: + self._aws_security_credentials_supplier = aws_security_credentials_supplier + # The regional cred verification URL would normally be provided through the credential source. So set it to the default one here. + self._cred_verification_url = ( + _DEFAULT_AWS_REGIONAL_CREDENTIAL_VERIFICATION_URL + ) + else: + environment_id = credential_source.get("environment_id") or "" + self._aws_security_credentials_supplier = ( + _DefaultAwsSecurityCredentialsSupplier(credential_source) + ) + self._cred_verification_url = credential_source.get( + "regional_cred_verification_url" + ) + + # Get the environment ID, i.e. "aws1". Currently, only one version supported (1). + matches = re.match(r"^(aws)([\d]+)$", environment_id) + if matches: + env_id, env_version = matches.groups() + else: + env_id, env_version = (None, None) + + if env_id != "aws" or self._cred_verification_url is None: + raise exceptions.InvalidResource( + "No valid AWS 'credential_source' provided" + ) + elif env_version is None or int(env_version) != 1: + raise exceptions.InvalidValue( + "aws version '{}' is not supported in the current build.".format( + env_version + ) + ) + + self._target_resource = audience + self._request_signer = None + + def retrieve_subject_token(self, request): + """Retrieves the subject token using the credential_source object. + The subject token is a serialized `AWS GetCallerIdentity signed request`_. + + The logic is summarized as: + + Retrieve the AWS region from the AWS_REGION or AWS_DEFAULT_REGION + environment variable or from the AWS metadata server availability-zone + if not found in the environment variable. + + Check AWS credentials in environment variables. If not found, retrieve + from the AWS metadata server security-credentials endpoint. + + When retrieving AWS credentials from the metadata server + security-credentials endpoint, the AWS role needs to be determined by + calling the security-credentials endpoint without any argument. Then the + credentials can be retrieved via: security-credentials/role_name + + Generate the signed request to AWS STS GetCallerIdentity action. + + Inject x-goog-cloud-target-resource into header and serialize the + signed request. This will be the subject-token to pass to GCP STS. + + .. _AWS GetCallerIdentity signed request: + https://cloud.google.com/iam/docs/access-resources-aws#exchange-token + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + Returns: + str: The retrieved subject token. + """ + + # Initialize the request signer if not yet initialized after determining + # the current AWS region. + if self._request_signer is None: + self._region = self._aws_security_credentials_supplier.get_aws_region( + self._supplier_context, request + ) + self._request_signer = RequestSigner(self._region) + + # Retrieve the AWS security credentials needed to generate the signed + # request. + aws_security_credentials = ( + self._aws_security_credentials_supplier.get_aws_security_credentials( + self._supplier_context, request + ) + ) + # Generate the signed request to AWS STS GetCallerIdentity API. + # Use the required regional endpoint. Otherwise, the request will fail. + request_options = self._request_signer.get_request_options( + aws_security_credentials, + self._cred_verification_url.replace("{region}", self._region), + "POST", + ) + # The GCP STS endpoint expects the headers to be formatted as: + # [ + # {key: 'x-amz-date', value: '...'}, + # {key: 'Authorization', value: '...'}, + # ... + # ] + # And then serialized as: + # quote(json.dumps({ + # url: '...', + # method: 'POST', + # headers: [{key: 'x-amz-date', value: '...'}, ...] + # })) + request_headers = request_options.get("headers") + # The full, canonical resource name of the workload identity pool + # provider, with or without the HTTPS prefix. + # Including this header as part of the signature is recommended to + # ensure data integrity. + request_headers["x-goog-cloud-target-resource"] = self._target_resource + + # Serialize AWS signed request. + aws_signed_req = {} + aws_signed_req["url"] = request_options.get("url") + aws_signed_req["method"] = request_options.get("method") + aws_signed_req["headers"] = [] + # Reformat header to GCP STS expected format. + for key in request_headers.keys(): + aws_signed_req["headers"].append( + {"key": key, "value": request_headers[key]} + ) + + return urllib.parse.quote( + json.dumps(aws_signed_req, separators=(",", ":"), sort_keys=True) + ) + + def _create_default_metrics_options(self): + metrics_options = super(Credentials, self)._create_default_metrics_options() + metrics_options["source"] = "aws" + if self._has_custom_supplier(): + metrics_options["source"] = "programmatic" + return metrics_options + + def _has_custom_supplier(self): + return self._credential_source is None + + def _constructor_args(self): + args = super(Credentials, self)._constructor_args() + # If a custom supplier was used, append it to the args dict. + if self._has_custom_supplier(): + args.update( + { + "aws_security_credentials_supplier": self._aws_security_credentials_supplier + } + ) + return args + + @classmethod + def from_info(cls, info, **kwargs): + """Creates an AWS Credentials instance from parsed external account info. + + Args: + info (Mapping[str, str]): The AWS external account info in Google + format. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.aws.Credentials: The constructed credentials. + + Raises: + ValueError: For invalid parameters. + """ + aws_security_credentials_supplier = info.get( + "aws_security_credentials_supplier" + ) + kwargs.update( + {"aws_security_credentials_supplier": aws_security_credentials_supplier} + ) + return super(Credentials, cls).from_info(info, **kwargs) + + @classmethod + def from_file(cls, filename, **kwargs): + """Creates an AWS Credentials instance from an external account json file. + + Args: + filename (str): The path to the AWS external account json file. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.aws.Credentials: The constructed credentials. + """ + return super(Credentials, cls).from_file(filename, **kwargs) diff --git a/intelliaide/vendor/google/auth/compute_engine/__init__.py b/intelliaide/vendor/google/auth/compute_engine/__init__.py new file mode 100644 index 0000000..7e1206f --- /dev/null +++ b/intelliaide/vendor/google/auth/compute_engine/__init__.py @@ -0,0 +1,22 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Google Compute Engine authentication.""" + +from google.auth.compute_engine._metadata import detect_gce_residency_linux +from google.auth.compute_engine.credentials import Credentials +from google.auth.compute_engine.credentials import IDTokenCredentials + + +__all__ = ["Credentials", "IDTokenCredentials", "detect_gce_residency_linux"] diff --git a/intelliaide/vendor/google/auth/compute_engine/_metadata.py b/intelliaide/vendor/google/auth/compute_engine/_metadata.py new file mode 100644 index 0000000..aae724a --- /dev/null +++ b/intelliaide/vendor/google/auth/compute_engine/_metadata.py @@ -0,0 +1,504 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Provides helper methods for talking to the Compute Engine metadata server. + +See https://cloud.google.com/compute/docs/metadata for more details. +""" + +import datetime +import http.client as http_client +import json +import logging +import os +from urllib.parse import urljoin + +import requests + +from google.auth import _helpers +from google.auth import environment_vars +from google.auth import exceptions +from google.auth import metrics +from google.auth import transport +from google.auth._exponential_backoff import ExponentialBackoff +from google.auth.compute_engine import _mtls + + +_LOGGER = logging.getLogger(__name__) + +_GCE_DEFAULT_MDS_IP = "169.254.169.254" +_GCE_DEFAULT_HOST = "metadata.google.internal" +_GCE_DEFAULT_MDS_HOSTS = [_GCE_DEFAULT_HOST, _GCE_DEFAULT_MDS_IP] + +# Environment variable GCE_METADATA_HOST is originally named +# GCE_METADATA_ROOT. For compatibility reasons, here it checks +# the new variable first; if not set, the system falls back +# to the old variable. +_GCE_METADATA_HOST = os.getenv(environment_vars.GCE_METADATA_HOST, None) +if not _GCE_METADATA_HOST: + _GCE_METADATA_HOST = os.getenv( + environment_vars.GCE_METADATA_ROOT, _GCE_DEFAULT_HOST + ) + + +def _validate_gce_mds_configured_environment(): + """Validates the GCE metadata server environment configuration for mTLS. + + mTLS is only supported when connecting to the default metadata server hosts. + If we are in strict mode (which requires mTLS), ensure that the metadata host + has not been overridden to a custom value (which means mTLS will fail). + + Raises: + google.auth.exceptions.MutualTLSChannelError: if the environment + configuration is invalid for mTLS. + """ + mode = _mtls._parse_mds_mode() + if mode == _mtls.MdsMtlsMode.STRICT: + # mTLS is only supported when connecting to the default metadata host. + # Raise an exception if we are in strict mode (which requires mTLS) + # but the metadata host has been overridden to a custom MDS. (which means mTLS will fail) + if _GCE_METADATA_HOST not in _GCE_DEFAULT_MDS_HOSTS: + raise exceptions.MutualTLSChannelError( + "Mutual TLS is required, but the metadata host has been overridden. " + "mTLS is only supported when connecting to the default metadata host." + ) + + +def _get_metadata_root(use_mtls: bool): + """Returns the metadata server root URL.""" + + scheme = "https" if use_mtls else "http" + return "{}://{}/computeMetadata/v1/".format(scheme, _GCE_METADATA_HOST) + + +def _get_metadata_ip_root(use_mtls: bool): + """Returns the metadata server IP root URL.""" + scheme = "https" if use_mtls else "http" + return "{}://{}".format( + scheme, os.getenv(environment_vars.GCE_METADATA_IP, _GCE_DEFAULT_MDS_IP) + ) + + +_METADATA_FLAVOR_HEADER = "metadata-flavor" +_METADATA_FLAVOR_VALUE = "Google" +_METADATA_HEADERS = {_METADATA_FLAVOR_HEADER: _METADATA_FLAVOR_VALUE} + +# Timeout in seconds to wait for the GCE metadata server when detecting the +# GCE environment. +try: + _METADATA_DEFAULT_TIMEOUT = int(os.getenv(environment_vars.GCE_METADATA_TIMEOUT, 3)) +except ValueError: # pragma: NO COVER + _METADATA_DEFAULT_TIMEOUT = 3 + +# The number of tries to perform when waiting for the GCE metadata server +# when detecting the GCE environment. +try: + _METADATA_DETECT_RETRIES = int( + os.getenv(environment_vars.GCE_METADATA_DETECT_RETRIES, 3) + ) +except ValueError: # pragma: NO COVER + _METADATA_DETECT_RETRIES = 3 + +# This is used to disable checking for the GCE metadata server and directly +# assuming it's not available. +_NO_GCE_CHECK = os.getenv(environment_vars.NO_GCE_CHECK) == "true" + +# Detect GCE Residency +_GOOGLE = "Google" +_GCE_PRODUCT_NAME_FILE = "/sys/class/dmi/id/product_name" + + +def is_on_gce(request): + """Checks to see if the code runs on Google Compute Engine + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + + Returns: + bool: True if the code runs on Google Compute Engine, False otherwise. + """ + if _NO_GCE_CHECK: + return False + + if ping(request): + return True + + if os.name == "nt": + # TODO: implement GCE residency detection on Windows + return False + + # Detect GCE residency on Linux + return detect_gce_residency_linux() + + +def detect_gce_residency_linux(): + """Detect Google Compute Engine residency by smbios check on Linux + + Returns: + bool: True if the GCE product name file is detected, False otherwise. + """ + try: + with open(_GCE_PRODUCT_NAME_FILE, "r") as file_obj: + content = file_obj.read().strip() + + except Exception: + return False + + return content.startswith(_GOOGLE) + + +def _prepare_request_for_mds(request, use_mtls=False) -> None: + """Prepares a request for the metadata server. + + This will check if mTLS should be used and mount the mTLS adapter if needed. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. If mTLS is enabled, and the request supports sessions, + the request will have the mTLS adapter mounted. Otherwise, there + will be no change. + use_mtls (bool): Whether to use mTLS for the request. + + + """ + # Only modify the request if mTLS is enabled, and request supports sessions. + if use_mtls and hasattr(request, "session"): + # Ensure the request has a session to mount the adapter to. + if not request.session: + request.session = requests.Session() + + adapter = _mtls.MdsMtlsAdapter() + # Mount the adapter for all default GCE metadata hosts. + for host in _GCE_DEFAULT_MDS_HOSTS: + request.session.mount(f"https://{host}/", adapter) + + +def ping( + request, timeout=_METADATA_DEFAULT_TIMEOUT, retry_count=_METADATA_DETECT_RETRIES +): + """Checks to see if the metadata server is available. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + timeout (int): How long to wait for the metadata server to respond. + retry_count (int): How many times to attempt connecting to metadata + server using above timeout. + + Returns: + bool: True if the metadata server is reachable, False otherwise. + """ + use_mtls = _mtls.should_use_mds_mtls() + _prepare_request_for_mds(request, use_mtls=use_mtls) + # NOTE: The explicit ``timeout`` is a workaround. The underlying + # issue is that resolving an unknown host on some networks will take + # 20-30 seconds; making this timeout short fixes the issue, but + # could lead to false negatives in the event that we are on GCE, but + # the metadata resolution was particularly slow. The latter case is + # "unlikely". + headers = _METADATA_HEADERS.copy() + headers[metrics.API_CLIENT_HEADER] = metrics.mds_ping() + + backoff = ExponentialBackoff(total_attempts=retry_count) + + for attempt in backoff: + try: + response = request( + url=_get_metadata_ip_root(use_mtls), + method="GET", + headers=headers, + timeout=timeout, + ) + + metadata_flavor = response.headers.get(_METADATA_FLAVOR_HEADER) + return ( + response.status == http_client.OK + and metadata_flavor == _METADATA_FLAVOR_VALUE + ) + + except exceptions.TransportError as e: + _LOGGER.warning( + "Compute Engine Metadata server unavailable on " + "attempt %s of %s. Reason: %s", + attempt, + retry_count, + e, + ) + + return False + + +def get( + request, + path, + root=None, + params=None, + recursive=False, + retry_count=5, + headers=None, + return_none_for_not_found_error=False, + timeout=_METADATA_DEFAULT_TIMEOUT, +): + """Fetch a resource from the metadata server. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + path (str): The resource to retrieve. For example, + ``'instance/service-accounts/default'``. + root (Optional[str]): The full path to the metadata server root. If not + provided, the default root will be used. + params (Optional[Mapping[str, str]]): A mapping of query parameter + keys to values. + recursive (bool): Whether to do a recursive query of metadata. See + https://cloud.google.com/compute/docs/metadata#aggcontents for more + details. + retry_count (int): How many times to attempt connecting to metadata + server using above timeout. + headers (Optional[Mapping[str, str]]): Headers for the request. + return_none_for_not_found_error (Optional[bool]): If True, returns None + for 404 error instead of throwing an exception. + timeout (int): How long to wait, in seconds for the metadata server to respond. + + Returns: + Union[Mapping, str]: If the metadata server returns JSON, a mapping of + the decoded JSON is returned. Otherwise, the response content is + returned as a string. + + Raises: + google.auth.exceptions.TransportError: if an error occurred while + retrieving metadata. + google.auth.exceptions.MutualTLSChannelError: if using mtls and the environment + configuration is invalid for mTLS (for example, the metadata host + has been overridden in strict mTLS mode). + + """ + use_mtls = _mtls.should_use_mds_mtls() + # Prepare the request object for mTLS if needed. + # This will create a new request object with the mTLS session. + _prepare_request_for_mds(request, use_mtls=use_mtls) + + if root is None: + root = _get_metadata_root(use_mtls) + + # mTLS is only supported when connecting to the default metadata host. + # If we are in strict mode (which requires mTLS), ensure that the metadata host + # has not been overridden to a non-default host value (which means mTLS will fail). + _validate_gce_mds_configured_environment() + + base_url = urljoin(root, path) + query_params = {} if params is None else params + + headers_to_use = _METADATA_HEADERS.copy() + if headers: + headers_to_use.update(headers) + + if recursive: + query_params["recursive"] = "true" + + url = _helpers.update_query(base_url, query_params) + + backoff = ExponentialBackoff(total_attempts=retry_count) + last_exception = None + for attempt in backoff: + try: + response = request( + url=url, method="GET", headers=headers_to_use, timeout=timeout + ) + if response.status in transport.DEFAULT_RETRYABLE_STATUS_CODES: + _LOGGER.warning( + "Compute Engine Metadata server unavailable on " + "attempt %s of %s. Response status: %s", + attempt, + retry_count, + response.status, + ) + last_exception = None + continue + else: + last_exception = None + break + + except exceptions.TransportError as e: + _LOGGER.warning( + "Compute Engine Metadata server unavailable on " + "attempt %s of %s. Reason: %s", + attempt, + retry_count, + e, + ) + last_exception = e + else: + if last_exception: + raise exceptions.TransportError( + "Failed to retrieve {} from the Google Compute Engine " + "metadata service. Compute Engine Metadata server unavailable. " + "Last exception: {}".format(url, last_exception) + ) from last_exception + else: + error_details = ( + response.data.decode("utf-8") + if hasattr(response.data, "decode") + else response.data + ) + raise exceptions.TransportError( + "Failed to retrieve {} from the Google Compute Engine " + "metadata service. Compute Engine Metadata server unavailable. " + "Response status: {}\nResponse details:\n{}".format( + url, response.status, error_details + ) + ) + + content = _helpers.from_bytes(response.data) + + if response.status == http_client.NOT_FOUND and return_none_for_not_found_error: + return None + + if response.status == http_client.OK: + if ( + _helpers.parse_content_type(response.headers["content-type"]) + == "application/json" + ): + try: + return json.loads(content) + except ValueError as caught_exc: + new_exc = exceptions.TransportError( + "Received invalid JSON from the Google Compute Engine " + "metadata service: {:.20}".format(content) + ) + raise new_exc from caught_exc + else: + return content + + raise exceptions.TransportError( + "Failed to retrieve {} from the Google Compute Engine " + "metadata service. Status: {} Response:\n{}".format( + url, response.status, response.data + ), + response, + ) + + +def get_project_id(request): + """Get the Google Cloud Project ID from the metadata server. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + + Returns: + str: The project ID + + Raises: + google.auth.exceptions.TransportError: if an error occurred while + retrieving metadata. + """ + return get(request, "project/project-id") + + +def get_universe_domain(request): + """Get the universe domain value from the metadata server. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + + Returns: + str: The universe domain value. If the universe domain endpoint is not + not found, return the default value, which is googleapis.com + + Raises: + google.auth.exceptions.TransportError: if an error other than + 404 occurs while retrieving metadata. + """ + universe_domain = get( + request, "universe/universe-domain", return_none_for_not_found_error=True + ) + if not universe_domain: + return "googleapis.com" + return universe_domain + + +def get_service_account_info(request, service_account="default"): + """Get information about a service account from the metadata server. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + service_account (str): The string 'default' or a service account email + address. The determines which service account for which to acquire + information. + + Returns: + Mapping: The service account's information, for example:: + + { + 'email': '...', + 'scopes': ['scope', ...], + 'aliases': ['default', '...'] + } + + Raises: + google.auth.exceptions.TransportError: if an error occurred while + retrieving metadata. + """ + path = "instance/service-accounts/{0}/".format(service_account) + # See https://cloud.google.com/compute/docs/metadata#aggcontents + # for more on the use of 'recursive'. + return get(request, path, params={"recursive": "true"}) + + +def get_service_account_token(request, service_account="default", scopes=None): + """Get the OAuth 2.0 access token for a service account. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + service_account (str): The string 'default' or a service account email + address. The determines which service account for which to acquire + an access token. + scopes (Optional[Union[str, List[str]]]): Optional string or list of + strings with auth scopes. + Returns: + Tuple[str, datetime]: The access token and its expiration. + + Raises: + google.auth.exceptions.TransportError: if an error occurred while + retrieving metadata. + """ + from google.auth import _agent_identity_utils + + params = {} + if scopes: + if not isinstance(scopes, str): + scopes = ",".join(scopes) + params["scopes"] = scopes + + cert = _agent_identity_utils.get_and_parse_agent_identity_certificate() + if cert: + if _agent_identity_utils.should_request_bound_token(cert): + fingerprint = _agent_identity_utils.calculate_certificate_fingerprint(cert) + params["bindCertificateFingerprint"] = fingerprint + + metrics_header = { + metrics.API_CLIENT_HEADER: metrics.token_request_access_token_mds() + } + + path = "instance/service-accounts/{0}/token".format(service_account) + token_json = get(request, path, params=params, headers=metrics_header) + token_expiry = _helpers.utcnow() + datetime.timedelta( + seconds=token_json["expires_in"] + ) + return token_json["access_token"], token_expiry diff --git a/intelliaide/vendor/google/auth/compute_engine/_mtls.py b/intelliaide/vendor/google/auth/compute_engine/_mtls.py new file mode 100644 index 0000000..a427e66 --- /dev/null +++ b/intelliaide/vendor/google/auth/compute_engine/_mtls.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +# +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +"""Mutual TLS for Google Compute Engine metadata server.""" + +from dataclasses import dataclass, field +import enum +import logging +import os +from pathlib import Path +import ssl +from urllib.parse import urlparse, urlunparse + +import requests +from requests.adapters import HTTPAdapter + +from google.auth import environment_vars, exceptions + + +_LOGGER = logging.getLogger(__name__) + +_WINDOWS_OS_NAME = "nt" + +# MDS mTLS certificate paths based on OS. +# Documentation to well known locations can be found at: +# https://cloud.google.com/compute/docs/metadata/overview#https-mds-certificates +_WINDOWS_MTLS_COMPONENTS_BASE_PATH = Path("C:/ProgramData/Google/ComputeEngine") +_MTLS_COMPONENTS_BASE_PATH = Path("/run/google-mds-mtls") + + +def _get_mds_root_crt_path(): + if os.name == _WINDOWS_OS_NAME: + return _WINDOWS_MTLS_COMPONENTS_BASE_PATH / "mds-mtls-root.crt" + else: + return _MTLS_COMPONENTS_BASE_PATH / "root.crt" + + +def _get_mds_client_combined_cert_path(): + if os.name == _WINDOWS_OS_NAME: + return _WINDOWS_MTLS_COMPONENTS_BASE_PATH / "mds-mtls-client.key" + else: + return _MTLS_COMPONENTS_BASE_PATH / "client.key" + + +@dataclass +class MdsMtlsConfig: + ca_cert_path: Path = field( + default_factory=_get_mds_root_crt_path + ) # path to CA certificate + client_combined_cert_path: Path = field( + default_factory=_get_mds_client_combined_cert_path + ) # path to file containing client certificate and key + + +def _certs_exist(mds_mtls_config: MdsMtlsConfig): + """Checks if the mTLS certificates exist.""" + return os.path.exists(mds_mtls_config.ca_cert_path) and os.path.exists( + mds_mtls_config.client_combined_cert_path + ) + + +class MdsMtlsMode(enum.Enum): + """MDS mTLS mode. Used to configure connection behavior when connecting to MDS. + + STRICT: Always use HTTPS/mTLS. If certificates are not found locally, an error will be returned. + NONE: Never use mTLS. Requests will use regular HTTP. + DEFAULT: Use mTLS if certificates are found locally, otherwise use regular HTTP. + """ + + STRICT = "strict" + NONE = "none" + DEFAULT = "default" + + +def _parse_mds_mode(): + """Parses the GCE_METADATA_MTLS_MODE environment variable.""" + mode_str = os.environ.get(environment_vars.GCE_METADATA_MTLS_MODE, "none").lower() + try: + return MdsMtlsMode(mode_str) + except ValueError: + raise ValueError( + "Invalid value for GCE_METADATA_MTLS_MODE. Must be one of 'strict', 'none', or 'default'." + ) + + +def should_use_mds_mtls(mds_mtls_config: MdsMtlsConfig = MdsMtlsConfig()): + """Determines if mTLS should be used for the metadata server.""" + mode = _parse_mds_mode() + if mode == MdsMtlsMode.STRICT: + if not _certs_exist(mds_mtls_config): + raise exceptions.MutualTLSChannelError( + "mTLS certificates not found in strict mode." + ) + return True + elif mode == MdsMtlsMode.NONE: + return False + else: # Default mode + return _certs_exist(mds_mtls_config) + + +class MdsMtlsAdapter(HTTPAdapter): + """An HTTP adapter that uses mTLS for the metadata server.""" + + def __init__( + self, mds_mtls_config: MdsMtlsConfig = MdsMtlsConfig(), *args, **kwargs + ): + self.ssl_context = ssl.create_default_context() + self.ssl_context.load_verify_locations(cafile=mds_mtls_config.ca_cert_path) + self.ssl_context.load_cert_chain( + certfile=mds_mtls_config.client_combined_cert_path + ) + super(MdsMtlsAdapter, self).__init__(*args, **kwargs) + + def init_poolmanager(self, *args, **kwargs): + kwargs["ssl_context"] = self.ssl_context + return super(MdsMtlsAdapter, self).init_poolmanager(*args, **kwargs) + + def proxy_manager_for(self, *args, **kwargs): + kwargs["ssl_context"] = self.ssl_context + return super(MdsMtlsAdapter, self).proxy_manager_for(*args, **kwargs) + + def send(self, request, **kwargs): + # If we are in strict mode, always use mTLS (no HTTP fallback) + if _parse_mds_mode() == MdsMtlsMode.STRICT: + return super(MdsMtlsAdapter, self).send(request, **kwargs) + + # In default mode, attempt mTLS first, then fallback to HTTP on failure + try: + response = super(MdsMtlsAdapter, self).send(request, **kwargs) + response.raise_for_status() + return response + except ( + ssl.SSLError, + requests.exceptions.SSLError, + requests.exceptions.HTTPError, + ) as e: + _LOGGER.warning( + "mTLS connection to Compute Engine Metadata server failed. " + "Falling back to standard HTTP. Reason: %s", + e, + ) + # Fallback to standard HTTP + parsed_original_url = urlparse(request.url) + http_fallback_url = urlunparse(parsed_original_url._replace(scheme="http")) + request.url = http_fallback_url + + # Use a standard HTTPAdapter for the fallback + http_adapter = HTTPAdapter() + return http_adapter.send(request, **kwargs) diff --git a/intelliaide/vendor/google/auth/compute_engine/credentials.py b/intelliaide/vendor/google/auth/compute_engine/credentials.py new file mode 100644 index 0000000..b91e06c --- /dev/null +++ b/intelliaide/vendor/google/auth/compute_engine/credentials.py @@ -0,0 +1,567 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Google Compute Engine credentials. + +This module provides authentication for an application running on Google +Compute Engine using the Compute Engine metadata server. + +""" + +import datetime +import logging +from typing import Optional, TYPE_CHECKING + + +from google.auth import _helpers +from google.auth import credentials +from google.auth import exceptions +from google.auth import iam +from google.auth import jwt +from google.auth import metrics +from google.auth.compute_engine import _metadata +from google.oauth2 import _client + +if TYPE_CHECKING: # pragma: NO COVER + import google.auth.transport + +_LOGGER = logging.getLogger(__name__) + + +class Credentials( + credentials.Scoped, + credentials.CredentialsWithQuotaProject, + credentials.CredentialsWithUniverseDomain, + credentials.CredentialsWithRegionalAccessBoundary, +): + """Compute Engine Credentials. + + These credentials use the Google Compute Engine metadata server to obtain + OAuth 2.0 access tokens associated with the instance's service account, + and are also used for Cloud Run, Flex and App Engine (except for the Python + 2.7 runtime, which is supported only on older versions of this library). + + For more information about Compute Engine authentication, including how + to configure scopes, see the `Compute Engine authentication + documentation`_. + + .. note:: On Compute Engine the metadata server ignores requested scopes. + On Cloud Run, Flex and App Engine the server honours requested scopes. + + .. _Compute Engine authentication documentation: + https://cloud.google.com/compute/docs/authentication#using + """ + + def __init__( + self, + service_account_email="default", + quota_project_id=None, + scopes=None, + default_scopes=None, + universe_domain=None, + trust_boundary=None, + ): + """ + Args: + service_account_email (str): The service account email to use, or + 'default'. A Compute Engine instance may have multiple service + accounts. + quota_project_id (Optional[str]): The project ID used for quota and + billing. + scopes (Optional[Sequence[str]]): The list of scopes for the credentials. + default_scopes (Optional[Sequence[str]]): Default scopes passed by a + Google client library. Use 'scopes' for user-defined scopes. + universe_domain (Optional[str]): The universe domain. If not + provided or None, credential will attempt to fetch the value + from metadata server. If metadata server doesn't have universe + domain endpoint, then the default googleapis.com will be used. + trust_boundary (Mapping[str,str]): A credential trust boundary. + """ + super(Credentials, self).__init__() + self._service_account_email = service_account_email + self._quota_project_id = quota_project_id + self._scopes = scopes + self._default_scopes = default_scopes + self._universe_domain_cached = False + if universe_domain: + self._universe_domain = universe_domain + self._universe_domain_cached = True + + self._trust_boundary = trust_boundary + + def _retrieve_info(self, request): + """Retrieve information about the service account. + + Updates the scopes and retrieves the full service account email. + + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + """ + info = _metadata.get_service_account_info( + request, service_account=self._service_account_email + ) + + if not info or "email" not in info: + raise exceptions.RefreshError( + "Unexpected response from metadata server: " + "service account info is missing 'email' field." + ) + + self._service_account_email = info["email"] + + # Don't override scopes requested by the user. + if self._scopes is None: + self._scopes = info.get("scopes") + + def _metric_header_for_usage(self): + return metrics.CRED_TYPE_SA_MDS + + def _perform_refresh_token(self, request): + """Refresh the access token and scopes. + + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + + Raises: + google.auth.exceptions.RefreshError: If the Compute Engine metadata + service can't be reached if if the instance has not + credentials. + """ + try: + self._retrieve_info(request) + scopes = self._scopes if self._scopes is not None else self._default_scopes + # Always fetch token with default service account email. + self.token, self.expiry = _metadata.get_service_account_token( + request, service_account="default", scopes=scopes + ) + except exceptions.TransportError as caught_exc: + new_exc = exceptions.RefreshError(caught_exc) + raise new_exc from caught_exc + + def _build_regional_access_boundary_lookup_url( + self, request: "Optional[google.auth.transport.Request]" = None # noqa: F821 + ): + """Builds and returns the URL for the regional access boundary lookup API for GCE. + + Args: + request (Optional[google.auth.transport.Request]): The object used to make + HTTP requests. + + Returns: + Optional[str]: The URL for the regional access boundary lookup, + or None if it fails to fetch the service account email from + the metadata server (due to TransportError or missing email field). + """ + # If the service account email is 'default', we need to get the + # actual email address from the metadata server. + if self._service_account_email == "default": + if request is None: + try: + from google.auth.transport import requests as google_auth_requests + + request = google_auth_requests.Request() + except ImportError: + from google.auth.transport import _http_client + + request = _http_client.Request() + try: + info = _metadata.get_service_account_info(request, "default") + if not info or "email" not in info: + _LOGGER.error( + "Unexpected response from metadata server: " + "service account info is missing 'email' field. Cannot build Regional Access Boundary lookup URL." + ) + return None + self._service_account_email = info["email"] + + except exceptions.TransportError as e: + # If fetching the service account email fails due to a transport error, + # it means we cannot build the regional access boundary lookup URL. + _LOGGER.error( + "Failed to get service account email to build Regional Access Boundary lookup URL: %s", + e, + ) + return None + + return iam._SERVICE_ACCOUNT_REGIONAL_ACCESS_BOUNDARY_LOOKUP_ENDPOINT.format( + service_account_email=self.service_account_email + ) + + @property + def service_account_email(self): + """The service account email. + + .. note:: This is not guaranteed to be set until :meth:`refresh` has been + called. + """ + return self._service_account_email + + @property + def requires_scopes(self): + return not self._scopes + + @property + def universe_domain(self): + if self._universe_domain_cached: + return self._universe_domain + + try: + from google.auth.transport import requests as google_auth_requests + + request = google_auth_requests.Request() + except ImportError: + from google.auth.transport import _http_client + + request = _http_client.Request() + + self._universe_domain = _metadata.get_universe_domain(request) + self._universe_domain_cached = True + return self._universe_domain + + @_helpers.copy_docstring(credentials.Credentials) + def get_cred_info(self): + return { + "credential_source": "metadata server", + "credential_type": "VM credentials", + "principal": self.service_account_email, + } + + def _make_copy(self): + creds = self.__class__( + service_account_email=self._service_account_email, + quota_project_id=self._quota_project_id, + scopes=self._scopes, + default_scopes=self._default_scopes, + universe_domain=self._universe_domain, + trust_boundary=self._trust_boundary, + ) + creds._universe_domain_cached = self._universe_domain_cached + self._copy_regional_access_boundary_manager(creds) + return creds + + @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) + def with_quota_project(self, quota_project_id): + creds = self._make_copy() + creds._quota_project_id = quota_project_id + return creds + + @_helpers.copy_docstring(credentials.Scoped) + def with_scopes(self, scopes, default_scopes=None): + # Compute Engine credentials can not be scoped (the metadata service + # ignores the scopes parameter). App Engine, Cloud Run and Flex support + # requesting scopes. + creds = self._make_copy() + creds._scopes = scopes + creds._default_scopes = default_scopes + return creds + + @_helpers.copy_docstring(credentials.CredentialsWithUniverseDomain) + def with_universe_domain(self, universe_domain): + creds = self._make_copy() + creds._universe_domain = universe_domain + creds._universe_domain_cached = True + return creds + + +_DEFAULT_TOKEN_LIFETIME_SECS = 3600 # 1 hour in seconds +_DEFAULT_TOKEN_URI = "https://www.googleapis.com/oauth2/v4/token" + + +class IDTokenCredentials( + credentials.CredentialsWithQuotaProject, + credentials.Signing, + credentials.CredentialsWithTokenUri, +): + """Open ID Connect ID Token-based service account credentials. + + These credentials relies on the default service account of a GCE instance. + + ID token can be requested from `GCE metadata server identity endpoint`_, IAM + token endpoint or other token endpoints you specify. If metadata server + identity endpoint is not used, the GCE instance must have been started with + a service account that has access to the IAM Cloud API. + + .. _GCE metadata server identity endpoint: + https://cloud.google.com/compute/docs/instances/verifying-instance-identity + """ + + def __init__( + self, + request, + target_audience, + token_uri=None, + additional_claims=None, + service_account_email=None, + signer=None, + use_metadata_identity_endpoint=False, + quota_project_id=None, + ): + """ + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + target_audience (str): The intended audience for these credentials, + used when requesting the ID Token. The ID Token's ``aud`` claim + will be set to this string. + token_uri (str): The OAuth 2.0 Token URI. + additional_claims (Mapping[str, str]): Any additional claims for + the JWT assertion used in the authorization grant. + service_account_email (str): Optional explicit service account to + use to sign JWT tokens. + By default, this is the default GCE service account. + signer (google.auth.crypt.Signer): The signer used to sign JWTs. + In case the signer is specified, the request argument will be + ignored. + use_metadata_identity_endpoint (bool): Whether to use GCE metadata + identity endpoint. For backward compatibility the default value + is False. If set to True, ``token_uri``, ``additional_claims``, + ``service_account_email``, ``signer`` argument should not be set; + otherwise ValueError will be raised. + quota_project_id (Optional[str]): The project ID used for quota and + billing. + + Raises: + ValueError: + If ``use_metadata_identity_endpoint`` is set to True, and one of + ``token_uri``, ``additional_claims``, ``service_account_email``, + ``signer`` arguments is set. + """ + super(IDTokenCredentials, self).__init__() + + self._quota_project_id = quota_project_id + self._use_metadata_identity_endpoint = use_metadata_identity_endpoint + self._target_audience = target_audience + + if use_metadata_identity_endpoint: + if token_uri or additional_claims or service_account_email or signer: + raise ValueError( + "If use_metadata_identity_endpoint is set, token_uri, " + "additional_claims, service_account_email, signer arguments" + " must not be set" + ) + self._token_uri = None + self._additional_claims = None + self._signer = None + + if service_account_email is None: + sa_info = _metadata.get_service_account_info(request) + self._service_account_email = sa_info["email"] + else: + self._service_account_email = service_account_email + + if not use_metadata_identity_endpoint: + if signer is None: + signer = iam.Signer( + request=request, + credentials=Credentials(), + service_account_email=self._service_account_email, + ) + self._signer = signer + self._token_uri = token_uri or _DEFAULT_TOKEN_URI + + if additional_claims is not None: + self._additional_claims = additional_claims + else: + self._additional_claims = {} + + def with_target_audience(self, target_audience): + """Create a copy of these credentials with the specified target + audience. + Args: + target_audience (str): The intended audience for these credentials, + used when requesting the ID Token. + Returns: + google.auth.service_account.IDTokenCredentials: A new credentials + instance. + """ + # since the signer is already instantiated, + # the request is not needed + if self._use_metadata_identity_endpoint: + return self.__class__( + None, + target_audience=target_audience, + use_metadata_identity_endpoint=True, + quota_project_id=self._quota_project_id, + ) + else: + return self.__class__( + None, + service_account_email=self._service_account_email, + token_uri=self._token_uri, + target_audience=target_audience, + additional_claims=self._additional_claims.copy(), + signer=self.signer, + use_metadata_identity_endpoint=False, + quota_project_id=self._quota_project_id, + ) + + @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) + def with_quota_project(self, quota_project_id): + # since the signer is already instantiated, + # the request is not needed + if self._use_metadata_identity_endpoint: + return self.__class__( + None, + target_audience=self._target_audience, + use_metadata_identity_endpoint=True, + quota_project_id=quota_project_id, + ) + else: + return self.__class__( + None, + service_account_email=self._service_account_email, + token_uri=self._token_uri, + target_audience=self._target_audience, + additional_claims=self._additional_claims.copy(), + signer=self.signer, + use_metadata_identity_endpoint=False, + quota_project_id=quota_project_id, + ) + + @_helpers.copy_docstring(credentials.CredentialsWithTokenUri) + def with_token_uri(self, token_uri): + # since the signer is already instantiated, + # the request is not needed + if self._use_metadata_identity_endpoint: + raise ValueError( + "If use_metadata_identity_endpoint is set, token_uri" " must not be set" + ) + else: + return self.__class__( + None, + service_account_email=self._service_account_email, + token_uri=token_uri, + target_audience=self._target_audience, + additional_claims=self._additional_claims.copy(), + signer=self.signer, + use_metadata_identity_endpoint=False, + quota_project_id=self.quota_project_id, + ) + + def _make_authorization_grant_assertion(self): + """Create the OAuth 2.0 assertion. + This assertion is used during the OAuth 2.0 grant to acquire an + ID token. + Returns: + bytes: The authorization grant assertion. + """ + now = _helpers.utcnow() + lifetime = datetime.timedelta(seconds=_DEFAULT_TOKEN_LIFETIME_SECS) + expiry = now + lifetime + + payload = { + "iat": _helpers.datetime_to_secs(now), + "exp": _helpers.datetime_to_secs(expiry), + # The issuer must be the service account email. + "iss": self.service_account_email, + # The audience must be the auth token endpoint's URI + "aud": self._token_uri, + # The target audience specifies which service the ID token is + # intended for. + "target_audience": self._target_audience, + } + + payload.update(self._additional_claims) + + token = jwt.encode(self._signer, payload) + + return token + + def _call_metadata_identity_endpoint(self, request): + """Request ID token from metadata identity endpoint. + + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + + Returns: + Tuple[str, datetime.datetime]: The ID token and the expiry of the ID token. + + Raises: + google.auth.exceptions.RefreshError: If the Compute Engine metadata + service can't be reached or if the instance has no credentials. + ValueError: If extracting expiry from the obtained ID token fails. + """ + try: + path = "instance/service-accounts/default/identity" + params = {"audience": self._target_audience, "format": "full"} + metrics_header = { + metrics.API_CLIENT_HEADER: metrics.token_request_id_token_mds() + } + id_token = _metadata.get( + request, path, params=params, headers=metrics_header + ) + except exceptions.TransportError as caught_exc: + new_exc = exceptions.RefreshError(caught_exc) + raise new_exc from caught_exc + + _, payload, _, _ = jwt._unverified_decode(id_token) + return id_token, _helpers.utcfromtimestamp(payload["exp"]) + + def refresh(self, request): + """Refreshes the ID token. + + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + + Raises: + google.auth.exceptions.RefreshError: If the credentials could + not be refreshed. + ValueError: If extracting expiry from the obtained ID token fails. + """ + if self._use_metadata_identity_endpoint: + self.token, self.expiry = self._call_metadata_identity_endpoint(request) + else: + assertion = self._make_authorization_grant_assertion() + access_token, expiry, _ = _client.id_token_jwt_grant( + request, self._token_uri, assertion + ) + self.token = access_token + self.expiry = expiry + + @property # type: ignore + @_helpers.copy_docstring(credentials.Signing) + def signer(self): + return self._signer + + def sign_bytes(self, message): + """Signs the given message. + + Args: + message (bytes): The message to sign. + + Returns: + bytes: The message's cryptographic signature. + + Raises: + ValueError: + Signer is not available if metadata identity endpoint is used. + """ + if self._use_metadata_identity_endpoint: + raise exceptions.InvalidOperation( + "Signer is not available if metadata identity endpoint is used" + ) + return self._signer.sign(message) + + @property + def service_account_email(self): + """The service account email.""" + return self._service_account_email + + @property + def signer_email(self): + return self._service_account_email diff --git a/intelliaide/vendor/google/auth/credentials.py b/intelliaide/vendor/google/auth/credentials.py new file mode 100644 index 0000000..4a686cb --- /dev/null +++ b/intelliaide/vendor/google/auth/credentials.py @@ -0,0 +1,786 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +"""Interfaces for credentials.""" + +import abc +from enum import Enum +import logging +import os +from typing import Dict, List, Optional, TYPE_CHECKING +from urllib.parse import urlparse +import warnings + + +from google.auth import _helpers, environment_vars +from google.auth import _regional_access_boundary_utils +from google.auth import exceptions +from google.auth import metrics +from google.auth._credentials_base import _BaseCredentials +from google.auth._refresh_worker import RefreshThreadManager + +if TYPE_CHECKING: # pragma: NO COVER + import google.auth.transport + +DEFAULT_UNIVERSE_DOMAIN = "googleapis.com" + +# These constants are deprecated and no longer used. +# They are kept solely for backward compatibility with older implementations. +NO_OP_TRUST_BOUNDARY_LOCATIONS: List[str] = [] +NO_OP_TRUST_BOUNDARY_ENCODED_LOCATIONS = "0x0" + +_LOGGER = logging.getLogger("google.auth._default") + + +class Credentials(_BaseCredentials): + """Base class for all credentials. + + All credentials have a :attr:`token` that is used for authentication and + may also optionally set an :attr:`expiry` to indicate when the token will + no longer be valid. + + Most credentials will be :attr:`invalid` until :meth:`refresh` is called. + Credentials can do this automatically before the first HTTP request in + :meth:`before_request`. + + Although the token and expiration will change as the credentials are + :meth:`refreshed ` and used, credentials should be considered + immutable. Various credentials will accept configuration such as private + keys, scopes, and other options. These options are not changeable after + construction. Some classes will provide mechanisms to copy the credentials + with modifications such as :meth:`ScopedCredentials.with_scopes`. + """ + + def __init__(self): + super(Credentials, self).__init__() + + self.expiry = None + """Optional[datetime]: When the token expires and is no longer valid. + If this is None, the token is assumed to never expire.""" + self._quota_project_id = None + """Optional[str]: Project to use for quota and billing purposes.""" + self._trust_boundary = None + """Optional[dict]: Cache of a trust boundary response which has a list + of allowed regions and an encoded string representation of credentials + trust boundary.""" + self._universe_domain = DEFAULT_UNIVERSE_DOMAIN + """Optional[str]: The universe domain value, default is googleapis.com + """ + + self._use_non_blocking_refresh = False + self._refresh_worker = RefreshThreadManager() + + @property + def expired(self): + """Checks if the credentials are expired. + + Note that credentials can be invalid but not expired because + Credentials with :attr:`expiry` set to None is considered to never + expire. + + .. deprecated:: v2.24.0 + Prefer checking :attr:`token_state` instead. + """ + if not self.expiry: + return False + # Remove some threshold from expiry to err on the side of reporting + # expiration early so that we avoid the 401-refresh-retry loop. + skewed_expiry = self.expiry - _helpers.REFRESH_THRESHOLD + return _helpers.utcnow() >= skewed_expiry + + @property + def valid(self): + """Checks the validity of the credentials. + + This is True if the credentials have a :attr:`token` and the token + is not :attr:`expired`. + + .. deprecated:: v2.24.0 + Prefer checking :attr:`token_state` instead. + """ + return self.token is not None and not self.expired + + @property + def token_state(self): + """ + See `:obj:`TokenState` + """ + if self.token is None: + return TokenState.INVALID + + # Credentials that can't expire are always treated as fresh. + if self.expiry is None: + return TokenState.FRESH + + expired = _helpers.utcnow() >= self.expiry + if expired: + return TokenState.INVALID + + is_stale = _helpers.utcnow() >= (self.expiry - _helpers.REFRESH_THRESHOLD) + if is_stale: + return TokenState.STALE + + return TokenState.FRESH + + @property + def quota_project_id(self): + """Project to use for quota and billing purposes.""" + return self._quota_project_id + + @property + def universe_domain(self): + """The universe domain value.""" + return self._universe_domain + + def get_cred_info(self): + """The credential information JSON. + + The credential information will be added to auth related error messages + by client library. + + Returns: + Mapping[str, str]: The credential information JSON. + """ + return None + + @abc.abstractmethod + def refresh(self, request): + """Refreshes the access token. + + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + + Raises: + google.auth.exceptions.RefreshError: If the credentials could + not be refreshed. + """ + # pylint: disable=missing-raises-doc + # (pylint doesn't recognize that this is abstract) + raise NotImplementedError("Refresh must be implemented") + + def _metric_header_for_usage(self): + """The x-goog-api-client header for token usage metric. + + This header will be added to the API service requests in before_request + method. For example, "cred-type/sa-jwt" means service account self + signed jwt access token is used in the API service request + authorization header. Children credentials classes need to override + this method to provide the header value, if the token usage metric is + needed. + + Returns: + str: The x-goog-api-client header value. + """ + return None + + def apply(self, headers, token=None): + """Apply the token to the authentication header. + + Args: + headers (Mapping): The HTTP request headers. + token (Optional[str]): If specified, overrides the current access + token. + """ + self._apply(headers, token) + if self.quota_project_id: + headers["x-goog-user-project"] = self.quota_project_id + + def _blocking_refresh(self, request): + if not self.valid: + self.refresh(request) + + def _non_blocking_refresh(self, request): + use_blocking_refresh_fallback = False + + if self.token_state == TokenState.STALE: + use_blocking_refresh_fallback = not self._refresh_worker.start_refresh( + self, request + ) + + if self.token_state == TokenState.INVALID or use_blocking_refresh_fallback: + self.refresh(request) + # If the blocking refresh succeeds then we can clear the error info + # on the background refresh worker, and perform refreshes in a + # background thread. + self._refresh_worker.clear_error() + + def before_request(self, request, method, url, headers): + """Performs credential-specific before request logic. + + Refreshes the credentials if necessary, then calls :meth:`apply` to + apply the token to the authentication header. + + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + method (str): The request's HTTP method or the RPC method being + invoked. + url (str): The request's URI or the RPC service's URI. + headers (Mapping): The request's headers. + """ + # pylint: disable=unused-argument + # (Subclasses may use these arguments to ascertain information about + # the http request.) + if self._use_non_blocking_refresh: + self._non_blocking_refresh(request) + else: + self._blocking_refresh(request) + + metrics.add_metric_header(headers, self._metric_header_for_usage()) + self.apply(headers) + + def with_non_blocking_refresh(self): + self._use_non_blocking_refresh = True + + +class CredentialsWithQuotaProject(Credentials): + """Abstract base for credentials supporting ``with_quota_project`` factory""" + + def with_quota_project(self, quota_project_id): + """Returns a copy of these credentials with a modified quota project. + + Args: + quota_project_id (str): The project to use for quota and + billing purposes + + Returns: + google.auth.credentials.Credentials: A new credentials instance. + """ + raise NotImplementedError("This credential does not support quota project.") + + def with_quota_project_from_environment(self): + quota_from_env = os.environ.get(environment_vars.GOOGLE_CLOUD_QUOTA_PROJECT) + if quota_from_env: + return self.with_quota_project(quota_from_env) + return self + + +class CredentialsWithTokenUri(Credentials): + """Abstract base for credentials supporting ``with_token_uri`` factory""" + + def with_token_uri(self, token_uri): + """Returns a copy of these credentials with a modified token uri. + + Args: + token_uri (str): The uri to use for fetching/exchanging tokens + + Returns: + google.auth.credentials.Credentials: A new credentials instance. + """ + raise NotImplementedError("This credential does not use token uri.") + + +class CredentialsWithUniverseDomain(Credentials): + """Abstract base for credentials supporting ``with_universe_domain`` factory""" + + def with_universe_domain(self, universe_domain): + """Returns a copy of these credentials with a modified universe domain. + + Args: + universe_domain (str): The universe domain to use + + Returns: + google.auth.credentials.Credentials: A new credentials instance. + """ + raise NotImplementedError( + "This credential does not support with_universe_domain." + ) + + +class CredentialsWithRegionalAccessBoundary(Credentials): + """Abstract base for credentials supporting regional access boundary configuration.""" + + def __init__(self): + super().__init__() + self._rab_manager = ( + _regional_access_boundary_utils._RegionalAccessBoundaryManager() + ) + + @property + def regional_access_boundary(self): + """Optional[str]: The encoded Regional Access Boundary locations.""" + return self._rab_manager._data.encoded_locations + + @property + def regional_access_boundary_expiry(self): + """Optional[datetime.datetime]: The expiration time of the Regional Access Boundary.""" + return self._rab_manager._data.expiry + + @abc.abstractmethod + def _perform_refresh_token(self, request): + """Refreshes the access token. + + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + + Raises: + google.auth.exceptions.RefreshError: If the credentials could + not be refreshed. + """ + raise NotImplementedError("_perform_refresh_token must be implemented") + + def with_trust_boundary(self, trust_boundary): + """Returns a copy of these credentials. + + .. deprecated:: + Manual Regional Access Boundary overrides are not supported. + This method is maintained for backwards compatibility and + returns a copy of the credentials without modifying the + Regional Access Boundary state. + + Args: + trust_boundary (Mapping[str, str]): Ignored. + + Returns: + google.auth.credentials.Credentials: A new credentials instance. + """ + import warnings + + warnings.warn( + "with_trust_boundary is deprecated and has no effect.", + DeprecationWarning, + stacklevel=2, + ) + make_copy = getattr(self, "_make_copy", None) + if make_copy: + return make_copy() + else: + raise NotImplementedError( + "This credential does not support trust boundaries." + ) + + def _copy_regional_access_boundary_manager(self, target): + """Copies the regional access boundary manager to another instance.""" + # Create a new manager for the clone to isolate background refresh locks and threads, + # but share the immutable data reference to avoid unnecessary initial lookups. + new_manager = _regional_access_boundary_utils._RegionalAccessBoundaryManager() + new_manager._data = self._rab_manager._data + target._rab_manager = new_manager + + def _set_regional_access_boundary(self, seed): + """Applies the regional_access_boundary provided via the seed on these + credentials. This is intended for internal use only as invalid + seeds would produce unexpected results until automatic recovery is supported. + Currently this is used by the gcloud CLI and therefore changes to the + contract MUST be backwards compatible (e.g. the method signature must be + unchanged and the credentials with the RAB set must be returned). + + + Returns: + google.auth.credentials.Credentials: The credentials instance. + """ + self._rab_manager.set_initial_regional_access_boundary( + encoded_locations=seed.get("encodedLocations", None), + expiry=seed.get("expiry", None), + ) + return self + + def _set_blocking_regional_access_boundary_lookup(self): + """Enables the blocking lookup mode on these credentials. + This is intended for internal use only as blocking lookup requires additional + care and consideration. Currently this is used by the gcloud CLI and + therefore changes to the contract MUST be backwards compatible (e.g. the + method signature must be unchanged and the credentials with the + blocking lookup flag set to true must be returned). + + Returns: + google.auth.credentials.Credentials: The credentials instance. + """ + self._rab_manager.enable_blocking_lookup() + return self + + def _maybe_start_regional_access_boundary_refresh(self, request, url): + """ + Starts a background thread to refresh the Regional Access Boundary if needed. + + This method checks if a refresh is necessary and if one is not already + in progress or in a cooldown period. If so, it starts a background + thread to perform the lookup. + + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + url (str): The URL of the request. + """ + try: + # Do not perform a lookup if the request is for a regional endpoint. + hostname = urlparse(url).hostname + if hostname and ( + hostname.endswith(".rep.googleapis.com") + or hostname.endswith(".rep.sandbox.googleapis.com") + ): + return + except (ValueError, TypeError): + # If the URL is malformed, proceed with the default lookup behavior. + pass + + # A refresh is only needed if the feature is enabled. + if not self._is_regional_access_boundary_lookup_required(): + return + + # Start the background refresh if needed. + self._rab_manager.maybe_start_refresh(self, request) + + def _is_regional_access_boundary_lookup_required(self): + """Checks if a Regional Access Boundary lookup is required. + + A lookup is required if the feature is enabled via an environment + variable and the universe domain is supported. + + Returns: + bool: True if a Regional Access Boundary lookup is required, False otherwise. + """ + # 1. Check if the feature is enabled. + if not _regional_access_boundary_utils.is_regional_access_boundary_enabled(): + return False + + # 2. Skip for non-default universe domains. + if self.universe_domain != DEFAULT_UNIVERSE_DOMAIN: + return False + + return True + + def apply(self, headers, token=None): + """Apply the token to the authentication header.""" + super().apply(headers, token) + self._rab_manager.apply_headers(headers) + + def before_request(self, request, method, url, headers): + """Refreshes the access token and triggers the Regional Access Boundary + lookup if necessary. + """ + if self._use_non_blocking_refresh: + self._non_blocking_refresh(request) + else: + self._blocking_refresh(request) + + self._maybe_start_regional_access_boundary_refresh(request, url) + + metrics.add_metric_header(headers, self._metric_header_for_usage()) + self.apply(headers) + + def refresh(self, request): + """Refreshes the access token. + + This method calls the subclass's token refresh logic. The Regional + Access Boundary is refreshed separately in a non-blocking way. + """ + self._perform_refresh_token(request) + + def _lookup_regional_access_boundary( + self, + request: "google.auth.transport.Request", # noqa: F821 + fail_fast: bool = False, + ) -> "Optional[Dict[str, str]]": + """Calls the Regional Access Boundary lookup API to retrieve the Regional Access Boundary information. + + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + fail_fast (bool): Whether the lookup should fail fast (short timeout, no retries). + + Returns: + Optional[Dict[str, str]]: The Regional Access Boundary information returned by the lookup API, or None if the lookup failed. + """ + from google.oauth2 import _client + + url = self._build_regional_access_boundary_lookup_url(request=request) + if not url: + _LOGGER.error("Failed to build Regional Access Boundary lookup URL.") + return None + + headers: Dict[str, str] = {} + self._apply(headers) + self._rab_manager.apply_headers(headers) + return _client._lookup_regional_access_boundary( + request, url, headers=headers, fail_fast=fail_fast + ) + + @abc.abstractmethod + def _build_regional_access_boundary_lookup_url( + self, request: "Optional[google.auth.transport.Request]" = None # noqa: F821 + ): + """ + Builds and returns the URL for the Regional Access Boundary lookup API. + + This method should be implemented by subclasses to provide the + specific URL based on the credential type and its properties. + + Args: + request (Optional[google.auth.transport.Request]): The object used + to make HTTP requests. In some subclasses, this may be used to + make an initial network call to resolve required metadata for the + URL. + + Returns: + str: The URL for the Regional Access Boundary lookup endpoint, or None + if lookup should be skipped (e.g., for non-applicable universe domains). + """ + raise NotImplementedError( + "_build_regional_access_boundary_lookup_url must be implemented" + ) + + +class AnonymousCredentials(Credentials): + """Credentials that do not provide any authentication information. + + These are useful in the case of services that support anonymous access or + local service emulators that do not use credentials. + """ + + @property + def expired(self): + """Returns `False`, anonymous credentials never expire.""" + return False + + @property + def valid(self): + """Returns `True`, anonymous credentials are always valid.""" + return True + + def refresh(self, request): + """Raises :class:``InvalidOperation``, anonymous credentials cannot be + refreshed.""" + raise exceptions.InvalidOperation("Anonymous credentials cannot be refreshed.") + + def apply(self, headers, token=None): + """Anonymous credentials do nothing to the request. + + The optional ``token`` argument is not supported. + + Raises: + google.auth.exceptions.InvalidValue: If a token was specified. + """ + if token is not None: + raise exceptions.InvalidValue("Anonymous credentials don't support tokens.") + + def before_request(self, request, method, url, headers): + """Anonymous credentials do nothing to the request.""" + + +class ReadOnlyScoped(metaclass=abc.ABCMeta): + """Interface for credentials whose scopes can be queried. + + OAuth 2.0-based credentials allow limiting access using scopes as described + in `RFC6749 Section 3.3`_. + If a credential class implements this interface then the credentials either + use scopes in their implementation. + + Some credentials require scopes in order to obtain a token. You can check + if scoping is necessary with :attr:`requires_scopes`:: + + if credentials.requires_scopes: + # Scoping is required. + credentials = credentials.with_scopes(scopes=['one', 'two']) + + Credentials that require scopes must either be constructed with scopes:: + + credentials = SomeScopedCredentials(scopes=['one', 'two']) + + Or must copy an existing instance using :meth:`with_scopes`:: + + scoped_credentials = credentials.with_scopes(scopes=['one', 'two']) + + Some credentials have scopes but do not allow or require scopes to be set, + these credentials can be used as-is. + + .. _RFC6749 Section 3.3: https://tools.ietf.org/html/rfc6749#section-3.3 + """ + + def __init__(self): + super(ReadOnlyScoped, self).__init__() + self._scopes = None + self._default_scopes = None + + @property + def scopes(self): + """Sequence[str]: the credentials' current set of scopes.""" + return self._scopes + + @property + def default_scopes(self): + """Sequence[str]: the credentials' current set of default scopes.""" + return self._default_scopes + + @abc.abstractproperty + def requires_scopes(self): + """True if these credentials require scopes to obtain an access token.""" + return False + + def has_scopes(self, scopes): + """Checks if the credentials have the given scopes. + + .. warning: This method is not guaranteed to be accurate if the + credentials are :attr:`~Credentials.invalid`. + + Args: + scopes (Sequence[str]): The list of scopes to check. + + Returns: + bool: True if the credentials have the given scopes. + """ + credential_scopes = ( + self._scopes if self._scopes is not None else self._default_scopes + ) + return set(scopes).issubset(set(credential_scopes or [])) + + +class Scoped(ReadOnlyScoped): + """Interface for credentials whose scopes can be replaced while copying. + + OAuth 2.0-based credentials allow limiting access using scopes as described + in `RFC6749 Section 3.3`_. + If a credential class implements this interface then the credentials either + use scopes in their implementation. + + Some credentials require scopes in order to obtain a token. You can check + if scoping is necessary with :attr:`requires_scopes`:: + + if credentials.requires_scopes: + # Scoping is required. + credentials = credentials.create_scoped(['one', 'two']) + + Credentials that require scopes must either be constructed with scopes:: + + credentials = SomeScopedCredentials(scopes=['one', 'two']) + + Or must copy an existing instance using :meth:`with_scopes`:: + + scoped_credentials = credentials.with_scopes(scopes=['one', 'two']) + + Some credentials have scopes but do not allow or require scopes to be set, + these credentials can be used as-is. + + .. _RFC6749 Section 3.3: https://tools.ietf.org/html/rfc6749#section-3.3 + """ + + @abc.abstractmethod + def with_scopes(self, scopes, default_scopes=None): + """Create a copy of these credentials with the specified scopes. + + Args: + scopes (Sequence[str]): The list of scopes to attach to the + current credentials. + + Raises: + NotImplementedError: If the credentials' scopes can not be changed. + This can be avoided by checking :attr:`requires_scopes` before + calling this method. + """ + raise NotImplementedError("This class does not require scoping.") + + +def with_scopes_if_required(credentials, scopes, default_scopes=None): + """Creates a copy of the credentials with scopes if scoping is required. + + This helper function is useful when you do not know (or care to know) the + specific type of credentials you are using (such as when you use + :func:`google.auth.default`). This function will call + :meth:`Scoped.with_scopes` if the credentials are scoped credentials and if + the credentials require scoping. Otherwise, it will return the credentials + as-is. + + Args: + credentials (google.auth.credentials.Credentials): The credentials to + scope if necessary. + scopes (Sequence[str]): The list of scopes to use. + default_scopes (Sequence[str]): Default scopes passed by a + Google client library. Use 'scopes' for user-defined scopes. + + Returns: + google.auth.credentials.Credentials: Either a new set of scoped + credentials, or the passed in credentials instance if no scoping + was required. + """ + if isinstance(credentials, Scoped) and credentials.requires_scopes: + return credentials.with_scopes(scopes, default_scopes=default_scopes) + else: + return credentials + + +class Signing(metaclass=abc.ABCMeta): + """Interface for credentials that can cryptographically sign messages.""" + + @abc.abstractmethod + def sign_bytes(self, message): + """Signs the given message. + + Args: + message (bytes): The message to sign. + + Returns: + bytes: The message's cryptographic signature. + """ + # pylint: disable=missing-raises-doc,redundant-returns-doc + # (pylint doesn't recognize that this is abstract) + raise NotImplementedError("Sign bytes must be implemented.") + + @abc.abstractproperty + def signer_email(self): + """Optional[str]: An email address that identifies the signer.""" + # pylint: disable=missing-raises-doc + # (pylint doesn't recognize that this is abstract) + raise NotImplementedError("Signer email must be implemented.") + + @abc.abstractproperty + def signer(self): + """google.auth.crypt.Signer: The signer used to sign bytes.""" + # pylint: disable=missing-raises-doc + # (pylint doesn't recognize that this is abstract) + raise NotImplementedError("Signer must be implemented.") + + +class TokenState(Enum): + """ + Tracks the state of a token. + FRESH: The token is valid. It is not expired or close to expired, or the token has no expiry. + STALE: The token is close to expired, and should be refreshed. The token can be used normally. + INVALID: The token is expired or invalid. The token cannot be used for a normal operation. + """ + + FRESH = 1 + STALE = 2 + INVALID = 3 + + +class CredentialsWithTrustBoundary(CredentialsWithRegionalAccessBoundary): + """Abstract base for credentials supporting legacy trust boundary configuration. + + .. deprecated:: + Use :class:`~google.auth.credentials.CredentialsWithRegionalAccessBoundary` instead. + """ + + def __init__(self): + super().__init__() + warnings.warn( + "CredentialsWithTrustBoundary is deprecated. Use CredentialsWithRegionalAccessBoundary.", + DeprecationWarning, + stacklevel=2, + ) + + @abc.abstractmethod + def _build_trust_boundary_lookup_url(self): + """Deprecated: Implement _build_regional_access_boundary_lookup_url instead.""" + raise NotImplementedError() + + def _build_regional_access_boundary_lookup_url(self, request=None): + warnings.warn( + "CredentialsWithTrustBoundary is deprecated. Use CredentialsWithRegionalAccessBoundary.", + DeprecationWarning, + stacklevel=2, + ) + return self._build_trust_boundary_lookup_url() diff --git a/intelliaide/vendor/google/auth/crypt/__init__.py b/intelliaide/vendor/google/auth/crypt/__init__.py new file mode 100644 index 0000000..e56bc7b --- /dev/null +++ b/intelliaide/vendor/google/auth/crypt/__init__.py @@ -0,0 +1,96 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Cryptography helpers for verifying and signing messages. + +The simplest way to verify signatures is using :func:`verify_signature`:: + + cert = open('certs.pem').read() + valid = crypt.verify_signature(message, signature, cert) + +If you're going to verify many messages with the same certificate, you can use +:class:`RSAVerifier`:: + + cert = open('certs.pem').read() + verifier = crypt.RSAVerifier.from_string(cert) + valid = verifier.verify(message, signature) + +To sign messages use :class:`RSASigner` with a private key:: + + private_key = open('private_key.pem').read() + signer = crypt.RSASigner.from_string(private_key) + signature = signer.sign(message) + +The code above also works for :class:`ES256Signer` and :class:`ES256Verifier`. +Note that these two classes are only available if your `cryptography` dependency +version is at least 1.4.0. +""" + +from google.auth.crypt import base +from google.auth.crypt import es +from google.auth.crypt import es256 +from google.auth.crypt import rsa + +EsSigner = es.EsSigner +EsVerifier = es.EsVerifier +ES256Signer = es256.ES256Signer +ES256Verifier = es256.ES256Verifier + + +# Aliases to maintain the v1.0.0 interface, as the crypt module was split +# into submodules. +Signer = base.Signer +Verifier = base.Verifier +RSASigner = rsa.RSASigner +RSAVerifier = rsa.RSAVerifier + + +def verify_signature(message, signature, certs, verifier_cls=rsa.RSAVerifier): + """Verify an RSA or ECDSA cryptographic signature. + + Checks that the provided ``signature`` was generated from ``bytes`` using + the private key associated with the ``cert``. + + Args: + message (Union[str, bytes]): The plaintext message. + signature (Union[str, bytes]): The cryptographic signature to check. + certs (Union[Sequence, str, bytes]): The certificate or certificates + to use to check the signature. + verifier_cls (Optional[~google.auth.crypt.base.Signer]): Which verifier + class to use for verification. This can be used to select different + algorithms, such as RSA or ECDSA. Default value is :class:`RSAVerifier`. + + Returns: + bool: True if the signature is valid, otherwise False. + """ + if isinstance(certs, (str, bytes)): + certs = [certs] + + for cert in certs: + verifier = verifier_cls.from_string(cert) + if verifier.verify(message, signature): + return True + return False + + +__all__ = [ + "EsSigner", + "EsVerifier", + "ES256Signer", + "ES256Verifier", + "RSASigner", + "RSAVerifier", + "Signer", + "Verifier", +] diff --git a/intelliaide/vendor/google/auth/crypt/_cryptography_rsa.py b/intelliaide/vendor/google/auth/crypt/_cryptography_rsa.py new file mode 100644 index 0000000..1a3e9ff --- /dev/null +++ b/intelliaide/vendor/google/auth/crypt/_cryptography_rsa.py @@ -0,0 +1,151 @@ +# Copyright 2017 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""RSA verifier and signer that use the ``cryptography`` library. + +This is a much faster implementation than the default (in +``google.auth.crypt._python_rsa``), which depends on the pure-Python +``rsa`` library. +""" + +import cryptography.exceptions +from cryptography.hazmat import backends +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives import serialization +from cryptography.hazmat.primitives.asymmetric import padding +import cryptography.x509 + +from google.auth import _helpers +from google.auth.crypt import base + +_CERTIFICATE_MARKER = b"-----BEGIN CERTIFICATE-----" +_BACKEND = backends.default_backend() +_PADDING = padding.PKCS1v15() +_SHA256 = hashes.SHA256() + + +class RSAVerifier(base.Verifier): + """Verifies RSA cryptographic signatures using public keys. + + Args: + public_key ( + cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey): + The public key used to verify signatures. + """ + + def __init__(self, public_key): + self._pubkey = public_key + + @_helpers.copy_docstring(base.Verifier) + def verify(self, message, signature): + message = _helpers.to_bytes(message) + try: + self._pubkey.verify(signature, message, _PADDING, _SHA256) + return True + except (ValueError, cryptography.exceptions.InvalidSignature): + return False + + @classmethod + def from_string(cls, public_key): + """Construct an Verifier instance from a public key or public + certificate string. + + Args: + public_key (Union[str, bytes]): The public key in PEM format or the + x509 public key certificate. + + Returns: + Verifier: The constructed verifier. + + Raises: + ValueError: If the public key can't be parsed. + """ + public_key_data = _helpers.to_bytes(public_key) + + if _CERTIFICATE_MARKER in public_key_data: + cert = cryptography.x509.load_pem_x509_certificate( + public_key_data, _BACKEND + ) + pubkey = cert.public_key() + + else: + pubkey = serialization.load_pem_public_key(public_key_data, _BACKEND) + + return cls(pubkey) + + +class RSASigner(base.Signer, base.FromServiceAccountMixin): + """Signs messages with an RSA private key. + + Args: + private_key ( + cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey): + The private key to sign with. + key_id (str): Optional key ID used to identify this private key. This + can be useful to associate the private key with its associated + public key or certificate. + """ + + def __init__(self, private_key, key_id=None): + self._key = private_key + self._key_id = key_id + + @property # type: ignore + @_helpers.copy_docstring(base.Signer) + def key_id(self): + return self._key_id + + @_helpers.copy_docstring(base.Signer) + def sign(self, message): + message = _helpers.to_bytes(message) + return self._key.sign(message, _PADDING, _SHA256) + + @classmethod + def from_string(cls, key, key_id=None): + """Construct a RSASigner from a private key in PEM format. + + Args: + key (Union[bytes, str]): Private key in PEM format. + key_id (str): An optional key id used to identify the private key. + + Returns: + google.auth.crypt._cryptography_rsa.RSASigner: The + constructed signer. + + Raises: + ValueError: If ``key`` is not ``bytes`` or ``str`` (unicode). + UnicodeDecodeError: If ``key`` is ``bytes`` but cannot be decoded + into a UTF-8 ``str``. + ValueError: If ``cryptography`` "Could not deserialize key data." + """ + key = _helpers.to_bytes(key) + private_key = serialization.load_pem_private_key( + key, password=None, backend=_BACKEND + ) + return cls(private_key, key_id=key_id) + + def __getstate__(self): + """Pickle helper that serializes the _key attribute.""" + state = self.__dict__.copy() + state["_key"] = self._key.private_bytes( + encoding=serialization.Encoding.PEM, + format=serialization.PrivateFormat.PKCS8, + encryption_algorithm=serialization.NoEncryption(), + ) + return state + + def __setstate__(self, state): + """Pickle helper that deserializes the _key attribute.""" + state["_key"] = serialization.load_pem_private_key(state["_key"], None) + self.__dict__.update(state) diff --git a/intelliaide/vendor/google/auth/crypt/_helpers.py b/intelliaide/vendor/google/auth/crypt/_helpers.py new file mode 100644 index 0000000..e69de29 diff --git a/intelliaide/vendor/google/auth/crypt/_python_rsa.py b/intelliaide/vendor/google/auth/crypt/_python_rsa.py new file mode 100644 index 0000000..d9305e8 --- /dev/null +++ b/intelliaide/vendor/google/auth/crypt/_python_rsa.py @@ -0,0 +1,199 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Pure-Python RSA cryptography implementation. + +Uses the ``rsa``, ``pyasn1`` and ``pyasn1_modules`` packages +to parse PEM files storing PKCS#1 or PKCS#8 keys as well as +certificates. There is no support for p12 files. +""" + +from __future__ import absolute_import + +import io +import warnings + +from pyasn1.codec.der import decoder # type: ignore +from pyasn1_modules import pem # type: ignore +from pyasn1_modules.rfc2459 import Certificate # type: ignore +from pyasn1_modules.rfc5208 import PrivateKeyInfo # type: ignore +import rsa # type: ignore + +from google.auth import _helpers +from google.auth import exceptions +from google.auth.crypt import base + +_POW2 = (128, 64, 32, 16, 8, 4, 2, 1) +_CERTIFICATE_MARKER = b"-----BEGIN CERTIFICATE-----" +_PKCS1_MARKER = ("-----BEGIN RSA PRIVATE KEY-----", "-----END RSA PRIVATE KEY-----") +_PKCS8_MARKER = ("-----BEGIN PRIVATE KEY-----", "-----END PRIVATE KEY-----") +_PKCS8_SPEC = PrivateKeyInfo() + +_warning_msg = ( + "The 'rsa' library is deprecated and will be removed in a future release. " + "Please migrate to 'cryptography'." +) + + +def _bit_list_to_bytes(bit_list): + """Converts an iterable of 1s and 0s to bytes. + + Combines the list 8 at a time, treating each group of 8 bits + as a single byte. + + Args: + bit_list (Sequence): Sequence of 1s and 0s. + + Returns: + bytes: The decoded bytes. + """ + num_bits = len(bit_list) + byte_vals = bytearray() + for start in range(0, num_bits, 8): + curr_bits = bit_list[start : start + 8] + char_val = sum(val * digit for val, digit in zip(_POW2, curr_bits)) + byte_vals.append(char_val) + return bytes(byte_vals) + + +class RSAVerifier(base.Verifier): + """Verifies RSA cryptographic signatures using public keys. + + .. deprecated:: + The `rsa` library has been archived. Please migrate to + `cryptography`. + + Args: + public_key (rsa.key.PublicKey): The public key used to verify + signatures. + """ + + def __init__(self, public_key): + warnings.warn( + _warning_msg, + category=DeprecationWarning, + stacklevel=2, + ) + self._pubkey = public_key + + @_helpers.copy_docstring(base.Verifier) + def verify(self, message, signature): + message = _helpers.to_bytes(message) + try: + return rsa.pkcs1.verify(message, signature, self._pubkey) + except (ValueError, rsa.pkcs1.VerificationError): + return False + + @classmethod + def from_string(cls, public_key): + """Construct an Verifier instance from a public key or public + certificate string. + + Args: + public_key (Union[str, bytes]): The public key in PEM format or the + x509 public key certificate. + + Returns: + google.auth.crypt._python_rsa.RSAVerifier: The constructed verifier. + + Raises: + ValueError: If the public_key can't be parsed. + """ + public_key = _helpers.to_bytes(public_key) + is_x509_cert = _CERTIFICATE_MARKER in public_key + + # If this is a certificate, extract the public key info. + if is_x509_cert: + der = rsa.pem.load_pem(public_key, "CERTIFICATE") + asn1_cert, remaining = decoder.decode(der, asn1Spec=Certificate()) + if remaining != b"": + raise exceptions.InvalidValue("Unused bytes", remaining) + + cert_info = asn1_cert["tbsCertificate"]["subjectPublicKeyInfo"] + key_bytes = _bit_list_to_bytes(cert_info["subjectPublicKey"]) + pubkey = rsa.PublicKey.load_pkcs1(key_bytes, "DER") + else: + pubkey = rsa.PublicKey.load_pkcs1(public_key, "PEM") + return cls(pubkey) + + +class RSASigner(base.Signer, base.FromServiceAccountMixin): + """Signs messages with an RSA private key. + + .. deprecated:: + The `rsa` library has been archived. Please migrate to + `cryptography`. + + Args: + private_key (rsa.key.PrivateKey): The private key to sign with. + key_id (str): Optional key ID used to identify this private key. This + can be useful to associate the private key with its associated + public key or certificate. + """ + + def __init__(self, private_key, key_id=None): + warnings.warn( + _warning_msg, + category=DeprecationWarning, + stacklevel=2, + ) + self._key = private_key + self._key_id = key_id + + @property # type: ignore + @_helpers.copy_docstring(base.Signer) + def key_id(self): + return self._key_id + + @_helpers.copy_docstring(base.Signer) + def sign(self, message): + message = _helpers.to_bytes(message) + return rsa.pkcs1.sign(message, self._key, "SHA-256") + + @classmethod + def from_string(cls, key, key_id=None): + """Construct an Signer instance from a private key in PEM format. + + Args: + key (str): Private key in PEM format. + key_id (str): An optional key id used to identify the private key. + + Returns: + google.auth.crypt.Signer: The constructed signer. + + Raises: + ValueError: If the key cannot be parsed as PKCS#1 or PKCS#8 in + PEM format. + """ + key = _helpers.from_bytes(key) # PEM expects str in Python 3 + marker_id, key_bytes = pem.readPemBlocksFromFile( + io.StringIO(key), _PKCS1_MARKER, _PKCS8_MARKER + ) + + # Key is in pkcs1 format. + if marker_id == 0: + private_key = rsa.key.PrivateKey.load_pkcs1(key_bytes, format="DER") + # Key is in pkcs8. + elif marker_id == 1: + key_info, remaining = decoder.decode(key_bytes, asn1Spec=_PKCS8_SPEC) + if remaining != b"": + raise exceptions.InvalidValue("Unused bytes", remaining) + private_key_info = key_info.getComponentByName("privateKey") + private_key = rsa.key.PrivateKey.load_pkcs1( + private_key_info.asOctets(), format="DER" + ) + else: + raise exceptions.MalformedError("No key could be detected.") + + return cls(private_key, key_id=key_id) diff --git a/intelliaide/vendor/google/auth/crypt/base.py b/intelliaide/vendor/google/auth/crypt/base.py new file mode 100644 index 0000000..ad871c3 --- /dev/null +++ b/intelliaide/vendor/google/auth/crypt/base.py @@ -0,0 +1,127 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Base classes for cryptographic signers and verifiers.""" + +import abc +import io +import json + +from google.auth import exceptions + +_JSON_FILE_PRIVATE_KEY = "private_key" +_JSON_FILE_PRIVATE_KEY_ID = "private_key_id" + + +class Verifier(metaclass=abc.ABCMeta): + """Abstract base class for crytographic signature verifiers.""" + + @abc.abstractmethod + def verify(self, message, signature): + """Verifies a message against a cryptographic signature. + + Args: + message (Union[str, bytes]): The message to verify. + signature (Union[str, bytes]): The cryptography signature to check. + + Returns: + bool: True if message was signed by the private key associated + with the public key that this object was constructed with. + """ + # pylint: disable=missing-raises-doc,redundant-returns-doc + # (pylint doesn't recognize that this is abstract) + raise NotImplementedError("Verify must be implemented") + + +class Signer(metaclass=abc.ABCMeta): + """Abstract base class for cryptographic signers.""" + + @abc.abstractproperty + def key_id(self): + """Optional[str]: The key ID used to identify this private key.""" + raise NotImplementedError("Key id must be implemented") + + @abc.abstractmethod + def sign(self, message): + """Signs a message. + + Args: + message (Union[str, bytes]): The message to be signed. + + Returns: + bytes: The signature of the message. + """ + # pylint: disable=missing-raises-doc,redundant-returns-doc + # (pylint doesn't recognize that this is abstract) + raise NotImplementedError("Sign must be implemented") + + +class FromServiceAccountMixin(metaclass=abc.ABCMeta): + """Mix-in to enable factory constructors for a Signer.""" + + @abc.abstractmethod + def from_string(cls, key, key_id=None): + """Construct an Signer instance from a private key string. + + Args: + key (str): Private key as a string. + key_id (str): An optional key id used to identify the private key. + + Returns: + google.auth.crypt.Signer: The constructed signer. + + Raises: + ValueError: If the key cannot be parsed. + """ + raise NotImplementedError("from_string must be implemented") + + @classmethod + def from_service_account_info(cls, info): + """Creates a Signer instance instance from a dictionary containing + service account info in Google format. + + Args: + info (Mapping[str, str]): The service account info in Google + format. + + Returns: + google.auth.crypt.Signer: The constructed signer. + + Raises: + ValueError: If the info is not in the expected format. + """ + if _JSON_FILE_PRIVATE_KEY not in info: + raise exceptions.MalformedError( + "The private_key field was not found in the service account " "info." + ) + + return cls.from_string( + info[_JSON_FILE_PRIVATE_KEY], info.get(_JSON_FILE_PRIVATE_KEY_ID) + ) + + @classmethod + def from_service_account_file(cls, filename): + """Creates a Signer instance from a service account .json file + in Google format. + + Args: + filename (str): The path to the service account .json file. + + Returns: + google.auth.crypt.Signer: The constructed signer. + """ + with io.open(filename, "r", encoding="utf-8") as json_file: + data = json.load(json_file) + + return cls.from_service_account_info(data) diff --git a/intelliaide/vendor/google/auth/crypt/es.py b/intelliaide/vendor/google/auth/crypt/es.py new file mode 100644 index 0000000..dbbe56b --- /dev/null +++ b/intelliaide/vendor/google/auth/crypt/es.py @@ -0,0 +1,221 @@ +# Copyright 2017 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""ECDSA verifier and signer that use the ``cryptography`` library. +""" + +from dataclasses import dataclass +from typing import Any, Dict, Optional, Union + +import cryptography.exceptions +from cryptography.hazmat import backends +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives import serialization +from cryptography.hazmat.primitives.asymmetric import ec +from cryptography.hazmat.primitives.asymmetric import padding +from cryptography.hazmat.primitives.asymmetric.utils import decode_dss_signature +from cryptography.hazmat.primitives.asymmetric.utils import encode_dss_signature +import cryptography.x509 + +from google.auth import _helpers +from google.auth.crypt import base + + +_CERTIFICATE_MARKER = b"-----BEGIN CERTIFICATE-----" +_BACKEND = backends.default_backend() +_PADDING = padding.PKCS1v15() + + +@dataclass +class _ESAttributes: + """A class that models ECDSA attributes. + + Attributes: + rs_size (int): Size for ASN.1 r and s size. + sha_algo (hashes.HashAlgorithm): Hash algorithm. + algorithm (str): Algorithm name. + """ + + rs_size: int + sha_algo: hashes.HashAlgorithm + algorithm: str + + @classmethod + def from_key( + cls, key: Union[ec.EllipticCurvePublicKey, ec.EllipticCurvePrivateKey] + ): + return cls.from_curve(key.curve) + + @classmethod + def from_curve(cls, curve: ec.EllipticCurve): + # ECDSA raw signature has (r||s) format where r,s are two + # integers of size 32 bytes for P-256 curve and 48 bytes + # for P-384 curve. For P-256 curve, we use SHA256 hash algo, + # and for P-384 curve we use SHA384 algo. + if isinstance(curve, ec.SECP384R1): + return cls(48, hashes.SHA384(), "ES384") + else: + # default to ES256 + return cls(32, hashes.SHA256(), "ES256") + + +class EsVerifier(base.Verifier): + """Verifies ECDSA cryptographic signatures using public keys. + + Args: + public_key ( + cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey): + The public key used to verify signatures. + """ + + def __init__(self, public_key: ec.EllipticCurvePublicKey) -> None: + self._pubkey = public_key + self._attributes = _ESAttributes.from_key(public_key) + + @_helpers.copy_docstring(base.Verifier) + def verify(self, message: bytes, signature: bytes) -> bool: + # First convert (r||s) raw signature to ASN1 encoded signature. + sig_bytes = _helpers.to_bytes(signature) + if len(sig_bytes) != self._attributes.rs_size * 2: + return False + r = int.from_bytes(sig_bytes[: self._attributes.rs_size], byteorder="big") + s = int.from_bytes(sig_bytes[self._attributes.rs_size :], byteorder="big") + asn1_sig = encode_dss_signature(r, s) + + message = _helpers.to_bytes(message) + try: + self._pubkey.verify(asn1_sig, message, ec.ECDSA(self._attributes.sha_algo)) + return True + except (ValueError, cryptography.exceptions.InvalidSignature): + return False + + @classmethod + def from_string(cls, public_key: Union[str, bytes]) -> "EsVerifier": + """Construct a Verifier instance from a public key or public + certificate string. + + Args: + public_key (Union[str, bytes]): The public key in PEM format or the + x509 public key certificate. + + Returns: + google.auth.crypt.Verifier: The constructed verifier. + + Raises: + ValueError: If the public key can't be parsed. + """ + public_key_data = _helpers.to_bytes(public_key) + + if _CERTIFICATE_MARKER in public_key_data: + cert = cryptography.x509.load_pem_x509_certificate( + public_key_data, _BACKEND + ) + pubkey = cert.public_key() # type: Any + + else: + pubkey = serialization.load_pem_public_key(public_key_data, _BACKEND) + + if not isinstance(pubkey, ec.EllipticCurvePublicKey): + raise TypeError("Expected public key of type EllipticCurvePublicKey") + + return cls(pubkey) + + +class EsSigner(base.Signer, base.FromServiceAccountMixin): + """Signs messages with an ECDSA private key. + + Args: + private_key ( + cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey): + The private key to sign with. + key_id (str): Optional key ID used to identify this private key. This + can be useful to associate the private key with its associated + public key or certificate. + """ + + def __init__( + self, private_key: ec.EllipticCurvePrivateKey, key_id: Optional[str] = None + ) -> None: + self._key = private_key + self._key_id = key_id + self._attributes = _ESAttributes.from_key(private_key) + + @property + def algorithm(self) -> str: + """Name of the algorithm used to sign messages. + Returns: + str: The algorithm name. + """ + return self._attributes.algorithm + + @property # type: ignore + @_helpers.copy_docstring(base.Signer) + def key_id(self) -> Optional[str]: + return self._key_id + + @_helpers.copy_docstring(base.Signer) + def sign(self, message: bytes) -> bytes: + message = _helpers.to_bytes(message) + asn1_signature = self._key.sign(message, ec.ECDSA(self._attributes.sha_algo)) + + # Convert ASN1 encoded signature to (r||s) raw signature. + (r, s) = decode_dss_signature(asn1_signature) + return r.to_bytes(self._attributes.rs_size, byteorder="big") + s.to_bytes( + self._attributes.rs_size, byteorder="big" + ) + + @classmethod + def from_string( + cls, key: Union[bytes, str], key_id: Optional[str] = None + ) -> "EsSigner": + """Construct a RSASigner from a private key in PEM format. + + Args: + key (Union[bytes, str]): Private key in PEM format. + key_id (str): An optional key id used to identify the private key. + + Returns: + google.auth.crypt._cryptography_rsa.RSASigner: The + constructed signer. + + Raises: + ValueError: If ``key`` is not ``bytes`` or ``str`` (unicode). + UnicodeDecodeError: If ``key`` is ``bytes`` but cannot be decoded + into a UTF-8 ``str``. + ValueError: If ``cryptography`` "Could not deserialize key data." + """ + key_bytes = _helpers.to_bytes(key) + private_key = serialization.load_pem_private_key( + key_bytes, password=None, backend=_BACKEND + ) + + if not isinstance(private_key, ec.EllipticCurvePrivateKey): + raise TypeError("Expected private key of type EllipticCurvePrivateKey") + + return cls(private_key, key_id=key_id) + + def __getstate__(self) -> Dict[str, Any]: + """Pickle helper that serializes the _key attribute.""" + state = self.__dict__.copy() + state["_key"] = self._key.private_bytes( + encoding=serialization.Encoding.PEM, + format=serialization.PrivateFormat.PKCS8, + encryption_algorithm=serialization.NoEncryption(), + ) + return state + + def __setstate__(self, state: Dict[str, Any]) -> None: + """Pickle helper that deserializes the _key attribute.""" + state["_key"] = serialization.load_pem_private_key(state["_key"], None) + self.__dict__.update(state) diff --git a/intelliaide/vendor/google/auth/crypt/es256.py b/intelliaide/vendor/google/auth/crypt/es256.py new file mode 100644 index 0000000..e7bda5d --- /dev/null +++ b/intelliaide/vendor/google/auth/crypt/es256.py @@ -0,0 +1,45 @@ +# Copyright 2017 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""ECDSA (ES256) verifier and signer that use the ``cryptography`` library. +""" + +from google.auth.crypt.es import EsSigner +from google.auth.crypt.es import EsVerifier + + +class ES256Verifier(EsVerifier): + """Verifies ECDSA cryptographic signatures using public keys. + + Args: + public_key (cryptography.hazmat.primitives.asymmetric.ec.ECDSAPublicKey): The public key used to verify + signatures. + """ + + pass + + +class ES256Signer(EsSigner): + """Signs messages with an ECDSA private key. + + Args: + private_key ( + cryptography.hazmat.primitives.asymmetric.ec.ECDSAPrivateKey): + The private key to sign with. + key_id (str): Optional key ID used to identify this private key. This + can be useful to associate the private key with its associated + public key or certificate. + """ + + pass diff --git a/intelliaide/vendor/google/auth/crypt/rsa.py b/intelliaide/vendor/google/auth/crypt/rsa.py new file mode 100644 index 0000000..639be90 --- /dev/null +++ b/intelliaide/vendor/google/auth/crypt/rsa.py @@ -0,0 +1,132 @@ +# Copyright 2017 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +RSA cryptography signer and verifier. + +This file provides a shared wrapper, that defers to _python_rsa or _cryptography_rsa +for implmentations using different third party libraries +""" + +from cryptography.hazmat.primitives.asymmetric.rsa import RSAPrivateKey +from cryptography.hazmat.primitives.asymmetric.rsa import RSAPublicKey + +from google.auth import _helpers +from google.auth.crypt import _cryptography_rsa +from google.auth.crypt import base + +RSA_KEY_MODULE_PREFIX = "rsa.key" + + +class RSAVerifier(base.Verifier): + """Verifies RSA cryptographic signatures using public keys. + + Args: + public_key (Union["rsa.key.PublicKey", cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey]): + The public key used to verify signatures. + Raises: + ImportError: if called with an rsa.key.PublicKey, when the rsa library is not installed + ValueError: if an unrecognized public key is provided + """ + + def __init__(self, public_key): + module_str = public_key.__class__.__module__ + if isinstance(public_key, RSAPublicKey): + impl_lib = _cryptography_rsa + elif module_str.startswith(RSA_KEY_MODULE_PREFIX): + from google.auth.crypt import _python_rsa + + impl_lib = _python_rsa + else: + raise ValueError(f"unrecognized public key type: {type(public_key)}") + self._impl = impl_lib.RSAVerifier(public_key) + + @_helpers.copy_docstring(base.Verifier) + def verify(self, message, signature): + return self._impl.verify(message, signature) + + @classmethod + def from_string(cls, public_key): + """Construct a Verifier instance from a public key or public + certificate string. + + Args: + public_key (Union[str, bytes]): The public key in PEM format or the + x509 public key certificate. + + Returns: + google.auth.crypt.Verifier: The constructed verifier. + + Raises: + ValueError: If the public_key can't be parsed. + """ + instance = cls.__new__(cls) + instance._impl = _cryptography_rsa.RSAVerifier.from_string(public_key) + return instance + + +class RSASigner(base.Signer, base.FromServiceAccountMixin): + """Signs messages with an RSA private key. + + Args: + private_key (Union["rsa.key.PrivateKey", cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey]): + The private key to sign with. + key_id (str): Optional key ID used to identify this private key. This + can be useful to associate the private key with its associated + public key or certificate. + + Raises: + ImportError: if called with an rsa.key.PrivateKey, when the rsa library is not installed + ValueError: if an unrecognized public key is provided + """ + + def __init__(self, private_key, key_id=None): + module_str = private_key.__class__.__module__ + if isinstance(private_key, RSAPrivateKey): + impl_lib = _cryptography_rsa + elif module_str.startswith(RSA_KEY_MODULE_PREFIX): + from google.auth.crypt import _python_rsa + + impl_lib = _python_rsa + else: + raise ValueError(f"unrecognized private key type: {type(private_key)}") + self._impl = impl_lib.RSASigner(private_key, key_id=key_id) + + @property # type: ignore + @_helpers.copy_docstring(base.Signer) + def key_id(self): + return self._impl.key_id + + @_helpers.copy_docstring(base.Signer) + def sign(self, message): + return self._impl.sign(message) + + @classmethod + def from_string(cls, key, key_id=None): + """Construct a Signer instance from a private key in PEM format. + + Args: + key (str): Private key in PEM format. + key_id (str): An optional key id used to identify the private key. + + Returns: + google.auth.crypt.Signer: The constructed signer. + + Raises: + ValueError: If the key cannot be parsed as PKCS#1 or PKCS#8 in + PEM format. + """ + instance = cls.__new__(cls) + instance._impl = _cryptography_rsa.RSASigner.from_string(key, key_id=key_id) + return instance diff --git a/intelliaide/vendor/google/auth/downscoped.py b/intelliaide/vendor/google/auth/downscoped.py new file mode 100644 index 0000000..ea75be9 --- /dev/null +++ b/intelliaide/vendor/google/auth/downscoped.py @@ -0,0 +1,512 @@ +# Copyright 2021 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Downscoping with Credential Access Boundaries + +This module provides the ability to downscope credentials using +`Downscoping with Credential Access Boundaries`_. This is useful to restrict the +Identity and Access Management (IAM) permissions that a short-lived credential +can use. + +To downscope permissions of a source credential, a Credential Access Boundary +that specifies which resources the new credential can access, as well as +an upper bound on the permissions that are available on each resource, has to +be defined. A downscoped credential can then be instantiated using the source +credential and the Credential Access Boundary. + +The common pattern of usage is to have a token broker with elevated access +generate these downscoped credentials from higher access source credentials and +pass the downscoped short-lived access tokens to a token consumer via some +secure authenticated channel for limited access to Google Cloud Storage +resources. + +For example, a token broker can be set up on a server in a private network. +Various workloads (token consumers) in the same network will send authenticated +requests to that broker for downscoped tokens to access or modify specific google +cloud storage buckets. + +The broker will instantiate downscoped credentials instances that can be used to +generate short lived downscoped access tokens that can be passed to the token +consumer. These downscoped access tokens can be injected by the consumer into +google.oauth2.Credentials and used to initialize a storage client instance to +access Google Cloud Storage resources with restricted access. + +Note: Only Cloud Storage supports Credential Access Boundaries. Other Google +Cloud services do not support this feature. + +.. _Downscoping with Credential Access Boundaries: https://cloud.google.com/iam/docs/downscoping-short-lived-credentials +""" + +import datetime + +from google.auth import _helpers +from google.auth import credentials +from google.auth import exceptions +from google.oauth2 import sts + +# The maximum number of access boundary rules a Credential Access Boundary can +# contain. +_MAX_ACCESS_BOUNDARY_RULES_COUNT = 10 +# The token exchange grant_type used for exchanging credentials. +_STS_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:token-exchange" +# The token exchange requested_token_type. This is always an access_token. +_STS_REQUESTED_TOKEN_TYPE = "urn:ietf:params:oauth:token-type:access_token" +# The STS token URL used to exchanged a short lived access token for a downscoped one. +_STS_TOKEN_URL_PATTERN = "https://sts.{}/v1/token" +# The subject token type to use when exchanging a short lived access token for a +# downscoped token. +_STS_SUBJECT_TOKEN_TYPE = "urn:ietf:params:oauth:token-type:access_token" + + +class CredentialAccessBoundary(object): + """Defines a Credential Access Boundary which contains a list of access boundary + rules. Each rule contains information on the resource that the rule applies to, + the upper bound of the permissions that are available on that resource and an + optional condition to further restrict permissions. + """ + + def __init__(self, rules=[]): + """Instantiates a Credential Access Boundary. A Credential Access Boundary + can contain up to 10 access boundary rules. + + Args: + rules (Sequence[google.auth.downscoped.AccessBoundaryRule]): The list of + access boundary rules limiting the access that a downscoped credential + will have. + Raises: + InvalidType: If any of the rules are not a valid type. + InvalidValue: If the provided rules exceed the maximum allowed. + """ + self.rules = rules + + @property + def rules(self): + """Returns the list of access boundary rules defined on the Credential + Access Boundary. + + Returns: + Tuple[google.auth.downscoped.AccessBoundaryRule, ...]: The list of access + boundary rules defined on the Credential Access Boundary. These are returned + as an immutable tuple to prevent modification. + """ + return tuple(self._rules) + + @rules.setter + def rules(self, value): + """Updates the current rules on the Credential Access Boundary. This will overwrite + the existing set of rules. + + Args: + value (Sequence[google.auth.downscoped.AccessBoundaryRule]): The list of + access boundary rules limiting the access that a downscoped credential + will have. + Raises: + InvalidType: If any of the rules are not a valid type. + InvalidValue: If the provided rules exceed the maximum allowed. + """ + if len(value) > _MAX_ACCESS_BOUNDARY_RULES_COUNT: + raise exceptions.InvalidValue( + "Credential access boundary rules can have a maximum of {} rules.".format( + _MAX_ACCESS_BOUNDARY_RULES_COUNT + ) + ) + for access_boundary_rule in value: + if not isinstance(access_boundary_rule, AccessBoundaryRule): + raise exceptions.InvalidType( + "List of rules provided do not contain a valid 'google.auth.downscoped.AccessBoundaryRule'." + ) + # Make a copy of the original list. + self._rules = list(value) + + def add_rule(self, rule): + """Adds a single access boundary rule to the existing rules. + + Args: + rule (google.auth.downscoped.AccessBoundaryRule): The access boundary rule, + limiting the access that a downscoped credential will have, to be added to + the existing rules. + Raises: + InvalidType: If any of the rules are not a valid type. + InvalidValue: If the provided rules exceed the maximum allowed. + """ + if len(self.rules) == _MAX_ACCESS_BOUNDARY_RULES_COUNT: + raise exceptions.InvalidValue( + "Credential access boundary rules can have a maximum of {} rules.".format( + _MAX_ACCESS_BOUNDARY_RULES_COUNT + ) + ) + if not isinstance(rule, AccessBoundaryRule): + raise exceptions.InvalidType( + "The provided rule does not contain a valid 'google.auth.downscoped.AccessBoundaryRule'." + ) + self._rules.append(rule) + + def to_json(self): + """Generates the dictionary representation of the Credential Access Boundary. + This uses the format expected by the Security Token Service API as documented in + `Defining a Credential Access Boundary`_. + + .. _Defining a Credential Access Boundary: + https://cloud.google.com/iam/docs/downscoping-short-lived-credentials#define-boundary + + Returns: + Mapping: Credential Access Boundary Rule represented in a dictionary object. + """ + rules = [] + for access_boundary_rule in self.rules: + rules.append(access_boundary_rule.to_json()) + + return {"accessBoundary": {"accessBoundaryRules": rules}} + + +class AccessBoundaryRule(object): + """Defines an access boundary rule which contains information on the resource that + the rule applies to, the upper bound of the permissions that are available on that + resource and an optional condition to further restrict permissions. + """ + + def __init__( + self, available_resource, available_permissions, availability_condition=None + ): + """Instantiates a single access boundary rule. + + Args: + available_resource (str): The full resource name of the Cloud Storage bucket + that the rule applies to. Use the format + "//storage.googleapis.com/projects/_/buckets/bucket-name". + available_permissions (Sequence[str]): A list defining the upper bound that + the downscoped token will have on the available permissions for the + resource. Each value is the identifier for an IAM predefined role or + custom role, with the prefix "inRole:". For example: + "inRole:roles/storage.objectViewer". + Only the permissions in these roles will be available. + availability_condition (Optional[google.auth.downscoped.AvailabilityCondition]): + Optional condition that restricts the availability of permissions to + specific Cloud Storage objects. + + Raises: + InvalidType: If any of the parameters are not of the expected types. + InvalidValue: If any of the parameters are not of the expected values. + """ + self.available_resource = available_resource + self.available_permissions = available_permissions + self.availability_condition = availability_condition + + @property + def available_resource(self): + """Returns the current available resource. + + Returns: + str: The current available resource. + """ + return self._available_resource + + @available_resource.setter + def available_resource(self, value): + """Updates the current available resource. + + Args: + value (str): The updated value of the available resource. + + Raises: + google.auth.exceptions.InvalidType: If the value is not a string. + """ + if not isinstance(value, str): + raise exceptions.InvalidType( + "The provided available_resource is not a string." + ) + self._available_resource = value + + @property + def available_permissions(self): + """Returns the current available permissions. + + Returns: + Tuple[str, ...]: The current available permissions. These are returned + as an immutable tuple to prevent modification. + """ + return tuple(self._available_permissions) + + @available_permissions.setter + def available_permissions(self, value): + """Updates the current available permissions. + + Args: + value (Sequence[str]): The updated value of the available permissions. + + Raises: + InvalidType: If the value is not a list of strings. + InvalidValue: If the value is not valid. + """ + for available_permission in value: + if not isinstance(available_permission, str): + raise exceptions.InvalidType( + "Provided available_permissions are not a list of strings." + ) + if available_permission.find("inRole:") != 0: + raise exceptions.InvalidValue( + "available_permissions must be prefixed with 'inRole:'." + ) + # Make a copy of the original list. + self._available_permissions = list(value) + + @property + def availability_condition(self): + """Returns the current availability condition. + + Returns: + Optional[google.auth.downscoped.AvailabilityCondition]: The current + availability condition. + """ + return self._availability_condition + + @availability_condition.setter + def availability_condition(self, value): + """Updates the current availability condition. + + Args: + value (Optional[google.auth.downscoped.AvailabilityCondition]): The updated + value of the availability condition. + + Raises: + google.auth.exceptions.InvalidType: If the value is not of type google.auth.downscoped.AvailabilityCondition + or None. + """ + if not isinstance(value, AvailabilityCondition) and value is not None: + raise exceptions.InvalidType( + "The provided availability_condition is not a 'google.auth.downscoped.AvailabilityCondition' or None." + ) + self._availability_condition = value + + def to_json(self): + """Generates the dictionary representation of the access boundary rule. + This uses the format expected by the Security Token Service API as documented in + `Defining a Credential Access Boundary`_. + + .. _Defining a Credential Access Boundary: + https://cloud.google.com/iam/docs/downscoping-short-lived-credentials#define-boundary + + Returns: + Mapping: The access boundary rule represented in a dictionary object. + """ + json = { + "availablePermissions": list(self.available_permissions), + "availableResource": self.available_resource, + } + if self.availability_condition: + json["availabilityCondition"] = self.availability_condition.to_json() + return json + + +class AvailabilityCondition(object): + """An optional condition that can be used as part of a Credential Access Boundary + to further restrict permissions.""" + + def __init__(self, expression, title=None, description=None): + """Instantiates an availability condition using the provided expression and + optional title or description. + + Args: + expression (str): A condition expression that specifies the Cloud Storage + objects where permissions are available. For example, this expression + makes permissions available for objects whose name starts with "customer-a": + "resource.name.startsWith('projects/_/buckets/example-bucket/objects/customer-a')" + title (Optional[str]): An optional short string that identifies the purpose of + the condition. + description (Optional[str]): Optional details about the purpose of the condition. + + Raises: + InvalidType: If any of the parameters are not of the expected types. + InvalidValue: If any of the parameters are not of the expected values. + """ + self.expression = expression + self.title = title + self.description = description + + @property + def expression(self): + """Returns the current condition expression. + + Returns: + str: The current conditon expression. + """ + return self._expression + + @expression.setter + def expression(self, value): + """Updates the current condition expression. + + Args: + value (str): The updated value of the condition expression. + + Raises: + google.auth.exceptions.InvalidType: If the value is not of type string. + """ + if not isinstance(value, str): + raise exceptions.InvalidType("The provided expression is not a string.") + self._expression = value + + @property + def title(self): + """Returns the current title. + + Returns: + Optional[str]: The current title. + """ + return self._title + + @title.setter + def title(self, value): + """Updates the current title. + + Args: + value (Optional[str]): The updated value of the title. + + Raises: + google.auth.exceptions.InvalidType: If the value is not of type string or None. + """ + if not isinstance(value, str) and value is not None: + raise exceptions.InvalidType("The provided title is not a string or None.") + self._title = value + + @property + def description(self): + """Returns the current description. + + Returns: + Optional[str]: The current description. + """ + return self._description + + @description.setter + def description(self, value): + """Updates the current description. + + Args: + value (Optional[str]): The updated value of the description. + + Raises: + google.auth.exceptions.InvalidType: If the value is not of type string or None. + """ + if not isinstance(value, str) and value is not None: + raise exceptions.InvalidType( + "The provided description is not a string or None." + ) + self._description = value + + def to_json(self): + """Generates the dictionary representation of the availability condition. + This uses the format expected by the Security Token Service API as documented in + `Defining a Credential Access Boundary`_. + + .. _Defining a Credential Access Boundary: + https://cloud.google.com/iam/docs/downscoping-short-lived-credentials#define-boundary + + Returns: + Mapping[str, str]: The availability condition represented in a dictionary + object. + """ + json = {"expression": self.expression} + if self.title: + json["title"] = self.title + if self.description: + json["description"] = self.description + return json + + +class Credentials(credentials.CredentialsWithQuotaProject): + """Defines a set of Google credentials that are downscoped from an existing set + of Google OAuth2 credentials. This is useful to restrict the Identity and Access + Management (IAM) permissions that a short-lived credential can use. + The common pattern of usage is to have a token broker with elevated access + generate these downscoped credentials from higher access source credentials and + pass the downscoped short-lived access tokens to a token consumer via some + secure authenticated channel for limited access to Google Cloud Storage + resources. + """ + + def __init__( + self, + source_credentials, + credential_access_boundary, + quota_project_id=None, + universe_domain=credentials.DEFAULT_UNIVERSE_DOMAIN, + ): + """Instantiates a downscoped credentials object using the provided source + credentials and credential access boundary rules. + To downscope permissions of a source credential, a Credential Access Boundary + that specifies which resources the new credential can access, as well as an + upper bound on the permissions that are available on each resource, has to be + defined. A downscoped credential can then be instantiated using the source + credential and the Credential Access Boundary. + + Args: + source_credentials (google.auth.credentials.Credentials): The source credentials + to be downscoped based on the provided Credential Access Boundary rules. + credential_access_boundary (google.auth.downscoped.CredentialAccessBoundary): + The Credential Access Boundary which contains a list of access boundary + rules. Each rule contains information on the resource that the rule applies to, + the upper bound of the permissions that are available on that resource and an + optional condition to further restrict permissions. + quota_project_id (Optional[str]): The optional quota project ID. + universe_domain (Optional[str]): The universe domain value, default is googleapis.com + Raises: + google.auth.exceptions.RefreshError: If the source credentials + return an error on token refresh. + google.auth.exceptions.OAuthError: If the STS token exchange + endpoint returned an error during downscoped token generation. + """ + + super(Credentials, self).__init__() + self._source_credentials = source_credentials + self._credential_access_boundary = credential_access_boundary + self._quota_project_id = quota_project_id + self._universe_domain = universe_domain or credentials.DEFAULT_UNIVERSE_DOMAIN + self._sts_client = sts.Client( + _STS_TOKEN_URL_PATTERN.format(self.universe_domain) + ) + + @_helpers.copy_docstring(credentials.Credentials) + def refresh(self, request): + # Generate an access token from the source credentials. + self._source_credentials.refresh(request) + now = _helpers.utcnow() + # Exchange the access token for a downscoped access token. + response_data = self._sts_client.exchange_token( + request=request, + grant_type=_STS_GRANT_TYPE, + subject_token=self._source_credentials.token, + subject_token_type=_STS_SUBJECT_TOKEN_TYPE, + requested_token_type=_STS_REQUESTED_TOKEN_TYPE, + additional_options=self._credential_access_boundary.to_json(), + ) + self.token = response_data.get("access_token") + # For downscoping CAB flow, the STS endpoint may not return the expiration + # field for some flows. The generated downscoped token should always have + # the same expiration time as the source credentials. When no expires_in + # field is returned in the response, we can just get the expiration time + # from the source credentials. + if response_data.get("expires_in"): + lifetime = datetime.timedelta(seconds=response_data.get("expires_in")) + self.expiry = now + lifetime + else: + self.expiry = self._source_credentials.expiry + + @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) + def with_quota_project(self, quota_project_id): + return self.__class__( + self._source_credentials, + self._credential_access_boundary, + quota_project_id=quota_project_id, + ) diff --git a/intelliaide/vendor/google/auth/environment_vars.py b/intelliaide/vendor/google/auth/environment_vars.py new file mode 100644 index 0000000..c7d7064 --- /dev/null +++ b/intelliaide/vendor/google/auth/environment_vars.py @@ -0,0 +1,131 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Environment variables used by :mod:`google.auth`.""" + + +PROJECT = "GOOGLE_CLOUD_PROJECT" +"""Environment variable defining default project. + +This used by :func:`google.auth.default` to explicitly set a project ID. This +environment variable is also used by the Google Cloud Python Library. +""" + +LEGACY_PROJECT = "GCLOUD_PROJECT" +"""Previously used environment variable defining the default project. + +This environment variable is used instead of the current one in some +situations (such as Google App Engine). +""" + +GOOGLE_CLOUD_QUOTA_PROJECT = "GOOGLE_CLOUD_QUOTA_PROJECT" +"""Environment variable defining the project to be used for +quota and billing.""" + +CREDENTIALS = "GOOGLE_APPLICATION_CREDENTIALS" +"""Environment variable defining the location of Google application default +credentials.""" + +# The environment variable name which can replace ~/.config if set. +CLOUD_SDK_CONFIG_DIR = "CLOUDSDK_CONFIG" +"""Environment variable defines the location of Google Cloud SDK's config +files.""" + +# These two variables allow for customization of the addresses used when +# contacting the GCE metadata service. +GCE_METADATA_HOST = "GCE_METADATA_HOST" +"""Environment variable providing an alternate hostname or host:port to be +used for GCE metadata requests. + +This environment variable was originally named GCE_METADATA_ROOT. The system will +check this environemnt variable first; should there be no value present, +the system will fall back to the old variable. +""" + +GCE_METADATA_ROOT = "GCE_METADATA_ROOT" +"""Old environment variable for GCE_METADATA_HOST.""" + +GCE_METADATA_IP = "GCE_METADATA_IP" +"""Environment variable providing an alternate ip:port to be used for ip-only +GCE metadata requests.""" + +GCE_METADATA_TIMEOUT = "GCE_METADATA_TIMEOUT" +"""Environment variable defining the timeout in seconds to wait for the +GCE metadata server when detecting the GCE environment. +""" + +GCE_METADATA_DETECT_RETRIES = "GCE_METADATA_DETECT_RETRIES" +"""Environment variable representing the number of retries that should be +attempted on metadata lookup. +""" + +NO_GCE_CHECK = "NO_GCE_CHECK" +"""Environment variable controlling whether to check if running on GCE or not. + +The default value is false. Users have to explicitly set this value to true +in order to disable the GCE check.""" + +GCE_METADATA_MTLS_MODE = "GCE_METADATA_MTLS_MODE" +"""Environment variable controlling the mTLS behavior for GCE metadata requests. + +Can be one of "strict", "none", or "default". +""" + +GOOGLE_API_USE_CLIENT_CERTIFICATE = "GOOGLE_API_USE_CLIENT_CERTIFICATE" +"""Environment variable controlling whether to use client certificate or not. + +The default value is false. Users have to explicitly set this value to true +in order to use client certificate to establish a mutual TLS channel.""" + +LEGACY_APPENGINE_RUNTIME = "APPENGINE_RUNTIME" +"""Gen1 environment variable defining the App Engine Runtime. + +Used to distinguish between GAE gen1 and GAE gen2+. +""" + +# AWS environment variables used with AWS workload identity pools to retrieve +# AWS security credentials and the AWS region needed to create a serialized +# signed requests to the AWS STS GetCalledIdentity API that can be exchanged +# for a Google access tokens via the GCP STS endpoint. +# When not available the AWS metadata server is used to retrieve these values. +AWS_ACCESS_KEY_ID = "AWS_ACCESS_KEY_ID" +AWS_SECRET_ACCESS_KEY = "AWS_SECRET_ACCESS_KEY" +AWS_SESSION_TOKEN = "AWS_SESSION_TOKEN" +AWS_REGION = "AWS_REGION" +AWS_DEFAULT_REGION = "AWS_DEFAULT_REGION" + +GOOGLE_AUTH_TRUST_BOUNDARY_ENABLED = "GOOGLE_AUTH_TRUST_BOUNDARY_ENABLED" +"""Environment variable controlling whether to enable trust boundary feature. +The default value is false. Users have to explicitly set this value to true.""" + +GOOGLE_API_CERTIFICATE_CONFIG = "GOOGLE_API_CERTIFICATE_CONFIG" +"""Environment variable defining the location of Google API certificate config +file.""" + +CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE = ( + "CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE" +) +"""Environment variable controlling whether to use client certificate or not. +This variable is the fallback of GOOGLE_API_USE_CLIENT_CERTIFICATE.""" + +CLOUDSDK_CONTEXT_AWARE_CERTIFICATE_CONFIG_FILE_PATH = ( + "CLOUDSDK_CONTEXT_AWARE_CERTIFICATE_CONFIG_FILE_PATH" +) +"""Environment variable defining the location of Google API certificate config +file. This variable is the fallback of GOOGLE_API_CERTIFICATE_CONFIG.""" + +GOOGLE_API_PREVENT_AGENT_TOKEN_SHARING_FOR_GCP_SERVICES = ( + "GOOGLE_API_PREVENT_AGENT_TOKEN_SHARING_FOR_GCP_SERVICES" +) +"""Environment variable to prevent agent token sharing for GCP services.""" diff --git a/intelliaide/vendor/google/auth/exceptions.py b/intelliaide/vendor/google/auth/exceptions.py new file mode 100644 index 0000000..feb9f74 --- /dev/null +++ b/intelliaide/vendor/google/auth/exceptions.py @@ -0,0 +1,108 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Exceptions used in the google.auth package.""" + + +class GoogleAuthError(Exception): + """Base class for all google.auth errors.""" + + def __init__(self, *args, **kwargs): + super(GoogleAuthError, self).__init__(*args) + retryable = kwargs.get("retryable", False) + self._retryable = retryable + + @property + def retryable(self): + return self._retryable + + +class TransportError(GoogleAuthError): + """Used to indicate an error occurred during an HTTP request.""" + + +class RefreshError(GoogleAuthError): + """Used to indicate that an refreshing the credentials' access token + failed.""" + + +class UserAccessTokenError(GoogleAuthError): + """Used to indicate ``gcloud auth print-access-token`` command failed.""" + + +class DefaultCredentialsError(GoogleAuthError): + """Used to indicate that acquiring default credentials failed.""" + + +class MutualTLSChannelError(GoogleAuthError): + """Used to indicate that mutual TLS channel creation is failed, or mutual + TLS channel credentials is missing or invalid.""" + + +class ClientCertError(GoogleAuthError): + """Used to indicate that client certificate is missing or invalid.""" + + @property + def retryable(self): + return False + + +class OAuthError(GoogleAuthError): + """Used to indicate an error occurred during an OAuth related HTTP + request.""" + + +class ReauthFailError(RefreshError): + """An exception for when reauth failed.""" + + def __init__(self, message=None, **kwargs): + super(ReauthFailError, self).__init__( + "Reauthentication failed. {0}".format(message), **kwargs + ) + + +class ReauthSamlChallengeFailError(ReauthFailError): + """An exception for SAML reauth challenge failures.""" + + +class MalformedError(DefaultCredentialsError, ValueError): + """An exception for malformed data.""" + + +class InvalidResource(DefaultCredentialsError, ValueError): + """An exception for URL error.""" + + +class InvalidOperation(DefaultCredentialsError, ValueError): + """An exception for invalid operation.""" + + +class InvalidValue(DefaultCredentialsError, ValueError): + """Used to wrap general ValueError of python.""" + + +class InvalidType(DefaultCredentialsError, TypeError): + """Used to wrap general TypeError of python.""" + + +class OSError(DefaultCredentialsError, EnvironmentError): + """Used to wrap EnvironmentError(OSError after python3.3).""" + + +class TimeoutError(GoogleAuthError): + """Used to indicate a timeout error occurred during an HTTP request.""" + + +class ResponseError(GoogleAuthError): + """Used to indicate an error occurred when reading an HTTP response.""" diff --git a/intelliaide/vendor/google/auth/external_account.py b/intelliaide/vendor/google/auth/external_account.py new file mode 100644 index 0000000..b490f36 --- /dev/null +++ b/intelliaide/vendor/google/auth/external_account.py @@ -0,0 +1,745 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""External Account Credentials. + +This module provides credentials that exchange workload identity pool external +credentials for Google access tokens. This facilitates accessing Google Cloud +Platform resources from on-prem and non-Google Cloud platforms (e.g. AWS, +Microsoft Azure, OIDC identity providers), using native credentials retrieved +from the current environment without the need to copy, save and manage +long-lived service account credentials. + +Specifically, this is intended to use access tokens acquired using the GCP STS +token exchange endpoint following the `OAuth 2.0 Token Exchange`_ spec. + +.. _OAuth 2.0 Token Exchange: https://tools.ietf.org/html/rfc8693 +""" + +import abc +import copy +from dataclasses import dataclass +import datetime +import functools +import io +import json +import logging +import re +from typing import Optional, TYPE_CHECKING + + +from google.auth import _helpers +from google.auth import credentials +from google.auth import exceptions +from google.auth import iam +from google.auth import impersonated_credentials +from google.auth import metrics +from google.oauth2 import sts +from google.oauth2 import utils + +if TYPE_CHECKING: # pragma: NO COVER + import google.auth.transport + +_LOGGER = logging.getLogger(__name__) + +# External account JSON type identifier. +_EXTERNAL_ACCOUNT_JSON_TYPE = "external_account" +# The token exchange grant_type used for exchanging credentials. +_STS_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:token-exchange" +# The token exchange requested_token_type. This is always an access_token. +_STS_REQUESTED_TOKEN_TYPE = "urn:ietf:params:oauth:token-type:access_token" +# Cloud resource manager URL used to retrieve project information. +_CLOUD_RESOURCE_MANAGER = "https://cloudresourcemanager.{universe_domain}/v1/projects/" +# Default Google sts token url. +_DEFAULT_TOKEN_URL = "https://sts.{universe_domain}/v1/token" + + +@dataclass +class SupplierContext: + """A context class that contains information about the requested third party credential that is passed + to AWS security credential and subject token suppliers. + + Attributes: + subject_token_type (str): The requested subject token type based on the Oauth2.0 token exchange spec. + Expected values include:: + + “urn:ietf:params:oauth:token-type:jwt” + “urn:ietf:params:oauth:token-type:id-token” + “urn:ietf:params:oauth:token-type:saml2” + “urn:ietf:params:aws:token-type:aws4_request” + + audience (str): The requested audience for the subject token. + """ + + subject_token_type: str + audience: str + + +class Credentials( + credentials.Scoped, + credentials.CredentialsWithQuotaProject, + credentials.CredentialsWithTokenUri, + credentials.CredentialsWithRegionalAccessBoundary, + metaclass=abc.ABCMeta, +): + """Base class for all external account credentials. + + This is used to instantiate Credentials for exchanging external account + credentials for Google access token and authorizing requests to Google APIs. + The base class implements the common logic for exchanging external account + credentials for Google access tokens. + + **IMPORTANT**: + This class does not validate the credential configuration. A security + risk occurs when a credential configuration configured with malicious urls + is used. + When the credential configuration is accepted from an + untrusted source, you should validate it before using. + Refer https://cloud.google.com/docs/authentication/external/externally-sourced-credentials for more details. + """ + + def __init__( + self, + audience, + subject_token_type, + token_url, + credential_source, + service_account_impersonation_url=None, + service_account_impersonation_options=None, + client_id=None, + client_secret=None, + token_info_url=None, + quota_project_id=None, + scopes=None, + default_scopes=None, + workforce_pool_user_project=None, + universe_domain=credentials.DEFAULT_UNIVERSE_DOMAIN, + trust_boundary=None, + ): + """Instantiates an external account credentials object. + + Args: + audience (str): The STS audience field. + subject_token_type (str): The subject token type based on the Oauth2.0 token exchange spec. + Expected values include:: + + “urn:ietf:params:oauth:token-type:jwt” + “urn:ietf:params:oauth:token-type:id-token” + “urn:ietf:params:oauth:token-type:saml2” + “urn:ietf:params:aws:token-type:aws4_request” + + token_url (str): The STS endpoint URL. + credential_source (Mapping): The credential source dictionary. + service_account_impersonation_url (Optional[str]): The optional service account + impersonation generateAccessToken URL. + client_id (Optional[str]): The optional client ID. + client_secret (Optional[str]): The optional client secret. + token_info_url (str): The optional STS endpoint URL for token introspection. + quota_project_id (Optional[str]): The optional quota project ID. + scopes (Optional[Sequence[str]]): Optional scopes to request during the + authorization grant. + default_scopes (Optional[Sequence[str]]): Default scopes passed by a + Google client library. Use 'scopes' for user-defined scopes. + workforce_pool_user_project (Optona[str]): The optional workforce pool user + project number when the credential corresponds to a workforce pool and not + a workload identity pool. The underlying principal must still have + serviceusage.services.use IAM permission to use the project for + billing/quota. + universe_domain (str): The universe domain. The default universe + domain is googleapis.com. + trust_boundary (str): String representation of trust boundary meta. + Raises: + google.auth.exceptions.RefreshError: If the generateAccessToken + endpoint returned an error. + """ + super(Credentials, self).__init__() + self._audience = audience + self._subject_token_type = subject_token_type + self._universe_domain = universe_domain + self._token_url = token_url + if self._token_url == _DEFAULT_TOKEN_URL: + self._token_url = self._token_url.replace( + "{universe_domain}", self._universe_domain + ) + self._cloud_resource_manager_url = _CLOUD_RESOURCE_MANAGER.replace( + "{universe_domain}", self._universe_domain + ) + self._token_info_url = token_info_url + self._credential_source = credential_source + self._service_account_impersonation_url = service_account_impersonation_url + self._service_account_impersonation_options = ( + service_account_impersonation_options or {} + ) + self._client_id = client_id + self._client_secret = client_secret + self._quota_project_id = quota_project_id + self._scopes = scopes + self._default_scopes = default_scopes + self._workforce_pool_user_project = workforce_pool_user_project + self._trust_boundary = trust_boundary + + if self._client_id: + self._client_auth = utils.ClientAuthentication( + utils.ClientAuthType.basic, self._client_id, self._client_secret + ) + else: + self._client_auth = None + self._sts_client = sts.Client(self._token_url, self._client_auth) + + self._metrics_options = self._create_default_metrics_options() + + self._impersonated_credentials = None + self._project_id = None + self._supplier_context = SupplierContext( + self._subject_token_type, self._audience + ) + self._cred_file_path = None + + if not self.is_workforce_pool and self._workforce_pool_user_project: + # Workload identity pools do not support workforce pool user projects. + raise exceptions.InvalidValue( + "workforce_pool_user_project should not be set for non-workforce pool " + "credentials" + ) + + @property + def info(self): + """Generates the dictionary representation of the current credentials. + + Returns: + Mapping: The dictionary representation of the credentials. This is the + reverse of "from_info" defined on the subclasses of this class. It is + useful for serializing the current credentials so it can deserialized + later. + """ + config_info = self._constructor_args() + config_info.update( + type=_EXTERNAL_ACCOUNT_JSON_TYPE, + service_account_impersonation=config_info.pop( + "service_account_impersonation_options", None + ), + ) + config_info.pop("scopes", None) + config_info.pop("default_scopes", None) + return {key: value for key, value in config_info.items() if value is not None} + + def _constructor_args(self): + args = { + "audience": self._audience, + "subject_token_type": self._subject_token_type, + "token_url": self._token_url, + "token_info_url": self._token_info_url, + "service_account_impersonation_url": self._service_account_impersonation_url, + "service_account_impersonation_options": copy.deepcopy( + self._service_account_impersonation_options + ) + or None, + "credential_source": copy.deepcopy(self._credential_source), + "quota_project_id": self._quota_project_id, + "client_id": self._client_id, + "client_secret": self._client_secret, + "workforce_pool_user_project": self._workforce_pool_user_project, + "scopes": self._scopes, + "default_scopes": self._default_scopes, + "universe_domain": self._universe_domain, + "trust_boundary": self._trust_boundary, + } + if not self.is_workforce_pool: + args.pop("workforce_pool_user_project") + return args + + @property + def service_account_email(self): + """Returns the service account email if service account impersonation is used. + + Returns: + Optional[str]: The service account email if impersonation is used. Otherwise + None is returned. + """ + if self._service_account_impersonation_url: + # Parse email from URL. The formal looks as follows: + # https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/name@project-id.iam.gserviceaccount.com:generateAccessToken + url = self._service_account_impersonation_url + start_index = url.rfind("/") + end_index = url.find(":generateAccessToken") + if start_index != -1 and end_index != -1 and start_index < end_index: + start_index = start_index + 1 + return url[start_index:end_index] + return None + + @property + def is_user(self): + """Returns whether the credentials represent a user (True) or workload (False). + Workloads behave similarly to service accounts. Currently workloads will use + service account impersonation but will eventually not require impersonation. + As a result, this property is more reliable than the service account email + property in determining if the credentials represent a user or workload. + + Returns: + bool: True if the credentials represent a user. False if they represent a + workload. + """ + # If service account impersonation is used, the credentials will always represent a + # service account. + if self._service_account_impersonation_url: + return False + return self.is_workforce_pool + + @property + def is_workforce_pool(self): + """Returns whether the credentials represent a workforce pool (True) or + workload (False) based on the credentials' audience. + + This will also return True for impersonated workforce pool credentials. + + Returns: + bool: True if the credentials represent a workforce pool. False if they + represent a workload. + """ + # Workforce pools representing users have the following audience format: + # //iam.googleapis.com/locations/$location/workforcePools/$poolId/providers/$providerId + p = re.compile(r"//iam\.googleapis\.com/locations/[^/]+/workforcePools/") + return p.match(self._audience or "") is not None + + @property + def requires_scopes(self): + """Checks if the credentials requires scopes. + + Returns: + bool: True if there are no scopes set otherwise False. + """ + return not self._scopes and not self._default_scopes + + @property + def project_number(self): + """Optional[str]: The project number corresponding to the workload identity pool.""" + + # STS audience pattern: + # //iam.googleapis.com/projects/$PROJECT_NUMBER/locations/... + components = self._audience.split("/") + try: + project_index = components.index("projects") + if project_index + 1 < len(components): + return components[project_index + 1] or None + except ValueError: + return None + + @property + def token_info_url(self): + """Optional[str]: The STS token introspection endpoint.""" + + return self._token_info_url + + @_helpers.copy_docstring(credentials.Credentials) + def get_cred_info(self): + if self._cred_file_path: + cred_info_json = { + "credential_source": self._cred_file_path, + "credential_type": "external account credentials", + } + if self.service_account_email: + cred_info_json["principal"] = self.service_account_email + return cred_info_json + return None + + @_helpers.copy_docstring(credentials.Scoped) + def with_scopes(self, scopes, default_scopes=None): + kwargs = self._constructor_args() + kwargs.update(scopes=scopes, default_scopes=default_scopes) + scoped = self.__class__(**kwargs) + scoped._cred_file_path = self._cred_file_path + scoped._metrics_options = self._metrics_options + self._copy_regional_access_boundary_manager(scoped) + return scoped + + @abc.abstractmethod + def retrieve_subject_token(self, request): + """Retrieves the subject token using the credential_source object. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + Returns: + str: The retrieved subject token. + """ + # pylint: disable=missing-raises-doc + # (pylint doesn't recognize that this is abstract) + raise NotImplementedError("retrieve_subject_token must be implemented") + + def get_project_id(self, request): + """Retrieves the project ID corresponding to the workload identity or workforce pool. + For workforce pool credentials, it returns the project ID corresponding to + the workforce_pool_user_project. + + When not determinable, None is returned. + + This is introduced to support the current pattern of using the Auth library: + + credentials, project_id = google.auth.default() + + The resource may not have permission (resourcemanager.projects.get) to + call this API or the required scopes may not be selected: + https://cloud.google.com/resource-manager/reference/rest/v1/projects/get#authorization-scopes + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + Returns: + Optional[str]: The project ID corresponding to the workload identity pool + or workforce pool if determinable. + """ + if self._project_id: + # If already retrieved, return the cached project ID value. + return self._project_id + scopes = self._scopes if self._scopes is not None else self._default_scopes + # Scopes are required in order to retrieve a valid access token. + project_number = self.project_number or self._workforce_pool_user_project + if project_number and scopes: + headers = {} + url = "{}{}".format(self._cloud_resource_manager_url, project_number) + self.before_request(request, "GET", url, headers) + response = request(url=url, method="GET", headers=headers) + + response_body = ( + response.data.decode("utf-8") + if hasattr(response.data, "decode") + else response.data + ) + response_data = json.loads(response_body) + + if response.status == 200: + # Cache result as this field is immutable. + self._project_id = response_data.get("projectId") + return self._project_id + + return None + + def refresh(self, request): + """Refreshes the access token. + + For impersonated credentials, this method will refresh the underlying + source credentials and the impersonated credentials. + """ + self._perform_refresh_token(request) + + def _maybe_start_regional_access_boundary_refresh(self, request, url): + """Starts a background thread to refresh the Regional Access Boundary if needed. + + For impersonated credentials, this delegates the logic to the + underlying impersonated credentials. + + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + url (str): The URL of the request. + """ + if getattr(self, "_impersonated_credentials", None): + self._impersonated_credentials._maybe_start_regional_access_boundary_refresh( + request, url + ) + return + + super()._maybe_start_regional_access_boundary_refresh(request, url) + + def _perform_refresh_token(self, request, cert_fingerprint=None): + scopes = self._scopes if self._scopes is not None else self._default_scopes + + # Inject client certificate into request. + if self._mtls_required(): + request = functools.partial( + request, cert=self._get_mtls_cert_and_key_paths() + ) + + if self._should_initialize_impersonated_credentials(): + self._impersonated_credentials = self._initialize_impersonated_credentials() + + if self._impersonated_credentials: + self._impersonated_credentials.refresh(request) + self.token = self._impersonated_credentials.token + self.expiry = self._impersonated_credentials.expiry + # Propagate the inner RAB manager to ensure downstream injections + # apply the target service account's RAB. + self._rab_manager = self._impersonated_credentials._rab_manager + else: + now = _helpers.utcnow() + additional_options = {} + # Do not pass workforce_pool_user_project when client authentication + # is used. The client ID is sufficient for determining the user project. + if self._workforce_pool_user_project and not self._client_id: + additional_options["userProject"] = self._workforce_pool_user_project + + if cert_fingerprint: + additional_options["bindCertFingerprint"] = cert_fingerprint + + additional_headers = { + metrics.API_CLIENT_HEADER: metrics.byoid_metrics_header( + self._metrics_options + ) + } + response_data = self._sts_client.exchange_token( + request=request, + grant_type=_STS_GRANT_TYPE, + subject_token=self.retrieve_subject_token(request), + subject_token_type=self._subject_token_type, + audience=self._audience, + scopes=scopes, + requested_token_type=_STS_REQUESTED_TOKEN_TYPE, + additional_options=additional_options if additional_options else None, + additional_headers=additional_headers, + ) + self.token = response_data.get("access_token") + expires_in = response_data.get("expires_in") + # Some services do not respect the OAUTH2.0 RFC and send expires_in as a + # JSON String. + if isinstance(expires_in, str): + expires_in = int(expires_in) + + lifetime = datetime.timedelta(seconds=expires_in) + + self.expiry = now + lifetime + + def _build_regional_access_boundary_lookup_url( + self, request: "Optional[google.auth.transport.Request]" = None # noqa: F821 + ): + """Builds and returns the URL for the Regional Access Boundary lookup API.""" + if getattr(self, "_impersonated_credentials", None): + # Impersonated credentials independently fetch and manage their own RAB. + return None + + url = None + # Try to parse as a workload identity pool. + # Audience format: //iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID + workload_match = re.search( + r"projects/([^/]+)/locations/global/workloadIdentityPools/([^/]+)", + self._audience, + ) + if workload_match: + project_number, pool_id = workload_match.groups() + url = iam._WORKLOAD_IDENTITY_POOL_REGIONAL_ACCESS_BOUNDARY_LOOKUP_ENDPOINT.format( + project_number=project_number, + pool_id=pool_id, + ) + else: + # If that fails, try to parse as a workforce pool. + # Audience format: //iam.googleapis.com/locations/global/workforcePools/POOL_ID/providers/PROVIDER_ID + workforce_match = re.search( + r"locations/[^/]+/workforcePools/([^/]+)", self._audience + ) + if workforce_match: + pool_id = workforce_match.groups()[0] + url = ( + iam._WORKFORCE_POOL_REGIONAL_ACCESS_BOUNDARY_LOOKUP_ENDPOINT.format( + pool_id=pool_id + ) + ) + + if url: + return url + else: + # If both fail, the audience format is invalid. + _LOGGER.error( + "Invalid audience format for Regional Access Boundary lookup: %s", + self._audience, + ) + return None + + def _make_copy(self): + kwargs = self._constructor_args() + new_cred = self.__class__(**kwargs) + new_cred._cred_file_path = self._cred_file_path + new_cred._metrics_options = self._metrics_options + self._copy_regional_access_boundary_manager(new_cred) + return new_cred + + @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) + def with_quota_project(self, quota_project_id): + # Return copy of instance with the provided quota project ID. + cred = self._make_copy() + cred._quota_project_id = quota_project_id + return cred + + @_helpers.copy_docstring(credentials.CredentialsWithTokenUri) + def with_token_uri(self, token_uri): + cred = self._make_copy() + cred._token_url = token_uri + return cred + + @_helpers.copy_docstring(credentials.CredentialsWithUniverseDomain) + def with_universe_domain(self, universe_domain): + cred = self._make_copy() + cred._universe_domain = universe_domain + return cred + + def _should_initialize_impersonated_credentials(self): + return ( + self._service_account_impersonation_url is not None + and self._impersonated_credentials is None + ) + + def _initialize_impersonated_credentials(self): + """Generates an impersonated credentials. + + For more details, see `projects.serviceAccounts.generateAccessToken`_. + + .. _projects.serviceAccounts.generateAccessToken: https://cloud.google.com/iam/docs/reference/credentials/rest/v1/projects.serviceAccounts/generateAccessToken + + Returns: + impersonated_credentials.Credential: The impersonated credentials + object. + + Raises: + google.auth.exceptions.RefreshError: If the generateAccessToken + endpoint returned an error. + """ + # Return copy of instance with no service account impersonation. + kwargs = self._constructor_args() + kwargs.update( + service_account_impersonation_url=None, + service_account_impersonation_options={}, + ) + source_credentials = self.__class__(**kwargs) + source_credentials._metrics_options = self._metrics_options + + # Determine target_principal. + target_principal = self.service_account_email + if not target_principal: + raise exceptions.RefreshError( + "Unable to determine target principal from service account impersonation URL." + ) + + scopes = self._scopes if self._scopes is not None else self._default_scopes + # Initialize and return impersonated credentials. + return impersonated_credentials.Credentials( + source_credentials=source_credentials, + target_principal=target_principal, + target_scopes=scopes, + quota_project_id=self._quota_project_id, + iam_endpoint_override=self._service_account_impersonation_url, + lifetime=self._service_account_impersonation_options.get( + "token_lifetime_seconds" + ), + trust_boundary=self._trust_boundary, + ) + + def _create_default_metrics_options(self): + metrics_options = {} + if self._service_account_impersonation_url: + metrics_options["sa-impersonation"] = "true" + else: + metrics_options["sa-impersonation"] = "false" + if self._service_account_impersonation_options.get("token_lifetime_seconds"): + metrics_options["config-lifetime"] = "true" + else: + metrics_options["config-lifetime"] = "false" + + return metrics_options + + def _mtls_required(self): + """Returns a boolean representing whether the current credential is configured + for mTLS and should add a certificate to the outgoing calls to the sts and service + account impersonation endpoint. + + Returns: + bool: True if the credential is configured for mTLS, False if it is not. + """ + return False + + def _get_mtls_cert_and_key_paths(self): + """Gets the file locations for a certificate and private key file + to be used for configuring mTLS for the sts and service account + impersonation calls. Currently only expected to return a value when using + X509 workload identity federation. + + Returns: + Tuple[str, str]: The cert and key file locations as strings in a tuple. + + Raises: + NotImplementedError: When the current credential is not configured for + mTLS. + """ + raise NotImplementedError( + "_get_mtls_cert_and_key_location must be implemented." + ) + + @classmethod + def from_info(cls, info, **kwargs): + """Creates a Credentials instance from parsed external account info. + + **IMPORTANT**: + This method does not validate the credential configuration. A security + risk occurs when a credential configuration configured with malicious urls + is used. + When the credential configuration is accepted from an + untrusted source, you should validate it before using with this method. + Refer https://cloud.google.com/docs/authentication/external/externally-sourced-credentials for more details. + + Args: + info (Mapping[str, str]): The external account info in Google + format. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.identity_pool.Credentials: The constructed + credentials. + + Raises: + InvalidValue: For invalid parameters. + """ + return cls( + audience=info.get("audience"), + subject_token_type=info.get("subject_token_type"), + token_url=info.get("token_url"), + token_info_url=info.get("token_info_url"), + service_account_impersonation_url=info.get( + "service_account_impersonation_url" + ), + service_account_impersonation_options=info.get( + "service_account_impersonation" + ) + or {}, + client_id=info.get("client_id"), + client_secret=info.get("client_secret"), + credential_source=info.get("credential_source"), + quota_project_id=info.get("quota_project_id"), + workforce_pool_user_project=info.get("workforce_pool_user_project"), + universe_domain=info.get( + "universe_domain", credentials.DEFAULT_UNIVERSE_DOMAIN + ), + trust_boundary=info.get("trust_boundary"), + **kwargs + ) + + @classmethod + def from_file(cls, filename, **kwargs): + """Creates a Credentials instance from an external account json file. + + **IMPORTANT**: + This method does not validate the credential configuration. A security + risk occurs when a credential configuration configured with malicious urls + is used. + When the credential configuration is accepted from an + untrusted source, you should validate it before using with this method. + Refer https://cloud.google.com/docs/authentication/external/externally-sourced-credentials for more details. + + Args: + filename (str): The path to the external account json file. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.identity_pool.Credentials: The constructed + credentials. + """ + with io.open(filename, "r", encoding="utf-8") as json_file: + data = json.load(json_file) + return cls.from_info(data, **kwargs) diff --git a/intelliaide/vendor/google/auth/external_account_authorized_user.py b/intelliaide/vendor/google/auth/external_account_authorized_user.py new file mode 100644 index 0000000..d292589 --- /dev/null +++ b/intelliaide/vendor/google/auth/external_account_authorized_user.py @@ -0,0 +1,472 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""External Account Authorized User Credentials. +This module provides credentials based on OAuth 2.0 access and refresh tokens. +These credentials usually access resources on behalf of a user (resource +owner). + +Specifically, these are sourced using external identities via Workforce Identity Federation. + +Obtaining the initial access and refresh token can be done through the Google Cloud CLI. + +Example credential: +{ + "type": "external_account_authorized_user", + "audience": "//iam.googleapis.com/locations/global/workforcePools/$WORKFORCE_POOL_ID/providers/$PROVIDER_ID", + "refresh_token": "refreshToken", + "token_url": "https://sts.googleapis.com/v1/oauth/token", + "token_info_url": "https://sts.googleapis.com/v1/instrospect", + "client_id": "clientId", + "client_secret": "clientSecret" +} +""" + +import datetime +import io +import json +import logging +import re +from typing import Optional, TYPE_CHECKING + + +from google.auth import _helpers +from google.auth import credentials +from google.auth import exceptions +from google.auth import iam +from google.oauth2 import sts +from google.oauth2 import utils + +if TYPE_CHECKING: # pragma: NO COVER + import google.auth.transport + +_LOGGER = logging.getLogger(__name__) + +_EXTERNAL_ACCOUNT_AUTHORIZED_USER_JSON_TYPE = "external_account_authorized_user" + + +class Credentials( + credentials.CredentialsWithQuotaProject, + credentials.ReadOnlyScoped, + credentials.CredentialsWithTokenUri, + credentials.CredentialsWithRegionalAccessBoundary, +): + """Credentials for External Account Authorized Users. + + This is used to instantiate Credentials for exchanging refresh tokens from + authorized users for Google access token and authorizing requests to Google + APIs. + + The credentials are considered immutable. If you want to modify the + quota project, use `with_quota_project` and if you want to modify the token + uri, use `with_token_uri`. + + **IMPORTANT**: + This class does not validate the credential configuration. A security + risk occurs when a credential configuration configured with malicious urls + is used. + When the credential configuration is accepted from an + untrusted source, you should validate it before using. + Refer https://cloud.google.com/docs/authentication/external/externally-sourced-credentials for more details. + """ + + def __init__( + self, + token=None, + expiry=None, + refresh_token=None, + audience=None, + client_id=None, + client_secret=None, + token_url=None, + token_info_url=None, + revoke_url=None, + scopes=None, + quota_project_id=None, + universe_domain=credentials.DEFAULT_UNIVERSE_DOMAIN, + trust_boundary=None, + ): + """Instantiates a external account authorized user credentials object. + + Args: + token (str): The OAuth 2.0 access token. Can be None if refresh information + is provided. + expiry (datetime.datetime): The optional expiration datetime of the OAuth 2.0 access + token. + refresh_token (str): The optional OAuth 2.0 refresh token. If specified, + credentials can be refreshed. + audience (str): The optional STS audience which contains the resource name for the workforce + pool and the provider identifier in that pool. + client_id (str): The OAuth 2.0 client ID. Must be specified for refresh, can be left as + None if the token can not be refreshed. + client_secret (str): The OAuth 2.0 client secret. Must be specified for refresh, can be + left as None if the token can not be refreshed. + token_url (str): The optional STS token exchange endpoint for refresh. Must be specified for + refresh, can be left as None if the token can not be refreshed. + token_info_url (str): The optional STS endpoint URL for token introspection. + revoke_url (str): The optional STS endpoint URL for revoking tokens. + quota_project_id (str): The optional project ID used for quota and billing. + This project may be different from the project used to + create the credentials. + universe_domain (Optional[str]): The universe domain. The default value + is googleapis.com. + trust_boundary (Mapping[str,str]): A credential trust boundary. + + Returns: + google.auth.external_account_authorized_user.Credentials: The + constructed credentials. + """ + super(Credentials, self).__init__() + + self.token = token + self.expiry = expiry + self._audience = audience + self._refresh_token = refresh_token + self._token_url = token_url + self._token_info_url = token_info_url + self._client_id = client_id + self._client_secret = client_secret + self._revoke_url = revoke_url + self._quota_project_id = quota_project_id + self._scopes = scopes + self._universe_domain = universe_domain or credentials.DEFAULT_UNIVERSE_DOMAIN + self._cred_file_path = None + self._trust_boundary = trust_boundary + + if not self.valid and not self.can_refresh: + raise exceptions.InvalidOperation( + "Token should be created with fields to make it valid (`token` and " + "`expiry`), or fields to allow it to refresh (`refresh_token`, " + "`token_url`, `client_id`, `client_secret`)." + ) + + self._client_auth = None + if self._client_id: + self._client_auth = utils.ClientAuthentication( + utils.ClientAuthType.basic, self._client_id, self._client_secret + ) + self._sts_client = sts.Client(self._token_url, self._client_auth) + + @property + def info(self): + """Generates the serializable dictionary representation of the current + credentials. + + Returns: + Mapping: The dictionary representation of the credentials. This is the + reverse of the "from_info" method defined in this class. It is + useful for serializing the current credentials so it can deserialized + later. + """ + config_info = self.constructor_args() + config_info.update(type=_EXTERNAL_ACCOUNT_AUTHORIZED_USER_JSON_TYPE) + if config_info["expiry"]: + config_info["expiry"] = config_info["expiry"].isoformat() + "Z" + + return {key: value for key, value in config_info.items() if value is not None} + + def constructor_args(self): + return { + "audience": self._audience, + "refresh_token": self._refresh_token, + "token_url": self._token_url, + "token_info_url": self._token_info_url, + "client_id": self._client_id, + "client_secret": self._client_secret, + "token": self.token, + "expiry": self.expiry, + "revoke_url": self._revoke_url, + "scopes": self._scopes, + "quota_project_id": self._quota_project_id, + "universe_domain": self._universe_domain, + "trust_boundary": self._trust_boundary, + } + + @property + def scopes(self): + """Optional[str]: The OAuth 2.0 permission scopes.""" + return self._scopes + + @property + def requires_scopes(self): + """False: OAuth 2.0 credentials have their scopes set when + the initial token is requested and can not be changed.""" + return False + + @property + def client_id(self): + """Optional[str]: The OAuth 2.0 client ID.""" + return self._client_id + + @property + def client_secret(self): + """Optional[str]: The OAuth 2.0 client secret.""" + return self._client_secret + + @property + def audience(self): + """Optional[str]: The STS audience which contains the resource name for the + workforce pool and the provider identifier in that pool.""" + return self._audience + + @property + def refresh_token(self): + """Optional[str]: The OAuth 2.0 refresh token.""" + return self._refresh_token + + @property + def token_url(self): + """Optional[str]: The STS token exchange endpoint for refresh.""" + return self._token_url + + @property + def token_info_url(self): + """Optional[str]: The STS endpoint for token info.""" + return self._token_info_url + + @property + def revoke_url(self): + """Optional[str]: The STS endpoint for token revocation.""" + return self._revoke_url + + @property + def is_user(self): + """True: This credential always represents a user.""" + return True + + @property + def can_refresh(self): + return all( + ( + self._refresh_token, + self._token_url, + self._client_id, + self._client_secret, + ) + ) + + def get_project_id(self, request=None): + """Retrieves the project ID corresponding to the workload identity or workforce pool. + For workforce pool credentials, it returns the project ID corresponding to + the workforce_pool_user_project. + + When not determinable, None is returned. + + Args: + request (google.auth.transport.requests.Request): Request object. + Unused here, but passed from _default.default(). + + Return: + str: project ID is not determinable for this credential type so it returns None + """ + + return None + + def to_json(self, strip=None): + """Utility function that creates a JSON representation of this + credential. + Args: + strip (Sequence[str]): Optional list of members to exclude from the + generated JSON. + Returns: + str: A JSON representation of this instance. When converted into + a dictionary, it can be passed to from_info() + to create a new instance. + """ + strip = strip if strip else [] + return json.dumps({k: v for (k, v) in self.info.items() if k not in strip}) + + def _perform_refresh_token(self, request): + """Refreshes the access token. + + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + + Raises: + google.auth.exceptions.RefreshError: If the credentials could + not be refreshed. + """ + if not self.can_refresh: + raise exceptions.RefreshError( + "The credentials do not contain the necessary fields need to " + "refresh the access token. You must specify refresh_token, " + "token_url, client_id, and client_secret." + ) + + now = _helpers.utcnow() + response_data = self._sts_client.refresh_token(request, self._refresh_token) + + self.token = response_data.get("access_token") + + lifetime = datetime.timedelta(seconds=response_data.get("expires_in")) + self.expiry = now + lifetime + + if "refresh_token" in response_data: + self._refresh_token = response_data["refresh_token"] + + def _build_regional_access_boundary_lookup_url( + self, request: "Optional[google.auth.transport.Request]" = None # noqa: F821 + ): + """Builds and returns the URL for the Regional Access Boundary lookup API. + + Returns: + Optional[str]: The URL for the Regional Access Boundary lookup endpoint, or None + if the URL cannot be built due to an invalid workforce pool audience format. + """ + # Audience format: //iam.googleapis.com/locations/global/workforcePools/POOL_ID/providers/PROVIDER_ID + match = re.search(r"locations/[^/]+/workforcePools/([^/]+)", self._audience) + + if not match: + _LOGGER.error( + "Invalid workforce pool audience format for Regional Access Boundary lookup: %s", + self._audience, + ) + return None + + pool_id = match.groups()[0] + + return iam._WORKFORCE_POOL_REGIONAL_ACCESS_BOUNDARY_LOOKUP_ENDPOINT.format( + pool_id=pool_id + ) + + def revoke(self, request): + """Revokes the refresh token. + + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + + Raises: + google.auth.exceptions.OAuthError: If the token could not be + revoked. + """ + if not self._revoke_url or not self._refresh_token: + raise exceptions.OAuthError( + "The credentials do not contain the necessary fields to " + "revoke the refresh token. You must specify revoke_url and " + "refresh_token." + ) + + self._sts_client.revoke_token( + request, self._refresh_token, "refresh_token", self._revoke_url + ) + self.token = None + self._refresh_token = None + + @_helpers.copy_docstring(credentials.Credentials) + def get_cred_info(self): + if self._cred_file_path: + return { + "credential_source": self._cred_file_path, + "credential_type": "external account authorized user credentials", + } + return None + + def _make_copy(self): + kwargs = self.constructor_args() + cred = self.__class__(**kwargs) + cred._cred_file_path = self._cred_file_path + self._copy_regional_access_boundary_manager(cred) + return cred + + @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) + def with_quota_project(self, quota_project_id): + cred = self._make_copy() + cred._quota_project_id = quota_project_id + return cred + + @_helpers.copy_docstring(credentials.CredentialsWithTokenUri) + def with_token_uri(self, token_uri): + cred = self._make_copy() + cred._token_url = token_uri + return cred + + @_helpers.copy_docstring(credentials.CredentialsWithUniverseDomain) + def with_universe_domain(self, universe_domain): + cred = self._make_copy() + cred._universe_domain = universe_domain + return cred + + @classmethod + def from_info(cls, info, **kwargs): + """Creates a Credentials instance from parsed external account info. + + **IMPORTANT**: + This method does not validate the credential configuration. A security + risk occurs when a credential configuration configured with malicious urls + is used. + When the credential configuration is accepted from an + untrusted source, you should validate it before using with this method. + Refer https://cloud.google.com/docs/authentication/external/externally-sourced-credentials for more details. + + Args: + info (Mapping[str, str]): The external account info in Google + format. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.external_account_authorized_user.Credentials: The + constructed credentials. + + Raises: + ValueError: For invalid parameters. + """ + expiry = info.get("expiry") + if expiry: + expiry = datetime.datetime.strptime( + expiry.rstrip("Z").split(".")[0], "%Y-%m-%dT%H:%M:%S" + ) + return cls( + audience=info.get("audience"), + refresh_token=info.get("refresh_token"), + token_url=info.get("token_url"), + token_info_url=info.get("token_info_url"), + client_id=info.get("client_id"), + client_secret=info.get("client_secret"), + token=info.get("token"), + expiry=expiry, + revoke_url=info.get("revoke_url"), + quota_project_id=info.get("quota_project_id"), + scopes=info.get("scopes"), + universe_domain=info.get( + "universe_domain", credentials.DEFAULT_UNIVERSE_DOMAIN + ), + trust_boundary=info.get("trust_boundary"), + **kwargs + ) + + @classmethod + def from_file(cls, filename, **kwargs): + """Creates a Credentials instance from an external account json file. + + **IMPORTANT**: + This method does not validate the credential configuration. A security + risk occurs when a credential configuration configured with malicious urls + is used. + When the credential configuration is accepted from an + untrusted source, you should validate it before using with this method. + Refer https://cloud.google.com/docs/authentication/external/externally-sourced-credentials for more details. + + Args: + filename (str): The path to the external account json file. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.external_account_authorized_user.Credentials: The + constructed credentials. + """ + with io.open(filename, "r", encoding="utf-8") as json_file: + data = json.load(json_file) + return cls.from_info(data, **kwargs) diff --git a/intelliaide/vendor/google/auth/iam.py b/intelliaide/vendor/google/auth/iam.py new file mode 100644 index 0000000..00b6e06 --- /dev/null +++ b/intelliaide/vendor/google/auth/iam.py @@ -0,0 +1,143 @@ +# Copyright 2017 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Tools for using the Google `Cloud Identity and Access Management (IAM) +API`_'s auth-related functionality. + +.. _Cloud Identity and Access Management (IAM) API: + https://cloud.google.com/iam/docs/ +""" + +import base64 +import http.client as http_client +import json + +from google.auth import _exponential_backoff +from google.auth import _helpers +from google.auth import credentials +from google.auth import crypt +from google.auth import exceptions +from google.auth.transport import _mtls_helper + +IAM_RETRY_CODES = { + http_client.INTERNAL_SERVER_ERROR, + http_client.BAD_GATEWAY, + http_client.SERVICE_UNAVAILABLE, + http_client.GATEWAY_TIMEOUT, +} + +_IAM_SCOPE = ["https://www.googleapis.com/auth/iam"] + +# Determine if we should use mTLS. +if ( + hasattr(_mtls_helper, "check_use_client_cert") + and _mtls_helper.check_use_client_cert() +): + # Construct the template domain using the library's DEFAULT_UNIVERSE_DOMAIN constant. + _IAM_DOMAIN = f"iamcredentials.mtls.{credentials.DEFAULT_UNIVERSE_DOMAIN}" +else: + _IAM_DOMAIN = f"iamcredentials.{credentials.DEFAULT_UNIVERSE_DOMAIN}" + +# 3. Create the common base URL template +# We use double brackets {{}} so .format() can be called later for the email. +_IAM_BASE_URL = f"https://{_IAM_DOMAIN}/v1/projects/-/serviceAccounts/{{}}" + +# 4. Define the endpoints as templates +_IAM_ENDPOINT = _IAM_BASE_URL + ":generateAccessToken" +_IAM_SIGN_ENDPOINT = _IAM_BASE_URL + ":signBlob" +_IAM_SIGNJWT_ENDPOINT = _IAM_BASE_URL + ":signJwt" +_IAM_IDTOKEN_ENDPOINT = _IAM_BASE_URL + ":generateIdToken" + + +# Regional Access Boundary (RAB) Lookup Endpoints +_SERVICE_ACCOUNT_REGIONAL_ACCESS_BOUNDARY_LOOKUP_ENDPOINT = f"https://{_IAM_DOMAIN}/v1/projects/-/serviceAccounts/{{service_account_email}}/allowedLocations" +_WORKFORCE_POOL_REGIONAL_ACCESS_BOUNDARY_LOOKUP_ENDPOINT = f"https://{_IAM_DOMAIN}/v1/locations/global/workforcePools/{{pool_id}}/allowedLocations" +_WORKLOAD_IDENTITY_POOL_REGIONAL_ACCESS_BOUNDARY_LOOKUP_ENDPOINT = f"https://{_IAM_DOMAIN}/v1/projects/{{project_number}}/locations/global/workloadIdentityPools/{{pool_id}}/allowedLocations" + + +class Signer(crypt.Signer): + """Signs messages using the IAM `signBlob API`_. + + This is useful when you need to sign bytes but do not have access to the + credential's private key file. + + .. _signBlob API: + https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts + /signBlob + """ + + def __init__(self, request, credentials, service_account_email): + """ + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + credentials (google.auth.credentials.Credentials): The credentials + that will be used to authenticate the request to the IAM API. + The credentials must have of one the following scopes: + + - https://www.googleapis.com/auth/iam + - https://www.googleapis.com/auth/cloud-platform + service_account_email (str): The service account email identifying + which service account to use to sign bytes. Often, this can + be the same as the service account email in the given + credentials. + """ + self._request = request + self._credentials = credentials + self._service_account_email = service_account_email + + def _make_signing_request(self, message): + """Makes a request to the API signBlob API.""" + message = _helpers.to_bytes(message) + + method = "POST" + url = _IAM_SIGN_ENDPOINT.replace( + credentials.DEFAULT_UNIVERSE_DOMAIN, self._credentials.universe_domain + ).format(self._service_account_email) + headers = {"Content-Type": "application/json"} + body = json.dumps( + {"payload": base64.b64encode(message).decode("utf-8")} + ).encode("utf-8") + + retries = _exponential_backoff.ExponentialBackoff() + for _ in retries: + self._credentials.before_request(self._request, method, url, headers) + + response = self._request(url=url, method=method, body=body, headers=headers) + + if response.status in IAM_RETRY_CODES: + continue + + if response.status != http_client.OK: + raise exceptions.TransportError( + "Error calling the IAM signBlob API: {}".format(response.data) + ) + + return json.loads(response.data.decode("utf-8")) + raise exceptions.TransportError("exhausted signBlob endpoint retries") + + @property + def key_id(self): + """Optional[str]: The key ID used to identify this private key. + + .. warning:: + This is always ``None``. The key ID used by IAM can not + be reliably determined ahead of time. + """ + return None + + @_helpers.copy_docstring(crypt.Signer) + def sign(self, message): + response = self._make_signing_request(message) + return base64.b64decode(response["signedBlob"]) diff --git a/intelliaide/vendor/google/auth/identity_pool.py b/intelliaide/vendor/google/auth/identity_pool.py new file mode 100644 index 0000000..30819ef --- /dev/null +++ b/intelliaide/vendor/google/auth/identity_pool.py @@ -0,0 +1,574 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Identity Pool Credentials. + +This module provides credentials to access Google Cloud resources from on-prem +or non-Google Cloud platforms which support external credentials (e.g. OIDC ID +tokens) retrieved from local file locations or local servers. This includes +Microsoft Azure and OIDC identity providers (e.g. K8s workloads registered with +Hub with Hub workload identity enabled). + +These credentials are recommended over the use of service account credentials +in on-prem/non-Google Cloud platforms as they do not involve the management of +long-live service account private keys. + +Identity Pool Credentials are initialized using external_account +arguments which are typically loaded from an external credentials file or +an external credentials URL. + +This module also provides a definition for an abstract subject token supplier. +This supplier can be implemented to return a valid OIDC or SAML2.0 subject token +and used to create Identity Pool credentials. The credentials will then call the +supplier instead of using pre-defined methods such as reading a local file or +calling a URL. +""" + +try: + from collections.abc import Mapping +# Python 2.7 compatibility +except ImportError: # pragma: NO COVER + from collections import Mapping # type: ignore +import abc +import base64 +import json +import os +from typing import NamedTuple + +from google.auth import _helpers +from google.auth import exceptions +from google.auth import external_account +from google.auth.transport import _mtls_helper + + +class SubjectTokenSupplier(metaclass=abc.ABCMeta): + """Base class for subject token suppliers. This can be implemented with custom logic to retrieve + a subject token to exchange for a Google Cloud access token when using Workload or + Workforce Identity Federation. The identity pool credential does not cache the subject token, + so caching logic should be added in the implementation. + """ + + @abc.abstractmethod + def get_subject_token(self, context, request): + """Returns the requested subject token. The subject token must be valid. + + .. warning: This is not cached by the calling Google credential, so caching logic should be implemented in the supplier. + + Args: + context (google.auth.externalaccount.SupplierContext): The context object + containing information about the requested audience and subject token type. + request (google.auth.transport.Request): The object used to make + HTTP requests. + + Raises: + google.auth.exceptions.RefreshError: If an error is encountered during + subject token retrieval logic. + + Returns: + str: The requested subject token string. + """ + raise NotImplementedError("") + + +class _TokenContent(NamedTuple): + """Models the token content response from file and url internal suppliers. + Attributes: + content (str): The string content of the file or URL response. + location (str): The location the content was retrieved from. This will either be a file location or a URL. + """ + + content: str + location: str + + +class _FileSupplier(SubjectTokenSupplier): + """Internal implementation of subject token supplier which supports reading a subject token from a file.""" + + def __init__(self, path, format_type, subject_token_field_name): + self._path = path + self._format_type = format_type + self._subject_token_field_name = subject_token_field_name + + @_helpers.copy_docstring(SubjectTokenSupplier) + def get_subject_token(self, context, request): + if not os.path.exists(self._path): + raise exceptions.RefreshError("File '{}' was not found.".format(self._path)) + + with open(self._path, "r", encoding="utf-8") as file_obj: + token_content = _TokenContent(file_obj.read(), self._path) + + return _parse_token_data( + token_content, self._format_type, self._subject_token_field_name + ) + + +class _UrlSupplier(SubjectTokenSupplier): + """Internal implementation of subject token supplier which supports retrieving a subject token by calling a URL endpoint.""" + + def __init__(self, url, format_type, subject_token_field_name, headers): + self._url = url + self._format_type = format_type + self._subject_token_field_name = subject_token_field_name + self._headers = headers + + @_helpers.copy_docstring(SubjectTokenSupplier) + def get_subject_token(self, context, request): + response = request(url=self._url, method="GET", headers=self._headers) + + # support both string and bytes type response.data + response_body = ( + response.data.decode("utf-8") + if hasattr(response.data, "decode") + else response.data + ) + + if response.status != 200: + raise exceptions.RefreshError( + "Unable to retrieve Identity Pool subject token", response_body + ) + token_content = _TokenContent(response_body, self._url) + return _parse_token_data( + token_content, self._format_type, self._subject_token_field_name + ) + + +class _X509Supplier(SubjectTokenSupplier): + """Internal supplier for X509 workload credentials. This class is used internally and always returns an empty string as the subject token.""" + + def __init__(self, trust_chain_path, leaf_cert_callback): + self._trust_chain_path = trust_chain_path + self._leaf_cert_callback = leaf_cert_callback + + @_helpers.copy_docstring(SubjectTokenSupplier) + def get_subject_token(self, context, request): + # Import OpennSSL inline because it is an extra import only required by customers + # using mTLS. + from OpenSSL import crypto + + leaf_cert = crypto.load_certificate( + crypto.FILETYPE_PEM, self._leaf_cert_callback() + ) + trust_chain = self._read_trust_chain() + cert_chain = [] + + cert_chain.append(_X509Supplier._encode_cert(leaf_cert)) + + if trust_chain is None or len(trust_chain) == 0: + return json.dumps(cert_chain) + + # Append the first cert if it is not the leaf cert. + first_cert = _X509Supplier._encode_cert(trust_chain[0]) + if first_cert != cert_chain[0]: + cert_chain.append(first_cert) + + for i in range(1, len(trust_chain)): + encoded = _X509Supplier._encode_cert(trust_chain[i]) + # Check if the current cert is the leaf cert and raise an exception if it is. + if encoded == cert_chain[0]: + raise exceptions.RefreshError( + "The leaf certificate must be at the top of the trust chain file" + ) + else: + cert_chain.append(encoded) + return json.dumps(cert_chain) + + def _read_trust_chain(self): + # Import OpennSSL inline because it is an extra import only required by customers + # using mTLS. + from OpenSSL import crypto + + certificate_trust_chain = [] + # If no trust chain path was provided, return an empty list. + if self._trust_chain_path is None or self._trust_chain_path == "": + return certificate_trust_chain + try: + # Open the trust chain file. + with open(self._trust_chain_path, "rb") as f: + trust_chain_data = f.read() + # Split PEM data into individual certificates. + cert_blocks = trust_chain_data.split(b"-----BEGIN CERTIFICATE-----") + for cert_block in cert_blocks: + # Skip empty blocks. + if cert_block.strip(): + cert_data = b"-----BEGIN CERTIFICATE-----" + cert_block + try: + # Load each certificate and add it to the trust chain. + cert = crypto.load_certificate( + crypto.FILETYPE_PEM, cert_data + ) + certificate_trust_chain.append(cert) + except Exception as e: + raise exceptions.RefreshError( + "Error loading PEM certificates from the trust chain file '{}'".format( + self._trust_chain_path + ) + ) from e + return certificate_trust_chain + except FileNotFoundError: + raise exceptions.RefreshError( + "Trust chain file '{}' was not found.".format(self._trust_chain_path) + ) + + def _encode_cert(cert): + # Import OpennSSL inline because it is an extra import only required by customers + # using mTLS. + from OpenSSL import crypto + + return base64.b64encode( + crypto.dump_certificate(crypto.FILETYPE_ASN1, cert) + ).decode("utf-8") + + +def _parse_token_data(token_content, format_type="text", subject_token_field_name=None): + if format_type == "text": + token = token_content.content + else: + try: + # Parse file content as JSON. + response_data = json.loads(token_content.content) + # Get the subject_token. + token = response_data[subject_token_field_name] + except (KeyError, ValueError): + raise exceptions.RefreshError( + "Unable to parse subject_token from JSON file '{}' using key '{}'".format( + token_content.location, subject_token_field_name + ) + ) + if not token: + raise exceptions.RefreshError( + "Missing subject_token in the credential_source file" + ) + return token + + +class Credentials(external_account.Credentials): + """External account credentials sourced from files and URLs. + + **IMPORTANT**: + This class does not validate the credential configuration. A security + risk occurs when a credential configuration configured with malicious urls + is used. + When the credential configuration is accepted from an + untrusted source, you should validate it before using. + Refer https://cloud.google.com/docs/authentication/external/externally-sourced-credentials for more details. + """ + + def __init__( + self, + audience, + subject_token_type, + token_url=external_account._DEFAULT_TOKEN_URL, + credential_source=None, + subject_token_supplier=None, + *args, + **kwargs + ): + """Instantiates an external account credentials object from a file/URL. + + Args: + audience (str): The STS audience field. + subject_token_type (str): The subject token type based on the Oauth2.0 token exchange spec. + Expected values include:: + + “urn:ietf:params:oauth:token-type:jwt” + “urn:ietf:params:oauth:token-type:id-token” + “urn:ietf:params:oauth:token-type:saml2” + + token_url (Optional [str]): The STS endpoint URL. If not provided, will default to "https://sts.googleapis.com/v1/token". + credential_source (Optional [Mapping]): The credential source dictionary used to + provide instructions on how to retrieve external credential to be + exchanged for Google access tokens. Either a credential source or + a subject token supplier must be provided. + + Example credential_source for url-sourced credential:: + + { + "url": "http://www.example.com", + "format": { + "type": "json", + "subject_token_field_name": "access_token", + }, + "headers": {"foo": "bar"}, + } + + Example credential_source for file-sourced credential:: + + { + "file": "/path/to/token/file.txt" + } + subject_token_supplier (Optional [SubjectTokenSupplier]): Optional subject token supplier. + This will be called to supply a valid subject token which will then + be exchanged for Google access tokens. Either a subject token supplier + or a credential source must be provided. + args (List): Optional positional arguments passed into the underlying :meth:`~external_account.Credentials.__init__` method. + kwargs (Mapping): Optional keyword arguments passed into the underlying :meth:`~external_account.Credentials.__init__` method. + + Raises: + google.auth.exceptions.RefreshError: If an error is encountered during + access token retrieval logic. + ValueError: For invalid parameters. + + .. note:: Typically one of the helper constructors + :meth:`from_file` or + :meth:`from_info` are used instead of calling the constructor directly. + """ + + super(Credentials, self).__init__( + audience=audience, + subject_token_type=subject_token_type, + token_url=token_url, + credential_source=credential_source, + *args, + **kwargs + ) + if credential_source is None and subject_token_supplier is None: + raise exceptions.InvalidValue( + "A valid credential source or a subject token supplier must be provided." + ) + if credential_source is not None and subject_token_supplier is not None: + raise exceptions.InvalidValue( + "Identity pool credential cannot have both a credential source and a subject token supplier." + ) + + if subject_token_supplier is not None: + self._subject_token_supplier = subject_token_supplier + self._credential_source_file = None + self._credential_source_url = None + self._credential_source_certificate = None + else: + if not isinstance(credential_source, Mapping): + self._credential_source_executable = None + raise exceptions.MalformedError( + "Invalid credential_source. The credential_source is not a dict." + ) + self._credential_source_file = credential_source.get("file") + self._credential_source_url = credential_source.get("url") + self._credential_source_certificate = credential_source.get("certificate") + + # environment_id is only supported in AWS or dedicated future external + # account credentials. + if "environment_id" in credential_source: + raise exceptions.MalformedError( + "Invalid Identity Pool credential_source field 'environment_id'" + ) + + # check that only one of file, url, or certificate are provided. + self._validate_single_source() + + if self._credential_source_certificate: + self._validate_certificate_config() + else: + self._validate_file_or_url_config(credential_source) + + if self._credential_source_file: + self._subject_token_supplier = _FileSupplier( + self._credential_source_file, + self._credential_source_format_type, + self._credential_source_field_name, + ) + elif self._credential_source_url: + self._subject_token_supplier = _UrlSupplier( + self._credential_source_url, + self._credential_source_format_type, + self._credential_source_field_name, + self._credential_source_headers, + ) + else: # self._credential_source_certificate + self._subject_token_supplier = _X509Supplier( + self._trust_chain_path, self._get_cert_bytes + ) + + @_helpers.copy_docstring(external_account.Credentials) + def retrieve_subject_token(self, request): + return self._subject_token_supplier.get_subject_token( + self._supplier_context, request + ) + + def _get_mtls_cert_and_key_paths(self): + if self._credential_source_certificate is None: + raise exceptions.RefreshError( + 'The credential is not configured to use mtls requests. The credential should include a "certificate" section in the credential source.' + ) + else: + return _mtls_helper._get_workload_cert_and_key_paths( + self._certificate_config_location + ) + + def _get_cert_bytes(self): + cert_path, _ = self._get_mtls_cert_and_key_paths() + return _mtls_helper._read_cert_file(cert_path) + + def _mtls_required(self): + return self._credential_source_certificate is not None + + def _create_default_metrics_options(self): + metrics_options = super(Credentials, self)._create_default_metrics_options() + # Check that credential source is a dict before checking for credential type. This check needs to be done + # here because the external_account credential constructor needs to pass the metrics options to the + # impersonated credential object before the identity_pool credentials are validated. + if isinstance(self._credential_source, Mapping): + if self._credential_source.get("file"): + metrics_options["source"] = "file" + elif self._credential_source.get("url"): + metrics_options["source"] = "url" + else: + metrics_options["source"] = "x509" + else: + metrics_options["source"] = "programmatic" + return metrics_options + + def _has_custom_supplier(self): + return self._credential_source is None + + def _constructor_args(self): + args = super(Credentials, self)._constructor_args() + # If a custom supplier was used, append it to the args dict. + if self._has_custom_supplier(): + args.update({"subject_token_supplier": self._subject_token_supplier}) + return args + + def _validate_certificate_config(self): + self._certificate_config_location = self._credential_source_certificate.get( + "certificate_config_location" + ) + use_default = self._credential_source_certificate.get( + "use_default_certificate_config" + ) + self._trust_chain_path = self._credential_source_certificate.get( + "trust_chain_path" + ) + if self._certificate_config_location and use_default: + raise exceptions.MalformedError( + "Invalid certificate configuration, certificate_config_location cannot be specified when use_default_certificate_config = true." + ) + if not self._certificate_config_location and not use_default: + raise exceptions.MalformedError( + "Invalid certificate configuration, use_default_certificate_config should be true if no certificate_config_location is provided." + ) + + def _validate_file_or_url_config(self, credential_source): + self._credential_source_headers = credential_source.get("headers") + credential_source_format = credential_source.get("format", {}) + # Get credential_source format type. When not provided, this + # defaults to text. + self._credential_source_format_type = ( + credential_source_format.get("type") or "text" + ) + if self._credential_source_format_type not in ["text", "json"]: + raise exceptions.MalformedError( + "Invalid credential_source format '{}'".format( + self._credential_source_format_type + ) + ) + # For JSON types, get the required subject_token field name. + if self._credential_source_format_type == "json": + self._credential_source_field_name = credential_source_format.get( + "subject_token_field_name" + ) + if self._credential_source_field_name is None: + raise exceptions.MalformedError( + "Missing subject_token_field_name for JSON credential_source format" + ) + else: + self._credential_source_field_name = None + + def _validate_single_source(self): + credential_sources = [ + self._credential_source_file, + self._credential_source_url, + self._credential_source_certificate, + ] + valid_credential_sources = list( + filter(lambda source: source is not None, credential_sources) + ) + + if len(valid_credential_sources) > 1: + raise exceptions.MalformedError( + "Ambiguous credential_source. 'file', 'url', and 'certificate' are mutually exclusive.." + ) + if len(valid_credential_sources) != 1: + raise exceptions.MalformedError( + "Missing credential_source. A 'file', 'url', or 'certificate' must be provided." + ) + + @classmethod + def from_info(cls, info, **kwargs): + """Creates an Identity Pool Credentials instance from parsed external account info. + + **IMPORTANT**: + This method does not validate the credential configuration. A security + risk occurs when a credential configuration configured with malicious urls + is used. + When the credential configuration is accepted from an + untrusted source, you should validate it before using with this method. + Refer https://cloud.google.com/docs/authentication/external/externally-sourced-credentials for more details. + + Args: + info (Mapping[str, str]): The Identity Pool external account info in Google + format. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.identity_pool.Credentials: The constructed + credentials. + + Raises: + ValueError: For invalid parameters. + """ + subject_token_supplier = info.get("subject_token_supplier") + kwargs.update({"subject_token_supplier": subject_token_supplier}) + return super(Credentials, cls).from_info(info, **kwargs) + + @classmethod + def from_file(cls, filename, **kwargs): + """Creates an IdentityPool Credentials instance from an external account json file. + + **IMPORTANT**: + This method does not validate the credential configuration. A security + risk occurs when a credential configuration configured with malicious urls + is used. + When the credential configuration is accepted from an + untrusted source, you should validate it before using with this method. + Refer https://cloud.google.com/docs/authentication/external/externally-sourced-credentials for more details. + + Args: + filename (str): The path to the IdentityPool external account json file. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.identity_pool.Credentials: The constructed + credentials. + """ + return super(Credentials, cls).from_file(filename, **kwargs) + + def refresh(self, request): + """Refreshes the access token. + + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + """ + from google.auth import _agent_identity_utils + + cert_fingerprint = None + # Check if the credential is X.509 based. + if self._credential_source_certificate is not None: + cert_bytes = self._get_cert_bytes() + cert = _agent_identity_utils.parse_certificate(cert_bytes) + if _agent_identity_utils.should_request_bound_token(cert): + cert_fingerprint = ( + _agent_identity_utils.calculate_certificate_fingerprint(cert) + ) + + self._perform_refresh_token(request, cert_fingerprint=cert_fingerprint) diff --git a/intelliaide/vendor/google/auth/impersonated_credentials.py b/intelliaide/vendor/google/auth/impersonated_credentials.py new file mode 100644 index 0000000..45db79d --- /dev/null +++ b/intelliaide/vendor/google/auth/impersonated_credentials.py @@ -0,0 +1,713 @@ +# Copyright 2018 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Google Cloud Impersonated credentials. + +This module provides authentication for applications where local credentials +impersonates a remote service account using `IAM Credentials API`_. + +This class can be used to impersonate a service account as long as the original +Credential object has the "Service Account Token Creator" role on the target +service account. + + .. _IAM Credentials API: + https://cloud.google.com/iam/credentials/reference/rest/ +""" + +import base64 +import copy +from datetime import datetime +import http.client as http_client +import json +import logging +from typing import Optional, TYPE_CHECKING + + +from google.auth import _exponential_backoff +from google.auth import _helpers +from google.auth import credentials +from google.auth import exceptions +from google.auth import iam +from google.auth import jwt +from google.auth import metrics +from google.oauth2 import _client + +if TYPE_CHECKING: # pragma: NO COVER + import google.auth.transport + +_LOGGER = logging.getLogger(__name__) + +_REFRESH_ERROR = "Unable to acquire impersonated credentials" + +_DEFAULT_TOKEN_LIFETIME_SECS = 3600 # 1 hour in seconds + +_GOOGLE_OAUTH2_TOKEN_ENDPOINT = "https://oauth2.googleapis.com/token" + + +_SOURCE_CREDENTIAL_AUTHORIZED_USER_TYPE = "authorized_user" +_SOURCE_CREDENTIAL_SERVICE_ACCOUNT_TYPE = "service_account" +_SOURCE_CREDENTIAL_EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE = ( + "external_account_authorized_user" +) + + +def _make_iam_token_request( + request, + principal, + headers, + body, + universe_domain=credentials.DEFAULT_UNIVERSE_DOMAIN, + iam_endpoint_override=None, +): + """Makes a request to the Google Cloud IAM service for an access token. + Args: + request (Request): The Request object to use. + principal (str): The principal to request an access token for. + headers (Mapping[str, str]): Map of headers to transmit. + body (Mapping[str, str]): JSON Payload body for the iamcredentials + API call. + iam_endpoint_override (Optiona[str]): The full IAM endpoint override + with the target_principal embedded. This is useful when supporting + impersonation with regional endpoints. + + Raises: + google.auth.exceptions.TransportError: Raised if there is an underlying + HTTP connection error + google.auth.exceptions.RefreshError: Raised if the impersonated + credentials are not available. Common reasons are + `iamcredentials.googleapis.com` is not enabled or the + `Service Account Token Creator` is not assigned + """ + iam_endpoint = iam_endpoint_override or iam._IAM_ENDPOINT.replace( + credentials.DEFAULT_UNIVERSE_DOMAIN, universe_domain + ).format(principal) + + body = json.dumps(body).encode("utf-8") + + response = request(url=iam_endpoint, method="POST", headers=headers, body=body) + + # support both string and bytes type response.data + response_body = ( + response.data.decode("utf-8") + if hasattr(response.data, "decode") + else response.data + ) + + if response.status != http_client.OK: + raise exceptions.RefreshError(_REFRESH_ERROR, response_body) + + try: + token_response = json.loads(response_body) + token = token_response["accessToken"] + expiry = datetime.strptime(token_response["expireTime"], "%Y-%m-%dT%H:%M:%SZ") + + return token, expiry + + except (KeyError, ValueError) as caught_exc: + new_exc = exceptions.RefreshError( + "{}: No access token or invalid expiration in response.".format( + _REFRESH_ERROR + ), + response_body, + ) + raise new_exc from caught_exc + + +class Credentials( + credentials.Scoped, + credentials.CredentialsWithQuotaProject, + credentials.Signing, + credentials.CredentialsWithRegionalAccessBoundary, +): + """This module defines impersonated credentials which are essentially + impersonated identities. + + Impersonated Credentials allows credentials issued to a user or + service account to impersonate another. The target service account must + grant the originating credential principal the + `Service Account Token Creator`_ IAM role: + + For more information about Token Creator IAM role and + IAMCredentials API, see + `Creating Short-Lived Service Account Credentials`_. + + .. _Service Account Token Creator: + https://cloud.google.com/iam/docs/service-accounts#the_service_account_token_creator_role + + .. _Creating Short-Lived Service Account Credentials: + https://cloud.google.com/iam/docs/creating-short-lived-service-account-credentials + + Usage: + + First grant source_credentials the `Service Account Token Creator` + role on the target account to impersonate. In this example, the + service account represented by svc_account.json has the + token creator role on + `impersonated-account@_project_.iam.gserviceaccount.com`. + + Enable the IAMCredentials API on the source project: + `gcloud services enable iamcredentials.googleapis.com`. + + Initialize a source credential which does not have access to + list bucket:: + + from google.oauth2 import service_account + + target_scopes = [ + 'https://www.googleapis.com/auth/devstorage.read_only'] + + source_credentials = ( + service_account.Credentials.from_service_account_file( + '/path/to/svc_account.json', + scopes=target_scopes)) + + Now use the source credentials to acquire credentials to impersonate + another service account:: + + from google.auth import impersonated_credentials + + target_credentials = impersonated_credentials.Credentials( + source_credentials=source_credentials, + target_principal='impersonated-account@_project_.iam.gserviceaccount.com', + target_scopes = target_scopes, + lifetime=500) + + Resource access is granted:: + + client = storage.Client(credentials=target_credentials) + buckets = client.list_buckets(project='your_project') + for bucket in buckets: + print(bucket.name) + + **IMPORTANT**: + This class does not validate the credential configuration. A security + risk occurs when a credential configuration configured with malicious urls + is used. + When the credential configuration is accepted from an + untrusted source, you should validate it before using. + Refer https://cloud.google.com/docs/authentication/external/externally-sourced-credentials for more details. + """ + + def __init__( + self, + source_credentials, + target_principal, + target_scopes, + delegates=None, + subject=None, + lifetime=_DEFAULT_TOKEN_LIFETIME_SECS, + quota_project_id=None, + iam_endpoint_override=None, + trust_boundary=None, + ): + """ + Args: + source_credentials (google.auth.Credentials): The source credential + used as to acquire the impersonated credentials. + target_principal (str): The service account to impersonate. + target_scopes (Sequence[str]): Scopes to request during the + authorization grant. + delegates (Sequence[str]): The chained list of delegates required + to grant the final access_token. If set, the sequence of + identities must have "Service Account Token Creator" capability + granted to the prceeding identity. For example, if set to + [serviceAccountB, serviceAccountC], the source_credential + must have the Token Creator role on serviceAccountB. + serviceAccountB must have the Token Creator on + serviceAccountC. + Finally, C must have Token Creator on target_principal. + If left unset, source_credential must have that role on + target_principal. + lifetime (int): Number of seconds the delegated credential should + be valid for (upto 3600). + quota_project_id (Optional[str]): The project ID used for quota and billing. + This project may be different from the project used to + create the credentials. + iam_endpoint_override (Optional[str]): The full IAM endpoint override + with the target_principal embedded. This is useful when supporting + impersonation with regional endpoints. + subject (Optional[str]): sub field of a JWT. This field should only be set + if you wish to impersonate as a user. This feature is useful when + using domain wide delegation. + trust_boundary (Mapping[str,str]): A credential trust boundary. + """ + + super(Credentials, self).__init__() + + self._source_credentials = copy.copy(source_credentials) + # Service account source credentials must have the _IAM_SCOPE + # added to refresh correctly. User credentials cannot have + # their original scopes modified. + if isinstance(self._source_credentials, credentials.Scoped): + self._source_credentials = self._source_credentials.with_scopes( + iam._IAM_SCOPE + ) + # If the source credential is service account and self signed jwt + # is needed, we need to create a jwt credential inside it + if ( + hasattr(self._source_credentials, "_create_self_signed_jwt") + and self._source_credentials._always_use_jwt_access + ): + self._source_credentials._create_self_signed_jwt(None) + + self._universe_domain = source_credentials.universe_domain + self._target_principal = target_principal + self._target_scopes = target_scopes + self._delegates = delegates + self._subject = subject + self._lifetime = lifetime or _DEFAULT_TOKEN_LIFETIME_SECS + self.token = None + self.expiry = _helpers.utcnow() + self._quota_project_id = quota_project_id + self._iam_endpoint_override = iam_endpoint_override + self._cred_file_path = None + + self._trust_boundary = trust_boundary + + def _metric_header_for_usage(self): + return metrics.CRED_TYPE_SA_IMPERSONATE + + def _perform_refresh_token(self, request): + """Updates credentials with a new access_token representing + the impersonated account. + + Args: + request (google.auth.transport.requests.Request): Request object + to use for refreshing credentials. + """ + + # Refresh our source credentials if it is not valid. + if ( + self._source_credentials.token_state == credentials.TokenState.STALE + or self._source_credentials.token_state == credentials.TokenState.INVALID + ): + self._source_credentials.refresh(request) + + body = { + "delegates": self._delegates, + "scope": self._target_scopes, + "lifetime": str(self._lifetime) + "s", + } + + headers = { + "Content-Type": "application/json", + metrics.API_CLIENT_HEADER: metrics.token_request_access_token_impersonate(), + } + + # Apply the source credentials authentication info. + self._source_credentials.apply(headers) + + # If a subject is specified a domain-wide delegation auth-flow is initiated + # to impersonate as the provided subject (user). + if self._subject: + if self.universe_domain != credentials.DEFAULT_UNIVERSE_DOMAIN: + raise exceptions.GoogleAuthError( + "Domain-wide delegation is not supported in universes other " + + "than googleapis.com" + ) + + now = _helpers.utcnow() + payload = { + "iss": self._target_principal, + "scope": _helpers.scopes_to_string(self._target_scopes or ()), + "sub": self._subject, + "aud": _GOOGLE_OAUTH2_TOKEN_ENDPOINT, + "iat": _helpers.datetime_to_secs(now), + "exp": _helpers.datetime_to_secs(now) + _DEFAULT_TOKEN_LIFETIME_SECS, + } + + assertion = _sign_jwt_request( + request=request, + principal=self._target_principal, + headers=headers, + payload=payload, + delegates=self._delegates, + ) + + self.token, self.expiry, _ = _client.jwt_grant( + request, _GOOGLE_OAUTH2_TOKEN_ENDPOINT, assertion + ) + + return + + self.token, self.expiry = _make_iam_token_request( + request=request, + principal=self._target_principal, + headers=headers, + body=body, + universe_domain=self.universe_domain, + iam_endpoint_override=self._iam_endpoint_override, + ) + + def _build_regional_access_boundary_lookup_url( + self, request: "Optional[google.auth.transport.Request]" = None # noqa: F821 + ): + """Builds and returns the URL for the Regional Access Boundary lookup API. + + This method constructs the specific URL for the IAM Credentials API's + `allowedLocations` endpoint, using the credential's universe domain + and service account email. + + Returns: + Optional[str]: The URL for the Regional Access Boundary lookup endpoint, or None + if the service account email is missing. + """ + if not self.service_account_email: + _LOGGER.error( + "Service account email is required to build the Regional Access Boundary lookup URL for impersonated credentials." + ) + return None + return iam._SERVICE_ACCOUNT_REGIONAL_ACCESS_BOUNDARY_LOOKUP_ENDPOINT.format( + service_account_email=self.service_account_email + ) + + def sign_bytes(self, message): + from google.auth.transport.requests import AuthorizedSession + + iam_sign_endpoint = iam._IAM_SIGN_ENDPOINT.replace( + credentials.DEFAULT_UNIVERSE_DOMAIN, self.universe_domain + ).format(self._target_principal) + + body = { + "payload": base64.b64encode(message).decode("utf-8"), + "delegates": self._delegates, + } + + headers = {"Content-Type": "application/json"} + + authed_session = AuthorizedSession(self._source_credentials) + + try: + retries = _exponential_backoff.ExponentialBackoff() + for _ in retries: + response = authed_session.post( + url=iam_sign_endpoint, headers=headers, json=body + ) + if response.status_code in iam.IAM_RETRY_CODES: + continue + if response.status_code != http_client.OK: + raise exceptions.TransportError( + "Error calling sign_bytes: {}".format(response.json()) + ) + + return base64.b64decode(response.json()["signedBlob"]) + finally: + authed_session.close() + raise exceptions.TransportError("exhausted signBlob endpoint retries") + + @property + def signer_email(self): + return self._target_principal + + @property + def service_account_email(self): + return self._target_principal + + @property + def signer(self): + return self + + @property + def requires_scopes(self): + return not self._target_scopes + + @_helpers.copy_docstring(credentials.Credentials) + def get_cred_info(self): + if self._cred_file_path: + return { + "credential_source": self._cred_file_path, + "credential_type": "impersonated credentials", + "principal": self._target_principal, + } + return None + + def _make_copy(self): + cred = self.__class__( + self._source_credentials, + target_principal=self._target_principal, + target_scopes=self._target_scopes, + delegates=self._delegates, + lifetime=self._lifetime, + quota_project_id=self._quota_project_id, + iam_endpoint_override=self._iam_endpoint_override, + trust_boundary=self._trust_boundary, + ) + cred._cred_file_path = self._cred_file_path + self._copy_regional_access_boundary_manager(cred) + return cred + + @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) + def with_quota_project(self, quota_project_id): + cred = self._make_copy() + cred._quota_project_id = quota_project_id + return cred + + @_helpers.copy_docstring(credentials.Scoped) + def with_scopes(self, scopes, default_scopes=None): + cred = self._make_copy() + cred._target_scopes = scopes or default_scopes + return cred + + @classmethod + def from_impersonated_service_account_info(cls, info, scopes=None): + """Creates a Credentials instance from parsed impersonated service account credentials info. + + **IMPORTANT**: + This method does not validate the credential configuration. A security + risk occurs when a credential configuration configured with malicious urls + is used. + When the credential configuration is accepted from an + untrusted source, you should validate it before using with this method. + Refer https://cloud.google.com/docs/authentication/external/externally-sourced-credentials for more details. + + Args: + info (Mapping[str, str]): The impersonated service account credentials info in Google + format. + scopes (Sequence[str]): Optional list of scopes to include in the + credentials. + + Returns: + google.oauth2.credentials.Credentials: The constructed + credentials. + + Raises: + InvalidType: If the info["source_credentials"] are not a supported impersonation type + InvalidValue: If the info["service_account_impersonation_url"] is not in the expected format. + ValueError: If the info is not in the expected format. + """ + + source_credentials_info = info.get("source_credentials") + source_credentials_type = source_credentials_info.get("type") + if source_credentials_type == _SOURCE_CREDENTIAL_AUTHORIZED_USER_TYPE: + from google.oauth2 import credentials + + source_credentials = credentials.Credentials.from_authorized_user_info( + source_credentials_info + ) + elif source_credentials_type == _SOURCE_CREDENTIAL_SERVICE_ACCOUNT_TYPE: + from google.oauth2 import service_account + + source_credentials = service_account.Credentials.from_service_account_info( + source_credentials_info + ) + elif ( + source_credentials_type + == _SOURCE_CREDENTIAL_EXTERNAL_ACCOUNT_AUTHORIZED_USER_TYPE + ): + from google.auth import external_account_authorized_user + + source_credentials = external_account_authorized_user.Credentials.from_info( + source_credentials_info + ) + else: + raise exceptions.InvalidType( + "source credential of type {} is not supported.".format( + source_credentials_type + ) + ) + + impersonation_url = info.get("service_account_impersonation_url") + start_index = impersonation_url.rfind("/") + end_index = impersonation_url.find(":generateAccessToken") + if start_index == -1 or end_index == -1 or start_index > end_index: + raise exceptions.InvalidValue( + "Cannot extract target principal from {}".format(impersonation_url) + ) + target_principal = impersonation_url[start_index + 1 : end_index] + delegates = info.get("delegates") + quota_project_id = info.get("quota_project_id") + scopes = scopes or info.get("scopes") + trust_boundary = info.get("trust_boundary") + + return cls( + source_credentials, + target_principal, + scopes, + delegates, + quota_project_id=quota_project_id, + trust_boundary=trust_boundary, + ) + + +class IDTokenCredentials(credentials.CredentialsWithQuotaProject): + """Open ID Connect ID Token-based service account credentials.""" + + def __init__( + self, + target_credentials, + target_audience=None, + include_email=False, + quota_project_id=None, + ): + """ + Args: + target_credentials (google.auth.Credentials): The target + credential used as to acquire the id tokens for. + target_audience (string): Audience to issue the token for. + include_email (bool): Include email in IdToken + quota_project_id (Optional[str]): The project ID used for + quota and billing. + """ + super(IDTokenCredentials, self).__init__() + + if not isinstance(target_credentials, Credentials): + raise exceptions.GoogleAuthError( + "Provided Credential must be " "impersonated_credentials" + ) + self._target_credentials = target_credentials + self._target_audience = target_audience + self._include_email = include_email + self._quota_project_id = quota_project_id + + def from_credentials(self, target_credentials, target_audience=None): + return self.__class__( + target_credentials=target_credentials, + target_audience=target_audience, + include_email=self._include_email, + quota_project_id=self._quota_project_id, + ) + + def with_target_audience(self, target_audience): + return self.__class__( + target_credentials=self._target_credentials, + target_audience=target_audience, + include_email=self._include_email, + quota_project_id=self._quota_project_id, + ) + + def with_include_email(self, include_email): + return self.__class__( + target_credentials=self._target_credentials, + target_audience=self._target_audience, + include_email=include_email, + quota_project_id=self._quota_project_id, + ) + + @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) + def with_quota_project(self, quota_project_id): + return self.__class__( + target_credentials=self._target_credentials, + target_audience=self._target_audience, + include_email=self._include_email, + quota_project_id=quota_project_id, + ) + + @_helpers.copy_docstring(credentials.Credentials) + def refresh(self, request): + from google.auth.transport.requests import AuthorizedSession + + iam_sign_endpoint = iam._IAM_IDTOKEN_ENDPOINT.replace( + credentials.DEFAULT_UNIVERSE_DOMAIN, + self._target_credentials.universe_domain, + ).format(self._target_credentials.signer_email) + + body = { + "audience": self._target_audience, + "delegates": self._target_credentials._delegates, + "includeEmail": self._include_email, + } + + headers = { + "Content-Type": "application/json", + metrics.API_CLIENT_HEADER: metrics.token_request_id_token_impersonate(), + } + + authed_session = AuthorizedSession( + self._target_credentials._source_credentials, auth_request=request + ) + + try: + response = authed_session.post( + url=iam_sign_endpoint, + headers=headers, + data=json.dumps(body).encode("utf-8"), + ) + finally: + authed_session.close() + + if response.status_code != http_client.OK: + raise exceptions.RefreshError( + "Error getting ID token: {}".format(response.json()) + ) + + try: + id_token = response.json()["token"] + except (KeyError, ValueError) as caught_exc: + new_exc = exceptions.RefreshError( + "No ID token in response.", response.json() + ) + raise new_exc from caught_exc + + self.token = id_token + self.expiry = _helpers.utcfromtimestamp( + jwt.decode(id_token, verify=False)["exp"] + ) + + +def _sign_jwt_request(request, principal, headers, payload, delegates=[]): + """Makes a request to the Google Cloud IAM service to sign a JWT using a + service account's system-managed private key. + Args: + request (Request): The Request object to use. + principal (str): The principal to request an access token for. + headers (Mapping[str, str]): Map of headers to transmit. + payload (Mapping[str, str]): The JWT payload to sign. Must be a + serialized JSON object that contains a JWT Claims Set. + delegates (Sequence[str]): The chained list of delegates required + to grant the final access_token. If set, the sequence of + identities must have "Service Account Token Creator" capability + granted to the prceeding identity. For example, if set to + [serviceAccountB, serviceAccountC], the source_credential + must have the Token Creator role on serviceAccountB. + serviceAccountB must have the Token Creator on + serviceAccountC. + Finally, C must have Token Creator on target_principal. + If left unset, source_credential must have that role on + target_principal. + + Raises: + google.auth.exceptions.TransportError: Raised if there is an underlying + HTTP connection error + google.auth.exceptions.RefreshError: Raised if the impersonated + credentials are not available. Common reasons are + `iamcredentials.googleapis.com` is not enabled or the + `Service Account Token Creator` is not assigned + """ + iam_endpoint = iam._IAM_SIGNJWT_ENDPOINT.format(principal) + + body = {"delegates": delegates, "payload": json.dumps(payload)} + body = json.dumps(body).encode("utf-8") + + response = request(url=iam_endpoint, method="POST", headers=headers, body=body) + + # support both string and bytes type response.data + response_body = ( + response.data.decode("utf-8") + if hasattr(response.data, "decode") + else response.data + ) + + if response.status != http_client.OK: + raise exceptions.RefreshError(_REFRESH_ERROR, response_body) + + try: + jwt_response = json.loads(response_body) + signed_jwt = jwt_response["signedJwt"] + return signed_jwt + + except (KeyError, ValueError) as caught_exc: + new_exc = exceptions.RefreshError( + "{}: No signed JWT in response.".format(_REFRESH_ERROR), response_body + ) + raise new_exc from caught_exc diff --git a/intelliaide/vendor/google/auth/jwt.py b/intelliaide/vendor/google/auth/jwt.py new file mode 100644 index 0000000..b6fe607 --- /dev/null +++ b/intelliaide/vendor/google/auth/jwt.py @@ -0,0 +1,877 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""JSON Web Tokens + +Provides support for creating (encoding) and verifying (decoding) JWTs, +especially JWTs generated and consumed by Google infrastructure. + +See `rfc7519`_ for more details on JWTs. + +To encode a JWT use :func:`encode`:: + + from google.auth import crypt + from google.auth import jwt + + signer = crypt.Signer(private_key) + payload = {'some': 'payload'} + encoded = jwt.encode(signer, payload) + +To decode a JWT and verify claims use :func:`decode`:: + + claims = jwt.decode(encoded, certs=public_certs) + +You can also skip verification:: + + claims = jwt.decode(encoded, verify=False) + +.. _rfc7519: https://tools.ietf.org/html/rfc7519 + +""" + +try: + from collections.abc import Mapping +# Python 2.7 compatibility +except ImportError: # pragma: NO COVER + from collections import Mapping # type: ignore +import copy +import datetime +import json +import urllib + +from google.auth import _cache +from google.auth import _helpers +from google.auth import _service_account_info +from google.auth import crypt +from google.auth import exceptions +import google.auth.credentials + +try: + from google.auth.crypt import es +except ImportError: # pragma: NO COVER + es = None # type: ignore + +_DEFAULT_TOKEN_LIFETIME_SECS = 3600 # 1 hour in seconds +_DEFAULT_MAX_CACHE_SIZE = 10 +_ALGORITHM_TO_VERIFIER_CLASS = {"RS256": crypt.RSAVerifier} +_CRYPTOGRAPHY_BASED_ALGORITHMS = frozenset(["ES256", "ES384"]) + +if es is not None: # pragma: NO COVER + _ALGORITHM_TO_VERIFIER_CLASS["ES256"] = es.EsVerifier # type: ignore + _ALGORITHM_TO_VERIFIER_CLASS["ES384"] = es.EsVerifier # type: ignore + + +def encode(signer, payload, header=None, key_id=None): + """Make a signed JWT. + + Args: + signer (google.auth.crypt.Signer): The signer used to sign the JWT. + payload (Mapping[str, str]): The JWT payload. + header (Mapping[str, str]): Additional JWT header payload. + key_id (str): The key id to add to the JWT header. If the + signer has a key id it will be used as the default. If this is + specified it will override the signer's key id. + + Returns: + bytes: The encoded JWT. + """ + if header is None: + header = {} + + if key_id is None: + key_id = signer.key_id + + header.update({"typ": "JWT"}) + + if "alg" not in header: + if es is not None and isinstance(signer, es.EsSigner): + header.update({"alg": signer.algorithm}) + else: + header.update({"alg": "RS256"}) + + if key_id is not None: + header["kid"] = key_id + + segments = [ + _helpers.unpadded_urlsafe_b64encode(json.dumps(header).encode("utf-8")), + _helpers.unpadded_urlsafe_b64encode(json.dumps(payload).encode("utf-8")), + ] + + signing_input = b".".join(segments) + signature = signer.sign(signing_input) + segments.append(_helpers.unpadded_urlsafe_b64encode(signature)) + + return b".".join(segments) + + +def _decode_jwt_segment(encoded_section): + """Decodes a single JWT segment.""" + section_bytes = _helpers.padded_urlsafe_b64decode(encoded_section) + try: + return json.loads(section_bytes.decode("utf-8")) + except ValueError as caught_exc: + new_exc = exceptions.MalformedError( + "Can't parse segment: {0}".format(section_bytes) + ) + raise new_exc from caught_exc + + +def _unverified_decode(token): + """Decodes a token and does no verification. + + Args: + token (Union[str, bytes]): The encoded JWT. + + Returns: + Tuple[Mapping, Mapping, str, str]: header, payload, signed_section, and + signature. + + Raises: + google.auth.exceptions.MalformedError: if there are an incorrect amount of segments in the token or segments of the wrong type. + """ + token = _helpers.to_bytes(token) + + if token.count(b".") != 2: + raise exceptions.MalformedError( + "Wrong number of segments in token: {0}".format(token) + ) + + encoded_header, encoded_payload, signature = token.split(b".") + signed_section = encoded_header + b"." + encoded_payload + signature = _helpers.padded_urlsafe_b64decode(signature) + + # Parse segments + header = _decode_jwt_segment(encoded_header) + payload = _decode_jwt_segment(encoded_payload) + + if not isinstance(header, Mapping): + raise exceptions.MalformedError( + "Header segment should be a JSON object: {0}".format(encoded_header) + ) + + if not isinstance(payload, Mapping): + raise exceptions.MalformedError( + "Payload segment should be a JSON object: {0}".format(encoded_payload) + ) + + return header, payload, signed_section, signature + + +def decode_header(token): + """Return the decoded header of a token. + + No verification is done. This is useful to extract the key id from + the header in order to acquire the appropriate certificate to verify + the token. + + Args: + token (Union[str, bytes]): the encoded JWT. + + Returns: + Mapping: The decoded JWT header. + """ + header, _, _, _ = _unverified_decode(token) + return header + + +def _verify_iat_and_exp(payload, clock_skew_in_seconds=0): + """Verifies the ``iat`` (Issued At) and ``exp`` (Expires) claims in a token + payload. + + Args: + payload (Mapping[str, str]): The JWT payload. + clock_skew_in_seconds (int): The clock skew used for `iat` and `exp` + validation. + + Raises: + google.auth.exceptions.InvalidValue: if value validation failed. + google.auth.exceptions.MalformedError: if schema validation failed. + """ + now = _helpers.datetime_to_secs(_helpers.utcnow()) + + # Make sure the iat and exp claims are present. + for key in ("iat", "exp"): + if key not in payload: + raise exceptions.MalformedError( + "Token does not contain required claim {}".format(key) + ) + + # Make sure the token wasn't issued in the future. + iat = payload["iat"] + # Err on the side of accepting a token that is slightly early to account + # for clock skew. + earliest = iat - clock_skew_in_seconds + if now < earliest: + raise exceptions.InvalidValue( + "Token used too early, {} < {}. Check that your computer's clock is set correctly.".format( + now, iat + ) + ) + + # Make sure the token wasn't issued in the past. + exp = payload["exp"] + # Err on the side of accepting a token that is slightly out of date + # to account for clow skew. + latest = exp + clock_skew_in_seconds + if latest < now: + raise exceptions.InvalidValue("Token expired, {} < {}".format(latest, now)) + + +def decode(token, certs=None, verify=True, audience=None, clock_skew_in_seconds=0): + """Decode and verify a JWT. + + Args: + token (str): The encoded JWT. + certs (Union[str, bytes, Mapping[str, Union[str, bytes]]]): The + certificate used to validate the JWT signature. If bytes or string, + it must the the public key certificate in PEM format. If a mapping, + it must be a mapping of key IDs to public key certificates in PEM + format. The mapping must contain the same key ID that's specified + in the token's header. + verify (bool): Whether to perform signature and claim validation. + Verification is done by default. + audience (str or list): The audience claim, 'aud', that this JWT should + contain. Or a list of audience claims. If None then the JWT's 'aud' + parameter is not verified. + clock_skew_in_seconds (int): The clock skew used for `iat` and `exp` + validation. + + Returns: + Mapping[str, str]: The deserialized JSON payload in the JWT. + + Raises: + google.auth.exceptions.InvalidValue: if value validation failed. + google.auth.exceptions.MalformedError: if schema validation failed. + """ + header, payload, signed_section, signature = _unverified_decode(token) + + if not verify: + return payload + + # Pluck the key id and algorithm from the header and make sure we have + # a verifier that can support it. + key_alg = header.get("alg") + key_id = header.get("kid") + + try: + verifier_cls = _ALGORITHM_TO_VERIFIER_CLASS[key_alg] + except KeyError as exc: + if key_alg in _CRYPTOGRAPHY_BASED_ALGORITHMS: + raise exceptions.InvalidValue( + "The key algorithm {} requires the cryptography package to be installed.".format( + key_alg + ) + ) from exc + else: + raise exceptions.InvalidValue( + "Unsupported signature algorithm {}".format(key_alg) + ) from exc + # If certs is specified as a dictionary of key IDs to certificates, then + # use the certificate identified by the key ID in the token header. + if isinstance(certs, Mapping): + if key_id: + if key_id not in certs: + raise exceptions.MalformedError( + "Certificate for key id {} not found.".format(key_id) + ) + certs_to_check = [certs[key_id]] + # If there's no key id in the header, check against all of the certs. + else: + certs_to_check = certs.values() + else: + certs_to_check = certs + + # Verify that the signature matches the message. + if not crypt.verify_signature( + signed_section, signature, certs_to_check, verifier_cls + ): + raise exceptions.MalformedError("Could not verify token signature.") + + # Verify the issued at and created times in the payload. + _verify_iat_and_exp(payload, clock_skew_in_seconds) + + # Check audience. + if audience is not None: + claim_audience = payload.get("aud") + if isinstance(audience, str): + audience = [audience] + if claim_audience not in audience: + raise exceptions.InvalidValue( + "Token has wrong audience {}, expected one of {}".format( + claim_audience, audience + ) + ) + + return payload + + +class Credentials( + google.auth.credentials.Signing, google.auth.credentials.CredentialsWithQuotaProject +): + """Credentials that use a JWT as the bearer token. + + These credentials require an "audience" claim. This claim identifies the + intended recipient of the bearer token. + + The constructor arguments determine the claims for the JWT that is + sent with requests. Usually, you'll construct these credentials with + one of the helper constructors as shown in the next section. + + To create JWT credentials using a Google service account private key + JSON file:: + + audience = 'https://pubsub.googleapis.com/google.pubsub.v1.Publisher' + credentials = jwt.Credentials.from_service_account_file( + 'service-account.json', + audience=audience) + + If you already have the service account file loaded and parsed:: + + service_account_info = json.load(open('service_account.json')) + credentials = jwt.Credentials.from_service_account_info( + service_account_info, + audience=audience) + + Both helper methods pass on arguments to the constructor, so you can + specify the JWT claims:: + + credentials = jwt.Credentials.from_service_account_file( + 'service-account.json', + audience=audience, + additional_claims={'meta': 'data'}) + + You can also construct the credentials directly if you have a + :class:`~google.auth.crypt.Signer` instance:: + + credentials = jwt.Credentials( + signer, + issuer='your-issuer', + subject='your-subject', + audience=audience) + + The claims are considered immutable. If you want to modify the claims, + you can easily create another instance using :meth:`with_claims`:: + + new_audience = ( + 'https://pubsub.googleapis.com/google.pubsub.v1.Subscriber') + new_credentials = credentials.with_claims(audience=new_audience) + """ + + def __init__( + self, + signer, + issuer, + subject, + audience, + additional_claims=None, + token_lifetime=_DEFAULT_TOKEN_LIFETIME_SECS, + quota_project_id=None, + ): + """ + Args: + signer (google.auth.crypt.Signer): The signer used to sign JWTs. + issuer (str): The `iss` claim. + subject (str): The `sub` claim. + audience (str): the `aud` claim. The intended audience for the + credentials. + additional_claims (Mapping[str, str]): Any additional claims for + the JWT payload. + token_lifetime (int): The amount of time in seconds for + which the token is valid. Defaults to 1 hour. + quota_project_id (Optional[str]): The project ID used for quota + and billing. + """ + super(Credentials, self).__init__() + self._signer = signer + self._issuer = issuer + self._subject = subject + self._audience = audience + self._token_lifetime = token_lifetime + self._quota_project_id = quota_project_id + + if additional_claims is None: + additional_claims = {} + + self._additional_claims = additional_claims + + @classmethod + def _from_signer_and_info(cls, signer, info, **kwargs): + """Creates a Credentials instance from a signer and service account + info. + + Args: + signer (google.auth.crypt.Signer): The signer used to sign JWTs. + info (Mapping[str, str]): The service account info. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.jwt.Credentials: The constructed credentials. + + Raises: + google.auth.exceptions.MalformedError: If the info is not in the expected format. + """ + kwargs.setdefault("subject", info["client_email"]) + kwargs.setdefault("issuer", info["client_email"]) + return cls(signer, **kwargs) + + @classmethod + def from_service_account_info(cls, info, **kwargs): + """Creates an Credentials instance from a dictionary. + + Args: + info (Mapping[str, str]): The service account info in Google + format. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.jwt.Credentials: The constructed credentials. + + Raises: + google.auth.exceptions.MalformedError: If the info is not in the expected format. + """ + signer = _service_account_info.from_dict(info, require=["client_email"]) + return cls._from_signer_and_info(signer, info, **kwargs) + + @classmethod + def from_service_account_file(cls, filename, **kwargs): + """Creates a Credentials instance from a service account .json file + in Google format. + + Args: + filename (str): The path to the service account .json file. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.jwt.Credentials: The constructed credentials. + """ + info, signer = _service_account_info.from_filename( + filename, require=["client_email"] + ) + return cls._from_signer_and_info(signer, info, **kwargs) + + @classmethod + def from_signing_credentials(cls, credentials, audience, **kwargs): + """Creates a new :class:`google.auth.jwt.Credentials` instance from an + existing :class:`google.auth.credentials.Signing` instance. + + The new instance will use the same signer as the existing instance and + will use the existing instance's signer email as the issuer and + subject by default. + + Example:: + + svc_creds = service_account.Credentials.from_service_account_file( + 'service_account.json') + audience = ( + 'https://pubsub.googleapis.com/google.pubsub.v1.Publisher') + jwt_creds = jwt.Credentials.from_signing_credentials( + svc_creds, audience=audience) + + Args: + credentials (google.auth.credentials.Signing): The credentials to + use to construct the new credentials. + audience (str): the `aud` claim. The intended audience for the + credentials. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.jwt.Credentials: A new Credentials instance. + """ + kwargs.setdefault("issuer", credentials.signer_email) + kwargs.setdefault("subject", credentials.signer_email) + return cls(credentials.signer, audience=audience, **kwargs) + + def with_claims( + self, issuer=None, subject=None, audience=None, additional_claims=None + ): + """Returns a copy of these credentials with modified claims. + + Args: + issuer (str): The `iss` claim. If unspecified the current issuer + claim will be used. + subject (str): The `sub` claim. If unspecified the current subject + claim will be used. + audience (str): the `aud` claim. If unspecified the current + audience claim will be used. + additional_claims (Mapping[str, str]): Any additional claims for + the JWT payload. This will be merged with the current + additional claims. + + Returns: + google.auth.jwt.Credentials: A new credentials instance. + """ + new_additional_claims = copy.deepcopy(self._additional_claims) + new_additional_claims.update(additional_claims or {}) + + return self.__class__( + self._signer, + issuer=issuer if issuer is not None else self._issuer, + subject=subject if subject is not None else self._subject, + audience=audience if audience is not None else self._audience, + additional_claims=new_additional_claims, + quota_project_id=self._quota_project_id, + ) + + @_helpers.copy_docstring(google.auth.credentials.CredentialsWithQuotaProject) + def with_quota_project(self, quota_project_id): + return self.__class__( + self._signer, + issuer=self._issuer, + subject=self._subject, + audience=self._audience, + additional_claims=self._additional_claims, + quota_project_id=quota_project_id, + ) + + def _make_jwt(self): + """Make a signed JWT. + + Returns: + Tuple[bytes, datetime]: The encoded JWT and the expiration. + """ + now = _helpers.utcnow() + lifetime = datetime.timedelta(seconds=self._token_lifetime) + expiry = now + lifetime + + payload = { + "iss": self._issuer, + "sub": self._subject, + "iat": _helpers.datetime_to_secs(now), + "exp": _helpers.datetime_to_secs(expiry), + } + if self._audience: + payload["aud"] = self._audience + + payload.update(self._additional_claims) + + jwt = encode(self._signer, payload) + + return jwt, expiry + + def refresh(self, request): + """Refreshes the access token. + + Args: + request (Any): Unused. + """ + # pylint: disable=unused-argument + # (pylint doesn't correctly recognize overridden methods.) + self.token, self.expiry = self._make_jwt() + + @_helpers.copy_docstring(google.auth.credentials.Signing) + def sign_bytes(self, message): + return self._signer.sign(message) + + @property # type: ignore + @_helpers.copy_docstring(google.auth.credentials.Signing) + def signer_email(self): + return self._issuer + + @property # type: ignore + @_helpers.copy_docstring(google.auth.credentials.Signing) + def signer(self): + return self._signer + + @property # type: ignore + def additional_claims(self): + """Additional claims the JWT object was created with.""" + return self._additional_claims + + +class OnDemandCredentials( + google.auth.credentials.Signing, google.auth.credentials.CredentialsWithQuotaProject +): + """On-demand JWT credentials. + + Like :class:`Credentials`, this class uses a JWT as the bearer token for + authentication. However, this class does not require the audience at + construction time. Instead, it will generate a new token on-demand for + each request using the request URI as the audience. It caches tokens + so that multiple requests to the same URI do not incur the overhead + of generating a new token every time. + + This behavior is especially useful for `gRPC`_ clients. A gRPC service may + have multiple audience and gRPC clients may not know all of the audiences + required for accessing a particular service. With these credentials, + no knowledge of the audiences is required ahead of time. + + .. _grpc: http://www.grpc.io/ + """ + + def __init__( + self, + signer, + issuer, + subject, + additional_claims=None, + token_lifetime=_DEFAULT_TOKEN_LIFETIME_SECS, + max_cache_size=_DEFAULT_MAX_CACHE_SIZE, + quota_project_id=None, + ): + """ + Args: + signer (google.auth.crypt.Signer): The signer used to sign JWTs. + issuer (str): The `iss` claim. + subject (str): The `sub` claim. + additional_claims (Mapping[str, str]): Any additional claims for + the JWT payload. + token_lifetime (int): The amount of time in seconds for + which the token is valid. Defaults to 1 hour. + max_cache_size (int): The maximum number of JWT tokens to keep in + cache. Tokens are cached using :class:`google.auth._cache.LRUCache`. + quota_project_id (Optional[str]): The project ID used for quota + and billing. + + """ + super(OnDemandCredentials, self).__init__() + self._signer = signer + self._issuer = issuer + self._subject = subject + self._token_lifetime = token_lifetime + self._quota_project_id = quota_project_id + + if additional_claims is None: + additional_claims = {} + + self._additional_claims = additional_claims + self._cache = _cache.LRUCache(maxsize=max_cache_size) + + @classmethod + def _from_signer_and_info(cls, signer, info, **kwargs): + """Creates an OnDemandCredentials instance from a signer and service + account info. + + Args: + signer (google.auth.crypt.Signer): The signer used to sign JWTs. + info (Mapping[str, str]): The service account info. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.jwt.OnDemandCredentials: The constructed credentials. + + Raises: + google.auth.exceptions.MalformedError: If the info is not in the expected format. + """ + kwargs.setdefault("subject", info["client_email"]) + kwargs.setdefault("issuer", info["client_email"]) + return cls(signer, **kwargs) + + @classmethod + def from_service_account_info(cls, info, **kwargs): + """Creates an OnDemandCredentials instance from a dictionary. + + Args: + info (Mapping[str, str]): The service account info in Google + format. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.jwt.OnDemandCredentials: The constructed credentials. + + Raises: + google.auth.exceptions.MalformedError: If the info is not in the expected format. + """ + signer = _service_account_info.from_dict(info, require=["client_email"]) + return cls._from_signer_and_info(signer, info, **kwargs) + + @classmethod + def from_service_account_file(cls, filename, **kwargs): + """Creates an OnDemandCredentials instance from a service account .json + file in Google format. + + Args: + filename (str): The path to the service account .json file. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.jwt.OnDemandCredentials: The constructed credentials. + """ + info, signer = _service_account_info.from_filename( + filename, require=["client_email"] + ) + return cls._from_signer_and_info(signer, info, **kwargs) + + @classmethod + def from_signing_credentials(cls, credentials, **kwargs): + """Creates a new :class:`google.auth.jwt.OnDemandCredentials` instance + from an existing :class:`google.auth.credentials.Signing` instance. + + The new instance will use the same signer as the existing instance and + will use the existing instance's signer email as the issuer and + subject by default. + + Example:: + + svc_creds = service_account.Credentials.from_service_account_file( + 'service_account.json') + jwt_creds = jwt.OnDemandCredentials.from_signing_credentials( + svc_creds) + + Args: + credentials (google.auth.credentials.Signing): The credentials to + use to construct the new credentials. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.jwt.Credentials: A new Credentials instance. + """ + kwargs.setdefault("issuer", credentials.signer_email) + kwargs.setdefault("subject", credentials.signer_email) + return cls(credentials.signer, **kwargs) + + def with_claims(self, issuer=None, subject=None, additional_claims=None): + """Returns a copy of these credentials with modified claims. + + Args: + issuer (str): The `iss` claim. If unspecified the current issuer + claim will be used. + subject (str): The `sub` claim. If unspecified the current subject + claim will be used. + additional_claims (Mapping[str, str]): Any additional claims for + the JWT payload. This will be merged with the current + additional claims. + + Returns: + google.auth.jwt.OnDemandCredentials: A new credentials instance. + """ + new_additional_claims = copy.deepcopy(self._additional_claims) + new_additional_claims.update(additional_claims or {}) + + return self.__class__( + self._signer, + issuer=issuer if issuer is not None else self._issuer, + subject=subject if subject is not None else self._subject, + additional_claims=new_additional_claims, + max_cache_size=self._cache.maxsize, + quota_project_id=self._quota_project_id, + ) + + @_helpers.copy_docstring(google.auth.credentials.CredentialsWithQuotaProject) + def with_quota_project(self, quota_project_id): + return self.__class__( + self._signer, + issuer=self._issuer, + subject=self._subject, + additional_claims=self._additional_claims, + max_cache_size=self._cache.maxsize, + quota_project_id=quota_project_id, + ) + + @property + def valid(self): + """Checks the validity of the credentials. + + These credentials are always valid because it generates tokens on + demand. + """ + return True + + def _make_jwt_for_audience(self, audience): + """Make a new JWT for the given audience. + + Args: + audience (str): The intended audience. + + Returns: + Tuple[bytes, datetime]: The encoded JWT and the expiration. + """ + now = _helpers.utcnow() + lifetime = datetime.timedelta(seconds=self._token_lifetime) + expiry = now + lifetime + + payload = { + "iss": self._issuer, + "sub": self._subject, + "iat": _helpers.datetime_to_secs(now), + "exp": _helpers.datetime_to_secs(expiry), + "aud": audience, + } + + payload.update(self._additional_claims) + + jwt = encode(self._signer, payload) + + return jwt, expiry + + def _get_jwt_for_audience(self, audience): + """Get a JWT For a given audience. + + If there is already an existing, non-expired token in the cache for + the audience, that token is used. Otherwise, a new token will be + created. + + Args: + audience (str): The intended audience. + + Returns: + bytes: The encoded JWT. + """ + token, expiry = self._cache.get(audience, (None, None)) + + if token is None or expiry < _helpers.utcnow(): + token, expiry = self._make_jwt_for_audience(audience) + self._cache[audience] = token, expiry + + return token + + def refresh(self, request): + """Raises an exception, these credentials can not be directly + refreshed. + + Args: + request (Any): Unused. + + Raises: + google.auth.RefreshError + """ + # pylint: disable=unused-argument + # (pylint doesn't correctly recognize overridden methods.) + raise exceptions.RefreshError( + "OnDemandCredentials can not be directly refreshed." + ) + + def before_request(self, request, method, url, headers): + """Performs credential-specific before request logic. + + Args: + request (Any): Unused. JWT credentials do not need to make an + HTTP request to refresh. + method (str): The request's HTTP method. + url (str): The request's URI. This is used as the audience claim + when generating the JWT. + headers (Mapping): The request's headers. + """ + # pylint: disable=unused-argument + # (pylint doesn't correctly recognize overridden methods.) + parts = urllib.parse.urlsplit(url) + # Strip query string and fragment + audience = urllib.parse.urlunsplit( + (parts.scheme, parts.netloc, parts.path, "", "") + ) + token = self._get_jwt_for_audience(audience) + self.apply(headers, token=token) + + @_helpers.copy_docstring(google.auth.credentials.Signing) + def sign_bytes(self, message): + return self._signer.sign(message) + + @property # type: ignore + @_helpers.copy_docstring(google.auth.credentials.Signing) + def signer_email(self): + return self._issuer + + @property # type: ignore + @_helpers.copy_docstring(google.auth.credentials.Signing) + def signer(self): + return self._signer diff --git a/intelliaide/vendor/google/auth/metrics.py b/intelliaide/vendor/google/auth/metrics.py new file mode 100644 index 0000000..5511f58 --- /dev/null +++ b/intelliaide/vendor/google/auth/metrics.py @@ -0,0 +1,156 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" We use x-goog-api-client header to report metrics. This module provides +the constants and helper methods to construct x-goog-api-client header. +""" + +import platform + +from google.auth import version + + +API_CLIENT_HEADER = "x-goog-api-client" + +# BYOID Specific consts +BYOID_HEADER_SECTION = "google-byoid-sdk" + +# Auth request type +REQUEST_TYPE_ACCESS_TOKEN = "auth-request-type/at" +REQUEST_TYPE_ID_TOKEN = "auth-request-type/it" +REQUEST_TYPE_MDS_PING = "auth-request-type/mds" +REQUEST_TYPE_REAUTH_START = "auth-request-type/re-start" +REQUEST_TYPE_REAUTH_CONTINUE = "auth-request-type/re-cont" + +# Credential type +CRED_TYPE_USER = "cred-type/u" +CRED_TYPE_SA_ASSERTION = "cred-type/sa" +CRED_TYPE_SA_JWT = "cred-type/jwt" +CRED_TYPE_SA_MDS = "cred-type/mds" +CRED_TYPE_SA_IMPERSONATE = "cred-type/imp" + + +# Versions +def python_and_auth_lib_version(): + return "gl-python/{} auth/{}".format(platform.python_version(), version.__version__) + + +# Token request metric header values + + +# x-goog-api-client header value for access token request via metadata server. +# Example: "gl-python/3.7 auth/1.1 auth-request-type/at cred-type/mds" +def token_request_access_token_mds(): + return "{} {} {}".format( + python_and_auth_lib_version(), REQUEST_TYPE_ACCESS_TOKEN, CRED_TYPE_SA_MDS + ) + + +# x-goog-api-client header value for ID token request via metadata server. +# Example: "gl-python/3.7 auth/1.1 auth-request-type/it cred-type/mds" +def token_request_id_token_mds(): + return "{} {} {}".format( + python_and_auth_lib_version(), REQUEST_TYPE_ID_TOKEN, CRED_TYPE_SA_MDS + ) + + +# x-goog-api-client header value for impersonated credentials access token request. +# Example: "gl-python/3.7 auth/1.1 auth-request-type/at cred-type/imp" +def token_request_access_token_impersonate(): + return "{} {} {}".format( + python_and_auth_lib_version(), + REQUEST_TYPE_ACCESS_TOKEN, + CRED_TYPE_SA_IMPERSONATE, + ) + + +# x-goog-api-client header value for impersonated credentials ID token request. +# Example: "gl-python/3.7 auth/1.1 auth-request-type/it cred-type/imp" +def token_request_id_token_impersonate(): + return "{} {} {}".format( + python_and_auth_lib_version(), REQUEST_TYPE_ID_TOKEN, CRED_TYPE_SA_IMPERSONATE + ) + + +# x-goog-api-client header value for service account credentials access token +# request (assertion flow). +# Example: "gl-python/3.7 auth/1.1 auth-request-type/at cred-type/sa" +def token_request_access_token_sa_assertion(): + return "{} {} {}".format( + python_and_auth_lib_version(), REQUEST_TYPE_ACCESS_TOKEN, CRED_TYPE_SA_ASSERTION + ) + + +# x-goog-api-client header value for service account credentials ID token +# request (assertion flow). +# Example: "gl-python/3.7 auth/1.1 auth-request-type/it cred-type/sa" +def token_request_id_token_sa_assertion(): + return "{} {} {}".format( + python_and_auth_lib_version(), REQUEST_TYPE_ID_TOKEN, CRED_TYPE_SA_ASSERTION + ) + + +# x-goog-api-client header value for user credentials token request. +# Example: "gl-python/3.7 auth/1.1 cred-type/u" +def token_request_user(): + return "{} {}".format(python_and_auth_lib_version(), CRED_TYPE_USER) + + +# Miscellenous metrics + + +# x-goog-api-client header value for metadata server ping. +# Example: "gl-python/3.7 auth/1.1 auth-request-type/mds" +def mds_ping(): + return "{} {}".format(python_and_auth_lib_version(), REQUEST_TYPE_MDS_PING) + + +# x-goog-api-client header value for reauth start endpoint calls. +# Example: "gl-python/3.7 auth/1.1 auth-request-type/re-start" +def reauth_start(): + return "{} {}".format(python_and_auth_lib_version(), REQUEST_TYPE_REAUTH_START) + + +# x-goog-api-client header value for reauth continue endpoint calls. +# Example: "gl-python/3.7 auth/1.1 cred-type/re-cont" +def reauth_continue(): + return "{} {}".format(python_and_auth_lib_version(), REQUEST_TYPE_REAUTH_CONTINUE) + + +# x-goog-api-client header value for BYOID calls to the Security Token Service exchange token endpoint. +# Example: "gl-python/3.7 auth/1.1 google-byoid-sdk source/aws sa-impersonation/true sa-impersonation/true" +def byoid_metrics_header(metrics_options): + header = "{} {}".format(python_and_auth_lib_version(), BYOID_HEADER_SECTION) + for key, value in metrics_options.items(): + header = "{} {}/{}".format(header, key, value) + return header + + +def add_metric_header(headers, metric_header_value): + """Add x-goog-api-client header with the given value. + + Args: + headers (Mapping[str, str]): The headers to which we will add the + metric header. + metric_header_value (Optional[str]): If value is None, do nothing; + if headers already has a x-goog-api-client header, append the value + to the existing header; otherwise add a new x-goog-api-client + header with the given value. + """ + if not metric_header_value: + return + if API_CLIENT_HEADER not in headers: + headers[API_CLIENT_HEADER] = metric_header_value + else: + headers[API_CLIENT_HEADER] += " " + metric_header_value diff --git a/intelliaide/vendor/google/auth/pluggable.py b/intelliaide/vendor/google/auth/pluggable.py new file mode 100644 index 0000000..b7d832d --- /dev/null +++ b/intelliaide/vendor/google/auth/pluggable.py @@ -0,0 +1,445 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Pluggable Credentials. +Pluggable Credentials are initialized using external_account arguments which +are typically loaded from third-party executables. Unlike other +credentials that can be initialized with a list of explicit arguments, secrets +or credentials, external account clients use the environment and hints/guidelines +provided by the external_account JSON file to retrieve credentials and exchange +them for Google access tokens. + +Example credential_source for pluggable credential: +{ + "executable": { + "command": "/path/to/get/credentials.sh --arg1=value1 --arg2=value2", + "timeout_millis": 5000, + "output_file": "/path/to/generated/cached/credentials" + } +} +""" + +try: + from collections.abc import Mapping +# Python 2.7 compatibility +except ImportError: # pragma: NO COVER + from collections import Mapping # type: ignore +import json +import os +import shlex +import subprocess +import sys +import time + +from google.auth import _helpers +from google.auth import exceptions +from google.auth import external_account + +# The max supported executable spec version. +EXECUTABLE_SUPPORTED_MAX_VERSION = 1 + +EXECUTABLE_TIMEOUT_MILLIS_DEFAULT = 30 * 1000 # 30 seconds +EXECUTABLE_TIMEOUT_MILLIS_LOWER_BOUND = 5 * 1000 # 5 seconds +EXECUTABLE_TIMEOUT_MILLIS_UPPER_BOUND = 120 * 1000 # 2 minutes + +EXECUTABLE_INTERACTIVE_TIMEOUT_MILLIS_LOWER_BOUND = 30 * 1000 # 30 seconds +EXECUTABLE_INTERACTIVE_TIMEOUT_MILLIS_UPPER_BOUND = 30 * 60 * 1000 # 30 minutes + + +class Credentials(external_account.Credentials): + """External account credentials sourced from executables. + + **IMPORTANT**: + This class does not validate the credential configuration. A security + risk occurs when a credential configuration configured with malicious urls + is used. + When the credential configuration is accepted from an + untrusted source, you should validate it before using. + Refer https://cloud.google.com/docs/authentication/external/externally-sourced-credentials for more details. + """ + + def __init__( + self, + audience, + subject_token_type, + token_url, + credential_source, + *args, + **kwargs + ): + """Instantiates an external account credentials object from a executables. + + Args: + audience (str): The STS audience field. + subject_token_type (str): The subject token type. + token_url (str): The STS endpoint URL. + credential_source (Mapping): The credential source dictionary used to + provide instructions on how to retrieve external credential to be + exchanged for Google access tokens. + + Example credential_source for pluggable credential: + + { + "executable": { + "command": "/path/to/get/credentials.sh --arg1=value1 --arg2=value2", + "timeout_millis": 5000, + "output_file": "/path/to/generated/cached/credentials" + } + } + args (List): Optional positional arguments passed into the underlying :meth:`~external_account.Credentials.__init__` method. + kwargs (Mapping): Optional keyword arguments passed into the underlying :meth:`~external_account.Credentials.__init__` method. + + Raises: + google.auth.exceptions.RefreshError: If an error is encountered during + access token retrieval logic. + google.auth.exceptions.InvalidValue: For invalid parameters. + google.auth.exceptions.MalformedError: For invalid parameters. + + .. note:: Typically one of the helper constructors + :meth:`from_file` or + :meth:`from_info` are used instead of calling the constructor directly. + """ + + self.interactive = kwargs.pop("interactive", False) + super(Credentials, self).__init__( + audience=audience, + subject_token_type=subject_token_type, + token_url=token_url, + credential_source=credential_source, + *args, + **kwargs + ) + if not isinstance(credential_source, Mapping): + self._credential_source_executable = None + raise exceptions.MalformedError( + "Missing credential_source. The credential_source is not a dict." + ) + self._credential_source_executable = credential_source.get("executable") + if not self._credential_source_executable: + raise exceptions.MalformedError( + "Missing credential_source. An 'executable' must be provided." + ) + self._credential_source_executable_command = ( + self._credential_source_executable.get("command") + ) + self._credential_source_executable_timeout_millis = ( + self._credential_source_executable.get("timeout_millis") + ) + self._credential_source_executable_interactive_timeout_millis = ( + self._credential_source_executable.get("interactive_timeout_millis") + ) + self._credential_source_executable_output_file = ( + self._credential_source_executable.get("output_file") + ) + + # Dummy value. This variable is only used via injection, not exposed to ctor + self._tokeninfo_username = "" + + if not self._credential_source_executable_command: + raise exceptions.MalformedError( + "Missing command field. Executable command must be provided." + ) + if not self._credential_source_executable_timeout_millis: + self._credential_source_executable_timeout_millis = ( + EXECUTABLE_TIMEOUT_MILLIS_DEFAULT + ) + elif ( + self._credential_source_executable_timeout_millis + < EXECUTABLE_TIMEOUT_MILLIS_LOWER_BOUND + or self._credential_source_executable_timeout_millis + > EXECUTABLE_TIMEOUT_MILLIS_UPPER_BOUND + ): + raise exceptions.InvalidValue("Timeout must be between 5 and 120 seconds.") + + if self._credential_source_executable_interactive_timeout_millis: + if ( + self._credential_source_executable_interactive_timeout_millis + < EXECUTABLE_INTERACTIVE_TIMEOUT_MILLIS_LOWER_BOUND + or self._credential_source_executable_interactive_timeout_millis + > EXECUTABLE_INTERACTIVE_TIMEOUT_MILLIS_UPPER_BOUND + ): + raise exceptions.InvalidValue( + "Interactive timeout must be between 30 seconds and 30 minutes." + ) + + @_helpers.copy_docstring(external_account.Credentials) + def retrieve_subject_token(self, request): + self._validate_running_mode() + + # Check output file. + if self._credential_source_executable_output_file is not None: + try: + with open( + self._credential_source_executable_output_file, encoding="utf-8" + ) as output_file: + response = json.load(output_file) + except Exception: + pass + else: + try: + # If the cached response is expired, _parse_subject_token will raise an error which will be ignored and we will call the executable again. + subject_token = self._parse_subject_token(response) + if ( + "expiration_time" not in response + ): # Always treat missing expiration_time as expired and proceed to executable run. + raise exceptions.RefreshError + except (exceptions.MalformedError, exceptions.InvalidValue): + raise + except exceptions.RefreshError: + pass + else: + return subject_token + + # Inject env vars. + env = os.environ.copy() + self._inject_env_variables(env) + env["GOOGLE_EXTERNAL_ACCOUNT_REVOKE"] = "0" + + # Run executable. + exe_timeout = ( + self._credential_source_executable_interactive_timeout_millis / 1000 + if self.interactive + else self._credential_source_executable_timeout_millis / 1000 + ) + exe_stdin = sys.stdin if self.interactive else None + exe_stdout = sys.stdout if self.interactive else subprocess.PIPE + exe_stderr = sys.stdout if self.interactive else subprocess.STDOUT + + result = subprocess.run( + shlex.split(self._credential_source_executable_command), + timeout=exe_timeout, + stdin=exe_stdin, + stdout=exe_stdout, + stderr=exe_stderr, + env=env, + ) + if result.returncode != 0: + raise exceptions.RefreshError( + "Executable exited with non-zero return code {}. Error: {}".format( + result.returncode, result.stdout + ) + ) + + # Handle executable output. + response = json.loads(result.stdout.decode("utf-8")) if result.stdout else None + if not response and self._credential_source_executable_output_file is not None: + response = json.load( + open(self._credential_source_executable_output_file, encoding="utf-8") + ) + + subject_token = self._parse_subject_token(response) + return subject_token + + def revoke(self, request): + """Revokes the subject token using the credential_source object. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + Raises: + google.auth.exceptions.RefreshError: If the executable revocation + not properly executed. + + """ + if not self.interactive: + raise exceptions.InvalidValue( + "Revoke is only enabled under interactive mode." + ) + self._validate_running_mode() + + # Inject variables + env = os.environ.copy() + self._inject_env_variables(env) + env["GOOGLE_EXTERNAL_ACCOUNT_REVOKE"] = "1" + + # Run executable + result = subprocess.run( + shlex.split(self._credential_source_executable_command), + timeout=self._credential_source_executable_interactive_timeout_millis + / 1000, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + env=env, + ) + + if result.returncode != 0: + raise exceptions.RefreshError( + "Auth revoke failed on executable. Exit with non-zero return code {}. Error: {}".format( + result.returncode, result.stdout + ) + ) + + response = json.loads(result.stdout.decode("utf-8")) + self._validate_revoke_response(response) + + @property + def external_account_id(self): + """Returns the external account identifier. + + When service account impersonation is used the identifier is the service + account email. + + Without service account impersonation, this returns None, unless it is + being used by the Google Cloud CLI which populates this field. + """ + + return self.service_account_email or self._tokeninfo_username + + @classmethod + def from_info(cls, info, **kwargs): + """Creates a Pluggable Credentials instance from parsed external account info. + + **IMPORTANT**: + This method does not validate the credential configuration. A security + risk occurs when a credential configuration configured with malicious urls + is used. + When the credential configuration is accepted from an + untrusted source, you should validate it before using with this method. + Refer https://cloud.google.com/docs/authentication/external/externally-sourced-credentials for more details. + + Args: + info (Mapping[str, str]): The Pluggable external account info in Google + format. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.pluggable.Credentials: The constructed + credentials. + + Raises: + google.auth.exceptions.InvalidValue: For invalid parameters. + google.auth.exceptions.MalformedError: For invalid parameters. + """ + return super(Credentials, cls).from_info(info, **kwargs) + + @classmethod + def from_file(cls, filename, **kwargs): + """Creates an Pluggable Credentials instance from an external account json file. + + **IMPORTANT**: + This method does not validate the credential configuration. A security + risk occurs when a credential configuration configured with malicious urls + is used. + When the credential configuration is accepted from an + untrusted source, you should validate it before using with this method. + Refer https://cloud.google.com/docs/authentication/external/externally-sourced-credentials for more details. + + Args: + filename (str): The path to the Pluggable external account json file. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.pluggable.Credentials: The constructed + credentials. + """ + return super(Credentials, cls).from_file(filename, **kwargs) + + def _inject_env_variables(self, env): + env["GOOGLE_EXTERNAL_ACCOUNT_AUDIENCE"] = self._audience + env["GOOGLE_EXTERNAL_ACCOUNT_TOKEN_TYPE"] = self._subject_token_type + env["GOOGLE_EXTERNAL_ACCOUNT_ID"] = self.external_account_id + env["GOOGLE_EXTERNAL_ACCOUNT_INTERACTIVE"] = "1" if self.interactive else "0" + + if self._service_account_impersonation_url is not None: + env[ + "GOOGLE_EXTERNAL_ACCOUNT_IMPERSONATED_EMAIL" + ] = self.service_account_email + if self._credential_source_executable_output_file is not None: + env[ + "GOOGLE_EXTERNAL_ACCOUNT_OUTPUT_FILE" + ] = self._credential_source_executable_output_file + + def _parse_subject_token(self, response): + self._validate_response_schema(response) + if not response["success"]: + if "code" not in response or "message" not in response: + raise exceptions.MalformedError( + "Error code and message fields are required in the response." + ) + raise exceptions.RefreshError( + "Executable returned unsuccessful response: code: {}, message: {}.".format( + response["code"], response["message"] + ) + ) + if "expiration_time" in response and response["expiration_time"] < time.time(): + raise exceptions.RefreshError( + "The token returned by the executable is expired." + ) + if "token_type" not in response: + raise exceptions.MalformedError( + "The executable response is missing the token_type field." + ) + if ( + response["token_type"] == "urn:ietf:params:oauth:token-type:jwt" + or response["token_type"] == "urn:ietf:params:oauth:token-type:id_token" + ): # OIDC + return response["id_token"] + elif response["token_type"] == "urn:ietf:params:oauth:token-type:saml2": # SAML + return response["saml_response"] + else: + raise exceptions.RefreshError("Executable returned unsupported token type.") + + def _validate_revoke_response(self, response): + self._validate_response_schema(response) + if not response["success"]: + raise exceptions.RefreshError("Revoke failed with unsuccessful response.") + + def _validate_response_schema(self, response): + if "version" not in response: + raise exceptions.MalformedError( + "The executable response is missing the version field." + ) + if response["version"] > EXECUTABLE_SUPPORTED_MAX_VERSION: + raise exceptions.RefreshError( + "Executable returned unsupported version {}.".format( + response["version"] + ) + ) + + if "success" not in response: + raise exceptions.MalformedError( + "The executable response is missing the success field." + ) + + def _validate_running_mode(self): + env_allow_executables = os.environ.get( + "GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES" + ) + if env_allow_executables != "1": + raise exceptions.MalformedError( + "Executables need to be explicitly allowed (set GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES to '1') to run." + ) + + if self.interactive and not self._credential_source_executable_output_file: + raise exceptions.MalformedError( + "An output_file must be specified in the credential configuration for interactive mode." + ) + + if ( + self.interactive + and not self._credential_source_executable_interactive_timeout_millis + ): + raise exceptions.InvalidOperation( + "Interactive mode cannot run without an interactive timeout." + ) + + if self.interactive and not self.is_workforce_pool: + raise exceptions.InvalidValue( + "Interactive mode is only enabled for workforce pool." + ) + + def _create_default_metrics_options(self): + metrics_options = super(Credentials, self)._create_default_metrics_options() + metrics_options["source"] = "executable" + return metrics_options diff --git a/intelliaide/vendor/google/auth/py.typed b/intelliaide/vendor/google/auth/py.typed new file mode 100644 index 0000000..aa7b689 --- /dev/null +++ b/intelliaide/vendor/google/auth/py.typed @@ -0,0 +1,2 @@ +# Marker file for PEP 561. +# The google-auth package uses inline types. diff --git a/intelliaide/vendor/google/auth/transport/__init__.py b/intelliaide/vendor/google/auth/transport/__init__.py new file mode 100644 index 0000000..4575763 --- /dev/null +++ b/intelliaide/vendor/google/auth/transport/__init__.py @@ -0,0 +1,104 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Transport - HTTP client library support. + +:mod:`google.auth` is designed to work with various HTTP client libraries such +as urllib3 and requests. In order to work across these libraries with different +interfaces some abstraction is needed. + +This module provides two interfaces that are implemented by transport adapters +to support HTTP libraries. :class:`Request` defines the interface expected by +:mod:`google.auth` to make requests. :class:`Response` defines the interface +for the return value of :class:`Request`. +""" + +import abc +import http.client as http_client + +DEFAULT_RETRYABLE_STATUS_CODES = ( + http_client.INTERNAL_SERVER_ERROR, + http_client.SERVICE_UNAVAILABLE, + http_client.GATEWAY_TIMEOUT, + http_client.REQUEST_TIMEOUT, + http_client.TOO_MANY_REQUESTS, +) +"""Sequence[int]: HTTP status codes indicating a request can be retried. +""" + + +DEFAULT_REFRESH_STATUS_CODES = (http_client.UNAUTHORIZED,) +"""Sequence[int]: Which HTTP status code indicate that credentials should be +refreshed. +""" + +DEFAULT_MAX_REFRESH_ATTEMPTS = 2 +"""int: How many times to refresh the credentials and retry a request.""" + + +class Response(metaclass=abc.ABCMeta): + """HTTP Response data.""" + + @abc.abstractproperty + def status(self): + """int: The HTTP status code.""" + raise NotImplementedError("status must be implemented.") + + @abc.abstractproperty + def headers(self): + """Mapping[str, str]: The HTTP response headers.""" + raise NotImplementedError("headers must be implemented.") + + @abc.abstractproperty + def data(self): + """bytes: The response body.""" + raise NotImplementedError("data must be implemented.") + + +class Request(metaclass=abc.ABCMeta): + """Interface for a callable that makes HTTP requests. + + Specific transport implementations should provide an implementation of + this that adapts their specific request / response API. + + .. automethod:: __call__ + """ + + @abc.abstractmethod + def __call__( + self, url, method="GET", body=None, headers=None, timeout=None, **kwargs + ): + """Make an HTTP request. + + Args: + url (str): The URI to be requested. + method (str): The HTTP method to use for the request. Defaults + to 'GET'. + body (bytes): The payload / body in HTTP request. + headers (Mapping[str, str]): Request headers. + timeout (Optional[int]): The number of seconds to wait for a + response from the server. If not specified or if None, the + transport-specific default timeout will be used. + kwargs: Additionally arguments passed on to the transport's + request method. + + Returns: + Response: The HTTP response. + + Raises: + google.auth.exceptions.TransportError: If any exception occurred. + """ + # pylint: disable=redundant-returns-doc, missing-raises-doc + # (pylint doesn't play well with abstract docstrings.) + raise NotImplementedError("__call__ must be implemented.") diff --git a/intelliaide/vendor/google/auth/transport/_aiohttp_requests.py b/intelliaide/vendor/google/auth/transport/_aiohttp_requests.py new file mode 100644 index 0000000..e832196 --- /dev/null +++ b/intelliaide/vendor/google/auth/transport/_aiohttp_requests.py @@ -0,0 +1,396 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Transport adapter for Async HTTP (aiohttp). + +NOTE: This async support is experimental and marked internal. This surface may +change in minor releases. +""" + +from __future__ import absolute_import + +import asyncio +import functools +import logging + +import aiohttp # type: ignore +import urllib3 # type: ignore + +from google.auth import _helpers +from google.auth import exceptions +from google.auth import transport +from google.auth.aio import _helpers as _helpers_async +from google.auth.transport import requests + + +_LOGGER = logging.getLogger(__name__) + +# Timeout can be re-defined depending on async requirement. Currently made 60s more than +# sync timeout. +_DEFAULT_TIMEOUT = 180 # in seconds + + +class _CombinedResponse(transport.Response): + """ + In order to more closely resemble the `requests` interface, where a raw + and deflated content could be accessed at once, this class lazily reads the + stream in `transport.Response` so both return forms can be used. + + The gzip and deflate transfer-encodings are automatically decoded for you + because the default parameter for autodecompress into the ClientSession is set + to False, and therefore we add this class to act as a wrapper for a user to be + able to access both the raw and decoded response bodies - mirroring the sync + implementation. + """ + + def __init__(self, response): + self._response = response + self._raw_content = None + + def _is_compressed(self): + headers = self._response.headers + return "Content-Encoding" in headers and ( + headers["Content-Encoding"] == "gzip" + or headers["Content-Encoding"] == "deflate" + ) + + @property + def status(self): + return self._response.status + + @property + def headers(self): + return self._response.headers + + @property + def data(self): + return self._response.content + + async def raw_content(self): + if self._raw_content is None: + self._raw_content = await self._response.content.read() + return self._raw_content + + async def content(self): + # Load raw_content if necessary + await self.raw_content() + if self._is_compressed(): + decoder = urllib3.response.MultiDecoder( + self._response.headers["Content-Encoding"] + ) + decompressed = decoder.decompress(self._raw_content) + return decompressed + + return self._raw_content + + +class _Response(transport.Response): + """ + Requests transport response adapter. + + Args: + response (requests.Response): The raw Requests response. + """ + + def __init__(self, response): + self._response = response + + @property + def status(self): + return self._response.status + + @property + def headers(self): + return self._response.headers + + @property + def data(self): + return self._response.content + + +class Request(transport.Request): + """Requests request adapter. + + This class is used internally for making requests using asyncio transports + in a consistent way. If you use :class:`AuthorizedSession` you do not need + to construct or use this class directly. + + This class can be useful if you want to manually refresh a + :class:`~google.auth.credentials.Credentials` instance:: + + import google.auth.transport.aiohttp_requests + + request = google.auth.transport.aiohttp_requests.Request() + + credentials.refresh(request) + + Args: + session (aiohttp.ClientSession): An instance :class:`aiohttp.ClientSession` used + to make HTTP requests. If not specified, a session will be created. + + .. automethod:: __call__ + """ + + def __init__(self, session=None): + # TODO: Use auto_decompress property for aiohttp 3.7+ + if session is not None and session._auto_decompress: + raise exceptions.InvalidOperation( + "Client sessions with auto_decompress=True are not supported." + ) + self.session = session + + async def __call__( + self, + url, + method="GET", + body=None, + headers=None, + timeout=_DEFAULT_TIMEOUT, + **kwargs, + ): + """ + Make an HTTP request using aiohttp. + + Args: + url (str): The URL to be requested. + method (Optional[str]): + The HTTP method to use for the request. Defaults to 'GET'. + body (Optional[bytes]): + The payload or body in HTTP request. + headers (Optional[Mapping[str, str]]): + Request headers. + timeout (Optional[int]): The number of seconds to wait for a + response from the server. If not specified or if None, the + requests default timeout will be used. + kwargs: Additional arguments passed through to the underlying + requests :meth:`requests.Session.request` method. + + Returns: + google.auth.transport.Response: The HTTP response. + + Raises: + google.auth.exceptions.TransportError: If any exception occurred. + """ + + try: + if self.session is None: # pragma: NO COVER + self.session = aiohttp.ClientSession( + auto_decompress=False + ) # pragma: NO COVER + _helpers.request_log(_LOGGER, method, url, body, headers) + response = await self.session.request( + method, url, data=body, headers=headers, timeout=timeout, **kwargs + ) + await _helpers_async.response_log_async(_LOGGER, response) + return _CombinedResponse(response) + + except aiohttp.ClientError as caught_exc: + new_exc = exceptions.TransportError(caught_exc) + raise new_exc from caught_exc + + except asyncio.TimeoutError as caught_exc: + new_exc = exceptions.TransportError(caught_exc) + raise new_exc from caught_exc + + +class AuthorizedSession(aiohttp.ClientSession): + """This is an async implementation of the Authorized Session class. We utilize an + aiohttp transport instance, and the interface mirrors the google.auth.transport.requests + Authorized Session class, except for the change in the transport used in the async use case. + + A Requests Session class with credentials. + + This class is used to perform requests to API endpoints that require + authorization:: + + from google.auth.transport import aiohttp_requests + + async with aiohttp_requests.AuthorizedSession(credentials) as authed_session: + response = await authed_session.request( + 'GET', 'https://www.googleapis.com/storage/v1/b') + + The underlying :meth:`request` implementation handles adding the + credentials' headers to the request and refreshing credentials as needed. + + Args: + credentials (google.auth._credentials_async.Credentials): + The credentials to add to the request. + refresh_status_codes (Sequence[int]): Which HTTP status codes indicate + that credentials should be refreshed and the request should be + retried. + max_refresh_attempts (int): The maximum number of times to attempt to + refresh the credentials and retry the request. + refresh_timeout (Optional[int]): The timeout value in seconds for + credential refresh HTTP requests. + auth_request (google.auth.transport.aiohttp_requests.Request): + (Optional) An instance of + :class:`~google.auth.transport.aiohttp_requests.Request` used when + refreshing credentials. If not passed, + an instance of :class:`~google.auth.transport.aiohttp_requests.Request` + is created. + kwargs: Additional arguments passed through to the underlying + ClientSession :meth:`aiohttp.ClientSession` object. + """ + + def __init__( + self, + credentials, + refresh_status_codes=transport.DEFAULT_REFRESH_STATUS_CODES, + max_refresh_attempts=transport.DEFAULT_MAX_REFRESH_ATTEMPTS, + refresh_timeout=None, + auth_request=None, + auto_decompress=False, + **kwargs, + ): + super(AuthorizedSession, self).__init__(**kwargs) + self.credentials = credentials + self._refresh_status_codes = refresh_status_codes + self._max_refresh_attempts = max_refresh_attempts + self._refresh_timeout = refresh_timeout + self._is_mtls = False + self._auth_request = auth_request + self._auth_request_session = None + self._loop = asyncio.get_event_loop() + self._refresh_lock = asyncio.Lock() + self._auto_decompress = auto_decompress + + async def request( + self, + method, + url, + data=None, + headers=None, + max_allowed_time=None, + timeout=_DEFAULT_TIMEOUT, + auto_decompress=False, + **kwargs, + ): + """Implementation of Authorized Session aiohttp request. + + Args: + method (str): + The http request method used (e.g. GET, PUT, DELETE) + url (str): + The url at which the http request is sent. + data (Optional[dict]): Dictionary, list of tuples, bytes, or file-like + object to send in the body of the Request. + headers (Optional[dict]): Dictionary of HTTP Headers to send with the + Request. + timeout (Optional[Union[float, aiohttp.ClientTimeout]]): + The amount of time in seconds to wait for the server response + with each individual request. Can also be passed as an + ``aiohttp.ClientTimeout`` object. + max_allowed_time (Optional[float]): + If the method runs longer than this, a ``Timeout`` exception is + automatically raised. Unlike the ``timeout`` parameter, this + value applies to the total method execution time, even if + multiple requests are made under the hood. + + Mind that it is not guaranteed that the timeout error is raised + at ``max_allowed_time``. It might take longer, for example, if + an underlying request takes a lot of time, but the request + itself does not timeout, e.g. if a large file is being + transmitted. The timeout error will be raised after such + request completes. + """ + # Headers come in as bytes which isn't expected behavior, the resumable + # media libraries in some cases expect a str type for the header values, + # but sometimes the operations return these in bytes types. + if headers: + for key in headers.keys(): + if type(headers[key]) is bytes: + headers[key] = headers[key].decode("utf-8") + + async with aiohttp.ClientSession( + auto_decompress=self._auto_decompress, + trust_env=kwargs.get("trust_env", False), + ) as self._auth_request_session: + auth_request = Request(self._auth_request_session) + self._auth_request = auth_request + + # Use a kwarg for this instead of an attribute to maintain + # thread-safety. + _credential_refresh_attempt = kwargs.pop("_credential_refresh_attempt", 0) + # Make a copy of the headers. They will be modified by the credentials + # and we want to pass the original headers if we recurse. + request_headers = headers.copy() if headers is not None else {} + + # Do not apply the timeout unconditionally in order to not override the + # _auth_request's default timeout. + auth_request = ( + self._auth_request + if timeout is None + else functools.partial(self._auth_request, timeout=timeout) + ) + + remaining_time = max_allowed_time + + with requests.TimeoutGuard(remaining_time, asyncio.TimeoutError) as guard: + await self.credentials.before_request( + auth_request, method, url, request_headers + ) + + with requests.TimeoutGuard(remaining_time, asyncio.TimeoutError) as guard: + response = await super(AuthorizedSession, self).request( + method, + url, + data=data, + headers=request_headers, + timeout=timeout, + **kwargs, + ) + + remaining_time = guard.remaining_timeout + + if ( + response.status in self._refresh_status_codes + and _credential_refresh_attempt < self._max_refresh_attempts + ): + requests._LOGGER.info( + "Refreshing credentials due to a %s response. Attempt %s/%s.", + response.status, + _credential_refresh_attempt + 1, + self._max_refresh_attempts, + ) + + # Do not apply the timeout unconditionally in order to not override the + # _auth_request's default timeout. + auth_request = ( + self._auth_request + if timeout is None + else functools.partial(self._auth_request, timeout=timeout) + ) + + with requests.TimeoutGuard( + remaining_time, asyncio.TimeoutError + ) as guard: + async with self._refresh_lock: + await self._loop.run_in_executor( + None, self.credentials.refresh, auth_request + ) + + remaining_time = guard.remaining_timeout + + return await self.request( + method, + url, + data=data, + headers=headers, + max_allowed_time=remaining_time, + timeout=timeout, + _credential_refresh_attempt=_credential_refresh_attempt + 1, + **kwargs, + ) + + return response diff --git a/intelliaide/vendor/google/auth/transport/_custom_tls_signer.py b/intelliaide/vendor/google/auth/transport/_custom_tls_signer.py new file mode 100644 index 0000000..9279158 --- /dev/null +++ b/intelliaide/vendor/google/auth/transport/_custom_tls_signer.py @@ -0,0 +1,283 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Code for configuring client side TLS to offload the signing operation to +signing libraries. +""" + +import ctypes +import json +import logging +import os +import sys + +import cffi # type: ignore + +from google.auth import exceptions + +_LOGGER = logging.getLogger(__name__) + +# C++ offload lib requires google-auth lib to provide the following callback: +# using SignFunc = int (*)(unsigned char *sig, size_t *sig_len, +# const unsigned char *tbs, size_t tbs_len) +# The bytes to be signed and the length are provided via `tbs` and `tbs_len`, +# the callback computes the signature, and write the signature and its length +# into `sig` and `sig_len`. +# If the signing is successful, the callback returns 1, otherwise it returns 0. +SIGN_CALLBACK_CTYPE = ctypes.CFUNCTYPE( + ctypes.c_int, # return type + ctypes.POINTER(ctypes.c_ubyte), # sig + ctypes.POINTER(ctypes.c_size_t), # sig_len + ctypes.POINTER(ctypes.c_ubyte), # tbs + ctypes.c_size_t, # tbs_len +) + + +# Cast SSL_CTX* to void* +def _cast_ssl_ctx_to_void_p_pyopenssl(ssl_ctx): + return ctypes.cast(int(cffi.FFI().cast("intptr_t", ssl_ctx)), ctypes.c_void_p) + + +# Cast SSL_CTX* to void* +def _cast_ssl_ctx_to_void_p_stdlib(context): + return ctypes.c_void_p.from_address( + id(context) + ctypes.sizeof(ctypes.c_void_p) * 2 + ) + + +# Load offload library and set up the function types. +def load_offload_lib(offload_lib_path): + _LOGGER.debug("loading offload library from %s", offload_lib_path) + + # winmode parameter is only available for python 3.8+. + lib = ( + ctypes.CDLL(offload_lib_path, winmode=0) + if sys.version_info >= (3, 8) and os.name == "nt" + else ctypes.CDLL(offload_lib_path) + ) + + # Set up types for: + # int ConfigureSslContext(SignFunc sign_func, const char *cert, SSL_CTX *ctx) + lib.ConfigureSslContext.argtypes = [ + SIGN_CALLBACK_CTYPE, + ctypes.c_char_p, + ctypes.c_void_p, + ] + lib.ConfigureSslContext.restype = ctypes.c_int + + return lib + + +# Load signer library and set up the function types. +# See: https://github.com/googleapis/enterprise-certificate-proxy/blob/main/cshared/main.go +def load_signer_lib(signer_lib_path): + _LOGGER.debug("loading signer library from %s", signer_lib_path) + + # winmode parameter is only available for python 3.8+. + lib = ( + ctypes.CDLL(signer_lib_path, winmode=0) + if sys.version_info >= (3, 8) and os.name == "nt" + else ctypes.CDLL(signer_lib_path) + ) + + # Set up types for: + # func GetCertPemForPython(configFilePath *C.char, certHolder *byte, certHolderLen int) + lib.GetCertPemForPython.argtypes = [ctypes.c_char_p, ctypes.c_char_p, ctypes.c_int] + # Returns: certLen + lib.GetCertPemForPython.restype = ctypes.c_int + + # Set up types for: + # func SignForPython(configFilePath *C.char, digest *byte, digestLen int, + # sigHolder *byte, sigHolderLen int) + lib.SignForPython.argtypes = [ + ctypes.c_char_p, + ctypes.c_char_p, + ctypes.c_int, + ctypes.c_char_p, + ctypes.c_int, + ] + # Returns: the signature length + lib.SignForPython.restype = ctypes.c_int + + return lib + + +def load_provider_lib(provider_lib_path): + _LOGGER.debug("loading provider library from %s", provider_lib_path) + + # winmode parameter is only available for python 3.8+. + lib = ( + ctypes.CDLL(provider_lib_path, winmode=0) + if sys.version_info >= (3, 8) and os.name == "nt" + else ctypes.CDLL(provider_lib_path) + ) + + lib.ECP_attach_to_ctx.argtypes = [ctypes.c_void_p, ctypes.c_char_p] + lib.ECP_attach_to_ctx.restype = ctypes.c_int + + return lib + + +# Computes SHA256 hash. +def _compute_sha256_digest(to_be_signed, to_be_signed_len): + from cryptography.hazmat.primitives import hashes + + data = ctypes.string_at(to_be_signed, to_be_signed_len) + hash = hashes.Hash(hashes.SHA256()) + hash.update(data) + return hash.finalize() + + +# Create the signing callback. The actual signing work is done by the +# `SignForPython` method from the signer lib. +def get_sign_callback(signer_lib, config_file_path): + def sign_callback(sig, sig_len, tbs, tbs_len): + _LOGGER.debug("calling sign callback...") + + digest = _compute_sha256_digest(tbs, tbs_len) + digestArray = ctypes.c_char * len(digest) + + # reserve 2000 bytes for the signature, shoud be more then enough. + # RSA signature is 256 bytes, EC signature is 70~72. + sig_holder_len = 2000 + sig_holder = ctypes.create_string_buffer(sig_holder_len) + + signature_len = signer_lib.SignForPython( + config_file_path.encode(), # configFilePath + digestArray.from_buffer(bytearray(digest)), # digest + len(digest), # digestLen + sig_holder, # sigHolder + sig_holder_len, # sigHolderLen + ) + + if signature_len == 0: + # signing failed, return 0 + return 0 + + sig_len[0] = signature_len + bs = bytearray(sig_holder) + for i in range(signature_len): + sig[i] = bs[i] + + return 1 + + return SIGN_CALLBACK_CTYPE(sign_callback) + + +# Obtain the certificate bytes by calling the `GetCertPemForPython` method from +# the signer lib. The method is called twice, the first time is to compute the +# cert length, then we create a buffer to hold the cert, and call it again to +# fill the buffer. +def get_cert(signer_lib, config_file_path): + # First call to calculate the cert length + cert_len = signer_lib.GetCertPemForPython( + config_file_path.encode(), # configFilePath + None, # certHolder + 0, # certHolderLen + ) + if cert_len == 0: + raise exceptions.MutualTLSChannelError("failed to get certificate") + + # Then we create an array to hold the cert, and call again to fill the cert + cert_holder = ctypes.create_string_buffer(cert_len) + signer_lib.GetCertPemForPython( + config_file_path.encode(), # configFilePath + cert_holder, # certHolder + cert_len, # certHolderLen + ) + return bytes(cert_holder) + + +class CustomTlsSigner(object): + def __init__(self, enterprise_cert_file_path): + """ + This class loads the offload and signer library, and calls APIs from + these libraries to obtain the cert and a signing callback, and attach + them to SSL context. The cert and the signing callback will be used + for client authentication in TLS handshake. + + Args: + enterprise_cert_file_path (str): the path to a enterprise cert JSON + file. The file should contain the following field: + + { + "libs": { + "ecp_client": "...", + "tls_offload": "..." + } + } + """ + self._enterprise_cert_file_path = enterprise_cert_file_path + self._cert = None + self._sign_callback = None + self._provider_lib = None + + def load_libraries(self): + with open(self._enterprise_cert_file_path, "r") as f: + enterprise_cert_json = json.load(f) + libs = enterprise_cert_json.get("libs", {}) + + signer_library = libs.get("ecp_client", None) + offload_library = libs.get("tls_offload", None) + provider_library = libs.get("ecp_provider", None) + + # Using newer provider implementation. This is mutually exclusive to the + # offload implementation. + if provider_library: + self._provider_lib = load_provider_lib(provider_library) + return + + # Using old offload implementation + if offload_library and signer_library: + self._offload_lib = load_offload_lib(offload_library) + self._signer_lib = load_signer_lib(signer_library) + self.set_up_custom_key() + return + + raise exceptions.MutualTLSChannelError("enterprise cert file is invalid") + + def set_up_custom_key(self): + # We need to keep a reference of the cert and sign callback so it won't + # be garbage collected, otherwise it will crash when used by signer lib. + self._cert = get_cert(self._signer_lib, self._enterprise_cert_file_path) + self._sign_callback = get_sign_callback( + self._signer_lib, self._enterprise_cert_file_path + ) + + def should_use_provider(self): + if self._provider_lib: + return True + return False + + def attach_to_ssl_context(self, ctx): + if self.should_use_provider(): + if not self._provider_lib.ECP_attach_to_ctx( + _cast_ssl_ctx_to_void_p_stdlib(ctx), + self._enterprise_cert_file_path.encode("ascii"), + ): + raise exceptions.MutualTLSChannelError( + "failed to configure ECP Provider SSL context" + ) + elif self._offload_lib and self._signer_lib: + if not self._offload_lib.ConfigureSslContext( + self._sign_callback, + ctypes.c_char_p(self._cert), + _cast_ssl_ctx_to_void_p_pyopenssl(ctx._ctx._context), + ): + raise exceptions.MutualTLSChannelError( + "failed to configure ECP Offload SSL context" + ) + else: + raise exceptions.MutualTLSChannelError("Invalid ECP configuration.") diff --git a/intelliaide/vendor/google/auth/transport/_http_client.py b/intelliaide/vendor/google/auth/transport/_http_client.py new file mode 100644 index 0000000..bcfc2b2 --- /dev/null +++ b/intelliaide/vendor/google/auth/transport/_http_client.py @@ -0,0 +1,114 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Transport adapter for http.client, for internal use only.""" + +import http.client as http_client +import logging +import socket +import urllib + +from google.auth import _helpers +from google.auth import exceptions +from google.auth import transport + +_LOGGER = logging.getLogger(__name__) + + +class Response(transport.Response): + """http.client transport response adapter. + + Args: + response (http.client.HTTPResponse): The raw http client response. + """ + + def __init__(self, response): + self._status = response.status + self._headers = {key.lower(): value for key, value in response.getheaders()} + self._data = response.read() + + @property + def status(self): + return self._status + + @property + def headers(self): + return self._headers + + @property + def data(self): + return self._data + + +class Request(transport.Request): + """http.client transport request adapter.""" + + def __call__( + self, url, method="GET", body=None, headers=None, timeout=None, **kwargs + ): + """Make an HTTP request using http.client. + + Args: + url (str): The URI to be requested. + method (str): The HTTP method to use for the request. Defaults + to 'GET'. + body (bytes): The payload / body in HTTP request. + headers (Mapping): Request headers. + timeout (Optional(int)): The number of seconds to wait for a + response from the server. If not specified or if None, the + socket global default timeout will be used. + kwargs: Additional arguments passed throught to the underlying + :meth:`~http.client.HTTPConnection.request` method. + + Returns: + Response: The HTTP response. + + Raises: + google.auth.exceptions.TransportError: If any exception occurred. + """ + # socket._GLOBAL_DEFAULT_TIMEOUT is the default in http.client. + if timeout is None: + timeout = socket._GLOBAL_DEFAULT_TIMEOUT + + # http.client doesn't allow None as the headers argument. + if headers is None: + headers = {} + + # http.client needs the host and path parts specified separately. + parts = urllib.parse.urlsplit(url) + path = urllib.parse.urlunsplit( + ("", "", parts.path, parts.query, parts.fragment) + ) + + if parts.scheme != "http": + raise exceptions.TransportError( + "http.client transport only supports the http scheme, {}" + " was specified".format(parts.scheme) + ) + + connection = http_client.HTTPConnection(parts.netloc, timeout=timeout) + + try: + _helpers.request_log(_LOGGER, method, url, body, headers) + connection.request(method, path, body=body, headers=headers, **kwargs) + response = connection.getresponse() + _helpers.response_log(_LOGGER, response) + return Response(response) + + except (http_client.HTTPException, socket.error) as caught_exc: + new_exc = exceptions.TransportError(caught_exc) + raise new_exc from caught_exc + + finally: + connection.close() diff --git a/intelliaide/vendor/google/auth/transport/_mtls_helper.py b/intelliaide/vendor/google/auth/transport/_mtls_helper.py new file mode 100644 index 0000000..d645029 --- /dev/null +++ b/intelliaide/vendor/google/auth/transport/_mtls_helper.py @@ -0,0 +1,531 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Helper functions for getting mTLS cert and key.""" + +import json +import logging +from os import environ, getenv, path +import re +import subprocess + +from google.auth import _agent_identity_utils +from google.auth import environment_vars +from google.auth import exceptions + +CONTEXT_AWARE_METADATA_PATH = "~/.secureConnect/context_aware_metadata.json" + +# Default gcloud config path, to be used with path.expanduser for cross-platform compatibility. +CERTIFICATE_CONFIGURATION_DEFAULT_PATH = "~/.config/gcloud/certificate_config.json" +_CERT_PROVIDER_COMMAND = "cert_provider_command" +_CERT_REGEX = re.compile( + b"-----BEGIN CERTIFICATE-----.+-----END CERTIFICATE-----\r?\n?", re.DOTALL +) + +# support various format of key files, e.g. +# "-----BEGIN PRIVATE KEY-----...", +# "-----BEGIN EC PRIVATE KEY-----...", +# "-----BEGIN RSA PRIVATE KEY-----..." +# "-----BEGIN ENCRYPTED PRIVATE KEY-----" +_KEY_REGEX = re.compile( + b"-----BEGIN [A-Z ]*PRIVATE KEY-----.+-----END [A-Z ]*PRIVATE KEY-----\r?\n?", + re.DOTALL, +) + +_LOGGER = logging.getLogger(__name__) + + +_PASSPHRASE_REGEX = re.compile( + b"-----BEGIN PASSPHRASE-----(.+)-----END PASSPHRASE-----", re.DOTALL +) + +# Temporary patch to accomodate incorrect cert config in Cloud Run prod environment. +_WELL_KNOWN_CLOUD_RUN_CERT_PATH = ( + "/var/run/secrets/workload-spiffe-credentials/certificates.pem" +) +_WELL_KNOWN_CLOUD_RUN_KEY_PATH = ( + "/var/run/secrets/workload-spiffe-credentials/private_key.pem" +) +_INCORRECT_CLOUD_RUN_CERT_PATH = ( + "/var/lib/volumes/certificate/workload-certificates/certificates.pem" +) +_INCORRECT_CLOUD_RUN_KEY_PATH = ( + "/var/lib/volumes/certificate/workload-certificates/private_key.pem" +) + + +def _check_config_path(config_path): + """Checks for config file path. If it exists, returns the absolute path with user expansion; + otherwise returns None. + + Args: + config_path (str): The config file path for either context_aware_metadata.json or certificate_config.json for example + + Returns: + str: absolute path if exists and None otherwise. + """ + config_path = path.expanduser(config_path) + if not path.exists(config_path): + _LOGGER.debug("%s is not found.", config_path) + return None + return config_path + + +def _load_json_file(path): + """Reads and loads JSON from the given path. Used to read both X509 workload certificate and + secure connect configurations. + + Args: + path (str): the path to read from. + + Returns: + Dict[str, str]: The JSON stored at the file. + + Raises: + google.auth.exceptions.ClientCertError: If failed to parse the file as JSON. + """ + try: + with open(path) as f: + json_data = json.load(f) + except ValueError as caught_exc: + new_exc = exceptions.ClientCertError(caught_exc) + raise new_exc from caught_exc + + return json_data + + +def _get_workload_cert_and_key( + certificate_config_path=None, include_context_aware=True +): + """Read the workload identity cert and key files specified in the certificate config provided. + If no config path is provided, check the environment variable: "GOOGLE_API_CERTIFICATE_CONFIG" + first, then the well known gcloud location: "~/.config/gcloud/certificate_config.json". + + Args: + certificate_config_path (string): The certificate config path. If no path is provided, + the environment variable will be checked first, then the well known gcloud location. + include_context_aware (bool): If context aware metadata path should be checked for the + SecureConnect mTLS configuration. + + Returns: + Tuple[Optional[bytes], Optional[bytes]]: client certificate bytes in PEM format and key + bytes in PEM format. + + Raises: + google.auth.exceptions.ClientCertError: if problems occurs when retrieving + the certificate or key information. + """ + + cert_path, key_path = _get_workload_cert_and_key_paths( + certificate_config_path, include_context_aware + ) + + if cert_path is None and key_path is None: + return None, None + + return _read_cert_and_key_files(cert_path, key_path) + + +def _get_cert_config_path(certificate_config_path=None, include_context_aware=True): + """Get the certificate configuration path based on the following order: + + 1: Explicit override, if set + 2: Environment variable, if set + 3: Well-known location + + Returns "None" if the selected config file does not exist. + + Args: + certificate_config_path (string): The certificate config path. If provided, the well known + location and environment variable will be ignored. + include_context_aware (bool): If context aware metadata path should be checked for the + SecureConnect mTLS configuration. + + Returns: + The absolute path of the certificate config file, and None if the file does not exist. + """ + + if certificate_config_path is None: + env_path = environ.get(environment_vars.GOOGLE_API_CERTIFICATE_CONFIG, None) + if env_path is not None and env_path != "": + certificate_config_path = env_path + else: + env_path = environ.get( + environment_vars.CLOUDSDK_CONTEXT_AWARE_CERTIFICATE_CONFIG_FILE_PATH, + None, + ) + if include_context_aware and env_path is not None and env_path != "": + certificate_config_path = env_path + else: + certificate_config_path = CERTIFICATE_CONFIGURATION_DEFAULT_PATH + + certificate_config_path = path.expanduser(certificate_config_path) + if not path.exists(certificate_config_path): + return None + return certificate_config_path + + +def _get_workload_cert_and_key_paths(config_path, include_context_aware=True): + absolute_path = _get_cert_config_path(config_path, include_context_aware) + if absolute_path is None: + return None, None + + data = _load_json_file(absolute_path) + + if "cert_configs" not in data: + raise exceptions.ClientCertError( + 'Certificate config file {} is in an invalid format, a "cert configs" object is expected'.format( + absolute_path + ) + ) + cert_configs = data["cert_configs"] + + # We return None, None if the expected workload fields are not present. + # The certificate config might be present for other types of connections (e.g. gECC), + # and we want to gracefully fallback to testing other mTLS configurations + # like SecureConnect instead of throwing an exception. + + if "workload" not in cert_configs: + return None, None + workload = cert_configs["workload"] + + if "cert_path" not in workload: + return None, None + cert_path = workload["cert_path"] + + if "key_path" not in workload: + return None, None + key_path = workload["key_path"] + + # == BEGIN Temporary Cloud Run PATCH == + # See https://github.com/googleapis/google-auth-library-python/issues/1881 + if (cert_path == _INCORRECT_CLOUD_RUN_CERT_PATH) and ( + key_path == _INCORRECT_CLOUD_RUN_KEY_PATH + ): + if not path.exists(cert_path) and not path.exists(key_path): + _LOGGER.debug( + "Applying Cloud Run certificate path patch. " + "Configured paths not found: %s, %s. " + "Using well-known paths: %s, %s", + cert_path, + key_path, + _WELL_KNOWN_CLOUD_RUN_CERT_PATH, + _WELL_KNOWN_CLOUD_RUN_KEY_PATH, + ) + cert_path = _WELL_KNOWN_CLOUD_RUN_CERT_PATH + key_path = _WELL_KNOWN_CLOUD_RUN_KEY_PATH + # == END Temporary Cloud Run PATCH == + + return cert_path, key_path + + +def _read_cert_and_key_files(cert_path, key_path): + cert_data = _read_cert_file(cert_path) + key_data = _read_key_file(key_path) + + return cert_data, key_data + + +def _read_cert_file(cert_path): + with open(cert_path, "rb") as cert_file: + cert_data = cert_file.read() + + cert_match = re.findall(_CERT_REGEX, cert_data) + if len(cert_match) != 1: + raise exceptions.ClientCertError( + "Certificate file {} is in an invalid format, a single PEM formatted certificate is expected".format( + cert_path + ) + ) + return cert_match[0] + + +def _read_key_file(key_path): + with open(key_path, "rb") as key_file: + key_data = key_file.read() + + key_match = re.findall(_KEY_REGEX, key_data) + if len(key_match) != 1: + raise exceptions.ClientCertError( + "Private key file {} is in an invalid format, a single PEM formatted private key is expected".format( + key_path + ) + ) + + return key_match[0] + + +def _run_cert_provider_command(command, expect_encrypted_key=False): + """Run the provided command, and return client side mTLS cert, key and + passphrase. + + Args: + command (List[str]): cert provider command. + expect_encrypted_key (bool): If encrypted private key is expected. + + Returns: + Tuple[bytes, bytes, bytes]: client certificate bytes in PEM format, key + bytes in PEM format and passphrase bytes. + + Raises: + google.auth.exceptions.ClientCertError: if problems occurs when running + the cert provider command or generating cert, key and passphrase. + """ + try: + process = subprocess.Popen( + command, stdout=subprocess.PIPE, stderr=subprocess.PIPE + ) + stdout, stderr = process.communicate() + except OSError as caught_exc: + new_exc = exceptions.ClientCertError(caught_exc) + raise new_exc from caught_exc + + # Check cert provider command execution error. + if process.returncode != 0: + raise exceptions.ClientCertError( + "Cert provider command returns non-zero status code %s" % process.returncode + ) + + # Extract certificate (chain), key and passphrase. + cert_match = re.findall(_CERT_REGEX, stdout) + if len(cert_match) != 1: + raise exceptions.ClientCertError("Client SSL certificate is missing or invalid") + key_match = re.findall(_KEY_REGEX, stdout) + if len(key_match) != 1: + raise exceptions.ClientCertError("Client SSL key is missing or invalid") + passphrase_match = re.findall(_PASSPHRASE_REGEX, stdout) + + if expect_encrypted_key: + if len(passphrase_match) != 1: + raise exceptions.ClientCertError("Passphrase is missing or invalid") + if b"ENCRYPTED" not in key_match[0]: + raise exceptions.ClientCertError("Encrypted private key is expected") + return cert_match[0], key_match[0], passphrase_match[0].strip() + + if b"ENCRYPTED" in key_match[0]: + raise exceptions.ClientCertError("Encrypted private key is not expected") + if len(passphrase_match) > 0: + raise exceptions.ClientCertError("Passphrase is not expected") + return cert_match[0], key_match[0], None + + +def get_client_ssl_credentials( + generate_encrypted_key=False, + context_aware_metadata_path=CONTEXT_AWARE_METADATA_PATH, + certificate_config_path=None, +): + """Returns the client side certificate, private key and passphrase. + + We look for certificates and keys with the following order of priority: + 1. Certificate and key specified by certificate_config.json. + Currently, only X.509 workload certificates are supported. + 2. Certificate and key specified by context aware metadata (i.e. SecureConnect). + + Args: + generate_encrypted_key (bool): If set to True, encrypted private key + and passphrase will be generated; otherwise, unencrypted private key + will be generated and passphrase will be None. This option only + affects keys obtained via context_aware_metadata.json. + context_aware_metadata_path (str): The context_aware_metadata.json file path. + certificate_config_path (str): The certificate_config.json file path. + + Returns: + Tuple[bool, bytes, bytes, bytes]: + A boolean indicating if cert, key and passphrase are obtained, the + cert bytes and key bytes both in PEM format, and passphrase bytes. + + Raises: + google.auth.exceptions.ClientCertError: if problems occurs when getting + the cert, key and passphrase. + """ + + # 1. Attempt to retrieve X.509 Workload cert and key. + cert, key = _get_workload_cert_and_key(certificate_config_path) + if cert and key: + return True, cert, key, None + + # 2. Check for context aware metadata json + metadata_path = _check_config_path(context_aware_metadata_path) + + if metadata_path: + metadata_json = _load_json_file(metadata_path) + + if _CERT_PROVIDER_COMMAND not in metadata_json: + raise exceptions.ClientCertError("Cert provider command is not found") + + command = metadata_json[_CERT_PROVIDER_COMMAND] + + if generate_encrypted_key and "--with_passphrase" not in command: + command.append("--with_passphrase") + + # Execute the command. + cert, key, passphrase = _run_cert_provider_command( + command, expect_encrypted_key=generate_encrypted_key + ) + return True, cert, key, passphrase + + return False, None, None, None + + +def get_client_cert_and_key(client_cert_callback=None): + """Returns the client side certificate and private key. The function first + tries to get certificate and key from client_cert_callback; if the callback + is None or doesn't provide certificate and key, the function tries application + default SSL credentials. + + Args: + client_cert_callback (Optional[Callable[[], (bytes, bytes)]]): An + optional callback which returns client certificate bytes and private + key bytes both in PEM format. + + Returns: + Tuple[bool, bytes, bytes]: + A boolean indicating if cert and key are obtained, the cert bytes + and key bytes both in PEM format. + + Raises: + google.auth.exceptions.ClientCertError: if problems occurs when getting + the cert and key. + """ + if client_cert_callback: + cert, key = client_cert_callback() + return True, cert, key + + has_cert, cert, key, _ = get_client_ssl_credentials(generate_encrypted_key=False) + return has_cert, cert, key + + +def decrypt_private_key(key, passphrase): + """A helper function to decrypt the private key with the given passphrase. + google-auth library doesn't support passphrase protected private key for + mutual TLS channel. This helper function can be used to decrypt the + passphrase protected private key in order to estalish mutual TLS channel. + + For example, if you have a function which produces client cert, passphrase + protected private key and passphrase, you can convert it to a client cert + callback function accepted by google-auth:: + + from google.auth.transport import _mtls_helper + + def your_client_cert_function(): + return cert, encrypted_key, passphrase + + # callback accepted by google-auth for mutual TLS channel. + def client_cert_callback(): + cert, encrypted_key, passphrase = your_client_cert_function() + decrypted_key = _mtls_helper.decrypt_private_key(encrypted_key, + passphrase) + return cert, decrypted_key + + Args: + key (bytes): The private key bytes in PEM format. + passphrase (bytes): The passphrase bytes. + + Returns: + bytes: The decrypted private key in PEM format. + + Raises: + ImportError: If pyOpenSSL is not installed. + OpenSSL.crypto.Error: If there is any problem decrypting the private key. + """ + from OpenSSL import crypto + + # First convert encrypted_key_bytes to PKey object + pkey = crypto.load_privatekey(crypto.FILETYPE_PEM, key, passphrase=passphrase) + + # Then dump the decrypted key bytes + return crypto.dump_privatekey(crypto.FILETYPE_PEM, pkey) + + +def check_use_client_cert(): + """Returns boolean for whether the client certificate should be used for mTLS. + + If GOOGLE_API_USE_CLIENT_CERTIFICATE is set to true or false, a corresponding + bool value will be returned. If the value is set to an unexpected string, it + will default to False. + If GOOGLE_API_USE_CLIENT_CERTIFICATE is unset, the value will be inferred + by reading a file pointed at by GOOGLE_API_CERTIFICATE_CONFIG, and verifying + it contains a "workload" section. If so, the function will return True, + otherwise False. + + Returns: + bool: Whether the client certificate should be used for mTLS connection. + """ + use_client_cert = getenv(environment_vars.GOOGLE_API_USE_CLIENT_CERTIFICATE) + if use_client_cert is None or use_client_cert == "": + use_client_cert = getenv( + environment_vars.CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE + ) + + # Check if the value of GOOGLE_API_USE_CLIENT_CERTIFICATE is set. + if use_client_cert: + return use_client_cert.lower() == "true" + else: + # Check if the value of GOOGLE_API_CERTIFICATE_CONFIG is set. + cert_path = getenv(environment_vars.GOOGLE_API_CERTIFICATE_CONFIG) + if cert_path is None: + cert_path = getenv( + environment_vars.CLOUDSDK_CONTEXT_AWARE_CERTIFICATE_CONFIG_FILE_PATH + ) + + if cert_path: + try: + with open(cert_path, "r") as f: + content = json.load(f) + # verify json has workload key + content["cert_configs"]["workload"] + return True + except ( + FileNotFoundError, + OSError, + KeyError, + TypeError, + json.JSONDecodeError, + ) as e: + _LOGGER.debug("error decoding certificate: %s", e) + return False + + +def check_parameters_for_unauthorized_response(cached_cert): + """Returns the cached and current cert fingerprint for reconfiguring mTLS. + + Args: + cached_cert(bytes): The cached client certificate. + + Returns: + bytes: The client callback cert bytes. + bytes: The client callback key bytes. + str: The base64-encoded SHA256 cached fingerprint. + str: The base64-encoded SHA256 current cert fingerprint. + """ + call_cert_bytes, call_key_bytes = call_client_cert_callback() + cert_obj = _agent_identity_utils.parse_certificate(call_cert_bytes) + current_cert_fingerprint = _agent_identity_utils.calculate_certificate_fingerprint( + cert_obj + ) + if cached_cert: + cached_fingerprint = _agent_identity_utils.get_cached_cert_fingerprint( + cached_cert + ) + else: + cached_fingerprint = current_cert_fingerprint + return call_cert_bytes, call_key_bytes, cached_fingerprint, current_cert_fingerprint + + +def call_client_cert_callback(): + """Calls the client cert callback and returns the certificate and key.""" + _, cert_bytes, key_bytes, passphrase = get_client_ssl_credentials( + generate_encrypted_key=True + ) + return cert_bytes, key_bytes diff --git a/intelliaide/vendor/google/auth/transport/_requests_base.py b/intelliaide/vendor/google/auth/transport/_requests_base.py new file mode 100644 index 0000000..0608223 --- /dev/null +++ b/intelliaide/vendor/google/auth/transport/_requests_base.py @@ -0,0 +1,53 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Transport adapter for Base Requests.""" +# NOTE: The coverage for this file is temporarily disabled in `.coveragerc` +# since it is currently unused. + +import abc + + +_DEFAULT_TIMEOUT = 120 # in second + + +class _BaseAuthorizedSession(metaclass=abc.ABCMeta): + """Base class for a Request Session with credentials. This class is intended to capture + the common logic between synchronous and asynchronous request sessions and is not intended to + be instantiated directly. + + Args: + credentials (google.auth._credentials_base.BaseCredentials): The credentials to + add to the request. + """ + + def __init__(self, credentials): + self.credentials = credentials + + @abc.abstractmethod + def request( + self, + method, + url, + data=None, + headers=None, + max_allowed_time=None, + timeout=_DEFAULT_TIMEOUT, + **kwargs + ): + raise NotImplementedError("Request must be implemented") + + @abc.abstractmethod + def close(self): + raise NotImplementedError("Close must be implemented") diff --git a/intelliaide/vendor/google/auth/transport/grpc.py b/intelliaide/vendor/google/auth/transport/grpc.py new file mode 100644 index 0000000..e541d20 --- /dev/null +++ b/intelliaide/vendor/google/auth/transport/grpc.py @@ -0,0 +1,337 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Authorization support for gRPC.""" + +from __future__ import absolute_import + +import logging + +from google.auth import exceptions +from google.auth.transport import _mtls_helper +from google.oauth2 import service_account + +try: + import grpc # type: ignore +except ImportError as caught_exc: # pragma: NO COVER + raise ImportError( + "gRPC is not installed from please install the grpcio package to use the gRPC transport." + ) from caught_exc + +_LOGGER = logging.getLogger(__name__) + + +class AuthMetadataPlugin(grpc.AuthMetadataPlugin): + """A `gRPC AuthMetadataPlugin`_ that inserts the credentials into each + request. + + .. _gRPC AuthMetadataPlugin: + http://www.grpc.io/grpc/python/grpc.html#grpc.AuthMetadataPlugin + + Args: + credentials (google.auth.credentials.Credentials): The credentials to + add to requests. + request (google.auth.transport.Request): A HTTP transport request + object used to refresh credentials as needed. + default_host (Optional[str]): A host like "pubsub.googleapis.com". + This is used when a self-signed JWT is created from service + account credentials. + """ + + def __init__(self, credentials, request, default_host=None): + # pylint: disable=no-value-for-parameter + # pylint doesn't realize that the super method takes no arguments + # because this class is the same name as the superclass. + super(AuthMetadataPlugin, self).__init__() + self._credentials = credentials + self._request = request + self._default_host = default_host + + def _get_authorization_headers(self, context): + """Gets the authorization headers for a request. + + Returns: + Sequence[Tuple[str, str]]: A list of request headers (key, value) + to add to the request. + """ + headers = {} + + # https://google.aip.dev/auth/4111 + # Attempt to use self-signed JWTs when a service account is used. + # A default host must be explicitly provided since it cannot always + # be determined from the context.service_url. + if isinstance(self._credentials, service_account.Credentials): + self._credentials._create_self_signed_jwt( + "https://{}/".format(self._default_host) if self._default_host else None + ) + + self._credentials.before_request( + self._request, context.method_name, context.service_url, headers + ) + + return list(headers.items()) + + def __call__(self, context, callback): + """Passes authorization metadata into the given callback. + + Args: + context (grpc.AuthMetadataContext): The RPC context. + callback (grpc.AuthMetadataPluginCallback): The callback that will + be invoked to pass in the authorization metadata. + """ + callback(self._get_authorization_headers(context), None) + + +def secure_authorized_channel( + credentials, + request, + target, + ssl_credentials=None, + client_cert_callback=None, + **kwargs +): + """Creates a secure authorized gRPC channel. + + This creates a channel with SSL and :class:`AuthMetadataPlugin`. This + channel can be used to create a stub that can make authorized requests. + Users can configure client certificate or rely on device certificates to + establish a mutual TLS channel, if the `GOOGLE_API_USE_CLIENT_CERTIFICATE` + variable is explicitly set to `true`. + + Example:: + + import google.auth + import google.auth.transport.grpc + import google.auth.transport.requests + from google.cloud.speech.v1 import cloud_speech_pb2 + + # Get credentials. + credentials, _ = google.auth.default() + + # Get an HTTP request function to refresh credentials. + request = google.auth.transport.requests.Request() + + # Create a channel. + channel = google.auth.transport.grpc.secure_authorized_channel( + credentials, regular_endpoint, request, + ssl_credentials=grpc.ssl_channel_credentials()) + + # Use the channel to create a stub. + cloud_speech.create_Speech_stub(channel) + + Usage: + + There are actually a couple of options to create a channel, depending on if + you want to create a regular or mutual TLS channel. + + First let's list the endpoints (regular vs mutual TLS) to choose from:: + + regular_endpoint = 'speech.googleapis.com:443' + mtls_endpoint = 'speech.mtls.googleapis.com:443' + + Option 1: create a regular (non-mutual) TLS channel by explicitly setting + the ssl_credentials:: + + regular_ssl_credentials = grpc.ssl_channel_credentials() + + channel = google.auth.transport.grpc.secure_authorized_channel( + credentials, request, regular_endpoint, + ssl_credentials=regular_ssl_credentials) + + Option 2: create a mutual TLS channel by calling a callback which returns + the client side certificate and the key (Note that + `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable must be explicitly + set to `true`):: + + def my_client_cert_callback(): + code_to_load_client_cert_and_key() + if loaded: + return (pem_cert_bytes, pem_key_bytes) + raise MyClientCertFailureException() + + try: + channel = google.auth.transport.grpc.secure_authorized_channel( + credentials, request, mtls_endpoint, + client_cert_callback=my_client_cert_callback) + except MyClientCertFailureException: + # handle the exception + + Option 3: use application default SSL credentials. It searches and uses + the command in a context aware metadata file, which is available on devices + with endpoint verification support (Note that + `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable must be explicitly + set to `true`). + See https://cloud.google.com/endpoint-verification/docs/overview:: + + try: + default_ssl_credentials = SslCredentials() + except: + # Exception can be raised if the context aware metadata is malformed. + # See :class:`SslCredentials` for the possible exceptions. + + # Choose the endpoint based on the SSL credentials type. + if default_ssl_credentials.is_mtls: + endpoint_to_use = mtls_endpoint + else: + endpoint_to_use = regular_endpoint + channel = google.auth.transport.grpc.secure_authorized_channel( + credentials, request, endpoint_to_use, + ssl_credentials=default_ssl_credentials) + + Option 4: not setting ssl_credentials and client_cert_callback. For devices + without endpoint verification support or `GOOGLE_API_USE_CLIENT_CERTIFICATE` + environment variable is not `true`, a regular TLS channel is created; + otherwise, a mutual TLS channel is created, however, the call should be + wrapped in a try/except block in case of malformed context aware metadata. + + The following code uses regular_endpoint, it works the same no matter the + created channle is regular or mutual TLS. Regular endpoint ignores client + certificate and key:: + + channel = google.auth.transport.grpc.secure_authorized_channel( + credentials, request, regular_endpoint) + + The following code uses mtls_endpoint, if the created channle is regular, + and API mtls_endpoint is confgured to require client SSL credentials, API + calls using this channel will be rejected:: + + channel = google.auth.transport.grpc.secure_authorized_channel( + credentials, request, mtls_endpoint) + + Args: + credentials (google.auth.credentials.Credentials): The credentials to + add to requests. + request (google.auth.transport.Request): A HTTP transport request + object used to refresh credentials as needed. Even though gRPC + is a separate transport, there's no way to refresh the credentials + without using a standard http transport. + target (str): The host and port of the service. + ssl_credentials (grpc.ChannelCredentials): Optional SSL channel + credentials. This can be used to specify different certificates. + This argument is mutually exclusive with client_cert_callback; + providing both will raise an exception. + If ssl_credentials and client_cert_callback are None, application + default SSL credentials are used if `GOOGLE_API_USE_CLIENT_CERTIFICATE` + environment variable is explicitly set to `true`, otherwise one way TLS + SSL credentials are used. + client_cert_callback (Callable[[], (bytes, bytes)]): Optional + callback function to obtain client certicate and key for mutual TLS + connection. This argument is mutually exclusive with + ssl_credentials; providing both will raise an exception. + This argument does nothing unless `GOOGLE_API_USE_CLIENT_CERTIFICATE` + environment variable is explicitly set to `true`. + kwargs: Additional arguments to pass to :func:`grpc.secure_channel`. + + Returns: + grpc.Channel: The created gRPC channel. + + Raises: + google.auth.exceptions.MutualTLSChannelError: If mutual TLS channel + creation failed for any reason. + """ + # Create the metadata plugin for inserting the authorization header. + metadata_plugin = AuthMetadataPlugin(credentials, request) + + # Create a set of grpc.CallCredentials using the metadata plugin. + google_auth_credentials = grpc.metadata_call_credentials(metadata_plugin) + + if ssl_credentials and client_cert_callback: + raise exceptions.MalformedError( + "Received both ssl_credentials and client_cert_callback; " + "these are mutually exclusive." + ) + + # If SSL credentials are not explicitly set, try client_cert_callback and ADC. + if not ssl_credentials: + use_client_cert = _mtls_helper.check_use_client_cert() + if use_client_cert and client_cert_callback: + # Use the callback if provided. + cert, key = client_cert_callback() + ssl_credentials = grpc.ssl_channel_credentials( + certificate_chain=cert, private_key=key + ) + elif use_client_cert: + # Use application default SSL credentials. + adc_ssl_credentils = SslCredentials() + ssl_credentials = adc_ssl_credentils.ssl_credentials + else: + ssl_credentials = grpc.ssl_channel_credentials() + + # Combine the ssl credentials and the authorization credentials. + composite_credentials = grpc.composite_channel_credentials( + ssl_credentials, google_auth_credentials + ) + + return grpc.secure_channel(target, composite_credentials, **kwargs) + + +class SslCredentials: + """Class for application default SSL credentials. + + The behavior is controlled by `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment + variable whose default value is `false`. Client certificate will not be used + unless the environment variable is explicitly set to `true`. See + https://google.aip.dev/auth/4114 + + If the environment variable is `true`, then for devices with endpoint verification + support, a device certificate will be automatically loaded and mutual TLS will + be established. + See https://cloud.google.com/endpoint-verification/docs/overview. + """ + + def __init__(self): + use_client_cert = _mtls_helper.check_use_client_cert() + if not use_client_cert: + self._is_mtls = False + else: + # Load client SSL credentials. + metadata_path = _mtls_helper._check_config_path( + _mtls_helper.CONTEXT_AWARE_METADATA_PATH + ) + self._is_mtls = metadata_path is not None + + @property + def ssl_credentials(self): + """Get the created SSL channel credentials. + + For devices with endpoint verification support, if the device certificate + loading has any problems, corresponding exceptions will be raised. For + a device without endpoint verification support, no exceptions will be + raised. + + Returns: + grpc.ChannelCredentials: The created grpc channel credentials. + + Raises: + google.auth.exceptions.MutualTLSChannelError: If mutual TLS channel + creation failed for any reason. + """ + if self._is_mtls: + try: + _, cert, key, _ = _mtls_helper.get_client_ssl_credentials() + self._ssl_credentials = grpc.ssl_channel_credentials( + certificate_chain=cert, private_key=key + ) + except exceptions.ClientCertError as caught_exc: + new_exc = exceptions.MutualTLSChannelError(caught_exc) + raise new_exc from caught_exc + else: + self._ssl_credentials = grpc.ssl_channel_credentials() + + return self._ssl_credentials + + @property + def is_mtls(self): + """Indicates if the created SSL channel credentials is mutual TLS.""" + return self._is_mtls diff --git a/intelliaide/vendor/google/auth/transport/mtls.py b/intelliaide/vendor/google/auth/transport/mtls.py new file mode 100644 index 0000000..666a6ca --- /dev/null +++ b/intelliaide/vendor/google/auth/transport/mtls.py @@ -0,0 +1,142 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Utilites for mutual TLS.""" + +from os import getenv + +from google.auth import exceptions +from google.auth.transport import _mtls_helper + + +def has_default_client_cert_source(include_context_aware=True): + """Check if default client SSL credentials exists on the device. + + Args: + include_context_aware (bool): include_context_aware indicates if context_aware + path location will be checked or should it be skipped. + + Returns: + bool: indicating if the default client cert source exists. + """ + if ( + include_context_aware + and _mtls_helper._check_config_path(_mtls_helper.CONTEXT_AWARE_METADATA_PATH) + is not None + ): + return True + if ( + _mtls_helper._check_config_path( + _mtls_helper.CERTIFICATE_CONFIGURATION_DEFAULT_PATH + ) + is not None + ): + return True + cert_config_path = getenv("GOOGLE_API_CERTIFICATE_CONFIG") + if ( + cert_config_path + and _mtls_helper._check_config_path(cert_config_path) is not None + ): + return True + return False + + +def default_client_cert_source(): + """Get a callback which returns the default client SSL credentials. + + Returns: + Callable[[], [bytes, bytes]]: A callback which returns the default + client certificate bytes and private key bytes, both in PEM format. + + Raises: + google.auth.exceptions.DefaultClientCertSourceError: If the default + client SSL credentials don't exist or are malformed. + """ + if not has_default_client_cert_source(include_context_aware=True): + raise exceptions.MutualTLSChannelError( + "Default client cert source doesn't exist" + ) + + def callback(): + try: + _, cert_bytes, key_bytes = _mtls_helper.get_client_cert_and_key() + except (OSError, RuntimeError, ValueError) as caught_exc: + new_exc = exceptions.MutualTLSChannelError(caught_exc) + raise new_exc from caught_exc + + return cert_bytes, key_bytes + + return callback + + +def default_client_encrypted_cert_source(cert_path, key_path): + """Get a callback which returns the default encrpyted client SSL credentials. + + Args: + cert_path (str): The cert file path. The default client certificate will + be written to this file when the returned callback is called. + key_path (str): The key file path. The default encrypted client key will + be written to this file when the returned callback is called. + + Returns: + Callable[[], [str, str, bytes]]: A callback which generates the default + client certificate, encrpyted private key and passphrase. It writes + the certificate and private key into the cert_path and key_path, and + returns the cert_path, key_path and passphrase bytes. + + Raises: + google.auth.exceptions.DefaultClientCertSourceError: If any problem + occurs when loading or saving the client certificate and key. + """ + if not has_default_client_cert_source(include_context_aware=True): + raise exceptions.MutualTLSChannelError( + "Default client encrypted cert source doesn't exist" + ) + + def callback(): + try: + ( + _, + cert_bytes, + key_bytes, + passphrase_bytes, + ) = _mtls_helper.get_client_ssl_credentials(generate_encrypted_key=True) + with open(cert_path, "wb") as cert_file: + cert_file.write(cert_bytes) + with open(key_path, "wb") as key_file: + key_file.write(key_bytes) + except (exceptions.ClientCertError, OSError) as caught_exc: + new_exc = exceptions.MutualTLSChannelError(caught_exc) + raise new_exc from caught_exc + + return cert_path, key_path, passphrase_bytes + + return callback + + +def should_use_client_cert(): + """Returns boolean for whether the client certificate should be used for mTLS. + + This is a wrapper around _mtls_helper.check_use_client_cert(). + If GOOGLE_API_USE_CLIENT_CERTIFICATE is set to true or false, a corresponding + bool value will be returned + If GOOGLE_API_USE_CLIENT_CERTIFICATE is unset, the value will be inferred by + reading a file pointed at by GOOGLE_API_CERTIFICATE_CONFIG, and verifying it + contains a "workload" section. If so, the function will return True, + otherwise False. + + Returns: + bool: indicating whether the client certificate should be used for mTLS. + """ + return _mtls_helper.check_use_client_cert() diff --git a/intelliaide/vendor/google/auth/transport/requests.py b/intelliaide/vendor/google/auth/transport/requests.py new file mode 100644 index 0000000..9735762 --- /dev/null +++ b/intelliaide/vendor/google/auth/transport/requests.py @@ -0,0 +1,634 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Transport adapter for Requests.""" + +from __future__ import absolute_import + +import functools +import http.client as http_client +import logging +import numbers +import time +from typing import Optional + +try: + import requests +except ImportError as caught_exc: # pragma: NO COVER + raise ImportError( + "The requests library is not installed from please install the requests package to use the requests transport." + ) from caught_exc +import requests.adapters # pylint: disable=ungrouped-imports +import requests.exceptions # pylint: disable=ungrouped-imports +from requests.packages.urllib3.util.ssl_ import ( # type: ignore + create_urllib3_context, +) # pylint: disable=ungrouped-imports + +from google.auth import _helpers +from google.auth import exceptions +from google.auth import transport +from google.auth.transport import _mtls_helper +import google.auth.transport._mtls_helper +from google.oauth2 import service_account + +_LOGGER = logging.getLogger(__name__) + +_DEFAULT_TIMEOUT = 120 # in seconds + + +class _Response(transport.Response): + """Requests transport response adapter. + + Args: + response (requests.Response): The raw Requests response. + """ + + def __init__(self, response): + self._response = response + + @property + def status(self): + return self._response.status_code + + @property + def headers(self): + return self._response.headers + + @property + def data(self): + return self._response.content + + +class TimeoutGuard(object): + """A context manager raising an error if the suite execution took too long. + + Args: + timeout (Union[None, Union[float, Tuple[float, float]]]): + The maximum number of seconds a suite can run without the context + manager raising a timeout exception on exit. If passed as a tuple, + the smaller of the values is taken as a timeout. If ``None``, a + timeout error is never raised. + timeout_error_type (Optional[Exception]): + The type of the error to raise on timeout. Defaults to + :class:`requests.exceptions.Timeout`. + """ + + def __init__(self, timeout, timeout_error_type=requests.exceptions.Timeout): + self._timeout = timeout + self.remaining_timeout = timeout + self._timeout_error_type = timeout_error_type + + def __enter__(self): + self._start = time.time() + return self + + def __exit__(self, exc_type, exc_value, traceback): + if exc_value: + return # let the error bubble up automatically + + if self._timeout is None: + return # nothing to do, the timeout was not specified + + elapsed = time.time() - self._start + deadline_hit = False + + if isinstance(self._timeout, numbers.Number): + self.remaining_timeout = self._timeout - elapsed + deadline_hit = self.remaining_timeout <= 0 + else: + self.remaining_timeout = tuple(x - elapsed for x in self._timeout) + deadline_hit = min(self.remaining_timeout) <= 0 + + if deadline_hit: + raise self._timeout_error_type() + + +class Request(transport.Request): + """Requests request adapter. + + This class is used internally for making requests using various transports + in a consistent way. If you use :class:`AuthorizedSession` you do not need + to construct or use this class directly. + + This class can be useful if you want to manually refresh a + :class:`~google.auth.credentials.Credentials` instance:: + + import google.auth.transport.requests + import requests + + request = google.auth.transport.requests.Request() + + credentials.refresh(request) + + Args: + session (requests.Session): An instance :class:`requests.Session` used + to make HTTP requests. If not specified, a session will be created. + + .. automethod:: __call__ + """ + + def __init__(self, session: Optional[requests.Session] = None) -> None: + if not session: + session = requests.Session() + + self.session = session + + def __del__(self): + try: + if hasattr(self, "session") and self.session is not None: + self.session.close() + except TypeError: + # NOTE: For certain Python binary built, the queue.Empty exception + # might not be considered a normal Python exception causing + # TypeError. + pass + + def __call__( + self, + url, + method="GET", + body=None, + headers=None, + timeout=_DEFAULT_TIMEOUT, + **kwargs + ): + """Make an HTTP request using requests. + + Args: + url (str): The URI to be requested. + method (str): The HTTP method to use for the request. Defaults + to 'GET'. + body (bytes): The payload or body in HTTP request. + headers (Mapping[str, str]): Request headers. + timeout (Optional[int]): The number of seconds to wait for a + response from the server. If not specified or if None, the + requests default timeout will be used. + kwargs: Additional arguments passed through to the underlying + requests :meth:`~requests.Session.request` method. + + Returns: + google.auth.transport.Response: The HTTP response. + + Raises: + google.auth.exceptions.TransportError: If any exception occurred. + """ + try: + _helpers.request_log(_LOGGER, method, url, body, headers) + response = self.session.request( + method, url, data=body, headers=headers, timeout=timeout, **kwargs + ) + _helpers.response_log(_LOGGER, response) + return _Response(response) + except requests.exceptions.RequestException as caught_exc: + new_exc = exceptions.TransportError(caught_exc) + raise new_exc from caught_exc + + +class _MutualTlsAdapter(requests.adapters.HTTPAdapter): + """ + A TransportAdapter that enables mutual TLS. + + Args: + cert (bytes): client certificate in PEM format + key (bytes): client private key in PEM format + + Raises: + ImportError: if certifi or pyOpenSSL is not installed + OpenSSL.crypto.Error: if client cert or key is invalid + """ + + def __init__(self, cert, key): + import certifi + from OpenSSL import crypto + import urllib3.contrib.pyopenssl # type: ignore + + urllib3.contrib.pyopenssl.inject_into_urllib3() + + pkey = crypto.load_privatekey(crypto.FILETYPE_PEM, key) + x509 = crypto.load_certificate(crypto.FILETYPE_PEM, cert) + + ctx_poolmanager = create_urllib3_context() + ctx_poolmanager.load_verify_locations(cafile=certifi.where()) + ctx_poolmanager._ctx.use_certificate(x509) + ctx_poolmanager._ctx.use_privatekey(pkey) + self._ctx_poolmanager = ctx_poolmanager + + ctx_proxymanager = create_urllib3_context() + ctx_proxymanager.load_verify_locations(cafile=certifi.where()) + ctx_proxymanager._ctx.use_certificate(x509) + ctx_proxymanager._ctx.use_privatekey(pkey) + self._ctx_proxymanager = ctx_proxymanager + + super(_MutualTlsAdapter, self).__init__() + + def init_poolmanager(self, *args, **kwargs): + kwargs["ssl_context"] = self._ctx_poolmanager + super(_MutualTlsAdapter, self).init_poolmanager(*args, **kwargs) + + def proxy_manager_for(self, *args, **kwargs): + kwargs["ssl_context"] = self._ctx_proxymanager + return super(_MutualTlsAdapter, self).proxy_manager_for(*args, **kwargs) + + +class _MutualTlsOffloadAdapter(requests.adapters.HTTPAdapter): + """ + A TransportAdapter that enables mutual TLS and offloads the client side + signing operation to the signing library. + + Args: + enterprise_cert_file_path (str): the path to a enterprise cert JSON + file. The file should contain the following field: + + { + "libs": { + "signer_library": "...", + "offload_library": "..." + } + } + + Raises: + ImportError: if certifi or pyOpenSSL is not installed + google.auth.exceptions.MutualTLSChannelError: If mutual TLS channel + creation failed for any reason. + """ + + def __init__(self, enterprise_cert_file_path): + import certifi + from google.auth.transport import _custom_tls_signer + + self.signer = _custom_tls_signer.CustomTlsSigner(enterprise_cert_file_path) + self.signer.load_libraries() + + import urllib3.contrib.pyopenssl + + urllib3.contrib.pyopenssl.inject_into_urllib3() + + poolmanager = create_urllib3_context() + poolmanager.load_verify_locations(cafile=certifi.where()) + self.signer.attach_to_ssl_context(poolmanager) + self._ctx_poolmanager = poolmanager + + proxymanager = create_urllib3_context() + proxymanager.load_verify_locations(cafile=certifi.where()) + self.signer.attach_to_ssl_context(proxymanager) + self._ctx_proxymanager = proxymanager + + super(_MutualTlsOffloadAdapter, self).__init__() + + def init_poolmanager(self, *args, **kwargs): + kwargs["ssl_context"] = self._ctx_poolmanager + super(_MutualTlsOffloadAdapter, self).init_poolmanager(*args, **kwargs) + + def proxy_manager_for(self, *args, **kwargs): + kwargs["ssl_context"] = self._ctx_proxymanager + return super(_MutualTlsOffloadAdapter, self).proxy_manager_for(*args, **kwargs) + + +class AuthorizedSession(requests.Session): + """A Requests Session class with credentials. + + This class is used to perform requests to API endpoints that require + authorization:: + + from google.auth.transport.requests import AuthorizedSession + + authed_session = AuthorizedSession(credentials) + + response = authed_session.request( + 'GET', 'https://www.googleapis.com/storage/v1/b') + + + The underlying :meth:`request` implementation handles adding the + credentials' headers to the request and refreshing credentials as needed. + + This class also supports mutual TLS via :meth:`configure_mtls_channel` + method. In order to use this method, the `GOOGLE_API_USE_CLIENT_CERTIFICATE` + environment variable must be explicitly set to ``true``, otherwise it does + nothing. Assume the environment is set to ``true``, the method behaves in the + following manner: + + If client_cert_callback is provided, client certificate and private + key are loaded using the callback; if client_cert_callback is None, + application default SSL credentials will be used. Exceptions are raised if + there are problems with the certificate, private key, or the loading process, + so it should be called within a try/except block. + + First we set the environment variable to ``true``, then create an :class:`AuthorizedSession` + instance and specify the endpoints:: + + regular_endpoint = 'https://pubsub.googleapis.com/v1/projects/{my_project_id}/topics' + mtls_endpoint = 'https://pubsub.mtls.googleapis.com/v1/projects/{my_project_id}/topics' + + authed_session = AuthorizedSession(credentials) + + Now we can pass a callback to :meth:`configure_mtls_channel`:: + + def my_cert_callback(): + # some code to load client cert bytes and private key bytes, both in + # PEM format. + some_code_to_load_client_cert_and_key() + if loaded: + return cert, key + raise MyClientCertFailureException() + + # Always call configure_mtls_channel within a try/except block. + try: + authed_session.configure_mtls_channel(my_cert_callback) + except: + # handle exceptions. + + if authed_session.is_mtls: + response = authed_session.request('GET', mtls_endpoint) + else: + response = authed_session.request('GET', regular_endpoint) + + + You can alternatively use application default SSL credentials like this:: + + try: + authed_session.configure_mtls_channel() + except: + # handle exceptions. + + Args: + credentials (google.auth.credentials.Credentials): The credentials to + add to the request. + refresh_status_codes (Sequence[int]): Which HTTP status codes indicate + that credentials should be refreshed and the request should be + retried. + max_refresh_attempts (int): The maximum number of times to attempt to + refresh the credentials and retry the request. + refresh_timeout (Optional[int]): The timeout value in seconds for + credential refresh HTTP requests. + auth_request (google.auth.transport.requests.Request): + (Optional) An instance of + :class:`~google.auth.transport.requests.Request` used when + refreshing credentials. If not passed, + an instance of :class:`~google.auth.transport.requests.Request` + is created. + default_host (Optional[str]): A host like "pubsub.googleapis.com". + This is used when a self-signed JWT is created from service + account credentials. + """ + + def __init__( + self, + credentials, + refresh_status_codes=transport.DEFAULT_REFRESH_STATUS_CODES, + max_refresh_attempts=transport.DEFAULT_MAX_REFRESH_ATTEMPTS, + refresh_timeout=None, + auth_request=None, + default_host=None, + ): + super(AuthorizedSession, self).__init__() + self.credentials = credentials + self._refresh_status_codes = refresh_status_codes + self._max_refresh_attempts = max_refresh_attempts + self._refresh_timeout = refresh_timeout + self._is_mtls = False + self._default_host = default_host + + if auth_request is None: + self._auth_request_session = requests.Session() + + # Using an adapter to make HTTP requests robust to network errors. + # This adapter retrys HTTP requests when network errors occur + # and the requests seems safely retryable. + retry_adapter = requests.adapters.HTTPAdapter(max_retries=3) + self._auth_request_session.mount("https://", retry_adapter) + + # Do not pass `self` as the session here, as it can lead to + # infinite recursion. + auth_request = Request(self._auth_request_session) + else: + self._auth_request_session = None + + # Request instance used by internal methods (for example, + # credentials.refresh). + self._auth_request = auth_request + + # https://google.aip.dev/auth/4111 + # Attempt to use self-signed JWTs when a service account is used. + if isinstance(self.credentials, service_account.Credentials): + self.credentials._create_self_signed_jwt( + "https://{}/".format(self._default_host) if self._default_host else None + ) + + def configure_mtls_channel(self, client_cert_callback=None): + """Configure the client certificate and key for SSL connection. + + The function does nothing unless `GOOGLE_API_USE_CLIENT_CERTIFICATE` is + explicitly set to `true`. In this case if client certificate and key are + successfully obtained (from the given client_cert_callback or from application + default SSL credentials), a :class:`_MutualTlsAdapter` instance will be mounted + to "https://" prefix. + + Args: + client_cert_callback (Optional[Callable[[], (bytes, bytes)]]): + The optional callback returns the client certificate and private + key bytes both in PEM format. + If the callback is None, application default SSL credentials + will be used. + + Raises: + google.auth.exceptions.MutualTLSChannelError: If mutual TLS channel + creation failed for any reason. + """ + use_client_cert = google.auth.transport._mtls_helper.check_use_client_cert() + if not use_client_cert: + self._is_mtls = False + return + try: + import OpenSSL + except ImportError as caught_exc: + new_exc = exceptions.MutualTLSChannelError(caught_exc) + raise new_exc from caught_exc + + try: + ( + self._is_mtls, + cert, + key, + ) = google.auth.transport._mtls_helper.get_client_cert_and_key( + client_cert_callback + ) + + if self._is_mtls: + mtls_adapter = _MutualTlsAdapter(cert, key) + self._cached_cert = cert + self.mount("https://", mtls_adapter) + except ( + exceptions.ClientCertError, + ImportError, + OpenSSL.crypto.Error, + ) as caught_exc: + new_exc = exceptions.MutualTLSChannelError(caught_exc) + raise new_exc from caught_exc + + def request( + self, + method, + url, + data=None, + headers=None, + max_allowed_time=None, + timeout=_DEFAULT_TIMEOUT, + **kwargs + ): + """Implementation of Requests' request. + + Args: + timeout (Optional[Union[float, Tuple[float, float]]]): + The amount of time in seconds to wait for the server response + with each individual request. Can also be passed as a tuple + ``(connect_timeout, read_timeout)``. See :meth:`requests.Session.request` + documentation for details. + max_allowed_time (Optional[float]): + If the method runs longer than this, a ``Timeout`` exception is + automatically raised. Unlike the ``timeout`` parameter, this + value applies to the total method execution time, even if + multiple requests are made under the hood. + + Mind that it is not guaranteed that the timeout error is raised + at ``max_allowed_time``. It might take longer, for example, if + an underlying request takes a lot of time, but the request + itself does not timeout, e.g. if a large file is being + transmitted. The timeout error will be raised after such + request completes. + Raises: + google.auth.exceptions.MutualTLSChannelError: If mutual TLS + channel creation fails for any reason. + ValueError: If the client certificate is invalid. + """ + # pylint: disable=arguments-differ + # Requests has a ton of arguments to request, but only two + # (method, url) are required. We pass through all of the other + # arguments to super, so no need to exhaustively list them here. + + # Use a kwarg for this instead of an attribute to maintain + # thread-safety. + _credential_refresh_attempt = kwargs.pop("_credential_refresh_attempt", 0) + + # Make a copy of the headers. They will be modified by the credentials + # and we want to pass the original headers if we recurse. + request_headers = headers.copy() if headers is not None else {} + + # Do not apply the timeout unconditionally in order to not override the + # _auth_request's default timeout. + auth_request = ( + self._auth_request + if timeout is None + else functools.partial(self._auth_request, timeout=timeout) + ) + + remaining_time = max_allowed_time + + with TimeoutGuard(remaining_time) as guard: + self.credentials.before_request(auth_request, method, url, request_headers) + remaining_time = guard.remaining_timeout + + with TimeoutGuard(remaining_time) as guard: + _helpers.request_log(_LOGGER, method, url, data, headers) + response = super(AuthorizedSession, self).request( + method, + url, + data=data, + headers=request_headers, + timeout=timeout, + **kwargs + ) + remaining_time = guard.remaining_timeout + + # If the response indicated that the credentials needed to be + # refreshed, then refresh the credentials and re-attempt the + # request. + # A stored token may expire between the time it is retrieved and + # the time the request is made, so we may need to try twice. + if ( + response.status_code in self._refresh_status_codes + and _credential_refresh_attempt < self._max_refresh_attempts + ): + # Handle unauthorized permission error(401 status code) + if response.status_code == http_client.UNAUTHORIZED: + if self.is_mtls: + ( + call_cert_bytes, + call_key_bytes, + cached_fingerprint, + current_cert_fingerprint, + ) = _mtls_helper.check_parameters_for_unauthorized_response( + self._cached_cert + ) + if cached_fingerprint != current_cert_fingerprint: + try: + _LOGGER.info( + "Client certificate has changed, reconfiguring mTLS " + "channel." + ) + self.configure_mtls_channel( + lambda: (call_cert_bytes, call_key_bytes) + ) + except Exception as e: + _LOGGER.error("Failed to reconfigure mTLS channel: %s", e) + raise exceptions.MutualTLSChannelError( + "Failed to reconfigure mTLS channel" + ) from e + else: + _LOGGER.info( + "Skipping reconfiguration of mTLS channel because the client" + " certificate has not changed." + ) + _LOGGER.info( + "Refreshing credentials due to a %s response. Attempt %s/%s.", + response.status_code, + _credential_refresh_attempt + 1, + self._max_refresh_attempts, + ) + + # Do not apply the timeout unconditionally in order to not override the + # _auth_request's default timeout. + auth_request = ( + self._auth_request + if timeout is None + else functools.partial(self._auth_request, timeout=timeout) + ) + + with TimeoutGuard(remaining_time) as guard: + self.credentials.refresh(auth_request) + remaining_time = guard.remaining_timeout + + # Recurse. Pass in the original headers, not our modified set, but + # do pass the adjusted max allowed time (i.e. the remaining total time). + return self.request( + method, + url, + data=data, + headers=headers, + max_allowed_time=remaining_time, + timeout=timeout, + _credential_refresh_attempt=_credential_refresh_attempt + 1, + **kwargs + ) + + return response + + @property + def is_mtls(self): + """Indicates if the created SSL channel is mutual TLS.""" + return self._is_mtls + + def close(self): + if self._auth_request_session is not None: + self._auth_request_session.close() + super(AuthorizedSession, self).close() diff --git a/intelliaide/vendor/google/auth/transport/urllib3.py b/intelliaide/vendor/google/auth/transport/urllib3.py new file mode 100644 index 0000000..de07007 --- /dev/null +++ b/intelliaide/vendor/google/auth/transport/urllib3.py @@ -0,0 +1,493 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Transport adapter for urllib3.""" + +from __future__ import absolute_import + +import http.client as http_client +import logging +import warnings + +# Certifi is Mozilla's certificate bundle. Urllib3 needs a certificate bundle +# to verify HTTPS requests, and certifi is the recommended and most reliable +# way to get a root certificate bundle. See +# http://urllib3.readthedocs.io/en/latest/user-guide.html\ +# #certificate-verification +# For more details. +try: + import certifi +except ImportError: # pragma: NO COVER + certifi = None # type: ignore + +try: + import urllib3 # type: ignore + import urllib3.exceptions # type: ignore + from packaging import version # type: ignore +except ImportError as caught_exc: # pragma: NO COVER + raise ImportError( + "" + f"Error: {caught_exc}." + " The 'google-auth' library requires the extras installed " + "for urllib3 network transport." + "\n" + "Please install the necessary dependencies using pip:\n" + " pip install google-auth[urllib3]\n" + "\n" + "(Note: Using '[urllib3]' ensures the specific dependencies needed for this feature are installed. " + "We recommend running this command in your virtual environment.)" + ) from caught_exc + + +from google.auth import _helpers +from google.auth import exceptions +from google.auth import transport +from google.auth.transport import _mtls_helper +from google.oauth2 import service_account + +if version.parse(urllib3.__version__) >= version.parse("2.0.0"): # pragma: NO COVER + RequestMethods = urllib3._request_methods.RequestMethods # type: ignore +else: # pragma: NO COVER + RequestMethods = urllib3.request.RequestMethods # type: ignore + +_LOGGER = logging.getLogger(__name__) + + +class _Response(transport.Response): + """urllib3 transport response adapter. + + Args: + response (urllib3.response.HTTPResponse): The raw urllib3 response. + """ + + def __init__(self, response): + self._response = response + + @property + def status(self): + return self._response.status + + @property + def headers(self): + return self._response.headers + + @property + def data(self): + return self._response.data + + +class Request(transport.Request): + """urllib3 request adapter. + + This class is used internally for making requests using various transports + in a consistent way. If you use :class:`AuthorizedHttp` you do not need + to construct or use this class directly. + + This class can be useful if you want to manually refresh a + :class:`~google.auth.credentials.Credentials` instance:: + + import google.auth.transport.urllib3 + import urllib3 + + http = urllib3.PoolManager() + request = google.auth.transport.urllib3.Request(http) + + credentials.refresh(request) + + Args: + http (urllib3.PoolManager): An instance of a urllib3 class that implements + the request interface (e.g. :class:`urllib3.PoolManager`). + + .. automethod:: __call__ + """ + + def __init__(self, http): + self.http = http + + def __call__( + self, url, method="GET", body=None, headers=None, timeout=None, **kwargs + ): + """Make an HTTP request using urllib3. + + Args: + url (str): The URI to be requested. + method (str): The HTTP method to use for the request. Defaults + to 'GET'. + body (bytes): The payload / body in HTTP request. + headers (Mapping[str, str]): Request headers. + timeout (Optional[int]): The number of seconds to wait for a + response from the server. If not specified or if None, the + urllib3 default timeout will be used. + kwargs: Additional arguments passed throught to the underlying + urllib3 :meth:`urlopen` method. + + Returns: + google.auth.transport.Response: The HTTP response. + + Raises: + google.auth.exceptions.TransportError: If any exception occurred. + """ + # urllib3 uses a sentinel default value for timeout, so only set it if + # specified. + if timeout is not None: + kwargs["timeout"] = timeout + + try: + _helpers.request_log(_LOGGER, method, url, body, headers) + response = self.http.request( + method, url, body=body, headers=headers, **kwargs + ) + _helpers.response_log(_LOGGER, response) + return _Response(response) + except urllib3.exceptions.HTTPError as caught_exc: + new_exc = exceptions.TransportError(caught_exc) + raise new_exc from caught_exc + + +def _make_default_http(): + if certifi is not None: + return urllib3.PoolManager(cert_reqs="CERT_REQUIRED", ca_certs=certifi.where()) + else: + return urllib3.PoolManager() + + +def _make_mutual_tls_http(cert, key): + """Create a mutual TLS HTTP connection with the given client cert and key. + See https://github.com/urllib3/urllib3/issues/474#issuecomment-253168415 + + Args: + cert (bytes): client certificate in PEM format + key (bytes): client private key in PEM format + + Returns: + urllib3.PoolManager: Mutual TLS HTTP connection. + + Raises: + ImportError: If certifi or pyOpenSSL is not installed. + OpenSSL.crypto.Error: If the cert or key is invalid. + """ + import certifi + from OpenSSL import crypto + import urllib3.contrib.pyopenssl # type: ignore + + urllib3.contrib.pyopenssl.inject_into_urllib3() + ctx = urllib3.util.ssl_.create_urllib3_context() + ctx.load_verify_locations(cafile=certifi.where()) + + pkey = crypto.load_privatekey(crypto.FILETYPE_PEM, key) + x509 = crypto.load_certificate(crypto.FILETYPE_PEM, cert) + + ctx._ctx.use_certificate(x509) + ctx._ctx.use_privatekey(pkey) + + http = urllib3.PoolManager(ssl_context=ctx) + return http + + +class AuthorizedHttp(RequestMethods): # type: ignore + """A urllib3 HTTP class with credentials. + + This class is used to perform requests to API endpoints that require + authorization:: + + from google.auth.transport.urllib3 import AuthorizedHttp + + authed_http = AuthorizedHttp(credentials) + + response = authed_http.request( + 'GET', 'https://www.googleapis.com/storage/v1/b') + + This class implements the urllib3 request interface and can be + used just like any other :class:`urllib3.PoolManager`. + + The underlying :meth:`urlopen` implementation handles adding the + credentials' headers to the request and refreshing credentials as needed. + + This class also supports mutual TLS via :meth:`configure_mtls_channel` + method. In order to use this method, the `GOOGLE_API_USE_CLIENT_CERTIFICATE` + environment variable must be explicitly set to `true`, otherwise it does + nothing. Assume the environment is set to `true`, the method behaves in the + following manner: + If client_cert_callback is provided, client certificate and private + key are loaded using the callback; if client_cert_callback is None, + application default SSL credentials will be used. Exceptions are raised if + there are problems with the certificate, private key, or the loading process, + so it should be called within a try/except block. + + First we set the environment variable to `true`, then create an :class:`AuthorizedHttp` + instance and specify the endpoints:: + + regular_endpoint = 'https://pubsub.googleapis.com/v1/projects/{my_project_id}/topics' + mtls_endpoint = 'https://pubsub.mtls.googleapis.com/v1/projects/{my_project_id}/topics' + + authed_http = AuthorizedHttp(credentials) + + Now we can pass a callback to :meth:`configure_mtls_channel`:: + + def my_cert_callback(): + # some code to load client cert bytes and private key bytes, both in + # PEM format. + some_code_to_load_client_cert_and_key() + if loaded: + return cert, key + raise MyClientCertFailureException() + + # Always call configure_mtls_channel within a try/except block. + try: + is_mtls = authed_http.configure_mtls_channel(my_cert_callback) + except: + # handle exceptions. + + if is_mtls: + response = authed_http.request('GET', mtls_endpoint) + else: + response = authed_http.request('GET', regular_endpoint) + + You can alternatively use application default SSL credentials like this:: + + try: + is_mtls = authed_http.configure_mtls_channel() + except: + # handle exceptions. + + Args: + credentials (google.auth.credentials.Credentials): The credentials to + add to the request. + http (urllib3.PoolManager): The underlying HTTP object to + use to make requests. If not specified, a + :class:`urllib3.PoolManager` instance will be constructed with + sane defaults. + refresh_status_codes (Sequence[int]): Which HTTP status codes indicate + that credentials should be refreshed and the request should be + retried. + max_refresh_attempts (int): The maximum number of times to attempt to + refresh the credentials and retry the request. + default_host (Optional[str]): A host like "pubsub.googleapis.com". + This is used when a self-signed JWT is created from service + account credentials. + """ + + def __init__( + self, + credentials, + http=None, + refresh_status_codes=transport.DEFAULT_REFRESH_STATUS_CODES, + max_refresh_attempts=transport.DEFAULT_MAX_REFRESH_ATTEMPTS, + default_host=None, + ): + if http is None: + self.http = _make_default_http() + self._has_user_provided_http = False + else: + self.http = http + self._has_user_provided_http = True + + self.credentials = credentials + self._refresh_status_codes = refresh_status_codes + self._max_refresh_attempts = max_refresh_attempts + self._default_host = default_host + # Request instance used by internal methods (for example, + # credentials.refresh). + self._request = Request(self.http) + self._is_mtls = False + + # https://google.aip.dev/auth/4111 + # Attempt to use self-signed JWTs when a service account is used. + if isinstance(self.credentials, service_account.Credentials): + self.credentials._create_self_signed_jwt( + "https://{}/".format(self._default_host) if self._default_host else None + ) + + super(AuthorizedHttp, self).__init__() + + def configure_mtls_channel(self, client_cert_callback=None): + """Configures mutual TLS channel using the given client_cert_callback or + application default SSL credentials. The behavior is controlled by + `GOOGLE_API_USE_CLIENT_CERTIFICATE` environment variable. + (1) If the environment variable value is `true`, the function returns True + if the channel is mutual TLS and False otherwise. The `http` provided + in the constructor will be overwritten. + (2) If the environment variable is not set or `false`, the function does + nothing and it always return False. + + Args: + client_cert_callback (Optional[Callable[[], (bytes, bytes)]]): + The optional callback returns the client certificate and private + key bytes both in PEM format. + If the callback is None, application default SSL credentials + will be used. + + Returns: + True if the channel is mutual TLS and False otherwise. + + Raises: + google.auth.exceptions.MutualTLSChannelError: If mutual TLS channel + creation failed for any reason. + """ + use_client_cert = transport._mtls_helper.check_use_client_cert() + if not use_client_cert: + self._is_mtls = False + return False + else: + self._is_mtls = True + try: + import OpenSSL + except ImportError as caught_exc: + new_exc = exceptions.MutualTLSChannelError(caught_exc) + raise new_exc from caught_exc + + try: + found_cert_key, cert, key = transport._mtls_helper.get_client_cert_and_key( + client_cert_callback + ) + + if found_cert_key: + self.http = _make_mutual_tls_http(cert, key) + self._cached_cert = cert + else: + self.http = _make_default_http() + except ( + exceptions.ClientCertError, + ImportError, + OpenSSL.crypto.Error, + ) as caught_exc: + new_exc = exceptions.MutualTLSChannelError(caught_exc) + raise new_exc from caught_exc + + if self._has_user_provided_http: + self._has_user_provided_http = False + warnings.warn( + "`http` provided in the constructor is overwritten", UserWarning + ) + + return found_cert_key + + def urlopen(self, method, url, body=None, headers=None, **kwargs): + """Implementation of urllib3's urlopen.""" + # pylint: disable=arguments-differ + # We use kwargs to collect additional args that we don't need to + # introspect here. However, we do explicitly collect the two + # positional arguments. + + # Use a kwarg for this instead of an attribute to maintain + # thread-safety. + _credential_refresh_attempt = kwargs.pop("_credential_refresh_attempt", 0) + + if headers is None: + headers = self.headers + + use_mtls = False + if self._is_mtls: + MTLS_URL_PREFIXES = ["mtls.googleapis.com", "mtls.sandbox.googleapis.com"] + use_mtls = any([prefix in url for prefix in MTLS_URL_PREFIXES]) + + # Make a copy of the headers. They will be modified by the credentials + # and we want to pass the original headers if we recurse. + request_headers = headers.copy() + + self.credentials.before_request(self._request, method, url, request_headers) + + response = self.http.urlopen( + method, url, body=body, headers=request_headers, **kwargs + ) + + # If the response indicated that the credentials needed to be + # refreshed, then refresh the credentials and re-attempt the + # request. + # A stored token may expire between the time it is retrieved and + # the time the request is made, so we may need to try twice. + # The reason urllib3's retries aren't used is because they + # don't allow you to modify the request headers. :/ + if ( + response.status in self._refresh_status_codes + and _credential_refresh_attempt < self._max_refresh_attempts + ): + if response.status == http_client.UNAUTHORIZED: + if use_mtls: + ( + call_cert_bytes, + call_key_bytes, + cached_fingerprint, + current_cert_fingerprint, + ) = _mtls_helper.check_parameters_for_unauthorized_response( + self._cached_cert + ) + if cached_fingerprint != current_cert_fingerprint: + try: + _LOGGER.info( + "Client certificate has changed, reconfiguring mTLS " + "channel." + ) + self.configure_mtls_channel( + client_cert_callback=lambda: ( + call_cert_bytes, + call_key_bytes, + ) + ) + except Exception as e: + _LOGGER.error("Failed to reconfigure mTLS channel: %s", e) + raise exceptions.MutualTLSChannelError( + "Failed to reconfigure mTLS channel" + ) from e + + else: + _LOGGER.info( + "Skipping reconfiguration of mTLS channel because the " + "client certificate has not changed." + ) + + _LOGGER.info( + "Refreshing credentials due to a %s response. Attempt %s/%s.", + response.status, + _credential_refresh_attempt + 1, + self._max_refresh_attempts, + ) + + self.credentials.refresh(self._request) + + # Recurse. Pass in the original headers, not our modified set. + return self.urlopen( + method, + url, + body=body, + headers=headers, + _credential_refresh_attempt=_credential_refresh_attempt + 1, + **kwargs, + ) + + return response + + # Proxy methods for compliance with the urllib3.PoolManager interface + + def __enter__(self): + """Proxy to ``self.http``.""" + return self.http.__enter__() + + def __exit__(self, exc_type, exc_val, exc_tb): + """Proxy to ``self.http``.""" + return self.http.__exit__(exc_type, exc_val, exc_tb) + + def __del__(self): + if hasattr(self, "http") and self.http is not None: + self.http.clear() + + @property + def headers(self): + """Proxy to ``self.http``.""" + return self.http.headers + + @headers.setter + def headers(self, value): + """Proxy to ``self.http``.""" + self.http.headers = value diff --git a/intelliaide/vendor/google/auth/version.py b/intelliaide/vendor/google/auth/version.py new file mode 100644 index 0000000..4c624ee --- /dev/null +++ b/intelliaide/vendor/google/auth/version.py @@ -0,0 +1,15 @@ +# Copyright 2021 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +__version__ = "2.53.0" diff --git a/intelliaide/vendor/google/oauth2/__init__.py b/intelliaide/vendor/google/oauth2/__init__.py new file mode 100644 index 0000000..4fb71fd --- /dev/null +++ b/intelliaide/vendor/google/oauth2/__init__.py @@ -0,0 +1,15 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Google OAuth 2.0 Library for Python.""" diff --git a/intelliaide/vendor/google/oauth2/_client.py b/intelliaide/vendor/google/oauth2/_client.py new file mode 100644 index 0000000..1c7ba46 --- /dev/null +++ b/intelliaide/vendor/google/oauth2/_client.py @@ -0,0 +1,649 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""OAuth 2.0 client. + +This is a client for interacting with an OAuth 2.0 authorization server's +token endpoint. + +For more information about the token endpoint, see +`Section 3.1 of rfc6749`_ + +.. _Section 3.1 of rfc6749: https://tools.ietf.org/html/rfc6749#section-3.2 +""" + +import datetime +import http.client as http_client +import json +import logging +import urllib + +from google.auth import _exponential_backoff +from google.auth import _helpers +from google.auth import credentials +from google.auth import exceptions +from google.auth import jwt +from google.auth import metrics +from google.auth import transport + +_LOGGER = logging.getLogger(__name__) + +_URLENCODED_CONTENT_TYPE = "application/x-www-form-urlencoded" +_JSON_CONTENT_TYPE = "application/json" +_JWT_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:jwt-bearer" +_REFRESH_GRANT_TYPE = "refresh_token" +_BLOCKING_REGIONAL_ACCESS_BOUNDARY_LOOKUP_TIMEOUT = 3 + + +def _handle_error_response(response_data, retryable_error): + """Translates an error response into an exception. + + Args: + response_data (Mapping | str): The decoded response data. + retryable_error Optional[bool]: A boolean indicating if an error is retryable. + Defaults to False. + + Raises: + google.auth.exceptions.RefreshError: The errors contained in response_data. + """ + + retryable_error = retryable_error if retryable_error else False + + if isinstance(response_data, str): + raise exceptions.RefreshError(response_data, retryable=retryable_error) + try: + error_details = "{}: {}".format( + response_data["error"], response_data.get("error_description") + ) + # If no details could be extracted, use the response data. + except (KeyError, ValueError): + error_details = json.dumps(response_data) + + raise exceptions.RefreshError( + error_details, response_data, retryable=retryable_error + ) + + +def _can_retry(status_code, response_data): + """Checks if a request can be retried by inspecting the status code + and response body of the request. + + Args: + status_code (int): The response status code. + response_data (Mapping | str): The decoded response data. + + Returns: + bool: True if the response is retryable. False otherwise. + """ + if status_code in transport.DEFAULT_RETRYABLE_STATUS_CODES: + return True + + try: + # For a failed response, response_body could be a string + error_desc = response_data.get("error_description") or "" + error_code = response_data.get("error") or "" + + if not isinstance(error_code, str) or not isinstance(error_desc, str): + return False + + # Per Oauth 2.0 RFC https://www.rfc-editor.org/rfc/rfc6749.html#section-4.1.2.1 + # This is needed because a redirect will not return a 500 status code. + retryable_error_descriptions = { + "internal_failure", + "server_error", + "temporarily_unavailable", + } + + if any(e in retryable_error_descriptions for e in (error_code, error_desc)): + return True + + except AttributeError: + pass + + return False + + +def _parse_expiry(response_data): + """Parses the expiry field from a response into a datetime. + + Args: + response_data (Mapping): The JSON-parsed response data. + + Returns: + Optional[datetime]: The expiration or ``None`` if no expiration was + specified. + """ + expires_in = response_data.get("expires_in", None) + + if expires_in is not None: + # Some services do not respect the OAUTH2.0 RFC and send expires_in as a + # JSON String. + if isinstance(expires_in, str): + expires_in = int(expires_in) + + return _helpers.utcnow() + datetime.timedelta(seconds=expires_in) + else: + return None + + +def _token_endpoint_request_no_throw( + request, + token_uri, + body, + access_token=None, + use_json=False, + can_retry=True, + headers=None, + **kwargs +): + """Makes a request to the OAuth 2.0 authorization server's token endpoint. + This function doesn't throw on response errors. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + token_uri (str): The OAuth 2.0 authorizations server's token endpoint + URI. + body (Mapping[str, str]): The parameters to send in the request body. + access_token (Optional(str)): The access token needed to make the request. + use_json (Optional(bool)): Use urlencoded format or json format for the + content type. The default value is False. + can_retry (bool): Enable or disable request retry behavior. + headers (Optional[Mapping[str, str]]): The headers for the request. + kwargs: Additional arguments passed on to the request method. The + kwargs will be passed to `requests.request` method, see: + https://docs.python-requests.org/en/latest/api/#requests.request. + For example, you can use `cert=("cert_pem_path", "key_pem_path")` + to set up client side SSL certificate, and use + `verify="ca_bundle_path"` to set up the CA certificates for sever + side SSL certificate verification. + + Returns: + Tuple(bool, Mapping[str, str], Optional[bool]): A boolean indicating + if the request is successful, a mapping for the JSON-decoded response + data and in the case of an error a boolean indicating if the error + is retryable. + """ + if use_json: + headers_to_use = {"Content-Type": _JSON_CONTENT_TYPE} + body = json.dumps(body).encode("utf-8") + else: + headers_to_use = {"Content-Type": _URLENCODED_CONTENT_TYPE} + body = urllib.parse.urlencode(body).encode("utf-8") + + if access_token: + headers_to_use["Authorization"] = "Bearer {}".format(access_token) + + if headers: + headers_to_use.update(headers) + + response_data = {} + retryable_error = False + + retries = _exponential_backoff.ExponentialBackoff() + for _ in retries: + response = request( + method="POST", url=token_uri, headers=headers_to_use, body=body, **kwargs + ) + response_body = ( + response.data.decode("utf-8") + if hasattr(response.data, "decode") + else response.data + ) + + try: + # response_body should be a JSON + response_data = json.loads(response_body) + except ValueError: + response_data = response_body + + if response.status == http_client.OK: + return True, response_data, None + + retryable_error = _can_retry( + status_code=response.status, response_data=response_data + ) + + if not can_retry or not retryable_error: + return False, response_data, retryable_error + + return False, response_data, retryable_error + + +def _token_endpoint_request( + request, + token_uri, + body, + access_token=None, + use_json=False, + can_retry=True, + headers=None, + **kwargs +): + """Makes a request to the OAuth 2.0 authorization server's token endpoint. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + token_uri (str): The OAuth 2.0 authorizations server's token endpoint + URI. + body (Mapping[str, str]): The parameters to send in the request body. + access_token (Optional(str)): The access token needed to make the request. + use_json (Optional(bool)): Use urlencoded format or json format for the + content type. The default value is False. + can_retry (bool): Enable or disable request retry behavior. + headers (Optional[Mapping[str, str]]): The headers for the request. + kwargs: Additional arguments passed on to the request method. The + kwargs will be passed to `requests.request` method, see: + https://docs.python-requests.org/en/latest/api/#requests.request. + For example, you can use `cert=("cert_pem_path", "key_pem_path")` + to set up client side SSL certificate, and use + `verify="ca_bundle_path"` to set up the CA certificates for sever + side SSL certificate verification. + + Returns: + Mapping[str, str]: The JSON-decoded response data. + + Raises: + google.auth.exceptions.RefreshError: If the token endpoint returned + an error. + """ + + ( + response_status_ok, + response_data, + retryable_error, + ) = _token_endpoint_request_no_throw( + request, + token_uri, + body, + access_token=access_token, + use_json=use_json, + can_retry=can_retry, + headers=headers, + **kwargs + ) + if not response_status_ok: + _handle_error_response(response_data, retryable_error) + return response_data + + +def jwt_grant(request, token_uri, assertion, can_retry=True): + """Implements the JWT Profile for OAuth 2.0 Authorization Grants. + + For more details, see `rfc7523 section 4`_. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + token_uri (str): The OAuth 2.0 authorizations server's token endpoint + URI. + assertion (str): The OAuth 2.0 assertion. + can_retry (bool): Enable or disable request retry behavior. + + Returns: + Tuple[str, Optional[datetime], Mapping[str, str]]: The access token, + expiration, and additional data returned by the token endpoint. + + Raises: + google.auth.exceptions.RefreshError: If the token endpoint returned + an error. + + .. _rfc7523 section 4: https://tools.ietf.org/html/rfc7523#section-4 + """ + body = {"assertion": assertion, "grant_type": _JWT_GRANT_TYPE} + + response_data = _token_endpoint_request( + request, + token_uri, + body, + can_retry=can_retry, + headers={ + metrics.API_CLIENT_HEADER: metrics.token_request_access_token_sa_assertion() + }, + ) + + try: + access_token = response_data["access_token"] + except KeyError as caught_exc: + new_exc = exceptions.RefreshError( + "No access token in response.", response_data, retryable=False + ) + raise new_exc from caught_exc + + expiry = _parse_expiry(response_data) + + return access_token, expiry, response_data + + +def call_iam_generate_id_token_endpoint( + request, + iam_id_token_endpoint, + signer_email, + audience, + access_token, + universe_domain=credentials.DEFAULT_UNIVERSE_DOMAIN, +): + """Call iam.generateIdToken endpoint to get ID token. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + iam_id_token_endpoint (str): The IAM ID token endpoint to use. + signer_email (str): The signer email used to form the IAM + generateIdToken endpoint. + audience (str): The audience for the ID token. + access_token (str): The access token used to call the IAM endpoint. + universe_domain (str): The universe domain for the request. The + default is ``googleapis.com``. + + Returns: + Tuple[str, datetime]: The ID token and expiration. + """ + body = {"audience": audience, "includeEmail": "true", "useEmailAzp": "true"} + + response_data = _token_endpoint_request( + request, + iam_id_token_endpoint.replace( + credentials.DEFAULT_UNIVERSE_DOMAIN, universe_domain + ).format(signer_email), + body, + access_token=access_token, + use_json=True, + ) + + try: + id_token = response_data["token"] + except KeyError as caught_exc: + new_exc = exceptions.RefreshError( + "No ID token in response.", response_data, retryable=False + ) + raise new_exc from caught_exc + + payload = jwt.decode(id_token, verify=False) + expiry = _helpers.utcfromtimestamp(payload["exp"]) + + return id_token, expiry + + +def id_token_jwt_grant(request, token_uri, assertion, can_retry=True): + """Implements the JWT Profile for OAuth 2.0 Authorization Grants, but + requests an OpenID Connect ID Token instead of an access token. + + This is a variant on the standard JWT Profile that is currently unique + to Google. This was added for the benefit of authenticating to services + that require ID Tokens instead of access tokens or JWT bearer tokens. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + token_uri (str): The OAuth 2.0 authorization server's token endpoint + URI. + assertion (str): JWT token signed by a service account. The token's + payload must include a ``target_audience`` claim. + can_retry (bool): Enable or disable request retry behavior. + + Returns: + Tuple[str, Optional[datetime], Mapping[str, str]]: + The (encoded) Open ID Connect ID Token, expiration, and additional + data returned by the endpoint. + + Raises: + google.auth.exceptions.RefreshError: If the token endpoint returned + an error. + """ + body = {"assertion": assertion, "grant_type": _JWT_GRANT_TYPE} + + response_data = _token_endpoint_request( + request, + token_uri, + body, + can_retry=can_retry, + headers={ + metrics.API_CLIENT_HEADER: metrics.token_request_id_token_sa_assertion() + }, + ) + + try: + id_token = response_data["id_token"] + except KeyError as caught_exc: + new_exc = exceptions.RefreshError( + "No ID token in response.", response_data, retryable=False + ) + raise new_exc from caught_exc + + payload = jwt.decode(id_token, verify=False) + expiry = _helpers.utcfromtimestamp(payload["exp"]) + + return id_token, expiry, response_data + + +def _handle_refresh_grant_response(response_data, refresh_token): + """Extract tokens from refresh grant response. + + Args: + response_data (Mapping[str, str]): Refresh grant response data. + refresh_token (str): Current refresh token. + + Returns: + Tuple[str, str, Optional[datetime], Mapping[str, str]]: The access token, + refresh token, expiration, and additional data returned by the token + endpoint. If response_data doesn't have refresh token, then the current + refresh token will be returned. + + Raises: + google.auth.exceptions.RefreshError: If the token endpoint returned + an error. + """ + try: + access_token = response_data["access_token"] + except KeyError as caught_exc: + new_exc = exceptions.RefreshError( + "No access token in response.", response_data, retryable=False + ) + raise new_exc from caught_exc + + refresh_token = response_data.get("refresh_token", refresh_token) + expiry = _parse_expiry(response_data) + + return access_token, refresh_token, expiry, response_data + + +def refresh_grant( + request, + token_uri, + refresh_token, + client_id, + client_secret, + scopes=None, + rapt_token=None, + can_retry=True, +): + """Implements the OAuth 2.0 refresh token grant. + + For more details, see `rfc678 section 6`_. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + token_uri (str): The OAuth 2.0 authorizations server's token endpoint + URI. + refresh_token (str): The refresh token to use to get a new access + token. + client_id (str): The OAuth 2.0 application's client ID. + client_secret (str): The Oauth 2.0 appliaction's client secret. + scopes (Optional(Sequence[str])): Scopes to request. If present, all + scopes must be authorized for the refresh token. Useful if refresh + token has a wild card scope (e.g. + 'https://www.googleapis.com/auth/any-api'). + rapt_token (Optional(str)): The reauth Proof Token. + can_retry (bool): Enable or disable request retry behavior. + + Returns: + Tuple[str, str, Optional[datetime], Mapping[str, str]]: The access + token, new or current refresh token, expiration, and additional data + returned by the token endpoint. + + Raises: + google.auth.exceptions.RefreshError: If the token endpoint returned + an error. + + .. _rfc6748 section 6: https://tools.ietf.org/html/rfc6749#section-6 + """ + body = { + "grant_type": _REFRESH_GRANT_TYPE, + "client_id": client_id, + "client_secret": client_secret, + "refresh_token": refresh_token, + } + if scopes: + body["scope"] = " ".join(scopes) + if rapt_token: + body["rapt"] = rapt_token + + response_data = _token_endpoint_request( + request, token_uri, body, can_retry=can_retry + ) + return _handle_refresh_grant_response(response_data, refresh_token) + + +def _lookup_regional_access_boundary(request, url, headers=None, fail_fast=False): + """Implements the global lookup of a credential Regional Access Boundary. + For the lookup, we send a request to the global lookup endpoint and then + parse the response. Service account credentials, workload identity + pools and workforce pools implementation may have Regional Access Boundaries configured. + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + url (str): The Regional Access Boundary lookup url. + headers (Optional[Mapping[str, str]]): The headers for the request. + fail_fast (bool): Whether the lookup should fail fast (uses a short timeout and no retries). + Returns: + Optional[Mapping[str,list|str]]: A dictionary containing + "locations" as a list of allowed locations as strings and + "encodedLocations" as a hex string. + e.g: + { + "locations": [ + "us-central1", "us-east1", "europe-west1", "asia-east1" + ], + "encodedLocations": "0xA30" + } + """ + + response_data = _lookup_regional_access_boundary_request( + request, url, headers=headers, fail_fast=fail_fast + ) + if response_data is None: + # Error was already logged by _lookup_regional_access_boundary_request + return None + + if "encodedLocations" not in response_data: + _LOGGER.error( + "Regional Access Boundary response malformed: missing 'encodedLocations' key in %s", + response_data, + ) + return None + return response_data + + +def _lookup_regional_access_boundary_request( + request, url, can_retry=True, headers=None, fail_fast=False +): + """Makes a request to the Regional Access Boundary lookup endpoint. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + url (str): The Regional Access Boundary lookup url. + can_retry (bool): Enable or disable request retry behavior. Defaults to true. + headers (Optional[Mapping[str, str]]): The headers for the request. + fail_fast (bool): Whether the lookup should fail fast (uses a short timeout and no retries). + + Returns: + Optional[Mapping[str, str]]: The JSON-decoded response data on success, or None on failure. + """ + ( + response_status_ok, + response_data, + retryable_error, + ) = _lookup_regional_access_boundary_request_no_throw( + request, url, can_retry=can_retry, headers=headers, fail_fast=fail_fast + ) + if not response_status_ok: + _LOGGER.warning( + "Regional Access Boundary HTTP request failed after retries: response_data=%s, retryable_error=%s", + response_data, + retryable_error, + ) + return None + return response_data + + +def _lookup_regional_access_boundary_request_no_throw( + request, url, can_retry=True, headers=None, fail_fast=False +): + """Makes a request to the Regional Access Boundary lookup endpoint. This + function doesn't throw on response errors. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + url (str): The Regional Access Boundary lookup url. + can_retry (bool): Enable or disable request retry behavior. Defaults to true. + headers (Optional[Mapping[str, str]]): The headers for the request. + fail_fast (bool): Whether the lookup should fail fast (uses a short timeout and no retries). + + Returns: + Tuple(bool, Mapping[str, str], Optional[bool]): A boolean indicating + if the request is successful, a mapping for the JSON-decoded response + data and in the case of an error a boolean indicating if the error + is retryable. + """ + + response_data = {} + retryable_error = False + + timeout = _BLOCKING_REGIONAL_ACCESS_BOUNDARY_LOOKUP_TIMEOUT if fail_fast else None + total_attempts = 1 if fail_fast else 6 + retries = _exponential_backoff.ExponentialBackoff(total_attempts=total_attempts) + + for _ in retries: + response = request(method="GET", url=url, headers=headers, timeout=timeout) + response_body = ( + response.data.decode("utf-8") + if hasattr(response.data, "decode") + else response.data + ) + + try: + # response_body should be a JSON + response_data = json.loads(response_body) + except ValueError: + response_data = response_body + + if response.status == http_client.OK: + return True, response_data, None + + retryable_error = _can_retry( + status_code=response.status, response_data=response_data + ) + # Add 502 (Bad Gateway) as a retryable error for RAB lookups. + if response.status == http_client.BAD_GATEWAY: + retryable_error = True + + if not can_retry or not retryable_error: + return False, response_data, retryable_error + + return False, response_data, retryable_error diff --git a/intelliaide/vendor/google/oauth2/_client_async.py b/intelliaide/vendor/google/oauth2/_client_async.py new file mode 100644 index 0000000..a6201fb --- /dev/null +++ b/intelliaide/vendor/google/oauth2/_client_async.py @@ -0,0 +1,290 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""OAuth 2.0 async client. + +This is a client for interacting with an OAuth 2.0 authorization server's +token endpoint. + +For more information about the token endpoint, see +`Section 3.1 of rfc6749`_ + +.. _Section 3.1 of rfc6749: https://tools.ietf.org/html/rfc6749#section-3.2 +""" + +import http.client as http_client +import json +import urllib + +from google.auth import _exponential_backoff +from google.auth import _helpers +from google.auth import exceptions +from google.auth import jwt +from google.oauth2 import _client as client + + +async def _token_endpoint_request_no_throw( + request, token_uri, body, access_token=None, use_json=False, can_retry=True +): + """Makes a request to the OAuth 2.0 authorization server's token endpoint. + This function doesn't throw on response errors. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + token_uri (str): The OAuth 2.0 authorizations server's token endpoint + URI. + body (Mapping[str, str]): The parameters to send in the request body. + access_token (Optional(str)): The access token needed to make the request. + use_json (Optional(bool)): Use urlencoded format or json format for the + content type. The default value is False. + can_retry (bool): Enable or disable request retry behavior. + + Returns: + Tuple(bool, Mapping[str, str], Optional[bool]): A boolean indicating + if the request is successful, a mapping for the JSON-decoded response + data and in the case of an error a boolean indicating if the error + is retryable. + """ + if use_json: + headers = {"Content-Type": client._JSON_CONTENT_TYPE} + body = json.dumps(body).encode("utf-8") + else: + headers = {"Content-Type": client._URLENCODED_CONTENT_TYPE} + body = urllib.parse.urlencode(body).encode("utf-8") + + if access_token: + headers["Authorization"] = "Bearer {}".format(access_token) + + response_data = {} + retryable_error = False + + retries = _exponential_backoff.ExponentialBackoff() + for _ in retries: + response = await request( + method="POST", url=token_uri, headers=headers, body=body + ) + + # Using data.read() resulted in zlib decompression errors. This may require future investigation. + response_body1 = await response.content() + + response_body = ( + response_body1.decode("utf-8") + if hasattr(response_body1, "decode") + else response_body1 + ) + + try: + response_data = json.loads(response_body) + except ValueError: + response_data = response_body + + if response.status == http_client.OK: + return True, response_data, None + + retryable_error = client._can_retry( + status_code=response.status, response_data=response_data + ) + + if not can_retry or not retryable_error: + return False, response_data, retryable_error + + return False, response_data, retryable_error + + +async def _token_endpoint_request( + request, token_uri, body, access_token=None, use_json=False, can_retry=True +): + """Makes a request to the OAuth 2.0 authorization server's token endpoint. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + token_uri (str): The OAuth 2.0 authorizations server's token endpoint + URI. + body (Mapping[str, str]): The parameters to send in the request body. + access_token (Optional(str)): The access token needed to make the request. + use_json (Optional(bool)): Use urlencoded format or json format for the + content type. The default value is False. + can_retry (bool): Enable or disable request retry behavior. + + Returns: + Mapping[str, str]: The JSON-decoded response data. + + Raises: + google.auth.exceptions.RefreshError: If the token endpoint returned + an error. + """ + + ( + response_status_ok, + response_data, + retryable_error, + ) = await _token_endpoint_request_no_throw( + request, + token_uri, + body, + access_token=access_token, + use_json=use_json, + can_retry=can_retry, + ) + if not response_status_ok: + client._handle_error_response(response_data, retryable_error) + return response_data + + +async def jwt_grant(request, token_uri, assertion, can_retry=True): + """Implements the JWT Profile for OAuth 2.0 Authorization Grants. + + For more details, see `rfc7523 section 4`_. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + token_uri (str): The OAuth 2.0 authorizations server's token endpoint + URI. + assertion (str): The OAuth 2.0 assertion. + can_retry (bool): Enable or disable request retry behavior. + + Returns: + Tuple[str, Optional[datetime], Mapping[str, str]]: The access token, + expiration, and additional data returned by the token endpoint. + + Raises: + google.auth.exceptions.RefreshError: If the token endpoint returned + an error. + + .. _rfc7523 section 4: https://tools.ietf.org/html/rfc7523#section-4 + """ + body = {"assertion": assertion, "grant_type": client._JWT_GRANT_TYPE} + + response_data = await _token_endpoint_request( + request, token_uri, body, can_retry=can_retry + ) + + try: + access_token = response_data["access_token"] + except KeyError as caught_exc: + new_exc = exceptions.RefreshError( + "No access token in response.", response_data, retryable=False + ) + raise new_exc from caught_exc + + expiry = client._parse_expiry(response_data) + + return access_token, expiry, response_data + + +async def id_token_jwt_grant(request, token_uri, assertion, can_retry=True): + """Implements the JWT Profile for OAuth 2.0 Authorization Grants, but + requests an OpenID Connect ID Token instead of an access token. + + This is a variant on the standard JWT Profile that is currently unique + to Google. This was added for the benefit of authenticating to services + that require ID Tokens instead of access tokens or JWT bearer tokens. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + token_uri (str): The OAuth 2.0 authorization server's token endpoint + URI. + assertion (str): JWT token signed by a service account. The token's + payload must include a ``target_audience`` claim. + can_retry (bool): Enable or disable request retry behavior. + + Returns: + Tuple[str, Optional[datetime], Mapping[str, str]]: + The (encoded) Open ID Connect ID Token, expiration, and additional + data returned by the endpoint. + + Raises: + google.auth.exceptions.RefreshError: If the token endpoint returned + an error. + """ + body = {"assertion": assertion, "grant_type": client._JWT_GRANT_TYPE} + + response_data = await _token_endpoint_request( + request, token_uri, body, can_retry=can_retry + ) + + try: + id_token = response_data["id_token"] + except KeyError as caught_exc: + new_exc = exceptions.RefreshError( + "No ID token in response.", response_data, retryable=False + ) + raise new_exc from caught_exc + + payload = jwt.decode(id_token, verify=False) + expiry = _helpers.utcfromtimestamp(payload["exp"]) + + return id_token, expiry, response_data + + +async def refresh_grant( + request, + token_uri, + refresh_token, + client_id, + client_secret, + scopes=None, + rapt_token=None, + can_retry=True, +): + """Implements the OAuth 2.0 refresh token grant. + + For more details, see `rfc678 section 6`_. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + token_uri (str): The OAuth 2.0 authorizations server's token endpoint + URI. + refresh_token (str): The refresh token to use to get a new access + token. + client_id (str): The OAuth 2.0 application's client ID. + client_secret (str): The Oauth 2.0 appliaction's client secret. + scopes (Optional(Sequence[str])): Scopes to request. If present, all + scopes must be authorized for the refresh token. Useful if refresh + token has a wild card scope (e.g. + 'https://www.googleapis.com/auth/any-api'). + rapt_token (Optional(str)): The reauth Proof Token. + can_retry (bool): Enable or disable request retry behavior. + + Returns: + Tuple[str, Optional[str], Optional[datetime], Mapping[str, str]]: The + access token, new or current refresh token, expiration, and additional data + returned by the token endpoint. + + Raises: + google.auth.exceptions.RefreshError: If the token endpoint returned + an error. + + .. _rfc6748 section 6: https://tools.ietf.org/html/rfc6749#section-6 + """ + body = { + "grant_type": client._REFRESH_GRANT_TYPE, + "client_id": client_id, + "client_secret": client_secret, + "refresh_token": refresh_token, + } + if scopes: + body["scope"] = " ".join(scopes) + if rapt_token: + body["rapt"] = rapt_token + + response_data = await _token_endpoint_request( + request, token_uri, body, can_retry=can_retry + ) + return client._handle_refresh_grant_response(response_data, refresh_token) diff --git a/intelliaide/vendor/google/oauth2/_credentials_async.py b/intelliaide/vendor/google/oauth2/_credentials_async.py new file mode 100644 index 0000000..b5561aa --- /dev/null +++ b/intelliaide/vendor/google/oauth2/_credentials_async.py @@ -0,0 +1,118 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""OAuth 2.0 Async Credentials. + +This module provides credentials based on OAuth 2.0 access and refresh tokens. +These credentials usually access resources on behalf of a user (resource +owner). + +Specifically, this is intended to use access tokens acquired using the +`Authorization Code grant`_ and can refresh those tokens using a +optional `refresh token`_. + +Obtaining the initial access and refresh token is outside of the scope of this +module. Consult `rfc6749 section 4.1`_ for complete details on the +Authorization Code grant flow. + +.. _Authorization Code grant: https://tools.ietf.org/html/rfc6749#section-1.3.1 +.. _refresh token: https://tools.ietf.org/html/rfc6749#section-6 +.. _rfc6749 section 4.1: https://tools.ietf.org/html/rfc6749#section-4.1 +""" + +from google.auth import _credentials_async as credentials +from google.auth import _helpers +from google.auth import exceptions +from google.oauth2 import _reauth_async as reauth +from google.oauth2 import credentials as oauth2_credentials + + +class Credentials(oauth2_credentials.Credentials): + """Credentials using OAuth 2.0 access and refresh tokens. + + The credentials are considered immutable. If you want to modify the + quota project, use :meth:`with_quota_project` or :: + + credentials = credentials.with_quota_project('myproject-123) + """ + + @_helpers.copy_docstring(credentials.Credentials) + async def refresh(self, request): + if ( + self._refresh_token is None + or self._token_uri is None + or self._client_id is None + or self._client_secret is None + ): + raise exceptions.RefreshError( + "The credentials do not contain the necessary fields need to " + "refresh the access token. You must specify refresh_token, " + "token_uri, client_id, and client_secret." + ) + + ( + access_token, + refresh_token, + expiry, + grant_response, + rapt_token, + ) = await reauth.refresh_grant( + request, + self._token_uri, + self._refresh_token, + self._client_id, + self._client_secret, + scopes=self._scopes, + rapt_token=self._rapt_token, + enable_reauth_refresh=self._enable_reauth_refresh, + ) + + self.token = access_token + self.expiry = expiry + self._refresh_token = refresh_token + self._id_token = grant_response.get("id_token") + self._rapt_token = rapt_token + + if self._scopes and "scope" in grant_response: + requested_scopes = frozenset(self._scopes) + granted_scopes = frozenset(grant_response["scope"].split()) + scopes_requested_but_not_granted = requested_scopes - granted_scopes + if scopes_requested_but_not_granted: + raise exceptions.RefreshError( + "Not all requested scopes were granted by the " + "authorization server, missing scopes {}.".format( + ", ".join(scopes_requested_but_not_granted) + ) + ) + + @_helpers.copy_docstring(credentials.Credentials) + async def before_request(self, request, method, url, headers): + if not self.valid: + await self.refresh(request) + self.apply(headers) + + +class UserAccessTokenCredentials(oauth2_credentials.UserAccessTokenCredentials): + """Access token credentials for user account. + + Obtain the access token for a given user account or the current active + user account with the ``gcloud auth print-access-token`` command. + + Args: + account (Optional[str]): Account to get the access token for. If not + specified, the current active account will be used. + quota_project_id (Optional[str]): The project ID used for quota + and billing. + + """ diff --git a/intelliaide/vendor/google/oauth2/_id_token_async.py b/intelliaide/vendor/google/oauth2/_id_token_async.py new file mode 100644 index 0000000..a7f77a1 --- /dev/null +++ b/intelliaide/vendor/google/oauth2/_id_token_async.py @@ -0,0 +1,287 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Google ID Token helpers. + +Provides support for verifying `OpenID Connect ID Tokens`_, especially ones +generated by Google infrastructure. + +To parse and verify an ID Token issued by Google's OAuth 2.0 authorization +server use :func:`verify_oauth2_token`. To verify an ID Token issued by +Firebase, use :func:`verify_firebase_token`. + +A general purpose ID Token verifier is available as :func:`verify_token`. + +Example:: + + from google.oauth2 import _id_token_async + from google.auth.transport import aiohttp_requests + + request = aiohttp_requests.Request() + + id_info = await _id_token_async.verify_oauth2_token( + token, request, 'my-client-id.example.com') + + if id_info['iss'] != 'https://accounts.google.com': + raise ValueError('Wrong issuer.') + + userid = id_info['sub'] + +By default, this will re-fetch certificates for each verification. Because +Google's public keys are only changed infrequently (on the order of once per +day), you may wish to take advantage of caching to reduce latency and the +potential for network errors. This can be accomplished using an external +library like `CacheControl`_ to create a cache-aware +:class:`google.auth.transport.Request`:: + + import cachecontrol + import google.auth.transport.requests + import requests + + session = requests.session() + cached_session = cachecontrol.CacheControl(session) + request = google.auth.transport.requests.Request(session=cached_session) + +.. _OpenID Connect ID Token: + http://openid.net/specs/openid-connect-core-1_0.html#IDToken +.. _CacheControl: https://cachecontrol.readthedocs.io +""" + +import http.client as http_client +import json +import os + +from google.auth import environment_vars +from google.auth import exceptions +from google.auth import jwt +from google.auth.transport import requests +from google.oauth2 import id_token as sync_id_token + + +async def _fetch_certs(request, certs_url): + """Fetches certificates. + + Google-style cerificate endpoints return JSON in the format of + ``{'key id': 'x509 certificate'}``. + + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. This must be an aiohttp request. + certs_url (str): The certificate endpoint URL. + + Returns: + Mapping[str, str]: A mapping of public key ID to x.509 certificate + data. + """ + response = await request(certs_url, method="GET") + + if response.status != http_client.OK: + raise exceptions.TransportError( + "Could not fetch certificates at {}".format(certs_url) + ) + + data = await response.content() + + return json.loads(data) + + +async def verify_token( + id_token, + request, + audience=None, + certs_url=sync_id_token._GOOGLE_OAUTH2_CERTS_URL, + clock_skew_in_seconds=0, +): + """Verifies an ID token and returns the decoded token. + + Args: + id_token (Union[str, bytes]): The encoded token. + request (google.auth.transport.Request): The object used to make + HTTP requests. This must be an aiohttp request. + audience (str): The audience that this token is intended for. If None + then the audience is not verified. + certs_url (str): The URL that specifies the certificates to use to + verify the token. This URL should return JSON in the format of + ``{'key id': 'x509 certificate'}``. + clock_skew_in_seconds (int): The clock skew used for `iat` and `exp` + validation. + + Returns: + Mapping[str, Any]: The decoded token. + """ + certs = await _fetch_certs(request, certs_url) + + return jwt.decode( + id_token, + certs=certs, + audience=audience, + clock_skew_in_seconds=clock_skew_in_seconds, + ) + + +async def verify_oauth2_token( + id_token, request, audience=None, clock_skew_in_seconds=0 +): + """Verifies an ID Token issued by Google's OAuth 2.0 authorization server. + + Args: + id_token (Union[str, bytes]): The encoded token. + request (google.auth.transport.Request): The object used to make + HTTP requests. This must be an aiohttp request. + audience (str): The audience that this token is intended for. This is + typically your application's OAuth 2.0 client ID. If None then the + audience is not verified. + clock_skew_in_seconds (int): The clock skew used for `iat` and `exp` + validation. + + Returns: + Mapping[str, Any]: The decoded token. + + Raises: + exceptions.GoogleAuthError: If the issuer is invalid. + """ + idinfo = await verify_token( + id_token, + request, + audience=audience, + certs_url=sync_id_token._GOOGLE_OAUTH2_CERTS_URL, + clock_skew_in_seconds=clock_skew_in_seconds, + ) + + if idinfo["iss"] not in sync_id_token._GOOGLE_ISSUERS: + raise exceptions.GoogleAuthError( + "Wrong issuer. 'iss' should be one of the following: {}".format( + sync_id_token._GOOGLE_ISSUERS + ) + ) + + return idinfo + + +async def verify_firebase_token( + id_token, request, audience=None, clock_skew_in_seconds=0 +): + """Verifies an ID Token issued by Firebase Authentication. + + Args: + id_token (Union[str, bytes]): The encoded token. + request (google.auth.transport.Request): The object used to make + HTTP requests. This must be an aiohttp request. + audience (str): The audience that this token is intended for. This is + typically your Firebase application ID. If None then the audience + is not verified. + clock_skew_in_seconds (int): The clock skew used for `iat` and `exp` + validation. + + Returns: + Mapping[str, Any]: The decoded token. + """ + return await verify_token( + id_token, + request, + audience=audience, + certs_url=sync_id_token._GOOGLE_APIS_CERTS_URL, + clock_skew_in_seconds=clock_skew_in_seconds, + ) + + +async def fetch_id_token(request, audience): + """Fetch the ID Token from the current environment. + + This function acquires ID token from the environment in the following order. + See https://google.aip.dev/auth/4110. + + 1. If the environment variable ``GOOGLE_APPLICATION_CREDENTIALS`` is set + to the path of a valid service account JSON file, then ID token is + acquired using this service account credentials. + 2. If the application is running in Compute Engine, App Engine or Cloud Run, + then the ID token are obtained from the metadata server. + 3. If metadata server doesn't exist and no valid service account credentials + are found, :class:`~google.auth.exceptions.DefaultCredentialsError` will + be raised. + + Example:: + + import google.oauth2._id_token_async + import google.auth.transport.aiohttp_requests + + request = google.auth.transport.aiohttp_requests.Request() + target_audience = "https://pubsub.googleapis.com" + + id_token = await google.oauth2._id_token_async.fetch_id_token(request, target_audience) + + Args: + request (google.auth.transport.aiohttp_requests.Request): A callable used to make + HTTP requests. + audience (str): The audience that this ID token is intended for. + + Returns: + str: The ID token. + + Raises: + ~google.auth.exceptions.DefaultCredentialsError: + If metadata server doesn't exist and no valid service account + credentials are found. + """ + # 1. Try to get credentials from the GOOGLE_APPLICATION_CREDENTIALS environment + # variable. + credentials_filename = os.environ.get(environment_vars.CREDENTIALS) + if credentials_filename: + if not ( + os.path.exists(credentials_filename) + and os.path.isfile(credentials_filename) + ): + raise exceptions.DefaultCredentialsError( + "GOOGLE_APPLICATION_CREDENTIALS path is either not found or invalid." + ) + + try: + with open(credentials_filename, "r") as f: + from google.oauth2 import _service_account_async as service_account + + info = json.load(f) + if info.get("type") == "service_account": + credentials = ( + service_account.IDTokenCredentials.from_service_account_info( + info, target_audience=audience + ) + ) + await credentials.refresh(request) + return credentials.token + except ValueError as caught_exc: + new_exc = exceptions.DefaultCredentialsError( + "GOOGLE_APPLICATION_CREDENTIALS is not valid service account credentials.", + caught_exc, + ) + raise new_exc from caught_exc + + # 2. Try to fetch ID token from metada server if it exists. The code works + # for GAE and Cloud Run metadata server as well. + try: + from google.auth import compute_engine + from google.auth.compute_engine import _metadata + + request_new = requests.Request() + if _metadata.ping(request_new): + credentials = compute_engine.IDTokenCredentials( + request_new, audience, use_metadata_identity_endpoint=True + ) + credentials.refresh(request_new) + return credentials.token + except (ImportError, exceptions.TransportError): + pass + + raise exceptions.DefaultCredentialsError( + "Neither metadata server or valid service account credentials are found." + ) diff --git a/intelliaide/vendor/google/oauth2/_reauth_async.py b/intelliaide/vendor/google/oauth2/_reauth_async.py new file mode 100644 index 0000000..eeb8e9f --- /dev/null +++ b/intelliaide/vendor/google/oauth2/_reauth_async.py @@ -0,0 +1,330 @@ +# Copyright 2021 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""A module that provides functions for handling rapt authentication. + +Reauth is a process of obtaining additional authentication (such as password, +security token, etc.) while refreshing OAuth 2.0 credentials for a user. + +Credentials that use the Reauth flow must have the reauth scope, +``https://www.googleapis.com/auth/accounts.reauth``. + +This module provides a high-level function for executing the Reauth process, +:func:`refresh_grant`, and lower-level helpers for doing the individual +steps of the reauth process. + +Those steps are: + +1. Obtaining a list of challenges from the reauth server. +2. Running through each challenge and sending the result back to the reauth + server. +3. Refreshing the access token using the returned rapt token. +""" + +import sys + +from google.auth import exceptions +from google.oauth2 import _client +from google.oauth2 import _client_async +from google.oauth2 import challenges +from google.oauth2 import reauth + + +async def _get_challenges( + request, supported_challenge_types, access_token, requested_scopes=None +): + """Does initial request to reauth API to get the challenges. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. This must be an aiohttp request. + supported_challenge_types (Sequence[str]): list of challenge names + supported by the manager. + access_token (str): Access token with reauth scopes. + requested_scopes (Optional(Sequence[str])): Authorized scopes for the credentials. + + Returns: + dict: The response from the reauth API. + """ + body = {"supportedChallengeTypes": supported_challenge_types} + if requested_scopes: + body["oauthScopesForDomainPolicyLookup"] = requested_scopes + + return await _client_async._token_endpoint_request( + request, + reauth._REAUTH_API + ":start", + body, + access_token=access_token, + use_json=True, + ) + + +async def _send_challenge_result( + request, session_id, challenge_id, client_input, access_token +): + """Attempt to refresh access token by sending next challenge result. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. This must be an aiohttp request. + session_id (str): session id returned by the initial reauth call. + challenge_id (str): challenge id returned by the initial reauth call. + client_input: dict with a challenge-specific client input. For example: + ``{'credential': password}`` for password challenge. + access_token (str): Access token with reauth scopes. + + Returns: + dict: The response from the reauth API. + """ + body = { + "sessionId": session_id, + "challengeId": challenge_id, + "action": "RESPOND", + "proposalResponse": client_input, + } + + return await _client_async._token_endpoint_request( + request, + reauth._REAUTH_API + "/{}:continue".format(session_id), + body, + access_token=access_token, + use_json=True, + ) + + +async def _run_next_challenge(msg, request, access_token): + """Get the next challenge from msg and run it. + + Args: + msg (dict): Reauth API response body (either from the initial request to + https://reauth.googleapis.com/v2/sessions:start or from sending the + previous challenge response to + https://reauth.googleapis.com/v2/sessions/id:continue) + request (google.auth.transport.Request): A callable used to make + HTTP requests. This must be an aiohttp request. + access_token (str): reauth access token + + Returns: + dict: The response from the reauth API. + + Raises: + google.auth.exceptions.ReauthError: if reauth failed. + """ + for challenge in msg["challenges"]: + if challenge["status"] != "READY": + # Skip non-activated challenges. + continue + c = challenges.AVAILABLE_CHALLENGES.get(challenge["challengeType"], None) + if not c: + raise exceptions.ReauthFailError( + "Unsupported challenge type {0}. Supported types: {1}".format( + challenge["challengeType"], + ",".join(list(challenges.AVAILABLE_CHALLENGES.keys())), + ) + ) + if not c.is_locally_eligible: + raise exceptions.ReauthFailError( + "Challenge {0} is not locally eligible".format( + challenge["challengeType"] + ) + ) + client_input = c.obtain_challenge_input(challenge) + if not client_input: + return None + return await _send_challenge_result( + request, + msg["sessionId"], + challenge["challengeId"], + client_input, + access_token, + ) + return None + + +async def _obtain_rapt(request, access_token, requested_scopes): + """Given an http request method and reauth access token, get rapt token. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. This must be an aiohttp request. + access_token (str): reauth access token + requested_scopes (Sequence[str]): scopes required by the client application + + Returns: + str: The rapt token. + + Raises: + google.auth.exceptions.ReauthError: if reauth failed + """ + msg = await _get_challenges( + request, + list(challenges.AVAILABLE_CHALLENGES.keys()), + access_token, + requested_scopes, + ) + + if msg["status"] == reauth._AUTHENTICATED: + return msg["encodedProofOfReauthToken"] + + for _ in range(0, reauth.RUN_CHALLENGE_RETRY_LIMIT): + if not ( + msg["status"] == reauth._CHALLENGE_REQUIRED + or msg["status"] == reauth._CHALLENGE_PENDING + ): + raise exceptions.ReauthFailError( + "Reauthentication challenge failed due to API error: {}".format( + msg["status"] + ) + ) + + if not reauth.is_interactive(): + raise exceptions.ReauthFailError( + "Reauthentication challenge could not be answered because you are not" + " in an interactive session." + ) + + msg = await _run_next_challenge(msg, request, access_token) + + if msg["status"] == reauth._AUTHENTICATED: + return msg["encodedProofOfReauthToken"] + + # If we got here it means we didn't get authenticated. + raise exceptions.ReauthFailError("Failed to obtain rapt token.") + + +async def get_rapt_token( + request, client_id, client_secret, refresh_token, token_uri, scopes=None +): + """Given an http request method and refresh_token, get rapt token. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. This must be an aiohttp request. + client_id (str): client id to get access token for reauth scope. + client_secret (str): client secret for the client_id + refresh_token (str): refresh token to refresh access token + token_uri (str): uri to refresh access token + scopes (Optional(Sequence[str])): scopes required by the client application + + Returns: + str: The rapt token. + Raises: + google.auth.exceptions.RefreshError: If reauth failed. + """ + sys.stderr.write("Reauthentication required.\n") + + # Get access token for reauth. + access_token, _, _, _ = await _client_async.refresh_grant( + request=request, + client_id=client_id, + client_secret=client_secret, + refresh_token=refresh_token, + token_uri=token_uri, + scopes=[reauth._REAUTH_SCOPE], + ) + + # Get rapt token from reauth API. + rapt_token = await _obtain_rapt(request, access_token, requested_scopes=scopes) + + return rapt_token + + +async def refresh_grant( + request, + token_uri, + refresh_token, + client_id, + client_secret, + scopes=None, + rapt_token=None, + enable_reauth_refresh=False, +): + """Implements the reauthentication flow. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. This must be an aiohttp request. + token_uri (str): The OAuth 2.0 authorizations server's token endpoint + URI. + refresh_token (str): The refresh token to use to get a new access + token. + client_id (str): The OAuth 2.0 application's client ID. + client_secret (str): The Oauth 2.0 appliaction's client secret. + scopes (Optional(Sequence[str])): Scopes to request. If present, all + scopes must be authorized for the refresh token. Useful if refresh + token has a wild card scope (e.g. + 'https://www.googleapis.com/auth/any-api'). + rapt_token (Optional(str)): The rapt token for reauth. + enable_reauth_refresh (Optional[bool]): Whether reauth refresh flow + should be used. The default value is False. This option is for + gcloud only, other users should use the default value. + + Returns: + Tuple[str, Optional[str], Optional[datetime], Mapping[str, str], str]: The + access token, new refresh token, expiration, the additional data + returned by the token endpoint, and the rapt token. + + Raises: + google.auth.exceptions.RefreshError: If the token endpoint returned + an error. + """ + body = { + "grant_type": _client._REFRESH_GRANT_TYPE, + "client_id": client_id, + "client_secret": client_secret, + "refresh_token": refresh_token, + } + if scopes: + body["scope"] = " ".join(scopes) + if rapt_token: + body["rapt"] = rapt_token + + ( + response_status_ok, + response_data, + retryable_error, + ) = await _client_async._token_endpoint_request_no_throw(request, token_uri, body) + if ( + not response_status_ok + and response_data.get("error") == reauth._REAUTH_NEEDED_ERROR + and ( + response_data.get("error_subtype") + == reauth._REAUTH_NEEDED_ERROR_INVALID_RAPT + or response_data.get("error_subtype") + == reauth._REAUTH_NEEDED_ERROR_RAPT_REQUIRED + ) + ): + if not enable_reauth_refresh: + raise exceptions.RefreshError( + "Reauthentication is needed. Please run `gcloud auth application-default login` to reauthenticate." + ) + + rapt_token = await get_rapt_token( + request, client_id, client_secret, refresh_token, token_uri, scopes=scopes + ) + body["rapt"] = rapt_token + ( + response_status_ok, + response_data, + retryable_error, + ) = await _client_async._token_endpoint_request_no_throw( + request, token_uri, body + ) + + if not response_status_ok: + _client._handle_error_response(response_data, retryable_error) + refresh_response = _client._handle_refresh_grant_response( + response_data, refresh_token + ) + return refresh_response + (rapt_token,) diff --git a/intelliaide/vendor/google/oauth2/_service_account_async.py b/intelliaide/vendor/google/oauth2/_service_account_async.py new file mode 100644 index 0000000..fa6cfb7 --- /dev/null +++ b/intelliaide/vendor/google/oauth2/_service_account_async.py @@ -0,0 +1,147 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Service Accounts: JSON Web Token (JWT) Profile for OAuth 2.0 + +NOTE: This file adds asynchronous refresh methods to both credentials +classes, and therefore async/await syntax is required when calling this +method when using service account credentials with asynchronous functionality. +Otherwise, all other methods are inherited from the regular service account +credentials file google.oauth2.service_account + +""" + +from google.auth import _credentials_async as credentials_async +from google.auth import _helpers +from google.oauth2 import _client_async +from google.oauth2 import service_account + + +class Credentials( + service_account.Credentials, credentials_async.Scoped, credentials_async.Credentials +): + """Service account credentials + + Usually, you'll create these credentials with one of the helper + constructors. To create credentials using a Google service account + private key JSON file:: + + credentials = _service_account_async.Credentials.from_service_account_file( + 'service-account.json') + + Or if you already have the service account file loaded:: + + service_account_info = json.load(open('service_account.json')) + credentials = _service_account_async.Credentials.from_service_account_info( + service_account_info) + + Both helper methods pass on arguments to the constructor, so you can + specify additional scopes and a subject if necessary:: + + credentials = _service_account_async.Credentials.from_service_account_file( + 'service-account.json', + scopes=['email'], + subject='user@example.com') + + The credentials are considered immutable. If you want to modify the scopes + or the subject used for delegation, use :meth:`with_scopes` or + :meth:`with_subject`:: + + scoped_credentials = credentials.with_scopes(['email']) + delegated_credentials = credentials.with_subject(subject) + + To add a quota project, use :meth:`with_quota_project`:: + + credentials = credentials.with_quota_project('myproject-123') + """ + + @_helpers.copy_docstring(credentials_async.Credentials) + async def refresh(self, request): + assertion = self._make_authorization_grant_assertion() + access_token, expiry, _ = await _client_async.jwt_grant( + request, self._token_uri, assertion + ) + self.token = access_token + self.expiry = expiry + + @_helpers.copy_docstring(credentials_async.Credentials) + async def before_request(self, request, method, url, headers): + # Explicit override to bypass synchronous CredentialsWithRegionalAccessBoundary. + await credentials_async.Credentials.before_request( + self, request, method, url, headers + ) + + +class IDTokenCredentials( + service_account.IDTokenCredentials, + credentials_async.Signing, + credentials_async.Credentials, +): + """Open ID Connect ID Token-based service account credentials. + + These credentials are largely similar to :class:`.Credentials`, but instead + of using an OAuth 2.0 Access Token as the bearer token, they use an Open + ID Connect ID Token as the bearer token. These credentials are useful when + communicating to services that require ID Tokens and can not accept access + tokens. + + Usually, you'll create these credentials with one of the helper + constructors. To create credentials using a Google service account + private key JSON file:: + + credentials = ( + _service_account_async.IDTokenCredentials.from_service_account_file( + 'service-account.json')) + + Or if you already have the service account file loaded:: + + service_account_info = json.load(open('service_account.json')) + credentials = ( + _service_account_async.IDTokenCredentials.from_service_account_info( + service_account_info)) + + Both helper methods pass on arguments to the constructor, so you can + specify additional scopes and a subject if necessary:: + + credentials = ( + _service_account_async.IDTokenCredentials.from_service_account_file( + 'service-account.json', + scopes=['email'], + subject='user@example.com')) + + The credentials are considered immutable. If you want to modify the scopes + or the subject used for delegation, use :meth:`with_scopes` or + :meth:`with_subject`:: + + scoped_credentials = credentials.with_scopes(['email']) + delegated_credentials = credentials.with_subject(subject) + + """ + + @_helpers.copy_docstring(credentials_async.Credentials) + async def refresh(self, request): + assertion = self._make_authorization_grant_assertion() + access_token, expiry, _ = await _client_async.id_token_jwt_grant( + request, self._token_uri, assertion + ) + self.token = access_token + self.expiry = expiry + + @_helpers.copy_docstring(credentials_async.Credentials) + async def before_request(self, request, method, url, headers): + # Explicit override to bypass synchronous CredentialsWithRegionalAccessBoundary + # and disable Regional Access Boundary refresh for async credentials. + await credentials_async.Credentials.before_request( + self, request, method, url, headers + ) diff --git a/intelliaide/vendor/google/oauth2/challenges.py b/intelliaide/vendor/google/oauth2/challenges.py new file mode 100644 index 0000000..59a2f9b --- /dev/null +++ b/intelliaide/vendor/google/oauth2/challenges.py @@ -0,0 +1,281 @@ +# Copyright 2021 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" Challenges for reauthentication. +""" + +import abc +import base64 +import getpass +import sys + +from google.auth import _helpers +from google.auth import exceptions +from google.oauth2 import webauthn_handler_factory +from google.oauth2.webauthn_types import ( + AuthenticationExtensionsClientInputs, + GetRequest, + PublicKeyCredentialDescriptor, +) + + +REAUTH_ORIGIN = "https://accounts.google.com" +SAML_CHALLENGE_MESSAGE = ( + "Please run `gcloud auth login` to complete reauthentication with SAML." +) +WEBAUTHN_TIMEOUT_MS = 120000 # Two minute timeout + + +def get_user_password(text): + """Get password from user. + + Override this function with a different logic if you are using this library + outside a CLI. + + Args: + text (str): message for the password prompt. + + Returns: + str: password string. + """ + return getpass.getpass(text) + + +class ReauthChallenge(metaclass=abc.ABCMeta): + """Base class for reauth challenges.""" + + @property + @abc.abstractmethod + def name(self): # pragma: NO COVER + """Returns the name of the challenge.""" + raise NotImplementedError("name property must be implemented") + + @property + @abc.abstractmethod + def is_locally_eligible(self): # pragma: NO COVER + """Returns true if a challenge is supported locally on this machine.""" + raise NotImplementedError("is_locally_eligible property must be implemented") + + @abc.abstractmethod + def obtain_challenge_input(self, metadata): # pragma: NO COVER + """Performs logic required to obtain credentials and returns it. + + Args: + metadata (Mapping): challenge metadata returned in the 'challenges' field in + the initial reauth request. Includes the 'challengeType' field + and other challenge-specific fields. + + Returns: + response that will be send to the reauth service as the content of + the 'proposalResponse' field in the request body. Usually a dict + with the keys specific to the challenge. For example, + ``{'credential': password}`` for password challenge. + """ + raise NotImplementedError("obtain_challenge_input method must be implemented") + + +class PasswordChallenge(ReauthChallenge): + """Challenge that asks for user's password.""" + + @property + def name(self): + return "PASSWORD" + + @property + def is_locally_eligible(self): + return True + + @_helpers.copy_docstring(ReauthChallenge) + def obtain_challenge_input(self, unused_metadata): + passwd = get_user_password("Please enter your password:") + if not passwd: + passwd = " " # avoid the server crashing in case of no password :D + return {"credential": passwd} + + +class SecurityKeyChallenge(ReauthChallenge): + """Challenge that asks for user's security key touch.""" + + @property + def name(self): + return "SECURITY_KEY" + + @property + def is_locally_eligible(self): + return True + + @_helpers.copy_docstring(ReauthChallenge) + def obtain_challenge_input(self, metadata): + # Check if there is an available Webauthn Handler, if not use pyu2f + try: + factory = webauthn_handler_factory.WebauthnHandlerFactory() + webauthn_handler = factory.get_handler() + if webauthn_handler is not None: + sys.stderr.write("Please insert and touch your security key\n") + return self._obtain_challenge_input_webauthn(metadata, webauthn_handler) + except Exception: + # Attempt pyu2f if exception in webauthn flow + pass + + try: + import pyu2f.convenience.authenticator # type: ignore + import pyu2f.errors # type: ignore + import pyu2f.model # type: ignore + except ImportError: + raise exceptions.ReauthFailError( + "pyu2f dependency is required to use Security key reauth feature. " + "It can be installed via `pip install pyu2f` or `pip install google-auth[reauth]`." + ) + sk = metadata["securityKey"] + challenges = sk["challenges"] + # Read both 'applicationId' and 'relyingPartyId', if they are the same, use + # applicationId, if they are different, use relyingPartyId first and retry + # with applicationId + application_id = sk["applicationId"] + relying_party_id = sk["relyingPartyId"] + + if application_id != relying_party_id: + application_parameters = [relying_party_id, application_id] + else: + application_parameters = [application_id] + + challenge_data = [] + for c in challenges: + kh = c["keyHandle"].encode("ascii") + key = pyu2f.model.RegisteredKey(bytearray(base64.urlsafe_b64decode(kh))) + challenge = c["challenge"].encode("ascii") + challenge = base64.urlsafe_b64decode(challenge) + challenge_data.append({"key": key, "challenge": challenge}) + + # Track number of tries to suppress error message until all application_parameters + # are tried. + tries = 0 + for app_id in application_parameters: + try: + tries += 1 + api = pyu2f.convenience.authenticator.CreateCompositeAuthenticator( + REAUTH_ORIGIN + ) + response = api.Authenticate( + app_id, challenge_data, print_callback=sys.stderr.write + ) + return {"securityKey": response} + except pyu2f.errors.U2FError as e: + if e.code == pyu2f.errors.U2FError.DEVICE_INELIGIBLE: + # Only show error if all app_ids have been tried + if tries == len(application_parameters): + sys.stderr.write("Ineligible security key.\n") + return None + continue + if e.code == pyu2f.errors.U2FError.TIMEOUT: + sys.stderr.write( + "Timed out while waiting for security key touch.\n" + ) + else: + raise e + except pyu2f.errors.PluginError as e: + sys.stderr.write("Plugin error: {}.\n".format(e)) + continue + except pyu2f.errors.NoDeviceFoundError: + sys.stderr.write("No security key found.\n") + return None + + def _obtain_challenge_input_webauthn(self, metadata, webauthn_handler): + sk = metadata.get("securityKey") + if sk is None: + raise exceptions.InvalidValue("securityKey is None") + challenges = sk.get("challenges") + application_id = sk.get("applicationId") + relying_party_id = sk.get("relyingPartyId") + if challenges is None or len(challenges) < 1: + raise exceptions.InvalidValue("challenges is None or empty") + if application_id is None: + raise exceptions.InvalidValue("application_id is None") + if relying_party_id is None: + raise exceptions.InvalidValue("relying_party_id is None") + + allow_credentials = [] + for challenge in challenges: + kh = challenge.get("keyHandle") + if kh is None: + raise exceptions.InvalidValue("keyHandle is None") + key_handle = self._unpadded_urlsafe_b64recode(kh) + allow_credentials.append(PublicKeyCredentialDescriptor(id=key_handle)) + + extension = AuthenticationExtensionsClientInputs(appid=application_id) + + challenge = challenges[0].get("challenge") + if challenge is None: + raise exceptions.InvalidValue("challenge is None") + + get_request = GetRequest( + origin=REAUTH_ORIGIN, + rpid=relying_party_id, + challenge=self._unpadded_urlsafe_b64recode(challenge), + timeout_ms=WEBAUTHN_TIMEOUT_MS, + allow_credentials=allow_credentials, + user_verification="preferred", + extensions=extension, + ) + + try: + get_response = webauthn_handler.get(get_request) + except Exception as e: + sys.stderr.write("Webauthn Error: {}.\n".format(e)) + raise e + + response = { + "clientData": get_response.response.client_data_json, + "authenticatorData": get_response.response.authenticator_data, + "signatureData": get_response.response.signature, + "applicationId": application_id, + "keyHandle": get_response.id, + "securityKeyReplyType": 2, + } + return {"securityKey": response} + + def _unpadded_urlsafe_b64recode(self, s): + """Converts standard b64 encoded string to url safe b64 encoded string + with no padding.""" + b = base64.urlsafe_b64decode(s) + return base64.urlsafe_b64encode(b).decode().rstrip("=") + + +class SamlChallenge(ReauthChallenge): + """Challenge that asks the users to browse to their ID Providers. + + Currently SAML challenge is not supported. When obtaining the challenge + input, exception will be raised to instruct the users to run + `gcloud auth login` for reauthentication. + """ + + @property + def name(self): + return "SAML" + + @property + def is_locally_eligible(self): + return True + + def obtain_challenge_input(self, metadata): + # Magic Arch has not fully supported returning a proper dedirect URL + # for programmatic SAML users today. So we error our here and request + # users to use gcloud to complete a login. + raise exceptions.ReauthSamlChallengeFailError(SAML_CHALLENGE_MESSAGE) + + +AVAILABLE_CHALLENGES = { + challenge.name: challenge + for challenge in [SecurityKeyChallenge(), PasswordChallenge(), SamlChallenge()] +} diff --git a/intelliaide/vendor/google/oauth2/credentials.py b/intelliaide/vendor/google/oauth2/credentials.py new file mode 100644 index 0000000..724cf98 --- /dev/null +++ b/intelliaide/vendor/google/oauth2/credentials.py @@ -0,0 +1,640 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""OAuth 2.0 Credentials. + +This module provides credentials based on OAuth 2.0 access and refresh tokens. +These credentials usually access resources on behalf of a user (resource +owner). + +Specifically, this is intended to use access tokens acquired using the +`Authorization Code grant`_ and can refresh those tokens using a +optional `refresh token`_. + +Obtaining the initial access and refresh token is outside of the scope of this +module. Consult `rfc6749 section 4.1`_ for complete details on the +Authorization Code grant flow. + +.. _Authorization Code grant: https://tools.ietf.org/html/rfc6749#section-1.3.1 +.. _refresh token: https://tools.ietf.org/html/rfc6749#section-6 +.. _rfc6749 section 4.1: https://tools.ietf.org/html/rfc6749#section-4.1 +""" + +from datetime import datetime +import io +import json +import logging +import warnings + +from google.auth import _cloud_sdk +from google.auth import _helpers +from google.auth import _regional_access_boundary_utils +from google.auth import credentials +from google.auth import exceptions +from google.auth import metrics +from google.oauth2 import reauth + +_LOGGER = logging.getLogger(__name__) + + +# The Google OAuth 2.0 token endpoint. Used for authorized user credentials. +_GOOGLE_OAUTH2_TOKEN_ENDPOINT = "https://oauth2.googleapis.com/token" + +# The Google OAuth 2.0 token info endpoint. Used for getting token info JSON from access tokens. +_GOOGLE_OAUTH2_TOKEN_INFO_ENDPOINT = "https://oauth2.googleapis.com/tokeninfo" + + +class Credentials( + credentials.CredentialsWithRegionalAccessBoundary, + credentials.ReadOnlyScoped, + credentials.CredentialsWithQuotaProject, +): + """Credentials using OAuth 2.0 access and refresh tokens. + + The credentials are considered immutable except the tokens and the token + expiry, which are updated after refresh. If you want to modify the quota + project, use :meth:`with_quota_project` or :: + + credentials = credentials.with_quota_project('myproject-123') + + Reauth is disabled by default. To enable reauth, set the + `enable_reauth_refresh` parameter to True in the constructor. Note that + reauth feature is intended for gcloud to use only. + If reauth is enabled, `pyu2f` dependency has to be installed in order to use security + key reauth feature. Dependency can be installed via `pip install pyu2f` or `pip install + google-auth[reauth]`. + """ + + def __init__( + self, + token, + refresh_token=None, + id_token=None, + token_uri=None, + client_id=None, + client_secret=None, + scopes=None, + default_scopes=None, + quota_project_id=None, + expiry=None, + rapt_token=None, + refresh_handler=None, + enable_reauth_refresh=False, + granted_scopes=None, + trust_boundary=None, + universe_domain=credentials.DEFAULT_UNIVERSE_DOMAIN, + account=None, + ): + """ + Args: + token (Optional(str)): The OAuth 2.0 access token. Can be None + if refresh information is provided. + refresh_token (str): The OAuth 2.0 refresh token. If specified, + credentials can be refreshed. + id_token (str): The Open ID Connect ID Token. + token_uri (str): The OAuth 2.0 authorization server's token + endpoint URI. Must be specified for refresh, can be left as + None if the token can not be refreshed. + client_id (str): The OAuth 2.0 client ID. Must be specified for + refresh, can be left as None if the token can not be refreshed. + client_secret(str): The OAuth 2.0 client secret. Must be specified + for refresh, can be left as None if the token can not be + refreshed. + scopes (Sequence[str]): The scopes used to obtain authorization. + This parameter is used by :meth:`has_scopes`. OAuth 2.0 + credentials can not request additional scopes after + authorization. The scopes must be derivable from the refresh + token if refresh information is provided (e.g. The refresh + token scopes are a superset of this or contain a wild card + scope like 'https://www.googleapis.com/auth/any-api'). + default_scopes (Sequence[str]): Default scopes passed by a + Google client library. Use 'scopes' for user-defined scopes. + quota_project_id (Optional[str]): The project ID used for quota and billing. + This project may be different from the project used to + create the credentials. + rapt_token (Optional[str]): The reauth Proof Token. + refresh_handler (Optional[Callable[[google.auth.transport.Request, Sequence[str]], [str, datetime]]]): + A callable which takes in the HTTP request callable and the list of + OAuth scopes and when called returns an access token string for the + requested scopes and its expiry datetime. This is useful when no + refresh tokens are provided and tokens are obtained by calling + some external process on demand. It is particularly useful for + retrieving downscoped tokens from a token broker. + enable_reauth_refresh (Optional[bool]): Whether reauth refresh flow + should be used. This flag is for gcloud to use only. + granted_scopes (Optional[Sequence[str]]): The scopes that were consented/granted by the user. + This could be different from the requested scopes and it could be empty if granted + and requested scopes were same. + trust_boundary (str): String representation of trust boundary meta. + universe_domain (Optional[str]): The universe domain. The default + universe domain is googleapis.com. + account (Optional[str]): The account associated with the credential. + """ + super(Credentials, self).__init__() + self.token = token + self.expiry = expiry + self._refresh_token = refresh_token + self._id_token = id_token + if scopes is not None and isinstance(scopes, set): + self._scopes = list(scopes) + else: + self._scopes = scopes + self._default_scopes = default_scopes + self._granted_scopes = granted_scopes + self._token_uri = token_uri + self._client_id = client_id + self._client_secret = client_secret + self._quota_project_id = quota_project_id + self._rapt_token = rapt_token + self.refresh_handler = refresh_handler + self._enable_reauth_refresh = enable_reauth_refresh + self._trust_boundary = trust_boundary + self._universe_domain = universe_domain or credentials.DEFAULT_UNIVERSE_DOMAIN + self._account = account or "" + self._cred_file_path = None + + def __getstate__(self): + """A __getstate__ method must exist for the __setstate__ to be called + This is identical to the default implementation. + See https://docs.python.org/3.7/library/pickle.html#object.__setstate__ + """ + state_dict = self.__dict__.copy() + # Remove _refresh_handler function as there are limitations pickling and + # unpickling certain callables (lambda, functools.partial instances) + # because they need to be importable. + # Instead, the refresh_handler setter should be used to repopulate this. + if "_refresh_handler" in state_dict: + del state_dict["_refresh_handler"] + + if "_refresh_worker" in state_dict: + del state_dict["_refresh_worker"] + return state_dict + + def __setstate__(self, d): + """Credentials pickled with older versions of the class do not have + all the attributes.""" + self.token = d.get("token") + self.expiry = d.get("expiry") + self._refresh_token = d.get("_refresh_token") + self._id_token = d.get("_id_token") + self._scopes = d.get("_scopes") + self._default_scopes = d.get("_default_scopes") + self._granted_scopes = d.get("_granted_scopes") + self._token_uri = d.get("_token_uri") + self._client_id = d.get("_client_id") + self._client_secret = d.get("_client_secret") + self._quota_project_id = d.get("_quota_project_id") + self._rapt_token = d.get("_rapt_token") + self._enable_reauth_refresh = d.get("_enable_reauth_refresh") + self._trust_boundary = d.get("_trust_boundary") + self._universe_domain = ( + d.get("_universe_domain") or credentials.DEFAULT_UNIVERSE_DOMAIN + ) + self._cred_file_path = d.get("_cred_file_path") + # The refresh_handler setter should be used to repopulate this. + self._refresh_handler = None + self._refresh_worker = None + self._use_non_blocking_refresh = d.get("_use_non_blocking_refresh", False) + self._account = d.get("_account", "") + self._rab_manager = d.get("_rab_manager") or ( + _regional_access_boundary_utils._RegionalAccessBoundaryManager() + ) + + @property + def refresh_token(self): + """Optional[str]: The OAuth 2.0 refresh token.""" + return self._refresh_token + + @property + def scopes(self): + """Optional[Sequence[str]]: The OAuth 2.0 permission scopes.""" + return self._scopes + + @property + def granted_scopes(self): + """Optional[Sequence[str]]: The OAuth 2.0 permission scopes that were granted by the user.""" + return self._granted_scopes + + @property + def token_uri(self): + """Optional[str]: The OAuth 2.0 authorization server's token endpoint + URI.""" + return self._token_uri + + @property + def id_token(self): + """Optional[str]: The Open ID Connect ID Token. + + Depending on the authorization server and the scopes requested, this + may be populated when credentials are obtained and updated when + :meth:`refresh` is called. This token is a JWT. It can be verified + and decoded using :func:`google.oauth2.id_token.verify_oauth2_token`. + """ + return self._id_token + + @property + def client_id(self): + """Optional[str]: The OAuth 2.0 client ID.""" + return self._client_id + + @property + def client_secret(self): + """Optional[str]: The OAuth 2.0 client secret.""" + return self._client_secret + + @property + def requires_scopes(self): + """False: OAuth 2.0 credentials have their scopes set when + the initial token is requested and can not be changed.""" + return False + + @property + def rapt_token(self): + """Optional[str]: The reauth Proof Token.""" + return self._rapt_token + + @property + def refresh_handler(self): + """Returns the refresh handler if available. + + Returns: + Optional[Callable[[google.auth.transport.Request, Sequence[str]], [str, datetime]]]: + The current refresh handler. + """ + return self._refresh_handler + + @refresh_handler.setter + def refresh_handler(self, value): + """Updates the current refresh handler. + + Args: + value (Optional[Callable[[google.auth.transport.Request, Sequence[str]], [str, datetime]]]): + The updated value of the refresh handler. + + Raises: + TypeError: If the value is not a callable or None. + """ + if not callable(value) and value is not None: + raise TypeError("The provided refresh_handler is not a callable or None.") + self._refresh_handler = value + + @property + def account(self): + """str: The user account associated with the credential. If the account is unknown an empty string is returned.""" + return self._account + + def _make_copy(self): + cred = self.__class__( + self.token, + refresh_token=self.refresh_token, + id_token=self.id_token, + token_uri=self.token_uri, + client_id=self.client_id, + client_secret=self.client_secret, + scopes=self.scopes, + default_scopes=self.default_scopes, + granted_scopes=self.granted_scopes, + quota_project_id=self.quota_project_id, + rapt_token=self.rapt_token, + enable_reauth_refresh=self._enable_reauth_refresh, + trust_boundary=self._trust_boundary, + universe_domain=self._universe_domain, + account=self._account, + ) + cred._cred_file_path = self._cred_file_path + return cred + + @_helpers.copy_docstring(credentials.Credentials) + def get_cred_info(self): + if self._cred_file_path: + cred_info = { + "credential_source": self._cred_file_path, + "credential_type": "user credentials", + } + if self.account: + cred_info["principal"] = self.account + return cred_info + return None + + @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) + def with_quota_project(self, quota_project_id): + cred = self._make_copy() + cred._quota_project_id = quota_project_id + return cred + + @_helpers.copy_docstring(credentials.CredentialsWithTokenUri) + def with_token_uri(self, token_uri): + cred = self._make_copy() + cred._token_uri = token_uri + return cred + + def with_account(self, account): + """Returns a copy of these credentials with a modified account. + + Args: + account (str): The account to set + + Returns: + google.oauth2.credentials.Credentials: A new credentials instance. + """ + cred = self._make_copy() + cred._account = account + return cred + + @_helpers.copy_docstring(credentials.CredentialsWithUniverseDomain) + def with_universe_domain(self, universe_domain): + cred = self._make_copy() + cred._universe_domain = universe_domain + return cred + + def _metric_header_for_usage(self): + return metrics.CRED_TYPE_USER + + def _build_regional_access_boundary_lookup_url(self, request=None): + """Builds the URL for Regional Access Boundary lookup. + + OAuth 2.0 credentials do not support independent Regional Access Boundary + lookup. However, they may support a seeded Regional Access Boundary + provided externally (e.g., from gcloud). + + Returns: + None: This credential type does not support RAB lookup. + """ + return None + + def _is_regional_access_boundary_lookup_required(self): + """OAuth 2.0 credentials do not support independent lookup.""" + return False + + def _perform_refresh_token(self, request): + if self._universe_domain != credentials.DEFAULT_UNIVERSE_DOMAIN: + raise exceptions.RefreshError( + "User credential refresh is only supported in the default " + "googleapis.com universe domain, but the current universe " + "domain is {}. If you created the credential with an access " + "token, it's likely that the provided token is expired now, " + "please update your code with a valid token.".format( + self._universe_domain + ) + ) + + scopes = self._scopes if self._scopes is not None else self._default_scopes + # Use refresh handler if available and no refresh token is + # available. This is useful in general when tokens are obtained by calling + # some external process on demand. It is particularly useful for retrieving + # downscoped tokens from a token broker. + if self._refresh_token is None and self.refresh_handler: + token, expiry = self.refresh_handler(request, scopes=scopes) + # Validate returned data. + if not isinstance(token, str): + raise exceptions.RefreshError( + "The refresh_handler returned token is not a string." + ) + if not isinstance(expiry, datetime): + raise exceptions.RefreshError( + "The refresh_handler returned expiry is not a datetime object." + ) + if _helpers.utcnow() >= expiry - _helpers.REFRESH_THRESHOLD: + raise exceptions.RefreshError( + "The credentials returned by the refresh_handler are " + "already expired." + ) + self.token = token + self.expiry = expiry + return + + if ( + self._refresh_token is None + or self._token_uri is None + or self._client_id is None + or self._client_secret is None + ): + raise exceptions.RefreshError( + "The credentials do not contain the necessary fields need to " + "refresh the access token. You must specify refresh_token, " + "token_uri, client_id, and client_secret." + ) + + ( + access_token, + refresh_token, + expiry, + grant_response, + rapt_token, + ) = reauth.refresh_grant( + request, + self._token_uri, + self._refresh_token, + self._client_id, + self._client_secret, + scopes=scopes, + rapt_token=self._rapt_token, + enable_reauth_refresh=self._enable_reauth_refresh, + ) + + self.token = access_token + self.expiry = expiry + self._refresh_token = refresh_token + self._id_token = grant_response.get("id_token") + self._rapt_token = rapt_token + + if scopes and "scope" in grant_response: + requested_scopes = frozenset(scopes) + self._granted_scopes = grant_response["scope"].split() + granted_scopes = frozenset(self._granted_scopes) + scopes_requested_but_not_granted = requested_scopes - granted_scopes + if scopes_requested_but_not_granted: + # User might be presented with unbundled scopes at the time of + # consent. So it is a valid scenario to not have all the requested + # scopes as part of granted scopes but log a warning in case the + # developer wants to debug the scenario. + _LOGGER.warning( + "Not all requested scopes were granted by the " + "authorization server, missing scopes {}.".format( + ", ".join(scopes_requested_but_not_granted) + ) + ) + + @classmethod + def from_authorized_user_info(cls, info, scopes=None): + """Creates a Credentials instance from parsed authorized user info. + + Args: + info (Mapping[str, str]): The authorized user info in Google + format. + scopes (Sequence[str]): Optional list of scopes to include in the + credentials. + + Returns: + google.oauth2.credentials.Credentials: The constructed + credentials. + + Raises: + ValueError: If the info is not in the expected format. + """ + keys_needed = set(("refresh_token", "client_id", "client_secret")) + missing = keys_needed.difference(info.keys()) + + if missing: + raise ValueError( + "Authorized user info was not in the expected format, missing " + "fields {}.".format(", ".join(missing)) + ) + + # access token expiry (datetime obj); auto-expire if not saved + expiry = info.get("expiry") + if expiry: + expiry = datetime.strptime( + expiry.rstrip("Z").split(".")[0], "%Y-%m-%dT%H:%M:%S" + ) + else: + expiry = _helpers.utcnow() - _helpers.REFRESH_THRESHOLD + + # process scopes, which needs to be a seq + if scopes is None and "scopes" in info: + scopes = info.get("scopes") + if isinstance(scopes, str): + scopes = scopes.split(" ") + + return cls( + token=info.get("token"), + refresh_token=info.get("refresh_token"), + token_uri=_GOOGLE_OAUTH2_TOKEN_ENDPOINT, # always overrides + scopes=scopes, + client_id=info.get("client_id"), + client_secret=info.get("client_secret"), + quota_project_id=info.get("quota_project_id"), # may not exist + expiry=expiry, + rapt_token=info.get("rapt_token"), # may not exist + trust_boundary=info.get("trust_boundary"), # may not exist + universe_domain=info.get("universe_domain"), # may not exist + account=info.get("account", ""), # may not exist + ) + + @classmethod + def from_authorized_user_file(cls, filename, scopes=None): + """Creates a Credentials instance from an authorized user json file. + + Args: + filename (str): The path to the authorized user json file. + scopes (Sequence[str]): Optional list of scopes to include in the + credentials. + + Returns: + google.oauth2.credentials.Credentials: The constructed + credentials. + + Raises: + ValueError: If the file is not in the expected format. + """ + with io.open(filename, "r", encoding="utf-8") as json_file: + data = json.load(json_file) + return cls.from_authorized_user_info(data, scopes) + + def to_json(self, strip=None): + """Utility function that creates a JSON representation of a Credentials + object. + + Args: + strip (Sequence[str]): Optional list of members to exclude from the + generated JSON. + + Returns: + str: A JSON representation of this instance. When converted into + a dictionary, it can be passed to from_authorized_user_info() + to create a new credential instance. + """ + prep = { + "token": self.token, + "refresh_token": self.refresh_token, + "token_uri": self.token_uri, + "client_id": self.client_id, + "client_secret": self.client_secret, + "scopes": self.scopes, + "rapt_token": self.rapt_token, + "universe_domain": self._universe_domain, + "account": self._account, + } + if self.expiry: # flatten expiry timestamp + prep["expiry"] = self.expiry.isoformat() + "Z" + + # Remove empty entries (those which are None) + prep = {k: v for k, v in prep.items() if v is not None} + + # Remove entries that explicitely need to be removed + if strip is not None: + prep = {k: v for k, v in prep.items() if k not in strip} + + return json.dumps(prep) + + +class UserAccessTokenCredentials(credentials.CredentialsWithQuotaProject): + """Access token credentials for user account. + + Obtain the access token for a given user account or the current active + user account with the ``gcloud auth print-access-token`` command. + + Args: + account (Optional[str]): Account to get the access token for. If not + specified, the current active account will be used. + quota_project_id (Optional[str]): The project ID used for quota + and billing. + """ + + def __init__(self, account=None, quota_project_id=None): + warnings.warn( + "UserAccessTokenCredentials is deprecated, please use " + "google.oauth2.credentials.Credentials instead. To use " + "that credential type, simply run " + "`gcloud auth application-default login` and let the " + "client libraries pick up the application default credentials." + ) + super(UserAccessTokenCredentials, self).__init__() + self._account = account + self._quota_project_id = quota_project_id + + def with_account(self, account): + """Create a new instance with the given account. + + Args: + account (str): Account to get the access token for. + + Returns: + google.oauth2.credentials.UserAccessTokenCredentials: The created + credentials with the given account. + """ + return self.__class__(account=account, quota_project_id=self._quota_project_id) + + @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) + def with_quota_project(self, quota_project_id): + return self.__class__(account=self._account, quota_project_id=quota_project_id) + + def refresh(self, request): + """Refreshes the access token. + + Args: + request (google.auth.transport.Request): This argument is required + by the base class interface but not used in this implementation, + so just set it to `None`. + + Raises: + google.auth.exceptions.UserAccessTokenError: If the access token + refresh failed. + """ + self.token = _cloud_sdk.get_auth_access_token(self._account) + + @_helpers.copy_docstring(credentials.Credentials) + def before_request(self, request, method, url, headers): + self.refresh(request) + self.apply(headers) diff --git a/intelliaide/vendor/google/oauth2/gdch_credentials.py b/intelliaide/vendor/google/oauth2/gdch_credentials.py new file mode 100644 index 0000000..7410cfc --- /dev/null +++ b/intelliaide/vendor/google/oauth2/gdch_credentials.py @@ -0,0 +1,251 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Experimental GDCH credentials support. +""" + +import datetime + +from google.auth import _helpers +from google.auth import _service_account_info +from google.auth import credentials +from google.auth import exceptions +from google.auth import jwt +from google.oauth2 import _client + + +TOKEN_EXCHANGE_TYPE = "urn:ietf:params:oauth:token-type:token-exchange" +ACCESS_TOKEN_TOKEN_TYPE = "urn:ietf:params:oauth:token-type:access_token" +SERVICE_ACCOUNT_TOKEN_TYPE = "urn:k8s:params:oauth:token-type:serviceaccount" +JWT_LIFETIME = datetime.timedelta(seconds=3600) # 1 hour + + +class ServiceAccountCredentials(credentials.Credentials): + """Credentials for GDCH (`Google Distributed Cloud Hosted`_) for service + account users. + + .. _Google Distributed Cloud Hosted: + https://cloud.google.com/blog/topics/hybrid-cloud/\ + announcing-google-distributed-cloud-edge-and-hosted + + To create a GDCH service account credential, first create a JSON file of + the following format:: + + { + "type": "gdch_service_account", + "format_version": "1", + "project": "", + "private_key_id": "", + "private_key": "-----BEGIN EC PRIVATE KEY-----\n\n-----END EC PRIVATE KEY-----\n", + "name": "", + "ca_cert_path": "", + "token_uri": "https://service-identity./authenticate" + } + + The "format_version" field stands for the format of the JSON file. For now + it is always "1". The `private_key_id` and `private_key` is used for signing. + The `ca_cert_path` is used for token server TLS certificate verification. + + After the JSON file is created, set `GOOGLE_APPLICATION_CREDENTIALS` environment + variable to the JSON file path, then use the following code to create the + credential:: + + import google.auth + + credential, _ = google.auth.default() + credential = credential.with_gdch_audience("") + + We can also create the credential directly:: + + from google.oauth import gdch_credentials + + credential = gdch_credentials.ServiceAccountCredentials.from_service_account_file("") + credential = credential.with_gdch_audience("") + + The token is obtained in the following way. This class first creates a + self signed JWT. It uses the `name` value as the `iss` and `sub` claim, and + the `token_uri` as the `aud` claim, and signs the JWT with the `private_key`. + It then sends the JWT to the `token_uri` to exchange a final token for + `audience`. + """ + + def __init__( + self, signer, service_identity_name, project, audience, token_uri, ca_cert_path + ): + """ + Args: + signer (google.auth.crypt.Signer): The signer used to sign JWTs. + service_identity_name (str): The service identity name. It will be + used as the `iss` and `sub` claim in the self signed JWT. + project (str): The project. + audience (str): The audience for the final token. + token_uri (str): The token server uri. + ca_cert_path (str): The CA cert path for token server side TLS + certificate verification. If the token server uses well known + CA, then this parameter can be `None`. + """ + super(ServiceAccountCredentials, self).__init__() + self._signer = signer + self._service_identity_name = service_identity_name + self._project = project + self._audience = audience + self._token_uri = token_uri + self._ca_cert_path = ca_cert_path + + def _create_jwt(self): + now = _helpers.utcnow() + expiry = now + JWT_LIFETIME + iss_sub_value = "system:serviceaccount:{}:{}".format( + self._project, self._service_identity_name + ) + + payload = { + "iss": iss_sub_value, + "sub": iss_sub_value, + "aud": self._token_uri, + "iat": _helpers.datetime_to_secs(now), + "exp": _helpers.datetime_to_secs(expiry), + } + + return _helpers.from_bytes(jwt.encode(self._signer, payload)) + + @_helpers.copy_docstring(credentials.Credentials) + def refresh(self, request): + import google.auth.transport.requests + + if not isinstance(request, google.auth.transport.requests.Request): + raise exceptions.RefreshError( + "For GDCH service account credentials, request must be a google.auth.transport.requests.Request object" + ) + + # Create a self signed JWT, and do token exchange. + jwt_token = self._create_jwt() + request_body = { + "grant_type": TOKEN_EXCHANGE_TYPE, + "audience": self._audience, + "requested_token_type": ACCESS_TOKEN_TOKEN_TYPE, + "subject_token": jwt_token, + "subject_token_type": SERVICE_ACCOUNT_TOKEN_TYPE, + } + response_data = _client._token_endpoint_request( + request, + self._token_uri, + request_body, + access_token=None, + use_json=True, + verify=self._ca_cert_path, + ) + + self.token, _, self.expiry, _ = _client._handle_refresh_grant_response( + response_data, None + ) + + def with_gdch_audience(self, audience): + """Create a copy of GDCH credentials with the specified audience. + + Args: + audience (str): The intended audience for GDCH credentials. + """ + return self.__class__( + self._signer, + self._service_identity_name, + self._project, + audience, + self._token_uri, + self._ca_cert_path, + ) + + @classmethod + def _from_signer_and_info(cls, signer, info): + """Creates a Credentials instance from a signer and service account + info. + + Args: + signer (google.auth.crypt.Signer): The signer used to sign JWTs. + info (Mapping[str, str]): The service account info. + + Returns: + google.oauth2.gdch_credentials.ServiceAccountCredentials: The constructed + credentials. + + Raises: + ValueError: If the info is not in the expected format. + """ + if info["format_version"] != "1": + raise ValueError("Only format version 1 is supported") + + return cls( + signer, + info["name"], # service_identity_name + info["project"], + None, # audience + info["token_uri"], + info.get("ca_cert_path", None), + ) + + @classmethod + def from_service_account_info(cls, info): + """Creates a Credentials instance from parsed service account info. + + Args: + info (Mapping[str, str]): The service account info in Google + format. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.oauth2.gdch_credentials.ServiceAccountCredentials: The constructed + credentials. + + Raises: + ValueError: If the info is not in the expected format. + """ + signer = _service_account_info.from_dict( + info, + require=[ + "format_version", + "private_key_id", + "private_key", + "name", + "project", + "token_uri", + ], + use_rsa_signer=False, + ) + return cls._from_signer_and_info(signer, info) + + @classmethod + def from_service_account_file(cls, filename): + """Creates a Credentials instance from a service account json file. + + Args: + filename (str): The path to the service account json file. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.oauth2.gdch_credentials.ServiceAccountCredentials: The constructed + credentials. + """ + info, signer = _service_account_info.from_filename( + filename, + require=[ + "format_version", + "private_key_id", + "private_key", + "name", + "project", + "token_uri", + ], + use_rsa_signer=False, + ) + return cls._from_signer_and_info(signer, info) diff --git a/intelliaide/vendor/google/oauth2/id_token.py b/intelliaide/vendor/google/oauth2/id_token.py new file mode 100644 index 0000000..d21be1a --- /dev/null +++ b/intelliaide/vendor/google/oauth2/id_token.py @@ -0,0 +1,373 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Google ID Token helpers. + +Provides support for verifying `OpenID Connect ID Tokens`_, especially ones +generated by Google infrastructure. + +To parse and verify an ID Token issued by Google's OAuth 2.0 authorization +server use :func:`verify_oauth2_token`. To verify an ID Token issued by +Firebase, use :func:`verify_firebase_token`. + +A general purpose ID Token verifier is available as :func:`verify_token`. + +Example:: + + from google.oauth2 import id_token + from google.auth.transport import requests + + request = requests.Request() + + id_info = id_token.verify_oauth2_token( + token, request, 'my-client-id.example.com') + + userid = id_info['sub'] + +By default, this will re-fetch certificates for each verification. Because +Google's public keys are only changed infrequently (on the order of once per +day), you may wish to take advantage of caching to reduce latency and the +potential for network errors. This can be accomplished using an external +library like `CacheControl`_ to create a cache-aware +:class:`google.auth.transport.Request`:: + + import cachecontrol + import google.auth.transport.requests + import requests + + session = requests.session() + cached_session = cachecontrol.CacheControl(session) + request = google.auth.transport.requests.Request(session=cached_session) + +.. _OpenID Connect ID Tokens: + http://openid.net/specs/openid-connect-core-1_0.html#IDToken +.. _CacheControl: https://cachecontrol.readthedocs.io +""" +from __future__ import annotations + +import http.client as http_client +import json +import os +from typing import Any, Mapping, Union + +from google.auth import environment_vars +from google.auth import exceptions +from google.auth import jwt +from google.auth import transport + + +# The URL that provides public certificates for verifying ID tokens issued +# by Google's OAuth 2.0 authorization server. +_GOOGLE_OAUTH2_CERTS_URL = "https://www.googleapis.com/oauth2/v1/certs" + +# The URL that provides public certificates for verifying ID tokens issued +# by Firebase and the Google APIs infrastructure +_GOOGLE_APIS_CERTS_URL = ( + "https://www.googleapis.com/robot/v1/metadata/x509" + "/securetoken@system.gserviceaccount.com" +) + +_GOOGLE_ISSUERS = ["accounts.google.com", "https://accounts.google.com"] + + +def _fetch_certs(request, certs_url): + """Fetches certificates. + + Google-style certificate endpoints return JSON in the format of + ``{'key id': 'x509 certificate'}`` or a certificate array according + to the JWK spec (see https://tools.ietf.org/html/rfc7517). + + Args: + request (google.auth.transport.Request): The object used to make + HTTP requests. + certs_url (str): The certificate endpoint URL. + + Returns: + Mapping[str, str] | Mapping[str, list]: A mapping of public keys + in x.509 or JWK spec. + """ + response = request(certs_url, method="GET") + + if response.status != http_client.OK: + raise exceptions.TransportError( + "Could not fetch certificates at {}".format(certs_url) + ) + + return json.loads(response.data.decode("utf-8")) + + +def verify_token( + id_token: Union[str, bytes], + request: transport.Request, + audience: Union[str, list[str], None] = None, + certs_url: str = _GOOGLE_OAUTH2_CERTS_URL, + clock_skew_in_seconds: int = 0, +) -> Mapping[str, Any]: + """Verifies an ID token and returns the decoded token. + + Args: + id_token (Union[str, bytes]): The encoded token. + request (google.auth.transport.Request): The object used to make + HTTP requests. + audience (str or list): The audience or audiences that this token is + intended for. If None then the audience is not verified. + certs_url (str): The URL that specifies the certificates to use to + verify the token. This URL should return JSON in the format of + ``{'key id': 'x509 certificate'}`` or a certificate array according to + the JWK spec (see https://tools.ietf.org/html/rfc7517). + clock_skew_in_seconds (int): The clock skew used for `iat` and `exp` + validation. + + Returns: + Mapping[str, Any]: The decoded token. + """ + certs = _fetch_certs(request, certs_url) + + if "keys" in certs: + try: + import jwt as jwt_lib # type: ignore + except ImportError as caught_exc: # pragma: NO COVER + raise ImportError( + "The pyjwt library is not installed, please install the pyjwt package to use the jwk certs format." + ) from caught_exc + jwks_client = jwt_lib.PyJWKClient(certs_url) + signing_key = jwks_client.get_signing_key_from_jwt(id_token) + return jwt_lib.decode( + id_token, + signing_key.key, + algorithms=[signing_key.algorithm_name], + audience=audience, + ) + else: + return jwt.decode( + id_token, + certs=certs, + audience=audience, + clock_skew_in_seconds=clock_skew_in_seconds, + ) + + +def verify_oauth2_token(id_token, request, audience=None, clock_skew_in_seconds=0): + """Verifies an ID Token issued by Google's OAuth 2.0 authorization server. + + Args: + id_token (Union[str, bytes]): The encoded token. + request (google.auth.transport.Request): The object used to make + HTTP requests. + audience (str): The audience that this token is intended for. This is + typically your application's OAuth 2.0 client ID. If None then the + audience is not verified. + clock_skew_in_seconds (int): The clock skew used for `iat` and `exp` + validation. + + Returns: + Mapping[str, Any]: The decoded token. + + Raises: + exceptions.GoogleAuthError: If the issuer is invalid. + ValueError: If token verification fails + """ + idinfo = verify_token( + id_token, + request, + audience=audience, + certs_url=_GOOGLE_OAUTH2_CERTS_URL, + clock_skew_in_seconds=clock_skew_in_seconds, + ) + + if idinfo["iss"] not in _GOOGLE_ISSUERS: + raise exceptions.GoogleAuthError( + "Wrong issuer. 'iss' should be one of the following: {}".format( + _GOOGLE_ISSUERS + ) + ) + + return idinfo + + +def verify_firebase_token(id_token, request, audience=None, clock_skew_in_seconds=0): + """Verifies an ID Token issued by Firebase Authentication. + + Args: + id_token (Union[str, bytes]): The encoded token. + request (google.auth.transport.Request): The object used to make + HTTP requests. + audience (str): The audience that this token is intended for. This is + typically your Firebase application ID. If None then the audience + is not verified. + clock_skew_in_seconds (int): The clock skew used for `iat` and `exp` + validation. + + Returns: + Mapping[str, Any]: The decoded token. + """ + return verify_token( + id_token, + request, + audience=audience, + certs_url=_GOOGLE_APIS_CERTS_URL, + clock_skew_in_seconds=clock_skew_in_seconds, + ) + + +def fetch_id_token_credentials(audience, request=None): + """Create the ID Token credentials from the current environment. + + This function acquires ID token from the environment in the following order. + See https://google.aip.dev/auth/4110. + + 1. If the environment variable ``GOOGLE_APPLICATION_CREDENTIALS`` is set + to the path of a valid service account JSON file, then ID token is + acquired using this service account credentials. + 2. If the application is running in Compute Engine, App Engine or Cloud Run, + then the ID token are obtained from the metadata server. + 3. If metadata server doesn't exist and no valid service account credentials + are found, :class:`~google.auth.exceptions.DefaultCredentialsError` will + be raised. + + Example:: + + import google.oauth2.id_token + import google.auth.transport.requests + + request = google.auth.transport.requests.Request() + target_audience = "https://pubsub.googleapis.com" + + # Create ID token credentials. + credentials = google.oauth2.id_token.fetch_id_token_credentials(target_audience, request=request) + + # Refresh the credential to obtain an ID token. + credentials.refresh(request) + + id_token = credentials.token + id_token_expiry = credentials.expiry + + Args: + audience (str): The audience that this ID token is intended for. + request (Optional[google.auth.transport.Request]): A callable used to make + HTTP requests. A request object will be created if not provided. + + Returns: + google.auth.credentials.Credentials: The ID token credentials. + + Raises: + ~google.auth.exceptions.DefaultCredentialsError: + If metadata server doesn't exist and no valid service account + credentials are found. + """ + # 1. Try to get credentials from the GOOGLE_APPLICATION_CREDENTIALS environment + # variable. + credentials_filename = os.environ.get(environment_vars.CREDENTIALS) + if credentials_filename: + if not ( + os.path.exists(credentials_filename) + and os.path.isfile(credentials_filename) + ): + raise exceptions.DefaultCredentialsError( + "GOOGLE_APPLICATION_CREDENTIALS path is either not found or invalid." + ) + + try: + with open(credentials_filename, "r") as f: + from google.oauth2 import service_account + + info = json.load(f) + if info.get("type") == "service_account": + return service_account.IDTokenCredentials.from_service_account_info( + info, target_audience=audience + ) + elif info.get("type") == "impersonated_service_account": + from google.auth import impersonated_credentials + + target_credentials = impersonated_credentials.Credentials.from_impersonated_service_account_info( + info + ) + + return impersonated_credentials.IDTokenCredentials( + target_credentials=target_credentials, + target_audience=audience, + include_email=True, + ) + except ValueError as caught_exc: + new_exc = exceptions.DefaultCredentialsError( + "GOOGLE_APPLICATION_CREDENTIALS is not valid service account credentials.", + caught_exc, + ) + raise new_exc from caught_exc + + # 2. Try to fetch ID token from metada server if it exists. The code + # works for GAE and Cloud Run metadata server as well. + try: + from google.auth import compute_engine + from google.auth.compute_engine import _metadata + + # Create a request object if not provided. + if not request: + import google.auth.transport.requests + + request = google.auth.transport.requests.Request() + + if _metadata.ping(request): + return compute_engine.IDTokenCredentials( + request, audience, use_metadata_identity_endpoint=True + ) + except (ImportError, exceptions.TransportError): + pass + + raise exceptions.DefaultCredentialsError( + "Neither metadata server or valid service account credentials are found." + ) + + +def fetch_id_token(request, audience): + """Fetch the ID Token from the current environment. + + This function acquires ID token from the environment in the following order. + See https://google.aip.dev/auth/4110. + + 1. If the environment variable ``GOOGLE_APPLICATION_CREDENTIALS`` is set + to the path of a valid service account JSON file, then ID token is + acquired using this service account credentials. + 2. If the application is running in Compute Engine, App Engine or Cloud Run, + then the ID token are obtained from the metadata server. + 3. If metadata server doesn't exist and no valid service account credentials + are found, :class:`~google.auth.exceptions.DefaultCredentialsError` will + be raised. + + Example:: + + import google.oauth2.id_token + import google.auth.transport.requests + + request = google.auth.transport.requests.Request() + target_audience = "https://pubsub.googleapis.com" + + id_token = google.oauth2.id_token.fetch_id_token(request, target_audience) + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + audience (str): The audience that this ID token is intended for. + + Returns: + str: The ID token. + + Raises: + ~google.auth.exceptions.DefaultCredentialsError: + If metadata server doesn't exist and no valid service account + credentials are found. + """ + id_token_credentials = fetch_id_token_credentials(audience, request=request) + id_token_credentials.refresh(request) + return id_token_credentials.token diff --git a/intelliaide/vendor/google/oauth2/py.typed b/intelliaide/vendor/google/oauth2/py.typed new file mode 100644 index 0000000..d82ed62 --- /dev/null +++ b/intelliaide/vendor/google/oauth2/py.typed @@ -0,0 +1,2 @@ +# Marker file for PEP 561. +# The google-oauth2 package uses inline types. diff --git a/intelliaide/vendor/google/oauth2/reauth.py b/intelliaide/vendor/google/oauth2/reauth.py new file mode 100644 index 0000000..abf691d --- /dev/null +++ b/intelliaide/vendor/google/oauth2/reauth.py @@ -0,0 +1,373 @@ +# Copyright 2021 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""A module that provides functions for handling rapt authentication. + +Reauth is a process of obtaining additional authentication (such as password, +security token, etc.) while refreshing OAuth 2.0 credentials for a user. + +Credentials that use the Reauth flow must have the reauth scope, +``https://www.googleapis.com/auth/accounts.reauth``. + +This module provides a high-level function for executing the Reauth process, +:func:`refresh_grant`, and lower-level helpers for doing the individual +steps of the reauth process. + +Those steps are: + +1. Obtaining a list of challenges from the reauth server. +2. Running through each challenge and sending the result back to the reauth + server. +3. Refreshing the access token using the returned rapt token. +""" + +import sys + +from google.auth import exceptions +from google.auth import metrics +from google.oauth2 import _client +from google.oauth2 import challenges + + +_REAUTH_SCOPE = "https://www.googleapis.com/auth/accounts.reauth" +_REAUTH_API = "https://reauth.googleapis.com/v2/sessions" + +_REAUTH_NEEDED_ERROR = "invalid_grant" +_REAUTH_NEEDED_ERROR_INVALID_RAPT = "invalid_rapt" +_REAUTH_NEEDED_ERROR_RAPT_REQUIRED = "rapt_required" + +_AUTHENTICATED = "AUTHENTICATED" +_CHALLENGE_REQUIRED = "CHALLENGE_REQUIRED" +_CHALLENGE_PENDING = "CHALLENGE_PENDING" + + +# Override this global variable to set custom max number of rounds of reauth +# challenges should be run. +RUN_CHALLENGE_RETRY_LIMIT = 5 + + +def is_interactive(): + """Check if we are in an interractive environment. + + Override this function with a different logic if you are using this library + outside a CLI. + + If the rapt token needs refreshing, the user needs to answer the challenges. + If the user is not in an interractive environment, the challenges can not + be answered and we just wait for timeout for no reason. + + Returns: + bool: True if is interactive environment, False otherwise. + """ + + return sys.stdin.isatty() + + +def _get_challenges( + request, supported_challenge_types, access_token, requested_scopes=None +): + """Does initial request to reauth API to get the challenges. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + supported_challenge_types (Sequence[str]): list of challenge names + supported by the manager. + access_token (str): Access token with reauth scopes. + requested_scopes (Optional(Sequence[str])): Authorized scopes for the credentials. + + Returns: + dict: The response from the reauth API. + """ + body = {"supportedChallengeTypes": supported_challenge_types} + if requested_scopes: + body["oauthScopesForDomainPolicyLookup"] = requested_scopes + metrics_header = {metrics.API_CLIENT_HEADER: metrics.reauth_start()} + + return _client._token_endpoint_request( + request, + _REAUTH_API + ":start", + body, + access_token=access_token, + use_json=True, + headers=metrics_header, + ) + + +def _send_challenge_result( + request, session_id, challenge_id, client_input, access_token +): + """Attempt to refresh access token by sending next challenge result. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + session_id (str): session id returned by the initial reauth call. + challenge_id (str): challenge id returned by the initial reauth call. + client_input: dict with a challenge-specific client input. For example: + ``{'credential': password}`` for password challenge. + access_token (str): Access token with reauth scopes. + + Returns: + dict: The response from the reauth API. + """ + body = { + "sessionId": session_id, + "challengeId": challenge_id, + "action": "RESPOND", + "proposalResponse": client_input, + } + metrics_header = {metrics.API_CLIENT_HEADER: metrics.reauth_continue()} + + return _client._token_endpoint_request( + request, + _REAUTH_API + "/{}:continue".format(session_id), + body, + access_token=access_token, + use_json=True, + headers=metrics_header, + ) + + +def _run_next_challenge(msg, request, access_token): + """Get the next challenge from msg and run it. + + Args: + msg (dict): Reauth API response body (either from the initial request to + https://reauth.googleapis.com/v2/sessions:start or from sending the + previous challenge response to + https://reauth.googleapis.com/v2/sessions/id:continue) + request (google.auth.transport.Request): A callable used to make + HTTP requests. + access_token (str): reauth access token + + Returns: + dict: The response from the reauth API. + + Raises: + google.auth.exceptions.ReauthError: if reauth failed. + """ + for challenge in msg["challenges"]: + if challenge["status"] != "READY": + # Skip non-activated challenges. + continue + c = challenges.AVAILABLE_CHALLENGES.get(challenge["challengeType"], None) + if not c: + raise exceptions.ReauthFailError( + "Unsupported challenge type {0}. Supported types: {1}".format( + challenge["challengeType"], + ",".join(list(challenges.AVAILABLE_CHALLENGES.keys())), + ) + ) + if not c.is_locally_eligible: + raise exceptions.ReauthFailError( + "Challenge {0} is not locally eligible".format( + challenge["challengeType"] + ) + ) + client_input = c.obtain_challenge_input(challenge) + if not client_input: + return None + return _send_challenge_result( + request, + msg["sessionId"], + challenge["challengeId"], + client_input, + access_token, + ) + return None + + +def _obtain_rapt(request, access_token, requested_scopes): + """Given an http request method and reauth access token, get rapt token. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + access_token (str): reauth access token + requested_scopes (Sequence[str]): scopes required by the client application + + Returns: + str: The rapt token. + + Raises: + google.auth.exceptions.ReauthError: if reauth failed + """ + msg = _get_challenges( + request, + list(challenges.AVAILABLE_CHALLENGES.keys()), + access_token, + requested_scopes, + ) + + if msg["status"] == _AUTHENTICATED: + return msg["encodedProofOfReauthToken"] + + for _ in range(0, RUN_CHALLENGE_RETRY_LIMIT): + if not ( + msg["status"] == _CHALLENGE_REQUIRED or msg["status"] == _CHALLENGE_PENDING + ): + raise exceptions.ReauthFailError( + "Reauthentication challenge failed due to API error: {}".format( + msg["status"] + ) + ) + + if not is_interactive(): + raise exceptions.ReauthFailError( + "Reauthentication challenge could not be answered because you are not" + " in an interactive session." + ) + + msg = _run_next_challenge(msg, request, access_token) + + if not msg: + raise exceptions.ReauthFailError("Failed to obtain rapt token.") + if msg["status"] == _AUTHENTICATED: + return msg["encodedProofOfReauthToken"] + + # If we got here it means we didn't get authenticated. + raise exceptions.ReauthFailError("Failed to obtain rapt token.") + + +def get_rapt_token( + request, client_id, client_secret, refresh_token, token_uri, scopes=None +): + """Given an http request method and refresh_token, get rapt token. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + client_id (str): client id to get access token for reauth scope. + client_secret (str): client secret for the client_id + refresh_token (str): refresh token to refresh access token + token_uri (str): uri to refresh access token + scopes (Optional(Sequence[str])): scopes required by the client application + + Returns: + str: The rapt token. + Raises: + google.auth.exceptions.RefreshError: If reauth failed. + """ + sys.stderr.write("Reauthentication required.\n") + + # Get access token for reauth. + access_token, _, _, _ = _client.refresh_grant( + request=request, + client_id=client_id, + client_secret=client_secret, + refresh_token=refresh_token, + token_uri=token_uri, + scopes=[_REAUTH_SCOPE], + ) + + # Get rapt token from reauth API. + rapt_token = _obtain_rapt(request, access_token, requested_scopes=scopes) + sys.stderr.write("Reauthentication successful.\n") + + return rapt_token + + +def refresh_grant( + request, + token_uri, + refresh_token, + client_id, + client_secret, + scopes=None, + rapt_token=None, + enable_reauth_refresh=False, +): + """Implements the reauthentication flow. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + token_uri (str): The OAuth 2.0 authorizations server's token endpoint + URI. + refresh_token (str): The refresh token to use to get a new access + token. + client_id (str): The OAuth 2.0 application's client ID. + client_secret (str): The Oauth 2.0 appliaction's client secret. + scopes (Optional(Sequence[str])): Scopes to request. If present, all + scopes must be authorized for the refresh token. Useful if refresh + token has a wild card scope (e.g. + 'https://www.googleapis.com/auth/any-api'). + rapt_token (Optional(str)): The rapt token for reauth. + enable_reauth_refresh (Optional[bool]): Whether reauth refresh flow + should be used. The default value is False. This option is for + gcloud only, other users should use the default value. + + Returns: + Tuple[str, Optional[str], Optional[datetime], Mapping[str, str], str]: The + access token, new refresh token, expiration, the additional data + returned by the token endpoint, and the rapt token. + + Raises: + google.auth.exceptions.RefreshError: If the token endpoint returned + an error. + """ + body = { + "grant_type": _client._REFRESH_GRANT_TYPE, + "client_id": client_id, + "client_secret": client_secret, + "refresh_token": refresh_token, + } + if scopes: + body["scope"] = " ".join(scopes) + if rapt_token: + body["rapt"] = rapt_token + metrics_header = {metrics.API_CLIENT_HEADER: metrics.token_request_user()} + + ( + response_status_ok, + response_data, + retryable_error, + ) = _client._token_endpoint_request_no_throw( + request, token_uri, body, headers=metrics_header + ) + + if not response_status_ok and isinstance(response_data, str): + raise exceptions.RefreshError(response_data, retryable=False) + + if ( + not response_status_ok + and response_data.get("error") == _REAUTH_NEEDED_ERROR + and ( + response_data.get("error_subtype") == _REAUTH_NEEDED_ERROR_INVALID_RAPT + or response_data.get("error_subtype") == _REAUTH_NEEDED_ERROR_RAPT_REQUIRED + ) + ): + if not enable_reauth_refresh: + raise exceptions.RefreshError( + "Reauthentication is needed. Please run `gcloud auth application-default login` to reauthenticate." + ) + + rapt_token = get_rapt_token( + request, client_id, client_secret, refresh_token, token_uri, scopes=scopes + ) + body["rapt"] = rapt_token + ( + response_status_ok, + response_data, + retryable_error, + ) = _client._token_endpoint_request_no_throw( + request, token_uri, body, headers=metrics_header + ) + + if not response_status_ok: + _client._handle_error_response(response_data, retryable_error) + return _client._handle_refresh_grant_response(response_data, refresh_token) + ( + rapt_token, + ) diff --git a/intelliaide/vendor/google/oauth2/service_account.py b/intelliaide/vendor/google/oauth2/service_account.py new file mode 100644 index 0000000..5c19b8f --- /dev/null +++ b/intelliaide/vendor/google/oauth2/service_account.py @@ -0,0 +1,882 @@ +# Copyright 2016 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Service Accounts: JSON Web Token (JWT) Profile for OAuth 2.0 + +This module implements the JWT Profile for OAuth 2.0 Authorization Grants +as defined by `RFC 7523`_ with particular support for how this RFC is +implemented in Google's infrastructure. Google refers to these credentials +as *Service Accounts*. + +Service accounts are used for server-to-server communication, such as +interactions between a web application server and a Google service. The +service account belongs to your application instead of to an individual end +user. In contrast to other OAuth 2.0 profiles, no users are involved and your +application "acts" as the service account. + +Typically an application uses a service account when the application uses +Google APIs to work with its own data rather than a user's data. For example, +an application that uses Google Cloud Datastore for data persistence would use +a service account to authenticate its calls to the Google Cloud Datastore API. +However, an application that needs to access a user's Drive documents would +use the normal OAuth 2.0 profile. + +Additionally, Google Apps domain administrators can grant service accounts +`domain-wide delegation`_ authority to access user data on behalf of users in +the domain. + +This profile uses a JWT to acquire an OAuth 2.0 access token. The JWT is used +in place of the usual authorization token returned during the standard +OAuth 2.0 Authorization Code grant. The JWT is only used for this purpose, as +the acquired access token is used as the bearer token when making requests +using these credentials. + +This profile differs from normal OAuth 2.0 profile because no user consent +step is required. The use of the private key allows this profile to assert +identity directly. + +This profile also differs from the :mod:`google.auth.jwt` authentication +because the JWT credentials use the JWT directly as the bearer token. This +profile instead only uses the JWT to obtain an OAuth 2.0 access token. The +obtained OAuth 2.0 access token is used as the bearer token. + +Domain-wide delegation +---------------------- + +Domain-wide delegation allows a service account to access user data on +behalf of any user in a Google Apps domain without consent from the user. +For example, an application that uses the Google Calendar API to add events to +the calendars of all users in a Google Apps domain would use a service account +to access the Google Calendar API on behalf of users. + +The Google Apps administrator must explicitly authorize the service account to +do this. This authorization step is referred to as "delegating domain-wide +authority" to a service account. + +You can use domain-wise delegation by creating a set of credentials with a +specific subject using :meth:`~Credentials.with_subject`. + +.. _RFC 7523: https://tools.ietf.org/html/rfc7523 +""" + +import copy +import datetime +import logging +from typing import Optional, TYPE_CHECKING + + +from google.auth import _helpers +from google.auth import _service_account_info +from google.auth import credentials +from google.auth import exceptions +from google.auth import iam +from google.auth import jwt +from google.auth import metrics +from google.oauth2 import _client + +if TYPE_CHECKING: # pragma: NO COVER + import google.auth.transport + +_LOGGER = logging.getLogger(__name__) + +_DEFAULT_TOKEN_LIFETIME_SECS = 3600 # 1 hour in seconds +_GOOGLE_OAUTH2_TOKEN_ENDPOINT = "https://oauth2.googleapis.com/token" + + +class Credentials( + credentials.Signing, + credentials.Scoped, + credentials.CredentialsWithQuotaProject, + credentials.CredentialsWithTokenUri, + credentials.CredentialsWithRegionalAccessBoundary, +): + """Service account credentials + + Usually, you'll create these credentials with one of the helper + constructors. To create credentials using a Google service account + private key JSON file:: + + credentials = service_account.Credentials.from_service_account_file( + 'service-account.json') + + Or if you already have the service account file loaded:: + + service_account_info = json.load(open('service_account.json')) + credentials = service_account.Credentials.from_service_account_info( + service_account_info) + + Both helper methods pass on arguments to the constructor, so you can + specify additional scopes and a subject if necessary:: + + credentials = service_account.Credentials.from_service_account_file( + 'service-account.json', + scopes=['email'], + subject='user@example.com') + + The credentials are considered immutable. If you want to modify the scopes + or the subject used for delegation, use :meth:`with_scopes` or + :meth:`with_subject`:: + + scoped_credentials = credentials.with_scopes(['email']) + delegated_credentials = credentials.with_subject(subject) + + To add a quota project, use :meth:`with_quota_project`:: + + credentials = credentials.with_quota_project('myproject-123') + """ + + def __init__( + self, + signer, + service_account_email, + token_uri, + scopes=None, + default_scopes=None, + subject=None, + project_id=None, + quota_project_id=None, + additional_claims=None, + always_use_jwt_access=False, + universe_domain=credentials.DEFAULT_UNIVERSE_DOMAIN, + trust_boundary=None, + ): + """ + Args: + signer (google.auth.crypt.Signer): The signer used to sign JWTs. + service_account_email (str): The service account's email. + scopes (Sequence[str]): User-defined scopes to request during the + authorization grant. + default_scopes (Sequence[str]): Default scopes passed by a + Google client library. Use 'scopes' for user-defined scopes. + token_uri (str): The OAuth 2.0 Token URI. + subject (str): For domain-wide delegation, the email address of the + user to for which to request delegated access. + project_id (str): Project ID associated with the service account + credential. + quota_project_id (Optional[str]): The project ID used for quota and + billing. + additional_claims (Mapping[str, str]): Any additional claims for + the JWT assertion used in the authorization grant. + always_use_jwt_access (Optional[bool]): Whether self signed JWT should + be always used. + universe_domain (str): The universe domain. The default + universe domain is googleapis.com. For default value self + signed jwt is used for token refresh. + trust_boundary (Mapping[str,str]): A credential trust boundary. + + .. note:: Typically one of the helper constructors + :meth:`from_service_account_file` or + :meth:`from_service_account_info` are used instead of calling the + constructor directly. + """ + super(Credentials, self).__init__() + + self._cred_file_path = None + self._scopes = scopes + self._default_scopes = default_scopes + self._signer = signer + self._service_account_email = service_account_email + self._subject = subject + self._project_id = project_id + self._quota_project_id = quota_project_id + self._token_uri = token_uri + self._always_use_jwt_access = always_use_jwt_access + self._universe_domain = universe_domain or credentials.DEFAULT_UNIVERSE_DOMAIN + + if universe_domain != credentials.DEFAULT_UNIVERSE_DOMAIN: + self._always_use_jwt_access = True + + self._jwt_credentials = None + + if additional_claims is not None: + self._additional_claims = additional_claims + else: + self._additional_claims = {} + + self._trust_boundary = trust_boundary + + @classmethod + def _from_signer_and_info(cls, signer, info, **kwargs): + """Creates a Credentials instance from a signer and service account + info. + + Args: + signer (google.auth.crypt.Signer): The signer used to sign JWTs. + info (Mapping[str, str]): The service account info. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.jwt.Credentials: The constructed credentials. + + Raises: + ValueError: If the info is not in the expected format. + """ + return cls( + signer, + service_account_email=info["client_email"], + token_uri=info["token_uri"], + project_id=info.get("project_id"), + universe_domain=info.get( + "universe_domain", credentials.DEFAULT_UNIVERSE_DOMAIN + ), + trust_boundary=info.get("trust_boundary"), + **kwargs, + ) + + @classmethod + def from_service_account_info(cls, info, **kwargs): + """Creates a Credentials instance from parsed service account info. + + Args: + info (Mapping[str, str]): The service account info in Google + format. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.service_account.Credentials: The constructed + credentials. + + Raises: + ValueError: If the info is not in the expected format. + """ + signer = _service_account_info.from_dict( + info, require=["client_email", "token_uri"] + ) + return cls._from_signer_and_info(signer, info, **kwargs) + + @classmethod + def from_service_account_file(cls, filename, **kwargs): + """Creates a Credentials instance from a service account json file. + + Args: + filename (str): The path to the service account json file. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.service_account.Credentials: The constructed + credentials. + """ + info, signer = _service_account_info.from_filename( + filename, require=["client_email", "token_uri"] + ) + return cls._from_signer_and_info(signer, info, **kwargs) + + @property + def service_account_email(self): + """The service account email.""" + return self._service_account_email + + @property + def project_id(self): + """Project ID associated with this credential.""" + return self._project_id + + @property + def requires_scopes(self): + """Checks if the credentials requires scopes. + + Returns: + bool: True if there are no scopes set otherwise False. + """ + return True if not self._scopes else False + + def _make_copy(self): + cred = self.__class__( + self._signer, + service_account_email=self._service_account_email, + scopes=copy.copy(self._scopes), + default_scopes=copy.copy(self._default_scopes), + token_uri=self._token_uri, + subject=self._subject, + project_id=self._project_id, + quota_project_id=self._quota_project_id, + additional_claims=self._additional_claims.copy(), + always_use_jwt_access=self._always_use_jwt_access, + universe_domain=self._universe_domain, + trust_boundary=self._trust_boundary, + ) + cred._cred_file_path = self._cred_file_path + self._copy_regional_access_boundary_manager(cred) + return cred + + @_helpers.copy_docstring(credentials.Scoped) + def with_scopes(self, scopes, default_scopes=None): + cred = self._make_copy() + cred._scopes = scopes + cred._default_scopes = default_scopes + return cred + + def with_always_use_jwt_access(self, always_use_jwt_access): + """Create a copy of these credentials with the specified always_use_jwt_access value. + + Args: + always_use_jwt_access (bool): Whether always use self signed JWT or not. + + Returns: + google.auth.service_account.Credentials: A new credentials + instance. + Raises: + google.auth.exceptions.InvalidValue: If the universe domain is not + default and always_use_jwt_access is False. + """ + cred = self._make_copy() + if ( + cred._universe_domain != credentials.DEFAULT_UNIVERSE_DOMAIN + and not always_use_jwt_access + ): + raise exceptions.InvalidValue( + "always_use_jwt_access should be True for non-default universe domain" + ) + cred._always_use_jwt_access = always_use_jwt_access + return cred + + @_helpers.copy_docstring(credentials.CredentialsWithUniverseDomain) + def with_universe_domain(self, universe_domain): + cred = self._make_copy() + cred._universe_domain = universe_domain + if universe_domain != credentials.DEFAULT_UNIVERSE_DOMAIN: + cred._always_use_jwt_access = True + return cred + + def with_subject(self, subject): + """Create a copy of these credentials with the specified subject. + + Args: + subject (str): The subject claim. + + Returns: + google.auth.service_account.Credentials: A new credentials + instance. + """ + cred = self._make_copy() + cred._subject = subject + return cred + + def with_claims(self, additional_claims): + """Returns a copy of these credentials with modified claims. + + Args: + additional_claims (Mapping[str, str]): Any additional claims for + the JWT payload. This will be merged with the current + additional claims. + + Returns: + google.auth.service_account.Credentials: A new credentials + instance. + """ + new_additional_claims = copy.deepcopy(self._additional_claims) + new_additional_claims.update(additional_claims or {}) + cred = self._make_copy() + cred._additional_claims = new_additional_claims + return cred + + @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) + def with_quota_project(self, quota_project_id): + cred = self._make_copy() + cred._quota_project_id = quota_project_id + return cred + + @_helpers.copy_docstring(credentials.CredentialsWithTokenUri) + def with_token_uri(self, token_uri): + cred = self._make_copy() + cred._token_uri = token_uri + return cred + + def _make_authorization_grant_assertion(self): + """Create the OAuth 2.0 assertion. + + This assertion is used during the OAuth 2.0 grant to acquire an + access token. + + Returns: + bytes: The authorization grant assertion. + """ + now = _helpers.utcnow() + lifetime = datetime.timedelta(seconds=_DEFAULT_TOKEN_LIFETIME_SECS) + expiry = now + lifetime + + payload = { + "iat": _helpers.datetime_to_secs(now), + "exp": _helpers.datetime_to_secs(expiry), + # The issuer must be the service account email. + "iss": self._service_account_email, + # The audience must be the auth token endpoint's URI + "aud": _GOOGLE_OAUTH2_TOKEN_ENDPOINT, + "scope": _helpers.scopes_to_string(self._scopes or ()), + } + + payload.update(self._additional_claims) + + # The subject can be a user email for domain-wide delegation. + if self._subject: + payload.setdefault("sub", self._subject) + + token = jwt.encode(self._signer, payload) + + return token + + def _use_self_signed_jwt(self): + # Since domain wide delegation doesn't work with self signed JWT. If + # subject exists, then we should not use self signed JWT. + return self._subject is None and self._jwt_credentials is not None + + def _metric_header_for_usage(self): + if self._use_self_signed_jwt(): + return metrics.CRED_TYPE_SA_JWT + return metrics.CRED_TYPE_SA_ASSERTION + + @_helpers.copy_docstring(credentials.CredentialsWithRegionalAccessBoundary) + def _perform_refresh_token(self, request): + if self._always_use_jwt_access and not self._jwt_credentials: + # If self signed jwt should be used but jwt credential is not + # created, try to create one with scopes + self._create_self_signed_jwt(None) + + if ( + self._universe_domain != credentials.DEFAULT_UNIVERSE_DOMAIN + and self._subject + ): + raise exceptions.RefreshError( + "domain wide delegation is not supported for non-default universe domain" + ) + + if self._use_self_signed_jwt(): + self._jwt_credentials.refresh(request) + self.token = self._jwt_credentials.token.decode() + self.expiry = self._jwt_credentials.expiry + else: + assertion = self._make_authorization_grant_assertion() + access_token, expiry, _ = _client.jwt_grant( + request, self._token_uri, assertion + ) + self.token = access_token + self.expiry = expiry + + def _create_self_signed_jwt(self, audience): + """Create a self-signed JWT from the credentials if requirements are met. + + Args: + audience (str): The service URL. ``https://[API_ENDPOINT]/`` + """ + # https://google.aip.dev/auth/4111 + if self._always_use_jwt_access: + if self._scopes: + additional_claims = {"scope": " ".join(self._scopes)} + if ( + self._jwt_credentials is None + or self._jwt_credentials.additional_claims != additional_claims + ): + self._jwt_credentials = jwt.Credentials.from_signing_credentials( + self, None, additional_claims=additional_claims + ) + elif audience: + if ( + self._jwt_credentials is None + or self._jwt_credentials._audience != audience + ): + self._jwt_credentials = jwt.Credentials.from_signing_credentials( + self, audience + ) + elif self._default_scopes: + additional_claims = {"scope": " ".join(self._default_scopes)} + if ( + self._jwt_credentials is None + or additional_claims != self._jwt_credentials.additional_claims + ): + self._jwt_credentials = jwt.Credentials.from_signing_credentials( + self, None, additional_claims=additional_claims + ) + elif not self._scopes and audience: + self._jwt_credentials = jwt.Credentials.from_signing_credentials( + self, audience + ) + + def _build_regional_access_boundary_lookup_url( + self, request: "Optional[google.auth.transport.Request]" = None # noqa: F821 + ): + """Builds and returns the URL for the Regional Access Boundary lookup API. + + This method constructs the specific URL for the IAM Credentials API's + `allowedLocations` endpoint, using the credential's universe domain + and service account email. + + Returns: + Optional[str]: The URL for the Regional Access Boundary lookup endpoint, or None + if the service account email is missing. + """ + if not self.service_account_email: + _LOGGER.error( + "Service account email is required to build the Regional Access Boundary lookup URL for service account credentials." + ) + return None + return iam._SERVICE_ACCOUNT_REGIONAL_ACCESS_BOUNDARY_LOOKUP_ENDPOINT.format( + service_account_email=self._service_account_email, + ) + + @_helpers.copy_docstring(credentials.Signing) + def sign_bytes(self, message): + return self._signer.sign(message) + + @property # type: ignore + @_helpers.copy_docstring(credentials.Signing) + def signer(self): + return self._signer + + @property # type: ignore + @_helpers.copy_docstring(credentials.Signing) + def signer_email(self): + return self._service_account_email + + @_helpers.copy_docstring(credentials.Credentials) + def get_cred_info(self): + if self._cred_file_path: + return { + "credential_source": self._cred_file_path, + "credential_type": "service account credentials", + "principal": self.service_account_email, + } + return None + + +class IDTokenCredentials( + credentials.Signing, + credentials.CredentialsWithQuotaProject, + credentials.CredentialsWithTokenUri, +): + """Open ID Connect ID Token-based service account credentials. + + These credentials are largely similar to :class:`.Credentials`, but instead + of using an OAuth 2.0 Access Token as the bearer token, they use an Open + ID Connect ID Token as the bearer token. These credentials are useful when + communicating to services that require ID Tokens and can not accept access + tokens. + + Usually, you'll create these credentials with one of the helper + constructors. To create credentials using a Google service account + private key JSON file:: + + credentials = ( + service_account.IDTokenCredentials.from_service_account_file( + 'service-account.json')) + + + Or if you already have the service account file loaded:: + + service_account_info = json.load(open('service_account.json')) + credentials = ( + service_account.IDTokenCredentials.from_service_account_info( + service_account_info)) + + + Both helper methods pass on arguments to the constructor, so you can + specify additional scopes and a subject if necessary:: + + credentials = ( + service_account.IDTokenCredentials.from_service_account_file( + 'service-account.json', + scopes=['email'], + subject='user@example.com')) + + + The credentials are considered immutable. If you want to modify the scopes + or the subject used for delegation, use :meth:`with_scopes` or + :meth:`with_subject`:: + + scoped_credentials = credentials.with_scopes(['email']) + delegated_credentials = credentials.with_subject(subject) + + """ + + def __init__( + self, + signer, + service_account_email, + token_uri, + target_audience, + additional_claims=None, + quota_project_id=None, + universe_domain=credentials.DEFAULT_UNIVERSE_DOMAIN, + ): + """ + Args: + signer (google.auth.crypt.Signer): The signer used to sign JWTs. + service_account_email (str): The service account's email. + token_uri (str): The OAuth 2.0 Token URI. + target_audience (str): The intended audience for these credentials, + used when requesting the ID Token. The ID Token's ``aud`` claim + will be set to this string. + additional_claims (Mapping[str, str]): Any additional claims for + the JWT assertion used in the authorization grant. + quota_project_id (Optional[str]): The project ID used for quota and billing. + universe_domain (str): The universe domain. The default + universe domain is googleapis.com. For default value IAM ID + token endponint is used for token refresh. Note that + iam.serviceAccountTokenCreator role is required to use the IAM + endpoint. + + .. note:: Typically one of the helper constructors + :meth:`from_service_account_file` or + :meth:`from_service_account_info` are used instead of calling the + constructor directly. + """ + super(IDTokenCredentials, self).__init__() + self._signer = signer + self._service_account_email = service_account_email + self._token_uri = token_uri + self._target_audience = target_audience + self._quota_project_id = quota_project_id + self._use_iam_endpoint = False + + if not universe_domain: + self._universe_domain = credentials.DEFAULT_UNIVERSE_DOMAIN + else: + self._universe_domain = universe_domain + self._iam_id_token_endpoint = iam._IAM_IDTOKEN_ENDPOINT.replace( + "googleapis.com", self._universe_domain + ) + + if self._universe_domain != credentials.DEFAULT_UNIVERSE_DOMAIN: + self._use_iam_endpoint = True + + if additional_claims is not None: + self._additional_claims = additional_claims + else: + self._additional_claims = {} + + @classmethod + def _from_signer_and_info(cls, signer, info, **kwargs): + """Creates a credentials instance from a signer and service account + info. + + Args: + signer (google.auth.crypt.Signer): The signer used to sign JWTs. + info (Mapping[str, str]): The service account info. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.jwt.IDTokenCredentials: The constructed credentials. + + Raises: + ValueError: If the info is not in the expected format. + """ + kwargs.setdefault("service_account_email", info["client_email"]) + kwargs.setdefault("token_uri", info["token_uri"]) + if "universe_domain" in info: + kwargs["universe_domain"] = info["universe_domain"] + return cls(signer, **kwargs) + + @classmethod + def from_service_account_info(cls, info, **kwargs): + """Creates a credentials instance from parsed service account info. + + Args: + info (Mapping[str, str]): The service account info in Google + format. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.service_account.IDTokenCredentials: The constructed + credentials. + + Raises: + ValueError: If the info is not in the expected format. + """ + signer = _service_account_info.from_dict( + info, require=["client_email", "token_uri"] + ) + return cls._from_signer_and_info(signer, info, **kwargs) + + @classmethod + def from_service_account_file(cls, filename, **kwargs): + """Creates a credentials instance from a service account json file. + + Args: + filename (str): The path to the service account json file. + kwargs: Additional arguments to pass to the constructor. + + Returns: + google.auth.service_account.IDTokenCredentials: The constructed + credentials. + """ + info, signer = _service_account_info.from_filename( + filename, require=["client_email", "token_uri"] + ) + return cls._from_signer_and_info(signer, info, **kwargs) + + def _make_copy(self): + cred = self.__class__( + self._signer, + service_account_email=self._service_account_email, + token_uri=self._token_uri, + target_audience=self._target_audience, + additional_claims=self._additional_claims.copy(), + quota_project_id=self.quota_project_id, + universe_domain=self._universe_domain, + ) + # _use_iam_endpoint is not exposed in the constructor + cred._use_iam_endpoint = self._use_iam_endpoint + return cred + + def with_target_audience(self, target_audience): + """Create a copy of these credentials with the specified target + audience. + + Args: + target_audience (str): The intended audience for these credentials, + used when requesting the ID Token. + + Returns: + google.auth.service_account.IDTokenCredentials: A new credentials + instance. + """ + cred = self._make_copy() + cred._target_audience = target_audience + return cred + + def _with_use_iam_endpoint(self, use_iam_endpoint): + """Create a copy of these credentials with the use_iam_endpoint value. + + Args: + use_iam_endpoint (bool): If True, IAM generateIdToken endpoint will + be used instead of the token_uri. Note that + iam.serviceAccountTokenCreator role is required to use the IAM + endpoint. The default value is False. This feature is currently + experimental and subject to change without notice. + + Returns: + google.auth.service_account.IDTokenCredentials: A new credentials + instance. + Raises: + google.auth.exceptions.InvalidValue: If the universe domain is not + default and use_iam_endpoint is False. + """ + cred = self._make_copy() + if ( + cred._universe_domain != credentials.DEFAULT_UNIVERSE_DOMAIN + and not use_iam_endpoint + ): + raise exceptions.InvalidValue( + "use_iam_endpoint should be True for non-default universe domain" + ) + cred._use_iam_endpoint = use_iam_endpoint + return cred + + @_helpers.copy_docstring(credentials.CredentialsWithQuotaProject) + def with_quota_project(self, quota_project_id): + cred = self._make_copy() + cred._quota_project_id = quota_project_id + return cred + + @_helpers.copy_docstring(credentials.CredentialsWithTokenUri) + def with_token_uri(self, token_uri): + cred = self._make_copy() + cred._token_uri = token_uri + return cred + + def _make_authorization_grant_assertion(self): + """Create the OAuth 2.0 assertion. + + This assertion is used during the OAuth 2.0 grant to acquire an + ID token. + + Returns: + bytes: The authorization grant assertion. + """ + now = _helpers.utcnow() + lifetime = datetime.timedelta(seconds=_DEFAULT_TOKEN_LIFETIME_SECS) + expiry = now + lifetime + + payload = { + "iat": _helpers.datetime_to_secs(now), + "exp": _helpers.datetime_to_secs(expiry), + # The issuer must be the service account email. + "iss": self.service_account_email, + # The audience must be the auth token endpoint's URI + "aud": _GOOGLE_OAUTH2_TOKEN_ENDPOINT, + # The target audience specifies which service the ID token is + # intended for. + "target_audience": self._target_audience, + } + + payload.update(self._additional_claims) + + token = jwt.encode(self._signer, payload) + + return token + + def _refresh_with_iam_endpoint(self, request): + """Use IAM generateIdToken endpoint to obtain an ID token. + + It works as follows: + + 1. First we create a self signed jwt with + https://www.googleapis.com/auth/iam being the scope. + + 2. Next we use the self signed jwt as the access token, and make a POST + request to IAM generateIdToken endpoint. The request body is: + { + "audience": self._target_audience, + "includeEmail": "true", + "useEmailAzp": "true", + } + + If the request is succesfully, it will return {"token":"the ID token"}, + and we can extract the ID token and compute its expiry. + """ + jwt_credentials = jwt.Credentials.from_signing_credentials( + self, + None, + additional_claims={"scope": "https://www.googleapis.com/auth/iam"}, + ) + jwt_credentials.refresh(request) + + self.token, self.expiry = _client.call_iam_generate_id_token_endpoint( + request, + self._iam_id_token_endpoint, + self.signer_email, + self._target_audience, + jwt_credentials.token.decode(), + self._universe_domain, + ) + + @_helpers.copy_docstring(credentials.Credentials) + def refresh(self, request): + if self._use_iam_endpoint: + self._refresh_with_iam_endpoint(request) + else: + assertion = self._make_authorization_grant_assertion() + access_token, expiry, _ = _client.id_token_jwt_grant( + request, self._token_uri, assertion + ) + self.token = access_token + self.expiry = expiry + + @property + def service_account_email(self): + """The service account email.""" + return self._service_account_email + + @_helpers.copy_docstring(credentials.Signing) + def sign_bytes(self, message): + return self._signer.sign(message) + + @property # type: ignore + @_helpers.copy_docstring(credentials.Signing) + def signer(self): + return self._signer + + @property # type: ignore + @_helpers.copy_docstring(credentials.Signing) + def signer_email(self): + return self._service_account_email diff --git a/intelliaide/vendor/google/oauth2/sts.py b/intelliaide/vendor/google/oauth2/sts.py new file mode 100644 index 0000000..60d6f83 --- /dev/null +++ b/intelliaide/vendor/google/oauth2/sts.py @@ -0,0 +1,201 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""OAuth 2.0 Token Exchange Spec. + +This module defines a token exchange utility based on the `OAuth 2.0 Token +Exchange`_ spec. This will be mainly used to exchange external credentials +for GCP access tokens in workload identity pools to access Google APIs. + +The implementation will support various types of client authentication as +allowed in the spec. + +A deviation on the spec will be for additional Google specific options that +cannot be easily mapped to parameters defined in the RFC. + +The returned dictionary response will be based on the `rfc8693 section 2.2.1`_ +spec JSON response. + +.. _OAuth 2.0 Token Exchange: https://tools.ietf.org/html/rfc8693 +.. _rfc8693 section 2.2.1: https://tools.ietf.org/html/rfc8693#section-2.2.1 +""" + +import http.client as http_client +import json +import urllib + +from google.oauth2 import utils + + +_URLENCODED_HEADERS = {"Content-Type": "application/x-www-form-urlencoded"} + + +class Client(utils.OAuthClientAuthHandler): + """Implements the OAuth 2.0 token exchange spec based on + https://tools.ietf.org/html/rfc8693. + """ + + def __init__(self, token_exchange_endpoint, client_authentication=None): + """Initializes an STS client instance. + + Args: + token_exchange_endpoint (str): The token exchange endpoint. + client_authentication (Optional(google.oauth2.oauth2_utils.ClientAuthentication)): + The optional OAuth client authentication credentials if available. + """ + super(Client, self).__init__(client_authentication) + self._token_exchange_endpoint = token_exchange_endpoint + + def _make_request(self, request, headers, request_body, url=None): + # Initialize request headers. + request_headers = _URLENCODED_HEADERS.copy() + + # Inject additional headers. + if headers: + for k, v in dict(headers).items(): + request_headers[k] = v + + # Apply OAuth client authentication. + self.apply_client_authentication_options(request_headers, request_body) + + # Use default token exchange endpoint if no url is provided. + url = url or self._token_exchange_endpoint + + # Execute request. + response = request( + url=url, + method="POST", + headers=request_headers, + body=urllib.parse.urlencode(request_body).encode("utf-8"), + ) + + response_body = ( + response.data.decode("utf-8") + if hasattr(response.data, "decode") + else response.data + ) + + # If non-200 response received, translate to OAuthError exception. + if response.status != http_client.OK: + utils.handle_error_response(response_body) + + # A successful token revocation returns an empty response body. + if not response_body: + return {} + + # Other successful responses should be valid JSON. + return json.loads(response_body) + + def exchange_token( + self, + request, + grant_type, + subject_token, + subject_token_type, + resource=None, + audience=None, + scopes=None, + requested_token_type=None, + actor_token=None, + actor_token_type=None, + additional_options=None, + additional_headers=None, + ): + """Exchanges the provided token for another type of token based on the + rfc8693 spec. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + grant_type (str): The OAuth 2.0 token exchange grant type. + subject_token (str): The OAuth 2.0 token exchange subject token. + subject_token_type (str): The OAuth 2.0 token exchange subject token type. + resource (Optional[str]): The optional OAuth 2.0 token exchange resource field. + audience (Optional[str]): The optional OAuth 2.0 token exchange audience field. + scopes (Optional[Sequence[str]]): The optional list of scopes to use. + requested_token_type (Optional[str]): The optional OAuth 2.0 token exchange requested + token type. + actor_token (Optional[str]): The optional OAuth 2.0 token exchange actor token. + actor_token_type (Optional[str]): The optional OAuth 2.0 token exchange actor token type. + additional_options (Optional[Mapping[str, str]]): The optional additional + non-standard Google specific options. + additional_headers (Optional[Mapping[str, str]]): The optional additional + headers to pass to the token exchange endpoint. + + Returns: + Mapping[str, str]: The token exchange JSON-decoded response data containing + the requested token and its expiration time. + + Raises: + google.auth.exceptions.OAuthError: If the token endpoint returned + an error. + """ + # Initialize request body. + request_body = { + "grant_type": grant_type, + "resource": resource, + "audience": audience, + "scope": " ".join(scopes or []), + "requested_token_type": requested_token_type, + "subject_token": subject_token, + "subject_token_type": subject_token_type, + "actor_token": actor_token, + "actor_token_type": actor_token_type, + "options": None, + } + # Add additional non-standard options. + if additional_options: + request_body["options"] = urllib.parse.quote(json.dumps(additional_options)) + # Remove empty fields in request body. + for k, v in dict(request_body).items(): + if v is None or v == "": + del request_body[k] + + return self._make_request(request, additional_headers, request_body) + + def refresh_token(self, request, refresh_token): + """Exchanges a refresh token for an access token based on the + RFC6749 spec. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + subject_token (str): The OAuth 2.0 refresh token. + """ + + return self._make_request( + request, + None, + {"grant_type": "refresh_token", "refresh_token": refresh_token}, + ) + + def revoke_token(self, request, token, token_type_hint, revoke_url): + """Revokes the provided token based on the RFC7009 spec. + + Args: + request (google.auth.transport.Request): A callable used to make + HTTP requests. + token (str): The OAuth 2.0 token to revoke. + token_type_hint (str): Hint for the type of token being revoked. + revoke_url (str): The STS endpoint URL for revoking tokens. + + Raises: + google.auth.exceptions.OAuthError: If the token revocation endpoint + returned an error. + """ + request_body = {"token": token} + if token_type_hint: + request_body["token_type_hint"] = token_type_hint + + return self._make_request(request, None, request_body, revoke_url) diff --git a/intelliaide/vendor/google/oauth2/utils.py b/intelliaide/vendor/google/oauth2/utils.py new file mode 100644 index 0000000..d72ff19 --- /dev/null +++ b/intelliaide/vendor/google/oauth2/utils.py @@ -0,0 +1,168 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""OAuth 2.0 Utilities. + +This module provides implementations for various OAuth 2.0 utilities. +This includes `OAuth error handling`_ and +`Client authentication for OAuth flows`_. + +OAuth error handling +-------------------- +This will define interfaces for handling OAuth related error responses as +stated in `RFC 6749 section 5.2`_. +This will include a common function to convert these HTTP error responses to a +:class:`google.auth.exceptions.OAuthError` exception. + + +Client authentication for OAuth flows +------------------------------------- +We introduce an interface for defining client authentication credentials based +on `RFC 6749 section 2.3.1`_. This will expose the following +capabilities: + + * Ability to support basic authentication via request header. + * Ability to support bearer token authentication via request header. + * Ability to support client ID / secret authentication via request body. + +.. _RFC 6749 section 2.3.1: https://tools.ietf.org/html/rfc6749#section-2.3.1 +.. _RFC 6749 section 5.2: https://tools.ietf.org/html/rfc6749#section-5.2 +""" + +import abc +import base64 +import enum +import json + +from google.auth import exceptions + + +# OAuth client authentication based on +# https://tools.ietf.org/html/rfc6749#section-2.3. +class ClientAuthType(enum.Enum): + basic = 1 + request_body = 2 + + +class ClientAuthentication(object): + """Defines the client authentication credentials for basic and request-body + types based on https://tools.ietf.org/html/rfc6749#section-2.3.1. + """ + + def __init__(self, client_auth_type, client_id, client_secret=None): + """Instantiates a client authentication object containing the client ID + and secret credentials for basic and response-body auth. + + Args: + client_auth_type (google.oauth2.oauth_utils.ClientAuthType): The + client authentication type. + client_id (str): The client ID. + client_secret (Optional[str]): The client secret. + """ + self.client_auth_type = client_auth_type + self.client_id = client_id + self.client_secret = client_secret + + +class OAuthClientAuthHandler(metaclass=abc.ABCMeta): + """Abstract class for handling client authentication in OAuth-based + operations. + """ + + def __init__(self, client_authentication=None): + """Instantiates an OAuth client authentication handler. + + Args: + client_authentication (Optional[google.oauth2.utils.ClientAuthentication]): + The OAuth client authentication credentials if available. + """ + super(OAuthClientAuthHandler, self).__init__() + self._client_authentication = client_authentication + + def apply_client_authentication_options( + self, headers, request_body=None, bearer_token=None + ): + """Applies client authentication on the OAuth request's headers or POST + body. + + Args: + headers (Mapping[str, str]): The HTTP request header. + request_body (Optional[Mapping[str, str]]): The HTTP request body + dictionary. For requests that do not support request body, this + is None and will be ignored. + bearer_token (Optional[str]): The optional bearer token. + """ + # Inject authenticated header. + self._inject_authenticated_headers(headers, bearer_token) + # Inject authenticated request body. + if bearer_token is None: + self._inject_authenticated_request_body(request_body) + + def _inject_authenticated_headers(self, headers, bearer_token=None): + if bearer_token is not None: + headers["Authorization"] = "Bearer %s" % bearer_token + elif ( + self._client_authentication is not None + and self._client_authentication.client_auth_type is ClientAuthType.basic + ): + username = self._client_authentication.client_id + password = self._client_authentication.client_secret or "" + + credentials = base64.b64encode( + ("%s:%s" % (username, password)).encode() + ).decode() + headers["Authorization"] = "Basic %s" % credentials + + def _inject_authenticated_request_body(self, request_body): + if ( + self._client_authentication is not None + and self._client_authentication.client_auth_type + is ClientAuthType.request_body + ): + if request_body is None: + raise exceptions.OAuthError( + "HTTP request does not support request-body" + ) + else: + request_body["client_id"] = self._client_authentication.client_id + request_body["client_secret"] = ( + self._client_authentication.client_secret or "" + ) + + +def handle_error_response(response_body): + """Translates an error response from an OAuth operation into an + OAuthError exception. + + Args: + response_body (str): The decoded response data. + + Raises: + google.auth.exceptions.OAuthError + """ + try: + error_components = [] + error_data = json.loads(response_body) + + error_components.append("Error code {}".format(error_data["error"])) + if "error_description" in error_data: + error_components.append(": {}".format(error_data["error_description"])) + if "error_uri" in error_data: + error_components.append(" - {}".format(error_data["error_uri"])) + error_details = "".join(error_components) + # If no details could be extracted, use the response data. + except (KeyError, ValueError): + error_details = response_body + + raise exceptions.OAuthError(error_details, response_body) diff --git a/intelliaide/vendor/google/oauth2/webauthn_handler.py b/intelliaide/vendor/google/oauth2/webauthn_handler.py new file mode 100644 index 0000000..d46832d --- /dev/null +++ b/intelliaide/vendor/google/oauth2/webauthn_handler.py @@ -0,0 +1,82 @@ +import abc +import os +import struct +import subprocess + +from google.auth import exceptions +from google.oauth2.webauthn_types import GetRequest, GetResponse + + +class WebAuthnHandler(abc.ABC): + @abc.abstractmethod + def is_available(self) -> bool: + """Check whether this WebAuthn handler is available""" + raise NotImplementedError("is_available method must be implemented") + + @abc.abstractmethod + def get(self, get_request: GetRequest) -> GetResponse: + """WebAuthn get (assertion)""" + raise NotImplementedError("get method must be implemented") + + +class PluginHandler(WebAuthnHandler): + """Offloads WebAuthn get request to a pluggable command-line tool. + + Offloads WebAuthn get to a plugin which takes the form of a + command-line tool. The command-line tool is configurable via the + PluginHandler._ENV_VAR environment variable. + + The WebAuthn plugin should implement the following interface: + + Communication occurs over stdin/stdout, and messages are both sent and + received in the form: + + [4 bytes - payload size (little-endian)][variable bytes - json payload] + """ + + _ENV_VAR = "GOOGLE_AUTH_WEBAUTHN_PLUGIN" + + def is_available(self) -> bool: + try: + self._find_plugin() + except Exception: + return False + else: + return True + + def get(self, get_request: GetRequest) -> GetResponse: + request_json = get_request.to_json() + cmd = self._find_plugin() + response_json = self._call_plugin(cmd, request_json) + return GetResponse.from_json(response_json) + + def _call_plugin(self, cmd: str, input_json: str) -> str: + # Calculate length of input + input_length = len(input_json) + length_bytes_le = struct.pack(" str: + plugin_cmd = os.environ.get(PluginHandler._ENV_VAR) + if plugin_cmd is None: + raise exceptions.InvalidResource( + "{} env var is not set".format(PluginHandler._ENV_VAR) + ) + return plugin_cmd diff --git a/intelliaide/vendor/google/oauth2/webauthn_handler_factory.py b/intelliaide/vendor/google/oauth2/webauthn_handler_factory.py new file mode 100644 index 0000000..184329f --- /dev/null +++ b/intelliaide/vendor/google/oauth2/webauthn_handler_factory.py @@ -0,0 +1,16 @@ +from typing import List, Optional + +from google.oauth2.webauthn_handler import PluginHandler, WebAuthnHandler + + +class WebauthnHandlerFactory: + handlers: List[WebAuthnHandler] + + def __init__(self): + self.handlers = [PluginHandler()] + + def get_handler(self) -> Optional[WebAuthnHandler]: + for handler in self.handlers: + if handler.is_available(): + return handler + return None diff --git a/intelliaide/vendor/google/oauth2/webauthn_types.py b/intelliaide/vendor/google/oauth2/webauthn_types.py new file mode 100644 index 0000000..24e984f --- /dev/null +++ b/intelliaide/vendor/google/oauth2/webauthn_types.py @@ -0,0 +1,156 @@ +from dataclasses import dataclass +import json +from typing import Any, Dict, List, Optional + +from google.auth import exceptions + + +@dataclass(frozen=True) +class PublicKeyCredentialDescriptor: + """Descriptor for a security key based credential. + + https://www.w3.org/TR/webauthn-3/#dictionary-credential-descriptor + + Args: + id: credential id (key handle). + transports: <'usb'|'nfc'|'ble'|'internal'> List of supported transports. + """ + + id: str + transports: Optional[List[str]] = None + + def to_dict(self): + cred = {"type": "public-key", "id": self.id} + if self.transports: + cred["transports"] = self.transports + return cred + + +@dataclass +class AuthenticationExtensionsClientInputs: + """Client extensions inputs for WebAuthn extensions. + + Args: + appid: app id that can be asserted with in addition to rpid. + https://www.w3.org/TR/webauthn-3/#sctn-appid-extension + """ + + appid: Optional[str] = None + + def to_dict(self): + extensions = {} + if self.appid: + extensions["appid"] = self.appid + return extensions + + +@dataclass +class GetRequest: + """WebAuthn get request + + Args: + origin: Origin where the WebAuthn get assertion takes place. + rpid: Relying Party ID. + challenge: raw challenge. + timeout_ms: Timeout number in millisecond. + allow_credentials: List of allowed credentials. + user_verification: <'required'|'preferred'|'discouraged'> User verification requirement. + extensions: WebAuthn authentication extensions inputs. + """ + + origin: str + rpid: str + challenge: str + timeout_ms: Optional[int] = None + allow_credentials: Optional[List[PublicKeyCredentialDescriptor]] = None + user_verification: Optional[str] = None + extensions: Optional[AuthenticationExtensionsClientInputs] = None + + def to_json(self) -> str: + req_options: Dict[str, Any] = {"rpId": self.rpid, "challenge": self.challenge} + if self.timeout_ms: + req_options["timeout"] = self.timeout_ms + if self.allow_credentials: + req_options["allowCredentials"] = [ + c.to_dict() for c in self.allow_credentials + ] + if self.user_verification: + req_options["userVerification"] = self.user_verification + if self.extensions: + req_options["extensions"] = self.extensions.to_dict() + return json.dumps( + {"type": "get", "origin": self.origin, "requestData": req_options} + ) + + +@dataclass(frozen=True) +class AuthenticatorAssertionResponse: + """Authenticator response to a WebAuthn get (assertion) request. + + https://www.w3.org/TR/webauthn-3/#authenticatorassertionresponse + + Args: + client_data_json: client data JSON. + authenticator_data: authenticator data. + signature: signature. + user_handle: user handle. + """ + + client_data_json: str + authenticator_data: str + signature: str + user_handle: Optional[str] + + +@dataclass(frozen=True) +class GetResponse: + """WebAuthn get (assertion) response. + + Args: + id: credential id (key handle). + response: The authenticator assertion response. + authenticator_attachment: <'cross-platform'|'platform'> The attachment status of the authenticator. + client_extension_results: WebAuthn authentication extensions output results in a dictionary. + """ + + id: str + response: AuthenticatorAssertionResponse + authenticator_attachment: Optional[str] + client_extension_results: Optional[Dict] + + @staticmethod + def from_json(json_str: str): + """Verify and construct GetResponse from a JSON string.""" + try: + resp_json = json.loads(json_str) + except ValueError: + raise exceptions.MalformedError("Invalid Get JSON response") + if resp_json.get("type") != "getResponse": + raise exceptions.MalformedError( + "Invalid Get response type: {}".format(resp_json.get("type")) + ) + pk_cred = resp_json.get("responseData") + if pk_cred is None: + if resp_json.get("error"): + raise exceptions.ReauthFailError( + "WebAuthn.get failure: {}".format(resp_json["error"]) + ) + else: + raise exceptions.MalformedError("Get response is empty") + if pk_cred.get("type") != "public-key": + raise exceptions.MalformedError( + "Invalid credential type: {}".format(pk_cred.get("type")) + ) + assertion_json = pk_cred["response"] + assertion_resp = AuthenticatorAssertionResponse( + client_data_json=assertion_json["clientDataJSON"], + authenticator_data=assertion_json["authenticatorData"], + signature=assertion_json["signature"], + user_handle=assertion_json.get("userHandle"), + ) + return GetResponse( + id=pk_cred["id"], + response=assertion_resp, + authenticator_attachment=pk_cred.get("authenticatorAttachment"), + client_extension_results=pk_cred.get("clientExtensionResults"), + ) diff --git a/intelliaide/vendor/google_auth-2.53.0.dist-info/INSTALLER b/intelliaide/vendor/google_auth-2.53.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/intelliaide/vendor/google_auth-2.53.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/intelliaide/vendor/google_auth-2.53.0.dist-info/METADATA b/intelliaide/vendor/google_auth-2.53.0.dist-info/METADATA new file mode 100644 index 0000000..575e09b --- /dev/null +++ b/intelliaide/vendor/google_auth-2.53.0.dist-info/METADATA @@ -0,0 +1,165 @@ +Metadata-Version: 2.4 +Name: google-auth +Version: 2.53.0 +Summary: Google Authentication Library +Home-page: https://github.com/googleapis/google-auth-library-python +Author: Google Cloud Platform +Author-email: googleapis-packages@google.com +License: Apache 2.0 +Keywords: google auth oauth client +Classifier: Programming Language :: Python :: 3 +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 :: 3.14 +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: Apache Software License +Classifier: Operating System :: POSIX +Classifier: Operating System :: Microsoft :: Windows +Classifier: Operating System :: MacOS :: MacOS X +Classifier: Operating System :: OS Independent +Classifier: Topic :: Internet :: WWW/HTTP +Requires-Python: >=3.10 +License-File: LICENSE +Requires-Dist: pyasn1-modules>=0.2.1 +Requires-Dist: cryptography>=38.0.3 +Provides-Extra: cryptography +Requires-Dist: cryptography>=38.0.3; extra == "cryptography" +Provides-Extra: aiohttp +Requires-Dist: aiohttp<4.0.0,>=3.8.0; extra == "aiohttp" +Requires-Dist: requests<3.0.0,>=2.20.0; extra == "aiohttp" +Provides-Extra: enterprise-cert +Requires-Dist: pyopenssl; extra == "enterprise-cert" +Provides-Extra: pyopenssl +Requires-Dist: pyopenssl>=20.0.0; extra == "pyopenssl" +Provides-Extra: pyjwt +Requires-Dist: pyjwt>=2.0; extra == "pyjwt" +Provides-Extra: reauth +Requires-Dist: pyu2f>=0.1.5; extra == "reauth" +Provides-Extra: requests +Requires-Dist: requests<3.0.0,>=2.20.0; extra == "requests" +Provides-Extra: testing +Requires-Dist: grpcio; extra == "testing" +Requires-Dist: flask; extra == "testing" +Requires-Dist: freezegun; extra == "testing" +Requires-Dist: pyjwt>=2.0; extra == "testing" +Requires-Dist: pytest; extra == "testing" +Requires-Dist: pytest-cov; extra == "testing" +Requires-Dist: pytest-localserver; extra == "testing" +Requires-Dist: pyopenssl>=20.0.0; extra == "testing" +Requires-Dist: pyu2f>=0.1.5; extra == "testing" +Requires-Dist: responses; extra == "testing" +Requires-Dist: urllib3; extra == "testing" +Requires-Dist: packaging; extra == "testing" +Requires-Dist: aiohttp<4.0.0,>=3.8.0; extra == "testing" +Requires-Dist: requests<3.0.0,>=2.20.0; extra == "testing" +Requires-Dist: aioresponses; extra == "testing" +Requires-Dist: pytest-asyncio; extra == "testing" +Requires-Dist: pyopenssl<24.3.0; extra == "testing" +Requires-Dist: aiohttp<3.10.0; extra == "testing" +Provides-Extra: urllib3 +Requires-Dist: urllib3; extra == "urllib3" +Requires-Dist: packaging; extra == "urllib3" +Provides-Extra: rsa +Requires-Dist: rsa<5,>=3.1.4; extra == "rsa" +Dynamic: author +Dynamic: author-email +Dynamic: classifier +Dynamic: description +Dynamic: home-page +Dynamic: keywords +Dynamic: license +Dynamic: license-file +Dynamic: provides-extra +Dynamic: requires-dist +Dynamic: requires-python +Dynamic: summary + +Google Auth Python Library +========================== + +|pypi| + +This library simplifies using Google's various server-to-server authentication +mechanisms to access Google APIs. + +.. |pypi| image:: https://img.shields.io/pypi/v/google-auth.svg + :target: https://pypi.python.org/pypi/google-auth + +Installing +---------- + +You can install using `pip`_:: + + $ pip install google-auth + +.. _pip: https://pip.pypa.io/en/stable/ + +For more information on setting up your Python development environment, please refer to `Python Development Environment Setup Guide`_ for Google Cloud Platform. + +.. _`Python Development Environment Setup Guide`: https://cloud.google.com/python/docs/setup + +Extras +------ + +google-auth has few extras that you can install. For example:: + + $ pip install google-auth[pyopenssl] + +Note that the extras pyopenssl and enterprise_cert should not be used together because they use conflicting versions of `cryptography`_. + +.. _`cryptography`: https://cryptography.io/en/latest/ + +Supported Python Versions +^^^^^^^^^^^^^^^^^^^^^^^^^ +Python >= 3.10 + +Unsupported Python Versions +^^^^^^^^^^^^^^^^^^^^^^^^^^^ +- Python == 2.7: The last version of this library with support for Python 2.7 + was `google.auth == 1.34.0`. + +- Python 3.5: The last version of this library with support for Python 3.5 + was `google.auth == 1.23.0`. + +- Python 3.6: The last version of this library with support for Python 3.6 + was `google.auth == 2.22.0`. + +- Python 3.7: The last version of this library with support for Python 3.7 + was `google.auth == 2.45.0`. + + +Documentation +------------- + +Google Auth Python Library has usage and reference documentation at https://googleapis.dev/python/google-auth/latest/index.html. + +Current Maintainers +------------------- +- googleapis-auth@google.com + +Authors +------- + +- `@theacodes `_ (Thea Flowers) +- `@dhermes `_ (Danny Hermes) +- `@lukesneeringer `_ (Luke Sneeringer) +- `@busunkim96 `_ (Bu Sun Kim) + +Contributing +------------ + +Contributions to this library are always welcome and highly encouraged. + +See `CONTRIBUTING.rst`_ for more information on how to get started. + +.. _CONTRIBUTING.rst: https://github.com/googleapis/google-auth-library-python/blob/main/CONTRIBUTING.rst + +License +------- + +Apache 2.0 - See `the LICENSE`_ for more information. + +.. _the LICENSE: https://github.com/googleapis/google-auth-library-python/blob/main/LICENSE diff --git a/intelliaide/vendor/google_auth-2.53.0.dist-info/RECORD b/intelliaide/vendor/google_auth-2.53.0.dist-info/RECORD new file mode 100644 index 0000000..6f78ce5 --- /dev/null +++ b/intelliaide/vendor/google_auth-2.53.0.dist-info/RECORD @@ -0,0 +1,165 @@ +google/auth/__init__.py,sha256=Aq1Iysvxvj5sqbsNHPFR5CMbBJs6JCKCCmn5JtNaKQY,1064 +google/auth/__pycache__/__init__.cpython-312.pyc,, +google/auth/__pycache__/_agent_identity_utils.cpython-312.pyc,, +google/auth/__pycache__/_cache.cpython-312.pyc,, +google/auth/__pycache__/_cloud_sdk.cpython-312.pyc,, +google/auth/__pycache__/_credentials_async.cpython-312.pyc,, +google/auth/__pycache__/_credentials_base.cpython-312.pyc,, +google/auth/__pycache__/_default.cpython-312.pyc,, +google/auth/__pycache__/_default_async.cpython-312.pyc,, +google/auth/__pycache__/_exponential_backoff.cpython-312.pyc,, +google/auth/__pycache__/_helpers.cpython-312.pyc,, +google/auth/__pycache__/_jwt_async.cpython-312.pyc,, +google/auth/__pycache__/_oauth2client.cpython-312.pyc,, +google/auth/__pycache__/_refresh_worker.cpython-312.pyc,, +google/auth/__pycache__/_regional_access_boundary_utils.cpython-312.pyc,, +google/auth/__pycache__/_service_account_info.cpython-312.pyc,, +google/auth/__pycache__/api_key.cpython-312.pyc,, +google/auth/__pycache__/app_engine.cpython-312.pyc,, +google/auth/__pycache__/aws.cpython-312.pyc,, +google/auth/__pycache__/credentials.cpython-312.pyc,, +google/auth/__pycache__/downscoped.cpython-312.pyc,, +google/auth/__pycache__/environment_vars.cpython-312.pyc,, +google/auth/__pycache__/exceptions.cpython-312.pyc,, +google/auth/__pycache__/external_account.cpython-312.pyc,, +google/auth/__pycache__/external_account_authorized_user.cpython-312.pyc,, +google/auth/__pycache__/iam.cpython-312.pyc,, +google/auth/__pycache__/identity_pool.cpython-312.pyc,, +google/auth/__pycache__/impersonated_credentials.cpython-312.pyc,, +google/auth/__pycache__/jwt.cpython-312.pyc,, +google/auth/__pycache__/metrics.cpython-312.pyc,, +google/auth/__pycache__/pluggable.cpython-312.pyc,, +google/auth/__pycache__/version.cpython-312.pyc,, +google/auth/_agent_identity_utils.py,sha256=x73jZ_QPtJGE7Bp1-gpi9PJq5DNmCQbnkUjrK8acqnI,11517 +google/auth/_cache.py,sha256=9xbqdkwFa-9W5tzb2WM_bNzFwZ6hKazMcsPugqHuAyA,1863 +google/auth/_cloud_sdk.py,sha256=pwX6vZhYqEpu3vkSNxJ2MI5wMT5t-xX7273QqCtWFZk,5211 +google/auth/_credentials_async.py,sha256=bHB28wMULOIEMmYqKEOU06A4co7uIXPcnfVC_TaA6KY,6802 +google/auth/_credentials_base.py,sha256=KxdCZyoFyvrfWhJbNnuYkpUhxs0bmbxYvcH8-xp5hUs,2692 +google/auth/_default.py,sha256=FqwhclHCgKNZz1p-lMREv6mY9lKTn2le6CPxckGitxk,31271 +google/auth/_default_async.py,sha256=ZkU8jig_lEb_IpsYT8DBzNPLRGgfYNb_QbL0S3lpjks,11848 +google/auth/_exponential_backoff.py,sha256=qxA9ek80rBkoARx0Egl2b1MlYU0D-pQNVqgCmUh-lgU,5372 +google/auth/_helpers.py,sha256=aLk0KE2T8XWepwngfPGqSANOFB0a4Pym80FCmTdFSco,17363 +google/auth/_jwt_async.py,sha256=5mGab5CkdnBMkQkS4mtNkwFkktp1jBw6G1sYQk8bYKY,5972 +google/auth/_oauth2client.py,sha256=9pBShk1ekwkPNoD5WoQJNQHHD3luNfzpBVoQJo8n1rc,5875 +google/auth/_refresh_worker.py,sha256=zT2jj-PjPtjF3Bqg_n4t1CdL32yBVEUhPKZQwoNu-Xg,3379 +google/auth/_regional_access_boundary_utils.py,sha256=jp7vzofME65Ksn9l6ovqS_aVIob-11LYgvNlruVQFfA,15414 +google/auth/_service_account_info.py,sha256=EdOEZql9_mG2cJ54KmL3Q5jO3C3wcadwlCObg4gKjus,2813 +google/auth/aio/__init__.py,sha256=e3ToAxXNHhqJLBgW8B66650xdqrTCZDLcwP2p5DhCPM,869 +google/auth/aio/__pycache__/__init__.cpython-312.pyc,, +google/auth/aio/__pycache__/_helpers.cpython-312.pyc,, +google/auth/aio/__pycache__/credentials.cpython-312.pyc,, +google/auth/aio/_helpers.py,sha256=glCa_-GYxDrcPBFt80LBhMz_V7vLjxAEEWfOZB8lwT0,2334 +google/auth/aio/credentials.py,sha256=lXY0_SJ9c36Mzp47fN4a8JT5HfNzFQtIIwsZEwzoDR4,5273 +google/auth/aio/transport/__init__.py,sha256=8dQWHpube1IeWw02q6AvMRTM5V_2iN4y3UMLenbmUUQ,4692 +google/auth/aio/transport/__pycache__/__init__.cpython-312.pyc,, +google/auth/aio/transport/__pycache__/aiohttp.cpython-312.pyc,, +google/auth/aio/transport/__pycache__/mtls.cpython-312.pyc,, +google/auth/aio/transport/__pycache__/sessions.cpython-312.pyc,, +google/auth/aio/transport/aiohttp.py,sha256=Gweuf3GcNG1_1_GmPpZvcFRXMYvE3MgSPT7XDZSlSAc,7552 +google/auth/aio/transport/mtls.py,sha256=Xpd57h-DHmgjv8dQdjsqxj-ftr_pfhWAWY5_gYJKgPw,6801 +google/auth/aio/transport/sessions.py,sha256=Xrhnl9cLP5egcoQuG8ensQBmCu454j7k1mlpDNLYPzc,23961 +google/auth/api_key.py,sha256=PeieTYceHJIFCo0zQo1EA9NEDL_Ie6S78qmD-6Ig17s,2583 +google/auth/app_engine.py,sha256=mQ7NrKQYd3LiZ7F_ttlqs9Tjf4EEtJNHTPfpixCycW0,6096 +google/auth/aws.py,sha256=aVSDOH2pnECuEYjxn_pHGu8447xyB3P9sAiCQem4ePo,34573 +google/auth/compute_engine/__init__.py,sha256=BqeTka-oyHFATkys3SGKRlOyWQ8mVV0vVaP2hOwV4Qw,910 +google/auth/compute_engine/__pycache__/__init__.cpython-312.pyc,, +google/auth/compute_engine/__pycache__/_metadata.cpython-312.pyc,, +google/auth/compute_engine/__pycache__/_mtls.cpython-312.pyc,, +google/auth/compute_engine/__pycache__/credentials.cpython-312.pyc,, +google/auth/compute_engine/_metadata.py,sha256=g44MLHIWkwM2g59-YEWsbSASJCfLRR6JdJO1H9xDciw,17859 +google/auth/compute_engine/_mtls.py,sha256=8EQrVyWVQPuAnuG8C4uq29OaerpsmFxGXruw3Rfuxco,5720 +google/auth/compute_engine/credentials.py,sha256=MsFquoNefl-Hcl7ZlzmDnNqnu8_IFhF0oUOLHHmVeHo,21944 +google/auth/credentials.py,sha256=KqtYVGHpPJh6BEeiIFvhHJZ6W1s1JpkI6pU0VT4M5-I,29028 +google/auth/crypt/__init__.py,sha256=ukDmKrdUmHqGc5rDLcoel_TKXdV5wX05r5Gqi9hnWBE,3144 +google/auth/crypt/__pycache__/__init__.cpython-312.pyc,, +google/auth/crypt/__pycache__/_cryptography_rsa.cpython-312.pyc,, +google/auth/crypt/__pycache__/_helpers.cpython-312.pyc,, +google/auth/crypt/__pycache__/_python_rsa.cpython-312.pyc,, +google/auth/crypt/__pycache__/base.cpython-312.pyc,, +google/auth/crypt/__pycache__/es.cpython-312.pyc,, +google/auth/crypt/__pycache__/es256.cpython-312.pyc,, +google/auth/crypt/__pycache__/rsa.cpython-312.pyc,, +google/auth/crypt/_cryptography_rsa.py,sha256=o2QTRkfDRLtEBiq-fbpbTWypvxaxUDwzlx2NpXG9o0w,5158 +google/auth/crypt/_helpers.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +google/auth/crypt/_python_rsa.py,sha256=Exqz9OgDm-3JHHd636gnAdXdcH6pjDWBNJz21uDRnUE,6747 +google/auth/crypt/base.py,sha256=3CJrnQsppR6h-WnTRqSrt1hPEQVkHcwNIVJ_B5M00hY,4190 +google/auth/crypt/es.py,sha256=3eHSDU_lh95pMYE3eIGErGHPETqsRCHeK2VtQnqVPk8,8019 +google/auth/crypt/es256.py,sha256=cFaDuQRdXx3f_aVy-HH0VQ6G49VNSAhB04jnbjyxHNI,1454 +google/auth/crypt/rsa.py,sha256=coLr0FFyuDAmDaoXefpriH_naAJbmgwFORUDVYGdBYU,4770 +google/auth/downscoped.py,sha256=KmmC8lbBWUFUsIYt1VpcbTXs3yYJYXteH19qdZQgobA,21793 +google/auth/environment_vars.py,sha256=elIkXWjxdlOsf-CQid8UFcXcAIHtg17wi6otcveYCsQ,5163 +google/auth/exceptions.py,sha256=8oEeB_1UirJIyBoglQRpCFjCOcxcTaLr6EpBrrxjeEs,3193 +google/auth/external_account.py,sha256=BjNWaDWxOCCPHAoxOcuTWTuY5T-Arqkh2aRlUWY640E,31161 +google/auth/external_account_authorized_user.py,sha256=4_skldJ-9v5pG_fMhbEJeSMkvsasREbiQtD_-v5PPYE,17725 +google/auth/iam.py,sha256=Fc-wdlFaixOi1lKnneSNItQA29_xkqH7vB-P-qOS2h0,5607 +google/auth/identity_pool.py,sha256=doIKIMU7_c9GbDrXqv12A1BS9Bb6AgL-uSt72QpsjuQ,24697 +google/auth/impersonated_credentials.py,sha256=QRGtYzyRyJKgTsZOJIK7434HAARRRvyOIE_4Ysm8LJQ,27592 +google/auth/jwt.py,sha256=CxVlg9VxMbgdSaT7_4hISDNkL9eBVNi4jCmpFJXiOJM,31178 +google/auth/metrics.py,sha256=usjITvTFmO0YogJJDi31_hgl2kgENuKMfgWy6LTGhxg,5616 +google/auth/pluggable.py,sha256=N9lxIiiegT6DIv3poc5B3B-6OlVmFRZr-AmNO6Xzid4,18371 +google/auth/py.typed,sha256=l05_LTgi3oy-einKBrw66s6aavgzG2o-SekKPOY3ayM,74 +google/auth/transport/__init__.py,sha256=vTdWUDBCXWF6wk3Xzu7L5I1lbtGYTxONi-IKYOmDdFM,3654 +google/auth/transport/__pycache__/__init__.cpython-312.pyc,, +google/auth/transport/__pycache__/_aiohttp_requests.cpython-312.pyc,, +google/auth/transport/__pycache__/_custom_tls_signer.cpython-312.pyc,, +google/auth/transport/__pycache__/_http_client.cpython-312.pyc,, +google/auth/transport/__pycache__/_mtls_helper.cpython-312.pyc,, +google/auth/transport/__pycache__/_requests_base.cpython-312.pyc,, +google/auth/transport/__pycache__/grpc.cpython-312.pyc,, +google/auth/transport/__pycache__/mtls.cpython-312.pyc,, +google/auth/transport/__pycache__/requests.cpython-312.pyc,, +google/auth/transport/__pycache__/urllib3.cpython-312.pyc,, +google/auth/transport/_aiohttp_requests.py,sha256=aJNNT09VISGPwcGS8DVR8G1l_DeOvnlJ2Z7kcAjXs14,14819 +google/auth/transport/_custom_tls_signer.py,sha256=ilLlKFNognkvOWcnlYAWmUIUo9YhSrTSAKLa05zQ8Do,9989 +google/auth/transport/_http_client.py,sha256=_lE2TaQOb2hZq5OrblNAYbpZzLX18LGXSyaNJuXHJ2w,3798 +google/auth/transport/_mtls_helper.py,sha256=PcYF7siMNiHMce_tXZa_oAgMaON3mBkJqqF5SqVXhm0,19684 +google/auth/transport/_requests_base.py,sha256=4y0tTMR_hPGeAmBSyCU6_moh99ZxJZ4CF79E2s-t7TA,1657 +google/auth/transport/grpc.py,sha256=cRYju1kWZ2YE5IlagRMh9trAW8J5kmmIrBmyZW7IGik,13742 +google/auth/transport/mtls.py,sha256=dfOH5kaz4R9pNdm5l-cRQc1PfpGldpS3FBwdSF72KfY,5163 +google/auth/transport/requests.py,sha256=--9PLv4Jaiz1HiIzl_tVKJ0Z1k-3XPQ3HBsXVBaIf4U,24332 +google/auth/transport/urllib3.py,sha256=bmYdTtBa3Yni5Q1pvpqbuHwF70g0gz7RfNsR6hDFz7g,18349 +google/auth/version.py,sha256=xf23cqk02vMB1EsBABhBNmv5OM15QNA1Fh4ha5h68Ww,598 +google/oauth2/__init__.py,sha256=iDyTpxuh864rLf4YyINgeO4wMJLQ53EUMPJpiw1GA3U,619 +google/oauth2/__pycache__/__init__.cpython-312.pyc,, +google/oauth2/__pycache__/_client.cpython-312.pyc,, +google/oauth2/__pycache__/_client_async.cpython-312.pyc,, +google/oauth2/__pycache__/_credentials_async.cpython-312.pyc,, +google/oauth2/__pycache__/_id_token_async.cpython-312.pyc,, +google/oauth2/__pycache__/_reauth_async.cpython-312.pyc,, +google/oauth2/__pycache__/_service_account_async.cpython-312.pyc,, +google/oauth2/__pycache__/challenges.cpython-312.pyc,, +google/oauth2/__pycache__/credentials.cpython-312.pyc,, +google/oauth2/__pycache__/gdch_credentials.cpython-312.pyc,, +google/oauth2/__pycache__/id_token.cpython-312.pyc,, +google/oauth2/__pycache__/reauth.cpython-312.pyc,, +google/oauth2/__pycache__/service_account.cpython-312.pyc,, +google/oauth2/__pycache__/sts.cpython-312.pyc,, +google/oauth2/__pycache__/utils.cpython-312.pyc,, +google/oauth2/__pycache__/webauthn_handler.cpython-312.pyc,, +google/oauth2/__pycache__/webauthn_handler_factory.cpython-312.pyc,, +google/oauth2/__pycache__/webauthn_types.cpython-312.pyc,, +google/oauth2/_client.py,sha256=2bOKX6ET_CF6kpa6bim8XKtFmzkH99KTeDfuhQfyPHU,22710 +google/oauth2/_client_async.py,sha256=nXLgAI5KVPRR6w7-5cjB8jc5V59hd-gpPu9OR7mElCw,10170 +google/oauth2/_credentials_async.py,sha256=hUrucQkcYuYlyCdHMci8tzaVncnjQlFc2sAfNu5Dt8k,4474 +google/oauth2/_id_token_async.py,sha256=ot4_u-rhA22TufWOAR5Mpaua7Q2aAtN4q_kJmj-YnII,10171 +google/oauth2/_reauth_async.py,sha256=XK63x1CCWTBX4TG_mwc1WnRmB3vG0JRZ5F-dNfxodcs,11715 +google/oauth2/_service_account_async.py,sha256=_epalmLbNizOHgHcLZXSoK6_Z5lTk1OiIdEBioBGB5E,5878 +google/oauth2/challenges.py,sha256=Pdy8IpwGJstz890Ctz_xZvhUwIlTvKibSnmHNbRBZd0,10405 +google/oauth2/credentials.py,sha256=BhgwiXwTPy42462fpXp8-A39XkEqLJXV9WCRbzOEUpw,25880 +google/oauth2/gdch_credentials.py,sha256=CY6iPnPuc2OCIe1Zujwg1Mu9QSl1iGJqGOy6TkUleHw,9007 +google/oauth2/id_token.py,sha256=sCPdYw6LxcLgDqUvKygmdcrIGzZFGGXoARRYI-BzZ_U,13710 +google/oauth2/py.typed,sha256=I0muXRRdbdpJoZ_VyheisiTTYcmjTAitQpNvuuh6fMw,76 +google/oauth2/reauth.py,sha256=CkkDpv79_8SsQDromAyI3sa2lS3V_M7bSZqWFZj30nw,12878 +google/oauth2/service_account.py,sha256=51OAO215HosNkPIHNa8HiCf7HNxW6099T0yh3d4HQLY,33572 +google/oauth2/sts.py,sha256=df-lzhe8cBKr2O-tWZTaWdgYonKm1J9HI5Cz_AfW1hU,7728 +google/oauth2/utils.py,sha256=4crAdpKbDtobpQfXJc3uF6Zm6F3IzffvRSo-9h_515w,6315 +google/oauth2/webauthn_handler.py,sha256=lg_5mHowRJ0kx2hluMYhcdiFctHZyi8CFc9fT8CkQwA,2743 +google/oauth2/webauthn_handler_factory.py,sha256=soE5cokZ3pLNbBo1HC6F1N-N-I-ir-DGlD0trGPCpBs,429 +google/oauth2/webauthn_types.py,sha256=IHdqUe-EWOU-CmyLnHLniqc7vGHZ8HpavB0dcjn7Zl8,5386 +google_auth-2.53.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +google_auth-2.53.0.dist-info/METADATA,sha256=g-CiudWTa6LXgbcpO-btaGcArTRVrdYcaOHgd5--bkk,5536 +google_auth-2.53.0.dist-info/RECORD,, +google_auth-2.53.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +google_auth-2.53.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91 +google_auth-2.53.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357 +google_auth-2.53.0.dist-info/top_level.txt,sha256=_1QvSJIhFAGfxb79D6DhB7SUw2X6T4rwnz_LLrbcD3c,7 diff --git a/intelliaide/vendor/google_auth-2.53.0.dist-info/REQUESTED b/intelliaide/vendor/google_auth-2.53.0.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/intelliaide/vendor/google_auth-2.53.0.dist-info/WHEEL b/intelliaide/vendor/google_auth-2.53.0.dist-info/WHEEL new file mode 100644 index 0000000..14a883f --- /dev/null +++ b/intelliaide/vendor/google_auth-2.53.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (82.0.1) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/intelliaide/vendor/google_auth-2.53.0.dist-info/licenses/LICENSE b/intelliaide/vendor/google_auth-2.53.0.dist-info/licenses/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/intelliaide/vendor/google_auth-2.53.0.dist-info/licenses/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/intelliaide/vendor/google_auth-2.53.0.dist-info/top_level.txt b/intelliaide/vendor/google_auth-2.53.0.dist-info/top_level.txt new file mode 100644 index 0000000..cb42911 --- /dev/null +++ b/intelliaide/vendor/google_auth-2.53.0.dist-info/top_level.txt @@ -0,0 +1 @@ +google diff --git a/intelliaide/vendor/idna-3.16.dist-info/INSTALLER b/intelliaide/vendor/idna-3.16.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/intelliaide/vendor/idna-3.16.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/intelliaide/vendor/idna-3.16.dist-info/METADATA b/intelliaide/vendor/idna-3.16.dist-info/METADATA new file mode 100644 index 0000000..9a2b49a --- /dev/null +++ b/intelliaide/vendor/idna-3.16.dist-info/METADATA @@ -0,0 +1,164 @@ +Metadata-Version: 2.4 +Name: idna +Version: 3.16 +Summary: Internationalized Domain Names in Applications (IDNA) +Author-email: Kim Davies +Requires-Python: >=3.9 +Description-Content-Type: text/markdown +License-Expression: BSD-3-Clause +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Intended Audience :: System Administrators +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.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 :: 3.14 +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 +License-File: LICENSE.md +Requires-Dist: ruff >= 0.6.2 ; extra == "all" +Requires-Dist: mypy >= 1.11.2 ; extra == "all" +Requires-Dist: pytest >= 8.3.2 ; extra == "all" +Project-URL: Changelog, https://github.com/kjd/idna/blob/master/HISTORY.md +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 [Internationalized Domain Names in Applications +(IDNA)](https://tools.ietf.org/html/rfc5891) and [Unicode IDNA +Compatibility Processing](https://unicode.org/reports/tr46/). It +supersedes the standard library's `encodings.idna`, which only +implements the 2003 specification, offering broader script coverage and +limiting domains with known security vulnerabilities. + +## Usage + +Package may be installed from [PyPI](https://pypi.org/project/idna/) via +the typical methods (e.g. `python3 -m pip install idna`) + +For typical usage, the `encode` and `decode` functions will take a +domain name argument and perform a conversion to ASCII-compatible encoding +(known as A-labels), or to Unicode strings (known as U-labels) +respectively. + +```pycon +>>> import idna +>>> idna.encode('ドメイン.テスト') +b'xn--eckwd4c7c.xn--zckzah' +>>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) +ドメイン.テスト +``` + +Conversions can be applied at a per-label basis using the `ulabel` or +`alabel` functions for specialized use cases. + + +### Compatibility Mapping (UTS #46) + +This library provides support for [Unicode IDNA Compatibility +Processing](https://unicode.org/reports/tr46/) which normalizes input from +different potential ways a user may input a domain prior to performing the IDNA +conversion operations. This functionality, known as a +[mapping](https://tools.ietf.org/html/rfc5895), is considered by the +specification to be a local user-interface issue distinct from IDNA +conversion functionality. + +For example, "Königsgäßchen" is not a permissible label as capital letters +are not allowed. UTS 46 will convert this into lower case prior to applying +the IDNA conversion. + +```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' +>>> idna.decode('xn--knigsgchen-b4a3dun') +'königsgäßchen' +``` + + +## Exceptions + +All errors raised during conversion derive from the `idna.IDNAError` +base class. The more specific exceptions are: + +* `idna.IDNABidiError` — raised when a label contains an illegal + combination of left-to-right and right-to-left characters. +* `idna.InvalidCodepoint` — raised when a label contains a codepoint + that is INVALID for IDNA. +* `idna.InvalidCodepointContext` — raised when a CONTEXTO or CONTEXTJ + codepoint appears in a position whose contextual requirements are + not satisfied. + + +## Command-line tool + +The package supports command-line usage to convert domain names +between their Unicode and ASCII-compatible forms. It can be run either +as a module (`python3 -m idna`) or, once installed (such as with `uv +tool` or `pipx`), via the `idna` script: + +```bash +$ uv tool install idna +$ idna xn--e1afmkfd.xn--p1ai +пример.рф +$ idna пример.рф +xn--e1afmkfd.xn--p1ai +``` + +With no mode flag the direction is chosen automatically: inputs +containing an `xn--` label are decoded, anything else is encoded. Pass +`-e`/`--encode` or `-d`/`--decode` to force a specific direction. + +Multiple domains may be supplied at once, either as positional arguments +or by piping one domain per line on standard input. When more than +one domain is supplied without explicitly asking to encode or decode, +the direction is picked from the first input and that mode is applied +to every remaining input. Use `-e`/`--encode` or `-d`/`--decode` to +override the heuristic if the first input is ambiguous. + +UTS #46 mapping is applied by default, which lets the tool accept +inputs that aren't strictly valid IDNA 2008 by normalising them first: + +```bash +$ idna ΠΑΡΆΔΕΙΓΜΑ.ΕΛ +xn--hxajbheg2az3al.xn--qxam +``` + +Pass `--strict` to disable UTS #46 and apply IDNA 2008 rules verbatim; +the same input will then be rejected. + +Conversion failures are reported on stderr together with the +offending input; processing continues with the remaining domains and +the tool exits with a non-zero status if any conversion failed. + + +## Additional Notes + +* **Version support**. This library supports Python 3.9 and higher. + As this library serves as a low-level toolkit for a variety of + applications, we strive to support all versions of Python that are + not beyond end-of-life. + +* **Emoji**. It is an occasional request to support emoji domains in + this library. Encoding of symbols like emoji is expressly prohibited by + the IDNA technical standard, and emoji domains are broadly phased + out across the domain industry due to associated security risks. + +* **Regenerating lookup tables**. The IDNA and UTS 46 functionality + relies upon pre-calculated lookup tables, generated using the + `idna-data` script in [`tools/`](tools/README.md). + diff --git a/intelliaide/vendor/idna-3.16.dist-info/RECORD b/intelliaide/vendor/idna-3.16.dist-info/RECORD new file mode 100644 index 0000000..91d62f1 --- /dev/null +++ b/intelliaide/vendor/idna-3.16.dist-info/RECORD @@ -0,0 +1,28 @@ +../../bin/idna,sha256=ik39X3QB7MIwNBxROWFOwpABsPUEqsfd8XLV5GMhQaA,219 +idna-3.16.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +idna-3.16.dist-info/METADATA,sha256=sjAPRjXAVVGHZEfKUICACY75c0RMTvuv2vzrDRxQgo4,6369 +idna-3.16.dist-info/RECORD,, +idna-3.16.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82 +idna-3.16.dist-info/entry_points.txt,sha256=7H3nGOHap3jnLE5e7q7Ywr9Vq8axB7WIj5-C_4N2vhw,38 +idna-3.16.dist-info/licenses/LICENSE.md,sha256=GppPDj1HmickDd1ZqRN6ZqtKD539yMphiMwL_YUYfwQ,1541 +idna/__init__.py,sha256=MPqNDLZbXqGaNdXxAFhiqFPKEQXju2jNQhCey6-5eJM,868 +idna/__main__.py,sha256=4JMK66Wj4uLZTKbF-sT3LAxOsr6buig77PmOkJCRRxw,83 +idna/__pycache__/__init__.cpython-312.pyc,, +idna/__pycache__/__main__.cpython-312.pyc,, +idna/__pycache__/cli.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/cli.py,sha256=swqJLMNc8Uzs60KziNpbWnHuqlG3WRQwJSbo4n8xDAo,4139 +idna/codec.py,sha256=JRbo-f7pEkLdWeiH89Z72UR4VBYhvKDFrQBeNX6sRDE,5040 +idna/compat.py,sha256=AepA39ceRHxkfHP41-FvKW5Ki-f4PfUZ90RUMlCNdmo,1353 +idna/core.py,sha256=WSSrhVyOHcFYvw1rXYLayVxORJ0HKF83bORzKhKyu3E,22863 +idna/idnadata.py,sha256=ArBb71aYVqU5sg_tsQJPzAGvxbAhJ9c28laSj-SuLwU,92575 +idna/intranges.py,sha256=g49scLSkqJtAhLmOODa7hVHriSjmb60tiTsEoocJdBI,1851 +idna/package_data.py,sha256=m9fnBBCnbqf9LnD9VKuYBiD4WqYKT7KssKSQyER4MqE,21 +idna/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +idna/uts46data.py,sha256=4J1cPwBRfKPlxWT6tNhzkq-et4eyoF0uoNbfvkAuiJE,202674 diff --git a/intelliaide/vendor/idna-3.16.dist-info/WHEEL b/intelliaide/vendor/idna-3.16.dist-info/WHEEL new file mode 100644 index 0000000..d8b9936 --- /dev/null +++ b/intelliaide/vendor/idna-3.16.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: flit 3.12.0 +Root-Is-Purelib: true +Tag: py3-none-any diff --git a/intelliaide/vendor/idna-3.16.dist-info/entry_points.txt b/intelliaide/vendor/idna-3.16.dist-info/entry_points.txt new file mode 100644 index 0000000..59ca7ac --- /dev/null +++ b/intelliaide/vendor/idna-3.16.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +[console_scripts] +idna=idna.cli:main + diff --git a/intelliaide/vendor/idna-3.16.dist-info/licenses/LICENSE.md b/intelliaide/vendor/idna-3.16.dist-info/licenses/LICENSE.md new file mode 100644 index 0000000..f706835 --- /dev/null +++ b/intelliaide/vendor/idna-3.16.dist-info/licenses/LICENSE.md @@ -0,0 +1,31 @@ +BSD 3-Clause License + +Copyright (c) 2013-2026, 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/intelliaide/vendor/idna/__init__.py b/intelliaide/vendor/idna/__init__.py new file mode 100644 index 0000000..cfdc030 --- /dev/null +++ b/intelliaide/vendor/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/intelliaide/vendor/idna/__main__.py b/intelliaide/vendor/idna/__main__.py new file mode 100644 index 0000000..dbdd066 --- /dev/null +++ b/intelliaide/vendor/idna/__main__.py @@ -0,0 +1,6 @@ +import sys + +from .cli import main + +if __name__ == "__main__": + sys.exit(main()) diff --git a/intelliaide/vendor/idna/cli.py b/intelliaide/vendor/idna/cli.py new file mode 100644 index 0000000..4acda2c --- /dev/null +++ b/intelliaide/vendor/idna/cli.py @@ -0,0 +1,128 @@ +"""Command-line interface for the :mod:`idna` package. + +Invoked via ``python -m idna``. See :func:`main` for the entry point. +""" + +import argparse +import sys +from collections.abc import Iterable +from itertools import chain +from typing import IO, Optional + +from . import IDNAError, decode, encode +from .core import _alabel_prefix, _unicode_dots_re +from .package_data import __version__ + + +def _looks_like_alabel(s: str) -> bool: + """Return True if any label in ``s`` carries the ``xn--`` ACE prefix.""" + prefix = _alabel_prefix.decode("ascii") + return any(label.lower().startswith(prefix) for label in _unicode_dots_re.split(s)) + + +def _build_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + prog="python -m idna", + description=( + "Convert a domain name between its Unicode (U-label) and " + "ASCII-compatible (A-label) forms. With no mode flag, the " + "direction is chosen from the first input — if it contains " + "an xn-- label the stream is decoded, otherwise it is " + "encoded — and the same mode is applied to every remaining " + "input. UTS #46 mapping is applied by default; pass " + "--strict to disable it. When no domains are given on the " + "command line and stdin is piped, one domain per line is " + "read from stdin." + ), + ) + mode = parser.add_mutually_exclusive_group() + mode.add_argument( + "-e", + "--encode", + dest="mode", + action="store_const", + const="encode", + help="Encode the input to its ASCII A-label form.", + ) + mode.add_argument( + "-d", + "--decode", + dest="mode", + action="store_const", + const="decode", + help="Decode the input from its ASCII A-label form.", + ) + parser.add_argument( + "--strict", + action="store_true", + help="Disable the default UTS #46 mapping and apply IDNA 2008 rules verbatim.", + ) + parser.add_argument( + "--version", + action="version", + version=f"idna {__version__}", + ) + parser.add_argument( + "domain", + nargs="*", + help="One or more domain names to convert. Omit to read from stdin.", + ) + return parser + + +def _iter_stdin(stream: IO[str]) -> Iterable[str]: + """Yield non-empty stripped lines from ``stream``, ignoring blanks.""" + for line in stream: + stripped = line.strip() + if stripped: + yield stripped + + +def _convert_one(domain: str, mode: str, uts46: bool) -> bool: + """Convert ``domain`` and write the result; return ``False`` on failure.""" + try: + if mode == "decode": + print(decode(domain, uts46=uts46)) + else: + print(encode(domain, uts46=uts46).decode("ascii")) + except IDNAError as err: + print(f"idna: {mode} failed for {domain!r}: {err}", file=sys.stderr) + return False + return True + + +def main(argv: Optional[list[str]] = None) -> int: + """Entry point for ``python -m idna``. + + When more than one domain is supplied (via positional arguments or + piped stdin) and no mode flag is given, the first input determines + the direction and that mode is applied uniformly to the rest. + + :param argv: Argument list excluding the program name. Defaults to + :data:`sys.argv` when ``None``. + :returns: ``0`` on success, ``1`` if any conversion fails. + """ + parser = _build_parser() + args = parser.parse_args(argv) + uts46 = not args.strict + + if args.domain: + domains: Iterable[str] = args.domain + elif not sys.stdin.isatty(): + domains = _iter_stdin(sys.stdin) + else: + parser.error("a domain argument is required when stdin is a terminal") + + iterator = iter(domains) + first = next(iterator, None) + if first is None: + return 0 + + mode = args.mode or ("decode" if _looks_like_alabel(first) else "encode") + + results = [_convert_one(domain, mode, uts46) for domain in chain([first], iterator)] + return 0 if all(results) else 1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/intelliaide/vendor/idna/codec.py b/intelliaide/vendor/idna/codec.py new file mode 100644 index 0000000..83b42fe --- /dev/null +++ b/intelliaide/vendor/idna/codec.py @@ -0,0 +1,159 @@ +import codecs +from typing import Any, Optional + +from .core import IDNAError, _unicode_dots_re, alabel, decode, encode, ulabel + + +class Codec(codecs.Codec): + """Stateless IDNA 2008 codec. + + Implements the :class:`codecs.Codec` protocol so that the whole-domain + encoder (:func:`idna.encode`) and decoder (:func:`idna.decode`) are + accessible through the standard codec machinery as ``"idna2008"``. + + Only the ``"strict"`` error handler is supported; any other handler + raises :exc:`~idna.IDNAError`. + """ + + def encode(self, data: str, errors: str = "strict") -> tuple[bytes, int]: # ty: ignore[invalid-method-override] + if errors != "strict": + raise IDNAError(f'Unsupported error handling "{errors}"') + + if not data: + return b"", 0 + + return encode(data), len(data) + + def decode(self, data: bytes, errors: str = "strict") -> tuple[str, int]: # ty: ignore[invalid-method-override] + if errors != "strict": + raise IDNAError(f'Unsupported error handling "{errors}"') + + if not data: + return "", 0 + + return decode(data), len(data) + + +class IncrementalEncoder(codecs.BufferedIncrementalEncoder): + """Incremental IDNA 2008 encoder. + + Buffers a partial trailing label across calls until either the next + label separator is seen or ``final=True``, so that streamed input is + encoded one whole label at a time. Any of the four Unicode label + separators (``U+002E``, ``U+3002``, ``U+FF0E``, ``U+FF61``) ends a + label; the result always uses ``U+002E`` as the separator. + + Only the ``"strict"`` error handler is supported. + """ + + def _buffer_encode(self, data: str, errors: str, final: bool) -> tuple[bytes, int]: # ty: ignore[invalid-method-override] + if errors != "strict": + raise IDNAError(f'Unsupported error handling "{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): + """Incremental IDNA 2008 decoder. + + Buffers a partial trailing label across calls until either the next + label separator is seen or ``final=True``, so that streamed input is + decoded one whole label at a time. + + Only the ``"strict"`` error handler is supported. + """ + + def _buffer_decode(self, data: Any, errors: str, final: bool) -> tuple[str, int]: # ty: ignore[invalid-method-override] + if errors != "strict": + raise IDNAError(f'Unsupported error handling "{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]: + """Codec search function registered with :mod:`codecs`. + + Returns a :class:`codecs.CodecInfo` for the ``"idna2008"`` codec name + so that ``str.encode("idna2008")`` and ``bytes.decode("idna2008")`` + invoke the IDNA 2008 codec defined in this module. + + :param name: The codec name being looked up. + :returns: A :class:`codecs.CodecInfo` instance if ``name`` is + ``"idna2008"``, otherwise ``None``. + """ + if name != "idna2008": + return None + return codecs.CodecInfo( + name=name, + encode=Codec().encode, + decode=Codec().decode, # type: ignore + incrementalencoder=IncrementalEncoder, + incrementaldecoder=IncrementalDecoder, + streamwriter=StreamWriter, + streamreader=StreamReader, + ) + + +codecs.register(search_function) diff --git a/intelliaide/vendor/idna/compat.py b/intelliaide/vendor/idna/compat.py new file mode 100644 index 0000000..1d01e3d --- /dev/null +++ b/intelliaide/vendor/idna/compat.py @@ -0,0 +1,41 @@ +from typing import Any, Union + +from .core import decode, encode + + +def ToASCII(label: str) -> bytes: + """Compatibility shim for :rfc:`3490` ``ToASCII``. + + Delegates to :func:`idna.encode` (IDNA 2008). Provided to ease porting + of code written against the legacy :mod:`encodings.idna` API; new code + should call :func:`idna.encode` directly. + + :param label: The label or domain to encode. + :returns: The encoded form as ASCII :class:`bytes`. + """ + return encode(label) + + +def ToUnicode(label: Union[bytes, bytearray]) -> str: + """Compatibility shim for :rfc:`3490` ``ToUnicode``. + + Delegates to :func:`idna.decode` (IDNA 2008). Provided to ease porting + of code written against the legacy :mod:`encodings.idna` API; new code + should call :func:`idna.decode` directly. + + :param label: The label or domain to decode. + :returns: The decoded Unicode form. + """ + return decode(label) + + +def nameprep(s: Any) -> None: + """Stub for :rfc:`3491` Nameprep, which is not used by IDNA 2008. + + IDNA 2008 (:rfc:`5891`) replaces Nameprep with the per-codepoint + validity classes from :rfc:`5892`; this function exists only to + return a clear error if legacy code attempts to call it. + + :raises NotImplementedError: Always. + """ + raise NotImplementedError("IDNA 2008 does not utilise nameprep protocol") diff --git a/intelliaide/vendor/idna/core.py b/intelliaide/vendor/idna/core.py new file mode 100644 index 0000000..da45b2a --- /dev/null +++ b/intelliaide/vendor/idna/core.py @@ -0,0 +1,605 @@ +import bisect +import re +import unicodedata +import warnings +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]") + + +# Bidi category sets from RFC 5893, hoisted out of the per-codepoint loop +_bidi_rtl_first = frozenset({"R", "AL"}) +_bidi_rtl_categories = frozenset({"R", "AL", "AN"}) +_bidi_rtl_allowed = frozenset({"R", "AL", "AN", "EN", "ES", "CS", "ET", "ON", "BN", "NSM"}) +_bidi_rtl_valid_ending = frozenset({"R", "AL", "EN", "AN"}) +_bidi_rtl_numeric = frozenset({"AN", "EN"}) +_bidi_ltr_allowed = frozenset({"L", "EN", "ES", "CS", "ET", "ON", "BN", "NSM"}) +_bidi_ltr_valid_ending = frozenset({"L", "EN"}) +_bidi_joiner_l_or_d = frozenset({ord("L"), ord("D")}) +_bidi_joiner_r_or_d = frozenset({ord("R"), ord("D")}) + + +class IDNAError(UnicodeError): + """Base exception for all IDNA-encoding related problems""" + + +class IDNABidiError(IDNAError): + """Exception when bidirectional requirements are not satisfied""" + + +class InvalidCodepoint(IDNAError): + """Exception when a disallowed or unallocated codepoint is used""" + + +class InvalidCodepointContext(IDNAError): + """Exception when the codepoint is not valid in the context it is used""" + + +def _combining_class(cp: int) -> int: + v = unicodedata.combining(chr(cp)) + if v == 0 and 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 f"U+{s:04X}" + + +def valid_label_length(label: Union[bytes, str]) -> bool: + """Check that a label does not exceed the maximum permitted length. + + Per :rfc:`1035` (and :rfc:`5891` §4.2.4) a DNS label must not exceed + 63 octets. The argument may be either a :class:`str` (a U-label, where + length is measured in characters) or :class:`bytes` (an A-label, where + length is measured in octets). + + :param label: The label to check. + :returns: ``True`` if the label is within the length limit, otherwise + ``False``. + """ + return len(label) <= 63 + + +def valid_string_length(domain: Union[bytes, str], trailing_dot: bool) -> bool: + """Check that a full domain name does not exceed the maximum length. + + Per :rfc:`1035`, a domain name is limited to 253 octets when no trailing + dot is present, or 254 octets when one is included. + + :param domain: The full (possibly multi-label) domain name. + :param trailing_dot: ``True`` if ``domain`` includes a trailing ``.``. + :returns: ``True`` if the domain is within the length limit, otherwise + ``False``. + """ + return len(domain) <= (254 if trailing_dot else 253) + + +def check_bidi(label: str, check_ltr: bool = False) -> bool: + """Validate the Bidi Rule from :rfc:`5893` for a single label. + + The Bidi Rule constrains how bidirectional characters (Hebrew, Arabic, + etc.) may appear within a label. By default the check is only applied + when the label contains at least one right-to-left character (Unicode + bidirectional categories ``R``, ``AL``, or ``AN``); set ``check_ltr`` + to ``True`` to apply it to LTR-only labels as well. + + :param label: The label to validate, as a Unicode string. + :param check_ltr: If ``True``, apply the rules even when the label + contains no RTL characters. + :returns: ``True`` if the label satisfies the Bidi Rule. + :raises IDNABidiError: If any of Bidi Rule conditions 1-6 are violated, + or if the directional category of a codepoint cannot be determined. + """ + # 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(f"Unknown directionality in label {label!r} at position {idx}") + if direction in _bidi_rtl_categories: + bidi_label = True + if not bidi_label and not check_ltr: + return True + + # Bidi rule 1 + direction = unicodedata.bidirectional(label[0]) + if direction in _bidi_rtl_first: + rtl = True + elif direction == "L": + rtl = False + else: + raise IDNABidiError(f"First codepoint in label {label!r} must be directionality L, R or AL") + + 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 _bidi_rtl_allowed: + raise IDNABidiError(f"Invalid direction for codepoint at position {idx} in a right-to-left label") + # Bidi rule 3 + if direction in _bidi_rtl_valid_ending: + valid_ending = True + elif direction != "NSM": + valid_ending = False + # Bidi rule 4 + if direction in _bidi_rtl_numeric: + if not number_type: + number_type = direction + elif number_type != direction: + raise IDNABidiError("Can not mix numeral types in a right-to-left label") + else: + # Bidi rule 5 + if direction not in _bidi_ltr_allowed: + raise IDNABidiError(f"Invalid direction for codepoint at position {idx} in a left-to-right label") + # Bidi rule 6 + if direction in _bidi_ltr_valid_ending: + 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: + """Reject labels that begin with a combining mark. + + Per :rfc:`5891` §4.2.3.2 a label must not start with a character of + Unicode general category ``M`` (Mark). + + :param label: The label to check. + :returns: ``True`` if the first character is not a combining mark. + :raises IDNAError: If the label begins with a combining character. + """ + 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: + """Validate the hyphen restrictions for a label. + + Per :rfc:`5891` §4.2.3.1 a label must not start or end with a hyphen + (``U+002D``), and must not have hyphens in both the third and fourth + positions (the prefix reserved for A-labels). + + :param label: The label to check. + :returns: ``True`` if the hyphen restrictions are satisfied. + :raises IDNAError: If any of the hyphen restrictions are violated. + """ + 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: + """Require that a label is in Unicode Normalization Form C. + + :param label: The label to check. + :raises IDNAError: If ``label`` differs from its NFC normalisation. + """ + if unicodedata.normalize("NFC", label) != label: + raise IDNAError("Label must be in Normalization Form C") + + +def valid_contextj(label: str, pos: int) -> bool: + """Validate the CONTEXTJ rules from :rfc:`5892` Appendix A. + + These rules govern the contextual use of the joiner codepoints + ``U+200C`` (ZERO WIDTH NON-JOINER, Appendix A.1) and ``U+200D`` + (ZERO WIDTH JOINER, Appendix A.2) within a label. + + :param label: The label containing the codepoint. + :param pos: Index of the joiner codepoint within ``label``. + :returns: ``True`` if the codepoint at ``pos`` satisfies its CONTEXTJ + rule, ``False`` otherwise (including when the codepoint at + ``pos`` is not a recognised joiner). + :raises ValueError: If an adjacent codepoint has no Unicode name when + determining its combining class. + """ + cp_value = ord(label[pos]) + + if cp_value == 0x200C: + if pos > 0 and _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 + if joining_type in _bidi_joiner_l_or_d: + ok = True + break + 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 + if joining_type in _bidi_joiner_r_or_d: + ok = True + break + break + return ok + + if cp_value == 0x200D: + return pos > 0 and _combining_class(ord(label[pos - 1])) == _virama_combining_class + + return False + + +def valid_contexto(label: str, pos: int, exception: bool = False) -> bool: + """Validate the CONTEXTO rules from :rfc:`5892` Appendix A. + + Covers the contextual rules for codepoints such as MIDDLE DOT + (``U+00B7``), Greek lower numeral sign, Hebrew punctuation, Katakana + middle dot, and the Arabic-Indic / Extended Arabic-Indic digit ranges. + + :param label: The label containing the codepoint. + :param pos: Index of the codepoint within ``label``. + :param exception: Reserved for forward compatibility; currently unused. + :returns: ``True`` if the codepoint at ``pos`` satisfies its CONTEXTO + rule, ``False`` otherwise (including when the codepoint is not a + recognised CONTEXTO codepoint). + """ + cp_value = ord(label[pos]) + + if cp_value == 0x00B7: + return 0 < pos < len(label) - 1 and ord(label[pos - 1]) == 0x006C and ord(label[pos + 1]) == 0x006C + + if cp_value == 0x0375: + if pos < len(label) - 1 and len(label) > 1: + return _is_script(label[pos + 1], "Greek") + return False + + if cp_value in {0x05F3, 0x05F4}: + if pos > 0: + return _is_script(label[pos - 1], "Hebrew") + return False + + if 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 + + if 0x660 <= cp_value <= 0x669: + return not any(0x6F0 <= ord(cp) <= 0x06F9 for cp in label) + + if 0x6F0 <= cp_value <= 0x6F9: + return not any(0x660 <= ord(cp) <= 0x0669 for cp in label) + + return False + + +def check_label(label: Union[str, bytes, bytearray]) -> None: + """Run the full set of IDNA 2008 validity checks on a single label. + + Applies, in order: NFC normalisation (:func:`check_nfc`), hyphen + restrictions (:func:`check_hyphen_ok`), the no-leading-combiner rule + (:func:`check_initial_combiner`), per-codepoint validity (PVALID, + CONTEXTJ, CONTEXTO classes from :rfc:`5892`), and the Bidi Rule + (:func:`check_bidi`). + + :param label: The label to validate. ``bytes`` or ``bytearray`` input + is decoded as UTF-8 first. + :raises IDNAError: If the label is empty or fails a structural rule. + :raises InvalidCodepoint: If the label contains a DISALLOWED or + UNASSIGNED codepoint. + :raises InvalidCodepointContext: If a CONTEXTJ or CONTEXTO codepoint + is not valid in its context. + :raises IDNABidiError: If the Bidi Rule is violated. + """ + if isinstance(label, (bytes, bytearray)): + label = label.decode("utf-8") + if len(label) == 0: + raise IDNAError("Empty Label") + + # Reject on domain length rather than label length so support some UTS 46 + # use cases, still reducing processing of label contextual rules + if not valid_string_length(label, trailing_dot=True): + raise IDNAError("Label too long") + + 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 + if intranges_contain(cp_value, idnadata.codepoint_classes["CONTEXTJ"]): + try: + if not valid_contextj(label, pos): + raise InvalidCodepointContext(f"Joiner {_unot(cp_value)} not allowed at position {pos + 1} in {label!r}") + except ValueError as err: + raise IDNAError( + f"Unknown codepoint adjacent to joiner {_unot(cp_value)} at position {pos + 1} in {label!r}" + ) from err + elif intranges_contain(cp_value, idnadata.codepoint_classes["CONTEXTO"]): + if not valid_contexto(label, pos): + raise InvalidCodepointContext(f"Codepoint {_unot(cp_value)} not allowed at position {pos + 1} in {label!r}") + else: + raise InvalidCodepoint(f"Codepoint {_unot(cp_value)} at position {pos + 1} of {label!r} not allowed") + + check_bidi(label) + + +def alabel(label: str) -> bytes: + """Convert a single U-label into its A-label form. + + The result is the ASCII-Compatible Encoding (ACE) form per :rfc:`5891` + §4: the label is validated, Punycode-encoded, and prefixed with + ``xn--``. Pure ASCII labels that are already valid IDNA labels are + returned unchanged (as :class:`bytes`). + + :param label: The label to convert, as a Unicode string. + :returns: The A-label as ASCII-encoded :class:`bytes`. + :raises IDNAError: If the label is invalid or the resulting A-label + exceeds 63 octets. + """ + try: + label_bytes = label.encode("ascii") + except UnicodeEncodeError: + pass + else: + ulabel(label_bytes) + if not valid_label_length(label_bytes): + raise IDNAError("Label too long") + return label_bytes + + 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: + """Convert a single A-label into its U-label form. + + Performs the inverse of :func:`alabel`: an ``xn--``-prefixed label is + Punycode-decoded and validated. Labels that are already Unicode (or + plain ASCII without the ACE prefix) are validated and returned as a + Unicode string. + + :param label: The label to convert. ``bytes`` or ``bytearray`` input + is treated as ASCII. + :returns: The U-label as a Unicode string. + :raises IDNAError: If the label is malformed or fails validation. + """ + if not isinstance(label, (bytes, bytearray)): + try: + label_bytes = label.encode("ascii") + except UnicodeEncodeError: + check_label(label) + return label + else: + label_bytes = 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.endswith(b"-"): + 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 as err: + raise IDNAError("Invalid A-label") from err + check_label(label) + return label + + +def uts46_remap(domain: str, std3_rules: bool = True, transitional: bool = False) -> str: + """Apply the UTS #46 character mapping to a domain string. + + Implements the mapping table from `UTS #46 §4 + `_: each character is kept, + replaced, or rejected based on its status (``V``, ``M``, ``D``, ``3``, + ``I``). The result is returned in Normalisation Form C. + + :param domain: The full domain name to remap. + :param std3_rules: If ``True``, apply the stricter STD3 ASCII rules + (status ``3`` codepoints raise instead of being kept or mapped). + :param transitional: If ``True``, use transitional processing (status + ``D`` codepoints are mapped instead of kept). Transitional + processing has been removed from UTS #46 and this option is + retained only for backwards compatibility. + :returns: The remapped domain, in Normalisation Form C. + :raises InvalidCodepoint: If the domain contains a disallowed + codepoint under the chosen rules. + """ + from .uts46data import uts46data + + output = "" + + for pos, char in enumerate(domain): + code_point = ord(char) + 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] # ty: ignore[index-out-of-bounds] + + # UTS #46 §4: V is always valid, D is deviation (kept unless transitional), + # 3 is disallowed-STD3 (kept unmapped if std3_rules is off and no mapping). + keep_as_is = ( + status == "V" or (status == "D" and not transitional) or (status == "3" and not std3_rules and replacement is None) + ) + # M is mapped, 3-with-replacement and transitional D fall through to the + # same replacement output path. + use_replacement = replacement is not None and ( + status == "M" or (status == "3" and not std3_rules) or (status == "D" and transitional) + ) + + if keep_as_is: + output += char + elif use_replacement: + assert replacement is not None # narrowed by use_replacement + output += replacement + elif status == "I": + continue + else: + raise InvalidCodepoint(f"Codepoint {_unot(code_point)} not allowed at position {pos + 1} in {domain!r}") + + 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: + """Encode a Unicode domain name into its ASCII (A-label) form. + + Splits the input on label separators (only ``U+002E`` if ``strict`` is + set; otherwise also IDEOGRAPHIC FULL STOP ``U+3002``, FULLWIDTH FULL + STOP ``U+FF0E``, and HALFWIDTH IDEOGRAPHIC FULL STOP ``U+FF61``), + encodes each label with :func:`alabel`, and rejoins them with ``.``. + Optionally pre-processes the input through :func:`uts46_remap`. + + :param s: The domain name to encode. + :param strict: If ``True``, only ``U+002E`` is recognised as a label + separator. + :param uts46: If ``True``, apply UTS #46 mapping before encoding. + :param std3_rules: Forwarded to :func:`uts46_remap` when ``uts46`` is + ``True``. + :param transitional: Forwarded to :func:`uts46_remap` when ``uts46`` + is ``True``. Deprecated: emits a :class:`DeprecationWarning` and + will be removed in a future version. + :returns: The encoded domain as ASCII :class:`bytes`. + :raises IDNAError: If the domain is empty, contains an invalid label, + or exceeds the maximum domain length. + """ + if transitional: + warnings.warn( + "Transitional processing has been removed from UTS #46. " + "The transitional argument will be removed in a future version.", + DeprecationWarning, + stacklevel=2, + ) + if not isinstance(s, str): + try: + s = str(s, "ascii") + except (UnicodeDecodeError, TypeError) as err: + raise IDNAError("should pass a unicode string to the function rather than a byte string.") from err + if uts46: + s = uts46_remap(s, std3_rules, transitional) + + # Reject inputs that exceed the maximum DNS domain length up-front + # to avoid expensive computation on long inputs. + if not valid_string_length(s, trailing_dot=True): + raise IDNAError("Domain too long") + + trailing_dot = False + result = [] + labels = s.split(".") if strict else _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: + """Decode an A-label-encoded domain name back to Unicode. + + Splits the input on label separators (see :func:`encode` for the + rules), decodes each label with :func:`ulabel`, and rejoins them + with ``.``. Optionally pre-processes the input through + :func:`uts46_remap`. + + :param s: The domain name to decode. + :param strict: If ``True``, only ``U+002E`` is recognised as a label + separator. + :param uts46: If ``True``, apply UTS #46 mapping before decoding. + :param std3_rules: Forwarded to :func:`uts46_remap` when ``uts46`` is + ``True``. + :returns: The decoded domain as a Unicode string. + :raises IDNAError: If the input is not valid ASCII, contains an + invalid label, or is empty. + """ + if not isinstance(s, str): + try: + s = str(s, "ascii") + except (UnicodeDecodeError, TypeError) as err: + raise IDNAError("Invalid ASCII in A-label") from err + if uts46: + s = uts46_remap(s, std3_rules, False) + # Reject inputs that exceed the maximum DNS domain length up-front + # to avoid expensive computation on long inputs. + if not valid_string_length(s, trailing_dot=True): + raise IDNAError("Domain too long") + trailing_dot = False + result = [] + labels = s.split(".") if strict else _unicode_dots_re.split(s) + 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/intelliaide/vendor/idna/idnadata.py b/intelliaide/vendor/idna/idnadata.py new file mode 100644 index 0000000..d768948 --- /dev/null +++ b/intelliaide/vendor/idna/idnadata.py @@ -0,0 +1,4366 @@ +# This file is automatically generated by tools/idna-data + +from functools import cache + +__version__ = "17.0.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, + 0x16FF000016FF7, + 0x200000002A6E0, + 0x2A7000002B81E, + 0x2B8200002CEAE, + 0x2CEB00002EBE1, + 0x2EBF00002EE5E, + 0x2F8000002FA1E, + 0x300000003134B, + 0x313500003347A, + ), + "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, + ), +} + + +@cache +def joining_types() -> dict[int, int]: + return { + 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, + 0x88F: 68, + 0x897: 84, + 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, + 0x1ACF: 84, + 0x1AD0: 84, + 0x1AD1: 84, + 0x1AD2: 84, + 0x1AD3: 84, + 0x1AD4: 84, + 0x1AD5: 84, + 0x1AD6: 84, + 0x1AD7: 84, + 0x1AD8: 84, + 0x1AD9: 84, + 0x1ADA: 84, + 0x1ADB: 84, + 0x1ADC: 84, + 0x1ADD: 84, + 0x1AE0: 84, + 0x1AE1: 84, + 0x1AE2: 84, + 0x1AE3: 84, + 0x1AE4: 84, + 0x1AE5: 84, + 0x1AE6: 84, + 0x1AE7: 84, + 0x1AE8: 84, + 0x1AE9: 84, + 0x1AEA: 84, + 0x1AEB: 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, + 0x10D69: 84, + 0x10D6A: 84, + 0x10D6B: 84, + 0x10D6C: 84, + 0x10D6D: 84, + 0x10EAB: 84, + 0x10EAC: 84, + 0x10EC2: 82, + 0x10EC3: 68, + 0x10EC4: 68, + 0x10EC6: 68, + 0x10EC7: 68, + 0x10EFA: 84, + 0x10EFB: 84, + 0x10EFC: 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, + 0x113BB: 84, + 0x113BC: 84, + 0x113BD: 84, + 0x113BE: 84, + 0x113BF: 84, + 0x113C0: 84, + 0x113CE: 84, + 0x113D0: 84, + 0x113D2: 84, + 0x113E1: 84, + 0x113E2: 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, + 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, + 0x11B60: 84, + 0x11B62: 84, + 0x11B63: 84, + 0x11B64: 84, + 0x11B66: 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, + 0x11F5A: 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, + 0x1611E: 84, + 0x1611F: 84, + 0x16120: 84, + 0x16121: 84, + 0x16122: 84, + 0x16123: 84, + 0x16124: 84, + 0x16125: 84, + 0x16126: 84, + 0x16127: 84, + 0x16128: 84, + 0x16129: 84, + 0x1612D: 84, + 0x1612E: 84, + 0x1612F: 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, + 0x1E5EE: 84, + 0x1E5EF: 84, + 0x1E6E3: 84, + 0x1E6E6: 84, + 0x1E6EE: 84, + 0x1E6EF: 84, + 0x1E6F5: 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, + 0x88900000890, + 0x897000008E2, + 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, + 0xC5C00000C5E, + 0xC6000000C64, + 0xC6600000C70, + 0xC8000000C84, + 0xC8500000C8D, + 0xC8E00000C91, + 0xC9200000CA9, + 0xCAA00000CB4, + 0xCB500000CBA, + 0xCBC00000CC5, + 0xCC600000CC9, + 0xCCA00000CCE, + 0xCD500000CD7, + 0xCDC00000CDF, + 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, + 0x1ABF00001ADE, + 0x1AE000001AEC, + 0x1B0000001B4D, + 0x1B5000001B5A, + 0x1B6B00001B74, + 0x1B8000001BF4, + 0x1C0000001C38, + 0x1C4000001C4A, + 0x1C4D00001C7E, + 0x1C8A00001C8B, + 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, + 0xA7CD0000A7CE, + 0xA7CF0000A7D0, + 0xA7D10000A7D2, + 0xA7D30000A7D4, + 0xA7D50000A7D6, + 0xA7D70000A7D8, + 0xA7D90000A7DA, + 0xA7DB0000A7DC, + 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, + 0x105C0000105F4, + 0x1060000010737, + 0x1074000010756, + 0x1076000010768, + 0x1078000010781, + 0x1080000010806, + 0x1080800010809, + 0x1080A00010836, + 0x1083700010839, + 0x1083C0001083D, + 0x1083F00010856, + 0x1086000010877, + 0x108800001089F, + 0x108E0000108F3, + 0x108F4000108F6, + 0x1090000010916, + 0x109200001093A, + 0x109400001095A, + 0x10980000109B8, + 0x109BE000109C0, + 0x10A0000010A04, + 0x10A0500010A07, + 0x10A0C00010A14, + 0x10A1500010A18, + 0x10A1900010A36, + 0x10A3800010A3B, + 0x10A3F00010A40, + 0x10A6000010A7D, + 0x10A8000010A9D, + 0x10AC000010AC8, + 0x10AC900010AE7, + 0x10B0000010B36, + 0x10B4000010B56, + 0x10B6000010B73, + 0x10B8000010B92, + 0x10C0000010C49, + 0x10CC000010CF3, + 0x10D0000010D28, + 0x10D3000010D3A, + 0x10D4000010D50, + 0x10D6900010D6E, + 0x10D6F00010D86, + 0x10E8000010EAA, + 0x10EAB00010EAD, + 0x10EB000010EB2, + 0x10EC200010EC8, + 0x10EFA00010F1D, + 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, + 0x113800001138A, + 0x1138B0001138C, + 0x1138E0001138F, + 0x11390000113B6, + 0x113B7000113C1, + 0x113C2000113C3, + 0x113C5000113C6, + 0x113C7000113CB, + 0x113CC000113D4, + 0x113E1000113E3, + 0x114000001144B, + 0x114500001145A, + 0x1145E00011462, + 0x11480000114C6, + 0x114C7000114C8, + 0x114D0000114DA, + 0x11580000115B6, + 0x115B8000115C1, + 0x115D8000115DE, + 0x1160000011641, + 0x1164400011645, + 0x116500001165A, + 0x11680000116B9, + 0x116C0000116CA, + 0x116D0000116E4, + 0x117000001171B, + 0x1171D0001172C, + 0x117300001173A, + 0x1174000011747, + 0x118000001183B, + 0x118C0000118EA, + 0x118FF00011907, + 0x119090001190A, + 0x1190C00011914, + 0x1191500011917, + 0x1191800011936, + 0x1193700011939, + 0x1193B00011944, + 0x119500001195A, + 0x119A0000119A8, + 0x119AA000119D8, + 0x119DA000119E2, + 0x119E3000119E5, + 0x11A0000011A3F, + 0x11A4700011A48, + 0x11A5000011A9A, + 0x11A9D00011A9E, + 0x11AB000011AF9, + 0x11B6000011B68, + 0x11BC000011BE1, + 0x11BF000011BFA, + 0x11C0000011C09, + 0x11C0A00011C37, + 0x11C3800011C41, + 0x11C5000011C5A, + 0x11C7200011C90, + 0x11C9200011CA8, + 0x11CA900011CB7, + 0x11D0000011D07, + 0x11D0800011D0A, + 0x11D0B00011D37, + 0x11D3A00011D3B, + 0x11D3C00011D3E, + 0x11D3F00011D48, + 0x11D5000011D5A, + 0x11D6000011D66, + 0x11D6700011D69, + 0x11D6A00011D8F, + 0x11D9000011D92, + 0x11D9300011D99, + 0x11DA000011DAA, + 0x11DB000011DDC, + 0x11DE000011DEA, + 0x11EE000011EF7, + 0x11F0000011F11, + 0x11F1200011F3B, + 0x11F3E00011F43, + 0x11F5000011F5B, + 0x11FB000011FB1, + 0x120000001239A, + 0x1248000012544, + 0x12F9000012FF1, + 0x1300000013430, + 0x1344000013456, + 0x13460000143FB, + 0x1440000014647, + 0x161000001613A, + 0x1680000016A39, + 0x16A4000016A5F, + 0x16A6000016A6A, + 0x16A7000016ABF, + 0x16AC000016ACA, + 0x16AD000016AEE, + 0x16AF000016AF5, + 0x16B0000016B37, + 0x16B4000016B44, + 0x16B5000016B5A, + 0x16B6300016B78, + 0x16B7D00016B90, + 0x16D4000016D6D, + 0x16D7000016D7A, + 0x16E6000016E80, + 0x16EBB00016ED4, + 0x16F0000016F4B, + 0x16F4F00016F88, + 0x16F8F00016FA0, + 0x16FE000016FE2, + 0x16FE300016FE5, + 0x16FF000016FF4, + 0x1700000018CD6, + 0x18CFF00018D1F, + 0x18D8000018DF3, + 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, + 0x1E5D00001E5FB, + 0x1E6C00001E6DF, + 0x1E6E00001E6F6, + 0x1E6FE0001E700, + 0x1E7E00001E7E7, + 0x1E7E80001E7EC, + 0x1E7ED0001E7EF, + 0x1E7F00001E7FF, + 0x1E8000001E8C5, + 0x1E8D00001E8D7, + 0x1E9220001E94C, + 0x1E9500001E95A, + 0x200000002A6E0, + 0x2A7000002B81E, + 0x2B8200002CEAE, + 0x2CEB00002EBE1, + 0x2EBF00002EE5E, + 0x300000003134B, + 0x313500003347A, + ), + "CONTEXTJ": (0x200C0000200E,), + "CONTEXTO": ( + 0xB7000000B8, + 0x37500000376, + 0x5F3000005F5, + 0x6600000066A, + 0x6F0000006FA, + 0x30FB000030FC, + ), +} diff --git a/intelliaide/vendor/idna/intranges.py b/intelliaide/vendor/idna/intranges.py new file mode 100644 index 0000000..19d7781 --- /dev/null +++ b/intelliaide/vendor/idna/intranges.py @@ -0,0 +1,55 @@ +""" +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 + + +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) and 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/intelliaide/vendor/idna/package_data.py b/intelliaide/vendor/idna/package_data.py new file mode 100644 index 0000000..560eb22 --- /dev/null +++ b/intelliaide/vendor/idna/package_data.py @@ -0,0 +1 @@ +__version__ = "3.16" diff --git a/intelliaide/vendor/idna/py.typed b/intelliaide/vendor/idna/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/intelliaide/vendor/idna/uts46data.py b/intelliaide/vendor/idna/uts46data.py new file mode 100644 index 0000000..f728fd9 --- /dev/null +++ b/intelliaide/vendor/idna/uts46data.py @@ -0,0 +1,8383 @@ +# This file is automatically generated by tools/idna-data + +from typing import Union + +"""IDNA Mapping Table from UTS46.""" + + +__version__ = "17.0.0" + +uts46data: tuple[Union[tuple[int, str], tuple[int, str, str]], ...] = ( + (0x0, "V"), + (0x1, "V"), + (0x2, "V"), + (0x3, "V"), + (0x4, "V"), + (0x5, "V"), + (0x6, "V"), + (0x7, "V"), + (0x8, "V"), + (0x9, "V"), + (0xA, "V"), + (0xB, "V"), + (0xC, "V"), + (0xD, "V"), + (0xE, "V"), + (0xF, "V"), + (0x10, "V"), + (0x11, "V"), + (0x12, "V"), + (0x13, "V"), + (0x14, "V"), + (0x15, "V"), + (0x16, "V"), + (0x17, "V"), + (0x18, "V"), + (0x19, "V"), + (0x1A, "V"), + (0x1B, "V"), + (0x1C, "V"), + (0x1D, "V"), + (0x1E, "V"), + (0x1F, "V"), + (0x20, "V"), + (0x21, "V"), + (0x22, "V"), + (0x23, "V"), + (0x24, "V"), + (0x25, "V"), + (0x26, "V"), + (0x27, "V"), + (0x28, "V"), + (0x29, "V"), + (0x2A, "V"), + (0x2B, "V"), + (0x2C, "V"), + (0x2D, "V"), + (0x2E, "V"), + (0x2F, "V"), + (0x30, "V"), + (0x31, "V"), + (0x32, "V"), + (0x33, "V"), + (0x34, "V"), + (0x35, "V"), + (0x36, "V"), + (0x37, "V"), + (0x38, "V"), + (0x39, "V"), + (0x3A, "V"), + (0x3B, "V"), + (0x3C, "V"), + (0x3D, "V"), + (0x3E, "V"), + (0x3F, "V"), + (0x40, "V"), + (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, "V"), + (0x5C, "V"), + (0x5D, "V"), + (0x5E, "V"), + (0x5F, "V"), + (0x60, "V"), + (0x61, "V"), + (0x62, "V"), + (0x63, "V"), + (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, "V"), + (0x7C, "V"), + (0x7D, "V"), + (0x7E, "V"), + (0x7F, "V"), + (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, "M", " "), + (0xA1, "V"), + (0xA2, "V"), + (0xA3, "V"), + (0xA4, "V"), + (0xA5, "V"), + (0xA6, "V"), + (0xA7, "V"), + (0xA8, "M", " ̈"), + (0xA9, "V"), + (0xAA, "M", "a"), + (0xAB, "V"), + (0xAC, "V"), + (0xAD, "I"), + (0xAE, "V"), + (0xAF, "M", " ̄"), + (0xB0, "V"), + (0xB1, "V"), + (0xB2, "M", "2"), + (0xB3, "M", "3"), + (0xB4, "M", " ́"), + (0xB5, "M", "μ"), + (0xB6, "V"), + (0xB7, "V"), + (0xB8, "M", " ̧"), + (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", "ç"), + (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"), + (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", "ɠ"), + (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", "ȍ"), + (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, "M", " ̆"), + (0x2D9, "M", " ̇"), + (0x2DA, "M", " ̊"), + (0x2DB, "M", " ̨"), + (0x2DC, "M", " ̃"), + (0x2DD, "M", " ̋"), + (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"), + (0x378, "X"), + (0x37A, "M", " ι"), + (0x37B, "V"), + (0x37E, "M", ";"), + (0x37F, "M", "ϳ"), + (0x380, "X"), + (0x384, "M", " ́"), + (0x385, "M", " ̈́"), + (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", "ђ"), + (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"), + (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, "M", "ӏ"), + (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", "ԃ"), + (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"), + (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"), + (0x890, "X"), + (0x897, "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"), + (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"), + (0xC3A, "X"), + (0xC3C, "V"), + (0xC45, "X"), + (0xC46, "V"), + (0xC49, "X"), + (0xC4A, "V"), + (0xC4E, "X"), + (0xC55, "V"), + (0xC57, "X"), + (0xC58, "V"), + (0xC5B, "X"), + (0xC5C, "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"), + (0xCDC, "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"), + (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, "M", "ⴀ"), + (0x10A1, "M", "ⴁ"), + (0x10A2, "M", "ⴂ"), + (0x10A3, "M", "ⴃ"), + (0x10A4, "M", "ⴄ"), + (0x10A5, "M", "ⴅ"), + (0x10A6, "M", "ⴆ"), + (0x10A7, "M", "ⴇ"), + (0x10A8, "M", "ⴈ"), + (0x10A9, "M", "ⴉ"), + (0x10AA, "M", "ⴊ"), + (0x10AB, "M", "ⴋ"), + (0x10AC, "M", "ⴌ"), + (0x10AD, "M", "ⴍ"), + (0x10AE, "M", "ⴎ"), + (0x10AF, "M", "ⴏ"), + (0x10B0, "M", "ⴐ"), + (0x10B1, "M", "ⴑ"), + (0x10B2, "M", "ⴒ"), + (0x10B3, "M", "ⴓ"), + (0x10B4, "M", "ⴔ"), + (0x10B5, "M", "ⴕ"), + (0x10B6, "M", "ⴖ"), + (0x10B7, "M", "ⴗ"), + (0x10B8, "M", "ⴘ"), + (0x10B9, "M", "ⴙ"), + (0x10BA, "M", "ⴚ"), + (0x10BB, "M", "ⴛ"), + (0x10BC, "M", "ⴜ"), + (0x10BD, "M", "ⴝ"), + (0x10BE, "M", "ⴞ"), + (0x10BF, "M", "ⴟ"), + (0x10C0, "M", "ⴠ"), + (0x10C1, "M", "ⴡ"), + (0x10C2, "M", "ⴢ"), + (0x10C3, "M", "ⴣ"), + (0x10C4, "M", "ⴤ"), + (0x10C5, "M", "ⴥ"), + (0x10C6, "X"), + (0x10C7, "M", "ⴧ"), + (0x10C8, "X"), + (0x10CD, "M", "ⴭ"), + (0x10CE, "X"), + (0x10D0, "V"), + (0x10FC, "M", "ნ"), + (0x10FD, "V"), + (0x115F, "I"), + (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"), + (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, "I"), + (0x17B6, "V"), + (0x17DE, "X"), + (0x17E0, "V"), + (0x17EA, "X"), + (0x17F0, "V"), + (0x17FA, "X"), + (0x1800, "V"), + (0x180B, "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"), + (0x1ADE, "X"), + (0x1AE0, "V"), + (0x1AEC, "X"), + (0x1B00, "V"), + (0x1B4D, "X"), + (0x1B4E, "V"), + (0x1BF4, "X"), + (0x1BFC, "V"), + (0x1C38, "X"), + (0x1C3B, "V"), + (0x1C4A, "X"), + (0x1C4D, "V"), + (0x1C80, "M", "в"), + (0x1C81, "M", "д"), + (0x1C82, "M", "о"), + (0x1C83, "M", "с"), + (0x1C84, "M", "т"), + (0x1C86, "M", "ъ"), + (0x1C87, "M", "ѣ"), + (0x1C88, "M", "ꙋ"), + (0x1C89, "M", "ᲊ"), + (0x1C8A, "V"), + (0x1C8B, "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", "ɔ"), + (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"), + (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"), + (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", "ự"), + (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", "ἇι"), + (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, "M", " ̓"), + (0x1FBE, "M", "ι"), + (0x1FBF, "M", " ̓"), + (0x1FC0, "M", " ͂"), + (0x1FC1, "M", " ̈͂"), + (0x1FC2, "M", "ὴι"), + (0x1FC3, "M", "ηι"), + (0x1FC4, "M", "ήι"), + (0x1FC5, "X"), + (0x1FC6, "V"), + (0x1FC7, "M", "ῆι"), + (0x1FC8, "M", "ὲ"), + (0x1FC9, "M", "έ"), + (0x1FCA, "M", "ὴ"), + (0x1FCB, "M", "ή"), + (0x1FCC, "M", "ηι"), + (0x1FCD, "M", " ̓̀"), + (0x1FCE, "M", " ̓́"), + (0x1FCF, "M", " ̓͂"), + (0x1FD0, "V"), + (0x1FD3, "M", "ΐ"), + (0x1FD4, "X"), + (0x1FD6, "V"), + (0x1FD8, "M", "ῐ"), + (0x1FD9, "M", "ῑ"), + (0x1FDA, "M", "ὶ"), + (0x1FDB, "M", "ί"), + (0x1FDC, "X"), + (0x1FDD, "M", " ̔̀"), + (0x1FDE, "M", " ̔́"), + (0x1FDF, "M", " ̔͂"), + (0x1FE0, "V"), + (0x1FE3, "M", "ΰ"), + (0x1FE4, "V"), + (0x1FE8, "M", "ῠ"), + (0x1FE9, "M", "ῡ"), + (0x1FEA, "M", "ὺ"), + (0x1FEB, "M", "ύ"), + (0x1FEC, "M", "ῥ"), + (0x1FED, "M", " ̈̀"), + (0x1FEE, "M", " ̈́"), + (0x1FEF, "M", "`"), + (0x1FF0, "X"), + (0x1FF2, "M", "ὼι"), + (0x1FF3, "M", "ωι"), + (0x1FF4, "M", "ώι"), + (0x1FF5, "X"), + (0x1FF6, "V"), + (0x1FF7, "M", "ῶι"), + (0x1FF8, "M", "ὸ"), + (0x1FF9, "M", "ό"), + (0x1FFA, "M", "ὼ"), + (0x1FFB, "M", "ώ"), + (0x1FFC, "M", "ωι"), + (0x1FFD, "M", " ́"), + (0x1FFE, "M", " ̔"), + (0x1FFF, "X"), + (0x2000, "M", " "), + (0x200B, "I"), + (0x200C, "D", ""), + (0x200E, "X"), + (0x2010, "V"), + (0x2011, "M", "‐"), + (0x2012, "V"), + (0x2017, "M", " ̳"), + (0x2018, "V"), + (0x2024, "X"), + (0x2027, "V"), + (0x2028, "X"), + (0x202F, "M", " "), + (0x2030, "V"), + (0x2033, "M", "′′"), + (0x2034, "M", "′′′"), + (0x2035, "V"), + (0x2036, "M", "‵‵"), + (0x2037, "M", "‵‵‵"), + (0x2038, "V"), + (0x203C, "M", "!!"), + (0x203D, "V"), + (0x203E, "M", " ̅"), + (0x203F, "V"), + (0x2047, "M", "??"), + (0x2048, "M", "?!"), + (0x2049, "M", "!?"), + (0x204A, "V"), + (0x2057, "M", "′′′′"), + (0x2058, "V"), + (0x205F, "M", " "), + (0x2060, "I"), + (0x2065, "X"), + (0x206A, "I"), + (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, "M", "+"), + (0x207B, "M", "−"), + (0x207C, "M", "="), + (0x207D, "M", "("), + (0x207E, "M", ")"), + (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, "M", "+"), + (0x208B, "M", "−"), + (0x208C, "M", "="), + (0x208D, "M", "("), + (0x208E, "M", ")"), + (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"), + (0x20C2, "X"), + (0x20D0, "V"), + (0x20F1, "X"), + (0x2100, "M", "a/c"), + (0x2101, "M", "a/s"), + (0x2102, "M", "c"), + (0x2103, "M", "°c"), + (0x2104, "V"), + (0x2105, "M", "c/o"), + (0x2106, "M", "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, "M", "ⅎ"), + (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"), + (0x217D, "M", "c"), + (0x217E, "M", "d"), + (0x217F, "M", "m"), + (0x2180, "V"), + (0x2183, "M", "ↄ"), + (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"), + (0x242A, "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, "M", "(1)"), + (0x2475, "M", "(2)"), + (0x2476, "M", "(3)"), + (0x2477, "M", "(4)"), + (0x2478, "M", "(5)"), + (0x2479, "M", "(6)"), + (0x247A, "M", "(7)"), + (0x247B, "M", "(8)"), + (0x247C, "M", "(9)"), + (0x247D, "M", "(10)"), + (0x247E, "M", "(11)"), + (0x247F, "M", "(12)"), + (0x2480, "M", "(13)"), + (0x2481, "M", "(14)"), + (0x2482, "M", "(15)"), + (0x2483, "M", "(16)"), + (0x2484, "M", "(17)"), + (0x2485, "M", "(18)"), + (0x2486, "M", "(19)"), + (0x2487, "M", "(20)"), + (0x2488, "X"), + (0x249C, "M", "(a)"), + (0x249D, "M", "(b)"), + (0x249E, "M", "(c)"), + (0x249F, "M", "(d)"), + (0x24A0, "M", "(e)"), + (0x24A1, "M", "(f)"), + (0x24A2, "M", "(g)"), + (0x24A3, "M", "(h)"), + (0x24A4, "M", "(i)"), + (0x24A5, "M", "(j)"), + (0x24A6, "M", "(k)"), + (0x24A7, "M", "(l)"), + (0x24A8, "M", "(m)"), + (0x24A9, "M", "(n)"), + (0x24AA, "M", "(o)"), + (0x24AB, "M", "(p)"), + (0x24AC, "M", "(q)"), + (0x24AD, "M", "(r)"), + (0x24AE, "M", "(s)"), + (0x24AF, "M", "(t)"), + (0x24B0, "M", "(u)"), + (0x24B1, "M", "(v)"), + (0x24B2, "M", "(w)"), + (0x24B3, "M", "(x)"), + (0x24B4, "M", "(y)"), + (0x24B5, "M", "(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"), + (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, "M", "::="), + (0x2A75, "M", "=="), + (0x2A76, "M", "==="), + (0x2A77, "V"), + (0x2ADC, "M", "⫝̸"), + (0x2ADD, "V"), + (0x2B74, "X"), + (0x2B76, "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", "ⱜ"), + (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", "ⳇ"), + (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", "卩"), + (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", "而"), + (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, "M", " "), + (0x3001, "V"), + (0x3002, "M", "."), + (0x3003, "V"), + (0x3036, "M", "〒"), + (0x3037, "V"), + (0x3038, "M", "十"), + (0x3039, "M", "卄"), + (0x303A, "M", "卅"), + (0x303B, "V"), + (0x3040, "X"), + (0x3041, "V"), + (0x3097, "X"), + (0x3099, "V"), + (0x309B, "M", " ゙"), + (0x309C, "M", " ゚"), + (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, "I"), + (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", "ᆅ"), + (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"), + (0x31E6, "X"), + (0x31F0, "V"), + (0x3200, "M", "(ᄀ)"), + (0x3201, "M", "(ᄂ)"), + (0x3202, "M", "(ᄃ)"), + (0x3203, "M", "(ᄅ)"), + (0x3204, "M", "(ᄆ)"), + (0x3205, "M", "(ᄇ)"), + (0x3206, "M", "(ᄉ)"), + (0x3207, "M", "(ᄋ)"), + (0x3208, "M", "(ᄌ)"), + (0x3209, "M", "(ᄎ)"), + (0x320A, "M", "(ᄏ)"), + (0x320B, "M", "(ᄐ)"), + (0x320C, "M", "(ᄑ)"), + (0x320D, "M", "(ᄒ)"), + (0x320E, "M", "(가)"), + (0x320F, "M", "(나)"), + (0x3210, "M", "(다)"), + (0x3211, "M", "(라)"), + (0x3212, "M", "(마)"), + (0x3213, "M", "(바)"), + (0x3214, "M", "(사)"), + (0x3215, "M", "(아)"), + (0x3216, "M", "(자)"), + (0x3217, "M", "(차)"), + (0x3218, "M", "(카)"), + (0x3219, "M", "(타)"), + (0x321A, "M", "(파)"), + (0x321B, "M", "(하)"), + (0x321C, "M", "(주)"), + (0x321D, "M", "(오전)"), + (0x321E, "M", "(오후)"), + (0x321F, "X"), + (0x3220, "M", "(一)"), + (0x3221, "M", "(二)"), + (0x3222, "M", "(三)"), + (0x3223, "M", "(四)"), + (0x3224, "M", "(五)"), + (0x3225, "M", "(六)"), + (0x3226, "M", "(七)"), + (0x3227, "M", "(八)"), + (0x3228, "M", "(九)"), + (0x3229, "M", "(十)"), + (0x322A, "M", "(月)"), + (0x322B, "M", "(火)"), + (0x322C, "M", "(水)"), + (0x322D, "M", "(木)"), + (0x322E, "M", "(金)"), + (0x322F, "M", "(土)"), + (0x3230, "M", "(日)"), + (0x3231, "M", "(株)"), + (0x3232, "M", "(有)"), + (0x3233, "M", "(社)"), + (0x3234, "M", "(名)"), + (0x3235, "M", "(特)"), + (0x3236, "M", "(財)"), + (0x3237, "M", "(祝)"), + (0x3238, "M", "(労)"), + (0x3239, "M", "(代)"), + (0x323A, "M", "(呼)"), + (0x323B, "M", "(学)"), + (0x323C, "M", "(監)"), + (0x323D, "M", "(企)"), + (0x323E, "M", "(資)"), + (0x323F, "M", "(協)"), + (0x3240, "M", "(祭)"), + (0x3241, "M", "(休)"), + (0x3242, "M", "(自)"), + (0x3243, "M", "(至)"), + (0x3244, "M", "問"), + (0x3245, "M", "幼"), + (0x3246, "M", "文"), + (0x3247, "M", "箏"), + (0x3248, "V"), + (0x3250, "M", "pte"), + (0x3251, "M", "21"), + (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"), + (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", "グラムトン"), + (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", "大正"), + (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日"), + (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"), + (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"), + (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, "M", "ɤ"), + (0xA7CC, "M", "ꟍ"), + (0xA7CD, "V"), + (0xA7CE, "M", "꟏"), + (0xA7CF, "V"), + (0xA7D0, "M", "ꟑ"), + (0xA7D1, "V"), + (0xA7D2, "M", "ꟓ"), + (0xA7D3, "V"), + (0xA7D4, "M", "ꟕ"), + (0xA7D5, "V"), + (0xA7D6, "M", "ꟗ"), + (0xA7D7, "V"), + (0xA7D8, "M", "ꟙ"), + (0xA7D9, "V"), + (0xA7DA, "M", "ꟛ"), + (0xA7DB, "V"), + (0xA7DC, "M", "ƛ"), + (0xA7DD, "X"), + (0xA7F1, "M", "s"), + (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"), + (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", "Ꮮ"), + (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", "雷"), + (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", "玲"), + (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", "晴"), + (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", "塚"), + (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"), + (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, "M", "+"), + (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"), + (0xFBD3, "M", "ڭ"), + (0xFBD7, "M", "ۇ"), + (0xFBD9, "M", "ۆ"), + (0xFBDB, "M", "ۈ"), + (0xFBDD, "M", "ۇٴ"), + (0xFBDE, "M", "ۋ"), + (0xFBE0, "M", "ۅ"), + (0xFBE2, "M", "ۉ"), + (0xFBE4, "M", "ې"), + (0xFBE8, "M", "ى"), + (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", "يي"), + (0xFC5B, "M", "ذٰ"), + (0xFC5C, "M", "رٰ"), + (0xFC5D, "M", "ىٰ"), + (0xFC5E, "M", " ٌّ"), + (0xFC5F, "M", " ٍّ"), + (0xFC60, "M", " َّ"), + (0xFC61, "M", " ُّ"), + (0xFC62, "M", " ِّ"), + (0xFC63, "M", " ّٰ"), + (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", "فج"), + (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", "صي"), + (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, "V"), + (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", "شحي"), + (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, "V"), + (0xFDD0, "X"), + (0xFDF0, "M", "صلے"), + (0xFDF1, "M", "قلے"), + (0xFDF2, "M", "الله"), + (0xFDF3, "M", "اكبر"), + (0xFDF4, "M", "محمد"), + (0xFDF5, "M", "صلعم"), + (0xFDF6, "M", "رسول"), + (0xFDF7, "M", "عليه"), + (0xFDF8, "M", "وسلم"), + (0xFDF9, "M", "صلى"), + (0xFDFA, "M", "صلى الله عليه وسلم"), + (0xFDFB, "M", "جل جلاله"), + (0xFDFC, "M", "ریال"), + (0xFDFD, "V"), + (0xFE00, "I"), + (0xFE10, "M", ","), + (0xFE11, "M", "、"), + (0xFE12, "X"), + (0xFE13, "M", ":"), + (0xFE14, "M", ";"), + (0xFE15, "M", "!"), + (0xFE16, "M", "?"), + (0xFE17, "M", "〖"), + (0xFE18, "M", "〗"), + (0xFE19, "X"), + (0xFE20, "V"), + (0xFE30, "X"), + (0xFE31, "M", "—"), + (0xFE32, "M", "–"), + (0xFE33, "M", "_"), + (0xFE35, "M", "("), + (0xFE36, "M", ")"), + (0xFE37, "M", "{"), + (0xFE38, "M", "}"), + (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, "M", "["), + (0xFE48, "M", "]"), + (0xFE49, "M", " ̅"), + (0xFE4D, "M", "_"), + (0xFE50, "M", ","), + (0xFE51, "M", "、"), + (0xFE52, "X"), + (0xFE54, "M", ";"), + (0xFE55, "M", ":"), + (0xFE56, "M", "?"), + (0xFE57, "M", "!"), + (0xFE58, "M", "—"), + (0xFE59, "M", "("), + (0xFE5A, "M", ")"), + (0xFE5B, "M", "{"), + (0xFE5C, "M", "}"), + (0xFE5D, "M", "〔"), + (0xFE5E, "M", "〕"), + (0xFE5F, "M", "#"), + (0xFE60, "M", "&"), + (0xFE61, "M", "*"), + (0xFE62, "M", "+"), + (0xFE63, "M", "-"), + (0xFE64, "M", "<"), + (0xFE65, "M", ">"), + (0xFE66, "M", "="), + (0xFE67, "X"), + (0xFE68, "M", "\\"), + (0xFE69, "M", "$"), + (0xFE6A, "M", "%"), + (0xFE6B, "M", "@"), + (0xFE6C, "X"), + (0xFE70, "M", " ً"), + (0xFE71, "M", "ـً"), + (0xFE72, "M", " ٌ"), + (0xFE73, "V"), + (0xFE74, "M", " ٍ"), + (0xFE75, "X"), + (0xFE76, "M", " َ"), + (0xFE77, "M", "ـَ"), + (0xFE78, "M", " ُ"), + (0xFE79, "M", "ـُ"), + (0xFE7A, "M", " ِ"), + (0xFE7B, "M", "ـِ"), + (0xFE7C, "M", " ّ"), + (0xFE7D, "M", "ـّ"), + (0xFE7E, "M", " ْ"), + (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, "M", "!"), + (0xFF02, "M", '"'), + (0xFF03, "M", "#"), + (0xFF04, "M", "$"), + (0xFF05, "M", "%"), + (0xFF06, "M", "&"), + (0xFF07, "M", "'"), + (0xFF08, "M", "("), + (0xFF09, "M", ")"), + (0xFF0A, "M", "*"), + (0xFF0B, "M", "+"), + (0xFF0C, "M", ","), + (0xFF0D, "M", "-"), + (0xFF0E, "M", "."), + (0xFF0F, "M", "/"), + (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, "M", ":"), + (0xFF1B, "M", ";"), + (0xFF1C, "M", "<"), + (0xFF1D, "M", "="), + (0xFF1E, "M", ">"), + (0xFF1F, "M", "?"), + (0xFF20, "M", "@"), + (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, "M", "["), + (0xFF3C, "M", "\\"), + (0xFF3D, "M", "]"), + (0xFF3E, "M", "^"), + (0xFF3F, "M", "_"), + (0xFF40, "M", "`"), + (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, "M", "{"), + (0xFF5C, "M", "|"), + (0xFF5D, "M", "}"), + (0xFF5E, "M", "~"), + (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", "ツ"), + (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, "I"), + (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, "M", " ̄"), + (0xFFE4, "M", "¦"), + (0xFFE5, "M", "¥"), + (0xFFE6, "M", "₩"), + (0xFFE7, "X"), + (0xFFE8, "M", "│"), + (0xFFE9, "M", "←"), + (0xFFEA, "M", "↑"), + (0xFFEB, "M", "→"), + (0xFFEC, "M", "↓"), + (0xFFED, "M", "■"), + (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", "𐓡"), + (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"), + (0x105C0, "V"), + (0x105F4, "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", "ɗ"), + (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"), + (0x1095A, "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"), + (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"), + (0x10D40, "V"), + (0x10D50, "M", "𐵰"), + (0x10D51, "M", "𐵱"), + (0x10D52, "M", "𐵲"), + (0x10D53, "M", "𐵳"), + (0x10D54, "M", "𐵴"), + (0x10D55, "M", "𐵵"), + (0x10D56, "M", "𐵶"), + (0x10D57, "M", "𐵷"), + (0x10D58, "M", "𐵸"), + (0x10D59, "M", "𐵹"), + (0x10D5A, "M", "𐵺"), + (0x10D5B, "M", "𐵻"), + (0x10D5C, "M", "𐵼"), + (0x10D5D, "M", "𐵽"), + (0x10D5E, "M", "𐵾"), + (0x10D5F, "M", "𐵿"), + (0x10D60, "M", "𐶀"), + (0x10D61, "M", "𐶁"), + (0x10D62, "M", "𐶂"), + (0x10D63, "M", "𐶃"), + (0x10D64, "M", "𐶄"), + (0x10D65, "M", "𐶅"), + (0x10D66, "X"), + (0x10D69, "V"), + (0x10D86, "X"), + (0x10D8E, "V"), + (0x10D90, "X"), + (0x10E60, "V"), + (0x10E7F, "X"), + (0x10E80, "V"), + (0x10EAA, "X"), + (0x10EAB, "V"), + (0x10EAE, "X"), + (0x10EB0, "V"), + (0x10EB2, "X"), + (0x10EC2, "V"), + (0x10EC8, "X"), + (0x10ED0, "V"), + (0x10ED9, "X"), + (0x10EFA, "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"), + (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"), + (0x11380, "V"), + (0x1138A, "X"), + (0x1138B, "V"), + (0x1138C, "X"), + (0x1138E, "V"), + (0x1138F, "X"), + (0x11390, "V"), + (0x113B6, "X"), + (0x113B7, "V"), + (0x113C1, "X"), + (0x113C2, "V"), + (0x113C3, "X"), + (0x113C5, "V"), + (0x113C6, "X"), + (0x113C7, "V"), + (0x113CB, "X"), + (0x113CC, "V"), + (0x113D6, "X"), + (0x113D7, "V"), + (0x113D9, "X"), + (0x113E1, "V"), + (0x113E3, "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"), + (0x116D0, "V"), + (0x116E4, "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", "𑣊"), + (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"), + (0x11B60, "V"), + (0x11B68, "X"), + (0x11BC0, "V"), + (0x11BE2, "X"), + (0x11BF0, "V"), + (0x11BFA, "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"), + (0x11DB0, "V"), + (0x11DDC, "X"), + (0x11DE0, "V"), + (0x11DEA, "X"), + (0x11EE0, "V"), + (0x11EF9, "X"), + (0x11F00, "V"), + (0x11F11, "X"), + (0x11F12, "V"), + (0x11F3B, "X"), + (0x11F3E, "V"), + (0x11F5B, "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"), + (0x13460, "V"), + (0x143FB, "X"), + (0x14400, "V"), + (0x14647, "X"), + (0x16100, "V"), + (0x1613A, "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"), + (0x16D40, "V"), + (0x16D7A, "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"), + (0x16EA0, "M", "𖺻"), + (0x16EA1, "M", "𖺼"), + (0x16EA2, "M", "𖺽"), + (0x16EA3, "M", "𖺾"), + (0x16EA4, "M", "𖺿"), + (0x16EA5, "M", "𖻀"), + (0x16EA6, "M", "𖻁"), + (0x16EA7, "M", "𖻂"), + (0x16EA8, "M", "𖻃"), + (0x16EA9, "M", "𖻄"), + (0x16EAA, "M", "𖻅"), + (0x16EAB, "M", "𖻆"), + (0x16EAC, "M", "𖻇"), + (0x16EAD, "M", "𖻈"), + (0x16EAE, "M", "𖻉"), + (0x16EAF, "M", "𖻊"), + (0x16EB0, "M", "𖻋"), + (0x16EB1, "M", "𖻌"), + (0x16EB2, "M", "𖻍"), + (0x16EB3, "M", "𖻎"), + (0x16EB4, "M", "𖻏"), + (0x16EB5, "M", "𖻐"), + (0x16EB6, "M", "𖻑"), + (0x16EB7, "M", "𖻒"), + (0x16EB8, "M", "𖻓"), + (0x16EB9, "X"), + (0x16EBB, "V"), + (0x16ED4, "X"), + (0x16F00, "V"), + (0x16F4B, "X"), + (0x16F4F, "V"), + (0x16F88, "X"), + (0x16F8F, "V"), + (0x16FA0, "X"), + (0x16FE0, "V"), + (0x16FE5, "X"), + (0x16FF0, "V"), + (0x16FF7, "X"), + (0x17000, "V"), + (0x18CD6, "X"), + (0x18CFF, "V"), + (0x18D1F, "X"), + (0x18D80, "V"), + (0x18DF3, "X"), + (0x1AFF0, "V"), + (0x1AFF4, "X"), + (0x1AFF5, "V"), + (0x1AFFC, "X"), + (0x1AFFD, "V"), + (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"), + (0x1CC00, "V"), + (0x1CCD6, "M", "a"), + (0x1CCD7, "M", "b"), + (0x1CCD8, "M", "c"), + (0x1CCD9, "M", "d"), + (0x1CCDA, "M", "e"), + (0x1CCDB, "M", "f"), + (0x1CCDC, "M", "g"), + (0x1CCDD, "M", "h"), + (0x1CCDE, "M", "i"), + (0x1CCDF, "M", "j"), + (0x1CCE0, "M", "k"), + (0x1CCE1, "M", "l"), + (0x1CCE2, "M", "m"), + (0x1CCE3, "M", "n"), + (0x1CCE4, "M", "o"), + (0x1CCE5, "M", "p"), + (0x1CCE6, "M", "q"), + (0x1CCE7, "M", "r"), + (0x1CCE8, "M", "s"), + (0x1CCE9, "M", "t"), + (0x1CCEA, "M", "u"), + (0x1CCEB, "M", "v"), + (0x1CCEC, "M", "w"), + (0x1CCED, "M", "x"), + (0x1CCEE, "M", "y"), + (0x1CCEF, "M", "z"), + (0x1CCF0, "M", "0"), + (0x1CCF1, "M", "1"), + (0x1CCF2, "M", "2"), + (0x1CCF3, "M", "3"), + (0x1CCF4, "M", "4"), + (0x1CCF5, "M", "5"), + (0x1CCF6, "M", "6"), + (0x1CCF7, "M", "7"), + (0x1CCF8, "M", "8"), + (0x1CCF9, "M", "9"), + (0x1CCFA, "V"), + (0x1CCFD, "X"), + (0x1CD00, "V"), + (0x1CEB4, "X"), + (0x1CEBA, "V"), + (0x1CED1, "X"), + (0x1CEE0, "V"), + (0x1CEF1, "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, "I"), + (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"), + (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"), + (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"), + (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"), + (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"), + (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"), + (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"), + (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", "η"), + (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", "ω"), + (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", "κ"), + (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", "ж"), + (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"), + (0x1E5D0, "V"), + (0x1E5FB, "X"), + (0x1E5FF, "V"), + (0x1E600, "X"), + (0x1E6C0, "V"), + (0x1E6DF, "X"), + (0x1E6E0, "V"), + (0x1E6F6, "X"), + (0x1E6FE, "V"), + (0x1E700, "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", "𞤯"), + (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", "س"), + (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", "ذ"), + (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, "M", "0,"), + (0x1F102, "M", "1,"), + (0x1F103, "M", "2,"), + (0x1F104, "M", "3,"), + (0x1F105, "M", "4,"), + (0x1F106, "M", "5,"), + (0x1F107, "M", "6,"), + (0x1F108, "M", "7,"), + (0x1F109, "M", "8,"), + (0x1F10A, "M", "9,"), + (0x1F10B, "V"), + (0x1F110, "M", "(a)"), + (0x1F111, "M", "(b)"), + (0x1F112, "M", "(c)"), + (0x1F113, "M", "(d)"), + (0x1F114, "M", "(e)"), + (0x1F115, "M", "(f)"), + (0x1F116, "M", "(g)"), + (0x1F117, "M", "(h)"), + (0x1F118, "M", "(i)"), + (0x1F119, "M", "(j)"), + (0x1F11A, "M", "(k)"), + (0x1F11B, "M", "(l)"), + (0x1F11C, "M", "(m)"), + (0x1F11D, "M", "(n)"), + (0x1F11E, "M", "(o)"), + (0x1F11F, "M", "(p)"), + (0x1F120, "M", "(q)"), + (0x1F121, "M", "(r)"), + (0x1F122, "M", "(s)"), + (0x1F123, "M", "(t)"), + (0x1F124, "M", "(u)"), + (0x1F125, "M", "(v)"), + (0x1F126, "M", "(w)"), + (0x1F127, "M", "(x)"), + (0x1F128, "M", "(y)"), + (0x1F129, "M", "(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"), + (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"), + (0x1F6D9, "X"), + (0x1F6DC, "V"), + (0x1F6ED, "X"), + (0x1F6F0, "V"), + (0x1F6FD, "X"), + (0x1F700, "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"), + (0x1F8BC, "X"), + (0x1F8C0, "V"), + (0x1F8C2, "X"), + (0x1F8D0, "V"), + (0x1F8D9, "X"), + (0x1F900, "V"), + (0x1FA58, "X"), + (0x1FA60, "V"), + (0x1FA6E, "X"), + (0x1FA70, "V"), + (0x1FA7D, "X"), + (0x1FA80, "V"), + (0x1FA8B, "X"), + (0x1FA8E, "V"), + (0x1FAC7, "X"), + (0x1FAC8, "V"), + (0x1FAC9, "X"), + (0x1FACD, "V"), + (0x1FADD, "X"), + (0x1FADF, "V"), + (0x1FAEB, "X"), + (0x1FAEF, "V"), + (0x1FAF9, "X"), + (0x1FB00, "V"), + (0x1FB93, "X"), + (0x1FB94, "V"), + (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, "V"), + (0x1FBFB, "X"), + (0x20000, "V"), + (0x2A6E0, "X"), + (0x2A700, "V"), + (0x2B81E, "X"), + (0x2B820, "V"), + (0x2CEAE, "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", "咢"), + (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, "M", "㛼"), + (0x2F869, "M", "嬈"), + (0x2F86A, "M", "嬾"), + (0x2F86C, "M", "𡧈"), + (0x2F86D, "M", "寃"), + (0x2F86E, "M", "寘"), + (0x2F86F, "M", "寧"), + (0x2F870, "M", "寳"), + (0x2F871, "M", "𡬘"), + (0x2F872, "M", "寿"), + (0x2F873, "M", "将"), + (0x2F874, "M", "当"), + (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", "慎"), + (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", "滇"), + (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, "M", "𤎫"), + (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, "M", "竮"), + (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", "𦉇"), + (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, "M", "䗗"), + (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", "起"), + (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"), + (0x3347A, "X"), + (0xE0100, "I"), + (0xE01F0, "X"), +) diff --git a/intelliaide/vendor/jsonpickle-1.5.1.dist-info/INSTALLER b/intelliaide/vendor/jsonpickle-1.5.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/intelliaide/vendor/jsonpickle-1.5.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/intelliaide/vendor/jsonpickle-1.5.1.dist-info/LICENSE b/intelliaide/vendor/jsonpickle-1.5.1.dist-info/LICENSE new file mode 100644 index 0000000..3b8dc58 --- /dev/null +++ b/intelliaide/vendor/jsonpickle-1.5.1.dist-info/LICENSE @@ -0,0 +1,29 @@ +Copyright (C) 2008 John Paulett (john -at- paulett.org) +Copyright (C) 2009-2018 David Aguilar (davvid -at- gmail.com) +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. The name of the author may not be used to endorse or promote + products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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/intelliaide/vendor/jsonpickle-1.5.1.dist-info/METADATA b/intelliaide/vendor/jsonpickle-1.5.1.dist-info/METADATA new file mode 100644 index 0000000..a4fb79d --- /dev/null +++ b/intelliaide/vendor/jsonpickle-1.5.1.dist-info/METADATA @@ -0,0 +1,179 @@ +Metadata-Version: 2.1 +Name: jsonpickle +Version: 1.5.1 +Summary: Python library for serializing any arbitrary object graph into JSON +Home-page: https://github.com/jsonpickle/jsonpickle +Author: David Aguilar +Author-email: davvid@gmail.com +License: UNKNOWN +Keywords: json pickle,json,pickle,marshal,serialization,JavaScript Object Notation +Platform: POSIX +Platform: Windows +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: JavaScript +Classifier: Operating System :: OS Independent +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Requires-Python: >=2.7 +Requires-Dist: importlib-metadata ; python_version < "3.8" +Provides-Extra: docs +Requires-Dist: sphinx ; extra == 'docs' +Requires-Dist: jaraco.packaging (>=3.2) ; extra == 'docs' +Requires-Dist: rst.linker (>=1.9) ; extra == 'docs' +Provides-Extra: testing +Requires-Dist: coverage (<5) ; extra == 'testing' +Requires-Dist: pytest (!=3.7.3,>=3.5) ; extra == 'testing' +Requires-Dist: pytest-checkdocs (>=1.2.3) ; extra == 'testing' +Requires-Dist: pytest-flake8 ; extra == 'testing' +Requires-Dist: pytest-black-multipy ; extra == 'testing' +Requires-Dist: pytest-cov ; extra == 'testing' +Requires-Dist: ecdsa ; extra == 'testing' +Requires-Dist: feedparser ; extra == 'testing' +Requires-Dist: numpy ; extra == 'testing' +Requires-Dist: pandas ; extra == 'testing' +Requires-Dist: pymongo ; extra == 'testing' +Requires-Dist: sklearn ; extra == 'testing' +Requires-Dist: sqlalchemy ; extra == 'testing' +Provides-Extra: testing.libs +Requires-Dist: demjson ; extra == 'testing.libs' +Requires-Dist: simplejson ; extra == 'testing.libs' +Requires-Dist: ujson ; extra == 'testing.libs' +Requires-Dist: yajl ; extra == 'testing.libs' +Requires-Dist: enum34 ; (python_version == "2.7") and extra == 'testing' +Requires-Dist: jsonlib ; (python_version == "2.7") and extra == 'testing' + +.. image:: https://img.shields.io/pypi/v/jsonpickle.svg + :target: `PyPI link`_ + +.. image:: https://img.shields.io/pypi/pyversions/jsonpickle.svg + :target: `PyPI link`_ + +.. _PyPI link: https://pypi.org/project/jsonpickle + +.. image:: https://dev.azure.com/jaraco/jsonpickle/_apis/build/status/jaraco.jsonpickle?branchName=master + :target: https://dev.azure.com/jaraco/jsonpickle/_build/latest?definitionId=1&branchName=master + +.. image:: https://readthedocs.org/projects/jsonpickle/badge/?version=latest + :target: https://jsonpickle.readthedocs.io/en/latest/?badge=latest + +.. image:: https://travis-ci.org/jsonpickle/jsonpickle.svg?branch=master + :target: https://travis-ci.org/jsonpickle/jsonpickle + :alt: travis + +.. image:: https://img.shields.io/badge/License-BSD%203--Clause-blue.svg + :target: https://github.com/jsonpickle/jsonpickle/blob/master/COPYING + :alt: BSD + + +jsonpickle +========== +jsonpickle is a library for the two-way conversion of complex Python objects +and `JSON `_. jsonpickle builds upon the existing JSON +encoders, such as simplejson, json, and demjson. + +For complete documentation, please visit the +`jsonpickle documentation `_. + +Bug reports and merge requests are encouraged at the +`jsonpickle repository on github `_. + +jsonpickle supports Python 2.7 and Python 3.4 or greater. + + **WARNING**: + jsonpickle can execute arbitrary Python code. Do not load jsonpickles from untrusted / unauthenticated sources. + +Why jsonpickle? +=============== +Data serialized with python's pickle (or cPickle or dill) is not easily readable outside of python. Using the json format, jsonpickle allows simple data types to be stored in a human-readable format, and more complex data types such as numpy arrays and pandas dataframes, to be machine-readable on any platform that supports json. E.g., unlike pickled data, jsonpickled data stored in an Amazon S3 bucket is indexible by Amazon's Athena. + +Install +======= + +Install from pip for the latest stable release: + +:: + + pip install jsonpickle + +Install from github for the latest changes: + +:: + + pip install git+https://github.com/jsonpickle/jsonpickle.git + +If you have the files checked out for development: + +:: + + git clone https://github.com/jsonpickle/jsonpickle.git + cd jsonpickle + python setup.py develop + + +Numpy Support +============= +jsonpickle includes a built-in numpy extension. If would like to encode +sklearn models, numpy arrays, and other numpy-based data then you must +enable the numpy extension by registering its handlers:: + + >>> import jsonpickle.ext.numpy as jsonpickle_numpy + >>> jsonpickle_numpy.register_handlers() + +Pandas Support +============== +jsonpickle includes a built-in pandas extension. If would like to encode +pandas DataFrame or Series objects then you must enable the pandas extension +by registering its handlers:: + + >>> import jsonpickle.ext.pandas as jsonpickle_pandas + >>> jsonpickle_pandas.register_handlers() + +jsonpickleJS +============ +`jsonpickleJS `_ +is a javascript implementation of jsonpickle by Michael Scott Cuthbert. +jsonpickleJS can be extremely useful for projects that have parallel data +structures between Python and Javascript. + +License +======= +Licensed under the BSD License. See COPYING for details. +See jsonpickleJS/LICENSE for details about the jsonpickleJS license. + +Development +=========== + +Use `make` to run the unit tests:: + + make test + +`pytest` is used to run unit tests internally. + +A `tox` target is provided to run tests using tox. +Setting ``multi=1`` tests using all installed and supported Python versions:: + + make tox + make tox multi=1 + +`jsonpickle` itself has no dependencies beyond the Python stdlib. +`tox` is required for testing when using the `tox` test runner only. + +The testing requirements are specified in `requirements-dev.txt`. +It is recommended to create a virtualenv and run tests from within the +virtualenv, or use a tool such as `vx `_ +to activate the virtualenv without polluting the shell environment:: + + python3 -mvenv env3x + vx env3x pip install --requirement requirements-dev.txt + vx env3x make test + +`jsonpickle` supports multiple Python versions, so using a combination of +multiple virtualenvs and `tox` is useful in order to catch compatibility +issues when developing. + + diff --git a/intelliaide/vendor/jsonpickle-1.5.1.dist-info/RECORD b/intelliaide/vendor/jsonpickle-1.5.1.dist-info/RECORD new file mode 100644 index 0000000..c44afba --- /dev/null +++ b/intelliaide/vendor/jsonpickle-1.5.1.dist-info/RECORD @@ -0,0 +1,30 @@ +jsonpickle-1.5.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +jsonpickle-1.5.1.dist-info/LICENSE,sha256=x0J1XN545Tr9tDrZCzeskCyA81D41CGSSYCKl2WclqY,1493 +jsonpickle-1.5.1.dist-info/METADATA,sha256=zQsd_8r3eVlFC9njLPazwnlFjMiPYr1QIevaMLIrsis,6632 +jsonpickle-1.5.1.dist-info/RECORD,, +jsonpickle-1.5.1.dist-info/WHEEL,sha256=Z-nyYpwrcSqxfdux5Mbn_DQ525iP7J2DG3JgGvOYyTQ,110 +jsonpickle-1.5.1.dist-info/top_level.txt,sha256=cdRDYlLc4XOT2KzzPurieMn-XW_3YxFzopwdeDqPFVs,11 +jsonpickle/__init__.py,sha256=1Az0ZGQbumVkaxKs0VC51yK0lwspN9N-v4menGQeRes,2585 +jsonpickle/__pycache__/__init__.cpython-312.pyc,, +jsonpickle/__pycache__/backend.cpython-312.pyc,, +jsonpickle/__pycache__/compat.cpython-312.pyc,, +jsonpickle/__pycache__/handlers.cpython-312.pyc,, +jsonpickle/__pycache__/pickler.cpython-312.pyc,, +jsonpickle/__pycache__/tags.cpython-312.pyc,, +jsonpickle/__pycache__/unpickler.cpython-312.pyc,, +jsonpickle/__pycache__/util.cpython-312.pyc,, +jsonpickle/__pycache__/version.cpython-312.pyc,, +jsonpickle/backend.py,sha256=_OdeFpbnbqOkb6C6MIe95ohNHeDpLBIswVuNTHCmZJE,10312 +jsonpickle/compat.py,sha256=5rkux_slQiyqI6dODJUK7VdDM_x5ksfJbgz4A4OS5_Q,1025 +jsonpickle/ext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +jsonpickle/ext/__pycache__/__init__.cpython-312.pyc,, +jsonpickle/ext/__pycache__/numpy.cpython-312.pyc,, +jsonpickle/ext/__pycache__/pandas.cpython-312.pyc,, +jsonpickle/ext/numpy.py,sha256=w2YgZqR3FSE6u3hPz9ririDBkYIAtrInjeGlDWHJ3qw,12339 +jsonpickle/ext/pandas.py,sha256=GULGS0Da5prD9Tdo5Mhvq_EBzFWcVfZqT0gmqa0PRXM,7231 +jsonpickle/handlers.py,sha256=yvAI7unS9dcRPYvOws9YqUNiRA9BwbNjX2Vx-gB768c,8460 +jsonpickle/pickler.py,sha256=baIG2IeX7miKtGMJl-Q5HpYLILrnzDGWpHKc--eV4Ww,26702 +jsonpickle/tags.py,sha256=QSrEwfvGvqPJxy6KkTKskDKqstm76RulfX8uBrbfn70,986 +jsonpickle/unpickler.py,sha256=EdxyuluNiOwy7g_BGpTD2AWQmYUVccHF1-RIsh5O_4c,25825 +jsonpickle/util.py,sha256=2HGA8CCBwgwiSrXV7PY2XP1vun2RtpvJRSkgouCSs1I,14515 +jsonpickle/version.py,sha256=blvoKVdqIhtMALqv8aFBVj56EYIXUJJMAUkZTec9Ttg,448 diff --git a/intelliaide/vendor/jsonpickle-1.5.1.dist-info/WHEEL b/intelliaide/vendor/jsonpickle-1.5.1.dist-info/WHEEL new file mode 100644 index 0000000..01b8fc7 --- /dev/null +++ b/intelliaide/vendor/jsonpickle-1.5.1.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.36.2) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/intelliaide/vendor/jsonpickle-1.5.1.dist-info/top_level.txt b/intelliaide/vendor/jsonpickle-1.5.1.dist-info/top_level.txt new file mode 100644 index 0000000..dc15bbd --- /dev/null +++ b/intelliaide/vendor/jsonpickle-1.5.1.dist-info/top_level.txt @@ -0,0 +1 @@ +jsonpickle diff --git a/intelliaide/vendor/jsonpickle/__init__.py b/intelliaide/vendor/jsonpickle/__init__.py new file mode 100644 index 0000000..bf92575 --- /dev/null +++ b/intelliaide/vendor/jsonpickle/__init__.py @@ -0,0 +1,85 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2008 John Paulett (john -at- paulett.org) +# Copyright (C) 2009, 2011, 2013 David Aguilar (davvid -at- gmail.com) +# All rights reserved. +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. + +"""Python library for serializing any arbitrary object graph into JSON. + +.. warning:: + + jsonpickle can execute arbitrary Python code. Do not load jsonpickles from + untrusted / unauthenticated sources. + +jsonpickle can take almost any Python object and turn the object into JSON. +Additionally, it can reconstitute the object back into Python. + +The object must be accessible globally via a module and must +inherit from object (AKA new-style classes). + +Create an object:: + + class Thing(object): + def __init__(self, name): + self.name = name + + obj = Thing('Awesome') + +Use jsonpickle to transform the object into a JSON string:: + + import jsonpickle + frozen = jsonpickle.encode(obj) + +Use jsonpickle to recreate a Python object from a JSON string:: + + thawed = jsonpickle.decode(frozen) + +The new object has the same type and data, but essentially is now a copy of +the original. + +.. code-block:: python + + assert obj.name == thawed.name + +If you will never need to load (regenerate the Python class from JSON), you can +pass in the keyword unpicklable=False to prevent extra information from being +added to JSON:: + + oneway = jsonpickle.encode(obj, unpicklable=False) + result = jsonpickle.decode(oneway) + assert obj.name == result['name'] == 'Awesome' + +""" +from __future__ import absolute_import, division, unicode_literals + +from .backend import json +from .pickler import encode +from .unpickler import decode + +# Export other names not in __all__ +from .backend import JSONBackend # noqa: F401 +from .version import __version__ # noqa: F401 +from .handlers import register # noqa: F401 +from .handlers import unregister # noqa: F401 +from .pickler import Pickler # noqa: F401 +from .unpickler import Unpickler # noqa: F401 + +__all__ = ('encode', 'decode') + +# register built-in handlers +__import__('jsonpickle.handlers', level=0) + +# Export specific JSONPluginMgr methods into the jsonpickle namespace +set_preferred_backend = json.set_preferred_backend +set_decoder_options = json.set_decoder_options +set_encoder_options = json.set_encoder_options +load_backend = json.load_backend +remove_backend = json.remove_backend +enable_fallthrough = json.enable_fallthrough + +# json.load(), loads(), dump(), dumps() compatibility +dumps = encode +loads = decode diff --git a/intelliaide/vendor/jsonpickle/backend.py b/intelliaide/vendor/jsonpickle/backend.py new file mode 100644 index 0000000..e547dae --- /dev/null +++ b/intelliaide/vendor/jsonpickle/backend.py @@ -0,0 +1,294 @@ +from __future__ import absolute_import, division, unicode_literals + +from .compat import string_types +from .compat import PY3_ORDERED_DICT + + +class JSONBackend(object): + """Manages encoding and decoding using various backends. + + It tries these modules in this order: + simplejson, json, demjson + + simplejson is a fast and popular backend and is tried first. + json comes with Python and is tried second. + demjson is the most permissive backend and is tried last. + + """ + + def __init__(self, fallthrough=True): + # Whether we should fallthrough to the next backend + self._fallthrough = fallthrough + # The names of backends that have been successfully imported + self._backend_names = [] + + # A dictionary mapping backend names to encode/decode functions + self._encoders = {} + self._decoders = {} + + # Options to pass to specific encoders + self._encoder_options = {} + + # Options to pass to specific decoders + self._decoder_options = {} + + # The exception class that is thrown when a decoding error occurs + self._decoder_exceptions = {} + + # Whether we've loaded any backends successfully + self._verified = False + + self.load_backend('simplejson') + self.load_backend('json') + self.load_backend('demjson', 'encode', 'decode', 'JSONDecodeError') + self.load_backend('jsonlib', 'write', 'read', 'ReadError') + self.load_backend('yajl') + self.load_backend('ujson') + + # Defaults for various encoders + sort = not PY3_ORDERED_DICT + json_opts = ((), {'sort_keys': sort}) + self._encoder_options = { + 'ujson': ((), {'sort_keys': sort, 'escape_forward_slashes': False}), + 'json': json_opts, + 'simplejson': json_opts, + 'django.util.simplejson': json_opts, + } + + def _verify(self): + """Ensures that we've loaded at least one JSON backend.""" + if self._verified: + return + raise AssertionError( + 'jsonpickle requires at least one of the ' + 'following:\n' + ' python2.6, simplejson, or demjson' + ) + + def enable_fallthrough(self, enable): + """ + Disable jsonpickle's fallthrough-on-error behavior + + By default, jsonpickle tries the next backend when decoding or + encoding using a backend fails. + + This can make it difficult to force jsonpickle to use a specific + backend, and catch errors, because the error will be suppressed and + may not be raised by the subsequent backend. + + Calling `enable_backend(False)` will make jsonpickle immediately + re-raise any exceptions raised by the backends. + + """ + self._fallthrough = enable + + def load_backend(self, name, dumps='dumps', loads='loads', loads_exc=ValueError): + + """Load a JSON backend by name. + + This method loads a backend and sets up references to that + backend's loads/dumps functions and exception classes. + + :param dumps: is the name of the backend's encode method. + The method should take an object and return a string. + Defaults to 'dumps'. + :param loads: names the backend's method for the reverse + operation -- returning a Python object from a string. + :param loads_exc: can be either the name of the exception class + used to denote decoding errors, or it can be a direct reference + to the appropriate exception class itself. If it is a name, + then the assumption is that an exception class of that name + can be found in the backend module's namespace. + :param load: names the backend's 'load' method. + :param dump: names the backend's 'dump' method. + :rtype bool: True on success, False if the backend could not be loaded. + + """ + try: + # Load the JSON backend + mod = __import__(name) + except ImportError: + return False + + # Handle submodules, e.g. django.utils.simplejson + try: + for attr in name.split('.')[1:]: + mod = getattr(mod, attr) + except AttributeError: + return False + + if not self._store(self._encoders, name, mod, dumps) or not self._store( + self._decoders, name, mod, loads + ): + return False + + if isinstance(loads_exc, string_types): + # This backend's decoder exception is part of the backend + if not self._store(self._decoder_exceptions, name, mod, loads_exc): + return False + else: + # simplejson uses ValueError + self._decoder_exceptions[name] = loads_exc + + # Setup the default args and kwargs for this encoder/decoder + self._encoder_options.setdefault(name, ([], {})) + self._decoder_options.setdefault(name, ([], {})) + + # Add this backend to the list of candidate backends + self._backend_names.append(name) + + # Indicate that we successfully loaded a JSON backend + self._verified = True + return True + + def remove_backend(self, name): + """Remove all entries for a particular backend.""" + self._encoders.pop(name, None) + self._decoders.pop(name, None) + self._decoder_exceptions.pop(name, None) + self._decoder_options.pop(name, None) + self._encoder_options.pop(name, None) + if name in self._backend_names: + self._backend_names.remove(name) + self._verified = bool(self._backend_names) + + def encode(self, obj, indent=None, separators=None): + """ + Attempt to encode an object into JSON. + + This tries the loaded backends in order and passes along the last + exception if no backend is able to encode the object. + + """ + self._verify() + + if not self._fallthrough: + name = self._backend_names[0] + return self.backend_encode(name, obj, indent=indent, separators=separators) + + for idx, name in enumerate(self._backend_names): + try: + return self.backend_encode( + name, obj, indent=indent, separators=separators + ) + except Exception as e: + if idx == len(self._backend_names) - 1: + raise e + + # def dumps + dumps = encode + + def backend_encode(self, name, obj, indent=None, separators=None): + optargs, optkwargs = self._encoder_options.get(name, ([], {})) + encoder_kwargs = optkwargs.copy() + if indent is not None: + encoder_kwargs['indent'] = indent + if separators is not None: + encoder_kwargs['separators'] = separators + encoder_args = (obj,) + tuple(optargs) + return self._encoders[name](*encoder_args, **encoder_kwargs) + + def decode(self, string): + """ + Attempt to decode an object from a JSON string. + + This tries the loaded backends in order and passes along the last + exception if no backends are able to decode the string. + + """ + self._verify() + + if not self._fallthrough: + name = self._backend_names[0] + return self.backend_decode(name, string) + + for idx, name in enumerate(self._backend_names): + try: + return self.backend_decode(name, string) + except self._decoder_exceptions[name] as e: + if idx == len(self._backend_names) - 1: + raise e + else: + pass # and try a more forgiving encoder, e.g. demjson + + # def loads + loads = decode + + def backend_decode(self, name, string): + optargs, optkwargs = self._decoder_options.get(name, ((), {})) + decoder_kwargs = optkwargs.copy() + return self._decoders[name](string, *optargs, **decoder_kwargs) + + def set_preferred_backend(self, name): + """ + Set the preferred json backend. + + If a preferred backend is set then jsonpickle tries to use it + before any other backend. + + For example:: + + set_preferred_backend('simplejson') + + If the backend is not one of the built-in jsonpickle backends + (json/simplejson, or demjson) then you must load the backend + prior to calling set_preferred_backend. + + AssertionError is raised if the backend has not been loaded. + + """ + if name in self._backend_names: + self._backend_names.remove(name) + self._backend_names.insert(0, name) + else: + errmsg = 'The "%s" backend has not been loaded.' % name + raise AssertionError(errmsg) + + def set_encoder_options(self, name, *args, **kwargs): + """ + Associate encoder-specific options with an encoder. + + After calling set_encoder_options, any calls to jsonpickle's + encode method will pass the supplied args and kwargs along to + the appropriate backend's encode method. + + For example:: + + set_encoder_options('simplejson', sort_keys=True, indent=4) + set_encoder_options('demjson', compactly=False) + + See the appropriate encoder's documentation for details about + the supported arguments and keyword arguments. + + """ + self._encoder_options[name] = (args, kwargs) + + def set_decoder_options(self, name, *args, **kwargs): + """ + Associate decoder-specific options with a decoder. + + After calling set_decoder_options, any calls to jsonpickle's + decode method will pass the supplied args and kwargs along to + the appropriate backend's decode method. + + For example:: + + set_decoder_options('simplejson', encoding='utf8', cls=JSONDecoder) + set_decoder_options('demjson', strict=True) + + See the appropriate decoder's documentation for details about + the supported arguments and keyword arguments. + + """ + self._decoder_options[name] = (args, kwargs) + + def _store(self, dct, backend, obj, name): + try: + dct[backend] = getattr(obj, name) + except AttributeError: + self.remove_backend(backend) + return False + return True + + +json = JSONBackend() diff --git a/intelliaide/vendor/jsonpickle/compat.py b/intelliaide/vendor/jsonpickle/compat.py new file mode 100644 index 0000000..bf96712 --- /dev/null +++ b/intelliaide/vendor/jsonpickle/compat.py @@ -0,0 +1,39 @@ +from __future__ import absolute_import, division, unicode_literals +import sys +import types +import base64 + +PY_MAJOR = sys.version_info[0] +PY2 = PY_MAJOR == 2 +PY3 = PY_MAJOR == 3 +PY3_ORDERED_DICT = PY3 and sys.version_info[1] >= 6 # Python 3.6+ + +class_types = (type,) +iterator_types = (type(iter('')),) + +if PY3: + import builtins + import queue + from base64 import encodebytes, decodebytes + from collections.abc import Iterator as abc_iterator + + string_types = (str,) + numeric_types = (int, float) + ustr = str +else: + from collections import Iterator as abc_iterator # noqa + + builtins = __import__('__builtin__') + class_types += (types.ClassType,) + encodebytes = base64.encodestring + decodebytes = base64.decodestring + string_types = (builtins.basestring,) + numeric_types = (int, float, builtins.long) + queue = __import__('Queue') + ustr = builtins.unicode + + +def iterator(class_): + if PY2 and hasattr(class_, '__next__'): + class_.next = class_.__next__ + return class_ diff --git a/intelliaide/vendor/jsonpickle/ext/__init__.py b/intelliaide/vendor/jsonpickle/ext/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/intelliaide/vendor/jsonpickle/ext/numpy.py b/intelliaide/vendor/jsonpickle/ext/numpy.py new file mode 100644 index 0000000..d456839 --- /dev/null +++ b/intelliaide/vendor/jsonpickle/ext/numpy.py @@ -0,0 +1,337 @@ +from __future__ import absolute_import +import ast +import sys +import zlib +import warnings +import json + +import numpy as np + +from ..handlers import BaseHandler, register, unregister +from ..compat import numeric_types +from ..util import b64decode, b64encode +from .. import compat + + +__all__ = ['register_handlers', 'unregister_handlers'] + +native_byteorder = '<' if sys.byteorder == 'little' else '>' + + +def get_byteorder(arr): + """translate equals sign to native order""" + byteorder = arr.dtype.byteorder + return native_byteorder if byteorder == '=' else byteorder + + +class NumpyBaseHandler(BaseHandler): + def flatten_dtype(self, dtype, data): + if hasattr(dtype, 'tostring'): + data['dtype'] = dtype.tostring() + else: + dtype = compat.ustr(dtype) + prefix = '(numpy.record, ' + if dtype.startswith(prefix): + dtype = dtype[len(prefix) : -1] + data['dtype'] = dtype + + def restore_dtype(self, data): + dtype = data['dtype'] + if dtype.startswith(('{', '[')): + dtype = ast.literal_eval(dtype) + return np.dtype(dtype) + + +class NumpyDTypeHandler(NumpyBaseHandler): + def flatten(self, obj, data): + self.flatten_dtype(obj, data) + return data + + def restore(self, data): + return self.restore_dtype(data) + + +class NumpyGenericHandler(NumpyBaseHandler): + def flatten(self, obj, data): + self.flatten_dtype(obj.dtype.newbyteorder('N'), data) + data['value'] = self.context.flatten(obj.tolist(), reset=False) + return data + + def restore(self, data): + value = self.context.restore(data['value'], reset=False) + return self.restore_dtype(data).type(value) + + +class NumpyNDArrayHandler(NumpyBaseHandler): + """Stores arrays as text representation, without regard for views""" + + def flatten_flags(self, obj, data): + if obj.flags.writeable is False: + data['writeable'] = False + + def restore_flags(self, data, arr): + if not data.get('writeable', True): + arr.flags.writeable = False + + def flatten(self, obj, data): + self.flatten_dtype(obj.dtype.newbyteorder('N'), data) + self.flatten_flags(obj, data) + data['values'] = self.context.flatten(obj.tolist(), reset=False) + if 0 in obj.shape: + # add shape information explicitly as it cannot be + # inferred from an empty list + data['shape'] = obj.shape + return data + + def restore(self, data): + values = self.context.restore(data['values'], reset=False) + arr = np.array( + values, dtype=self.restore_dtype(data), order=data.get('order', 'C') + ) + shape = data.get('shape', None) + if shape is not None: + arr = arr.reshape(shape) + + self.restore_flags(data, arr) + return arr + + +class NumpyNDArrayHandlerBinary(NumpyNDArrayHandler): + """stores arrays with size greater than 'size_threshold' as + (optionally) compressed base64 + + Notes + ----- + This would be easier to implement using np.save/np.load, but + that would be less language-agnostic + """ + + def __init__(self, size_threshold=16, compression=zlib): + """ + :param size_threshold: nonnegative int or None + valid values for 'size_threshold' are all nonnegative + integers and None + if size_threshold is None, values are always stored as nested lists + :param compression: a compression module or None + valid values for 'compression' are {zlib, bz2, None} + if compresion is None, no compression is applied + """ + self.size_threshold = size_threshold + self.compression = compression + + def flatten_byteorder(self, obj, data): + byteorder = obj.dtype.byteorder + if byteorder != '|': + data['byteorder'] = get_byteorder(obj) + + def restore_byteorder(self, data, arr): + byteorder = data.get('byteorder', None) + if byteorder: + arr.dtype = arr.dtype.newbyteorder(byteorder) + + def flatten(self, obj, data): + """encode numpy to json""" + if self.size_threshold is None or self.size_threshold >= obj.size: + # encode as text + data = super(NumpyNDArrayHandlerBinary, self).flatten(obj, data) + else: + # encode as binary + if obj.dtype == np.object: + # There's a bug deep in the bowels of numpy that causes a + # segfault when round-tripping an ndarray of dtype object. + # E.g., the following will result in a segfault: + # import numpy as np + # arr = np.array([str(i) for i in range(3)], + # dtype=np.object) + # dtype = arr.dtype + # shape = arr.shape + # buf = arr.tobytes() + # del arr + # arr = np.ndarray(buffer=buf, dtype=dtype, + # shape=shape).copy() + # So, save as a binary-encoded list in this case + buf = json.dumps(obj.tolist()).encode() + elif hasattr(obj, 'tobytes'): + # numpy docstring is lacking as of 1.11.2, + # but this is the option we need + buf = obj.tobytes(order='a') + else: + # numpy < 1.9 compatibility + buf = obj.tostring(order='a') + if self.compression: + buf = self.compression.compress(buf) + data['values'] = b64encode(buf) + data['shape'] = obj.shape + self.flatten_dtype(obj.dtype.newbyteorder('N'), data) + self.flatten_byteorder(obj, data) + self.flatten_flags(obj, data) + + if not obj.flags.c_contiguous: + data['order'] = 'F' + + return data + + def restore(self, data): + """decode numpy from json""" + values = data['values'] + if isinstance(values, list): + # decode text representation + arr = super(NumpyNDArrayHandlerBinary, self).restore(data) + elif isinstance(values, numeric_types): + # single-value array + arr = np.array([values], dtype=self.restore_dtype(data)) + else: + # decode binary representation + dtype = self.restore_dtype(data) + buf = b64decode(values) + if self.compression: + buf = self.compression.decompress(buf) + # See note above about segfault bug for numpy dtype object. Those + # are saved as a list to work around that. + if dtype == np.object: + values = json.loads(buf.decode()) + arr = np.array(values, dtype=dtype, order=data.get('order', 'C')) + shape = data.get('shape', None) + if shape is not None: + arr = arr.reshape(shape) + else: + arr = np.ndarray( + buffer=buf, + dtype=dtype, + shape=data.get('shape'), + order=data.get('order', 'C'), + ).copy() # make a copy, to force the result to own the data + self.restore_byteorder(data, arr) + self.restore_flags(data, arr) + + return arr + + +class NumpyNDArrayHandlerView(NumpyNDArrayHandlerBinary): + """Pickles references inside ndarrays, or array-views + + Notes + ----- + The current implementation has some restrictions. + + 'base' arrays, or arrays which are viewed by other arrays, + must be f-or-c-contiguous. + This is not such a large restriction in practice, because all + numpy array creation is c-contiguous by default. + Relaxing this restriction would be nice though; especially if + it can be done without bloating the design too much. + + Furthermore, ndarrays which are views of array-like objects + implementing __array_interface__, + but which are not themselves nd-arrays, are deepcopied with + a warning (by default), + as we cannot guarantee whatever custom logic such classes + implement is correctly reproduced. + """ + + def __init__(self, mode='warn', size_threshold=16, compression=zlib): + """ + :param mode: {'warn', 'raise', 'ignore'} + How to react when encountering array-like objects whos + references we cannot safely serialize + :param size_threshold: nonnegative int or None + valid values for 'size_threshold' are all nonnegative + integers and None + if size_threshold is None, values are always stored as nested lists + :param compression: a compression module or None + valid values for 'compression' are {zlib, bz2, None} + if compresion is None, no compression is applied + """ + super(NumpyNDArrayHandlerView, self).__init__(size_threshold, compression) + self.mode = mode + + def flatten(self, obj, data): + """encode numpy to json""" + base = obj.base + if base is None and obj.flags.forc: + # store by value + data = super(NumpyNDArrayHandlerView, self).flatten(obj, data) + # ensure that views on arrays stored as text + # are interpreted correctly + if not obj.flags.c_contiguous: + data['order'] = 'F' + elif isinstance(base, np.ndarray) and base.flags.forc: + # store by reference + data['base'] = self.context.flatten(base, reset=False) + + offset = obj.ctypes.data - base.ctypes.data + if offset: + data['offset'] = offset + + if not obj.flags.c_contiguous: + data['strides'] = obj.strides + + data['shape'] = obj.shape + self.flatten_dtype(obj.dtype.newbyteorder('N'), data) + self.flatten_flags(obj, data) + + if get_byteorder(obj) != '|': + byteorder = 'S' if get_byteorder(obj) != get_byteorder(base) else None + if byteorder: + data['byteorder'] = byteorder + + if self.size_threshold is None or self.size_threshold >= obj.size: + # not used in restore since base is present, but + # include values for human-readability + super(NumpyNDArrayHandlerBinary, self).flatten(obj, data) + else: + # store a deepcopy or fail + if self.mode == 'warn': + msg = ( + "ndarray is defined by reference to an object " + "we do not know how to serialize. " + "A deep copy is serialized instead, breaking " + "memory aliasing." + ) + warnings.warn(msg) + elif self.mode == 'raise': + msg = ( + "ndarray is defined by reference to an object we do " + "not know how to serialize." + ) + raise ValueError(msg) + data = super(NumpyNDArrayHandlerView, self).flatten(obj.copy(), data) + + return data + + def restore(self, data): + """decode numpy from json""" + base = data.get('base', None) + if base is None: + # decode array with owndata=True + arr = super(NumpyNDArrayHandlerView, self).restore(data) + else: + # decode array view, which references the data of another array + base = self.context.restore(base, reset=False) + assert ( + base.flags.forc + ), "Current implementation assumes base is C or F contiguous" + + arr = np.ndarray( + buffer=base.data, + dtype=self.restore_dtype(data).newbyteorder(data.get('byteorder', '|')), + shape=data.get('shape'), + offset=data.get('offset', 0), + strides=data.get('strides', None), + ) + + self.restore_flags(data, arr) + + return arr + + +def register_handlers(): + register(np.dtype, NumpyDTypeHandler, base=True) + register(np.generic, NumpyGenericHandler, base=True) + register(np.ndarray, NumpyNDArrayHandlerView(), base=True) + + +def unregister_handlers(): + unregister(np.dtype) + unregister(np.generic) + unregister(np.ndarray) diff --git a/intelliaide/vendor/jsonpickle/ext/pandas.py b/intelliaide/vendor/jsonpickle/ext/pandas.py new file mode 100644 index 0000000..985b5a0 --- /dev/null +++ b/intelliaide/vendor/jsonpickle/ext/pandas.py @@ -0,0 +1,235 @@ +from __future__ import absolute_import + +import pandas as pd +from io import StringIO +import zlib + +from .. import encode, decode +from ..handlers import BaseHandler, register, unregister +from ..util import b64decode, b64encode +from .numpy import register_handlers as register_numpy_handlers +from .numpy import unregister_handlers as unregister_numpy_handlers + +__all__ = ['register_handlers', 'unregister_handlers'] + + +class PandasProcessor(object): + def __init__(self, size_threshold=500, compression=zlib): + """ + :param size_threshold: nonnegative int or None + valid values for 'size_threshold' are all nonnegative + integers and None. If size_threshold is None, + dataframes are always stored as csv strings + :param compression: a compression module or None + valid values for 'compression' are {zlib, bz2, None} + if compresion is None, no compression is applied + """ + self.size_threshold = size_threshold + self.compression = compression + + def flatten_pandas(self, buf, data, meta=None): + if self.size_threshold is not None and len(buf) > self.size_threshold: + if self.compression: + buf = self.compression.compress(buf.encode()) + data['comp'] = True + data['values'] = b64encode(buf) + data['txt'] = False + else: + data['values'] = buf + data['txt'] = True + + data['meta'] = meta + return data + + def restore_pandas(self, data): + if data.get('txt', True): + # It's just text... + buf = data['values'] + else: + buf = b64decode(data['values']) + if data.get('comp', False): + buf = self.compression.decompress(buf).decode() + meta = data.get('meta', {}) + return (buf, meta) + + +def make_read_csv_params(meta): + meta_dtypes = meta.get('dtypes', {}) + + parse_dates = [] + converters = {} + dtype = {} + timedeltas = [] + for k, v in meta_dtypes.items(): + if v.startswith('datetime'): + parse_dates.append(k) + elif v.startswith('complex'): + converters[k] = complex + elif v.startswith('timedelta'): + timedeltas.append(k) + dtype[k] = 'object' + else: + dtype[k] = v + + return dict(dtype=dtype, parse_dates=parse_dates, converters=converters), timedeltas + + +class PandasDfHandler(BaseHandler): + pp = PandasProcessor() + + def flatten(self, obj, data): + dtype = obj.dtypes.to_dict() + + meta = {'dtypes': {k: str(dtype[k]) for k in dtype}, 'index': encode(obj.index)} + + data = self.pp.flatten_pandas( + obj.reset_index(drop=True).to_csv(index=False), data, meta + ) + return data + + def restore(self, data): + csv, meta = self.pp.restore_pandas(data) + params, timedeltas = make_read_csv_params(meta) + df = ( + pd.read_csv(StringIO(csv), **params) + if data['values'].strip() + else pd.DataFrame() + ) + for col in timedeltas: + df[col] = pd.to_timedelta(df[col]) + + df.set_index(decode(meta['index']), inplace=True) + return df + + +class PandasSeriesHandler(BaseHandler): + pp = PandasProcessor() + + def flatten(self, obj, data): + """Flatten the index and values for reconstruction""" + data['name'] = obj.name + # This relies on the numpy handlers for the inner guts. + data['index'] = self.context.flatten(obj.index, reset=False) + data['values'] = self.context.flatten(obj.values, reset=False) + return data + + def restore(self, data): + """Restore the flattened data""" + name = data['name'] + index = self.context.restore(data['index'], reset=False) + values = self.context.restore(data['values'], reset=False) + return pd.Series(values, index=index, name=name) + + +class PandasIndexHandler(BaseHandler): + + pp = PandasProcessor() + index_constructor = pd.Index + + def name_bundler(self, obj): + return {'name': obj.name} + + def flatten(self, obj, data): + name_bundle = self.name_bundler(obj) + meta = dict(dtype=str(obj.dtype), **name_bundle) + buf = encode(obj.tolist()) + data = self.pp.flatten_pandas(buf, data, meta) + return data + + def restore(self, data): + buf, meta = self.pp.restore_pandas(data) + dtype = meta.get('dtype', None) + name_bundle = {k: v for k, v in meta.items() if k in {'name', 'names'}} + idx = self.index_constructor(decode(buf), dtype=dtype, **name_bundle) + return idx + + +class PandasPeriodIndexHandler(PandasIndexHandler): + index_constructor = pd.PeriodIndex + + +class PandasMultiIndexHandler(PandasIndexHandler): + def name_bundler(self, obj): + return {'names': obj.names} + + +class PandasTimestampHandler(BaseHandler): + pp = PandasProcessor() + + def flatten(self, obj, data): + meta = {'isoformat': obj.isoformat()} + buf = '' + data = self.pp.flatten_pandas(buf, data, meta) + return data + + def restore(self, data): + _, meta = self.pp.restore_pandas(data) + isoformat = meta['isoformat'] + obj = pd.Timestamp(isoformat) + return obj + + +class PandasPeriodHandler(BaseHandler): + pp = PandasProcessor() + + def flatten(self, obj, data): + meta = { + 'start_time': encode(obj.start_time), + 'freqstr': obj.freqstr, + } + buf = '' + data = self.pp.flatten_pandas(buf, data, meta) + return data + + def restore(self, data): + _, meta = self.pp.restore_pandas(data) + start_time = decode(meta['start_time']) + freqstr = meta['freqstr'] + obj = pd.Period(start_time, freqstr) + return obj + + +class PandasIntervalHandler(BaseHandler): + pp = PandasProcessor() + + def flatten(self, obj, data): + meta = { + 'left': encode(obj.left), + 'right': encode(obj.right), + 'closed': obj.closed, + } + buf = '' + data = self.pp.flatten_pandas(buf, data, meta) + return data + + def restore(self, data): + _, meta = self.pp.restore_pandas(data) + left = decode(meta['left']) + right = decode(meta['right']) + closed = str(meta['closed']) + obj = pd.Interval(left, right, closed=closed) + return obj + + +def register_handlers(): + register_numpy_handlers() + register(pd.DataFrame, PandasDfHandler, base=True) + register(pd.Series, PandasSeriesHandler, base=True) + register(pd.Index, PandasIndexHandler, base=True) + register(pd.PeriodIndex, PandasPeriodIndexHandler, base=True) + register(pd.MultiIndex, PandasMultiIndexHandler, base=True) + register(pd.Timestamp, PandasTimestampHandler, base=True) + register(pd.Period, PandasPeriodHandler, base=True) + register(pd.Interval, PandasIntervalHandler, base=True) + + +def unregister_handlers(): + unregister_numpy_handlers() + unregister(pd.DataFrame) + unregister(pd.Series) + unregister(pd.Index) + unregister(pd.PeriodIndex) + unregister(pd.MultiIndex) + unregister(pd.Timestamp) + unregister(pd.Period) + unregister(pd.Interval) diff --git a/intelliaide/vendor/jsonpickle/handlers.py b/intelliaide/vendor/jsonpickle/handlers.py new file mode 100644 index 0000000..551c802 --- /dev/null +++ b/intelliaide/vendor/jsonpickle/handlers.py @@ -0,0 +1,294 @@ +""" +Custom handlers may be created to handle other objects. Each custom handler +must derive from :class:`jsonpickle.handlers.BaseHandler` and +implement ``flatten`` and ``restore``. + +A handler can be bound to other types by calling +:func:`jsonpickle.handlers.register`. + +""" +from __future__ import absolute_import, division, unicode_literals +import array +import copy +import datetime +import io +import re +import sys +import threading +import uuid + +from . import compat +from . import util + + +class Registry(object): + def __init__(self): + self._handlers = {} + self._base_handlers = {} + + def get(self, cls_or_name, default=None): + """ + :param cls_or_name: the type or its fully qualified name + :param default: default value, if a matching handler is not found + + Looks up a handler by type reference or its fully + qualified name. If a direct match + is not found, the search is performed over all + handlers registered with base=True. + """ + handler = self._handlers.get(cls_or_name) + # attempt to find a base class + if handler is None and util.is_type(cls_or_name): + for cls, base_handler in self._base_handlers.items(): + if issubclass(cls_or_name, cls): + return base_handler + return default if handler is None else handler + + def register(self, cls, handler=None, base=False): + """Register the a custom handler for a class + + :param cls: The custom object class to handle + :param handler: The custom handler class (if + None, a decorator wrapper is returned) + :param base: Indicates whether the handler should + be registered for all subclasses + + This function can be also used as a decorator + by omitting the `handler` argument:: + + @jsonpickle.handlers.register(Foo, base=True) + class FooHandler(jsonpickle.handlers.BaseHandler): + pass + + """ + if handler is None: + + def _register(handler_cls): + self.register(cls, handler=handler_cls, base=base) + return handler_cls + + return _register + if not util.is_type(cls): + raise TypeError('{!r} is not a class/type'.format(cls)) + # store both the name and the actual type for the ugly cases like + # _sre.SRE_Pattern that cannot be loaded back directly + self._handlers[util.importable_name(cls)] = self._handlers[cls] = handler + if base: + # only store the actual type for subclass checking + self._base_handlers[cls] = handler + + def unregister(self, cls): + self._handlers.pop(cls, None) + self._handlers.pop(util.importable_name(cls), None) + self._base_handlers.pop(cls, None) + + +registry = Registry() +register = registry.register +unregister = registry.unregister +get = registry.get + + +class BaseHandler(object): + def __init__(self, context): + """ + Initialize a new handler to handle a registered type. + + :Parameters: + - `context`: reference to pickler/unpickler + + """ + self.context = context + + def __call__(self, context): + """This permits registering either Handler instances or classes + + :Parameters: + - `context`: reference to pickler/unpickler + """ + self.context = context + return self + + def flatten(self, obj, data): + """ + Flatten `obj` into a json-friendly form and write result to `data`. + + :param object obj: The object to be serialized. + :param dict data: A partially filled dictionary which will contain the + json-friendly representation of `obj` once this method has + finished. + """ + raise NotImplementedError('You must implement flatten() in %s' % self.__class__) + + def restore(self, obj): + """ + Restore an object of the registered type from the json-friendly + representation `obj` and return it. + """ + raise NotImplementedError('You must implement restore() in %s' % self.__class__) + + @classmethod + def handles(self, cls): + """ + Register this handler for the given class. Suitable as a decorator, + e.g.:: + + @MyCustomHandler.handles + class MyCustomClass: + def __reduce__(self): + ... + """ + registry.register(cls, self) + return cls + + +class ArrayHandler(BaseHandler): + """Flatten and restore array.array objects""" + + def flatten(self, obj, data): + data['typecode'] = obj.typecode + data['values'] = self.context.flatten(obj.tolist(), reset=False) + return data + + def restore(self, data): + typecode = data['typecode'] + values = self.context.restore(data['values'], reset=False) + if typecode == 'c': + values = [bytes(x) for x in values] + return array.array(typecode, values) + + +ArrayHandler.handles(array.array) + + +class DatetimeHandler(BaseHandler): + + """Custom handler for datetime objects + + Datetime objects use __reduce__, and they generate binary strings encoding + the payload. This handler encodes that payload to reconstruct the + object. + + """ + + def flatten(self, obj, data): + pickler = self.context + if not pickler.unpicklable: + if hasattr(obj, 'isoformat'): + result = obj.isoformat() + else: + result = compat.ustr(obj) + return result + cls, args = obj.__reduce__() + flatten = pickler.flatten + payload = util.b64encode(args[0]) + args = [payload] + [flatten(i, reset=False) for i in args[1:]] + data['__reduce__'] = (flatten(cls, reset=False), args) + return data + + def restore(self, data): + cls, args = data['__reduce__'] + unpickler = self.context + restore = unpickler.restore + cls = restore(cls, reset=False) + value = util.b64decode(args[0]) + params = (value,) + tuple([restore(i, reset=False) for i in args[1:]]) + return cls.__new__(cls, *params) + + +DatetimeHandler.handles(datetime.datetime) +DatetimeHandler.handles(datetime.date) +DatetimeHandler.handles(datetime.time) + + +class RegexHandler(BaseHandler): + """Flatten _sre.SRE_Pattern (compiled regex) objects""" + + def flatten(self, obj, data): + data['pattern'] = obj.pattern + return data + + def restore(self, data): + return re.compile(data['pattern']) + + +RegexHandler.handles(type(re.compile(''))) + + +class QueueHandler(BaseHandler): + """Opaquely serializes Queue objects + + Queues contains mutex and condition variables which cannot be serialized. + Construct a new Queue instance when restoring. + + """ + + def flatten(self, obj, data): + return data + + def restore(self, data): + return compat.queue.Queue() + + +QueueHandler.handles(compat.queue.Queue) + + +class CloneFactory(object): + """Serialization proxy for collections.defaultdict's default_factory""" + + def __init__(self, exemplar): + self.exemplar = exemplar + + def __call__(self, clone=copy.copy): + """Create new instances by making copies of the provided exemplar""" + return clone(self.exemplar) + + def __repr__(self): + return ''.format(id(self), self.exemplar) + + +class UUIDHandler(BaseHandler): + """Serialize uuid.UUID objects""" + + def flatten(self, obj, data): + data['hex'] = obj.hex + return data + + def restore(self, data): + return uuid.UUID(data['hex']) + + +UUIDHandler.handles(uuid.UUID) + + +class LockHandler(BaseHandler): + """Serialize threading.Lock objects""" + + def flatten(self, obj, data): + data['locked'] = obj.locked() + return data + + def restore(self, data): + lock = threading.Lock() + if data.get('locked', False): + lock.acquire() + return lock + + +_lock = threading.Lock() +LockHandler.handles(_lock.__class__) + + +class TextIOHandler(BaseHandler): + """Serialize file descriptors as None because we cannot roundtrip""" + + def flatten(self, obj, data): + return None + + def restore(self, data): + """Restore should never get called because flatten() returns None""" + raise AssertionError('Restoring IO.TextIOHandler is not supported') + + +if sys.version_info >= (3, 8): + TextIOHandler.handles(io.TextIOWrapper) diff --git a/intelliaide/vendor/jsonpickle/pickler.py b/intelliaide/vendor/jsonpickle/pickler.py new file mode 100644 index 0000000..a61980f --- /dev/null +++ b/intelliaide/vendor/jsonpickle/pickler.py @@ -0,0 +1,758 @@ +# Copyright (C) 2008 John Paulett (john -at- paulett.org) +# Copyright (C) 2009-2018 David Aguilar (davvid -at- gmail.com) +# All rights reserved. +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. +from __future__ import absolute_import, division, unicode_literals +import decimal +import warnings +import sys +import types +from itertools import chain, islice + +from . import compat +from . import util +from . import tags +from . import handlers +from .backend import json +from .compat import numeric_types, string_types, PY3, PY2 + + +def encode( + value, + unpicklable=True, + make_refs=True, + keys=False, + max_depth=None, + reset=True, + backend=None, + warn=False, + context=None, + max_iter=None, + use_decimal=False, + numeric_keys=False, + use_base85=False, + fail_safe=None, + indent=None, + separators=None, +): + """Return a JSON formatted representation of value, a Python object. + + :param unpicklable: If set to False then the output will not contain the + information necessary to turn the JSON data back into Python objects, + but a simpler JSON stream is produced. + :param max_depth: If set to a non-negative integer then jsonpickle will + not recurse deeper than 'max_depth' steps into the object. Anything + deeper than 'max_depth' is represented using a Python repr() of the + object. + :param make_refs: If set to False jsonpickle's referencing support is + disabled. Objects that are id()-identical won't be preserved across + encode()/decode(), but the resulting JSON stream will be conceptually + simpler. jsonpickle detects cyclical objects and will break the cycle + by calling repr() instead of recursing when make_refs is set False. + :param keys: If set to True then jsonpickle will encode non-string + dictionary keys instead of coercing them into strings via `repr()`. + This is typically what you want if you need to support Integer or + objects as dictionary keys. + :param numeric_keys: Only use this option if the backend supports integer + dict keys natively. This flag tells jsonpickle to leave numeric keys + as-is rather than conforming them to json-friendly strings. + Using ``keys=True`` is the typical solution for integer keys, so only + use this if you have a specific use case where you want to allow the + backend to handle serialization of numeric dict keys. + :param warn: If set to True then jsonpickle will warn when it + returns None for an object which it cannot pickle + (e.g. file descriptors). + :param max_iter: If set to a non-negative integer then jsonpickle will + consume at most `max_iter` items when pickling iterators. + :param use_decimal: If set to True jsonpickle will allow Decimal + instances to pass-through, with the assumption that the simplejson + backend will be used in `use_decimal` mode. In order to use this mode + you will need to configure simplejson:: + + jsonpickle.set_encoder_options('simplejson', + use_decimal=True, sort_keys=True) + jsonpickle.set_decoder_options('simplejson', + use_decimal=True) + jsonpickle.set_preferred_backend('simplejson') + + NOTE: A side-effect of the above settings is that float values will be + converted to Decimal when converting to json. + :param use_base85: + If possible, use base85 to encode binary data. Base85 bloats binary data + by 1/4 as opposed to base64, which expands it by 1/3. This argument is + ignored on Python 2 because it doesn't support it. + :param fail_safe: If set to a function exceptions are ignored when pickling + and if a exception happens the function is called and the return value + is used as the value for the object that caused the error + :param indent: When `indent` is a non-negative integer, then JSON array + elements and object members will be pretty-printed with that indent + level. An indent level of 0 will only insert newlines. ``None`` is + the most compact representation. Since the default item separator is + ``(', ', ': ')``, the output might include trailing whitespace when + ``indent`` is specified. You can use ``separators=(',', ': ')`` to + avoid this. This value is passed directly to the active JSON backend + library and not used by jsonpickle directly. + :param separators: + If ``separators`` is an ``(item_separator, dict_separator)`` tuple + then it will be used instead of the default ``(', ', ': ')`` + separators. ``(',', ':')`` is the most compact JSON representation. + This value is passed directly to the active JSON backend library and + not used by jsonpickle directly. + + >>> encode('my string') == '"my string"' + True + >>> encode(36) == '36' + True + >>> encode({'foo': True}) == '{"foo": true}' + True + >>> encode({'foo': [1, 2, [3, 4]]}, max_depth=1) + '{"foo": "[1, 2, [3, 4]]"}' + + """ + backend = backend or json + context = context or Pickler( + unpicklable=unpicklable, + make_refs=make_refs, + keys=keys, + backend=backend, + max_depth=max_depth, + warn=warn, + max_iter=max_iter, + numeric_keys=numeric_keys, + use_decimal=use_decimal, + use_base85=use_base85, + fail_safe=fail_safe, + ) + return backend.encode( + context.flatten(value, reset=reset), indent=indent, separators=separators + ) + + +class Pickler(object): + def __init__( + self, + unpicklable=True, + make_refs=True, + max_depth=None, + backend=None, + keys=False, + warn=False, + max_iter=None, + numeric_keys=False, + use_decimal=False, + use_base85=False, + fail_safe=None, + ): + self.unpicklable = unpicklable + self.make_refs = make_refs + self.backend = backend or json + self.keys = keys + self.warn = warn + self.numeric_keys = numeric_keys + self.use_base85 = use_base85 and (not PY2) + # The current recursion depth + self._depth = -1 + # The maximal recursion depth + self._max_depth = max_depth + # Maps id(obj) to reference IDs + self._objs = {} + # Avoids garbage collection + self._seen = [] + # maximum amount of items to take from a pickled iterator + self._max_iter = max_iter + # Whether to allow decimals to pass-through + self._use_decimal = use_decimal + # A cache of objects that have already been flattened. + self._flattened = {} + + if self.use_base85: + self._bytes_tag = tags.B85 + self._bytes_encoder = util.b85encode + else: + self._bytes_tag = tags.B64 + self._bytes_encoder = util.b64encode + + # ignore exceptions + self.fail_safe = fail_safe + + def reset(self): + self._objs = {} + self._depth = -1 + self._seen = [] + self._flattened = {} + + def _push(self): + """Steps down one level in the namespace.""" + self._depth += 1 + + def _pop(self, value): + """Step up one level in the namespace and return the value. + If we're at the root, reset the pickler's state. + """ + self._depth -= 1 + if self._depth == -1: + self.reset() + return value + + def _log_ref(self, obj): + """ + Log a reference to an in-memory object. + Return True if this object is new and was assigned + a new ID. Otherwise return False. + """ + objid = id(obj) + is_new = objid not in self._objs + if is_new: + new_id = len(self._objs) + self._objs[objid] = new_id + return is_new + + def _mkref(self, obj): + """ + Log a reference to an in-memory object, and return + if that object should be considered newly logged. + """ + is_new = self._log_ref(obj) + # Pretend the object is new + pretend_new = not self.unpicklable or not self.make_refs + return pretend_new or is_new + + def _getref(self, obj): + return {tags.ID: self._objs.get(id(obj))} + + def flatten(self, obj, reset=True): + """Takes an object and returns a JSON-safe representation of it. + + Simply returns any of the basic builtin datatypes + + >>> p = Pickler() + >>> p.flatten('hello world') == 'hello world' + True + >>> p.flatten(49) + 49 + >>> p.flatten(350.0) + 350.0 + >>> p.flatten(True) + True + >>> p.flatten(False) + False + >>> r = p.flatten(None) + >>> r is None + True + >>> p.flatten(False) + False + >>> p.flatten([1, 2, 3, 4]) + [1, 2, 3, 4] + >>> p.flatten((1,2,))[tags.TUPLE] + [1, 2] + >>> p.flatten({'key': 'value'}) == {'key': 'value'} + True + """ + if reset: + self.reset() + return self._flatten(obj) + + def _flatten(self, obj): + if self.unpicklable and self.make_refs: + result = self._flatten_impl(obj) + else: + try: + result = self._flattened[id(obj)] + except KeyError: + result = self._flattened[id(obj)] = self._flatten_impl(obj) + return result + + def _flatten_impl(self, obj): + ######################################### + # if obj is nonrecursive return immediately + # for performance reasons we don't want to do recursive checks + if PY2 and isinstance(obj, types.FileType): + return self._flatten_file(obj) + + if type(obj) is bytes: + return self._flatten_bytestring(obj) + + # Decimal is a primitive when use_decimal is True + if type(obj) in util.PRIMITIVES or ( + self._use_decimal and isinstance(obj, decimal.Decimal) + ): + return obj + ######################################### + + self._push() + return self._pop(self._flatten_obj(obj)) + + def _max_reached(self): + return self._depth == self._max_depth + + def _flatten_obj(self, obj): + self._seen.append(obj) + + max_reached = self._max_reached() + + try: + + in_cycle = _in_cycle(obj, self._objs, max_reached, self.make_refs) + if in_cycle: + # break the cycle + flatten_func = repr + else: + flatten_func = self._get_flattener(obj) + + if flatten_func is None: + self._pickle_warning(obj) + return None + + return flatten_func(obj) + + except (KeyboardInterrupt, SystemExit) as e: + raise e + except Exception as e: + if self.fail_safe is None: + raise e + else: + return self.fail_safe(e) + + def _list_recurse(self, obj): + return [self._flatten(v) for v in obj] + + def _get_flattener(self, obj): + if type(obj) is list: + if self._mkref(obj): + return self._list_recurse + else: + self._push() + return self._getref + + elif type(obj) is dict: + if self._mkref(obj): + return self._flatten_dict_obj + else: + self._push() + return self._getref + + # We handle tuples and sets by encoding them in a "(tuple|set)dict" + elif type(obj) is tuple: + if not self.unpicklable: + return self._list_recurse + return lambda obj: {tags.TUPLE: [self._flatten(v) for v in obj]} + + elif type(obj) is set: + if not self.unpicklable: + return self._list_recurse + return lambda obj: {tags.SET: [self._flatten(v) for v in obj]} + + elif util.is_object(obj): + return self._ref_obj_instance + + elif util.is_type(obj): + return _mktyperef + + elif util.is_module_function(obj): + return self._flatten_function + + # instance methods, lambdas, old style classes... + self._pickle_warning(obj) + return None + + def _ref_obj_instance(self, obj): + """Reference an existing object or flatten if new""" + if self.unpicklable: + if self._mkref(obj): + # We've never seen this object so return its + # json representation. + return self._flatten_obj_instance(obj) + # We've seen this object before so place an object + # reference tag in the data. This avoids infinite recursion + # when processing cyclical objects. + return self._getref(obj) + else: + max_reached = self._max_reached() + in_cycle = _in_cycle(obj, self._objs, max_reached, False) + if in_cycle: + # A circular becomes None. + return None + + self._mkref(obj) + return self._flatten_obj_instance(obj) + + def _flatten_file(self, obj): + """ + Special case file objects + """ + assert not PY3 and isinstance(obj, types.FileType) + return None + + def _flatten_bytestring(self, obj): + if PY2: + try: + return obj.decode('utf-8') + except UnicodeDecodeError: + pass + return {self._bytes_tag: self._bytes_encoder(obj)} + + def _flatten_obj_instance(self, obj): + """Recursively flatten an instance and return a json-friendly dict""" + data = {} + has_class = hasattr(obj, '__class__') + has_dict = hasattr(obj, '__dict__') + has_slots = not has_dict and hasattr(obj, '__slots__') + has_getnewargs = util.has_method(obj, '__getnewargs__') + has_getnewargs_ex = util.has_method(obj, '__getnewargs_ex__') + has_getinitargs = util.has_method(obj, '__getinitargs__') + has_reduce, has_reduce_ex = util.has_reduce(obj) + + # Support objects with __getstate__(); this ensures that + # both __setstate__() and __getstate__() are implemented + has_getstate = hasattr(obj, '__getstate__') + # not using has_method since __getstate__() is handled separately below + + if has_class: + cls = obj.__class__ + else: + cls = type(obj) + + # Check for a custom handler + class_name = util.importable_name(cls) + handler = handlers.get(cls, handlers.get(class_name)) + if handler is not None: + if self.unpicklable: + data[tags.OBJECT] = class_name + return handler(self).flatten(obj, data) + + reduce_val = None + + if self.unpicklable: + if has_reduce and not has_reduce_ex: + try: + reduce_val = obj.__reduce__() + except TypeError: + # A lot of builtin types have a reduce which + # just raises a TypeError + # we ignore those + pass + + # test for a reduce implementation, and redirect before + # doing anything else if that is what reduce requests + elif has_reduce_ex: + try: + # we're implementing protocol 2 + reduce_val = obj.__reduce_ex__(2) + except TypeError: + # A lot of builtin types have a reduce which + # just raises a TypeError + # we ignore those + pass + + if reduce_val and isinstance(reduce_val, string_types): + try: + varpath = iter(reduce_val.split('.')) + # curmod will be transformed by the + # loop into the value to pickle + curmod = sys.modules[next(varpath)] + for modname in varpath: + curmod = getattr(curmod, modname) + # replace obj with value retrieved + return self._flatten(curmod) + except KeyError: + # well, we can't do anything with that, so we ignore it + pass + + elif reduce_val: + # at this point, reduce_val should be some kind of iterable + # pad out to len 5 + rv_as_list = list(reduce_val) + insufficiency = 5 - len(rv_as_list) + if insufficiency: + rv_as_list += [None] * insufficiency + + if getattr(rv_as_list[0], '__name__', '') == '__newobj__': + rv_as_list[0] = tags.NEWOBJ + + f, args, state, listitems, dictitems = rv_as_list + + # check that getstate/setstate is sane + if not ( + state + and hasattr(obj, '__getstate__') + and not hasattr(obj, '__setstate__') + and not isinstance(obj, dict) + ): + # turn iterators to iterables for convenient serialization + if rv_as_list[3]: + rv_as_list[3] = tuple(rv_as_list[3]) + + if rv_as_list[4]: + rv_as_list[4] = tuple(rv_as_list[4]) + + reduce_args = list(map(self._flatten, rv_as_list)) + last_index = len(reduce_args) - 1 + while last_index >= 2 and reduce_args[last_index] is None: + last_index -= 1 + data[tags.REDUCE] = reduce_args[: last_index + 1] + + return data + + if has_class and not util.is_module(obj): + if self.unpicklable: + data[tags.OBJECT] = class_name + + if has_getnewargs_ex: + data[tags.NEWARGSEX] = list(map(self._flatten, obj.__getnewargs_ex__())) + + if has_getnewargs and not has_getnewargs_ex: + data[tags.NEWARGS] = self._flatten(obj.__getnewargs__()) + + if has_getinitargs: + data[tags.INITARGS] = self._flatten(obj.__getinitargs__()) + + if has_getstate: + try: + state = obj.__getstate__() + except TypeError: + # Has getstate but it cannot be called, e.g. file descriptors + # in Python3 + self._pickle_warning(obj) + return None + else: + return self._getstate(state, data) + + if util.is_module(obj): + if self.unpicklable: + data[tags.REPR] = '{name}/{name}'.format(name=obj.__name__) + else: + data = compat.ustr(obj) + return data + + if util.is_dictionary_subclass(obj): + self._flatten_dict_obj(obj, data) + return data + + if util.is_sequence_subclass(obj): + return self._flatten_sequence_obj(obj, data) + + if util.is_iterator(obj): + # force list in python 3 + data[tags.ITERATOR] = list(map(self._flatten, islice(obj, self._max_iter))) + return data + + if has_dict: + # Support objects that subclasses list and set + if util.is_sequence_subclass(obj): + return self._flatten_sequence_obj(obj, data) + + # hack for zope persistent objects; this unghostifies the object + getattr(obj, '_', None) + return self._flatten_dict_obj(obj.__dict__, data) + + if has_slots: + return self._flatten_newstyle_with_slots(obj, data) + + # catchall return for data created above without a return + # (e.g. __getnewargs__ is not supposed to be the end of the story) + if data: + return data + + self._pickle_warning(obj) + return None + + def _flatten_function(self, obj): + if self.unpicklable: + data = {tags.FUNCTION: util.importable_name(obj)} + else: + data = None + + return data + + def _flatten_dict_obj(self, obj, data=None): + """Recursively call flatten() and return json-friendly dict""" + if data is None: + data = obj.__class__() + + # If we allow non-string keys then we have to do a two-phase + # encoding to ensure that the reference IDs are deterministic. + if self.keys: + # Phase 1: serialize regular objects, ignore fancy keys. + flatten = self._flatten_string_key_value_pair + for k, v in util.items(obj): + flatten(k, v, data) + + # Phase 2: serialize non-string keys. + flatten = self._flatten_non_string_key_value_pair + for k, v in util.items(obj): + flatten(k, v, data) + else: + # If we have string keys only then we only need a single pass. + flatten = self._flatten_key_value_pair + for k, v in util.items(obj): + flatten(k, v, data) + + # the collections.defaultdict protocol + if hasattr(obj, 'default_factory') and callable(obj.default_factory): + factory = obj.default_factory + if util.is_type(factory): + # Reference the class/type + value = _mktyperef(factory) + else: + # The factory is not a type and could reference e.g. functions + # or even the object instance itself, which creates a cycle. + if self._mkref(factory): + # We've never seen this object before so pickle it in-place. + # Create an instance from the factory and assume that the + # resulting instance is a suitable examplar. + value = self._flatten_obj_instance(handlers.CloneFactory(factory())) + else: + # We've seen this object before. + # Break the cycle by emitting a reference. + value = self._getref(factory) + data['default_factory'] = value + + # Sub-classes of dict + if hasattr(obj, '__dict__') and self.unpicklable: + dict_data = {} + self._flatten_dict_obj(obj.__dict__, dict_data) + data['__dict__'] = dict_data + + return data + + def _flatten_obj_attrs(self, obj, attrs, data): + flatten = self._flatten_key_value_pair + ok = False + for k in attrs: + try: + value = getattr(obj, k) + flatten(k, value, data) + except AttributeError: + # The attribute may have been deleted + continue + ok = True + return ok + + def _flatten_newstyle_with_slots(self, obj, data): + """Return a json-friendly dict for new-style objects with __slots__.""" + allslots = [ + _wrap_string_slot(getattr(cls, '__slots__', tuple())) + for cls in obj.__class__.mro() + ] + + if not self._flatten_obj_attrs(obj, chain(*allslots), data): + attrs = [ + x for x in dir(obj) if not x.startswith('__') and not x.endswith('__') + ] + self._flatten_obj_attrs(obj, attrs, data) + + return data + + def _flatten_key_value_pair(self, k, v, data): + """Flatten a key/value pair into the passed-in dictionary.""" + if not util.is_picklable(k, v): + return data + + if k is None: + k = 'null' # for compatibility with common json encoders + + if self.numeric_keys and isinstance(k, numeric_types): + pass + elif not isinstance(k, string_types): + try: + k = repr(k) + except Exception: + k = compat.ustr(k) + + data[k] = self._flatten(v) + return data + + def _flatten_non_string_key_value_pair(self, k, v, data): + """Flatten only non-string key/value pairs""" + if not util.is_picklable(k, v): + return data + if self.keys and not isinstance(k, string_types): + k = self._escape_key(k) + data[k] = self._flatten(v) + return data + + def _flatten_string_key_value_pair(self, k, v, data): + """Flatten string key/value pairs only.""" + if not util.is_picklable(k, v): + return data + if self.keys: + if not isinstance(k, string_types): + return data + elif k.startswith(tags.JSON_KEY): + k = self._escape_key(k) + else: + if k is None: + k = 'null' # for compatibility with common json encoders + + if self.numeric_keys and isinstance(k, numeric_types): + pass + elif not isinstance(k, string_types): + try: + k = repr(k) + except Exception: + k = compat.ustr(k) + + data[k] = self._flatten(v) + return data + + def _flatten_sequence_obj(self, obj, data): + """Return a json-friendly dict for a sequence subclass.""" + if hasattr(obj, '__dict__'): + self._flatten_dict_obj(obj.__dict__, data) + value = [self._flatten(v) for v in obj] + if self.unpicklable: + data[tags.SEQ] = value + else: + return value + return data + + def _escape_key(self, k): + return tags.JSON_KEY + encode( + k, + reset=False, + keys=True, + context=self, + backend=self.backend, + make_refs=self.make_refs, + ) + + def _getstate(self, obj, data): + state = self._flatten(obj) + if self.unpicklable: + data[tags.STATE] = state + else: + data = state + return data + + def _pickle_warning(self, obj): + if self.warn: + msg = 'jsonpickle cannot pickle %r: replaced with None' % obj + warnings.warn(msg) + + +def _in_cycle(obj, objs, max_reached, make_refs): + """Detect cyclic structures that would lead to infinite recursion""" + return ( + (max_reached or (not make_refs and id(obj) in objs)) + and not util.is_primitive(obj) + and not util.is_enum(obj) + ) + + +def _mktyperef(obj): + """Return a typeref dictionary + + >>> _mktyperef(AssertionError) == {'py/type': 'builtins.AssertionError'} + True + + """ + return {tags.TYPE: util.importable_name(obj)} + + +def _wrap_string_slot(string): + """Converts __slots__ = 'a' into __slots__ = ('a',)""" + if isinstance(string, string_types): + return (string,) + return string diff --git a/intelliaide/vendor/jsonpickle/tags.py b/intelliaide/vendor/jsonpickle/tags.py new file mode 100644 index 0000000..6c02638 --- /dev/null +++ b/intelliaide/vendor/jsonpickle/tags.py @@ -0,0 +1,52 @@ +"""The jsonpickle.tags module provides the custom tags +used for pickling and unpickling Python objects. + +These tags are keys into the flattened dictionaries +created by the Pickler class. The Unpickler uses +these custom key names to identify dictionaries +that need to be specially handled. +""" +from __future__ import absolute_import, division, unicode_literals + + +BYTES = 'py/bytes' +B64 = 'py/b64' +B85 = 'py/b85' +FUNCTION = 'py/function' +ID = 'py/id' +INITARGS = 'py/initargs' +ITERATOR = 'py/iterator' +JSON_KEY = 'json://' +NEWARGS = 'py/newargs' +NEWARGSEX = 'py/newargsex' +NEWOBJ = 'py/newobj' +OBJECT = 'py/object' +REDUCE = 'py/reduce' +REF = 'py/ref' +REPR = 'py/repr' +SEQ = 'py/seq' +SET = 'py/set' +STATE = 'py/state' +TUPLE = 'py/tuple' +TYPE = 'py/type' + +# All reserved tag names +RESERVED = { + BYTES, + FUNCTION, + ID, + INITARGS, + ITERATOR, + NEWARGS, + NEWARGSEX, + NEWOBJ, + OBJECT, + REDUCE, + REF, + REPR, + SEQ, + SET, + STATE, + TUPLE, + TYPE, +} diff --git a/intelliaide/vendor/jsonpickle/unpickler.py b/intelliaide/vendor/jsonpickle/unpickler.py new file mode 100644 index 0000000..b3e1326 --- /dev/null +++ b/intelliaide/vendor/jsonpickle/unpickler.py @@ -0,0 +1,782 @@ +# Copyright (C) 2008 John Paulett (john -at- paulett.org) +# Copyright (C) 2009-2018 David Aguilar (davvid -at- gmail.com) +# All rights reserved. +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. +from __future__ import absolute_import, division, unicode_literals +import quopri +import sys + +from . import compat +from . import util +from . import tags +from . import handlers +from .compat import numeric_types +from .backend import json + + +def decode( + string, backend=None, context=None, keys=False, reset=True, safe=False, classes=None +): + """Convert a JSON string into a Python object. + + The keyword argument 'keys' defaults to False. + If set to True then jsonpickle will decode non-string dictionary keys + into python objects via the jsonpickle protocol. + + The keyword argument 'classes' defaults to None. + If set to a single class, or a sequence (list, set, tuple) of classes, + then the classes will be made available when constructing objects. This + can be used to give jsonpickle access to local classes that are not + available through the global module import scope. + + The keyword argument 'safe' defaults to False. + If set to True, eval() is avoided, but backwards-compatible + (pre-0.7.0) deserialization of repr-serialized objects is disabled. + + The keyword argument 'backend' defaults to None. + If set to an instance of jsonpickle.backend.JSONBackend, jsonpickle + will use that backend for deserialization. + + >>> decode('"my string"') == 'my string' + True + >>> decode('36') + 36 + """ + backend = backend or json + context = context or Unpickler(keys=keys, backend=backend, safe=safe) + data = backend.decode(string) + return context.restore(data, reset=reset, classes=classes) + + +def _safe_hasattr(obj, attr): + """Workaround unreliable hasattr() availability on sqlalchemy objects""" + try: + object.__getattribute__(obj, attr) + return True + except AttributeError: + return False + + +def _is_json_key(key): + """Has this key a special object that has been encoded to JSON?""" + return isinstance(key, compat.string_types) and key.startswith(tags.JSON_KEY) + + +class _Proxy(object): + """Proxies are dummy objects that are later replaced by real instances + + The `restore()` function has to solve a tricky problem when pickling + objects with cyclical references -- the parent instance does not yet + exist. + + The problem is that `__getnewargs__()`, `__getstate__()`, custom handlers, + and cyclical objects graphs are allowed to reference the yet-to-be-created + object via the referencing machinery. + + In other words, objects are allowed to depend on themselves for + construction! + + We solve this problem by placing dummy Proxy objects into the referencing + machinery so that we can construct the child objects before constructing + the parent. Objects are initially created with Proxy attribute values + instead of real references. + + We collect all objects that contain references to proxies and run + a final sweep over them to swap in the real instance. This is done + at the very end of the top-level `restore()`. + + The `instance` attribute below is replaced with the real instance + after `__new__()` has been used to construct the object and is used + when swapping proxies with real instances. + + """ + + def __init__(self): + self.instance = None + + def get(self): + return self.instance + + def reset(self, instance): + self.instance = instance + + +class _IDProxy(_Proxy): + def __init__(self, objs, index): + self._index = index + self._objs = objs + + def get(self): + return self._objs[self._index] + + +def _obj_setattr(obj, attr, proxy): + setattr(obj, attr, proxy.get()) + + +def _obj_setvalue(obj, idx, proxy): + obj[idx] = proxy.get() + + +class Unpickler(object): + def __init__(self, backend=None, keys=False, safe=False): + self.backend = backend or json + self.keys = keys + self.safe = safe + + self.reset() + + def reset(self): + """Resets the object's internal state.""" + # Map reference names to object instances + self._namedict = {} + + # The stack of names traversed for child objects + self._namestack = [] + + # Map of objects to their index in the _objs list + self._obj_to_idx = {} + self._objs = [] + self._proxies = [] + + # Extra local classes not accessible globally + self._classes = {} + + def restore(self, obj, reset=True, classes=None): + """Restores a flattened object to its original python state. + + Simply returns any of the basic builtin types + + >>> u = Unpickler() + >>> u.restore('hello world') == 'hello world' + True + >>> u.restore({'key': 'value'}) == {'key': 'value'} + True + + """ + if reset: + self.reset() + if classes: + self.register_classes(classes) + value = self._restore(obj) + if reset: + self._swap_proxies() + return value + + def register_classes(self, classes): + """Register one or more classes + + :param classes: sequence of classes or a single class to register + + """ + if isinstance(classes, (list, tuple, set)): + for cls in classes: + self.register_classes(cls) + else: + self._classes[util.importable_name(classes)] = classes + + def _swap_proxies(self): + """Replace proxies with their corresponding instances""" + for (obj, attr, proxy, method) in self._proxies: + method(obj, attr, proxy) + self._proxies = [] + + def _restore(self, obj): + # if obj isn't in these types, neither it nor nothing in it can have a tag + # don't change the tuple of types to a set, it won't work with isinstance + if not isinstance(obj, (str, list, dict, set, tuple)): + + def restore(x): + return x + + else: + restore = self._restore_tags(obj) + return restore(obj) + + def _restore_tags(self, obj): + try: + if not tags.RESERVED <= set(obj) and not type(obj) in (list, dict): + + def restore(x): + return x + + return restore + except TypeError: + pass + if has_tag(obj, tags.B64): + restore = self._restore_base64 + elif has_tag(obj, tags.B85): + restore = self._restore_base85 + elif has_tag(obj, tags.ID): + restore = self._restore_id + elif has_tag(obj, tags.ITERATOR): + restore = self._restore_iterator + elif has_tag(obj, tags.TYPE): + restore = self._restore_type + elif has_tag(obj, tags.REDUCE): + restore = self._restore_reduce + elif has_tag(obj, tags.OBJECT): + restore = self._restore_object + elif has_tag(obj, tags.FUNCTION): + restore = self._restore_function + elif has_tag(obj, tags.BYTES): # Backwards compatibility + restore = self._restore_quopri + elif has_tag(obj, tags.REF): # Backwards compatibility + restore = self._restore_ref + elif has_tag(obj, tags.REPR): # Backwards compatibility + restore = self._restore_repr + elif util.is_list(obj): + restore = self._restore_list + elif has_tag(obj, tags.TUPLE): + restore = self._restore_tuple + elif has_tag(obj, tags.SET): + restore = self._restore_set + elif util.is_dictionary(obj): + restore = self._restore_dict + else: + + def restore(x): + return x + + return restore + + def _restore_base64(self, obj): + return util.b64decode(obj[tags.B64].encode('utf-8')) + + def _restore_base85(self, obj): + return util.b85decode(obj[tags.B85].encode('utf-8')) + + #: For backwards compatibility with bytes data produced by older versions + def _restore_quopri(self, obj): + return quopri.decodestring(obj[tags.BYTES].encode('utf-8')) + + def _restore_iterator(self, obj): + return iter(self._restore_list(obj[tags.ITERATOR])) + + def _restore_reduce(self, obj): + """ + Supports restoring with all elements of __reduce__ as per pep 307. + Assumes that iterator items (the last two) are represented as lists + as per pickler implementation. + """ + proxy = _Proxy() + self._mkref(proxy) + reduce_val = list(map(self._restore, obj[tags.REDUCE])) + if len(reduce_val) < 5: + reduce_val.extend([None] * (5 - len(reduce_val))) + f, args, state, listitems, dictitems = reduce_val + + if f == tags.NEWOBJ or getattr(f, '__name__', '') == '__newobj__': + # mandated special case + cls = args[0] + if not isinstance(cls, type): + cls = self._restore(cls) + stage1 = cls.__new__(cls, *args[1:]) + else: + stage1 = f(*args) + + if state: + try: + stage1.__setstate__(state) + except AttributeError: + # it's fine - we'll try the prescribed default methods + try: + # we can't do a straight update here because we + # need object identity of the state dict to be + # preserved so that _swap_proxies works out + for k, v in stage1.__dict__.items(): + state.setdefault(k, v) + stage1.__dict__ = state + except AttributeError: + # next prescribed default + try: + for k, v in state.items(): + setattr(stage1, k, v) + except Exception: + dict_state, slots_state = state + if dict_state: + stage1.__dict__.update(dict_state) + if slots_state: + for k, v in slots_state.items(): + setattr(stage1, k, v) + + if listitems: + # should be lists if not None + try: + stage1.extend(listitems) + except AttributeError: + for x in listitems: + stage1.append(x) + + if dictitems: + for k, v in dictitems: + stage1.__setitem__(k, v) + + proxy.reset(stage1) + self._swapref(proxy, stage1) + return stage1 + + def _restore_id(self, obj): + try: + idx = obj[tags.ID] + return self._objs[idx] + except IndexError: + return _IDProxy(self._objs, idx) + + def _restore_ref(self, obj): + return self._namedict.get(obj[tags.REF]) + + def _restore_type(self, obj): + typeref = loadclass(obj[tags.TYPE], classes=self._classes) + if typeref is None: + return obj + return typeref + + def _restore_repr(self, obj): + if self.safe: + # eval() is not allowed in safe mode + return None + obj = loadrepr(obj[tags.REPR]) + return self._mkref(obj) + + def _restore_object(self, obj): + class_name = obj[tags.OBJECT] + cls = loadclass(class_name, classes=self._classes) + handler = handlers.get(cls, handlers.get(class_name)) + if handler is not None: # custom handler + proxy = _Proxy() + self._mkref(proxy) + instance = handler(self).restore(obj) + proxy.reset(instance) + self._swapref(proxy, instance) + return instance + + if cls is None: + return self._mkref(obj) + + return self._restore_object_instance(obj, cls) + + def _restore_function(self, obj): + return loadclass(obj[tags.FUNCTION], classes=self._classes) + + def _loadfactory(self, obj): + try: + default_factory = obj['default_factory'] + except KeyError: + return None + del obj['default_factory'] + return self._restore(default_factory) + + def _restore_object_instance(self, obj, cls): + # This is a placeholder proxy object which allows child objects to + # reference the parent object before it has been instantiated. + proxy = _Proxy() + self._mkref(proxy) + + # An object can install itself as its own factory, so load the factory + # after the instance is available for referencing. + factory = self._loadfactory(obj) + + if has_tag(obj, tags.NEWARGSEX): + args, kwargs = obj[tags.NEWARGSEX] + else: + args = getargs(obj, classes=self._classes) + kwargs = {} + if args: + args = self._restore(args) + if kwargs: + kwargs = self._restore(kwargs) + + is_oldstyle = not (isinstance(cls, type) or getattr(cls, '__meta__', None)) + try: + if (not is_oldstyle) and hasattr(cls, '__new__'): + # new style classes + if factory: + instance = cls.__new__(cls, factory, *args, **kwargs) + instance.default_factory = factory + else: + instance = cls.__new__(cls, *args, **kwargs) + else: + instance = object.__new__(cls) + except TypeError: # old-style classes + is_oldstyle = True + + if is_oldstyle: + try: + instance = cls(*args) + except TypeError: # fail gracefully + try: + instance = make_blank_classic(cls) + except Exception: # fail gracefully + return self._mkref(obj) + + proxy.reset(instance) + self._swapref(proxy, instance) + + if isinstance(instance, tuple): + return instance + + instance = self._restore_object_instance_variables(obj, instance) + + if _safe_hasattr(instance, 'default_factory') and isinstance( + instance.default_factory, _Proxy + ): + instance.default_factory = instance.default_factory.get() + + return instance + + def _restore_from_dict(self, obj, instance, ignorereserved=True): + restore_key = self._restore_key_fn() + method = _obj_setattr + deferred = {} + + for k, v in util.items(obj): + # ignore the reserved attribute + if ignorereserved and k in tags.RESERVED: + continue + if isinstance(k, numeric_types): + str_k = k.__str__() + else: + str_k = k + self._namestack.append(str_k) + k = restore_key(k) + # step into the namespace + value = self._restore(v) + if util.is_noncomplex(instance) or util.is_dictionary_subclass(instance): + try: + if k == '__dict__': + setattr(instance, k, value) + else: + instance[k] = value + except TypeError: + # Immutable object, must be constructed in one shot + if k != '__dict__': + deferred[k] = value + self._namestack.pop() + continue + else: + setattr(instance, k, value) + + # This instance has an instance variable named `k` that is + # currently a proxy and must be replaced + if isinstance(value, _Proxy): + self._proxies.append((instance, k, value, method)) + + # step out + self._namestack.pop() + + if deferred: + # SQLAlchemy Immutable mappings must be constructed in one shot + instance = instance.__class__(deferred) + + return instance + + def _restore_object_instance_variables(self, obj, instance): + instance = self._restore_from_dict(obj, instance) + + # Handle list and set subclasses + if has_tag(obj, tags.SEQ): + if hasattr(instance, 'append'): + for v in obj[tags.SEQ]: + instance.append(self._restore(v)) + elif hasattr(instance, 'add'): + for v in obj[tags.SEQ]: + instance.add(self._restore(v)) + + if has_tag(obj, tags.STATE): + instance = self._restore_state(obj, instance) + + return instance + + def _restore_state(self, obj, instance): + state = self._restore(obj[tags.STATE]) + has_slots = ( + isinstance(state, tuple) and len(state) == 2 and isinstance(state[1], dict) + ) + has_slots_and_dict = has_slots and isinstance(state[0], dict) + if hasattr(instance, '__setstate__'): + instance.__setstate__(state) + elif isinstance(state, dict): + # implements described default handling + # of state for object with instance dict + # and no slots + instance = self._restore_from_dict(state, instance, ignorereserved=False) + elif has_slots: + instance = self._restore_from_dict(state[1], instance, ignorereserved=False) + if has_slots_and_dict: + instance = self._restore_from_dict( + state[0], instance, ignorereserved=False + ) + elif not hasattr(instance, '__getnewargs__') and not hasattr( + instance, '__getnewargs_ex__' + ): + # __setstate__ is not implemented so that means that the best + # we can do is return the result of __getstate__() rather than + # return an empty shell of an object. + # However, if there were newargs, it's not an empty shell + instance = state + return instance + + def _restore_list(self, obj): + parent = [] + self._mkref(parent) + children = [self._restore(v) for v in obj] + parent.extend(children) + method = _obj_setvalue + proxies = [ + (parent, idx, value, method) + for idx, value in enumerate(parent) + if isinstance(value, _Proxy) + ] + self._proxies.extend(proxies) + return parent + + def _restore_tuple(self, obj): + return tuple([self._restore(v) for v in obj[tags.TUPLE]]) + + def _restore_set(self, obj): + return {self._restore(v) for v in obj[tags.SET]} + + def _restore_dict(self, obj): + data = {} + self._mkref(data) + + # If we are decoding dicts that can have non-string keys then we + # need to do a two-phase decode where the non-string keys are + # processed last. This ensures a deterministic order when + # assigning object IDs for references. + if self.keys: + # Phase 1: regular non-special keys. + for k, v in util.items(obj): + if _is_json_key(k): + continue + if isinstance(k, numeric_types): + str_k = k.__str__() + else: + str_k = k + self._namestack.append(str_k) + data[k] = self._restore(v) + + self._namestack.pop() + + # Phase 2: object keys only. + for k, v in util.items(obj): + if not _is_json_key(k): + continue + self._namestack.append(k) + + k = self._restore_pickled_key(k) + data[k] = result = self._restore(v) + # k is currently a proxy and must be replaced + if isinstance(result, _Proxy): + self._proxies.append((data, k, result, _obj_setvalue)) + + self._namestack.pop() + else: + # No special keys, thus we don't need to restore the keys either. + for k, v in util.items(obj): + if isinstance(k, numeric_types): + str_k = k.__str__() + else: + str_k = k + self._namestack.append(str_k) + data[k] = self._restore(v) + self._namestack.pop() + return data + + def _restore_key_fn(self): + """Return a callable that restores keys + + This function is responsible for restoring non-string keys + when we are decoding with `keys=True`. + + """ + # This function is called before entering a tight loop + # where the returned function will be called. + # We return a specific function after checking self.keys + # instead of doing so in the body of the function to + # avoid conditional branching inside a tight loop. + if self.keys: + restore_key = self._restore_pickled_key + else: + + def restore_key(key): + return key + + return restore_key + + def _restore_pickled_key(self, key): + """Restore a possibly pickled key""" + if _is_json_key(key): + key = decode( + key[len(tags.JSON_KEY) :], + backend=self.backend, + context=self, + keys=True, + reset=False, + ) + return key + + def _refname(self): + """Calculates the name of the current location in the JSON stack. + + This is called as jsonpickle traverses the object structure to + create references to previously-traversed objects. This allows + cyclical data structures such as doubly-linked lists. + jsonpickle ensures that duplicate python references to the same + object results in only a single JSON object definition and + special reference tags to represent each reference. + + >>> u = Unpickler() + >>> u._namestack = [] + >>> u._refname() == '/' + True + >>> u._namestack = ['a'] + >>> u._refname() == '/a' + True + >>> u._namestack = ['a', 'b'] + >>> u._refname() == '/a/b' + True + + """ + return '/' + '/'.join(self._namestack) + + def _mkref(self, obj): + obj_id = id(obj) + try: + self._obj_to_idx[obj_id] + except KeyError: + self._obj_to_idx[obj_id] = len(self._objs) + self._objs.append(obj) + # Backwards compatibility: old versions of jsonpickle + # produced "py/ref" references. + self._namedict[self._refname()] = obj + return obj + + def _swapref(self, proxy, instance): + proxy_id = id(proxy) + instance_id = id(instance) + + instance_index = self._obj_to_idx[proxy_id] + self._obj_to_idx[instance_id] = instance_index + del self._obj_to_idx[proxy_id] + + self._objs[instance_index] = instance + self._namedict[self._refname()] = instance + + +def loadclass(module_and_name, classes=None): + """Loads the module and returns the class. + + >>> cls = loadclass('datetime.datetime') + >>> cls.__name__ + 'datetime' + + >>> loadclass('does.not.exist') + + >>> loadclass('builtins.int')() + 0 + + """ + # Check if the class exists in a caller-provided scope + if classes: + try: + return classes[module_and_name] + except KeyError: + pass + # Otherwise, load classes from globally-accessible imports + names = module_and_name.split('.') + # First assume that everything up to the last dot is the module name, + # then try other splits to handle classes that are defined within + # classes + for up_to in range(len(names) - 1, 0, -1): + module = util.untranslate_module_name('.'.join(names[:up_to])) + try: + __import__(module) + obj = sys.modules[module] + for class_name in names[up_to:]: + obj = getattr(obj, class_name) + return obj + except (AttributeError, ImportError, ValueError): + continue + return None + + +def getargs(obj, classes=None): + """Return arguments suitable for __new__()""" + # Let saved newargs take precedence over everything + if has_tag(obj, tags.NEWARGSEX): + raise ValueError("__newargs_ex__ returns both args and kwargs") + + if has_tag(obj, tags.NEWARGS): + return obj[tags.NEWARGS] + + if has_tag(obj, tags.INITARGS): + return obj[tags.INITARGS] + + try: + seq_list = obj[tags.SEQ] + obj_dict = obj[tags.OBJECT] + except KeyError: + return [] + typeref = loadclass(obj_dict, classes=classes) + if not typeref: + return [] + if hasattr(typeref, '_fields'): + if len(typeref._fields) == len(seq_list): + return seq_list + return [] + + +class _trivialclassic: + """ + A trivial class that can be instantiated with no args + """ + + +def make_blank_classic(cls): + """ + Implement the mandated strategy for dealing with classic classes + which cannot be instantiated without __getinitargs__ because they + take parameters + """ + instance = _trivialclassic() + instance.__class__ = cls + return instance + + +def loadrepr(reprstr): + """Returns an instance of the object from the object's repr() string. + It involves the dynamic specification of code. + + >>> obj = loadrepr('datetime/datetime.datetime.now()') + >>> obj.__class__.__name__ + 'datetime' + + """ + module, evalstr = reprstr.split('/') + mylocals = locals() + localname = module + if '.' in localname: + localname = module.split('.', 1)[0] + mylocals[localname] = __import__(module) + return eval(evalstr) + + +def has_tag(obj, tag): + """Helper class that tests to see if the obj is a dictionary + and contains a particular key/tag. + + >>> obj = {'test': 1} + >>> has_tag(obj, 'test') + True + >>> has_tag(obj, 'fail') + False + + >>> has_tag(42, 'fail') + False + + """ + return type(obj) is dict and tag in obj diff --git a/intelliaide/vendor/jsonpickle/util.py b/intelliaide/vendor/jsonpickle/util.py new file mode 100644 index 0000000..c674255 --- /dev/null +++ b/intelliaide/vendor/jsonpickle/util.py @@ -0,0 +1,585 @@ +# Copyright (C) 2008 John Paulett (john -at- paulett.org) +# Copyright (C) 2009-2018 David Aguilar (davvid -at- gmail.com) +# All rights reserved. +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. + +"""Helper functions for pickling and unpickling. Most functions assist in +determining the type of an object. +""" +from __future__ import absolute_import, division, unicode_literals +import base64 +import collections +import io +import operator +import sys +import time +import types +import inspect + +from . import tags +from . import compat +from .compat import ( + abc_iterator, + class_types, + iterator_types, + numeric_types, + PY2, + PY3, + PY3_ORDERED_DICT, +) + +if PY2: + import __builtin__ + +SEQUENCES = (list, set, tuple) +SEQUENCES_SET = {list, set, tuple} +PRIMITIVES = {compat.ustr, bool, type(None)} | set(numeric_types) +FUNCTION_TYPES = { + types.FunctionType, + types.MethodType, + types.LambdaType, + types.BuiltinFunctionType, + types.BuiltinMethodType, +} +NON_REDUCIBLE_TYPES = ( + { + int, + float, + list, + dict, + set, + tuple, + object, + bytes, + } + | PRIMITIVES + | FUNCTION_TYPES +) + + +def is_type(obj): + """Returns True is obj is a reference to a type. + + >>> is_type(1) + False + + >>> is_type(object) + True + + >>> class Klass: pass + >>> is_type(Klass) + True + """ + # use "isinstance" and not "is" to allow for metaclasses + return isinstance(obj, class_types) + + +def has_method(obj, name): + # false if attribute doesn't exist + if not hasattr(obj, name): + return False + func = getattr(obj, name) + + # builtin descriptors like __getnewargs__ + if isinstance(func, types.BuiltinMethodType): + return True + + # note that FunctionType has a different meaning in py2/py3 + if not isinstance(func, (types.MethodType, types.FunctionType)): + return False + + # need to go through __dict__'s since in py3 + # methods are essentially descriptors + + # __class__ for old-style classes + base_type = obj if is_type(obj) else obj.__class__ + original = None + # there is no .mro() for old-style classes + for subtype in inspect.getmro(base_type): + original = vars(subtype).get(name) + if original is not None: + break + + # name not found in the mro + if original is None: + return False + + # static methods are always fine + if isinstance(original, staticmethod): + return True + + # at this point, the method has to be an instancemthod or a classmethod + self_attr = '__self__' if PY3 else 'im_self' + if not hasattr(func, self_attr): + return False + bound_to = getattr(func, self_attr) + + # class methods + if isinstance(original, classmethod): + return issubclass(base_type, bound_to) + + # bound methods + return isinstance(obj, type(bound_to)) + + +def is_object(obj): + """Returns True is obj is a reference to an object instance. + + >>> is_object(1) + True + + >>> is_object(object()) + True + + >>> is_object(lambda x: 1) + False + """ + return isinstance(obj, object) and not isinstance( + obj, (type, types.FunctionType, types.BuiltinFunctionType) + ) + + +def is_primitive(obj): + """Helper method to see if the object is a basic data type. Unicode strings, + integers, longs, floats, booleans, and None are considered primitive + and will return True when passed into *is_primitive()* + + >>> is_primitive(3) + True + >>> is_primitive([4,4]) + False + """ + return type(obj) in PRIMITIVES + + +def is_enum(obj): + """Is the object an enum?""" + return 'enum' in sys.modules and isinstance(obj, sys.modules['enum'].Enum) + + +def is_dictionary(obj): + """Helper method for testing if the object is a dictionary. + + >>> is_dictionary({'key':'value'}) + True + + """ + return type(obj) is dict + + +def is_sequence(obj): + """Helper method to see if the object is a sequence (list, set, or tuple). + + >>> is_sequence([4]) + True + + """ + return type(obj) in SEQUENCES_SET + + +def is_list(obj): + """Helper method to see if the object is a Python list. + + >>> is_list([4]) + True + """ + return type(obj) is list + + +def is_set(obj): + """Helper method to see if the object is a Python set. + + >>> is_set(set()) + True + """ + return type(obj) is set + + +def is_bytes(obj): + """Helper method to see if the object is a bytestring. + + >>> is_bytes(b'foo') + True + """ + return type(obj) is bytes + + +def is_unicode(obj): + """Helper method to see if the object is a unicode string""" + return type(obj) is compat.ustr + + +def is_tuple(obj): + """Helper method to see if the object is a Python tuple. + + >>> is_tuple((1,)) + True + """ + return type(obj) is tuple + + +def is_dictionary_subclass(obj): + """Returns True if *obj* is a subclass of the dict type. *obj* must be + a subclass and not the actual builtin dict. + + >>> class Temp(dict): pass + >>> is_dictionary_subclass(Temp()) + True + """ + # TODO: add UserDict + return ( + hasattr(obj, '__class__') + and issubclass(obj.__class__, dict) + and type(obj) is not dict + ) + + +def is_sequence_subclass(obj): + """Returns True if *obj* is a subclass of list, set or tuple. + + *obj* must be a subclass and not the actual builtin, such + as list, set, tuple, etc.. + + >>> class Temp(list): pass + >>> is_sequence_subclass(Temp()) + True + """ + return ( + hasattr(obj, '__class__') + and (issubclass(obj.__class__, SEQUENCES) or is_list_like(obj)) + and not is_sequence(obj) + ) + + +def is_noncomplex(obj): + """Returns True if *obj* is a special (weird) class, that is more complex + than primitive data types, but is not a full object. Including: + + * :class:`~time.struct_time` + """ + if type(obj) is time.struct_time: + return True + return False + + +def is_function(obj): + """Returns true if passed a function + + >>> is_function(lambda x: 1) + True + + >>> is_function(locals) + True + + >>> def method(): pass + >>> is_function(method) + True + + >>> is_function(1) + False + """ + return type(obj) in FUNCTION_TYPES + + +def is_module_function(obj): + """Return True if `obj` is a module-global function + + >>> import os + >>> is_module_function(os.path.exists) + True + + >>> is_module_function(lambda: None) + False + + """ + + return ( + hasattr(obj, '__class__') + and isinstance(obj, (types.FunctionType, types.BuiltinFunctionType)) + and hasattr(obj, '__module__') + and hasattr(obj, '__name__') + and obj.__name__ != '' + ) + + +def is_module(obj): + """Returns True if passed a module + + >>> import os + >>> is_module(os) + True + + """ + return isinstance(obj, types.ModuleType) + + +def is_picklable(name, value): + """Return True if an object can be pickled + + >>> import os + >>> is_picklable('os', os) + True + + >>> def foo(): pass + >>> is_picklable('foo', foo) + True + + >>> is_picklable('foo', lambda: None) + False + + """ + if name in tags.RESERVED: + return False + return is_module_function(value) or not is_function(value) + + +def is_installed(module): + """Tests to see if ``module`` is available on the sys.path + + >>> is_installed('sys') + True + >>> is_installed('hopefullythisisnotarealmodule') + False + + """ + try: + __import__(module) + return True + except ImportError: + return False + + +def is_list_like(obj): + return hasattr(obj, '__getitem__') and hasattr(obj, 'append') + + +def is_iterator(obj): + is_file = PY2 and isinstance(obj, __builtin__.file) + return ( + isinstance(obj, abc_iterator) and not isinstance(obj, io.IOBase) and not is_file + ) + + +def is_collections(obj): + try: + return type(obj).__module__ == 'collections' + except Exception: + return False + + +def is_reducible_sequence_subclass(obj): + return hasattr(obj, '__class__') and issubclass(obj.__class__, SEQUENCES) + + +def is_reducible(obj): + """ + Returns false if of a type which have special casing, + and should not have their __reduce__ methods used + """ + # defaultdicts may contain functions which we cannot serialise + if is_collections(obj) and not isinstance(obj, collections.defaultdict): + return True + # sets are slightly slower in this case + if type(obj) in NON_REDUCIBLE_TYPES: + return False + elif obj is object: + return False + elif is_list_like(obj): + return False + elif isinstance(obj, types.ModuleType): + return False + elif is_dictionary_subclass(obj): + return False + elif is_reducible_sequence_subclass(obj): + return False + elif isinstance(getattr(obj, '__slots__', None), iterator_types): + return False + elif is_type(obj) and obj.__module__ == 'datetime': + return False + return True + + +def in_dict(obj, key, default=False): + """ + Returns true if key exists in obj.__dict__; false if not in. + If obj.__dict__ is absent, return default + """ + return (key in obj.__dict__) if getattr(obj, '__dict__', None) else default + + +def in_slots(obj, key, default=False): + """ + Returns true if key exists in obj.__slots__; false if not in. + If obj.__slots__ is absent, return default + """ + return (key in obj.__slots__) if getattr(obj, '__slots__', None) else default + + +def has_reduce(obj): + """ + Tests if __reduce__ or __reduce_ex__ exists in the object dict or + in the class dicts of every class in the MRO *except object*. + + Returns a tuple of booleans (has_reduce, has_reduce_ex) + """ + + if not is_reducible(obj) or is_type(obj): + return (False, False) + + # in this case, reduce works and is desired + # notwithstanding depending on default object + # reduce + if is_noncomplex(obj): + return (False, True) + + has_reduce = False + has_reduce_ex = False + + REDUCE = '__reduce__' + REDUCE_EX = '__reduce_ex__' + + # For object instance + has_reduce = in_dict(obj, REDUCE) or in_slots(obj, REDUCE) + has_reduce_ex = in_dict(obj, REDUCE_EX) or in_slots(obj, REDUCE_EX) + + # turn to the MRO + for base in type(obj).__mro__: + if is_reducible(base): + has_reduce = has_reduce or in_dict(base, REDUCE) + has_reduce_ex = has_reduce_ex or in_dict(base, REDUCE_EX) + if has_reduce and has_reduce_ex: + return (has_reduce, has_reduce_ex) + + # for things that don't have a proper dict but can be + # getattred (rare, but includes some builtins) + cls = type(obj) + object_reduce = getattr(object, REDUCE) + object_reduce_ex = getattr(object, REDUCE_EX) + if not has_reduce: + has_reduce_cls = getattr(cls, REDUCE, False) + if has_reduce_cls is not object_reduce: + has_reduce = has_reduce_cls + + if not has_reduce_ex: + has_reduce_ex_cls = getattr(cls, REDUCE_EX, False) + if has_reduce_ex_cls is not object_reduce_ex: + has_reduce_ex = has_reduce_ex_cls + + return (has_reduce, has_reduce_ex) + + +def translate_module_name(module): + """Rename builtin modules to a consistent module name. + + Prefer the more modern naming. + + This is used so that references to Python's `builtins` module can + be loaded in both Python 2 and 3. We remap to the "__builtin__" + name and unmap it when importing. + + Map the Python2 `exceptions` module to `builtins` because + `builtins` is a superset and contains everything that is + available in `exceptions`, which makes the translation simpler. + + See untranslate_module_name() for the reverse operation. + """ + lookup = dict(__builtin__='builtins', exceptions='builtins') + return lookup.get(module, module) + + +def untranslate_module_name(module): + """Rename module names mention in JSON to names that we can import + + This reverses the translation applied by translate_module_name() to + a module name available to the current version of Python. + + """ + module = _0_9_6_compat_untranslate(module) + lookup = dict(builtins='__builtin__') if PY2 else {} + return lookup.get(module, module) + + +def _0_9_6_compat_untranslate(module): + """Provide compatibility for pickles created with jsonpickle 0.9.6 and + earlier, remapping `exceptions` and `__builtin__` to `builtins`. + """ + lookup = dict(__builtin__='builtins', exceptions='builtins') + return lookup.get(module, module) + + +def importable_name(cls): + """ + >>> class Example(object): + ... pass + + >>> ex = Example() + >>> importable_name(ex.__class__) == 'jsonpickle.util.Example' + True + >>> importable_name(type(25)) == 'builtins.int' + True + >>> importable_name(None.__class__) == 'builtins.NoneType' + True + >>> importable_name(False.__class__) == 'builtins.bool' + True + >>> importable_name(AttributeError) == 'builtins.AttributeError' + True + + """ + # Use the fully-qualified name if available (Python >= 3.3) + name = getattr(cls, '__qualname__', cls.__name__) + module = translate_module_name(cls.__module__) + return '{}.{}'.format(module, name) + + +def b64encode(data): + """ + Encode binary data to ascii text in base64. Data must be bytes. + """ + return base64.b64encode(data).decode('ascii') + + +def b64decode(payload): + """ + Decode payload - must be ascii text. + """ + return base64.b64decode(payload) + + +def b85encode(data): + """ + Encode binary data to ascii text in base85. Data must be bytes. + """ + if PY2: + raise NotImplementedError("Python 2 can't encode data in base85.") + return base64.b85encode(data).decode('ascii') + + +def b85decode(payload): + """ + Decode payload - must be ascii text. + """ + if PY2: + raise NotImplementedError("Python 2 can't decode base85-encoded data.") + return base64.b85decode(payload) + + +def itemgetter(obj, getter=operator.itemgetter(0)): + return compat.ustr(getter(obj)) + + +def items(obj): + """Iterate over dicts in a deterministic order + + Python2 does not guarantee dict ordering, so this function + papers over the difference in behavior. Python3 does guarantee + dict order, without use of OrderedDict, so no sorting is needed there. + + """ + if PY3_ORDERED_DICT: + for k, v in obj.items(): + yield k, v + else: + for k, v in sorted(obj.items(), key=itemgetter): + yield k, v diff --git a/intelliaide/vendor/jsonpickle/version.py b/intelliaide/vendor/jsonpickle/version.py new file mode 100644 index 0000000..92b44b2 --- /dev/null +++ b/intelliaide/vendor/jsonpickle/version.py @@ -0,0 +1,21 @@ +import sys + +try: + if sys.version_info < (3, 8): + import importlib_metadata as metadata + else: + from importlib import metadata +except (ImportError, OSError): + metadata = None + + +def _get_version(): + default_version = '0.0.0-alpha' + try: + version = metadata.version('jsonpickle') + except (AttributeError, ImportError, OSError): + version = default_version + return version + + +__version__ = _get_version() diff --git a/intelliaide/vendor/lxml-6.1.1.dist-info/INSTALLER b/intelliaide/vendor/lxml-6.1.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/intelliaide/vendor/lxml-6.1.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/intelliaide/vendor/lxml-6.1.1.dist-info/METADATA b/intelliaide/vendor/lxml-6.1.1.dist-info/METADATA new file mode 100644 index 0000000..d30675f --- /dev/null +++ b/intelliaide/vendor/lxml-6.1.1.dist-info/METADATA @@ -0,0 +1,92 @@ +Metadata-Version: 2.4 +Name: lxml +Version: 6.1.1 +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@lxml.de +Maintainer: lxml dev team +Maintainer-email: lxml@lxml.de +License: BSD-3-Clause +Project-URL: Source, https://github.com/lxml/lxml +Project-URL: Bug Tracker, https://bugs.launchpad.net/lxml +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Intended Audience :: Information Technology +Classifier: Programming Language :: Cython +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 :: 3.14 +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.8 +License-File: LICENSE.txt +License-File: LICENSES.txt +Provides-Extra: source +Provides-Extra: cssselect +Requires-Dist: cssselect>=0.7; extra == "cssselect" +Provides-Extra: html5 +Requires-Dist: html5lib; extra == "html5" +Provides-Extra: htmlsoup +Requires-Dist: BeautifulSoup4; extra == "htmlsoup" +Provides-Extra: html-clean +Requires-Dist: lxml_html_clean; extra == "html-clean" +Dynamic: author +Dynamic: author-email +Dynamic: classifier +Dynamic: description +Dynamic: home-page +Dynamic: license +Dynamic: license-file +Dynamic: maintainer +Dynamic: maintainer-email +Dynamic: project-url +Dynamic: provides-extra +Dynamic: requires-python +Dynamic: summary + +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. + + +After an official release of a new stable series, bug fixes may become available at +https://github.com/lxml/lxml/tree/lxml-6.1 . +Running ``pip install https://github.com/lxml/lxml/archive/refs/heads/lxml-6.1.tar.gz`` +will install the unreleased branch state as soon as a maintenance branch has been established. +Note that this requires Cython to be installed at an appropriate version for the build. + +6.1.1 (2026-05-18) +================== + +Bugs fixed +---------- + +* The known link attributes in ``lxml.html.defs.link_attrs`` were missing ``xlink:href``, + which can be used for URL bypass attacks in embedded SVG/MathML/etc. content. + https://github.com/fedora-python/lxml_html_clean/security/advisories/GHSA-4jhm-jv67-739f + +* The Linux wheels use a patched libxslt 1.1.43, fixing CVE-2025-7424 and CVE-2025-11731. + +* The Windows wheels use libxslt 1.1.45, fixing CVE-2025-7424 and CVE-2025-11731. + + diff --git a/intelliaide/vendor/lxml-6.1.1.dist-info/RECORD b/intelliaide/vendor/lxml-6.1.1.dist-info/RECORD new file mode 100644 index 0000000..8f94e50 --- /dev/null +++ b/intelliaide/vendor/lxml-6.1.1.dist-info/RECORD @@ -0,0 +1,204 @@ +lxml-6.1.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +lxml-6.1.1.dist-info/METADATA,sha256=qbvABHCIHPEzcHkgBEmV_9YGNyPiA8po1l4vKiWIa8c,3518 +lxml-6.1.1.dist-info/RECORD,, +lxml-6.1.1.dist-info/WHEEL,sha256=rSHxYvtox9WA2CLg-qPNRHTwscksbjj7CEInt0-zzg4,152 +lxml-6.1.1.dist-info/licenses/LICENSE.txt,sha256=j8K1aBM1FuRoRdIUeRet7uFkjnCumrXtbFQXr-9M6FU,1507 +lxml-6.1.1.dist-info/licenses/LICENSES.txt,sha256=QdSd1AaqDhVIptXyGjDWv2OLPNlutyid00jYPtLkA5I,1514 +lxml-6.1.1.dist-info/top_level.txt,sha256=NjD988wqaKq512nshNdLt-uDxsjkp4Bh51m6N-dhUrk,5 +lxml/ElementInclude.py,sha256=PSLeZFvCa76WHJulPLxcZXJtCI2-4dK2CtqPRiYOAQg,8560 +lxml/__init__.py,sha256=OKLD7sP5BpJ5x3k2-I1dl5ozoGx3xVvO3ml2ISuEZQg,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-x86_64-linux-gnu.so,sha256=Gngj3IsCTtH8jsFJTJKW0x4oAbFMPSQIFgVbMUZ-PvU,209096 +lxml/_elementpath.py,sha256=b80hM3ndAkTtRX6v54za3LkkAqCcd0700BbMPZHnTBU,10959 +lxml/apihelpers.pxi,sha256=CugqfQgyn6aFtwp7eH144RUpV2v1ItxoalhJcFbORTQ,64604 +lxml/builder.cpython-312-x86_64-linux-gnu.so,sha256=MSiyw-7TTv91-yEn-dq2qc5QIFmTW2knqs64u7GoUvs,120880 +lxml/builder.py,sha256=sL7iKT8NXVmpO_p2p2nHTjShjZOGMFLgFzgbhUFl68g,8487 +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=KTcpR8-slUYvmIPbE35GoHDNTb-gjTEvD7bw6LltM4c,1125 +lxml/docloader.pxi,sha256=fcoVd_mwTFZhjItCv_TfwXpgVek7JlvFObSfRxmVqs0,5790 +lxml/doctestcompare.py,sha256=40EDnkwpcvW86qNa86990OXF42xdHaosSZoiBsEjkzU,17731 +lxml/dtd.pxi,sha256=IAKkmA4ZoC68sqAWcTqoS8jEGYcPQrVMCZgn4iLBYko,15281 +lxml/etree.cpython-312-x86_64-linux-gnu.so,sha256=11l6D-wiV2QWAoI4_yCmX5DZerb5b2X-OmIHgIVa3Ug,5276528 +lxml/etree.h,sha256=hWgHumv7DeTpH0nHhbsCIe693cIcimtLabExxwBxR-c,9792 +lxml/etree.pyx,sha256=zgobCeGw6lw902OA0FWuwlOpqA_0eZeLM2baWi1pzio,138216 +lxml/etree_api.h,sha256=UG16a1ThLt259FSG3vUy6ka6OIat-6LLJyVBLz6d3OM,17710 +lxml/extensions.pxi,sha256=saxxc1mZyA8WdwIIL90B4lQb351j8-G7ttLPI5k-8Hw,32248 +lxml/html/ElementSoup.py,sha256=s_dLobLMuKn2DhexR-iDXdZrMFg1RjLy1feHsIeZMpw,320 +lxml/html/__init__.py,sha256=CC5WdsvSptZhr9MZya1qsL6JKVbviYdrHOhXrGhmORg,64425 +lxml/html/__pycache__/ElementSoup.cpython-312.pyc,, +lxml/html/__pycache__/__init__.cpython-312.pyc,, +lxml/html/__pycache__/_diffcommand.cpython-312.pyc,, +lxml/html/__pycache__/_difflib.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/_difflib.cpython-312-x86_64-linux-gnu.so,sha256=0Za0L59Q9ZDfTG86x9enqvkdutV0Z29YDEjG4nftBLQ,533400 +lxml/html/_difflib.py,sha256=GgH_jVrZQC8tI8WV_lFZQsXFJ3mOTAPup1zjBJNvkPo,84954 +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=Uz3r5uiuCdoN0UPa7ngoLMwAadVIhslzGvlRPGigY_M,6187 +lxml/html/clean.py,sha256=WU0KfXAyjDFn2ojE7T1dfk4cl_FduBu5ZbFSTc9Up_o,503 +lxml/html/defs.py,sha256=6z6B1ws_2l9zgw3DL7ML62wwBYe6m5reJp6m3uTKptQ,5398 +lxml/html/diff.cpython-312-x86_64-linux-gnu.so,sha256=EoLnmB8DWTm1fvtjq5IQR6j-bXa-h3nnNRt4E_F-LzA,361400 +lxml/html/diff.py,sha256=Za0By-yeYlQEjUu7m7xKB288kKiy8VBS5gT0RPOaFY0,32989 +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=h_UjJTmNUqPyKNNrWB9hxmt6v4CF7_83XVY8dOfxqW0,14524 +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=BxihG-sylbNF-ymmO0S2VLKC2CxM0FE_YiVYfyspuLs,16921 +lxml/includes/extlibs/zlib.h,sha256=gYZn1qtqN_50acsGp_DLLCyy8slIoD5azPGkp0vzAgo,103848 +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=QHxzEbRlv_h0USBvpr0Zrl0Muzlc71VCrvgR6lqnLEY,1172 +lxml/includes/libexslt/exsltexports.h,sha256=1Jm9KTXm2FUUJIZ6V6-Uw55yG0BMULX3_goyxDd2LL8,1077 +lxml/includes/libxml/HTMLparser.h,sha256=sU4xGqj-vBtEvzlxA3hBPWJboifvkc4F1hynKXmsl3k,9569 +lxml/includes/libxml/HTMLtree.h,sha256=Q7UBKFbQ8fx4d_dMnmR6ay8JmfOhopFkDp2B63YkLDU,3517 +lxml/includes/libxml/SAX.h,sha256=SFnG27EFrYGUB9HDL_xSIGBwEns5pl07rApXWThFZFM,386 +lxml/includes/libxml/SAX2.h,sha256=RfFP5o3le-Rg8bnA2GW7L7L9_pfXCs3TieODcv1DTWY,4240 +lxml/includes/libxml/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +lxml/includes/libxml/__pycache__/__init__.cpython-312.pyc,, +lxml/includes/libxml/c14n.h,sha256=BSBXw6nIZutC8mWvbRrLLmoWjw3wRt-nM93vjXGMCm8,2742 +lxml/includes/libxml/catalog.h,sha256=H9ssTCaBjtDqc-AZqCk1R7h8F2iD9szqLjJyHpaczXg,4633 +lxml/includes/libxml/chvalid.h,sha256=TZcceNp6Cw0QlYwIqK9GxyYqL5UiAjpQyjt_yrZGTQE,5087 +lxml/includes/libxml/debugXML.h,sha256=XXRNI39gJW7bGRC4SzE4ad-SJ906BsUGz3AwOtkKuS4,1667 +lxml/includes/libxml/dict.h,sha256=SweaPGMtTTf4je6dNTIoEzcfEvpsAT9_PhR7FC0K-rQ,1770 +lxml/includes/libxml/encoding.h,sha256=haL7ratww2wkIERGmtwUqU2BbTVe52FZFU7MmrOpsPk,9623 +lxml/includes/libxml/entities.h,sha256=LEOCA826-0f8dhRJzC_2hvUVsSH7lKQjrea9hSTdBbo,4419 +lxml/includes/libxml/globals.h,sha256=NH8zyRI5cXJJGp5k2aLxOm-reJEGOFX6LYP82GBXRlY,583 +lxml/includes/libxml/hash.h,sha256=KIIpAYKBfGUU3ydWhGehUyfuauZz_Ps0gyambzQo_rc,7017 +lxml/includes/libxml/list.h,sha256=oh7iJNQajRA_cHsNk9CcFPYkaW2smf4J_MpedPPjC4k,3128 +lxml/includes/libxml/nanoftp.h,sha256=22PBtWhJueYLFvwukt4oFooRct_xJA83hbluHRBNXUM,302 +lxml/includes/libxml/nanohttp.h,sha256=bLbzYjAyAKmP3ComMOPH6XaUImu6bNAESF1HrVtRve0,2124 +lxml/includes/libxml/parser.h,sha256=Uq7-ce55UUAsvo4n6CiBlNQpmowewvWhOsQtgGM1UQ8,48498 +lxml/includes/libxml/parserInternals.h,sha256=8_Wr6UgRzm8BRn1RPLxyBkw6BagAdDvVqMA_e181_EI,14539 +lxml/includes/libxml/relaxng.h,sha256=VXZ74r5Yja06KqypdBHc8neDwPxQ2aMrsWHSdRt5oi4,5991 +lxml/includes/libxml/schemasInternals.h,sha256=V8M4In3zf24EX55Yt4dcfxwp7NpHGYViKnLKwtyrPJ4,26233 +lxml/includes/libxml/schematron.h,sha256=8EhPDhvtlMxl9e0C5rSbEruOvzJS5BC_OOFbq9RXZnY,4255 +lxml/includes/libxml/threads.h,sha256=mT3CgK4lXK7-NDnUOFXqYuCK6fyY70S3BsHF-TnT45k,1619 +lxml/includes/libxml/tree.h,sha256=zTRLt6h5x6ApyeXgs90CKQZSAl2hKm7b5NxtPKUQFAE,36106 +lxml/includes/libxml/uri.h,sha256=J9teJHme5z883c4twF5oImEYY-E3xSvhdSGpyRVtvIg,2855 +lxml/includes/libxml/valid.h,sha256=By61IbPvk_eLux7a8x0mOaly7oclFaSGaFE8b2xZcUE,13226 +lxml/includes/libxml/xinclude.h,sha256=K3I5jhw2zAMj26LuRNZc15Bwv2JE2hWxwVn4TCqv2b4,3258 +lxml/includes/libxml/xlink.h,sha256=TVLOkISrcKDelo9n_XIUyPiStDYa8NxuF2dz70aBFCI,5062 +lxml/includes/libxml/xmlIO.h,sha256=FvbuMYTy1-S5PScabE03wz0oWKf626pmXvOPZNuLm-w,11948 +lxml/includes/libxml/xmlautomata.h,sha256=7Sc3YgPz1ZIBKCHPSxs5oAwJEZWQ1RT2kyUw85pUtmU,4004 +lxml/includes/libxml/xmlerror.h,sha256=mMfltMxUza6kiSBfP2QfnY3UlMP_rEXKfX0wruBLl4A,37561 +lxml/includes/libxml/xmlexports.h,sha256=IyV3AMeQVbOl0wkjlnNX4B8WUZ-5GNKQmxZc6-maWUU,2025 +lxml/includes/libxml/xmlmemory.h,sha256=m7wGvVMxNzZiuOAo3vkjxaVWstc8aQLzb6obbjPsebE,4658 +lxml/includes/libxml/xmlmodule.h,sha256=ERUHUmDdZRmh6NjLYWUpse51rLWR8qNjPHOtdgmlLF0,1198 +lxml/includes/libxml/xmlreader.h,sha256=BAHinlSOTXX3DEax9BniaIIPAXJyLGfzym9R-27LCcU,12387 +lxml/includes/libxml/xmlregexp.h,sha256=_q6C1XRy8DS3kSmLbEKpvkKQciTgjTJgGc_zUQ6m22M,2632 +lxml/includes/libxml/xmlsave.h,sha256=zcEQr9sO5CsFrnoOLshhdsqMEr8k4AeFhbkYyNfO9Fs,2934 +lxml/includes/libxml/xmlschemas.h,sha256=5AfLnYUcfmxHRzg0dVpdHig--4ui1-XDwDgpKGDKCiU,7067 +lxml/includes/libxml/xmlschemastypes.h,sha256=MYwlGmoKAo3lHRaaKgnCXiLmPT9KRjdxyCJ7TEyZ6jM,4583 +lxml/includes/libxml/xmlstring.h,sha256=d5PpqxP1I1sfmCUHvVJtjoC9h7hLHcAAQ5ok_Rtf50I,5271 +lxml/includes/libxml/xmlunicode.h,sha256=8sq3wEW2AiyTCuc3ZceOEkce7lfrI7VnkRfwEQgc6pU,278 +lxml/includes/libxml/xmlversion.h,sha256=oVpaE_xbttaeZNFKSuSfcLOceWz7LQgKP71Z1msXZNo,5112 +lxml/includes/libxml/xmlwriter.h,sha256=BEUwYNKx3xymDE9vepksEK7yVq9SXYm1d2pQnzlPy90,20688 +lxml/includes/libxml/xpath.h,sha256=CQv6X_pRhuXoCVpqoDXYB7FfusLK7AuPxCNigwhNYAA,16156 +lxml/includes/libxml/xpathInternals.h,sha256=mc9B5tdpfssyz_NPUzww6dKuWCtBybBiBRJkTe4AE4U,18504 +lxml/includes/libxml/xpointer.h,sha256=DAxMsfPp2SSZgXFrPbxBA84RwTMRf35Qg_LBbUzPQhA,1026 +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=cV5scdRK6xmOHeOg3OCw6hBfcQ_nrtNs_tKefX67304,2910 +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=QCE72dSV-W29efxzYz7IG_wH5leX_x0mZdFbQmH2C4w,71 +lxml/includes/relaxng.pxd,sha256=HzHlQ6mCcf_tj_JZ9NAVJTVAv8ScCkE8Ifq15y3bS0c,2615 +lxml/includes/schematron.pxd,sha256=Hob7xh-K-MKqp7WiG8thMagf5EkQzmgfi4ds0EF91JA,1604 +lxml/includes/tree.pxd,sha256=XApzMRy_LSqCtQ-OTS-vNSW7CT_OWstybfIT2H84LsA,20179 +lxml/includes/uri.pxd,sha256=3vOXw6AbSPxAM9uo71T1qnfx-wd9ezXLDQtWsb2zX0I,145 +lxml/includes/xinclude.pxd,sha256=CuO_XZNB6E2JK1qXXWn11APrjFQV5kA6SMyb77WZn0A,804 +lxml/includes/xmlerror.pxd,sha256=OQqayytkV0NigAPbsQCCcvmy7luRe0XhVzpTdzJjP3g,58837 +lxml/includes/xmlparser.pxd,sha256=eDGyU5kZyNVksK0dUhMIi7rnE-LSevXsqyl72v99Ess,13730 +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=rERnJ9D0Cvn87YDMSq8V880DKV2WthXs5BXSSY2Baj4,16845 +lxml/lxml.etree.h,sha256=hWgHumv7DeTpH0nHhbsCIe693cIcimtLabExxwBxR-c,9792 +lxml/lxml.etree_api.h,sha256=O_s_RIicKl7_h5U0aKu9dKSzJCTYSDJI6jlX7b-2v0Q,17715 +lxml/nsclasses.pxi,sha256=5pzNBhBtlqObPdThL9QIGRs1Dxj1qnr0PyXuTCURqTg,9129 +lxml/objectify.cpython-312-x86_64-linux-gnu.so,sha256=iTDWB90lJBk_EVv0x5DwNpvB4cbOEqPDMKg-511TN5w,2916760 +lxml/objectify.pyx,sha256=8lIjgklL3LJ3PYAcWZ5hPLuLFa7oLqEspco4bSz4EI4,75850 +lxml/objectpath.pxi,sha256=s5TNG2-EbaWWKLFAiX303B95zK_Ui8ausB__3QvFFGw,11450 +lxml/parser.pxi,sha256=wv8ODQRXZk0r0ZVHY4zsF2vLbL_SFGwYIFSKcWAVCdQ,85821 +lxml/parsertarget.pxi,sha256=v1PidxRaG5giwXcTDkpBI7PDFmsZuOcK0y9LdkQaY8M,6326 +lxml/proxy.pxi,sha256=LnqqSZVUsJ5MnuVrhYrLwMbAKWuv1eOn-XYslut6CLM,24015 +lxml/public-api.pxi,sha256=yVPuZV2LwN5Ki73mD85V9hnUXxOs5VMeFMLtQMNf0Qk,6756 +lxml/pyclasslookup.py,sha256=gLD1HM2HtITYYiGzjEOewSwbB7XkVx_NZv_quCt79Oc,92 +lxml/readonlytree.pxi,sha256=n2MRjz81EADWBXJx0miosN8PJ4i5y3guQJT_RZF6qKg,19008 +lxml/relaxng.pxi,sha256=3OQ-fZMzP-KF5vM6HTozT_9ee3J0DJnpj9RcHC8LoMw,6339 +lxml/sax.cpython-312-x86_64-linux-gnu.so,sha256=_is26aCl78oYdPU_iyAE_CxAfev44Uir8RK03edgTVk,182096 +lxml/sax.py,sha256=5ryEnOMIMeLpLel-PFpszMHq99mWNmsnGrMvLWIm1UM,9708 +lxml/saxparser.pxi,sha256=yV67FWD60DfmFi7hbV_eLyJIMu7X2MOfV2g4X99iUR4,33538 +lxml/schematron.pxi,sha256=F2OHKZUl57-byBk_wWtPTnHZ1fwlj0FtwG3VuGtG-UY,6064 +lxml/serializer.pxi,sha256=iIXfechFHfvFs2sTk7wMIy3sDJxmaMPbNO33mkLLBUE,68063 +lxml/usedoctest.py,sha256=qRgZKQVcAZcl-zN0AIXVJnOsETUXz2nPXkxuzs1lGgk,230 +lxml/xinclude.pxi,sha256=7eBrI_OK47mmrHQ0ixbixRI8pKqQ1nwkMV-OmKUVlD4,2456 +lxml/xmlerror.pxi,sha256=MAQv92NXFoaMOzT8WeeM0L3YyksFoo48tpz3KZHTqcY,50234 +lxml/xmlid.pxi,sha256=5zf9oR6bsCtavGiOmilNyHqYwgG_bnrIabSd2SURtm0,6073 +lxml/xmlschema.pxi,sha256=mumNoHni5S3BQPtcmOHRd61KRaVWu4eOie2wQeB0e6E,8490 +lxml/xpath.pxi,sha256=aqW24V817dUxps4Gnc8h7Tm3QVlITKvxU5_9WgJUIFg,19132 +lxml/xslt.pxi,sha256=lLVwvlhMKL970rVqThP6Jnn79L3MK9UG0DGnXnNy7YI,36356 +lxml/xsltext.pxi,sha256=TImDiAPlAezC07P7RY1N9YChA7AuKFH-G53hXdel9yc,11088 diff --git a/intelliaide/vendor/lxml-6.1.1.dist-info/WHEEL b/intelliaide/vendor/lxml-6.1.1.dist-info/WHEEL new file mode 100644 index 0000000..43257e7 --- /dev/null +++ b/intelliaide/vendor/lxml-6.1.1.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: setuptools (82.0.1) +Root-Is-Purelib: false +Tag: cp312-cp312-manylinux_2_26_x86_64 +Tag: cp312-cp312-manylinux_2_28_x86_64 + diff --git a/intelliaide/vendor/lxml-6.1.1.dist-info/licenses/LICENSE.txt b/intelliaide/vendor/lxml-6.1.1.dist-info/licenses/LICENSE.txt new file mode 100644 index 0000000..0bdf039 --- /dev/null +++ b/intelliaide/vendor/lxml-6.1.1.dist-info/licenses/LICENSE.txt @@ -0,0 +1,31 @@ +BSD 3-Clause License + +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/intelliaide/vendor/lxml-6.1.1.dist-info/licenses/LICENSES.txt b/intelliaide/vendor/lxml-6.1.1.dist-info/licenses/LICENSES.txt new file mode 100644 index 0000000..9f97c18 --- /dev/null +++ b/intelliaide/vendor/lxml-6.1.1.dist-info/licenses/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/intelliaide/vendor/lxml-6.1.1.dist-info/top_level.txt b/intelliaide/vendor/lxml-6.1.1.dist-info/top_level.txt new file mode 100644 index 0000000..ab90481 --- /dev/null +++ b/intelliaide/vendor/lxml-6.1.1.dist-info/top_level.txt @@ -0,0 +1 @@ +lxml diff --git a/intelliaide/vendor/lxml/ElementInclude.py b/intelliaide/vendor/lxml/ElementInclude.py new file mode 100644 index 0000000..2188433 --- /dev/null +++ b/intelliaide/vendor/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/intelliaide/vendor/lxml/__init__.py b/intelliaide/vendor/lxml/__init__.py new file mode 100644 index 0000000..6c821ac --- /dev/null +++ b/intelliaide/vendor/lxml/__init__.py @@ -0,0 +1,22 @@ +# this is a package + +__version__ = "6.1.1" + + +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/intelliaide/vendor/lxml/_elementpath.cpython-312-x86_64-linux-gnu.so b/intelliaide/vendor/lxml/_elementpath.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..3e602bbb4ba5169e22b403ebf83a672cbaab1d11 GIT binary patch literal 209096 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≪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 Q|!|+a`UE5kryr$N<<6Em^N+dG%2x@2m=Sw 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 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 tag.isdecimal(): + yield token # index + 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/intelliaide/vendor/lxml/apihelpers.pxi b/intelliaide/vendor/lxml/apihelpers.pxi new file mode 100644 index 0000000..87a27d9 --- /dev/null +++ b/intelliaide/vendor/lxml/apihelpers.pxi @@ -0,0 +1,1819 @@ +# 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 c_ns is NULL: + # libxml2 has two error conditions: "out of memory" and "prefix exists already". + # We ignore the latter for compatibility reasons. It currently only appears + # during namespace cleanup. + c_ns = c_node.nsDef + while c_ns is not NULL: + if c_prefix is NULL: + if c_ns.prefix is NULL: + break + elif tree.xmlStrcmp(c_ns.prefix, c_prefix) == 0: + break + c_ns = c_ns.next + else: + raise MemoryError() + 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() + if 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: + new_attr = 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) + new_attr = tree.xmlNewNsProp(c_node, c_ns, _xcstr(name_utf), _xcstr(value_utf)) + if new_attr is NULL: + raise MemoryError() + 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, c_tag_len + cdef bytes ns, tag + cdef const_xmlChar* c_tag + + for ns, tag in ns_tags: + if tag is None: + c_tag = NULL + else: + c_tag_len = len(tag) + if c_tag_len > limits.INT_MAX: + # too long, not in the dict => not in the document + continue + elif force_into_dict: + c_tag = tree.xmlDictLookup(c_doc.dict, _xcstr(tag), c_tag_len) + 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), c_tag_len) + 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 if step != python.PY_SSIZE_T_MIN else python.PY_SSIZE_T_MAX + 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, step + 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/intelliaide/vendor/lxml/builder.cpython-312-x86_64-linux-gnu.so b/intelliaide/vendor/lxml/builder.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..9dd5bf7031534005291fc62a381c70dc4682aae0 GIT binary patch literal 120880 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 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!

+

This is another paragraph, with link.

+

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) + + # Allow subscripting ElementMaker in type annotations (PEP 560) + def __class_getitem__(cls, item): + return _GenericAlias(cls, item) + + +# create factory object +E = ElementMaker() diff --git a/intelliaide/vendor/lxml/classlookup.pxi b/intelliaide/vendor/lxml/classlookup.pxi new file mode 100644 index 0000000..92d1d47 --- /dev/null +++ b/intelliaide/vendor/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/intelliaide/vendor/lxml/cleanup.pxi b/intelliaide/vendor/lxml/cleanup.pxi new file mode 100644 index 0000000..8e266b3 --- /dev/null +++ b/intelliaide/vendor/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/intelliaide/vendor/lxml/cssselect.py b/intelliaide/vendor/lxml/cssselect.py new file mode 100644 index 0000000..54cd75a --- /dev/null +++ b/intelliaide/vendor/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/intelliaide/vendor/lxml/debug.pxi b/intelliaide/vendor/lxml/debug.pxi new file mode 100644 index 0000000..d728e84 --- /dev/null +++ b/intelliaide/vendor/lxml/debug.pxi @@ -0,0 +1,36 @@ +@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) + + +memory_debugger = _MemDebug() diff --git a/intelliaide/vendor/lxml/docloader.pxi b/intelliaide/vendor/lxml/docloader.pxi new file mode 100644 index 0000000..07e0cd7 --- /dev/null +++ b/intelliaide/vendor/lxml/docloader.pxi @@ -0,0 +1,179 @@ +# 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 + + @cython.final + 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/intelliaide/vendor/lxml/doctestcompare.py b/intelliaide/vendor/lxml/doctestcompare.py new file mode 100644 index 0000000..8099771 --- /dev/null +++ b/intelliaide/vendor/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/intelliaide/vendor/lxml/dtd.pxi b/intelliaide/vendor/lxml/dtd.pxi new file mode 100644 index 0000000..ee1b3d4 --- /dev/null +++ b/intelliaide/vendor/lxml/dtd.pxi @@ -0,0 +1,479 @@ +# 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: + external_id_utf = _utf8(external_id) + with self._error_log: + orig_loader = _register_document_loader() + self._c_dtd = xmlparser.xmlParseDTD(external_id_utf, 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/intelliaide/vendor/lxml/etree.cpython-312-x86_64-linux-gnu.so b/intelliaide/vendor/lxml/etree.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..94b6b6a85e2f8d1bc85def716e7ce2ba2d911b0e GIT binary patch literal 5276528 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�rneggnZ3y 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€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

t6{6A@x@z4 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 (4o3yK!;<{QM^*t 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 z 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

t{=r-o@>bp-1XR4nX}sH9b-Uhabj?)}Uo@Dj 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

P&ZrXb%rp94 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%0DlbzPKuu`fIH6 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

a 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 jfQ(t5_y<^ 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


mKa+ZuQvZ=n?ZYuk^8Qq*_heI# z#l?cu3zd3PHg(LtChuuVy*!(``csqlthY%$H=Fulxyifu9a3wvsn=Q@4iSW-vZ-Sa zGI{q^YM*TCoc&Ge9!mWl&DQq$V1;>04=YltmrZ3yMy)7R>e6iLqm~o435VyisY?$q zdDkoTPubL72bxr0sV&*meWVbkhdp!~sn=&yH`>1FqP&-7Q}0E9llKIro|a9mz<5pS zZ*12N^OQU zD>51O4zT_dwL!X~{QrQE;(VQj(AsJt%nvfWW-}~!E0bXbE^8v`AA$^jwHbaO1~xdf z1sSFV862D8Cwozo$uK*}FgD0A-e$P8ZzjXTL57oq45!)*y2aZ@L`bQQ_Z#M(l1tJAY8cEHuJe4!+e|J!~PivZ!EDH z?hP{h!DjenwiSB^Ra_Tju<^-CM{4{VB)<W=KgS8XSHfWcXK*!R-E~ zOP}hO$uJ|xa9fb!UJJo^9vKKH&9H>}mB|pF44H4va?_mwna{Q#HU4mj4(gsCd_2K^ z)cAWW+q8p%diS>ISsc!JOo2s~cc`rT&H8{uLT2ljgjmBY@bdaLI2nEB=q*N13YPQxT#= z9tG1=SgN8WQDC9BFX9YAfps(A%yj9e$WtVMU9uc%1aS2yZ&LPW^T^+Mi=ng0vKGWZ zNSK)$V{`j$Xevt%$@4L?cUkTOdig#^xEB%0ON+}HgZUJ7hs7v_uIs-GNa<}kx8m@? z4~(n(UgE{V`Np=Uy9LZ;&w@~+56?Ua}^c$)=vN=FC*3|_!Z%MU$~gfh0?*> zd*apt?%H3FpAp}$IWqjBElqJb8vR*ivyMh&4l+jEeMM~(tSG)`#@i@#vr(+Ka3xs# z$sIU{U;^A1>Rl1R=dYnAjy?KZP{e?xmF`Aw;7gjMt+Uo-;g0$Co%OM9PmsnC1hX? zKP}&ywJgN~3QRXUpDa`hVm+lZmw1Q2YdQKEjh|(VaDR=hUj!RN_6YYKm=Tg^;*`G~ zTNT+ITYH}A11J?6+1Syc)O>>zDizUrHvriE+#0|YD2PvLnBX9jRY_z<8n`;gDrd^!gSW=n7&gYd6q$4m)oSnrQ8pK7sqn{t~~ZX;A4e4wTBW{ecIg>wj>m$i7WIO&`2QHE;AU zr^#ktQ#-ZbhID9ua%cMOS!(Ea*DKI(e+l1RglT3U&u(c1`Nxr8bXto#mZ8()P6H}) z-(AKR6&ItP2v8em#p}2~$CICsOyEyKu0)*IILpGeTA6a%Ncca+<3ypO37K?HnClel zL$gn3LV1-Fp5YfeMZ>QnaJ|mfC~7?)xeRg1c7{Ihbl%CuyN}HMj*$2}xTsCUok8!$2TQhwpUDzp%R1q0TE1H0J;inN;EDM8?c7l=e;aR;+1<&E zTXR?(dqdJ(&ju5nJu}xelOU8%x|z!gZayDwrS=Kbu9{(~;+bFd%yC(e2%mY6Khc?K zwNdGx_%sWg?0Eq@elNBBw~u_=?nPVJmH$-K*d2F&jn^*s1zgi(vm)xhAc<^Q=%)Ui zS;&8eZ^UQH9_h)yk8?NhOe7k)t{lQ5--o_(f=h+mae9M8f80Q2e)y|%~!~S zTzf^Xv0t*z3+59$o-*xUXvfpt2-jdd`8z1Cc_&?`+db#PTwSz1n7yXJUQfXFq!HNG z+)KJcR}(}B5?p>2NPl|`6c1NF>->WO-blyI5mhPSAw6tl>(j zQR!G&N3@V@?lw|g=7`A7!o(a%{3@It*$wi1zE3&6?pY+Q%;T>Daqn7?>j*dpX0MG7 zr=x|;9c0~hvK5rN&^G;(tVGc@M<~Q!#P-h4A$g;F$z!`2-4{I>=modSry}r+3#C4i z=*^ceU;jGSHQF`VMZWA!voiAKIP5_7nvP(<;ult4teJ#b zYIidqZ>MXx!jr$=Rd?k&rHM|_`FB<>4D3*{Yi_(O+b2gDO~#?wSCvuErPMQS?iWRg z&khb3a!SF@N}76JW_P`}5;LslR1MxhBK@Pe2n;v?hlGa7PA zmwxP)9LgRab9^*hIoxAj+dIccYw0hn;^W1o{uQA8&uDySwN=yP1Eo=W4me zV4il(vto|GCR`)A8g`N$KVYXWJ5kMlnQtxPqtQa^OVdF?{DJ_VZh>DDCqzAT;#_2A4!tHu=@XW^}yi~U&s;Ua zykf^|0O$9>(Re)=P#HZo(D#kF)G-|^GIjloK(QV%SF*PR-{;-uu%Wd+)KmX!(E_n*i{i3|^<+z(!O5%SUZyFz!xZV2uP#8VP z_FGVX4c=_(x1Rwb({HU-59?T}lACcT^?#)yl94C7Szn#c$nc8()R~6Szis*ND9_hSA_nj^%WPPi(h{z@4Gojw_V%Yd3_b+?-sOgIz=+=+j)Jp%X)tv z9maTnxFyG5T6J@gZ*Prv6Pz*_?T_!d(`f(x5krN}quu!n3VVir-gEfwWatq}-4EpK zcrQNUTs9efZivU?nLhy5ATNF`yq03^d5yf#($vq6VnX6{a*hoz1QOJ z`d{hYZs|SaS?IkNLVhPc-HG1!1mJe1cK~Mua76DmG{v3hO}s{tJ4>Gbo!}f;G4k&rL#6B-;@|$qK>od+qfgw(Kgr9i{OkEY$-kmK5fjKi z@b%_M<=aKxcb0#9*!FuiGD<*<=_NeQDOf_yTwWAPY@vpVo0_wPp_<=I15Sh!PwE5maK zl1VO2;=%SuO}?s*M?m4YJ^Z4Qat(P#l$176=6)!n=k_~PKUr#Q7Nu#9 zK2zAFes3J~f?{@$#=uvOO66!$4)^fyy32-6I6wp6+zlGw;XOo)$ngO=au@`a`+XQe zsvmpmb*AM)5pnStxiP`oRUCR@XIK9+!&BOy4JD6<iRffu zZO77VP^+%}l_W;sg?cxd2C&R*;BdRSk+`wU`z?DtIF#SiO>`wXo(`Z(hs2o477mY? z4G#ghIOG^4y>H?qXVz~nZr3^eQ}@}J_1iyL?nnn6`dcPDL(bJ4vD1jsdIc2wo=Bul zk@HPn4!n~Weh>cwS`o%c*Q(8hLd4ZOc9p%4jaR9|Wyk!LP>+!FeJwm&$+rq}ew-oa z0^1Mgz9yh!RD%I@-1`&G)v=uwfS(YBlrI$Tj+7M2kdLVc!iG{hB|`qsI^+`B_ezQ} z4v#!CyC=lA2#GY6o=6XCbYbN&n$i>b2Q}rQ?jOPk3f4Dw1oH2n* z{1&SZ|IX%r_enb+oJWzIyfotjJnAftuND~`6GvomG%J~4J!i$sxz89Cgz@0ta37Dk z^>WyGj|Q><-{BXs4W;#_RyfW#+PCmtL_j2V6vnEo`gV>a9XD#x45F6+qQ%TS*-dEV6;9p1f1yw)%cOdE(kIJBAUFxnhFjhj9v}*i2t)WI-j0*fOV5JsH z?3XRko#Z*=vn4K6i5qMQee$29L|)%WzNs4!TJaMyXBLVRLrP+2*tXs#P+W-?ut}u_ zC26j^fSUOY;w`3mBID;zP+?CIoL>77JT=)UYi)t|FowRcJ3(5PcdA(3alb7<|-MQ@T4`un)tJF$4Ao<&7Szt(h zqez~az(0iR)Ia(BT7ozT_;pf_Ux#Do62Bf4@at`~8t(gDLD15j`SqiJ(2yO-s0_ar zQLyFN{LY<27UBP%&1HD>$MC53FOWZ3$fit=uM>j&a9)|enljChp2cNH?3ZF{Zjw9& zo>mC%*ipvapfz@A*nQ@fAk#kHrSF?=L8Dpdzk^(`axXpX{Z!9__K!R9_vz90p6%){V%6LOxmPG<`RWR@9`2^AA!FCm>esfJ znc-{+-*k2S@T}BjGAZ8YJy83p`b&yNYO2r*&KmVd4BF(k^;4iryd5*tyFK-J&OisPM zY^aAeDo?8NR__>FtBAErt<5ABcAq(u0vW0(^D$4}YEjYn7l-wMb7o}oZbY58sq=JN0Eb_tj?1QAj_We1 z@BNL`(b?2BnAS<%qSO;@s=Pl>x5+17j@9WflEwErztkPACzv9Gu)gtAy=z`l&1UK{ zLiBj%T)e`sglG2MK|x6y^vzLPpXPaA_}lNMSF`)4-Y8^6&`sXddE|AA$80&c!1FWFc3YC)*w0Tk=l7#bkK4&jE0G|zag1IXjf3wZ8V>Lp1fzP~e4L+!06g4MEvr@C} z6919AtlU%s7BLX&fq~3y078F;x)xNkB>O*n0hj*Aa&4gLf1#(v@d(r8H$oW@PqW6z z1gtt3%7R2FS)d1CgpH;UXLUs4PXh6q05Dkg2TT7P(gJxEabJ4Sz+CUunRN^PUlM`y z?F`njDRdQncD3U}0||kSpIAR{e@%eGWk2}=I-GH#M>(0{o$;z!7>1J4qc~_-z!}4t zZwWZPZO&wj3tiO*SFRhW!U>NL^)B-!-)6A7dAm;1a%PI!z4xD28c+V;^W?N!{PEY~ zkiNelFTHlwAsMFI%jhXVdrX@Zl1apz2_*jtUPQ8+(9IAur%*27XXMQbOiKP#<;cTP z?q*pW`+4vG#^AUbLF*q7K<%lK>TnkJ&a)-Lf&F%8g=pG-yE zwQ@)+T{`SCBaoaXe!#rEYO_~?S>8l%dL>4%*S8?p4UcH@jB+q2-S??K!}4Du@6;_r zI0J?=rBfH?=$m(;(U3QIht04p)WP0{n#s5$i1*xcFPGmQE*~S^qOH!kmvdftFWoj8 zO34W=m^XWpis0>MQi=y|GX3_?t)|}&D9`p=`vZxsMe*CX(Y+j;8qPwh4WkIMyrG}B zN#aY5;nUZ+?kOhFTrtQHFN}VqBa%Z%X@tp=vfZ0cVw(X`VojErh8gFEF!&mNJ%U{F z2@TEY&l9#8$p=joru`$`!9?_2Sm=E)Qx!Lq)Ynu_{n%`q8L04XMZgz2OJ`VKANqxQ z;~G0+y!TI2j)CAGkC^7*Xu7oHAj@kCcy$&6z;w9hn2g1@A@Iblsjg)A=V=}gIO-Xc z;lB}#kz>8{ZT_E--+zzeX?YTET#H+L!NG@$54zcTxvh8v?+AhdzYa3l`_gxug_Mm= zi8xBpJ7 zRkHF?@@J7bx~Q2a{$SPeOqQ_wfT_t@Cb&D3l5i@9osZ4=_r6PGeJCG317R}&Cz zig4&D54%0u>%iCG!|ApOV^!CO#t}c}S;RJYuiN)!c1kl<;n;VT9)PzPn?Ver;=pBzvm7ao7Q@(5V`uDbPM&l_XSNk=C|K4 z5FmEBuVqI-hmOU_D7LhX{JNj?sM8*HZ(!g1Xpy2TpLnH{vd=oXm`ShAdk*J4kIs7@ zllNSn_dFo)xiaq=u}{E5ojM(BhS$oD#fDv*c#Ck_Ej%uCZL8W5^6$>Iqchsw%_cqB z+#5{wx%cOqDWlr*k}|4xCMndL``}lGdb57*eF}G1pHj*HTKstLbl49Q{5K^vg2Ly?U=i_?!M=?w1Ux6+Xq@erfw^2;3c6I*BbQ zeK(X+!p}^?^A(R~+CbV_L0YAmjcw0pk<=RGQ4i{U(N6D+cY2q&&-8-wZ{6wLO!7g` z>wDQw^^FhSi@ih8!qrjC=gVXLGV=}!t9xOIS1}!NMCWZ#!^&;L%jc`W^A%$O;T>j5 zW0c6koAw-^(@YiIyAp0|6|p02SOCp$vf>Fc>N%WPyEQy;+qAigKrq+ux+(lOh-{dN zL1lF+>1s(DCc!gRwTF^ACGQ=?q~kv;8JGFKvp&bvI_;~23(k5;&=K=eMEVKE^dzP* zCW!e=6vCj*f^TaUUit@4Rjv70Rduu_R`EedwG+RXijNxfe(~aT12w*6;oB zs#oR+1AE=lBdFmlPGX067Z~fnGMP!V4ojCt_Or7L>dbmg6R~ophQa^_rgM_xv^hh5I898K9^zfJ+PkNw~;$iu*^rDzbV<2-8$NqU5wpp=dzjM zpt56gWtD8oKEv4#)q6*#EF8fc;y%|(4zaZg9vKuQ*$lt7gud!uCP#55M_WQU^e>#& zElhxZmbuOx>NT=?yR=?$-5;S8t!PzNY*Y!xKOLyj2C>-hEn?pqdr@bCh$AvJyBo3u zQL-s}YEbs2-IUG91GVe)Tv;WXvik>R6FZgVBJb)R=3ATh=T>8yNuEesEa!_i0r>rT zqlc@546s#4+eZ9wH^831U*Foi3j$z!8(+N2EZ=c3D~3n*nI&obO-vx#8*t*Foel?vC+fprP#8R2+bG-@?yvP9UW-*`RWzxSMH;CI@S}Y9T0VgYsvDsL3%|Mg2+1sjNA8X znIC+5J@3;1J_U{Nr&E#9Lm7>%8aH@HzpT-yRjR`kwc$=M3$rw z?KYVj0+RST8^rg`eGJt^GvV+Obj?)shFJvOP;RX46yLN^^%PYAo|XCf&W*V>#iVICHkPaRC~I1hB3L8*j!f!xq1e8GHc(6Rf;B;*!1v}=u}Wt=gG4eUin)5Q94|*2T-+n8`;wY`9@r8Mr)&dD^R$XPW zDL2@JQdf#OLGl+ixkr$!=&Mx$(2^`ruO|Q*zGr>T#80%Tpnq7C8IW7~YDX~smoth=SPxmd~L)RH$m8?FIYNHH}5^pf`uhaf z;5-)lPtB2TH@RH=XXaF*Oq5kE^?GR!Ly60k-@Upl;=V8zG8omv`^OZ4G&aQZ>fEQL z_wc=vAH_6Zp(0J#`VlziC0KS}#r1Hc6? z{8TYB%FUwJux>|L^GOAv)aPa(5?o1vg$64$eLs;9!qdxpDUmC27KH2VI?@K;nqRfl zA4xg%9r7~>Xq;DtI%~#=d{}MY@e$guM{1@^Z|mKozfF>&KGiI|u^NOgtxpf-!n!TtxoZf*Q9Nz6B%@@szD1mr=n_z=!FfRiq0Y4LX?Szu z?25s3;h?tk2srWY1C-NAiJtzq;0@#WM}lSDODGiuFP8JC{eGD0%C&~6Odiv}QFn;9 zjb#koI_oaRne3x=9q;+G0Al&corrC+m1!$odUfbfFqj*f)u&r>Y3#yu9fzBmx0lBU z+3c zTsLj&XQWQ`!ilMs1+kAKO|5(@yfExetR#Ai&Q%S3SNscLuo+MXTm`NVH!T{rR!~37 zK&4oZA7?@Hoja!6*Jjo)O{Wh{y)xxY_pZ^RuY2m4aC-0?&d%X{1uno>KUaC9YA4;dHwo?ZQSYd3~#7RA>D`t-DQW_U0_VPtGf8n3kqxD{r` zJ|Q$vk4h4I4H~T|=OA%WWsp+l-Pb~APg@|IK(LlVeV_eQvL35j zS^HBh;s3wzeJz7;m9CU8&mx_NF}ek9$j7(DTc;IBKEA{{((-O^^_C8F%ag<1Q=#&E z^Mt5NwodBVrT~X(U_oLVhC}H&T(VP`Sle3L+|e9Lts%i_+w$JDwX1lF9op6np-YyY zp;^NV=YHI6+Q+Tz`Eff|k43?KuZeA3<@>nFbbXgBoZpjR;cOI~8XM+47&ybb1TeGvA&G5WV;3e?Z5_HXem38`CRVi$ZH`CUx@q7F3c%)m z+-vTty{3I!u(4~w;ROZ#Ehw^{Y+=q_)$MRo!y+8WHplkLW6zehZonyc23gQy`&-2G zNixLy+EgNvb?naGVSA4JjE(9R0>Jw+=)t=^0L7A zTe9U1bp~aq)16Gaqt2-Tb;OsJBxg`lK#~y|lANyjY_}v)Rzs3gyX-`gP*&gGg&uD4 z`yaypDU@S0zT&8qr%?Sy-&fR)I zFm7X+|x{Djh!ots&vaw@vo|CuA+KYyXwueM_&ot9x;MdXICj3Gn+r+c$R&Rc?9rkcp!W{LJfY zQ{%Xnxod#8<=t_IOuWW?{}1#VVw;pcZ+w=9{ln?I9|X_C3l4>%d!nd~p^fk!Yczax z76Xp{W7*7Ou0O(s!!8{IBV_vD7`oXFJ8%@K7~m$I5q8!Xrzmgk^@vWkHBes$SA?G# zb^gsm-hKIs!QrDzAJ~J5{OIZy{Uiunz{x!wsr&h6#U186*B+d!L;E^DJP?cZeB#-R zBc}oSoTgUkT$c%WTk(?f%4vdp`!fD>C$TN;{ZN0Z_>*Yw8eiuf$rFVP1R2$yd27pA zpZxK63(7M!&)wc#RXTlB!1GE38@zN0eLlC?`KtKm%MQjY48Vujyz=OiSc#hWiH2wYOVLt z1W--K4z&7h#Ay&gwWDDTTmB1tH~nbzUkbIawCi?dQ~NUKw9HC^{?6LUWGIux7-v=V zWf|3KOJ1(M7k2L+t8v8eE)Ad5a*rCBe2dPiYr9!C zL;YiBEz@sZVyd>&ra>u%8R=)z2>NDr1!Ztzw=i}sdud$G#v8HPDx;|5R8yhIh(85f zmOhO&Q_5omaCE%-S|}A5D<+=Dq~;+!t-Wo%g(cB3`R;u?Zz7P&3%o1?@-;VaAhsE`mhd zOU8hVJ=RGLVL?1xmTFlTrtK&x@IL*!t?wy_k`G_uO^LX?#p_BiHsFj!ee0!$?Oo^I zHH11-OHu90Lo*XRvz{Y7U?}xxs8+Syk~#GiFPS>~*wqP?>=~&!bpYYCX->8Y?}*q^ z|2agj0L~)ajY$oimEPBJEZOH7t-P6R6uP`(w07xJw^1=Bc<8@8wtv)Z>Ziu7uOp;l zN!Qr2;7fc>fXyJt;&01`Gf_dgy(H_~I`?MNqSh$`Bko;VeQd$R};b|;syqdUNRKHy8)T&!2mx;Tq;qASwc z_*{P*$Vg5#y8kfa(RizS3t3``G0qk$&W4OI@P2<4t7zxtNR5ea{6oH0Z5H>By9U<> zfR6SLB~9=m&Psm_x&}A;?OUjUtZwj+C&kK>fJC>R4~hDLqu5k6UPO7ZtzoL`KrYL+ zp_%=GL6N-VaNDd4B)=pv0=$K=jUVnGWs!F?*Q)v_I8Z$=&lMR zU62={WH;V2%$?GPw7*VX48wC>J;S51Hb>7a6Vl zi#HWV7d5K8lrCqbAtRr>^RC3F2*Qy#-#hA8qUj~0{p-oq=w4>V`2E{T0J7HG@fQo> z7QRtZod1hvn-nL>KT~x&my9(*LZNA`2DkT~q`deEHo_>Z+Qpj2XeX}n|CVhRVT6vb z`iEwo%uU^p@RG9j1M&n*X1>(C5_W!!LAfh7nnQHr;+poh2JxJkoAc&~X3=Kop`oPo z>Y+z+xgBMr>C2Eu0I(#AI3Ic2{(&X5I#}PPM{iNsn!OWSOJl^tIC#p#iLFP5lH&Ss z6Ffq(Na4$}<;|nmuny9vyq0d!Ue&bi9q$$tT)T|7a=qc?RdDUA$EbC~V9J7PUo`T&@rT9R-l4BRhx+ignj%lgXzy8AtO$JFwtEGVXlz8-6D_sJu5%?s9o3C5Nx($z4wj zrAC>jqJr4F;q>Gp?+qddC~P1FmhXEFS$c#GaPRu^^m2rnoyd)WdQ2P^qBMx^Z zyc2O=S4^FxJ`nLev2`!&DP^RXl&6UM<66zA*Rm79JljFEF*lBJ?sM;RZRcAfT{PmN z(4%3XvWV@xJs+p}%+;dHTo*(q* zkI)K5r$~lQFW{8RdrichGA7d+f7w5?y%#$;19m=}PWIlM_+RpbLPnl*7RIj6t!lbU zf1YhB`Vakig2m#$^k-k2W9R<7_%_oXLe7gj(!;LAl0OpqF5nfWOgPh6?4 zAw@j&CG6tKc}^lVsaZN&LJOV5tg zhMrO9i}w4FQyP^&aEE8%6{+d~oDZ|A3b{s*%Wq=3H0a;vL=Xpgh*guJVK_h4ARyAKF(4g-FG%n zF;2YeYhjhsmn{t+Bb(%@Q8)d?R3s?rzBj2*x;Py`3Dqz5d+ zE}cnM^#{%GV}UjOsft$f{(Qw^eqrh#zbU4!s+LW+6 zQ|zrF@8H@@sL<}L$;IW~J*cff+z;36=ikiYkPOoj}BUk zA9Yr<{A5B6r;`-|FU`N4{1UhQ!fE2GlhUU$NGbOY#J4!rI;p5;*^NIZ#y{PJ7uP}wwdhFciA?mzT|MO6zh1Gk|(_( zIP5UzBL+A4(SSAK5n_P8dI|LL)l1DuMAgnl&=N zQRfry<#DV?ZeShaHicv3v?BgtIPt<0U|$d$6k$`2S~hs6|3uWno&o^n4kh2I4&`_l$XuFQAX!_@<XTP}zb4jh_P~wJgK`3>L$s#%J-g&i%CS_rQzPmTn;#%PK(Y}~-O4z^HM{w3rJ;K7`@3j5Wh zM4S)(lc~*kMm=>MlG0g;cfYsaH0pxhgQ@J#la!1_7`4h?@#mdL)n@lu^&1BzxA?AC zgKGBRwp^${hWpAaqLCn$1oEhpThK1*aC!AGMldb2M! z+Fj%%gl`VX|cfrprcdusf z`dWyv_rB*QRuG1xj33SkWJ#ndK)TTX85Fk87ne+=%&Foisl)21^Y~`mJATXq zr_(=eQzyI}c`0Kq2tT(QhcU*#v!VUqe2J73tyb^I`gioib)!xG9kCnGi;asJ{9YHD z)xduH%NYj`u8V$nzWl@1`)ZXMNsusnH& z+?E2FRcOTwN9yaECnKR#ig6ZkyIH@XPGdFSKX)*`nybA}A2I;rkISX2(OE?o%>A;& zIIynwCNlH``nTVY8nJRMos+J9^jeVnc5)tBQ-4wKb*c)%Ts?gu9y>a=7pxcVhUR%4 z_fD`rq|2U$SEKHq%`EPGi!q&n97>){em3fix~d*Do!UU{5-rz*fK}|R-V0)daWhK2 z2RKQl&OXlc@i7IUfrUwt<+SqFM848H36o#o0>eR?wmR#M`x!q=F6FOHGnjxhn z()3pIjintuV;BaQ{Apwl+AmAN+W{^dHRHw}h@3+zFAj$E0cz9&!7ZNnk`x50hnD{1 zbXksxvvM|F{n7;Knp?c{IoSg1odeP@F4zqPw_TBGm^~!q>uQYvLUa;4X+2?JH$eXwR?kUo%6QtZWhX8prP+KFblWBmz2vI?yet#l3s zV*HR|&+wnKMO9y5A&UJ#{waOBOC@|+z9~sK?m50UZ$B}T;boqN7yB2h-S-imXS(!-^|FhiWa7hw1LOAyW!#sH zO2$5gdCH=JE$Bv@|1guE%SFE=??GyYTl|0uTNkD>e<=CJwd`y!%8CKWfB|wXD>Ges zH*Ijc!=UE2)EQc{rAL3y{s)IC(TV#T-bK%;L+38UT;FfX1+sONvA^1XWV+91qJhqS z)ernQTKI7|-M@^p!DWn_%NOMz5N3btxTyOB=q*lvoPNa#Ki)0s9Np-gfEzEqZ5!B6 z&?Fv7Ea2w61@Sb!nCE}ldBZa&*3_OcsL$i&`BP@Zm;^;6@w{2<6oit!gIAf_dF{e$ z)O|@U#o5lx_Z#>UX%ZERWH_0zl6O0WrH8((7Dk-S9HnxLPn&C4ELg?-77hu!|9X%N zQTKL9k0_h(ct(vF@18b>jmpt5T}qAvc#>&@p^WMisvgRsh<}7q)aWeG3a*_0^a|@5 z9I5bpY%%o44-1r{&eMX;%OZ9a7>v)UCF4RrnakP1RpcK*+f&VC(E-A+YtB;eINCJ_ zESwQzywmU|im(BVcsVyQq=jgC5&h|Xyx4)mi1wsDCCW1^0i6Klv$n%d^wGdkOyc+??~>gtXj zRP~B~1N(Y;`l)}?nH=}e&F@CIPSu#iGwpgzHaHUKWTty1g5mB037DpaN}Nq<`9BZF z)XE|3eRBrwY&r)+Ov2`A91u?TIg|g3amb7Wo6qdyE-C{yFd7FbJ^S7^yu_rN2~guC zqi5vF|7q(6FrGC9OfnK)hRiF3kmmBsct{UNI+uo~k5M9etyH@x&rx^Mcq1>Zo;cHr zP%)jXZby+LQG@i9XJW?9G1~MMHfp(ZV;f4}TJa#*ot7RX^%D%RTq#ldrn%v>K_P{I`>*c1<|hV zHntJ60I2Bv#+q@pW(hd%IgNOQcuLGK;-WyNosUAvQX!1~6m_p2Pc7vI@mr{20DavY zCagsjmc+i1UrI^q@a|xIYU$t>RkRiLQ!`BEmx$xi)x{?%*II7|3@obMk2fWZxM5CE zt$%`HSFOjVEl@Ay2{o!5qA~{yRHoVi#>KzGJ1|o%H@D{3`@Ply>FTGA%l}$$pP=5b zt#@L!-gn7I1?tMw+qgzbOk6Dju=hMhtq?&(jMOG_M$KtQvXn>DkC~H;?j04Yl*_ff z#jTwY_XnB>COLPQ%P#AYCI})dtWi0cdlzjbhU}gc5iHb!J1QQ9%Ay=MC_gBIJMUGs za;6dTDTGN`D0yeG=A>2}Jo;yvV`PXrPnjz>>z(N*q%rjAC*4dTbB(&ir$O38nRPk!W z=#p^FV-?NHkQ`nFF%vgJkl5;QlWmW%AIo+X_iD;91EoMdaE@=<(dZ6BBOPQsyp1m0 z4jk&$7*@TCyQjwJY(pOA?lt8W`x~SA*w@1c4^mQX9@2mfzsr_o;$3Yt@;l>40W?#q z_$cD^d9%?O1g&aehCTzrh0D-~`lBEmFWKjuhy!Wt1he_pK2YtCxJB+BK(qfKGMkP1qS|XcsZEA)HZW4A$T{n zhmx|1K?U)J$Q7=8fds1Hc5KMV4I_n%bSz_Z_#Vq2h*P_s8s!eQi=RFe2q&hDr&AQb za+F&n$Fxv#l+s;V>h{7A$(m<>B}h=}c)R4s2yV7EJ0cHKC5$tYIUG)^r*d5C6-lr+ zjN)CxUZi0$vefkxXvs_OLXvq&O{Z|92EjMV6xNxG(Tz=SmNLsa7#GEW!Do=U18@*Ar8i_Xc6bo3s6fM)UG{6{r!pjiGEY_e6{n?#n$&hICF~V(J}F!?Ka@O7L7Qx64TbSJIIOox9W7dw zVR=1J6K3pn(n=bgHKWplhNfDl?9~!+e+2uKcwdJRsx|B5#3L$x=3l|I*?zy_p^QY- zA>vwpEqJO^m-6f1O>44~W<`HHS9=%OxmvmQ04@KcE!lopvfY2xgqNybd8wVVKfvP< zfpeN#!xYOHEAVTX#h6~l5)eky`fQs8Be0!@O`bc*lVhd~v-{tGmiU?w?bgh9=t|6d za@NA$FatHu{{(DupHIsBe3d>A1#WKqb<*F2oY~DZD%%l~C-PHel<&`Ty?gg!kk`fV z$(}~m6yNnvw&0qF6v|-+tBeS;Q97V|k|{Nt^N>}`^R!p(|C|?|_HF1$P9hCLe8rBe zcSnvz(uZa&)kt^xtl;QOdK9i~@9T5Pv~6YNjlb{hjcpZ;ojT&rCB8)+JcY=4jcJy2 zAJwOS*->X4hZ@u4@~s2VslI0U6kJWN+gk5<^#hkh()C>-&cyMJ=^_@$i}G>H5oPzO zX1)vSYWtDn!!=)CQ_6HfL>?55h;znP&7+Z;*7%ADUS!-LQxdKDC_YV+g{Wqw(_jWx z0_oy&$}nxFOONlSpT5ssqMz!vk8seu2?vKXhX*wybO}3>piT2NV{l&V3o!z7E_RZt zKuxuVjlZplBUM#{#f5oB9s}Fjm15 zhZ-VHoXavd+pt~r6&dd%BmV2uoFZdG*BdLwM!H^9F+ReL*kKukLdn-@p&Yds8O&hv zZaT?AKh3T1C>RY;#_B|Cwe?GX7?fB4BG=lP=F-4)b+0UDeS&g^N~sT!dzdhR{y9Bj ziSd<_M+~FB+8iHcb1Wu@-(70;v;`VEc}jQQ`fe}34|0*R{te11hKM-tH#l2O$Mt;# zaM~yCU!guO1BH7?@nXP6R8>E&p^giwHkcuSRF~h#vjBSZi_(`-XH#RkVqso=Kd5Vi z3KF|t!v7Js#yxLRYUvadhMCPIb6O*h(ObeN4W0{^pzz6{S~G9zdhu>!&FgV2tQ-wZ zw4%O$7=P4sfczTDqwoU@FSVo5*?@k~R$uv@Dg^Z-mLrQ=z1g>be42^XVtAQ!MkHG} zow*~OeJj0a|JX3KUL;%eLIq5B8GQ)9?2jisb=z2y)x46zpA}Yep~JMb>>D+y6BAp&MlzohBfi;R>Y<)o=e=F`Af1Xh~g#%QBmT$&}P*+R13@yND8UCNQOj zyS*NSz;}@gsj{?@PheY$hfKL~Q8`A9l06_@z4U$cg{)@m3kk?wowg#n?_WU^$gJ|O6ubtl^xq;@pG{}*I)cWfHY z7WrZ7|H8Ol(%F$2N)^!oxzX*ECC^r+kG9>&0J{CpLWjdhfL0+MhisL>=Ug)6$~YH9+lb0{}aO_ z=s!GE>k6^+v=$;)YvzS!&OspyWM(LpmeM%isAx&bit_Uks|pQcF8Ms%W1hswyiK7o zt^QoWY^ihJ@^41T%*ea{oWGe|+P~i7Ju{aYow@!VWUd5IDNw_i8Y1c9vg#U zJ?0g^+;DRlHm>XFo7uIb5~eqMaW0B#x=94HUpCeaySOc!R*a z{m2}T;;{gq(fw!LlxY%{HZ2&iP(<9JEAU#-5g6{O=8n)XL-y1XR-%m4X2VZ7CO$9! zHewcF{kw?62)_WQdbbzTFR6^?ax{|md&DbJ+!mb|C~o%|jji;$?})>Z?%U;D1YEj$ z&$m(BUYRD@MRs;5bhIB~S^Cps^u2EzrOCFCAMXz)TXEB$QJE2(#%s;a=xkydmHncM z5<7JZMD+*%*0$4P8l#jE4HJV&Poc@~vs;e&?7L91b$xDsd71apfh{CmlR_!8i1$ z+^DkpM`k@CFXF&0zy`3w*JNl#;IuYG>V}pT$MFz#rx1*4voQegM@w|#j1I!-X3tP^ z2f{{MZi}c9d30YzE59*>HXg3;YOYIHSD6?{E4^zt{w7&2;)dNKG^5Yl+DahxYVV!L zKkhvOApofsBN;b%&lnd7c@V}|u|Jb14kS+#%S?XOw_{BHmEJ8Tzb+S1{>|P(md_wZ(mW z70nTLeZAHj1;b$HW#msC%X~BEm>%eevw^qPyPJ&GuO+^c@cyCHyTFLFjWBlV25m;Z zVc_o&y%5;W=hARZlncD}&c9SBUcsW`i}jRK(0FT{U?kT{*kYH zRWtZR6s;nZ+A0;AmSx?O@$$!JRx1Xm90*k*=&x{B6a##kA?QOnf;Q*~tfix+p*O*7 zjIH$AaqIBsWaWF*OgPow57088!%M^RnC@kT`;nlfk9qG1^F^LhSL>sD?RaIpOk+c` zslz*8kLplurv~um1CPS@+QQxsbGeT;kMw$nSDs7l%OmorMD2M3FtSr8?a4$sBAygDVyyE?_6Aq0F}B!78>LDpP?_XqDPt~k9Wv*P~v8C zh^|#%z<->EI{YVueMKbe*lc^*xE8s>ozzHgV(g98s3+;_I>%ESE?japd%wIy(<>op zx9%BVs_(d6cq72H{S{+>O-!yVh!bwmemI5?zDJ!A_u{L~pw!W$I`_pEacKvQ-psqV zP`)>!g~uC$-v6V1)74)bV!QrYd>r*z(U#gdOfYe@;jy<6gTaBhSeZMzBt7z5;#XW- zoY>ww-h&UYWNWO-4YMF?Lx(THcw5pn{zm(YIeF1ogN7AKMhuFkK>V%Df!t3_Bw5u2 zDm&;}?_w(SbwP5FC}!~@O03T%KB>gPN_-cn6nzcnV2%0*8Poo`N^^_v_?<*|-vb}w zCtZElo7p|aXBaXa{yxm1R-a65t~=Lw1TPH^$h~8P>{+3dT{?ef1Z^wi#G2d>hS(HJ z{+YKr=M6ZcCF;(WeB+{?c!l@)Br&lO2x}Slthe!Q`kaBn;BOyb>q}Sn573=9Qbdmr zGyaF<^;&IC+2PKjxR%R!f}RM_3wgC(^%wg+YxCom)3{cqR5icKz>7Vh=WosyCJWpD zm>cjmltTN)JaNnV)*dsnb4`iNR&tJB8q70K(K3AZ33^}JWm#Cr@~neqW>C+47~>os2f&-T?hJD5pt`Aetf&9KdbKH>cK zy~UK1>EEi&^|Y^)(YkBJV5?VE;4HE7?C?Y4ba+9cDyL~OiJdmIUmc6%I&2+7WCvgMylus?BlXdg8nt0%9p`lG zoCV%-l>~-&)`$fLkJXn3!?;6+>5NZCsbX5HXF$2*%3&~XC=mD+1ZTdt{y0t&;{e^} zeGTD}GcDr(Z2|vVG?V8uz%>TG)Sf-@0dyoVt6$-NWh6j*i=8(!`j$DoagSOfz3N5g zDr>F9tyYGyziaYxi`U$jwb$BS4<&CmUnbjfzu|?IX5J8!y|!-J_r_p*jQ9zo?BVY4 zu}Iq)qsbj<+FX}DtuV-f;cZhLCQ)~<_`BYvOgaI#JsVA*RZ`CZ1!JXcNMDKdqN%J- zmtM>`11P!vY^Yf=Wmv?$e)sm;#f;ao-PvEy+}Zv*4`Xb5{7F_pU##j;;JwT?BVL5s zaUYMR6tv|3hjLivy?UN{2u$%RWXARWYP6z@6e0CPEU$Q+vBXXf`x$Dc8Bfd+2F}f= zqcCr-V+$19PS^ra^dHAbjY`RD}8^|Ml*2a z1?-)Xmwv1rP^6c8HF@bZqYMnvE4@Q9>C{PGrdl^VmO3Y9>-?L|Z~Q+@odI$jfa!au zzPaJ?6c~{$P#m^ME`a$=0i06;*x{z|Se8=b!&`6>?0cSpEZc35Y~fRb+NM*uK^t~& znpqE8!h6H-g?pTp7&2+Q&c29SGlNEFU+nzi?&aU3DNrYK$WYL}m_8i1l0GbC+y;Fp zqiKF0b~`uIhh96HUOU5T*f%RE^9FNDQ0D5L$}Bx6Q^xlDKPhN9GAS<}efW|B7VQZhpzoTa>3QkemP-NszgA$_df%m)P0`z^ejl?Qfy$i!zSt^;1a z%kI%Q?T8i0#aXVe;q04^GiYP%BDQ4=y=CslFkAGIXian#@!hlvkvN{1>zL zW+3yWTwgBo&Jzb+$BO0A6 zF{MutnM28Mf$Uw27j?MlES!-hm()2U22fc3Np#R+&KQn~riae+&g_)uRQ$De&2wy! zr_MRGvM%x6p0RS=9jaO#Aa`CSX89=##hpyItovTYM z>hR^>Wci}*+y*Z5Jg3fiN2f8%8MWSb>=9w)} zV&Bgy!}UD1iS+QZ+0!T32RofJ$*#AYQ;hL2G;6ftH%{!v`H>~p_^_?l`vrE+Csd+q z3;a&-xDl^?56wRS=3JF(rFdw%0x=s9*cVDqpw+rN#rU4z^aGK)__aHN&F;2SD&fnl z#LdXtboDtkwuM!k(oqXPR>P?;XxJRRW*gQ%FmLeWJ!adt6MkQ7EU1ZSO)I@)pO@uw z0mtpAC{@;(WNIR3-8;9hKEHkE&C6@wACA`rSf))h^V8c8E(lf`IJxVPzs|_i(t}~> zHHyZJ=68{~N!O-VKe4xMcMYdw)b1)(m1#E@*>x_NM}q%oK8JsI#{aQg`_rX&&&|Vs zbyXJs%q*z$pXut!N)6ceIui_`hRz%*oH4s1&%Q)N&+aU?|l?n6q)GK6NJysdIcetb-v2 z-Z_eu3{Pa*?q7pBTJ0~bqn0ceKhMwn^-0lOPNjFnJgai)RUk$&wO)AHGw51q&fW;jC>nERM^?vM{u0yp&z%T&<- z$xFqT{|mDp)(J^7mP3ik3>rJ*w{Pad&iElLF^Yaq(9aTxJEv6WO3!NEJ}8t@WTM>o z66MO)=%#St;@o*Z z6I`Wa;+Q!){y}5rO|a1&31x5e9JBkdmP%RGV!WAr%sU-sy=axI`7M-ZhiCP-iS0dN z3yoFrD*)xjGdq=UOFk+jcl;~qA5!t|3%l1MLc0y=9$(@0VCl>B&AAnGL^+gfH@tK; z`U{TUCRn)D8AGWMUx0X14nAzxD1p9J6K3j*7>)w~2C3 zn{jpzz@kQSOXp_0D;Je-i1Tk;1BvCGSz9(ZZ4J)r#_!`CX|5RsT|T+d^q?-fBrmaz zZ7795PHZE7;~%Luv8_0itU#b)j;h4!9qidCcAV&(k}0myX|GG4N3g&5>T4zsoqAt( zzG!s5j=F;@j2%P^VNA~!Z(Ws+_e${ruH*@a1KSBpV7}k1wr2DzJZ};U#&?RXZpZy{ zs2Bgl>?*5&75ZiCUZLrOi*)z=p+!bkgc67In%806ujvpS0RuLJyrqG&x-)*q^jVi! zhd0au$WRn6+**%IgFB|gs7@`=9LH<~>=N=t#453u2+>n6w=P=nuSQH~|Ijdm#+Bf$ zZs)ws)RG=?T6Z3UVrlGv<`ZGOd7)WL>7vR!bl@KXB|b>0M)&3d!w6@NS3j0Vn$BVo z)aT5I4y?E%8N$4afwY1M*PJmRl=^>Ydlxvnrt|-QCNfMU<4g!f-3Eh6MNL%N84_la znK;7?Lxi+(Nt=pjh=_BN5J`qJ2gmLqtxGA2qNUnWRMjn$giL4=#H}uItL*I{af`Ul z|NVK^-shYdeEa?Vf3KfcJ2`vrb$!;ep8I;1;-H%;8<(nmtb$hvV{OWOq40>t*34tg z86r>GGi&F#HhQ?*wwF??7z@6J}o+ zhzve#gLVQb1tKydHgh}|s4+Ku1WY{l-8}vpzT08Tv4puYrPPZ6%ba_$u9FZJ+qjnX z-_6;nrOlZ)a{pOuC<2njy7ra6B)3?Gkva678!MpZxh`SleE4qS+W&1 zH@v#&Ad!O^47;?O9ZzWFdUS50w92kJS9;&*8pc`ITgfuj85y}sgeHSul)_Y~6gso- znh1vy${S{{Z&m;&m_52FnF)0724fka}3NTQZHEo#}>8CokO&%VhFDTYE zj=5W^#^gKrpTsPi>RU>ZR9WXg#|d3H=F_;G9E&(bQnh0di3cnX2D{`g|29|d*4E66 zOr)Ab9YT$|W{x>lE;6&3pfHWf&Djx{UOx_D@auCN41^KY1waTbstpy%W6P@J6|j@7;Mol6Rs&EWLzB|1<2T8rB{5EffjP zG37Yqf$P`+G{N47hkL5CBCNBJhhP<-^YDbe346EIhhcmO*FSc#SiG?xhtEwi+JD}X zdCdse{6^bIiqDGM*0TMnV=j}d)Av|eQ7QC`%#(5NNNC4X$&b7v%AF)cy6$+xr?JbH z4tf-#1SwNMa@RR5e5-fSb<|}PbKffBf!}851n6c5F!N;+fggg98l(8*x{?7|dYa5xsBA9y_4E$s25W_m^nP zDRKT?lxBNy`hp+Xrq5Cv2gJ_1mfyh$t4lk~_Fho9B-mS0P-;F5JFWYPgKNdJ^ZD`- zN$(~{h57KX<+ktkOz(YE=nXETuLm1xpy>g4MoDlP)tX5ylKDIYun{ic9fBIt2$3ci z&_zbL-QmI~H#rMg9auGGK8`qO1PR~i%rv`kIk85Duc1K-b(B+I8>z$9#IEz@5hbu25nBp9Kh|d*sW6! zW@vZSxM>b-Z1YB};GJxAjq!$KS5#uyV4_Aubn!F8V)Jw-w(;uIy$c~khuhIgukGkMQ z6Txdh0~TJbwKp^f76Vz6NKAIgL;h46{wBPbRN!jC8w>`48!@e8T0A!MbquPF?VdZ$ zA}L=l;W$Jydt-@~J!N$Zmc({%LPt|(+@ueiVy6w}&%$x6*BR`rSFoLKC8I3D7i*=| zWYu=6xKe>#_5Llp%07M?Zxx(b)l6uNI|z=2;9<#*!m74R2V6ToDK@m6x;QnI$6<3I zlUh)Mu|h+kEvhz>Bb)LjjxOZ~4$H=pSl8YBgh-^<*td5R9OWY;Bd72(Lu&lyBKq3Ed zzZbQGg&FJbm9J3%lGe$jy4c&sXswuN#OfT?= zU95AOsaMyee6;`VVwNMPb;-b2MT0+wD!h^Vfyr;pnf3Wnb1HDR>JUckqQCLi^8G3@ zp%j+ls&KHj^5reHyuF+;%-WAhNzzSJFnL~ zAvl%Kxs_VipXq8{>1tiUs}=LytMlBeG_Sny)ftYZ+ht)ArPnqOf6L#ZNv`(e-~oMt z(xfM5$3LCgxbK`jo3anKGS^h^L33AfD+XkT|8Zr=4I5+U?#i#+9X5X@V~VAQ>c#bp zvr$zxZWB9C$LV-h3W(Ikonq&8>p6tZ#dqo<_0{BhsS+eraA#B{bU{*Cg^@q2bxx_q+oGUv}@< zckqnf7r7xUGOUWyOu7qf09nXuoZGdi!=j&tzcQ<4qMl>tE2lYQdK&w^w*Vf;@clTR zQw5&lA%Do!iNA?c!Qz-+kN=(HioSYDv>V)K9947HznO^e7O$#Zx#&%Ia8NJh@U5~D z=6ww|)_(es;1f$JL2*AAVIQ6BlA;u@b_372cb54q0FsTQ>>`{@H8Woswabm1ws`b$ zBr4{e@_=7q-#!>kKJPNgui4pDO;UBNRTV)UJvsRpH*IlzDTjNZS$1V^9rzxl$w3rL zKMzvGxehCynONC5uaq~3@yU$$gW;qMc>tj%@@ct9UI6Xii#r#Yay!dm)9c@AkFhSD zJ2_|_^<+dwYy%4Yate?4;o}P_~Vx7M)B6S$_U=f4q_d{C0 zUC{?MFQiF-!N<<}?_x+5B+S+xE~Qz+TPjCB;uh2l447MhD)$$@?#@ou3l73fk!#&j z*#ZSpc7#5echsz#qA<=xmc=kGcb*my2WQbtaX8UeDwPHYS z%Yr4=BO%CFLKB{jtci@KeO7o_u2X;*3Dr2V`?QVzdxBS#J|wXJ|}l z_`O>&SB%X5vez8)P7(5B74gQ7hQlm8HRTUL&z>YV@vw&tp@%O+Hgx{m?66V}MwQlk zb>8M5#!fqgtUjlWt>Vul{pzU7?3*c%4gE3yKN1t=tlHSnIKLbDeF%cW>{@SDT|5)7 z^$w}a%&yDC>$G0xrz1GQ{8jBdnx_k9Sb$357j$%WEM=J*`(TRv3zNy$DIH>>fjy)b z#c%BUfe;RzVw58tgDOCWY>R7H5J(#+(;jy2`!oRb{mKgCkf(!COg4Q z3~$inTk7(7E&=F2(g^PhQFa<4ElUGQRaOC_U!WcSYsABtG^CBHw3+_J=+o?;m2++P zK&>P&R@yFtdPzD&d_vRPi3;{f%MGcz7o5ks$QXs=iLyMwdVGzJE>KM)lBygbIRatW z1~<5FX{kGO!==h{CWXWyTlUBOY{k$&6k+3P1TJeVLP>2x-MJm~@F(iV_R^|NvK8xoAGMhK3y*OgbJy5p1mmF$UgQ3i3G(6Q90Gi9roliQ)y92{^;dQY zFBy4nWiZ}ev|uiV99*rP9+Cs?T1NzAI5hwo(AY3?@Rh45{a*P>5zuy`^FZeE{IJgA zv-t17w7|V+Fq{`>@OR!6&BecGm|(MGsg0;tXBilL5uCbiq-yV0!8QDY>stN)GzP+?Civbc>WsX#hst+la!kiX@6enKJuz! z10iESu)Y_L0l?SzwJ!^z$t4B<-VgeD1#`O>@7+T0$j`AGp25H7d}CT@lRug>ue99&%;#sxSI2;t*Eh#0FQ|ef)R>+~?mHqw<=#$PTEnm{e$aU)7h5Tgst|%X9btV6Y zE~7ni@d@UA(pIBKw`LBm)(>Q+gKNnl3iFC}#qfcnI@QuDLLAqR))X$h7V*;#GQr3q z;WQ+yPzer{7RDc+dTdQCH=S$?VShN5dKVnf6&X0KmX}KLXv(}a@{!zrdHHYj*E@|qJMk`J(7n8tB$Tg^d_sJ) zso^DZXwewZnm3zh(O`L*|x(!O)Z_WG}wd; zKD6)yT4?GS->6uDC3P@bL3}(mJ%IO+EWAYQSE@vZs&gVGu77#1*S`p65-fqb8DKVP z%hd53rZJifsdMYOly`-H3IRzh34#huHqj(hpArQ9Hx2(+`_wmEOCM^_oTOf{o7(b? zhXb$hn~8Krqt7^>U-}xr*pxX81OCC4bZ-myE%(!ObHVJvV%iqJGmMHX-7~W#75W#w zFBuJ?n!)^34i=ireWz%-7pv?Uy9@6Nt<1rHUF%NjRJ1r_?1@Yq-ZR2UoBnu6T9db^ zPE2J>CfPdm=+Vuj<7&<l{af;X5LDrcgc{BXO_Y3Jy6{_` z*MyE9O-AO0r(_TL$_AYs7CP`Ajc1QqRi7K8@oUfx%Mu5t>bFRKkebI|?DONbNcC`R zatQB}*o$bl^L~qEOq?Qk$`J(=cen#>eHOnAz%Y|Xk&oU|}bBb@%5zb&IdUAS3 zzkYO1uk$nLh~m9mKmC;xH$Dm_ZtvTPYk!g2e~>?}efV5re&=W3O_;`;UPH&iXW6NH z{kd@7K$&T#Ee15{Dr%Y87N&pHZxI_@0Ngo4uy`r;tkY}jp$EDJ-K^qydMJMYMkxr% zs*NSd_k$lAEE`LVyQ0Yv7Dfx)8JQbo@b0_w=5A_x_icF}Fn!OJu0SvjHIO`d;mrQk z&p5`mkao43Syip(X*_CmPqNoxJ<1yo*A$8UGO0+ymvLXcTm<(Gl=-JX{~d8Ipp4)l z3!xls8$me3UB%&2AG_&h{2vO%9|hnZ3|0q9}eE*Jjnmc2Fg#> z@~NA|&EApqh*Q_+7O;~4zB&>B@k{(|bBTa#!~bb2VJg)0Ra!CFr{kK`lHwVU0?i0D z=RQVaHdHEg78dfZX@Jx_q+Xj;o;f$W&IbdnQf6uDHBOCT{BPtbwQ+E)OE?nV`DYZm zvmW>J(KH9|7y$-^>u(fY>u&=$S-OQYXCk=iETx4Gke^t3CeY4{biyJ@pCeonu{=Ud zc-kSvC<;47BJ9*fDYj+~2d_-)>nAX6y`bHHvXqw75tUv^7Ilu9IV6|AMuMm@-w1=L}v-i zkFW-ImnszF0j-C(DYuE)HDTR}nAf?OcVJ`YJpBOY@l#XsaeH{s3~_43@-KMD)cR$g zD{z91vo)e6J}i~svM}6PbF0bu;J0iiZoSA{%<0S2N@`IxJ6l28;BBhUrKqA45VdrZ zC_uI%17u`~a2Rpurob7k^@hiR4$9Q$d+|*Ddq9r-wN7^UxRY*5mPj=9_t;)ib`Qu5SehB1xGBfqDk$G-#$yoyugL!dO%`iqY5z%hqq}2Xf#Lj;VJn;s!PHj$?w3Ye_ zMPwYU+40lE*ei+GB%_zis*?{i(NZ4Ur?Gr?1N|EVDwmrJj+8!-kzq8~WvoTAN72v4 zs(8j=vQW4t$=9YfGT+TDiRO>cDO8zHQ^;o>hHZ1Sl5iKiaIZ;+L&QXa_m^xTV!|&$ zjS(=yOZ$xQ05?J^$~~9ysqX(+gy}F^FB(>XKWcoj)Jc3Uj4@|9*WLJxn*H$C5k__U zpKs#uX~MtQ;der5`p(1d)diTd44A=RfJ_A6Nne9+S|0GCVVQg`@B`iu8G=i#1=i=h zPH@AuI?3MYS?{&u-22AD`?%-en!cHL6uKZ^NP&fg`7_ihuJR^&zj#Rr8`9Kfe-{j@ zC`296F_`O(42d8p;vt0Y{e&yA4w-j>M6iewk$qRI7nZpqETaI#U@~R2W7w!SUnYZ& z+om@T&}psn>;Oq{Y*?ni_4klRG5qDtLD{<9Ez4qIqsi?G0v<) zA4q?cC>8Jn4({*Rt6k+Tn>rI2hFgqElY8O0kAq!_U1fE|3A(6@Y#FbkS&CvE3C0!r z)Nwk_5U=q!ITLAOf$m7!jsneI3TcV^C_4Ge|L_@rtf%pdK;Sx>qt#D#(4n_=e(QGx zXE%ne83UgN-K=ATJ^oDBXV+mGw^#PWPi4d71}T2$_`T!`TGlxwSGh!`vVD~C9wW?@ zLNr>t(e&|ima3Lh$$MI=9{9=Vf1)qdaYzB{Puy+K8F7ENaXPG{Qy#pk^t+m$>6OzS zm3ibNBcGbq8k_kqH*@^^OJhS@8vS#2zyP10utYTSqZdhOwh!{~diqL`;Thqay>Iil zf;2m7x9b(wj{TU!E`nG)O0#QIb1*?Hg!d(LBY3w`#=B48#-UcMT$`TYR_EaqH1AF= z2DBzEv$d^N+DuGd%AEpSe6!Yvz&hO!emlQo=Z-?TX2{$lx4m1et8G&_jlSB9AES=_ zy<4oM9AMFyPuFX&Y}cQJ2G=$(3Dt(g1$0Xuhmq%k_SxNk^zopQ+!1nO&qIMVd^^qX z4VUs9Ybr5G3ajY*H1|x1pk2zb8M-X!xmhY@`=#BRL;40fxPT7Yy!$kpCIW?9Q|D_I zrHIGLUyHW-3puZhCGqjF5O){l4i4#8cGQ8t5$t>YPl=+|Jd~e1>~NcHzPZC~t-~AC zVJm?c>aE3_Ssu?$$DF|>ay*lEViR&UvwBKEkvND17h34aAGywcp^)utMcE}H1s|we z-AjWoYEs@sU#;#9Cz-p@(a|U>TY20_G_JN@?NnvXm)XFR*Epzs<=-w+ttQ)O(#@oI zRd5gwh5g&=&4j?M^M3}HplEs*zUn5}Y{liu?5HRbWdvkw(U?B_ay1t62FkTG%h^{1 z6tUtJTbyq~wBg9lk$vor?r=RST7M;O9V!HEd^LfwSYH&MB^kOr>@58tH<$EPs2sGt zzSR+RO3DAaX&Vg2D_Mm^#~+@c>Z z$3?j4FNs<^Rmd+GxFFsXfqw`(nZzDEog~|DC^K z{l5&?pK~a}+%k3{>(4r~MgEuTKa=%mTm2n%Nkllg3r`)9Zw(j0wZ z)p3$%E2`3kl|d9Z{WBK+=d@yUK0E5-TO3Jg2*-9k>k!eeT4X>OO&7E7ciLj$KMQ-f z8Z|B054BM36tkGROZf0RzM5QC_T)rX!mIf4WW%2AFDi%T9Stk4=dO^UMWi@*&CsJu z91A?FI49d@*!O;#N2%a78V}{nZc6t4LWE2)PN3eeD2Hs_#5SRSa5!7Bb1`bpcHeh# z-Wd+}OO)trR9w@9$y< zQ0Lc5{Hv$os|SlEF7vM(EUzr@f=_KRtR24pgxQGQJ5s)UW1f@;uVVKq?4J`abL(~v znwfA);dxS)%;qnq5ledv&^FRr_o(bA{?ptFUAG@ueCO(pe)szyFBT4Qv+1cM_ zNA)>opC1WB02p-6oR9qFUb1b$_XME}`U$@=^iP)x$ajKutlaN5cN}EVcO3*2=;bE< zD+(|v8`0Z;mxy+&&qsf2MrE`)63$POV!XkB;N#WC#@3lA7(!&acq~*Dbsj+x()+w1 zto#_{8!OSs0k%!>V*_Nx`C7S%=XLw#pRCsGj+o?TS055YW)pm1E7?qQnzqA}PvL{a zz~}MgU)`b^%ly-^E;&4T5IC@8jtXJSKyV<&7VY^_OFV$|G$4zx9{k#S)oWm`fJMp49u;TCbE#v*3JU^J#! zdO91KiBCF)i5v3@2Dnxa2ld7BABV2MARq#*LDBc1B@U!%7?eMXWr>?N&#u9TV0;PdB1c|4L-;r2VQ=!Ety9zW5N`&5k*+ms^|Ez5s=5wt;J8_f zl)>d61DEQsOEsK~k#a*8IfZf+N^{)S@CLytRE=}{2o3LHy(Qjk%j9%lCzTb=411+^ z@FPhnT>Og{aOTFZ`02E%a;u)wb`#4si%9ZgOc%BpzuHvG^ojoqoDyy$f&)7czrsf9 zO>EAB?+Uxn-nY$_X{onrFND=5_OI3$Rm&aKr&^;``&(FTr~cL0IIg$5`c|v8YUhX5 z*4i#}o7@Ij9aUS-@lxzT5j(tBb0Q?^~_Ts?~(Oo!P${%-sz#*0);Rs(nm; zNky8VyV+nC2t zL!=*`V5+Ei!YeqvziFe%*~@XICQe2`SJJx#7#R_u?v0mjJ7!lpx}{#Qm4G zwV4(kpSmH;>B4evCuTqO;gOFh*HdPPhgvgj50wW;(hB*MO;xes|HtpeZq(*g`=6kO z0?jG_VB#K^d;+beBg`7Zlnq5@mO4B>3l~Hlv(5ms9anq<2Ba*xFyS7vMcuxhB@+Es zE>Hh1{v>oe$YXb6Q{4}rtl$wQ0@6F9^~0tB za{0h33Le4}A-|6#hjp#q{WUl11LnVOCss}? zl|+vqq}O3XcUavss&ZFL&ucvZ)~}o5-FVWoBm{V;!cX5#a@i&yEq;5gf1f06^?d{N zxk##}gkxj;RAOC`JYnrsJV%DkC=XBOgZ#JZB^3W%Sb^=Xe-y*K9Y}RucRye@QDCWboz=DcloJRI(Wou<-=B?3QaW>;G(2*{`9BIjIdk$!%TP{V1C^x;+PSsf?0nM)TEiIy5DJFT5R+ ziOX~U&_2xjn?W*#Y*zXAnrj#X(If0-j-kugjUheO zwL1@~jhiK3b0*;T{JnAHGU6xEM-V4pOstIEy$Q$tdj{4BIf`zVzc(_faMztCFS1p4KD#X)OH|U%i1f+6#9>PmL2z0~@p(FGpjJHp;2esl78A zrR8iMPaOdL_`6=oe6Y@c35y^#OdEgLKP)D?zqH}#N_>*^Ea86yc?(u%ncOmfVsf; zKAjl&asr?7tpxY;$F)PvS+Vp&`lR-WD6RY|4!)o*jce%{M6!h~&RI8lOe{T>CN#{^ zdnU>Wd`(|#i+1RMcy|5(T|jQxn=_y12>9R@D(dQ`j9c|9lkX5R`jy{+Oy79`R`Q;> zk{@V6f9o{uTh5c^0>g%XA~Lr)YPrb$CbptwO$RG(A5;Pu;K?TOJPrlhGx`ud3{iS} zIK-;ayC#O&C}`(q-Ut8C$DOHP7_zdku#0nBx%c@|U&MQj+E8sOy><$jbi^}Sr{H%? zOjdCYJxD0XRt&_JijdVJD(ID6#AY{?K-UlcLq%)qcFfd#JU#jt=;XQ3cnLlVhj$bC z7GyOp4o;Wg_;)`Q>hgW}vx=X!?q@YWcXU7N__-xN+q@abY9y8~llQ*x{UyB_l+6Ka!xD!9(nR_IK_!pp-gfUqbJ~$mJN#IB=%}Hv`U>hWO z;{u8*n*#|foVY>M51QyB32qrY0_pE`JZsP-j`vPN0*!ODH|}9Dc_jI2Ze?MA7=~;s zkv_k=$gjb2s7eZ$uEZWS)kGIBUd zP~Cl7#DSX_WS+hnah0OFKnbd#MMo9w(oBUv2e%eGlzeNT->rpFa!9@Sm?E*z}w)NsMiy zt5%^#mIt-zSf%wN^hT!+j5$a?4P$x8a8tt8l6QLKyL6^hTHNtDYCn2JL7Y15@_6Y7 zy{|8B^Y#qdMX5r1oqF~2)W$)v^a8NS@d<7#GZWPeAso`(cEP2_LmYi?_kLhs+xe<+ zp7EU9svK4m+h^I_-DBTd7Q1jiHI)7yfAP}RdY4IXZCI?oF1Zv~HHA2Z>6Ufc(D9MG zactn$y;1EgL_t`C(YF>=iCYq0hSuB+qf!D3lLOn)A*L{b#2k%n>)@U|e{&>$Cgi$zXrCLIuQ7ZM5?({!CNBh?DKWO6TA)m1np#K=mcoCSc42mdbAbY zHdw|lM{lF`JPKsX!)*v~TPnD%j9qvDA7bfI{581!&DQgFx1KxO+x~F-^sb`yoKr67 zfsm}{el=0*HR6yMs=`paJpJ%DlQ?od)UbWEl)qoci|O{Ze<#~T^9v3whPNBnsBf(D)}0O{ zF9cOqMeCr z9MsbYhBjWSciI%Wq_9aZH8lzG=W+zlHWQG#;UmeNg1=HD+;47P*YP4>o4XH{e#Un1 z;IPYQ1>Kpp+AQ^mnqV$9$iFtOJlK@MNBbul{{u|;>*IfrQ~4qVF9a9xT{tX6Gcb)~ z!oeE;M0k5wjd3i2a8G?(u5XJ4vRPI^Y&7_N1XqK%-LPW8&lmANsAPmD{(FmzR1?WM z>ZRWkJGduOFxK-)BL8Lnr-V@PG{rsT+|zXT^s;-J<({5!PwYn3TWU}Dbut6@;&%5! z!*(yObuTnW_u?Y=;tG&kFSeA%@*9XufxnW^IiI`cn|`U)yss;+bdZh#Y1zg>O)YHio91WvF}@%V(cX_!bVA%afx*0(aQQDSKQ?(Pd6UHC za4f;`eA_0%PslI^lj!?o>>UyS$&V4neSWRK%qoM&qi+7p87u5k5b3Y)4Z>Fx{0Wgz ze6=utuCab9QALS+U5N`RQCP|T?Q`Ejk-Cb0%=%82IC6B{vuLGwc-X6FylMCv1_wkt z8snLx>&T$eNCWDh(lQ3bGaTQd$Ur_}S^c}-sf#>LnH8ky`G3>jrW+b34M^@z7qVdV z??Ufv5N`eZ4sCJ&{=R9x2WY-Op!s^5VxDj_>>TclTmRlvL~TUt*}r|W*Lc_7t|nM_ zvSsal%lSa0CH1!TMUGcjZ&e{2d_wFS)koBGSc-64O^Szh*eNg^aiAOza z$2ldBQEq!OU4XvbXf9;Rr>7!#erP~V=)G( z{SlT)gZ2k3U(8RCo75AL-M~F3V{z{w4UsDtZ2j~2NBu+Hx5T)3YEf-T@&`)4nyYYh z)xFxzzY(P%ZkE90I|!$#hstT8IlA{#kM}ULlI35UPqyrq3k6$Jm^5#M(3~+!8hCwi z|IvCLJd2Shx9)RJ(D@BHHq$VxGWmh#w=LZtFuOYWAyb|Awf>6ab!W$+=TJWPZj*S; z>cqN!Z?NTh&pWTvFK_(xHg66oXJ<}o^QLu}MZimSTA`zP9ABO}Y?6OECPH_pFKzR{9 zkDooMyrkcqyT|NbrVAW(nzIl2_dSco6556e)${wcX(Bp_3*W^ew4|0fNOJ*Y%Rc>~ zR3~RvNgSkudu_U(gK(MmVnbPz9&}j!uep34G@7D-sayIV*Gn@yr=98 zYUn?RqRQbj;`{6R?vaSr_ykBS?ubu{`> z`|CxfY_LYfy;A$CRSQAlX~R!>DP+#ChfVSiVNWQGqv?xxdHko+QdMGpM@91+#^6Te zt1!dO+ze~gmz!aRI^hhzOG!7wlEMu0{nP%HbyUlay5rQST-6UWW-jnVf0MkzIm_h1 z?1pNMVjHhA^JMC^Pe_oL++10WCr)Os(eE0+?%x19TQM>m8Y|A&W~^RK+W5-Bj0Ra^ zu|L=qdWqg-k938`yFyC$t=8E0J!U7KjP6->Jv&+$_r;PrzE32T?Swp<-SWsM*esP z>HqO*W)<0np$}z4!|{B?P``DI>S^d?9v-)R#T%P)T z>)82|cth`hZ8BrQmGRP*5S z?^*EYsZXJPTC(BNkx%8GhTeE(FYGOJ8C#jVQ+VT*1tY`f8{G3Fww3sPiF+O%eNVaP z7sBVj`GoTIgDJ8}dS%;%?FSw1`Ap$A{aMNl^&ieBsB_;NqVLu2xpbefe5HH-Nz|WQ zAk@DlYJWX?2G0#q`B&X@Q`Ek4W$}G@^xVyJfByB&{6yx5co9E&#hycs5wR66@-&tr z{voyki^0lqSV!jQN&fCQ*g$LaUTUW52PTPg>8RF4<{|Ob3EKw26Td;#a#^;zwGGNB zn^5v)G4qej*^C|bQUnQlDUph4%C)83w3Yy^gLtg%Z=!_ zz=v`VnY@U*q#NY9`sX1Z`aZpVoewS6;fCN3gxQ4hQyzZAV238OzIW2;xGgly*z^+u zhR%SbAJ*H{0*s=3~2RYV8%s(i{A0ytU>G?@r8%dnwsAaY(a&*Cy}gUlHbWZE+BV}>jK!td6U|0Ln>$oeo$|Jg^~Wb<6m>~02^ zY{jQ1Yd>){pgQjMzw^ZEBKdvfi@6m=0{h}TJOqqdGmcxNvJ|JTH)UJ7n}dNLDT-NH zcH9wOT#{8xhWURIyR5lp=aKKy><+fyM=#(&J(J?`T0D&X5`iY*;`JG@qg`C`noqc(v7xHCotZ3b=qwi_2$csZxt^Ugd z-Rt~pL1MSBb@W?xbTS>8Cq?VYy^X+!PJvH*_M`#+eXp+OFs!hEfeXHN=&Zfri$qr* zoPy;gl%r5E10ux!(L(4fM6;|S>zaqZ=WmG%#M!4~T}s~DSt6KcPlmeAL3#RL+R28(2>2%E{ewTE$8@ky!H=(f)jL!ioh5HOK7&j-vh%TGAWzG z|L4ON(y$t$=)zmXeup_U@E?3hva3yw5E#~$nc9UQd{)lh%Jpr`6*N*@PD6)yvb#Fd0M*eqo z(eK)#-;L34o%oe<&%|RxH;D};Bhk=t)%?GX|2InBn|vJCa3ODb*P0BEvMB$O0LA@U z6PbZ52)bXZpgi;4^h+cH8Ax8_iU7F_E?ri>DmfnEM4caqKcF;;?)@lD`B}MQER;I2 zJE9^Otz|grQ9`egJUsISv{{GS=vg)I4_{&}}$CIr7iPJfC%A89coX;Pz?!9$- z8u+2WSWp(U#m#x3=Im`f=DT5l5-eKD48^Ha4^@T`mAr<$N-B|A@0z4C#ewEiC_nBgn6VJ6} zzEa%GOYU)HyH`^~56Nqd?)xp0ha|;lDCwjY>}xu%_17u_X;&+M;&(h(hTYuSiKQn{ zCwE6^-YINBZLz5a04PY_%rnyN+kiTi-FG?KAUBCe^hN`h18_eZXOd}aeo64=A>=BP zqB{W&jQOE*BY|NYhnZEhUi3G?bReg7hh1(+ZYPG_$a*R?Yn{Ius{wfNf82h4J%JP} zodVlHk)3L}DI)U)vsxncAyU7>`$V#RjB^ns$~_Mm zk83mT(&kO)*wd)exct5A{GYh*$GM?u@{I86KYe|KD)ofXPWMSN$%wgJ`NC({Y(3wxrZq*XsnCjX?Ki+Mg!8_n6i1r1kg>< z;F=;myF2&S0=$^Z^(1ArD&5Dc%2$+sc3GeD=M>8Kw_k^(O|;;b2A}h97A_!Lc*s95 zCP;}m!Hgd9jBb3FK$CuI;ijp#OEVo}HE!1x*}HoETQK%W;scbg#JvZ^#G}ZO!=B_* zcFf+-4l41-nt(dF(ee%w@76O;#zx!8MiU)8P*kog0_fri{@bui2Is#n1u{EoFHPDE za8EmU77I}3--va|uWa(nHvI55O}+Yw+{0-z+7r5F?CS>gJ+++NHy2&O&xq$WmXi|A z(ZSSbxR*7mw(P)_xqTyfrnM2zQmkteO_QJ&`4$Fs9#|dgy545f&0!e0qpnWJ`j|Si ze9PoNU7!p0t24_>bzh0aZLsElKaOpL3gd4haR&w#Vn|tt5f zJpu74LjT+OJ+^t zR=QD+!?k&Tcls6Uc9QMM+pYtcZQhdGd5QwAKIT>2ySG*a1fl=fvl-yX8;y_FYnhHM zsDr5aExq};xv)ACKjO|;^}n3BZ08Ck z>{4#o;A7iDjSPp2l^D$Z2J722Z2#4j>PHcEv92$9uWL!3X$2&W7VzBDXq)zf*p^aV z={+SIT?jwMq_44|o?hZ;>*OC@uFd{wCf3BeuS1^!W~J}nNk69gWY!r_kz8)o2oMg{ z2w=3rL#+e96{Ccfaad1dC5@H@D{T&r-@u(d{TOfk~p^Oa~%<#C>>1irjI*6q>Wq`*ZFJM;wd`;pg5TAH5gM(sg{Z_H)0> z>uX=rHzWPb$@5Cs>2#A=*HV7lC5UNV?}!DN`(D08XM!IB6z4V3(kLNgt9NP5?W(J2 z#P$5(%;(L#k9$9YD!=IXo*m|d!|6;YO`lvvsN*;$-&NDeGwL`}a$9C9BEbYs{$P2V z!D5Z8_TvP{;3A?q3XLP@XkGjtLoZ`X6R>l1C!sbM}3X z`~ISTBHx1}`Py_0O5v2p2HE)@=SK~x6RzRAZEF%K+vY7ob32@Q$*~Wm+R@hFPc_#G z6cQ&CKNt7@QL8l&f!e{Io2WGrT434M+dG=Q7Rb)%8bYN`>#DgzZDic-hk)s`_Xm+X z?6h`Z&aRmj+dqaVLd{yJ)O67i@2{d@1uq@M8r$&%GU+uxLDik?A)?6^MvN@~^UM!`KRUPXzC}{n+0X zyX%foF>z*IfSDr5pD^N~82|tmOMS}yqAbKx>kNHQEWMJbwOmhe|ImMxG5VkQvtx9+ z4H53eLV9J()(t8lRb4Cn3SISI0ly5PjH?NYdRivwv%@Virgi8^s3i>5#d&s_RGmN9 zPD~n~}^A_o!F?W*$B6oZdJiU%e|L?aHuu*5zKyxXMb!;CL_@CG*$aVfM_83cNC_&D5 zRFK4Y4lE_kmf^PRJvCuU(wW6p+ znrY}<>ZBhd^TA;@3hBCPZWyJm8KkM@Qm9`{ z)H!?9eWE+is03VBu^|2}H!~Fmy`|>$Cj=cguOx0qlV!!i3j2YIKUc#iN(-1G4PbIe zFsl)^JJj%C=2tyA`0I+*y^F(q5fH#oq$2Rt|70bdVAv~n4jM}z(cwr|rYE^n)kEE| z-+?>yr__?`1ShU>;BO>J($Ese4to&}Y$rL;;n0k{K7|6897~bULf+Ki?zIHG4U|Be+jvT=%lA{0pQZ-xkyTqg+rE*-PRnA0>BH;)mFm zH^v)gR3+bSYnV};T#Fq=!p#vvP6q>LA&NLlu)4tJbUS*s;_bsFYdHG0&0iHIl&=Qd<=4QuaW>A4uNHQMewSxc?>Pv4)tVhx zDgCoGdsHP5`heqBVSKE?XIWxL!Kba^4B!)QIJ7#}^%9HbfVV9926JF0#rJZI>~>h% z6^+V27p6r3s#0}okcK2P$xRS3Zb^2Tp5PKg2E|M|J4LvWvZG#yg9ST6=Dv;}4xd9u z1AFfTGd-O_Eah=S@o!}JJ{lu(ZV%BLt-RSUj_#F;k+aHN4|E))?)M@!rPQ(UrHQGdlf1(5%3q67x zdh_SGx3L$g)-!G%!=ZKS8`Fk+Lff2Bmuf6WMz3#N9 zj?4TZ5G^UfrWk08b5^`j)PE++a&bFm*}ZI?{Rvq8yvcE;YluIvx>xc1@0nqOWDQZB zk(@L_C1`0Rsg2m*k=(PIhUMG8We#0&TmQ7{K(Sm@=Xve zk1fUW7^wT#A$k2Z3h-}+Z(IlGvpSH&57jki z$>S~VW{^#?CDYyW_H57W)1LV0^qKghRwr6pK;PAW#KZJ}pO$eQBl`mMTC9u@ zKbW^N>XcXy2VG2{3Uso}WU7cCM`&U=G6^++^#Ox=F&T(hih9aP7}??W<9FwQ^VE>Ly|1#2Tj-w1q zX3;R>LQUNN3?W%jFL5LzvwrNuSV$vY?M@b7^?S{flf@>zuJCgp11J^iT1T&K-V|s4 zI7s979uO?8+$;X_Ypk4-*=Q&~>oXL8qNMDUm1mDEpeb$vOw1Pk%eXkJk^Pb!oI8T^ zMLG|aK-?d1D80^5J>dL20`4pRyHI$CUkj^2MgL{@{D`5~q)0%p^yzNDYI*88@(E_? ze#^yDwm8I(uapcLf{FLQbvB9j{HDKHF`MjYMi}=l(b3&az>v@6N zSvq&1eKRG<{>f4_*Klv}X_U$wg8ol`nXw(Qp_}_{*9(v=4`BSYjlb;lLH+hmtm|j` z;%q>Xq~_?m23EobA}rEIHnKYvU5CVNQm|5UPx*KMR-ibTTxtp}b}z$*-tw<>AFCN? zRV(*6s7dZiFng8|;eS^f^8u|GW4Wn&nU(DCI!3P?-dSWk14mYh9z1F|HN=GM-5biGx#lE5dd*db7qIjFVg^#WT7?kinfWp76E{*&uAK;3KSf zy!)`Zh+53#TQG>4ZWEkOc{eeeQ3qdp(l^r`*cIkOX`$bu?Y-D`e6T`i`y4%DGaOnh zTjjQM@4X4|?{ysAukt=@;&1=G zzj@%`|KI+M;>`s;L;c5eTT#SadFQONRfg6xr<;@dD0^s`WxMiVd$_C<=n?!2L0I7* z`)>i;+0@tb9>!;MV{>^bxPHuDO=Qc{1Xkz`lUcIPmhzJ0Ms_6nBrv)H17;v^^|R7yv0lKYPj0O~2t!Y0ada{Di1| z?0SEnw=kH3?Y5Qls$L-nSPkZIk*!Q4Cq)zvF(zCuFC{rpgxQGsXd$16^q=XdY~{c@ z9h9V|SCvL_l#%?Si%Su`vK52D-^n946yWhk^uWnT31OH*@HUEX5qz>0rDKaQ{%lIy z#dwiCCyur)BZ}e?l>CJiVTC``P)NxbODjQ^?C&<>pHsMCd>>&?m)3Mz5pt8V#`B(+ zaM&$di(6bJZ`v}!g-8%{seZEzxLcg&I>GtiWiYyX)e3+*vR{k$qLWIHGzoEGwRCEslIuCA%mYRj<7 zzxq$jnxt9czair6m7P-D?xO#p-KoXx)`#t?{eJCwuH9k9?e6(Mv^zN8F5^_Y`Y%)o zz^nfH4)fIg@dA|7+MChZ|4_;a$YBl-`<;H2`m>k60q+jdDnymX`IY|ViVMk?%%6Vz zhW=#sBDg73LA(GS*Qvl9I1d)m_Vcb@v2P)<%m*WVuf`fK&BDQBu`OXFW# z@?XaPgMQ&`KfC7&Gnt_;u=*ZB$qweyAwq*>pi!mgC69ibNouj z6J*3d?%=>+c(o@!q()+-8yo$R7(^f_3IkO-+Frlfy{Lj-HEOKV)rQzR5vgjwM86f! z$x|&ii=+7v`2Lwr*kK!LX%r3J$)e4xEM1M+JNn*F7l(IoR}IOn3km)+?Qwc1lD#!U zGTo2kQNo7mlnG8ki9SxIBphUA_>qh?fqe$mf7zaqH3+3x3S;(p4xo3`8i zt^DS)y7Q^sqFV(Q@}nuUG_yRn3kj0iroPcy`c6yi?qN0dwH3^C6%KO0CMRD&g}&f2 zK;o_qR0mtTraF1qLeSKRaDAyb+2!ry*KtljP`v%rRryMZ!}+vlVpIO^ntTE+@gUu} zKJ_VUlv5XV+&CA%qG)bKKNn}7c9X0Bcj8upc66o#pb~_P@vZ>Y}r9gsa$EW z2QRaeN`cHp^ZD5iis^fitl3vh4KE;11INbBul7k`#2%kD%vW|zwvhf49AY3eOod&xk&od8+Bn?T`u}zx z>+Pe$%*3$oQ465|yuPWE0rlW7b|QG!SuqUc!7rtAXuTK->%};jz(b?MhXSrhO zc8c5a3t+dD4DKX!ZfA^lVmQc7Kr!hF9z|2o^&=WY?ibD{ldYH?wn!KL4~iNM21Wg& zL?Hj!Ny(ci>{nW;Fhtg_JhryD&svrpjdHw-1y>eEXimXm{B-mTb3@28Fh{uaV^9bb zCp$|KOTR6!5&taUyR&!)&og)`X4GZe!Er&-o!BpAmm*1)V%d>g2l7-ByA=A@o7^Gy z^P-+Zd~Np*5|U%Fp9^8z5WB3qetF_;%nu04@A+H&%hY?>O0~|t|Fp+{@)^ll{w$*J zA`zIgFR@>WH*~7cCj1C1L1WBex`cNitQ2a^tr-fH_UGJOW-{hH4Utmeh)GP70OQnZ z!Mk9_gA(szYmFNlccz5Db=Fj#XCxlZ3x@D2>{m<$0cS~^R`q)yiM#%s#ULo?Ml3B7 zE9zKYUUzn|g1xlAK4u_4oW}Bu$2>%lKek%kq!z|YVqIJF(>uSDzpNA+A+3pVMiRZ^ ze2oS$yI3fkwfp}WdzCiJm(0CrQKl_!;^@VoSl3OwZ}m=yTda4(a@->_N}g+wno+5U zU@6C^VZ3KnKWg_*<5>r>{A2A^EPXyj*#Im4BumLUzr|iB6TEuau2Wd&@9SRugjcgI z8SpxPXZPwb$r;;`lC828`<%uuug1O?8w`_mN}8t0q&omR)RS1`ipLscCU{$y0=xwc z-Eg^3KHM1vVZ#iKPHu?!dpjAGv!ixqnC`vJKXD5wpqP7mT=AjXXyu6PCbEb7Km4=s zMew2n@Gxm<1pZ0(DtS3D(BmZccs?^*e<^_GRg1lfxiqfXQRm#~UVkrqtrYM1X`RVK zP{SW5%WuA~ruLPNNc%e#&nwtXWwffYD?9z!Mf=&Y8uTu=RmUSdvDCIz|1SK9XTD^o zrMqp7x#HK>_MdvnJQnv3wMkdY(@g$Ng?^uj0C5!NlumOa^NZ>4*=7eVp4GOT&U^M3 zxuk8E{>VN4%*nT@2eg1CiSIl3avEz;Voyx58Wg!(tOG0JAHkmDWpXcq=ryL~)6(U% zy8F~SVjDWpt1inQs%CBNFpq-HSW^5q(LTiJN!)#%tlX~~Uw!@3d@T~_Me;|{wt7ZR z;ynEekCBbkCLV#B%4&R=*o|~cvCBJZ6d>c`Z0!_+~$2)+M z@}nuy^FvE2fr%n+!WBjtohSD=*Dm;NVMJkF0}(c@;;}BwGR`Z2Vyq**jG9s$7ugK>h)imiavrs(58v zQlEF51c=sw==rLUu%ri>MC_0rWIKqIIRY|dWZcy^(L zt~jwvSiB$e3Cl#YX%PF>pf9v)gFQ^8^4x9_o`VmA{kI7BV&~K;AD7D?Hjr8v$>E}} z_$%#e0u6gEmJ6;o!zf6ohVton6(2r22*CPU9c7o#eAb$sG`%$wpWdQN(4nWYQlSOR zL&$H>tZK{rtY%hQW`srTPRR|A?D9jJy?Uj$PhVw94)gMec}2D-xc?&E!X-N_wB(5L z!@Lp85DpTrHF@pjnI}?fzfAR(CMr{(R?L0;-b;6*WbB4VNuvt%+A=qH0&*FTtJ*Tt z%jF5!5{jcimHWRuUoaLv^Jj|W0SejUyn4T8Y4lORUlHqil`(iE-{r7E9L!B^92iSK z0j%4-Y1OSg8rL8XBbGvS<&!)2!ezJ81zJ#d7C$|rm0~6roRzQsXuFsY}3;c zHbR1?i$`c1%|^&jr$<9v5Dn4nho_2sDHVqCpEgfB#|N(&|1pf;V6>!~;l?w=YTCTB zs!+f&kUC6~Lh~@OP7K0@6POw_ z?;ZV*c85b{|G2xuZ2%GmyP2D$k>S}csrQ$_ac$oEs?4{-t3F6&xCUm0_yj5iw_7W= zqCXtT-5kRijv6tfq%uE87*>AMVj7x$^NJSXT+xCer~HBrgNxN`wqkF3jAEb-%0p}l z18af@Y*w;o3 z!hbDgbSE)vvdC3v-p|V`sWJ0h)kn2eyfIUG@)yEM_Dmk^u>b0LSIvGbigEV*VI zt(QwA78+_%Q}>R$^V8C^Wk`Gx|M$qn;VCEp;?7NfalgQj@P!efAJ5|cqxsS4>2zuY zPL@S?8Nx4EfgPE`p@0NBQ$fcX#{KiKis6IivlUxmT&AGtr_fKJRCL{4$!|A ze;OV2Wj>dVcAg+ z(y2QQHk7B`35=FB!dk|3Iz+U;k|Lw*9r)E`_gGxvv)&en8-^#lA;Ej2U-y%GF&=!wR@F>D_5?sy* zj}BZa)X3_eqxwa(hK^4MJV*Nd2@d)c`-}9m1!{8{CP_(L%6brO{ZEHSP*~$%hTKC( zPL=Ar=N|>%OezfF7fD5qjsWXlhV7VE+GYY25(-3xJAL)ZYzX@mb#Px%2Q18A1h0rL zIee0h=?)MdJo?R6;1QcJahw4`!SrCk{@k66%;~>Nv-aNbtfA~wN+%URPV6%SY^2aS zf4W-YUeFQR0HmK`Ae56>>sZip8Zki2A=H|ZLKYNdh|-SwHCPk67`~I z7pw8XuJOB6oS5nBBRt~Mdgv+rz7T#o&&EUVlDx7NKj!twr{tOrwzW}oGPQ{95ql4L zctMj5oiOgC*XP9Iw`Lx1hmWSl{9#LNG2=%d&#!p$|NH=5dSfo)w|2(kXB&7D4e^HB z#E|<~{9Z*0!zV_**w!$mJa*agPhO<_(W?7Ca<Je}Q1{vpMthSGnmDN5+L< zV`^P564WZf3++~RDzNzG{!(Kui2cv=J(KVLrO0wD%W?b;=lem@-b}VP%l!{; z&(C+0{IH-O|E2#tK7O{vx8dWbeDQU@k^Z0IcZiR(UH>oIo8|r)>OYTqdHz~-9@5b> z;o|}TUpQUiZ0Cu|c1-7~!~|JAF?Js6u4fAo&!=;BBt2-vtmXFW z1}_Fa#7jqNe8>5K#Aa7Q!57=gP8s&(0Ax((EGJ3NF(~5T@Fe z@r<1x+71e;h`-*%u99AUP5_;g^O8@YdxbucX#E*UK1+g)s2Kg6{*X8zbh^WKd$G-$ zywP<7UXI&Dki{6e*Fw*WL@j&9O#(zwp3=U}vHmnME_BM91kdx{uF2EY#Ie?-6YjI4 zUilrbhFhz45;J98IvNnRcsIq`yaoN>DI3RO7@?z5iz&r@8^zFT^^O5}Psv(> zYkAhgo?d zYpKC2?GlS(a)@3V?9;khLZx9MnBQ1@TgSBPUZ@bhHk?SmBkeu)P<TBca<@5fqr_ z8Ck5$1j*ExLupE*i)S87Ol2%>>ii@-mS48j&@d4Xj}E~PP|~nB@Onb z*CJNG=pW>We7V}V;g1Y8^-y^vQ3-_kdHlf5ox#?Sucx zS?FB9xB5*-x} z;?-^u*s#Kwckhwt$wDvh)00(Ev|7y&;oAPd!+gbs?*;?n`OoC4KW-Df0&3^v;_x2&-I;|+~RPt^A{haUbyWiU1aP`-${tEN^ zvW$0&T~~u#SHIJ2|Lgq358H7;VLf`xiP%p!>)6LTwLP1avR&=aMw}30t|I4Pfq%bz z3ZS(0F9!976+%4d;s@WtMEly}ayO!C%AiwrN~EmEx~{Qe70aFxzb#w7S_m$;;?SKV zjc+J2Id_X2t6b~1niC`;dW)3ee|B~mIqF=yVQ>EBSX|ommHqdd=XbKhA7uMvzhgot zB!mQ`Vh!Ti4T*b?j!@Zn|OP_`5e$ddfTy2bB!7cCcEf9lmB+# zNnExH)?C{=+}BMfDEWAaGDm)BF2Bb)1emBc$Cb`iwq{l~*`a_qk$SR?zU})mTQ|Im zH7q*3@|uDBEC07}XgtJQs*gekEWTFq`X{xZ72jnha*t$3-LqqULBm6<8oy?{L9~q7 z#uk6`{9;}E0&{0SD4xGvG-&JE%DpYwiY@3t)>D@py#t9pOxo5&XgX+966{AiMIgmL zOuSY8Y=EWNJPo$aVknai8Kc^~y(cj`%ji=9>*fCYjR7-O%$1zbAK$z<8mPmPyj=_ZuCqf5X6U^m^h>v z@8%GTMG>3hNZcp>k&5y{ssUsD4QCP-*{9*;A2=$bAONj@al8QQYo?(2J1BI4XfJGy zdnSs)S#p1jiga&ZC_>iqLc~i`&!z%qt`q$deXkTs=o}QLXJ$T6w6d77E}3-AWhT5b zn69w#+;;{4lq3k&8S^Eh@aJJ&VCU*BXZKe~jsE`_dlUF5i{$@59Fc&;K?TJ-Dyz6& z$!e6WqKPCrg9&EE18)>XR8-VNaS;qVGs5h%qpZs6?&^x`>bl;yAOaDEC|(HOu7W4e zV+6cF#3TRrr}}wjCXxMp|Gr+5dHSgCuCA`GuBxs+C+|mJ{P0rI(SU!7oU)Z$Q^Tny zr3YGQo9YU`neNe*pNi;;DIEW_9mT?+-tF7v@e7fhDF|VfJI)7tTo&mw$bVtmFu$Us zU5cR(K|@r&{gvn(oGtx|bf?o?p{w~JJtT+TtWGp-#wvi{=)mu{WyCy+TgcE#DLm60 zAJ6W4&@R1ALRhEgHdX#fln6BZCHn>BgFJJ>t^CRkxL66i!~Qw@$kvi)Oz%L(315&h z^>*RlIV4l*Ep+kZ3<<2+0Rw}Mj?;o;uhf1n_#o=Xjxzel8$3hX`Q>khbjR;i{09E? znLztSZjIj1mz302{DR8!pMR)Y@Uvzj;I3$N^M8fody$oG<-H#s~cLuXLc6>30^*2SpY}ML=)x*U3gK zZocg(s?BZpZa~Pq^VC5=vImi&?xVJcx_|3>lN7jrNVrQ5y-46F97~-;t*7|NRcTU{ zUam@|Rh$?4Y<;A(mU))ILCtc;XuyWJzr*dRvhmiG?K`?pU8Z|vhKElZ8JOcup|*{j*R$&9e~+YxvAxk zJ{PgPs+}vWZeN8YC*Q};(UzVC9Q`M|+2_b@&Q9BOL|9N%&8@q+vs9+}J~r7jJ)=up z#g)y*DUHsQeu)RWDHGOfpUV30B&@jc&iMnOP#ABQc+)$rc!90k8#?Y)4f~Lqj%{nW z1xL(_*mMmvbKs!*F`ree=Fl?}0EuTl=`nT&e6^LbAn_{FsG`8P!@ZtmC|=8Sa^KqW zkpVmB*{S}2yYZYClS_emFZ6C~JL)joqJ_D=p3bFO3bV9it&pfGph zDZ?w--c8|DuLvNtz)Uz`ABZ)k1Zry z=~=%zmf3x>gcs9r7~w>+e&@1yue*up>F91JvS1!!8rbsq^)r+gKV%4UqgT9J`1?Xt z*K1C6B#frrbfp=w6P{rTsoX{6&Q|`=(z~c@yUo*S_a`!-oLsvk+9ZBu=|Cn5tXoGQ zp~(LW_5&H5tHsA3cXgKq`>@#JUSEPJF6PCE)g`r6Aar7%n&i*S$)nnfI*TG!U%c~R zfJTBc2OduUp`)b5gGyw6G7f$*?MRy1PU1p%rA5!yTIShd=8q7)v-9(SI+-lMn}4f% z_+|X;?+iOZ;aDw{{F8y`T!wn@3LTAfcp0G@xQv==t41GsRpe*?vs-iZEKU(kQms0w zb`&LLSg>lh0GIV9X~v}clMT#z|DR@4+-Y<15X=f&$Gsjv?~Ia;m7Twzo#9$~larhi zC}XMfz_R*iK1eenJ#460yI)5>jpV;-Uhy+@@m%k+nDXmvo1vYiy(ocp<^*+HU9p#b z-2AG2r%I{lkO*<;fP%ZLxWNB-o)~hqT_qv=c(Pq_|08lB%e{dOPy&MldhZ9zBl&h& z;7rQ0?vXd2w4yr|xuUfHrP#2Om)aIm3v&#rx+g?3-cIi<2{9JDKtd>g5tmvT7-!ct z^Sgh^6m`H^Z}2Iz2~Y^Os|7~eXz8}O9#py>Ov!=1$Us*YlA+Nc*t=b*j5OzjzTJvr zQ!ITWspd+7F=c&I4CfQOYnswk28?;xeTTRADr%2~_YcmK-}hF{XYp8TKdEov>(?V% za3DZgEDtXLU)^}F=c;8K?|k~Xx{0%o z91z#|v;SrztJO*~SK<%+0k{Nc?9islO~i9#jX%ScyAK|+)91ZJHU4Cm^w&UvkVR+s zlnQP?e~jfc-5dO#oC0}XI(YgQjIj!?JVQt!LIp!Ct%ZSEItaW_$?hsrD6gwNXbkk; zv(Bx!Ji?2sHP6kz)zofg)ZOF3f$IMCMhy;MYz{OVz|!>Jg4yobg8MoLq(W zq9%6ZbI9{9L=pE|YKN@kQbQH6`x)$?{c^apI9(Cnq374qdhZ|GV{Dds(5jt90(S@0XP21^LY63kFH+=hM2Y0mfXfkuWQR=)3&TLLaq8lm`Md$wg zRUm zNj6*j_2#HbdHFJeU#EEc1A6|xchUTvRZNj)3G`CK14;hUQ`E!B)nYb`eOFFCHB)~K za14&6j(`+({$Jp@rD**_Z68qH(IV&wzKE}P%Wv`2=_j`3)iK|#&G?lx4~7_tLrP&| zH0iAb(Ou0^+*CD8l*0RTc+m#%ja9GKii@Q_*|;!X8(gRK)aFxx$(4I z+3mtux)u#m%az^7$I`#GUp*LKIlmI##A?mAy~MIOKV`wEoE02j3+L_ZzZlJ>%vp20 zg8piM`?qF-nLEL(3+tu4TqlJDZw8wQq-5#H=CQbG$P9bBGmAEF)6NAF=mK6b{g#LT z@LzCx2q$5C&HelxG^t>OJH;?%PRtDh8!}(A*oj%N<}`NjFs#D?b~h~a4+yV|==_gk zV*3(m=wY??7v=BQ<-Eaek~?XHTaIibcHx(h^z4h6x*g z0zbLo7KdpoW*#p1xX66ctH|FM!?9REB?Y*1uxhMIP2{$MkgEj_=~@nrv6n{w=({yv z^pN?{-=E%T7y~p?P6BQI{lB-lx;AMP!>wR#S_c-uW4cX+Y(+P4se<4>F5S|gf;#vdCrnjiI<51-niI)5#{=|D&vHsU{Ws^MAv;Z+^mzn*R0 zR`PSUbTbV!3eA1x=|+}e5lzus*MXN8jea`G8;BZE|B193&&Vw+mO9#guQLiev(9Y+ zFW~(X9hn9w-MH&d@tq&;i%BKh!xidOfW z&P@)I|DdMa+iAnRg1+2meQCclY**U-4ctMn_)sRFNQ&7Q%+`gRQq) z#>&HZ%830nm=XZG!NI$rY`fK<@nM$R|CrK&U8b}e`L1+opHB0+8@r5~Pjvj;s@H5j z(78wltk4yi5y@+v=JiBZ+FRXe%q&OkAt_IX&4CP%i|q&k z;YHCc=)a z1~g*WVpE!6lyV#21+n`E`iCJc$1_}`@@^8dldN?BWg5H%Ee0BnawFm`x~G=IO-x4a zc<>xK7j*cKuynQUeMm`?x4vdGOa8k{PA$>lAzOOFg(5=26e4*yjpoi7ML#ma)KEaQw9YSbqLKCIA39obX0mhE z30A^FHxds(+i}p7BqtwWcY2qza(2Lb1BJN{{9hxbyA;{6|i3_}8sM!w8t2 zegwFaf1f7C)?XOaPU1nFaE$}~qY<=Saps+Io-#)m3^xAc#vy&C--GoSo2FAkgetH9 zAlcy8_=lpLiUil;HUXAX$%K!%aJM<@M3m`5b}ZFbQ=<9tCN}y5;5LztZ%e?? zk-t606=rTUzbvV;TJj#Z2U#fW3LGTQ863}W@~Yw)?Uc;dJU-kA&^OFT+N4m3ANl2Y z`DpT6NmO84DOs!8kC7+Se_*cewsa;sTiSe>h{z6c+mNm2Kp$sLsLgNvI0OfA%9WOS1n{qpMTp3Wm>`rMFoCFbO>FiiaE?R zUqp+)SBu=M?iU=cfn-Y)G!>Dt-&YM?_k%jp*X}SP3yZ?J_hwzkK5;xH?y#=*MPS=N z){|t32(_qK2+ym;(ZGOOH08-9bb@V6>-Fh+4Vx9t#vfcH!Y2Yza2O+FR$^20RIs_# zAIWqp5M~_*wc_cI&~wdr`V&Jb72o4W0f&`6M`n#Tog12qoC~Fh+M|gvEz1RTOG^K_ zMSE~P6nd;_nG6xl>v*T5gTBD$z7vt|BBE%I6|@jX*UcNthn8Kj1^0@dy>zYOMY>oA z>nJ#bC^dB`!xs@XwW$xK)>3NGrNkF?Vb6K4c(1ShCy&;mal56|QjG2CheZda_iKpR z%G=HpIc^NEC+c1<8QWX29o zWRBDrVyUsDHe{|SZ^%p;!a6+{i+CuwpW=c}cq1YXt!u}Zjp9BE%PwARV#YYboZcu} z>)$6uyc${#NF+g+@`!452V{N?SMsm=qoeZ2REMwtc6-=#2)vVIa4v{T`OJ1QS!jHH zIcPi>KFC?@&D?hX03(#fqZw@z+K%R`&YF(vgaFKkv6P_F=%86Oap7p?Ql@0b7c%Y!fgK!V`BzS*o+9@1@mzi=htu&n;x@c zj(4DKsH^<;tMZefcN9VQhDn{#y;L}3LtMy)xCwMu+4MSe4;>ex`)ojM0^Ox<>q^Tn zfoKq+QZ|-K8;s7VK5rSQeu<5<0M$(wJH^r)LZ4GCEz!>c#Zps!qG}CyRK-|?>8}mb zE^=s4Bwi~#V?onaVFy+JAU4$-jue*Zfwqlc1eJbKu2tnOC@j~0BR=aUfZ#H&r2+x+ z@K^{u?zAJ}c~+aQzb~hFqd+JzXl66vVtOdR{6Fe1U`}n*_E*DR1L;bm^8w5clD-_? z`xP^{GwOw)QhU^<^M8hI268jcVk^oM+3?rvaevqQU8GJW@<%CO4!P}!+}UMna% znWDjUxvawqvd$u_eKx#YvBsS4cil*Hr zmH+h8I|vNS$|@hI%tw z`Q{qM7>SH?-2%VFOY5*rKDTWoY-*&zd@`G^EbI^Z(oiuK(kpnpn^FapGJNLf+k4#g zr_KLpyh^S0hg*YKAgDP-(uh+6KMR+Q`oP%*+HAkWX;Z4ii{0H~f>^!hpM*3OTyBiS z&exe&<Zoo7nbPZ62sXSx-o7Y@ z?*`4hE5q1EP=y_A&wSA?ZOq7DLGR?_oU^x?TqNo=!uB2<$RG;oL1TlC+PR2Rgyv!! z*PZ*EyG;b@moP6Cl(U%m% zk!9`EBmP=wZLxh=8nLU@Upp9JE3%Gbc#&X-Z93V>TNZz*DdUQo1N^n)3J}R?wolme z)H|L3BBv``3Vs_KGMnH52-uR$Z$|xts5FkbY<`e+H{?#q@~rkF$F<)U@`1>2gYZBS zTY}Rh;IHy08>FTyLrAATBv%L`Fqr}e^PPkw?{pwz3Q;`fNUTqzDU-bNC~!!#!@_R#&nW`R1k$!V}&!BOt}J$tn!GQ6Z6S#?@z<2R8Z}baYJ46Ud@bCpYzJ zOG}vrG*Hed^&J{+`IS>zy=;P*#Y}gcK9>3u`&w@xm$1~MU4Kkm0KL?=K9Z0FP@To7S8uY4}=)qmf|5s z`wF;M{KLP0fzh3N38Ue=IuSk%2?Nq68Y1bh=C?EU0JivFP^6Ua1QG}3fXUP${^!ux z1%>_-=nb4!hnsiV%8C}THoiI9`;=*X-kWLs) z?}l_y?*i6GXauXj2CII$&Tu)%aJiBFKU&}Prt%&66|M4X!rsXHHpJ)7_lNjwqe_U+ zr}+sA?!D_5_&g|2p?D022vzKc?0|z#c7&O^dz1LQODjCWr_k_!;Bzbn305hkMq^2h zJ<-Zzj=}D(V_R*aV>*Q8myYgI+3QI(PG>l=)M%|VnX@|l%MR*1 zxpidya&k+*V{-2vRxr6c2}HKC+evPbjKAEG*nQzhft5>|v~P zN1LZpE?nnFj&eizPqQ1s-T5J0b5A&g{V5*OYjHYa0KL+Dt8je18n zgjv*!hENZ+Xb4{&*m(%ges4oi(Sqf5frhY0;Sl~#IcDH)ScsO@=a`2yw-Q*{VzL8n zv<%w;K8U8`TqFLm(_aq)hO!?5l5)WI6%4cC`8fj5D((4Se4epeTQKEJx4e+LM}FWB87 z-!hKB6qdWm&BvgymnU;qMf0&T-^+ueUatHuHw|y_bH4OI>g6`pOSca{O~$6CVe-zb zh?lWhgiAV_h9iufvj6?2GdVQ@=a=1oeI4C@>+phM)>BRky3rx|@0VKl)5~pCrJsD0 z-!uK&Ts^mAKH`Rb5bR8oGse|Ry_p|&^}oZ(3D)O^{Q*DcZ%&!ubhjxd-zl8_p@ltr zgtAQ0?FC(6+upvg$aSvBl;hNi+|K^pVFlwG?~3fushu|pOAL1<{>;o40C}Xa$evcD za@V15u$N!r=J-Pfg1pB`{=KF?GW;Qqa99g>x9Yp1@vqB|pP%!K!)f2;f;@39B16-T zLNQxC(I6Njyzyu4o*n)ToKusNCbIg5O^Bs_1cjv5XOj|@q=ZD}KVWDDByv6laS@n+ zu-QVM9RS7w9A)d_hbrrW2_nxF5S;TuRp)U(HM9VE`%@9(xcX2x?kN-8xVz`K@Kf## z2icRNA&dF`TL#%P9OQ4$&ku4X8Jim9gFm@JK7b`68f4StUk>opat4^8Q0Dt^@At6@p*MtBM|5u0`pZ8Wm+`P}v`Ro8TsXOB=92DG! zB_a_%k?Dz|{NFkhp|&3<9pXU$kz*ypD9n0r|gI@zxr~Jt|lHbt~=$9zlk*ucMwnobtJ0Y)&T?Aa(?}TTYOb=+EEoPInzu-oWFvChXu4%i9s6L({kmPM5`rvZ5Q>jMGN0}b^ zGZC6ZZ^Pw?6e0jKv_Et|p2)L3PIDA)X~8Y-46@n|>T7);8x?hHG?#iWtSI=ej%wkn zh+83^YhM80v9-oZG*#Tg^Otf2%3(eZ%nCHxKILw5letRai9>C{Rf3-_ zZChG615*pZtzT_3Fg(;H)L9qV9N7B98QAR~;S9V;(QpP@Rm&@W@TP(pa8ltNVym0b zC0M+3)>q3qoB}i>n^q_k|GD4*+{aLvJ6BrZ^lA>8(7n?S5{O>fnb?-;642?78d0#I zX~Cy{eKx&8V6p?Uap-d$%KhX#rLYBTr@m&=Un)Q116;W2(+z6O{;KSc~IG#Y5QXrC6A%JU>!xm{A29kYTO(OPZ?3EG!3C^b#%i!qog&Dif;^u)S<^WrB(H}5w z_F}0S!d-UekM^f>3W_KYbQx9wlz^fwj&DzLg`O{AnXmuw6>&vlDk$lI>+kYw0Zpq^ zkXDUsY^ z^1lafiYxbU{dxqwdwyFQUs1qgKlF3mGQ;tMxXAe@11xyiar7}H=rFm>*+$su8;s9Z z9x=uxcVOJ1OKGuRH%Dpir9~U6U*y_y$I~-hRoSKm@i|vD^*yu_E~?va4jJ%px)n0u z!}-ZF+3)&aFkoG^+Y|$?cbf6lU;aP&?;F<^@L$xz%y*9e@-yPRkxtyd(+q2M6M_d; z<#w-K9VJD(*H+~Pn4Ly3$mXCWg}DC`p&_@wons{`55cKi_;~Cr$2tm*>wmr}#K&(b z8scMr)$)pWX8XvQ3*7PJQsZ7`EoR~z>W|U`cfE$4{M8)Pw_LM z4MYRa3}JL%pe2iEW^1%MHH2c)Uf&mv7`5)!)c^ly7pZ9!X*K%qex$)V>qyN>HJi4N zjP9#x?eOn6t9K`D{`gO!AhP~YX3R1tU*E$n9m>}Uia*|Nk5D$1EbbXt?+NC(F5gXLqGalBP^jhwYPJu{qzKdx1kt+2n?jruO899?dUt zSa0-4qTEN+SkV5~FO__~0PTOxfht=4?H<#+9S7+=V_sg69mKVuvX$H8ek|s26E-37 z*>4Qvm3?bma!Z(egq@5l7rZN(X_bFon7p@3-rIa{SNX?=$%?%R?CxRmAz|`Q4)(Ga z9gsm`^8GIP!BEjw8YY|LT(#@(MgR@=fotQ24WJQ=Pzj>NGD{S)lF!_(2 zlOGO~FLTK&7C9h)3zJWE$;Xzt!6(CHyV;$sye{nE_%L}tSGr<}19E(ryh!vw+`e!Z zI?R%rC(34gLQQhP3~C|Y>|23lV9Lp$`!`1_x0p57AD#1z?Aqlk4eE zGf+LrX7fuTzy4#0ytEMNei9<^<(!1eKs@u4h4Sp}u48`Fw3&Gz%<%s{N@~I}iCyeSpAC`gHf_a}Sx`IH7ZYOYQ2#9#~aCr6v+ z%3|lo8TkzW{&v8dkM){UDmv^v?cj7|odRn={-^(Ef7@|h3i~_p|L*T()EXMY|JC0` z2mZ3ZRln@-1AA_wzwUjH=pvImx#Y%$&qGI34%@o_GA=)*`FM>c_qDFlUb(_wiz+`- ze`*!V<^4#Qf3GCck~d(+be&QvUtpr0XEiSv6kni3i(k>X2}RAT<^AQ*f5W_f{1Lx$ zd}0lUHu+#ndnth!_0}4{8{)Pgp{c~Ec(%5W2U%zq{I@qamE$?j_NKiwj}F#kgx zuGIHf>d#D0{*_^9Au&Ji-anSidR;8hTV&imjOLlyY2T$_NfrEbg)d+ZRy#nn7f=L{-%915auIg5RJgFL+yrS^~r1Q0xR%x%9BBue*h;?Ku7aSb%4A{BhWE8;P)0Vq}{(8n>cA%qp#eNZ$&{tIAye=h*M_Gcq zla+F2>v_&8R@lx9_!~HS zEZvXp2S=OOgU7dkv15shfwtTG$bZC_1X8YckfknhT3?wYxI3NbdO3uWT)QYzEGu6A z$yU}PhSJ%sgVR-9E3BUQudeV9R=D_22Eo*jTjuFaJtz-ug)-bzU2le$)cO?=UocgK z6XNNO7Mtt49MFR!pdCy(i#0fbqKN*X&z!+1<(R(KY+e zx$GWf_w1UT&Sm!`ySQuimAUL%#1ML!J}>qJ zrkGDtFSyWbE#L1OOWyz@V^74pE$)6s=9Q_R8Islz+6^R4BrEyhis{1{f4qCw++y`X zxePzvqigQBXh$rU(Z_ps&HXsaW$^LhuDQ#iT*e;XtZS}RuLhZ+$9r|neJIN9MQ%yg z+zXj@>VlZw@$99&rw=bdT!^LR7}U1ee#akoWW}-t3wF^a^l96XJ&xRW2){n_%Lmww z+I(Sr%<_1*kJ`GcB$A*NZ9BrsalNW{SnSB;58ay&k3G>7s)BZs{+Wkvcg6m!K;PRO zRJX>*^qd;+_I$_6IW@F9`(*xU**LCgXu%Gw_u~+waLs;}ES}+GRE4FRn^zQ+4&|e; zLyKz%bw2~aqFBA0UOTAA^!h#Xw`gnmp)<8GMQdJbU3(+kb$8(vN0xcVxVyV0B$CvR9yTz_K-m0DzOV!(tb7HAU1{Gkx zQEdYz99ulHIYQ^`;Rfu?SgKmUHs>G1D+{kf95GwE@{gjIJYEeQt7#xM?Nw{$>{#j` ze#{vua6(GU#>-+UlbfFggy^DW{=;>6K+n~BKEzCJdx%PRXK5b3e z=jr;ig=C+{=+hRzmS9k=PlGIM1r_>KM{R)yyXjMO=svgBr!{1Cd-7@Wda|{fSbVp+ zjI}7(T2f20wY!qK&jpV~L6J-9p`;#jnV_OzwIq~eYfmNh)M76R-gQaEN-CaPtfV%V zw3(7Nn+w-33LYcL%_IA+Yv zY)_Z=3NGejj)vt>JQy)>&N2G5m9w2b4X4A@hd#Mnp)UAAbq&QrUGRlI4aGLK@9Wd% zQY$f#_pn2;k?{h3+7h)-jl=P#IE7m_!kca-DHx}81EO>r#~g9*+18)m=W?~WgA4R& zFzxeHecBwWk3mE3(^@<%S6H7d8(~I!lN786&#px)wr#GKTUIRXo+|dLiW#DefWFkH zu^7YKhx*L1+F)7kQ&beld)ReMBeR)xD_2YV=Z0wA#@RdI-`E&6VhhYWyCcSwP_MI_3ABlHcDg{$D^7K(< zK;~~R{@8bk`#!2)_;;ZGM)4)-OqDvAYu_v0tJ60J|32}|e0kVVXEvK*M`51|f2+M3 zG@IYcOYogx}U|1YanVSZ%=tBnw|$P?{Acjj|*+AK`saM#W`NyYg2OA9G^4chrGAe>bFR z;Z^%^6dpcbtDxp-b6i0`b+I&cp)Uxrm4^+9j~Q8Bn;CN;??GgS$tNqb&s*`#1%qod z7sfSCr-{_O)Mf`2CB}Rkf9A6u?T`8Mahi&I1N|pZe{(*%Z1?DBy4)tB{n;5K{Us>N z!0HZQV8LLzp_c6;rqf@vRhN;d<8N$BZt;RpnnBOi%7}N#VaPvQXjf(dwcC7h74~)0 zR%gEP&rnk+cSa|FD87Q|z61W4+`I_#`&&qU&@+)#$_n4%;k&4PO+LOB-~HM@==43X z{gqDNCGGRw=;ml%Jm8qaSiDI?3O?rg6wZBnp6sUS7pBAkTSRNhIkaLm>pfe0A;i(MjaV0`0hTpw z@6;c9?XIn3nX4F8B1}hBaP>>p9O~nhTMDNu{0-Z=zcYU0{+8gVTkk!3H|-|1f{Qpr>3={BJ<_i13ZWBhfFqXQve^gV*m8RrBJE zPw$&?mS5pl;!7#BVj^Sd{s0V-V`CRRKQ=bunU!N}VsEA!DV}2&HK#-5EufRNlvb$R z`Sj-M%*&at_gYxBBzEmz$jKg8(yhkJs$SJ=lWS(5OHUn zF|SLnZ{DhX(%2dNXu7}(+@uz~%gUr0?t>Mphl>-=-FG#1TqP5Rjx9Y>#WF6EkHuiw z_%e2}b)_0qyv=Z_dCGIan$vmdE=P~nltm!y+|-TK37ZP!y2e)WSLxt3mvtM0Ih!@6 z#1!kcu|6};P1a0J-7lMhZxwVU(6OyxKRok%*htlpgb6BR4ph4~yaZhsUU+xT2%0~y zxaPvB{3(>zi!Xv7xw+q=!78vi0aN_Lx;ZSRZlTEtnF<))v+1U|H*bawQd&a)?48gN zZeujiLMk8zyl|fOyvBavBNZtnYoeO=4iU5TfDpQz*{N`IR6!xZ!u1gry_2GWVwU9O z0=kE;;npGtB7KI29*tp*4pW|Z>hFgH`;(KW=Ny|(e$mf6A{XoHAtRRaS-)?H)um?H zcQ1@{B3dK7_1yDz1lt06ivgF`NdGFm?lo5Y0%&b@(*TGUHv^8*6iaUC8B58+z_z|K z{j1iT50K?^f~r)_xEY*KpMSY_-PqnY(Uuw{BG7;0UN2!m2O$EGHbAJJ%ihP;9ius>uCg*Ve5=wv5Fua?Vr3OHa48M^jpxa z(5t{f%O%U$`(&Ue^Nc@6!hdE_@Ql?hD#UVdv90YEdPo=R`UORK_-v#7;v$Ol?X;p!S8$~5hISfEp9`gAI9{doa+ z!ez%GRfJ#Q7NId+$6-igTAlBIWEOW~xtVt!WLU(~A}ZBS33-dX5lb)DNRz)Og7?*N z?-C*~U0Lni{WCB6zh@hfudkc_rYYErC_o@ET}q%~-ebfp5LyLtsku7OAyR-nUI4l;h8PKJ*oF;gX)}#n$m&`_gE>4Yo69c8KBe zq`@6|d_weJ;S<(AKSvKPz73WkTM@?@@U`_sxWS+0bYR;%<+=SQ;%DBGFr6)8scVHS zpNj&`EJo~4_=$_Z<-=&|)Fe}Gt8I#nVp#*1Ppg~toS zn}=P|eO(J8ZSx;C-o_YWsozsCIEsIA^J8N?7+w-ilwOb%F~`yigay%XEd3Tg>!D*J z^udBSPw-vSau|;yystvuX`@NjdkB&s3d7@wzq-c^-1`VyCaQjJIu$ba`*SiwaB2+0 zqwU zf0PRDb-9rBy8WFIfi)Ac+d1%q=&$W4S1;$e_5Q7#j0$S${8D*7_UCHgjRC`Ucyo;d2sh58@Nwasa}=e24HT-s@|gD(6*0`4{3g z!UAjhE&F{_9S<8ew;Ib{>(7Kn+UnxkyC~nhRLmnnsKm#7d>OI$wSFqprAu#zhOYP=x3P1$`OK#QOs<*Si<_^j#ZKZr6aPq~jn;%d5F=`axeQHU7UWxMNw z+HUq}^7V?<;r`~}xjK1RtJLO$)@G;qbnUBu3x8PNQFTGd)r2}Wl5YNEzQyKi^9Xcu zitA$Rx)ustUel*nXnDC2cDmF7J(89-uj74Le6BCp>IN`*D{1dwE6Dxil zdu#h_;KMtKMzpqK{b`Wn^-ww&R89^4f?VzPhy3Zt-_;niDVg3xng*!{#BXl7sz=AZ zSnjixi7}^ttB?TR$xBigL=|#4(2J@^b)fV}0YSGcn1Y_DNKc*Fo=>jDDhC`Ys*k=5| znc9rMlWJ~t({T*qRub5f*1AE66G_cza#m9P)Vj^^Ao9d&|2G}WL5jV?8E$`f3n^p$ zclKkg-4fDIv`C}#x%qN7w#qB@Gyk@d-1eB>7Xq`nT|uAsTiA=2G1i-tqB;>gPGi=O z2#z+Zawt5|HOT^$@*W>sqf!L11HVph%j)lqt7vj7YyqjF~JN-z` zd5B>$9mDkH%^7UDEawCGQSaR`i%ea#B>pV_$OFQgT25929w?1Z)X(l<`rAV@@?T(UC9RHod^lVIt3m%HC};O?oiM0N9(v)mTP*b+Ka(4J z$I`mb9lD|Lsyvf?GSL$4$L~T_RRYyja%1TgHFN&4J7r^cymlE+CyXA54oY(_NEnebS7B9bPQ33Jk_h+~7s8d%j&>AiuUH3(gb;#d7mR zWl;>$(t5oQ_FOA3hHK4gT7mXo7Pi~>h0ZWY?DQIs=Rc-Q<(g1?xm(w42C%US0&u1J-!%=4zCqMfk`E&2)$LqcG<LP(D>t&ZLJOv#d1TG0_Cz-m`oPv_uRu~ZL{QF3lb?dz1B3$zwXead&jyKm4e zOSdRt_1@%0UKB=0U)Si_JzMX1D7Tpe;(j(blF!tUgo_Yl+}AHhX%|wuyoNH98=?5V z$iwv+foT|*0RRL%OpAG#on_p)PbU;}pwKxURQEbftW_2Ss0n^mK#eGy~q4 z&PZ1N1Kgp@nfHItr#WU3Fj(|?%lyvtc_>gsC*INH6THZwxn*W0K`%tM56-Zeb8_$; zsur~0y-WMS;gp?W%DQdAeLkMtJgrg}f)bO%H_Tv3`{p@%$~>!0b3^GBJIY^FW|B!b z^^FT<=h6+!C6->IdqTxL4(;OAThRaF=4bgV2f@uxu>nIB?==mak*N9rNiIzPXPDj` z{XQ5Y)!6TMpa*NpE7bfZJc_kIfXJ%}>&4W`zYj@>glY zWBu$8ibX)Z!bptXNcdj2rc;E5*E z|1EkK>3!$wNxgXASxoZ>{|j71DKT@DR)E+j+& zA(L)*8M_tMSh=2z=`N$&2?aH7AV`{jvCFu-Fk?@y7yBo;jB}4Ks8Q9E#)rC$#f5Dw z@~AP$WlSyvRjFQW?lQhTwgA+>dI9R|U2Wutj4a4#)BxXc8Ak|d5lZ?fqt#_>cTz#d zw#xXo%NSDFs~webt;;yEFyl$CuKCT%2!WTzVY#6Fs5x}^R5Cazlor+)RxEGb5B+N8 zSBZ5?||0Vz(}dC#vKZxK$Ry?4@qM)g|%hzm%Au8O$f6fViMH zXD|5HEhE;D@AcLI_Wdu|TOb3Gvos-T4(|cEX6*uHxSV8HY-_P-AtGh&Q*!j|Y*<=Q zMotby8}LF8Ofx=u^X!5{CV4ju&!5_jh^#ZO;^%@!!OJA2v*nGDnaF0XF0S3KOEbw9 zaYxy|GQ-N0ks7R?VVBt-YiQfBe$kYAbH`5*Rt5h$uH|&er zgH;>II_0uxiH+2k1sv{mR zaX@LmEjf;Vx2RTSEb%M+K{5j>_wUNBE>Ryr(?mKso1glRpU=BrMgFf)`7we0Cbl`Ucb@goT3uVK^AP zhE_iqVQgJ; z{YLvN*Zz6A`mO%s)K!pL!OcYJnzvg7bi4s=vB6|Zdq??L9wsZh!Ln1zM(jus1Sm4f zCcl{IO?!z^)q2ykd~%m0*lX(tRo7Ov#; zq2fclW6JFw1TP7-kS00MM9sA-fO=>kf05r;Ba7B^1E5?FXQMEETVRk2`_86;qd z%nGiOI9+l>=BEapD3S=oA?O2g!{=nKxztwoDM%qmv$8s(LDs% zrH*&4@UR=)MBedSnYnS$N~K~2PMX;=xe%pzt`CWf%U560(tqeKR(V5a6^FNeHHREk zJ~@_IY^z?kYL|2Bt#Qaq`nbK|R^E^?JP^gijmnT$lQD!tZ$TIV4T!jnX`t>(@tEa*Mpr^sAH)P zjzbcMqy}j^&3G!p{jQy5LQa_sTQ}PbI4sm8pLRAQr?*ARi8KScccylPT5IqPRSNOh zkojIH{lopX_)0fEUZ@_9aOi)$wzGI1+(q%RGs3&*ywPL|=L;48fN`Tkea0G^D4$!Zv2WyVB`YY(w|~C(WS0| zdHE~?k;uFsTuyckcP_O-8A5*+@;2%|ylTs86uiwpc3$8)SP;>WSzG6ghibg52iGLm za7t~Tyt(4=53W6ALj0;T8@$9|UA~K^%S?v`n3<_ z{$16ESn4tw;XzEBi}V~kH3eRv)CAy~-w7JSe(>(RVNwgTpTD1-$oLhu+dN%xqd5tj zO}mA;bToCbknI)UJshrHRT4|RqJf7rmcE4+csYRAO&y)tlAQt-)}zvh*JZwIV0mZW zug|tgnR|ovm(j ztQya&#+h~X{2hfRZbpN5C}z7IePMN%-~$lg+SQV8LCGB1y`HlbVY)nN!B(2NKlZ6R zpWq(17{zu6Z#VMzRKiRLYy65(N!L#{1KAiJ;$l90Fs4F$Ywur;vPk5@$roRvagDKS zC)pfSj|$|U!+9%P`tZZfj}5l$XTOjP5G{CaPWwNgx~OTJCaHh{Yj-W=JL;zNP;n@^ zmUY(XPr^W6ON)($uN{m6D({Lz0Wh8TAzQ@KcYxte7Ru{MpwHN=DtCWCI!Juo0O_yX zS*(g*no-@R)WRK{V@$EsZ|G5Y!V7bojFFkw5Nqn&?o-zP>!QD-D!AIu((zJXBbY~Z!~=n z2nkML)Zuwl>jT6FBQX~%KhA2#X-xg&*Qi=>eYR+CoG2P;v@vc(H(n^QXXcE*ey>^4 zoyAN|JZLm@iMA_ye;=xB#n~S=C3Vw5#vUC1b1Z*0N5+WGU1k;Kc{vtSVQpqYJUE^o zQdGqOdHa2ge5`?LE|d0!#L~|mibzDx0sgs2mO+_Sib#d{2tJ9MTVfcYaRi(t#PR*( zd*OZ~`q&)MMju*E`&bFXcw2^c*X&r38M91Y-~#X4=kX4C)2PGyMY!A6Xe%lTJ_IY= zkrZYP$4sW($IIYo>6$Bj1tV^n+RO59Q{Qo}JP8J7@qvC%v~5 z-K^8~-hG_v;9~a*s>f{U`jhb0+ic5Gt*(UeO7pb;Q{8tXH+ILu%La+Bx*1K*4M&X1vxVAHc_NPz zb+tZouR0bD3)Knh#yw57#((iWIB;D_`(0swqWk3ju`66g`2H#D@^k;9mD=b=jOI*X zL&fW7A2Sk|uDazbEO2!t!6?w0)9>WqEhBP-a(_#1em{?UC*W-}xjN2s)BeSuX@wmo zbEX2kMFqSC6ZD7s4+H%krea=1cV-weO_Lb+?2H_*vS-6s@$g80J1nnealx{k7Sqf< zK^{vzt^%XXw(riS_mSYuoDN9sh4MG5_wH}uQ|jT=2YjQ9*V}bGTF(vT%3Z&fX=bfI z2p?9l?J(*{dMmxgxz;ar$*E>4#ReFbzh!3~eu-y% zZ9^XV-A3^XHXEqM9&JOp#r<6lqZk7G0sXbKP`&fE5A3$M_$c{gdUa@-ZMs;IJEC+R zZKCf)b;di8XX!8vuJF%8vi!fubRA(<>ocaRXT@zwFU0g9!8*J;d+MV?can zX3pp+egBeA;KQShq-!->hFu=$;3XCc_q{J)*uRaU1>8;R4C@D)UeLUhRtSNDW5i;9 z@wS$nFZAXT$kyBP;ko}lOq<~YRH6#>Rctm;mtC$kIZ81OwCJhePeH$A(20nG@Hehs z&;y8S*9EHF`CjWCv%o;QX(0c|-Gg(({jrcq67us698ANbB6y}~fu%>l{TKR|DA zqJaS)A_`soA0gf0)!P`6rlv^5iw>B<1ScHk@cY#{HjfXzY4a!w*;7)I9VnW5o1I|_ zBZtavt7Sj2r!Bu`?=rsY9;n>xo;=nW*`Dgsmg@TqvuDOPN@~qL9q%J1*eLS+541{>%#J!v8Po+ z$Bhe1mJ(=QR2aTLXrZ5F{m+(O#RzoJsHjO^jS#iF-d1NOo3svV> z?gjfm4E+_gE~geJ9W4>IGu@wvm^!ArU15te!q*7z)pUHxqNU=tJRekGKcKl-TK1)| zNv_=)wk7kf@t?Lj2BKQhLOtpvcnOas;{4gQ`wS} zhJX%U*2v$!^_gKM^_io`WsV+YYCV}{(ML3$z_|-UDIuu`FgaZqiKA1Et5+Q5tYGRDXyys+bq}987T z%M=N3M%ps0IQ!p^|L$V{gC{w;A3rVx*?E!J^O$Oyn75*$a6bP2h0RCaV%z@50v65s zP3U;^d`<;7^$SC1XtM1HO}2}Kx^NXsC1T{S103Z4keh|=ZP&|_e;>XR-mTi|8@xMb z@rOXV7uQWRZ-qK!ZY;ALW+*bl=4Je##@JqxmD|!v(0?{1oz{-3aA4h$2m0`DV76?I zlvToxI&B{EJ=h{ zM43O(ff{d{^s*_F65hqA6&}}6wVDv_~O zA|=p~)naZv6B*tj&mPrHy&f-6+tx&Ds#NkSerRj`;B$n`WLvkos>7~+NL2Iua2|>5#mt6@BnV?lC|3*NKsCIn&uKRE%M&CNzc9p3DPP|yE<1#T_+dJ| z^a~3Y@>D_^ArIVT>o~d(^3;FXY_y2oK7oG#fLQ13k6l{}uBB|apAu&_D#suzTH9ZX z>fhcO{>jv-Dc~2~JMjxHifEr;df4v5!{DsbdlfMcL;Mb=oMkyg`DaMZ+}DHj_SVEYv(3GD9=Ub1D(+7^Unr)N0p;u zH(L^C1=Fif>?snu$@Zxym)byI=3<+^^zgLlO^Tah}5fX?fQlj`^90*|KoDl6?|hs(k_m~kp|@D1K}%)uEA-nl4j zI9r@WKUkd{de*cL$l)jM9c1Sp^SY`!a$qwifNNXSP}PXC<_|;pXNBJ%#|D!tqaAjb ztpIag+9Be>C8@!R#RZC;n{TraH(Ef4nUg0#OyCSQbb}wMY#@FS% zg3AKS{x$O^SRDoVac|?{Nr2}>a6!F z_picOT}FwTwz{iWHkgOENsO6%6^yurFN}iSl@bP}4f(Zu`o?%y5->I1oszEr5Kr}l=Tnq=L?ZoyfU@~`AtXsvh0N>b~%Sb42EdM3ZXMs$PFXf)L@ z=G)qg6&arGD`B~)shBD0vjNpjJoBh96!-eXWnkAY>0tI+YBr%o@x5M^uy(Ds$3(Zu zu$rs1OFY_w7z4=%4(icDv~GjK=r{ZVcqbmo7EACdnPk^}4Sd z++mFr|M}o>cG`>-G(UK1WeR6M-5t{OSF*tBy>kC;4u_E!0Pq_s0XXS7E;VEL1$U9EclDS-yhbv)73bu5aeao#zqWuOGSB=n%eYf)hJle-C3!eT2iLTTCKu+ zh1{I-jTeyh?f11r``x}o`a-8bjio-;n#&(H=$m^pwe*UE5ZR;#%MQ4$PAbYDxKaLx z@J2ZVVH!0P&ivcjpabS4^(Md|#DN8ZRpc+}O`D}IcvDcm$2r*PP@uERv(~W8 zoXE{N$|A}N#-oeeT&FiuAO7Us8cDfiKJgms;zKg92c4jESabj2UC<7{_Ks!h=;4ce zCV%hz4RbEIEBsR6ecMw00nHbM-9@ObCw&hWyqXVg}yx3lxmtuQyQjevy(Z;>}`LsI%KthUu z8n!QY`tNkqY(TTuXnrJ}&YH-(<^E@O*FY{Nd?h$;;v-LK%&G}3czgTFi1t$&#Wy)- z&w$9C94DU=1^|NF{4W8In-cRFxL8aVEnKlF9Eo?1U?4TL1rtDXG#Js zF(==yh5GLLyQq)D4|H?>D{?FQE`Q?l-+m5Ih{|wfFw3F$)InwZdp61fJKYj+Zp+h{ zb(3#mTb?tTgQqB}fE(xdrTG$o+wkl(WdsbkfWx6Llz0AtzRv6M|8ZWggI(euzcwM} z%YerFV-cb1s`kJ784%rs(&#(C|MMC}hhGmG%(FUNw+-Iq<-vt4t!N#)u7ZP0|0aPa z-{;`Wm(gG9?F77f{Ks%9j%@j|^Txe_upPp8b6k4GHfA0} zV`ve|pFk3@QtA%%n%@roL`Bvo9SQy#PKH#ft^T_&F@nj~WA<51VsM?6Z2`qdGwuv} z-D8xn*mRCx1LvK;bb@m|aPpICs&%#JnXW?qRxFn{L?1(pU+O-K6gTl2^I2>k62YzP z{*jE*EBswqbjT3fpgP+kcHOIVCNXBQd}VNscn+POg?(2uaTg4rTd(%v!V%*2F zpOzq}`Fpgw5#q2f`RooWuqpYByD543Y}Q(>ek&|8HoL0sEG%UNr}2v3sll~Na{3<= z=_;0~U~sNkkz43YZog8!A+Da?pgWG5#xL^s(O_+n04Hq*=FBi65*sjM`$z=jW$p$j z>RwB_m?W|Bf!tB%Wvw`bF29-bU=4*r`tpkB{7UMt(j)fP{h7~Dc4N`Ez{#Ot(ljY2 zY0RXa)1bFS8ua-gJ?&5rJx$?m40yfAfMhE_{y_9(-X|q?KU0T@67lK#0mRAlFxPb3 zuT3M@!uUHk-JFhlS&b;}{Z4{U)3%WewFP&UownEC4vo9`(61y7z>5l4%9Lkw_;&zs z=IJD2JR8CDU1iDL%y9vTxjebXx(%hgc`_%7^RHz2*Js%K76*FkDaUW)-pm&3Z}S9y z!Uq)2gbu*wE|*p`0iG&Qk$SITf;<^UxRzxqbt>=eZtAS^PQY68@aaCJG7nzU#r(6I zip?NOpO7GE4VmXfRU0X4)CgUcW}^vdyc z1ippkXjR8nY^{Bn!_2u9=+e%N`K#%od~%X#aM~BmaQ!<>=nnh$lp6MmdqhJcHqbG) zxwkMj{QJRY?$Rs7uX9$3U#CO8g#`;Qa(jm$;t@G3TltR_sPpPTC#bAIsRV;vD@&Xd zxS2)b-6t?!yIJhN0#{&yOQNVI&(5&7f;AzJB1~yEmRof>ymTzhEaDKg(7hb8>-#wr zv&pSfX|OoCD?opeIJ5OszB8-*_vBQAUMxs3NC#>Z2J#Ra6|KpaJN$nGEjXL}PWDio znYEY0ojCrDM-5?$#xeE-54_i7H@1pPIWuX!k`;SuPAgcnD*q{g22Zu-k%gk?8n^5% zZcv=s1D0XZ(Bsdmf_xMFSIv$r?>sHhkydhEKPFVT9w6oenXd7NaL17X*Ph=?71OGZ z9Gx}wDnv4veN%#SIltM;1TJHR{0;;&xef^W*+4gA^OwvYd{c991`>?6M~=M~0giVF z?TI=yzggVtIj92(?pA3dt!DW(xthP)L``={D6FXztNAsP8MfJunBm%F@|$R|l|qFL zdh;|utV+tze}$QCHZV(Nm&SaA|18+i2JUP_ybntS#(N*Z_2_)703f?RS1kF=YFm#U zU!LpHNx2^7u}~CFLLLiBv6_F(*W6_jH8*tWapqQ~Sj{u?H9ti*D8&5UEUcr+R#yYA zv}pv-G87CeUs9d6nRzTlu(W;#YmYN?{r~GGV0A2Wux<@u?d4$UTE;J7eMjMNb{aMT z>(LO_??PDI(^9`yZn9skd05?mCC62bMc(r~9x%9w$iS)|dtx(*l%v`H;&Y4kaJ@<_ zh~CFYQALkhs7#sp)JFWj;)V7-3eE$CKTTf{d*Ucu_uB}XerVYhJ0es+iu3M!Pu;AIW=u`z zNKRw`tNe-VAo4lnggbdKJJ|BqgnX{=uJKo!DNqxKw?=N%z&?xzQ{hqm4rlQQs3EuY#$~R=bfk5gxMU+v`+3~z- z;u==|1(iRgpnN^cyo`q;umU$}#bj*7tdJ2oZczODxvyfSWJwl~)KOezXsd%YGvkiC zsd%G`$Ne=ZY_tr^tmy8PihJ`WKzO`-cQZBotPZ$S4XPc5785W*hZmxjZ%rk{ck~xx@0vPsi9#H zZ0>FD`1)y<^;VF@ZUU`Lv1}df0H7SB5TZ!E=;x2T zTUfZa4-#T2=>`7rAj54|!$b*EaLLG>7!dXI4}Su;WeP_^3zJmA&_bcGumOP&uEd-Q z0BRe9m1r__t>SBfo9Xlq#{N78Yr1qIPBa#!svXT}yy~9>OjGb2)FjQLbruN;6GcM8 z+6!5h}ZjNqAX5K$mGaK0?z`o>VqjKw^P*58OMTdo(7yAbq9>Qc_s9WwDl zdQG?XzV>OD730_mBj1K_JPV7qC}NbNhEQbVT&yAHYa5Lt*nxoUFgD;{*c_t*|FTv> zca5niL|_Rd#T4R8fAkb0@gIO+KR<7-0PZt@Ow0bh@hMPE zx}cc?EEWUW@jvBjJA+q|N}@38B6o)I6&3|B6~KBKN}w!-ARY*2qL5_cHE`0x+$=)>ePoU{5__WdjG2*HIV^@gEg2Hnr_^+@Uo%ZPcY#1!5e8I04rStcztl|XC%TX zE93t<-X!pPCk>`q4Kj+Qq<8eCRj4vIqO6UzXb zj=#!c7sz6>M6qTRq5q6#QLI=NQ)Dp;xR^seCebx#qLug=HJMXBjbAUxfP6ehHtaah>kW+=DwX0HHWr>FSH6J1`1H zFd52=5#-aE8XOLz0Lfqqh0l_?ODTJt4`G1+1=_B#thD0J+}xv_H{ z!bE9cFeu|<6%aMvp*Be3>x?_;r+)s8k2AYi&Ir@A;4}M$Ebw@To3B_96kjoo?Z^*Q z8PQM7E+1YirP+jt#0tViBk=<8jEo7p2xS|f6H=FPDz6)p{E9`X!zNjnyKn|K#J-lj zOibJfP_E=FK*K4cQUD5+E{&D$GURs=r5?+P0{EM1OQ}1;rDjE!sg<1r!F zK0^orox%eF|NXFdeWQF`hS#F!o9an;q$#_}+TvRr1K&vpuSC3KM4gy$hKDS^etxOw zLy$F|J8~6(;$XSyngtg^8za=d1QiXs(gY(k`3u4V=$s9Go zy27dGi~IBt;5R`1xo7d$#sX9T=isn8o!8e6zzs!C|HT+G=3`ZRNg)!8m#lL9^ zJ_o9>46la1M)~XZc|}g;rZ4St;Z}YuHsk63NlxPe1*GK&>|jkKCvF_ca0Z`{Rz@PU zH3qaomLHaE`v`=YE*owHqiJv;?*&auGt6^xn&Y33BQA@{h3&H*?o&sw?@L6q zyv2Bpx&2SHAi`C|*B@Twue1bUA!rr+)mrL;4BS9?v%x_asmNG_=RelsWX~f0?OvY$ zu)d4(JUQu7K0N<A6hubH#8J<5;d4E)S%&)q%AD;hYQh8y2OnBhA>~;-< zyxt47gt0Bq2B!yWFfA?c4^F3nYB6vo4arMda8;<(d1yJz05Q{f zIv^A`hlUgD>}Izs6~-{AB720>Plpkv-9ik+ehNIrm@ywiU)w^D;U$(8We*4@5O+*XpiY9oZlm-1-rJvX|IVI6E~Gr zk_6#D$}114QGDM(-stS@L?kBQoFfTP4f(CJIG z>oeO0@t`gtjC;JFfy@Qe8}#NZze5YqC`jzKL+6*L682taTLRsmlJ#el;@*=qRxx(a!@+> z`=>F40Cq48BywhMb&bS@a$= z+fqS!L==kK5Bddvehw8kT{ICOA=ybP{UgsTenK_`RwXMvIPDdJNlZ=SK>`HCI3Z}R zG3KlkbExpFl$jJ<@^1kUU;&Y^s~DM!g87K@z5z`0&rHIKYuW4Q6pAAF5z*H)(vQg) zNKE}M(3(Yh2)r=YRV?$-AX*IeiYmX4&OKt~KRz8MuYrs@D6$JvQY^6M44`KEB3m(T zXB~-aLxWAbX!?XHJ)|2}RwT<(doPDSb&KSu-v_iraeVY!JQ zBHjFf;NP+E;D7LW;Dy)|&NoY|y=<>Rd$9(L<)bP4c$D_t2%0LDPZCASg7{5}^8j%I z2cpw#lv5d6r@l8ovJbS8=3!fTP~2oZ%>TY`EaHFbjkEAC&C3qJM~qSf<3BW11Cjw4 z{8`*Epl&O{+@Lmi>#M+n`%`>90SN*y(*c4lw34JT9#Ux(!)%Ko7v^e}R6Gu`oU*BxsDIr4uJ& zlzI3nv$Jz}ahfrae(?D92#Z=|h$>sipHK}#6?_reD95fc2R`u43FK*v1Ma;EcWk5( zihqKT8=M+nKmX_h!e7d6j+owO!I%Oq2*ZmXwu0n?#lJ@jy_#vxgPbKFaah@OcspdY zA*%V>w+;>Y)?ut^c8A=1GzsbmF2x*`j5Hlfv`&J^#FNV9;8qQ6kj~V;MZ4mhKU@4@ z^QWc>*GL?)(qT|%!1FOJJ%oe{nu}X&Ffk=xEyqZr$%2?SXegw*7Lla4}65@@bL)Jidk9M4pN8`7Lw4Fck9z*FfuB;cJ>J?15p&$PA4`5cb#P zn&mh%KTyizxFaId_hEYe6rLq$ATaAH$8ICkqbcavL0rTvp#fsS`=9%a5!8sb3B+Y; zBLnv)<6Dv%{rs%^Bg5x%Y9e|G}mLhG#DW4EFpfeGD zHu^JG5&+>r%2)$IMOq+iKmy|6K3Zj_;_T;OwH<|nr(>&(xr;_X0=Q3D=y(TfPP9Pu zBjb#^()86rpdd{^snGZ*Tw} zwfE3HyB&vE=7p#&){C&Cgpb%+mYHRq#5YTM#4fs_&CDJY*@y8DEfnYmL%EWTiC6qAr35w&xDlpc>j|A^~ zf_k7#xDFEcgg`u&ar_B0dJeU%TRQ-+^!{nJ5L5m9uinK!A`&|F9rB$yqZ6d8`gWQN zQQQ{RrGjgo$GT>dg&3e0?e<=0yUrGT6aF8DkO9{8-uTXRLKhblCy5>Rqr69~(b>_Y z;H$KL4m6h&9s0s_Qu)kF*VMZmusxX#(g zU_TZ@TJ}eljN3BcVPd$zF5utk4Nl6=4~~OT8sC8X0T@k;U=wYwp?r^oWjxWgImz8t z?`&+b6(6!|7pGy1EIyrf^*)3@i1;d=_rRFp%u;AjzCJG|>n_FTKquI#K-nHtbQhq< z?^!WfcNBj?WgH{FDs8<(@m28n+*Ux3s77Nj5doq7NcnSwKVpmKo8TuT>`Ue%SG0Fx)fsn`0P4%Jb!GC>~+#$B&|_($>>m zrvoSynu+&{F9t;6f?M!CU(Z9Wvx;}&^JOvE79DKt1tqK^SX~I>*5aFM-NbFUKMZ&9 zh2DtJpPO35Jd75)UdveM3Z9`w39PHoVbg-l+vd|*+S}$!HglQ>%5w#}+?pU(r7>HH zl1_0i;k$PMT$0H_dxcDv-GFMw1pHxpNT{6&(DU^Y9PRrao3meSBJ)ENW!MgUffXgY zu;3wjUCXb}rV3!1$uV?cgGY<2OqN`nf(%o5%-nJ(rUMCO9Yeq-Y|}uTz&xn1qi2avrKTw+{h{2p$O@i&+H19VZ5%-#4BCF*J71XVZRoDGHfIMxzLyd?BMn zmGJ$%_2g{fo&}&1?1cgalOZug=qTX<##7=*W?*sg4QGVl-BWgPi)k}b{sKykq-mYF zK>-wWXl@vf1W*4wqYVD@1sS$&3c^6dGF?>%xuG^B>p z9waMeyv1%w!nH>s9r}5nl1K>E#;lvJ-t>W;`YU+ZeuKi&=E9^E1@K?@WYA@JpCQ}K0RLra|)08ed{YDEwFFkv#)z=_{^!XI~|BnA___FaJ=bI*ta^?PP2C zq8A)zfQ1X?iFOL~J7Q*PS?Q(7I|si4r5GBZ8N8YSQSM!em-d+VosZ<}gK@*#U|dhn zP0qvntg~G2NMErDdB5ieM+@ltQx0`L$8;4lCJYD zJtO~l=TZ|ysp*tp(0CrYAn0u`T`>^%3)t(Y4UC~ra7_ALgD#CS6d`~99dbO0u?{mR zlQXu9dV8rjEt7Hm(9^`ok1f(wR5e@s+1o)BEXmVa)aE8NXjfYXdXhw>?8Yj+A_wiO zEvLA@(^41~9zlZrd%yNyc+TQ5s z$bR+`o6Y@__vaqtuyydXt~PC@Mw8r+pnQJI5F4f&xu~%KTzarpsiww!=mCJwD^fCc z+TrOTO-Ua7pgDHFQ`q~h6AnpUS?ysZbwmeZ8tlr08_O`&!UCF8e>r^uzACG0vDDOW z{BHa3jrmIg^*(+Jv34LLUHekVe`Zt3P_!{dMLY?*LRj#egwK>@{2m)rDtbT)Y4MU= zi98?NpuggWw)4>=cc%BFl|CJha=|L-)M+Jl1abPkXnKzilg9_B-;O<6?&zz%JHpzS1e%fU*dKEclv^{c7smeR^X_(ph4 zG#_K}X#S2f-b76XVo$<%z~->hcX0Zi`1D;ZP0f$r-nwVkp26wBv>%p6&)Kfry&I(u zE2HZiG0kdANy#*4rlF{9z^5_~^7LKIVdbhXVEX9wO1ja4M&~rxmf%QiSR-ti=pSXf zN>SIAEzl!P%NEFyAB&%fEa1air$2=t z9dQ=0z*3&^C&-<&n_8VD%$)Q|^xLG&ob<_Bo!UH=h_ksAG^uo?XA{Zhq-RllIIhcf zq)!3>-2KQp(LIi8J4b#7XcToBsgXZn^p9`_{QdvlMjpZW7u;x`2slZex3qS$r52q` zMh}yyhb)@e_!8E^I=vK=S^0} z()9>JKcqYW6e@2PhzY$2`t{z25E+tbT5-()#yI@ILJ@ojUOlb(;bkhnOdaty%HnBo zx&TSb(u{wvV0Ngo{QRb?-oYIB_)cV+tE zf+at|O}kjX^L%pgf*Wx>5eruLz>UP5cW2q|6@B;`v|t;|IN~2{GpHoa2p}pWhnuva zDaEHkOf41*{wpWIfPEi|#ie}zg9L#y(2U$Ja}wa^mW3gLk9aXUwQHO7oQ~|GUeGk( zQM9J48VieZGVGy2LN4N5ASsT=Ea8vE;-dqEodo|8mi9}B_Cx5js^?>h1@*ZpYG+2I zsDh$-IDqrHJ@ZTD9=bo(?q_Oaf@s(HS2nE!l=KDjm>ZBl;Vn|Q2%o{xkWpaDz_c1Uyj0Zv<$S#_SWiq3D)BQ@zPapNcP+?9m8aTIaK$$TFGg@`o?cAD zP{QdSu|e#=1(%P^T=ElMWtSi<^zcQ>{P-iVs+jW4*@B_8)ji>`QyE=L8;&S6ViKah zij>P5@p2T(Wb8Vu)a^_};V%v=SAKvOfg)utwiXXG;5Tj|7`xd$0CS#6FN*UqJRjR} zKl$wkw)@p25Ccc&ir*iCwaOLo1^N<9H#2DXLd3`h1afc!x^f^x2a0{x-judrn}AZ!mXXnO9WQTssf$vO&ZItr-b(E2Rhb)?1q z4^lGBAqJq2gj!JQuw9v-h==}55|gRpF@u_xRW{n(;~S2qZ+0J0b&gU~e6-^RwtV&b zB!pR|=4F1Zl%-HJ{x^BBCW^a=;@UN!gs^@OE$ z?3=Z4YVr7V<03R|mA@ESZ#e21lsKN~K@2C20@FFSjOpKi_CqQWe+-I$u2j4VQec`; zihr0ZMc|54e~VvWduCNkFLrctLcPuU1)1NtrbF~T-jk4t!mO8FeeQJfx&N)){XMt| zzj_<|?)RL?&F_2!Yu&MxunuECcfUnSbHfGzU61t@iLcte6!8QQCK8e+#1^9H7NwlV zQMT_iNT!N4b)k^&Vuoe&J4ZYG&hs3|V-j4Cus*}ZEjq$9w>a)$Icm@a{|rpDjmgZ` z9O`z+A4RvHd+xW=W(EbpMrbqJW}yw}o%xO8I~&7^pv@2z{sr2sgi0KfHfxABg#_4( za3CQcq#=#qn^HmfLB{`NnxlX0fqIm4nNkn}N(TB-+9;ymY6Mv^{VK@6peA%~g6;#3 zG_jnTm@MUn@fXz~ANQi5l?KyL-9m$#J9^>~v%rXaI5R&o(dH2*=ak(8_w&0?+TX4xi1ky*iQzXpKnJD}VxLnFa zKZdNYk!Pjg`?05%v7*4+PHuy1sIuxKP+2>eUXo3|gR3`+kndPVd*tw^An%khBt>%E zD(YKtAl}eW3{}W6!WK_3+!p&!-ga`Il(K73DD7(@ zrqM{Z{!3HBN_H9b+ymvj?c|ua8olkpC;0&`cc@OhReV!GK=aF93Im{9P9?C9tym)Z zCP1r9K;NYLDjYhRs2M|Sj6d?DDK)(K&HBF}*i(tVb%eMn2!WwaKD z%_OmZqy1>{Zi}jr3Nsm#WJo!!JR`XwH~1B;)7*#sVoVIL!vQdd|N10HW{~cMJc!0|3j*iX&(dr*E^YVb5JS3FIQ z8~z&+2=|>*b{m8Ux|xBA;zY~nf-4A$k>vPB8zoz80<xF9J(535J5PIAUq`u;WAMsK}EJlESkEhgW_t8 z{_<(ec!dE-?PY>rRed7(>pfOsxmwY<_n*ojptR5rv83EM7<9)aVtP;&a zxCS*bL+d9S7>)+0vXRVna>9Hw>*LB2@atnVOZ*xT;n$bJy;zhX*RdKO<$JpJDA<7a zxXBW%JXdWyiNdD&^3LM7jC)Yh^o#r;0v0Nl;}!ZisrVs-ay?X`hT{7(#KY;o9^o6< zMWb_aBF78)Mcfgj1&1?&i+NS(#)rKJGVWWt<`Vv5ZC>*H@`v|)b z{M{Y2iF73RKnb;q?vPo(02_FI_~%$QO@m{EE6NCI#AGM2Cm8H;C@dGeKgE&7;<8$7 zO;JEnUGQW$n)Gopw=1Ye;XOD(n(();hfvB!gqn||cIDgq_$?OhE}#YWj5K@+{43rW z6SDG4hH-N6;PEdH9-jM1FMIFO%jhJDY5!hm2qa8k~xA;$F0YQi^*gW&hs zhyybV!7*n6)^XDiC25y8gY7FIW<86cfhT2K$a?yVopMUQFZcn4GW&}Q*|vTU>7yOK zY6|`2{Bizi8N}no)VtrEgGtl&1U|Ai7k6k<(O&mNq-GLInUV&+brQC1$QupfUH5NH zPo&I&z)0%9l6^@ZkRaGdMC$J%puj{n-wy>%SF3f+3-Yr7&6DRD_%$ zT9v}i`$52QXAbs5snzz?gg3WZoPqAKLjKjyYFn~v5I|6T{{`&0*t>WJLI+`g5h+gl z=VXFd)P>};4Q`}#!(*3<@z<9;qm9g@*&oNHgV9Y+S11rRD&l&Ufj+2 zZlMs)cOdHBpF>C%|Hs%0rqI4YT3GlRAAgq`{ z56qBJ1h7bfVKgEH`R;K^5Fr!+tOq@HFFcF6 z5~qLl6V#CZ`a*|)31TK@7y9p;hz}el2T*OE+-s^21Ob_2hjz{ zFlQu{M)LhA)v@b=VTZ4FSr09dvCV%2RkJGQ1y%`q-Y<{t3Xc z0!n!+{oCZpbgHc}O8Hm-r&M1Wqt=y{woO$k=zMXYIT1-cN8p-yTXLh8SOfcjOQpl{ z%vlGNa@vB*I-*p(jDOKkoKpS`emRtC#Lno;N^?p((AFxvQmSXfs)5qdRy-4p(N~=4 z%X3@SLB+Qk@3MYy_ssfF@e+G!%PP;pK=VmCN_7VyP^udO`%*^OY=doqy@|;!$&JaI z0S;t|XlBDt0B=M3q}EvXbxQT^G5Rd($a5MxiItu7$!d0;lJ#Bj0D!dGeG=13<}uhiZvmH4wWF3q2q+puPtYdyu2Qp&Bnf zRiCT~lQ*EB# z6Mfy6n#H|a=mZ(nxHyg@Hq8&EA0=@+v7u*0JNg?o>^^(jsdx8arcw&$VhVl8c)d$_ z7<2LGUHsn>&UcuvwdQMw{UxIXz{F|uPo*Vav^kpM*#QyVhz~8XyL(h?r;x zbGCZHB3vf2v8-d+Fl`FzT;AsSY z34O#|As;yaKgl1fgpG%gGf8*xy=SDY&ivr|J^e&;Ha*>c2POGyQ5Sj0*IKOl^cF-K zane{7k>f4vlMzcgMG8d%dxIe2A6T0XL7M_Xn+`#nJ`&pWq21fc@?LA#Uzdswo8_@H zxMwSCFOAi<6>&wyu}xXKUBBCw4xMYI-AZ>Rsn{~sxhkP=%ZLk1ce{Qcmu%ybJMy%i z04uadaA8N_8$8DAe?Hfi4%4We6nf7hUrIUUxD<*g@<&5>3Lyxtb6L*pOd~0SGYM6t z{1wz7y?|Z$IH3p6KrH`aaz-~zONs#I^oG3DxymFgyZNp7S+I~Qn)4z1P#gbyXr z`!DDh#hVe+JP|{oud#6CLI&w_Wo@o$M_~Sl6-;2yI8apgjU#euJ){h=eX*8u_ry0b z4tLSd&hi+=j}jmt=y ztx?+s7a$N!3K%`r<~VPFL?uB;N-ax>QvE6UBc`xKYzf(q7I=;ej zB8Q-x@fBtj<15T6jjwUx@zsAWhE?sLUD-^7D~+qLs#rQ@tNOnF5X&8ptM0S#l~iJw zT{{;o@c>G8vh(;F9)5*}|JzEhC6Z1HpvKVR(ae0NnVqalT~d9bEnuV;X>(&MFOIRO z4&;D~owfhs$W^DSJW;kp=JJa_# z`rzjA7&M{rILm8hXGS{2%?LIQRcyyk^n(zxWF{z^83ds*_4vS1T1$;_2|ol}cGIEwiX?81a_C z;3?Hk978EaE8zR2PD!z;O`?6SlR%2;vvU`v|YeQ-4K&71C>$6tV?}`H$ zDD_z{Xj=pO;M%w0Hlp76iV0XwoLzTvy`lIaDvrV@JcycqM@>Au5ZF5)c`K^MBXSvC zQ`PvcRTXR1+htWUgnRoXx1x3emP%#q1kC&zF{w&+r{UKI`~u7e@DWd|`Kcn48(8)N zP4EKyQn~*`#Yg*I)PG{v{x@)a2|9&Z66oB23isbb@zGW#)$Y+<|Er?1Dm1^Pnh=$)%-+s*O=eU6{0On*nb--gr65;=AlE=iuD4N*$)!{bKpjc4mMHt$ znPmG=2N8l%B>NceKr(U<;mexy^eTN;gK-pNjp=XG^LxCx>qAM#w!t_B9f$p2XM^!& zWWN|VG#D3l`raD(uIDxwzvItldnkVz)|ssBo4J;{uH-DUX8>9U-e+mw~#@i|xTSB97H+BZ5dT5H?t z6R)&?9CB#8@J8LMIP^>AsjWR7dj2?vw#}~OHdJ05tIznaDATooRwv5D=`&jFAMZz< zu4TB9czwoyw7QQGYl}W+%+qI#Q`>qvU?X$4RnAR7^n9G_4~PQZkH};c$eo9;DC5xT zxIiL(O6vAg5Be0}%_p^4(Vg?umY$V!lk~!I+GZuUu5wzk)`IcWUIUwETTfzQUssI3 zlA%p< zD*RHa!`c}(-AO~|;boMDMy&aNiPNSv-zpxcc3^KS8qMiyv$fE9l;BJT#!o8{!(QuhF}+XP$0v#F}5S zdoX@&z%N+zW_-lcYI^cqgpt>b{p)Du-?BC2U(CVcRO!pdu6+g&oPY zuxOEa-+;hA%xosgnGM1=j%DY`UNu?l0ny%|;IOcLfjyxGgYdJk-fM|Q#$0?5;|GQg zHjTpn<5noA4ye^&(0v`is)09dr7dV8MjvnBPK2;@QvliycI&r~tGpO?Wgd*g^j5YHao#$bu;o;)NZ3GKqF|A>B2lfI zS2;J?G!#@77U=eIsKrKNoL&e!k*sY-y`IW+SczUWCNqTn1u_Zl+hGuEsMUaxQsmGQ z8RT&=n98)z;HsM@D%`vTi)@p4hvwss(QQ0;n;^JTRMmO?Uhqqd0yKZa$|OcP&{nQb z^A}JbFWhmkZ=LI-d={3z$2@@oh{$`ax{nP(bZg^t%~mYTrS`?>;?B@l(iUHK6RN=< z*Zcea-Uog6i{<`saJq-|OFH-G-Cqmy!====VIE{qO&BSvriN%-7Vr!);hFiC2@mgb z6savoUDkb$s%UuBmPMX1fTsG*XlRnrwBT1~c=VMmkZ!fb;~wGNzcT__56_1H?V~ri zozzgZSs#t>5-(#zPln+Q({In~CcM9re($Y`hWJ;|Z>gwirC%5x{k0Q=XN=&d+M+Q1 zEBWd)rPKj`fB;rZAR5Hb|zlS4Cr?*TeJ*^Y@ik zO!!WazXHA@RI|c&Z2o%pC&8{sd7I_=3{2hiGFMIw1-im>^raJnCrqzlOt0rq%?gi& zUe9!<7u{^Bw#;)6(N`X9qMwTAbWrJEFG?!C&Hg;z95Ua$064vEFQMJ`Cw4%0L;enjJ&p)xx zq3&NC(cMxM6qK;6$95VI^rue@|1RT!>#1mt9NV4^NDK3$2ag8>Mb&QYS@x5^3LbMj zcfW!fT*LT|b)O`y&2}MOH0}f5y^o1TLoZl;f@uHY=wFWmtHpni@J9THfBz*K;uPsW ztnXq!gYb6MmL9~PU=#mj`>DzXLhqRNbGiBEC5!#+tS_LquXcH=T3ZSXr~Xf8=n?N% z;y%M19Orq`P-@+y(V)hY-(sqjIUcfo5AGrOW-)vlACc7CY{J)9wnNSZ?n*K=?KC2!&5qu2U4)+Mxts8u@A11jT z1d2MGH)$uWhLMc9w^r4R;F7+J1z zSYOzl34dcO%j0eLO6=B~^7N$n=6TeM_#3B_Qy1|!9!2}n{s#0%;xkM?A$-El#xTUa z==~e+iN=PEvu%B4XFSNy49lU33CZCL=#}V9J4ZG=@AAv%SEKM?=QPdR)*U_%Md-JV z@T0??7JH27r(qt6<7BihJd|#EM*Nb_06E35bHb=jXFuifyQ5Lk)7eu=`)t!HjMA8oHA{5nv1TwF}~>%^}|QOi2G2!5&2{PMQl4?oKl z)K`|WzdI}9?+W>QvqEyI#+1Lk=9}jteEVg7k-SIq%c&g#iWg+9_KXs0mV}0hW&LuQ zDn)ABQP)}6kp+M>OD@Gfwydq5!Gy0CW4;#r4}WiR56(K^ZXSa;FcLCXxk)+-n98x4 z4(y%b_gZ4;Eu1Ha=r5dA_lSt!Is&bHkKxiv%EXObB;RY#LVhlQ%1QkHL{&~nqg5cCXo2HK= zIx%%Prbf^QkrW8_LjI#8h(H|W@aK;!%A-)X2T<1T-Alo0o9tW@w=g<1#iXa;%&V%& z8Dfg!yN{M8(S}3&h?;SY*H;!|dVy(wKhNt$-u-VSpj;o%a|L?BZ4Etb2wcI9;Z+4O zwUiXCl;9Kd5mY!$SzG5Bu2<3Y_mUH;CjuFpHUGnb|ttz zF z!SuHV&wzhOiMNj}l)-$rXCefb4lQE!{~|qpz&7MNtph^+9w^E@toZhzLQ&?9TX%A~ z7$9rcYC}5&e2wTI+xp!9zY~;-|6l|nSazfTYE)dmoBD@`jQ)qw-XpnP{DFN~p=AU;OE8`t=_5J&Jy-`j{h0rHyH(_$kaT`Mj>44fY-E%Ig4w6-+-mfRSYp*<6 zNHyZE_5K5W(hku26xO$zsPctM`8`0;+xB7_*57?+Lkxsn5SgKbZBTq?;k~}{U-49B zyi!4z7$Y&(2i~?!Af@%7b@x9-WTcMa6)L(KrS&k6ym@qD!Jg|Lc(G!-E!e{{V2(+<* zG|Hfq59;O))6PZt<4w1lgN8YM=kXytzAj>a=yH^@4hqNchooPDb(gk!$gXP-SltR2 ziPlGWp0aJ3lmqg|L6j$#%V!#2!*UTGAJ7iF4rg^9AM#~8#`Qo=;7>CSf&WtcvbYyj z0$=GXDIOEwZha-wzv$xM9x0Bdz;E$yAHdK;R1AgvTd!<2^lSWEp}$Hw?H`#sJWMI? z&yP7kp45Yu&8|X({?uEj&v@L8SbSs6HKYaWHskO3pVpPY+Cfc*-T*Z@gYYIjp`5GG zlUzL>w;zY~q$YElt5E96c+wNLN2VWnty1vp}=r^zv@u3F*0M9n5<6rsQ^T&2;k?KTKs{m6pO|YQ~5JCFHa{x zE8~z9)v-PfUoS)t3u;^9oyxnlq-GJ#sS2B-@OW%GE%0}GuVCXv1VUmUXpV6aD9HF} zjiCpKE|@>VhN>-Rxo7GtYuR;-ap#7;8P6r7>xs|CU-3fP3jW8qj$V*&YAnXDNWgKFJvi`3Q$M2Y!6H-87Ezo(ZO*&q z%W+|`x9wDd_m5o{36PFIVa2tCV!zbT$>w+hQjA0|7JK6A5t$z5*w%jv7(?G-kQC$3 z`qlKjC-RJJ2OXh*hM%M0SBkoYzmq-F{t(rFv9M>U-^=8Z(;DF8xe&3nI7HbQ+Cg&nd?^AjFXuY~SdJ~)$ zdYkK1i)j21`!*&adx-gkY$X()pV`ef&!OKgH1#|RdQJhfEPtvgPf_yHw5T&O(c_LQjS`Q%pis#tS<9HVE$?>Y` zN)x{0j#puNi}5-iwYtK)t~0!iz(8%ew(~sh`URpk9Up@H0KVns8?k;-3*m6BF)iSQ zRKNL4YD)0w<11wSQnUUp`G&`9@RrXMN=pdzfgnPswLHY)J?5_e>%S`DvFVH7xRDE;TWEW<-;xD4IU2FFhgpnEv1q(qNL8Ymr#Z zs$o`nX+@7wcFmkOK~7k8;1`S4!V6hW-Y%5*zG2FVVZM2SL}z`a{FqILAj);esE;{=#A~iT#B|?rf9Kr+Tgc zSDv0B`J8Ic5(G5L*lTgA)RPm^#e!XE1fCD3{6$RO=rgd5GE{h^(hi&HYXI*}KE9iyj|i z9r$c%tt0k-SB}KAJNtiDXaC^=*yL#Yf4QvRjsMUt4e@WZ{~c3)3w@TNmPKzR|DTKI zzqv>@mGBex{#54s2iX$8TGI~fGT#XL(1IA^YW5F^I6)VB{tCWdBFd$L+Yx&oWxvN} z{T6&4o!lKhBv(=6Sa>nVeX_UhOagMZ>9Gj^=1-F(X4S`nZ&v27gHPy?K!d{%mOvu0;MApHu6yFR|@H0SE7&uHTLR z#lD1v8C~K9_grvXjEl^8K^cEw#)nKpHLHkO;w66Sj5jSTV?CAdHkURie(UM;B{#zH zA+MWn#J*fVA!lvR(7zdo(;??ORj@RI(t4Vwh3*ZHH|t*ud`jyjo9y(P8QY^qvjKyC!tDbilV6@KPZ(c>oGTh z58_Y5@qpRmkBbrQr=5j(jNF|x{W$}TeLF51na*)W2)I^TZgwAxxDeo5V;hSu+lRAd z1D3cE^9{$1>`w*1-=9saPiF)q0#?z*np8Vts(-^NaM{QmB*rq6p9h`pSV21hr*=+iorePN#J-Qv|1j z7HL>rWK-ThB2ReTa84A7y7)c$@;mzhSad<^J+kveIV(dW(+mV|mgGb4uGrctYj^cv5P7kmea4Nl@$h=dC8OmVi+>SCr-#G-p!AQ1 zooyn0T>mJn&%;=s8%9OJ-);QP0f-{S@0bv$funyi#id^Oi{6nEUeagp{?y?Xxqlf- zY!}~CLk~ss7ke<4^{frxLh{Pu625Faj#RmjM;MmzcHe*t|dL+7ZI_($M$L z@r@$>`xF$mlH4+0H$}q-KjRP^d-5}0p`o`+eEQNfNpBgS4u8JCUbv{V?F!F8GwwDj z=9b1)Q+`N(Ey1>Fkzm{YmSEe6J?=c-M~&xALyt>2b37j>nFTu_oiJYawWGF`C}JI{ z6TeIoa4OM*MXQV7wQGo^2iXDM?+d*f_D6`{!#o3FK5nIA)`KFWSjJm9n1*j`lb4S1JE5{;sD@BJ2KN1GfIo!1@vH!^#XOzMUu| z_Q#VW`+oguGIzK#5K^%xGvG?r0&?FEyG+I`b3d;h`Q%Zz+x3^&(Ji!O-$6;8o?8kXV1M4Z_c5${Ce2VNlM$vo0#>n1X11N|vAo8@y zP5vwTm2~rc0#7>h57D38JhSe$z2$8eyKOI{9O$t3Vsp2x9WUfQ3FMJY3FIywiO;IC zu5=BCua&i;W=b0PkyjT^b$Adqiww?Bh zLi;8D5}(~>{S(9o^AAP^ORcMI#GNUg1hphdWsu`gV9I zZ%T}N31yDcXEc?zF7#ZY28Ul?dzJ1;ZOZm0*la5@vWc}NnR?ZVHr{QB|DrcplR`HB zr^8}k)t~ZPWWSCdC4C_|U-gFMz}|$uh}d728mkM9^M};AQcme_#j!V~{CPB`-)}og ztFv@9r^rjshyL^#jc9t`=e?oRS$8AD%=B0s{6p*tvQsEeZ&uVSl;^B^AAhCpk8upI zLsk&)SC?H@v@KXP;gHv>9P zmcZohH9!zef4);7W1Is8t&-m;91Guu?vme5!Z)+sMrx@8G;*JdcHf|<*KoakLKgEbWPyt6!^2Skf`+sF~}d?jnA9^@X<%pNFUP0F|A z@HwV@)A)0?Qc;HLS;NJ~uyX?*Z12HsL2`smx4DG?)Zm>(0vB5(@KaE2#hKZZeWGNR zUNwqolkn8t76}}0awPjzv{Q1rUicJ-mkz%uf*TS|c!bPnyYCi=RPDWwK;i!fc`oaR9*-^0H97wNxgyh#858!ys3j~BweCYkni`U%&^?8TolRQJg(U)U?yC$@)UVH_g%@W92eR!BL4TKe5m_D>ULQsfyGy}|9iHuK$_c+SVOaYX$=p*BkMMRf}Pt>!?Gmod7pP> z8H!Y5dvOBtpOsOZNH)^5#FVVw!ir5-DqaEOg#DzX3K9FMRH*nOZRniTCQ38H1Nl_% z{*@TeVH{5fEyE-Dd{fXU>8oDYRN6MoJ-W1Qp=WBspFr6VHsyS1kZc+YAe{pVBufFr z2`-!NY{IMWS5TY%W>9pv>wWE%(2Je%%NkWYP5}HES_}8K(6b{e9rvm7JBv4HTmwev z%RYs}5>ExJKV<5s)c;FkrS2V1 z|4)%+tolEP^ndl)vVH7=c-s_EGwg5OBD|sde**k)N{#OHKj%l*|BuWv$JGDh`CA8n zls#O_)}s`{X68i-%P-64B1q#Dr91;rQnKiY_}8K5r0L5_kn*IbdjUQVbzi10OT~|5 zrGoNa3!S_Gzl7x0(o82spMf0AcPbTq`2Cipwf{hu%DdZ-Y!B=orqAiQ0ofdD$71XV z`~RYy@2Obzj2MS*FV!!pMXz_dlS|vCC>8JF3t*X=)kNu7l<6(FgdI6)+7>$W+~N9+ zjmpEdc4gXTJ!_dh?~p!ycxju%-4kFU&WWM~k$MH0YD|SnlCzUhVs>(USfPrx3h#_( zCv!~bNN>da#14JRjgj+{&*?qpqy6MuEowaPW`4@+%F?b?$@$y|(pb>?B%iHOv`qk4 zzXhyl2P^*04<&dQs#MT=LRN+1Ys9~TUh%N8-P4Pb@L1_}@EG(u?-qUTA$^)juXfPu zDrQ=r0fd$Q+S z>d<|m1sk(7WI#WT0`)NN4i7m>^+E6VgzVCv2vyzDXM=D1@>BGxHDc)6{ECF@cc_A| zwV{89{SE)DLY)6NPA2J{q#ybvSms^mxei-YYHcA>(PvF}C!$c2XP!tg zukIgy{dTNd^put%Ei9xHKD3OnVZXXc_|vpLde|o2nLT6=KrRTVP23ePvy9Vw3E#5} zAN0B7E~Vl=JP0|X%dW9hMBFcJo$LNRzT@ygkP6RWiz+9Wk}p2hPEOkEH60u?`MtzGJXpHk-0hrYQ^aJL^f;X#I93lv2KxI&#jZu2%`! ztTOR1{kPJ#XB6LBpjO)UBCdA94}HcWTJqTnoq%c8m&1?i{Y?iED`k0++Imze8%m|P zS*83uXm!?8#ZT(Fi?WhE|KqLOnub9LXp5aww1yF51&thpuToKr@?*UCED&B=`!0U- z@DZ~)rVjW`zOt81-H-Jfv6iHi(Y`5Pyvlmz(4B?2g8-vLslBvyx*M=2xv$WjS9tdx zrB=(9m>r0wv1GL&`_N!~S@k5okLiz}YD<5m;#<%eT)x52O_T0URFze9;6Yy}#I^T_0||U7Ih@ZDwAl-2B>s@sIbnHSMKzbr2NZLa z^4meNQp|D&NYN=LwPJBfQ_5-mh}Qu^y}>F6c^o_i6-%*rX1SgP^jNMhAv}dvc-D~Y z5KHqgN5R5=&!Z`}=@2((5poqmy6J)kj9T+CY5|J>0Mo3ea6b&70bKBoZp1Gk=9tgm zHVW3;_?)oL`eM$+f+gT#B{1(j@EXk6)&$z;$lg)ORGB68X+QeVoyaJg2t9GmEo}w& zhoKjtiAn`cRI*w?{ed0YW_4eUchg~@KeB~ZWPPcNny9x>m7qgseftb;A6MT#m>;cg zK5|91L?auWLVg{3VIimig_{9|Yn$#aB89seudc9rn}y1Kgc>v~SGRc$FCbgmKuQgf z*x+pysz(d{UW0Y76}p#;N2vP23Z{aSso)E!cWs)N`0dPL{i`S;b%nO>~nFOLcX?{F6hGL@ITJ>FBYi}mD(B&+_7Mc*ouz$jIkn%%soy}ivMxlH@NaPN z`G~SIokY3yY^7{8irV#=vCbuj@-q)AD?dQ9rMJh7QG9(-1osT!=JNO7rp`i%M91;p z<>`Nj(Y_qtkvG0UoRY=ABR_#*$jbDjWnlr5?rF!Otgn*(9jla85u{V8g;7;mS9tnm z}osG*D3@n5}e~6W)#A& z7^UoO{L;@O{k7#~e&E8$7T+%)hm}=|R)@c+9XRrt9zWHtT`|tQ84G7Iac^my=R921 zKF+Qe$7GFB%E-##zBRg80T}-{ez$YUX5$&+1@n=5C3ohk3(r903 zzbdj{W5?lBrHn^puZ?dOA#+_Zj9PyiPMytIKyZcq7xkO}A{D1y4a6iL(&~{S5{4x3 zeZ0CkmY#VnN%U_i$5+NABex)0>Rca}@t}UJx;c*P8$f{T*G!?l{}#cgHr{v?Ph}lS z8BJK}sySdhez!r}1`+tQnF3j$%7|{tv%wp-X`77~QCmA0+LH5AeVl8ivUVF%yX#h* zSO4de4r_XTrJ@#9C`JE0B1J!%)*ab4?FWO7-%&foA!8|O8Q0*CpgZovK=OFp8e;e7 z6w-B8aY|V&i$QCN=TZmKdFuT)7xl3@w1z-1PTkuBSvmW~+COfyt6xDn=pN|$#Ix-x ziFyv`k84M;8$|2o_0wX;*x9H$VC7AHL}8~sHwLG}DOG_|PPcROLn^pP(#*oyvvbl|zIDf$xm8&iLKR$oMKZlN4z~~~KA3eI zGRrGvPx%oqZ66=d0`L?%)V=@JS_1oG1Hr^(da;Rfl2RXP0C#uP#Z=B{ z$8Hm)k*>f?$aNN0iGuXKc6w!Q2i*jHC!V-h>R_|kK@bL3+l(yF&GCT)*y9=piBnsz zRVwJ7K6R5lr}B2LeUY_x1U$g9RokR(4(yFp_x(2zj92$&CF2=#hfxh$OjAEgGyerr z1ccEavPOO`I8vfi&^U_JzSzu-$Du&t;eO&FjCH@0?8?(yZo37ac3soQhNGtaPWre_ z3v4sMS9LFD{&RZ9R zLT7yp(pU7TPsBO#`WQ!LA8_BkDW{Ogj{QXvvDmWhP7O&79H_kxTmviVFJHuDjDx7! z*;U|k{(I6T23K}SygH41kVyRFkLdwn1T{S54D5d zZ<=nX{K5t*PGJ8Yz|(rVdLUl1r0gw}2;bM8mF>a$U%c#(#*Wav)Lv<8wr4WmqrgI9 z?BFqn`pNd(fyRtMq91f=wtFSs7_%jR;9R?ID{Y;sl-3nyAW};<_OV zZ#T)ej2+!$J{(_}yFzaP{}k61_=~cCk!3@lAzrg%N{;g2COzvNG9$)=3>N$=!HA7j z=;>_ZQ>?7YaekM-#D%$9MsKUY>2E>?;5@FqCR*@o;?mF=W0%q#2Vd}29 zy(6#}%G-d{_{{h$^uG?P*kC;UH7<<6L&l*?uU`Q;D4g*a|7&Ng?7|ax0#p5UkRvoj ze~q;$VhNY4!u<88K%6T_+q^BPHsjJJSm73DX4|b7{S=6G4TAwtTL-$wtF05<>1r#4 zVa@?avJqd|hr}0BEaPOx*TRH>ju5TTzi505*h9PJWI1BZi>fF;OTKmxF?x9pkh=!F}w4!aq-Pi~I!41+>qiuNx=-Uiwd)cx=bw)^|tr#xM!tfUd037w}UEkK8m zCr*@h0YaPQ-U_erT#s_pyhGbTJ-8k(8e@yYlxV7Zm>q}BVOeGR7$kwo(^4(*6DV{B zW_90xLUWbfD&=&kbuNit>5OUYXtuBWU?}|br66PtDTV#*2K-$|m)z@DZ7A~o4DeSY zZ^^ZQ9oa~V2ZwG#@QjX>CGZM*QOc44r7ZCyWr^!zN>{R%!fzf$b;Q?vVPAKIT3?RG z8d|Zjzx^=&t}Df#&=dA`KZHMGaot9~4_?^#=m+RNO<7yukCj*%J4p=JsZ_&*LOl4| z-(HBH>xSVECxx)Ddy&4^(f6D1$NqK+eZPvn(^kFEBe=DXBK}xrk=cNDsi#L`Lx1MX zG!AXnIAo)*ZlzTGu3#5lY2MbR?*q@*PwA z=*nnnvphji98|M-t`HJLJ4hix@~PgB|IoXukSs8T#G#!+K$W5+DJQR@ypR)vrah2T zIQ`M$0B3uneSLR)wlkyc`h3Z0oaG&I*I3ZTfy5xEhwfl_?O^yzB1a7~+{{t4#dTRx z=C)g#@m<^_2w4byZeQOW%k6^a58Bs9^PC-CV!Alv#{GdCa~=ruotE|O>$~H-T`+zM z7wC@hcER}}OqLwlKzkCA(M8iTgxLM*5!3*YB~@1P$RgE2eMcF0(Oihlq+y9VAQ ztVCvN?U0>P-XmMTw!J`4slqbIC9xP+wMIpK1NJDg&H7scSBy(6WXszDDzalMBD6=!2|^el5ZSYM+lUlG zAk)9vf{Y!T%OFT6gjS9P>AdYz(%=XAih-Qyg^Yv6;NsFF?B}XQ zOhHDD_$s4?Dun%Wd`Ee28}0up<+S9jms3nkHf;f8e-tn5+F{f``NiC`ACJE86D~LL5?XMBGO6TRA&0$f|%uRhKWf4 z6ES7JD-cI1Zvx~J;j%&Cx`n?r>A+2J{&AG5?=h-!dW`WX8WHvs6u^Fa_G?6r33$ME zd-ee)M=@TB-YXvu_fC87+&lRaL}yXrxkw4xdFK*+Py+Watw3YqToUsYU3`Qti2R-j zVC6RooMr8hUezpikMF!fiXB))_E7HoMC4CMTL)IcJZaYYV%IU@&WmMzJL;pemFR41 zzb=JaSjLrnS(yAp6uyCwPwHH_mSYJLo|+~L?*s8rn8-#8YVNUkpy-^ISxUuBP~Qrb zh*e0a&y#guLS5^35vLIO?#Fkrba)W-fO5h)@V0FrYDHrUfFY;fUoP97O)xz~q(!J2 zN{a+&#vh}F0rZsXm6V?cYfOu<2)9t&Eh~C`fa-Ew;-akoC>3OquviTT1n+exZvxbn zW?_pE6~kLzxS(OXSijXBeZ@wAvg!=fklS7p@e>2D{cAb!vP(qY&DC|lm36P;BNrxX zl~R^O{!%ob@)0ifcJ6$X_O>M^KWxWu;uaEC3NG4?ep=cFT0 ze@=RzN=JI1;I5s-tPWQnT>Y$+rGNcN2k+E4)%ON$?7DuBrTRO>Lf}#?s+bT%d3@+c z!0BEr;wrFLGR1ST8G*Wk<(-!LCyV<1v7w6kG6~b zk@BS-Qt1MTYnVpgX5?#IWEiK2bA$Ej{mAR^LW1#dVIAIBr+%K7@0Nkh-R#h?5R{3k z`F!aL8S!5*X$aZGfF( zJbR^`u1U66_T}LX#Li&<4C5O_H+vB=x}piB(Ha3du1$e--?D~++s>=hwgHuCv0~g{ z99CvQu$jJeQTI@0a=jycs11LH*@F9!YXKZqd^Dtl#qjJ@&_kqS+M2S3&fcsBVh;+=~tBmJ(YfrdK2QgnWu=)AZBt%}%S z*;*;eA%367a|%=SED^X?ir~|PCtvN2J5<&>Dv4)6+KO)hq(OuvD`m;RJ<>h(yh8MR z5c{!&HkUx}D?+7J=x;aZdoyr#pN$6$-kjOWGtKOrERLSwd!@I{Sj95OaLTVDW;WqD z`uZn)75C}!g(-6USjnS52gDANm82?fp-9mf8t4`&$ZO*{{GxZriVz1L)nLHA^;EPD0jd5s1 z&_RgQmjF;-IcG5DxKxwm%88rVmDd8!K=4f6`6Da=3EIdybw66TB-YTWg@}74?}w>) zAEH80_sNL5SIX#y7&N12zY9J<`4IN3Egeez^wqFB1b(n!J%CYCj3ds6hV*O5;6{w^g zX>5JcN+I^1hB+#65haK~d+#=x#_e5VOcj|LObh^mXMhMqyq$v0lU^nP%vx_eFG|7T z7J=lR;iA-f86Mv8qAXZ~f>Qo1k>)sWDx)Ji(7RGmioa$9=ovi?H5(AiT(B>~KWYiL zC(8@H>wk_}o}4M+KM~@?faX^E)KwkGy0U-f5M{}$9AV{68MPpYI;Pzo3lM)&Jh71BO~7MXj;h$-3Mc#dM$YDPpc8F=yJ`=!6%0h$vHpNn5s>ww8GBVj$U@tdr})wgsC zC^UCy#kyDycUqaqn+rC*hUc9f!;r^Lis&kmopRc5!r#z?3rSdl zC?z1GLS?JVy`%zCWeGz5-{+irXC|QS+yDFdy?j1o?mhQ8&w0){&vu@(smejBQJ2PF z@d+9ln3BX)4GXJfc@6Ew$hX^n&wIT(#~leD(udVziQL&wt2)F2GrGpT~tGkHeqKshuwSLD(PBlKV9&pWJ zzDM@Ml1>$4YR0HN4`@=b)b5^@3|+4?pNrK?WYoEiKd#{4tip z9VyZhYTz9kcCRz4vjv$bu?B0Vt4qy2N|nN4sL~{)%64m%n^>CB(1L!_0Q3o#zz}sG)mhzSL)j1ALxBAM%|fkwT3-C z4l7#6`I(0Oqrh&2F&GxLUQbW%a=#>O>5}_+K^a*7# z+@esSWU4@K>J^i8$!5r5R^oW5guSC?Q(mK_1=-%Pi!lR|<4^NYy z!r`0b=c?hG`7vr91-aHrPe9bXss~^%78ficn`@8s*V%jx%&VHL0%YBtKk!|DxS0?0 ztL_!1>+9SXOTL)o1y#QmY)3d{Bqv&@lVXLQ3Ro8lC4L?j%25_-?@w4LCliD;i5hIL zqyde(6XCOXlj~5%fJ>`ljrbHfwA_p@BsylUy*w2DXDY@ZDHy#Zo3ZpDPHF{H$ja~b zZZg8GCfKa2_oMUG4Wu8F26*0qkhv7_tkTi^%`|FcZ6lay!FJV{c(v;%5T zR5Yx4`p=29$+hJY8)qnzI`Nu>`30T1a!-Egc(RWvyHRC@6dzfqE#b4wQ+5l5o4SRU zbOU6N5s^It%vYiYo24v9n=dNHS9QFGWL9vhO4_0|GO+G{DN$Dz-IjwjU>@ek zp;2Hr>Tf1to{Z$E;-u1a&^7Tid%=hd`ZtJ=tt#Y*dsL+lxt)79S*$sFjoN^lo>Az> zbUoaI^*u~z#eEpLS6KTnMr65qR`??&Jjc9ZqjoezYsatL{^a$l5f7Z zZgzoizs`5@esLDaNJ?xSZAdOpIMSEdrJa7!Pf3%+8%qQWhmvJ&DoTJ4Cv)$^ApzyxB?)wreoxrSmU zmF`hJ(Z29tJ3qtqpOue-mVNa}m%N`r9u-+H6_JtpjGJ8jDn=i`Q$4^W4H&bOv-d7j8T&zMJJ$;eENZt$T`y1u^PQ7CLIybIUvrqHHQi zR$(J{JESG-W)HTRM`{9{V_m)if3m_a#kN1$5UO?Tz|8BZ~ zUJFXre>FL8!y~$wl7<3*Q($*n0fzo1;h~0rT1Q8Rse{2OElJmW+ER2dOX_1=)|axn zvvO~b@>F%jad1YXw@Jj^!fwnJVbt3{9)nRv>MbH_A#kZ__Hg9#3~7wJA&b}3c@?8b z!?Bt#q2LQCIGYuCzL}?m%mdo0nV;B)FT&j+iaS6>^=@B@<xzTI~)s)*REm z!QD)eN{O+6>q}3#0oNNzbxs3MLO7wD}h-FYpOsWO5AKU!m{s2tta?slNIVbVXw&= zgw65I^vh)SP&U(Vb~n@O1V)*-Txv5t8|eEQjeFD-(;k_CWIb3~)+MeIXKZ6GHJ3=# zrlfgkYQS8U+HBOze7~&Hi};|nFuV^{{+!SusywhXkd$8-ZthkRFa!J5Jt#co1X}Zz zI;X7%;!YsUd_+Tj`(xQmi#~mlj zcnY-o2W4gj)wRKpmh9C^#4J`Tk#Dg#vhG23iy9E>aZO^}n$>QJaqD@%mAJ^c_0F;I zw5y*M$UK-_7NE{&rv2bIy278;Y-LWN!nLAXasJRU<%zfpHFwRG(nMRYo){MGM7 zhVr_GSGQKX)XYUgH!PS0)&%`fT(iFPZB;k9I4@87-(UWs3ZFTLft9{toH|^^tG)QH z8?XNM5f|}!AO;TerQ*ypPVO2!zSV>43*0=&?Nlqp$btFM;hNKV!TJoBFfv;Qfa@Ac zF7fK{0lvHYNgJS)4<2@@c$H5|UiWbt&A*g?&59dTGQL~~A)i#SM#rWcVvV-IoiS@P zRav9RQW}Y;GmV-K{Z(vBz=#}2pYSxwsFAgBab0Xwi=XD{VC5MoTTuFNxU;)a_mAbW zpyZ6)>wEdk1ECvB-}Ht2+d99J_V(;n>3QHCV?-wD5(;sqc}gfD+yPBN^ONSUQ^PBh zoY#4i{D}}UZ>Av}v6hNY1%HA~)fZ3c%E88j~a+zzGW<;=#1B68vBow zOI>J@fOY0W*>zmvY?eFQ{w-j{*ysig0#a=Iz6|c@77}=G7uPpe_=WL3n2b#B} z277)IvsaGHX^ch6KwGN$_A&pHhA=m`G?rx6KO-e7NvYqExuMA1Xg~3`GP_3PZayeQ z>tD8pg@n45lAVl0$?vAfUr#HGxjzi~k5|E{OXA&iCD@$NR=GE5)NKRFAyv7Z0^JE^ z*$_c>b}Utw{ZMy)J)wnB|8hc)W9gHRs~gzDhgZHfoeSE=Ys%Fxec zUk5wv&lSYl|AhcoET^6B@t~MprCA`+xalMC>m% zY9>HKfC=N$U+_1n^cYq!8j&$1I=z;9>(a%qJPr)hGfB(3)b?bdzNNCV*K6I_B+;$A2KJc{u)wvr*{PNN5s4BHdOp)wVkWYEt(iZ07WD>ADNR2szvwx!mWURA}%&xb1J&!SfSr540;(St7 zaG?D)ud9ZVbP(583{vL_7;}%|8ytIFe=UH{-HAwF@VlknL@H#NhbxNx&PRkO6MP}j zqk$_~09I)33tS;PU<%C-nX(w)?DP=tG%I@LSo5Ri_VlW~zGGn8$XQ5#4y!W`;MB2K z#=JMPk1_HyVme#tNEQ*u)e+`8`lFUjN(I*IGA$R3_W5;@HT>nPd$AU=Ln0zZqz78d z{3+w`f|_rPnpY^axaJEOA9Tti2-c6M z)DATF&sF&yX+|W6r)V&h)S-e zjC>&dQ`s@uxc^Ul3ftG`9%s}^tTki}dE`n~3OCBS?AnljhupR43nOdfDuyE6f=@{P z_Xe?UO&HB<#BMD3EZYwmfp-R7EDh9B8SL3k;?2IwmF&hCPcxY-(=3}p37xSmrq3gqOm!v-Fqxx)g2q9^9`f+GHDv`w!=K3 zlQ2*Q^{<(YLYmK9OQ%$a4jax#U7Zz@XTDpVQHj+l-cNVUliGxvE9o;TQ{W5swCjtL zDnHb{CimpH`b2ksg%26%UYggfk3wiPs2tmhQ;LQxzh2n)#~wO;4n+5bGiQ z;Kup((+B%>AHZb;$)-ywNE(yCWwR8QA>vBbT{&mh8w^(E;wK=o5@Xg-WDPm_ieA11 z`x(=RNeh)ee7MNJGp-KE|5aOL$**qvm#stYVWwlFyMxVa%GV+_V&*Bah*IJ&c+HH?5n`k;gE@ z_L>|w&F^#MQRO|>P3z%vNm228X5mGfvkN zoDc9$yLKzxN@{ZX*7sb?;Kj4WJe2LPFZLxWKbK*M1Hv$4MP#0p=2*rP@!&5?pVg(G zP45f)mOrRjS9bMC*+$*#G>={*+n^GZ7^_jFijwKHiQv>}H?oDtv$rzNRWVn&Vz?lB zRW_4L5`&cSC{euJzNNErjj}5x9H~b6MMm&bCQaBx+LTm$W0TAe9kY9N(CU9!fq4}H zRgNzrd={5Cqj8kK$hyLxJE*iYx33X-8N96WDWVjkv=Ow)Y$khW4NHCpoP2pN-$gg} zf2_#AI?n$@eu*e3x+!`cB~x(d(GZhM^$EBK3hp*hJqouIQW^p|*6&bE^tgpwMs)`i zNY31>()?T^$8*TVJDR11J&ya)(RpRJQoUqdJtN$VxCM0BRt6t>oJQNI`@khYtz z0Lm@Y^~)u8e6G-vfaE)cgra@U3QdEYV|4;RL`cXG`>Wo9MN0Q;JJU zwb%EbTz9Zsh7Fxg-Lr?T=!iy#zNkq)hSZNL_m>P zAESC1t(REtzob=ZT_H}F8yO1&sJTP@kQB&afLI{X@HWrnb%%;QobAY_4Bb|d)$Ac4 zLh5I3>Z_zG#rY%gdyNhNpYtN%(l}-tiNw)Ys|n5fX>mb485pDS3Nf5$O%E*~9I`(|)vk znS&&bFjAL2^XF1t3Td+G`yzg={EfL2W@K9Vn;5YCS+H{k6z9rH0i|hzT=AG#TK(9? z-yo1tfFSN(?Ys;C`$rZ3r9g?6JH;%5fL3u%CfW4^RJ!zX`&WwZbdNaKgT!S4=^^JG z-edgM{x*;FOZ#6Hi1g4C-gkj+f81?|U(o9=i%#NE06An#@zOuY;Fc92DYwFioWify z_(${1q-fZ_E4Q0bw*aJ8ppL_lWJPx{dn3NzOE)viFEga0bPveXAc1%1Bf6Q*lWy$f z0B2I$JD$fv$+G0dd=u9_@+uF`n#MJ%+)EP59m#XpF4GIgqyM1hryPneoxArGz5xO) z___(c2>2>Ho;GR@@YdR+nCP{$6_K$5QN>5QHgl@Q#*IKqBP8^m_)*Mv>|==nYsTbE zZ#Cs{ho16yhKhLu!d>u*H*k^pwuC8<$AyKe)wE#b+XfXJ5#h!&ZE$k!7PfqL$&zRVwJ9Vz!H zkingUsN}_0^G)fwdJdu*6tQV#!JvZdOhp%vpS%Jc%d6x3QofFb$IgpZexy4FV;d+F z4vfoW8iIAjhR^;p*DT4{OHD)Q83-}Zog-+T>X7_vMu~orW8%vu=&6BQ0cFSX4~!oWMQGsVJ37mV zWbv|KI7H2#F4eEv`%jrIh-{V&9JKIf!FsAux0?1xbA42xF}FW!jqRNO3Z%U!O4Mv? zvv+M~ek{!jO*dXys+iCDT_Szapk;5 zjdZK_W=$131M~_+zpY+Q)-V1t`O;Hftg1>=%4O5rBG{T5tP1KHsE}~XK3i2gRQp|L z)cF+La5GL{M0SxTXUsoCYT9C$&!J#F=7ss-*}iAMyoS95z7@`^sYNkB)sqv15E-pX zyH1oB5e8nqXTr#c4AvcS`8Dz)3o`lg)^+l7k$$O}EHAR5gfAJ_%gf>V<>H&=Ww*w5 zbBVmT-Ri$ZUZh*eGv$}O)JRxm!FZ@wee9$_o#rzj=8R+I*eo8dx>7(#QPl94v< z#k`N~)L6DE4A**kqF6%f*W-@)_lnxN6F5!BJwnGw5G@Gtq@Zkx#9c??)PS z;sw$9OD~Lf{#KHlnYw$k**tGVc2Nu^d`&Ow&t8N6h>Blb48oDYxY1 z7X7jT8)HO@^veKvkMX{KdEg;=k=?^kzl@EAs48{&>~dZABxk6Qi?F+#P$=Y1j=f%> z$$gSQn-N(dXsY&p_L#i9reCH#E-#cKUsf?vQnEgHFAq19@^^VCrtCdzDo4@JIG&d4 z>y`bE6gDeX*or;UHY~yhS$Hq1{3*WUEWbCRw=W-ilj=kz!|YgwC&;h>bK=r&$?NIz zTFM`1w!EGed%Z(m2ghC~%WGEb^-_5ifz|?%FRwFWujk0CAk|+p-zM-^x?@~KPWes5{ zwuZ1-ts%UWj#iNh_bP`U+Zgbl*AO1M!?|acx5HWPg4mj>j~tTypNzf;czT;Y>bdN# z0Z&n_iNjVJaoUFyO2$Wx$w&dFVBA7)i}dj z_9olc)p^D@s6}uP7b{Qi(H+ooy<47y9Ao8mT_|_l4K9p06gmzGah(bA6v~UO-aF)e z2d{+dRPIWtkMf@q@@wCm4lXYf=bUv(RUP}X5smVyjsY1WLA{_|IjYJ!Bp8P4pBBMk z_%T$Pp5a2xtuM;V0j9%fyqEPeO_gjosZ=XWYJJn-_b`yxNZSCcAWO-SPKeYcV+s|A-#;TGXvp~s{8aw`kJc*rhc}B@oUtzo-k*9a*%|qlV6Hf5t>1;TmADLC) ziY3_tr4DzJi}Ydf^fFrulL*;75upVlLataDkvx)ld0Av^ZD46qrBZ!L6$%H(CG0B! z{5KMIw);IMVM9I1a3!punTpCf5ii}9ux}*22kD-DlTvaYJv zzAhIi*_}*@o_xu%%|EBF-BvYfo`W)HzEsYYGj(_rqX>!rRCUy(h?4v*-?bE6s3Dhp zfz+R8wt2g&n>o;s?a@JWWzv4Tl?B6Us;+2_f;jOt?NW?t1e z>q>7W#dqT`4^{nh85|g5p+qXvDIxZcr?*BjMa#>-okqW4=0LmWmerj#O~(D-Qo9fn z$>}?dbkaku3dnve`6ITLw8C_k%h%KpPdTCJ%bdO zl$bEJ>&8PFRQzdi51(C>0N%c`q#+bd`Sw5$%AJ&%T4HQ(D##%S{9xu&AXys8Tp%Qb z%t+>|>UU$vie!q*&aR;%^I7%Coa%#_^Hkcn%n2bgm^s!M98n1D>j-_4FqGQWze#W* zdSB+VKt}cFkokEq`m#c87G-Ag@dZ8tpBIXb%p++sNiQqRt%5g1(oH12Ay7q`Sw`c1 zs$fDUQ{{O+={#rH^ER#SEQ-FN$O}}Cz=xS{NYh?Elv79PgKTN-e3OaS_f>^m%Ya(VGX_ zM{3vs0``?a9^pcAgE%Xjxo&V$W)_}QhTqE;ie8g$Z~BK@gt{nNQ{<)eM`NE(>D2{I$i7{pfl{>|Z?}CLuu|Z;_{#|ejFuv5&=X=|xv$a0;aM<0*4J=Ky{W`F3tiQUbkeatei=Kc-=Xpgag+Ud#v@DkkcY19a`+a}44E6vC1#7;toEkY zS9b>d+d?-k0jyxy_Z2Ngh|pMAB7=f5p|Lb`V2Lqq$c%GSeg0*rZ{CNWE1Y)!F{0i8 zbYDM4e59^WFLg`%rlW_dvj97L#EW*vm$c_y4|Vr>Eo?uraCN7%i(rDMw?Ud7V!2Ez zj53r^3V9WihN4rmLUR7>1*F(-uB3%rE8u*uvPYzBMC;kiN`6Hu5ELXUA>7RPE5=_p zDn9L^-zNWE3r2PVCn^1QzJ`tKxAR=c?m+&ue)D-nc>1k#y{F%frCmHy(1jE1HHtSO z$AkSS1}mGn6JSI33mUdxOf5YRELL)40@PT$T66pT9FGuJV6zmYQ4=E3RbbDcK9vG% zKb-b)6D>)+iFWi*+UI~SCXdGbw*l}Y`b@^{F@2``fiAekIg^;4){jB@HR= zenIJq1O|G8&`$#YrQ&U5;B6R@ZO~}<>=bEi6)wc-7^)WDfK2n7+g@@mv}!MBpJGO= z!S?re8mA#N=_%>EDR9x+)tw?4_wd5+@I~LN-*K4(m0L7+r*SR7*Y4SAOjt$AxXhva zy*G2<=cpV05B+S<#!XM&z4!CaKA$9?()n9roVnhZGo+6zAtgrE@}0({4~n9b^JLjf zZ_xx;s6SDOQ1pyxyHtV4zL=c~by=(U-;8j7R1z|N^*yL|mY=gTWSmag_SHh*i4a&~ zjQ@HbfY?XTk0TP)BYxd(`%0vui1XpQ zs>kL(i+bFy)Z@~EVLwzX0>B=$PH}_%uODIzv=LX-{==InvMJwtd`25B6MLcJG!VYb zc&v%rf|;l5Ljz^V3h>D=rD{GUW2&*TLebDr0+8bR4YZr2C^YgwA*{vDfgaU#S^OQB zIaWGu|4!p7*d;w}&6%mR_k;n*s9wurLCQFK^2|NDQ+eIq1laK6f2mGgE}e=k%lec~ zT_>Ho5rWxDk|iCxN_T;A|KlQh=Hm8&ar**`4#@ki2NL;De`)ULDd+MG>9DadY9f;k zq&$)!qRE)ki1EU7rmWc6!#C~ip#P@K459iss1`0#Re=ha^2`oRGSq24e2gsc;WCd8 z*Fo~99?9_F6~f6bAJVeymS=5J&ik~PaGvnoEyps-+R0E1{T6inE6?9@(ufh09=b6o zrvDo}H0P>alBDH3@UECJq4j8~_24Bz^R~=Pwelj~clcuT+IHLcOn76P?yl;WV2FDu zH4dlySPKJEIzdeH`cGq~xy8PiJd}k@=*Dx7S5ybJhklC?T?vCb6C_rx{FXp?iQj2e z1j`psf1d$BOm)wshy>N$k8hzzm9~=FHj+8szl@u57oe{CcPKU&+Lh9qshTNI+hT>8 zN@qx=j|O|J($xMd6SUZn@f;jAxm2)YKbCdEgWfWKm-V)J~-663aJyoJj=+@e*H)_Se3zHeQ)%ZH%g5@p$3vdq#AjmocZ)DSt@@nqtz_l zUf_+#3?5~`DhirMp@YXfqfr;fO!;J^=0#FP{b)RW=~Zj76r`B;xBR__!Miw#mAU#-U!Z<8E@EeAG10*<1X(4#o( zQ~hwB*QQRr!sHEzlmfYBpnZW`&e#8PhZ20Shq$GzCeb+#MINKIQqd|-&t;x|hkNl} z2iiLvA?>cqq&4I;F5jUI@CEo369_|S=1^>L!^#+ID7J9+p%{d>GMqPXc&w>@(IvlM zg2>4DexYm}RQw?=Gq!|bzVtcbDuIPtLbQd1HSE8z@`;3-ga>+1wA-~Imj_CWJMPPT z3c!CEvt!-sb-Lz;%r2cBDHnrmG`_5g%TcY8B_ox*fJwd9!b`?r!WZqo&?>~-SQITA zYkz{MWAbrmwH3D4wn;+ilu)#c5X(lpu|GG9G?mRN$kBZ&Y0r=;)~B;CXHBes5j2HN z&A&$EecB+Qn2T_2Y=>Bu%pB~WNXuk;^ zX0vpAx~iGxhsvS2O`S*{d?4L^s0x5t{yX_cN8L0GXI6V=!-_Jq%VsmWyNQB+2Jv$0 z&Bv4^B9XHThuPH!uuL`zLIn(+l}Z=yCSljnbxrDpenP+2Sdvsk^d-%<6_ z;|rXo91GsdS{F1%d2v@4C>1mI8Db>GECYZ8oi65FuJ`&P~Y^hSHLPl^0 zr4(hRYSJExW5ydJaT4D2St+9&DmPLvP`R5LRps(l=*nq-EU|uL<47i@^d_sI=*F+E z-(H@K>cd0|s9Gvj6F<}%GDT_^UM#vs;@VD6(8R`@g5p(`aT^)ky4?4BRS88p2xc?D zl?vG_8MDXQ=WdsP)A*fsp<9QyDpehl-gE1K|0Pi(-3Sed+5cs0`rG-P{+TrN2^t|= z3Lb&=qz-A2)Fs@KC-r%HiAP1f=%#$t4jp`D%!@a>MO4Z!9y&e z8xQ}WZrkvAtip+Sul$NC=Z3$Oe*bHYAULCG3O`2B)}E`b?^E&IlTuD1k2Llmey4vX z{UM#Ph_YLlR}k*IGZDNG#0t^!OE!p>vwnd7orb1_SnY?#GbU2$d@cOIge~W|sNN^{ zm-qHilN(Mld4!yI6p(CORx}gEycw_|E=e1ROT{|;*MLfvyHu8ah%bw=XrvokZ?yqwrb-mo~J293rhq)qPP9CUJ7DIVv zrcwP8$qkTHr}2`C>tzqp*m*?glJSMlN@=4DjPMqXC2gJV7)p|v@Ywfi*%=;hxGA&U zhWmiAJ#r;9HpFu7K|7OjMy*c4==3`sijJa)L;3fM7FBPTzI(t&)5MeXpLb`Qe+FWv`VKM9q$noYk^xi*?sqoZ&P&xQA^2QuQ1ol78nxRyEYh_RKa) zaMU$)@$njW_bTSul7x$?=aBfyD3?iMWy(=mo-B!-*Qr^#=x9QBn8S$-D|5c#n!nQ9!b1tHf5bb5D2LGQF0@8R zW{@Cl(lb0X*@&!?TDs_i$B^P*@GnXAH5}`&|F+BI{F?lp)~eKM3ZnK3eBbVr*8?0R@H2| zd}i7xFVvcxNs(*^W}9@VH7`$IWblw`-^zeUd6ywGIkV7QV&C#I34&XWdI&`eWXjfv zJitpd9e%vOUM1%dR%H&C2>wj@GAcE^C(Wq4jpqeVoFP;_>l{m2?27?*f0HBht6cCwlfV7|F1dd8!v$7)iMhSDA(^OHd5cp6XU6!bo1 zRey-4@`_a1M=ee>lh&>F^7o}SRA4ZvMbW(UBD0lNFe0mYx9@#Z7cBs5Rko2h_Rs-A zxJ>^t?x>tB)vJ_4hRtgEYxJv@B)j=Tvf{u2FF}%zAmUXE7ov!lO$s zW{xK-z+D5SrxT$pHuu00FU)o)PMYkS5ise4bbI|1A|Lh_#8#NkFXEO?I``pc^ygHm zxg$e#FCI}W9Z*Ln7e*VEyzpN0Jc^|-+FjMUx5$YX|CalAIW){Zg^?2tuI~JH`RX@> zs-WqOdlid21JPlkABs(z)Z=DpN+BHS{mfh+O)ZSh=B(<)etRgYnYtF5qf+fYR8$HG z4$Cm+%5H=N-k0_juit)5HAX4yy4_wcFDM2*(1@!C=K)dP4T4Jw0pILJF{&FygmwE* z0W4O%Z7O}ceZ<4D?-%hsdQp1K`(=?>t!Ci+ORW~7Ms=-9AL&w~lHbK^bO8j$YIL_~ zr=k4u_<{Q5?6OCFAZ&le#^jjbHW@Wn(97^juQ;s>(X!44I4y3I=-twFns-ZA7e%LL zNW%Ltw;HZ=+Q-m8X!y4z%-^Kc#zx_~GQsp9m=fB@n7f|@=P`sKj$hOF+;T}FBq|(#G5=U;N3Zdu%p@mYlrkW%5K@Fsf3dsk+ZT(N|Jh4iW z%HnO{)gq8|yBDD*QBLTg-S%)I%tZ_l(*>^P1}GpEfji@FEpT>`EBWd6>&UFL1qf|l zt+dzfa@7Yj+jb^!&SJjWFDltqt#TcVs1m{0TQKg@0=yf}b{+vZ6fMtk?vmcO(jIWp zX^=GnB4_0s#IKyUqE1@zEcH;a$QRh-pQln*T3?rJDho{w;BdVHIC^NDmlM|S+85CR z9=~Gu?4Jwy80EgM1uRX$n3v`Wd+rb=X{EjI5~>UNnJz@xati5c#_xZ`^IIhUCL-II z&1iuyylJ<17&U9@7+7)!UE)czOoYd69^a#Cy@zx;D+wej_x=Nrp@r=L%31+y^|8Y~ zLpoP~+rl@mV)o6X$HZ;uLIq@xg&w8n=={?Dh0zMs(9~3W?{7ueu;imt?G+-pO60kV zbXc}A_a0=eh(pt;P89{H(>;<^+Sm3|06V*3cNv#Q@4+r@EMnR`)qV?wT^O!NWpyWx zMczy?^hQM1w-;h_GGujhmi;>1S|kxN&x*>)m*Os*rJMr_wJYE!S!5K*3Bq@~EV=+CRLj2o;@j0u>PL(}!vfP}ST`4Pk(x z4*?_o(J7)|WXD)szZ6Cv5;M$tlP00YN*g(Y)h4y#tV>}mLkYCjyZ{8vM|V(iFSq3C zc*)PBVpY$cCIy@z3e3~5G5la>xtx{ub~*S@0Y8!^LXfk|IT?OX9cv$lv#9K6r>eyz zoySOLb*5vpo$;UzMGq67suzupOC2TU5d8ZD|5Efnh(82?VkDq1?U4N-{8op?b2H)9 zh=iz^bULIxMOM^+DaJ#5AV-df4=KN-^c<tF7M3^%q@Nl*y_L%4;AJ<2!W9|5(uwv`ED5ZL z{wbSH2pBHIt9qJhYOijn{U%?+9IY9+4_T6#cXS;MI12Cn8oPNJq&3HJP za@C$=z%yXWetxVW6R9FAVRD)}4~y$Y8Ng{jOnC5x`$2=Gib;?Nr$)K)J!yAFaeK8= z)BYFpduEvVz3;G#uHw113l&kcRe}!p^moEwiN@56Mhx^jwA?3|n@Uo)n7KC~wx>iSLT?UuyqGnpqUj)vAoCc+^~3=F0Oa z$g|>ex=jLbKS9Gr@z|l^6Q!lSF_uu;ErHVCzNVpG0}6#19f@TxJ5t=vhgwAJA8LxU zl=h%0%5ISP&Fyy9uO-8FJA+@5i-GbUmR;ETQgk_>$dg}+e^17K_Bo>2y8?+nSdjCD zGlD+%;F(fNFJNE+PjX=!3q5z+gExo^R92(Zvb`_v1Wi@OBIVY7!f)vP&UEJ*g(@f= z#`GQ%7A)0H1N0)A+b}hbj<&o0d=Xlz*xU=`mgzA_dns^%a7`vn>vtYTtYY=~5q`?D zN8^pbHU%6#Rnsnms#eCCikBE9F?i)r<5{BRD;NvXfYcdr;zODtlBIqx`bvr>^6g?XOd#XcM7y|^|r@kiP9XLrAkGnX0>gHj4<`Ob^1b2Bfo`kxvKcXT&uhk#5{xE-fQ z$V%=W^6x1e);c{+Ac}{rGOGInPz-;EJNg>6VO|3B4E`0FTMF5DmeW)cFn(nR=Jn)X zD7UyGpQ&;mx;uHT073j62(sd00Zio|2$(M^lOM>EaTjbSW=CuxjLoeSF;m=8aAAnN01>Ki;tyunz%a zni>cVx_+;KvFL?m)`HEL4Ad>n0i$1TfIq_EH)m~5fMyk}l7}%4aQ?To)+7BT6;WMg9 z6-#NS^}KKV0J!Dgp;af-6q8kf7emV0e)1=fT5PT=3~%03@V0|CCqn`Dsn~ehNs%-U1K#bArimWl5 zV>YRWzj)YYBm8GU=HCl&zd#e0!&Y{HXIgf^`sMjSWAyjI`qCareC+uXn34ojH-$+& zrvHE``QKpbCYVwbrlbBdrtbd+Q?g*{p)jqa!~X+Kss9F3ieT!gFxC8LOualzx-)dE zON(>-XLrHWyJ*;!=@)W3BNN(5fhIe-z?yJAms<4VtkCQN^V0$&znK#Sd-O3H4-0QG zxMJ%3pp~Cp+0l!$DFQ}*Tm85mX(9jLmL{L?v)AApy7qQ&!|KlVkQdLC1FUM~+;Yzb z5sbvQlDL@Xp{bCd_=ekmr5vPN@S_q`B$^w;kPsPkTIWc>rII$l&dy5ZWDuES4TUej zp-8*nj_yppwv$j4eRBuJ6owBF-TH`xLau->lJ!g5i%j*Y$UIveJ!OAMw9sj0;8z@- z#R&i@1^4t2U!O_6JvfN=d9R`gqqqBtZrpT{h2d~DaJpSAuCG?jH8+#JKw>9W+Wk@y z;+$er9>eW%YwDbZVu<-QL_+~RM?hsgc9T6-Ly9?ce!!@R{VSn@Q#ps>cyfxCGz+Gx z(}X>H2!_*M>Y*^`;(n%)s6{5SFDD_6w1ZK;3UNxDL|Ky!6s2RBYj~1moEo|MGxAH8 zd2*M1ku^EB$SQ41_sT0Kc17)F^s|{*9*et+jo@}7Fsa4EzAD@7oUN9J=EW>a>x*K2 zv}LI@DPJs$vqF4NrLR@wZ=B)x@N*cq4^|9X6S8xA2CdNfTuu`(MmN{zcgiQOaysNw zVYtZ;PbbyqA1LN#^LL$F!0zG0AH3@>{J}_kG;tN~q$6kBh0J9+tDU>)w)l9(v)`Uy zJW%}N{E&{i>#_H3_6$5u8b0fG&m)l0{p)x+Za@EsA7hWyc^2Q6m}j=mBRzgdo(PE; z|DQ{^R^pZ70K>=kh$t~YO||>sLCOM)R2)Xto3APBs=Q$3K}_JCQ94e> zkWEk0#tm-XJe58=OA&RBAYz{eK;QilpeZiUAO)11serV8$P+)=i1<~Gc@kkzHU3r} ztRWA)K7Q7F}@%EH5mw9q#4cQLMOH)?i zo#FS7Cri)s$Z~x=%i1U`I2Dm*JTxoAu3M!%Yv-B-d9{Y$@CP!T9?$f&WcoRoL@&@F zbire11xWw1(Ij8mZX@=|qiG zhVqAq2>zZuXsN2H44O8f`jnW!AF{O18?hOY=Xi^Sc2ez6XdMa7AUQhp@;8AdLL_SK zMY_`q`3PSYnLD-3uzk{~!hCX{gIYsnuYfn)c21h3M?0rQ;%v5UTa3*R-LL6h-1E;= zB2NcZNSzBSGB=QVU_Gp~w{Df@)p5PcEsg$zums8MaZ<2iRpIRfZoS7;^T9gaai*Fz zdQ(MUI2D=^9#5Q76 zd836+`k$85ryu@D{uu%aDmX$_P|XOEe=7O^XZ&-@dt^U^e>TZD(@Hz43(`Rv=}+>{ zdi0Ufr>>H<7qlLvR?Qf5?6NI7*;A{(CEZo4igmWYCU!3D3XhcjLi5L;VFs5!w$#bv zcDq+~oIn2d&lrC&QfJ4z@W*_WxcevgL-fU!XnuOLy{@Ez{wj=@F`F{lA5;2)erm%J z>mujp-=g{{RWw4r>Tu?}x!-oPD2^fdC=RBZ?ZFEmG&&%^olztz#2S+N2pZ*ZotnJW zOPzfxsryAAM+c0G!KR4z`C6xjzVcwZN$M({`b)=4-S-TsZ|l?tV|c%n)IaLfwO@L$ z?UFiIr*6`vO@y?sNOoqD?AiOArpk)3zS3hQjCc6b?uI^$BF>KopO^99!gF0)P7`yN z$1sxhm-m}Ddlu8T+}bYTOPS|B7(cEx=YpAkri%Zf*J<50!hLKI;AO<_+QI8wM}; zw+*iw$d2jE;r5aI6w{+?hxOB&u;om~+&Fo8zTs2O1BTnYW_~T5p7P=Tbb%b(zDE0F zz@qb{D%#%7gH1XY=~@Y2x%GKd2%K2~ZL>JvRSdSOk6bgyXd>Squ*Rwy4GdVJ>lO$O zZl*2orS5jEB(E>`DWi6W{5~_|UT#mow_8@VRqD8VUDXz;A_I}9k7A?rs_@qv0)q*_ z48MLxI)~5~^?Wklcq{jkl5ppKqh=NbTKD#1)61TxtZ}`b3>l+70d(z9sek_~^<{o7 zpyQs$zw*?w+UBxRt=(VFPzPZqw%e_%-Bx>Q#=W#e zQ&opBg)vvQeA6O}&rfKP8o5A2QATBIe!+{XeXaN(R@G@#F1#m;TZF`3Sp&>6#Uko} zPa`51ta1gX>`)Va-~euEGkrSpv6BDZUQe1GRh_Ez`=^pp)hRqzaYWVjdMEc zu-iehx`MPkqwy2?zB$}dsr#XFFU*v|mwZkspfC2w-NkdaD>AAF?o;jh?QQ8CHpOM> zMONA$uSu5^Ps3X-ED1E*-2+vdI+=GH*}H#L6}QfkS6u;V9udV3j28#w9ahT!1kL4S+OQgvC>tExkkjZwFbE-126ZXVLl#|4r7$EyCRxg504 zLOwNAb$oLgoj*BfRrg?v4ZVMKFx?mTN2Pt9)a_I8QB}u8X{Q?5zzoIpMx+Xg+K)u9 z(t9%@xm)>pJWc26@bc5OZqjnaxe#M0C!2B(`&gB;^Fqpb0!-TPRsH<{=%l}$^SyN7 zKX_BY-!K&T+uV}N{$O4DWYw1az?b&6F1r@+2k~E7wc@>+?eIdJ3yc^S zu%e$Y{}WDd?m!MSf5!N?JjTDbQOtctO+CnTFUbV7y80-;DR)G9Z!7=0T(s3Kd^Z|f zDm&09yM)#3Jf!H2bG1_DvG5!o8$ZNs^iG~LTx*MSgu?FX_D5a5E#9cH5bpl()X0niPle1NGb-f7oGvOvj>K^$ z$zW8K7q)K*@44H!-!GbFJjt>C)$(<=P!N-^UEjG()Bd`)Oy}}hF}Lp8lX+EFQ8oOx z^7j84{>S{qCVEZxpDg9l_DcJSGOi6;d1EegOl$@Dis}dM9{a;dzU?-G`?UNvyzM)b|*t z9P?WRJGPzO%ECVf`-@h?PBxXuI`nBSAYvwZi+=O`$OMz!aEL#7yiwbxYvo#NIS)bC zezMYHm-$5$Y7a+PDmxfeA5CiRGi5z1J8XUQEK$R;R;bdtn+DlCu)IIb(!0Db&2%15 zw2AB#qe1eF#?G*F!j$)~wTgyqtlBHBGCQwouTA5lNK;KcC9_12p58F~EaTKox(&TZ?ri{Hwwp6F6Z>tYvaOY<9wcn95pvz@Q8I_wu)S+~$op z6u#qUgcPw*Y6X3M+}Xcs5@%#HzW?nB3QvH?iv?w4|9*nUDM4d2_?xUEV_|!PhtKs9 zV)m-4Z z3%kd7G)eI&Bf7ipur6H*%G^RRQK7FGS^Q&Uw7Q92cB^m!~k6d34 zX0K(noXY)mlji*?gAOfdi3_bSccW1|6VardZ&lZRy8Z3mOD5|a=(^hH754o0r@~G5 z=3Zjd4Ulx@QuX7>cq>WStuYHrnwwH9_YN=b6K<)f?0_%+Np+34+R*Pwe=`W*AAdRb zm#qTj;k-6)@73(2gugyMy!rT`@m~K63XJ!TVZI@yafN|9`Q9-cbFw+^1Z25&ypdGF3wkjYF2MP07xQ zHPOTbe+J5q(%?zC`^!FS|Fhd3TrlOQuO0|k$<+ZX*sXI)(=k@0o9|`8(mszyj!@IC zdQSX{|2Do5xH80zQhG^Y$XubfK12^Ij1rXQ6twoFP_vU18umfR82wpDF4dI-8;hc6 z7DZ>VeCj}<`CZ8B^E;s=G!HUsGN$lkQmUgChWG_IGxiuiU!b_41 z!>!4M(b@)517^h!1hC3jXU(o42UyV^Z8fyMWQn7XK@yW&3ZO0}To2N53H49?( zo{!jSlTh>Kq?{&YhXT=Yly3Hy!jnV8mX&R5UywjzLv(cN&qi^WA~8xtu^%u zt~%sk{S;c;nwrWB^Y?qGwl(!S{qneak^5mUH|l&!JeWtTJ)I{!qW}?+scn4hi6&4j z$h~%|?~KMflY-X871#pAMb3yLvc!z$zj!hlFYRWH;m%8P{aNteSDB6HA`t>B7;2l+ zG~0?~SBUf`S6adRw&A!%*sf|oF=l>l`cQWoh&)KR%BX#kFCH~bP;-n!&;a>%sIA0#!(1Q?q@1xG8UNi?%XHs&S?Ye_iI`k~X-e{BUcku79loDy?}z zCT_=^%sPC{mIt3k3GNp9(P+dbfh3=(@{AA5pCh)#G$|KG zk*lx~iHXkJbQtXqp?EgpzkB$Nx~YJBm`7WY%VuGcP=l)jG(Q&-A73!IZL}2}*c7PR zv;9n*isK5bhRJMaMnQgmXD{DqrSAix@N2$SmCKt1xfDK(W`&-JoP3O<5E;y`^Dt$X zG*osxtM6;9?0Atyt569&uBTN5nADkt15MmWvypOcAK#}-ITgAbx7kjlwQ;>_T@-Ms zjQJU?OiWpsfns!fR^(prN?RJW9f@sFEB1l5;qsKfN$sutHlRQxQ`dAULh_8zXf$4& zRA2>=l08VtAM{70q(*-n)eU;d*+I@)K3b8=duVr&34|oyilkOhH>9M%8kg6`^>zCQ z>=|<>0=i%Y6mX(Sk#+3kV<|o{dJTkD# z39{m+x`1entcn=cHtlmPPWiF{652`53*wpdnCMAiP}KxZdaoscn*zJrT!td_b9{k+ zU4b8aIpFnIxnVPG2c(eKiDAZj<1Id3=i+g!dNaellZpxar#5Ax2$2)u!JD zEaD#0#-_p>lPin-O`R+Pa_y7b4;eWTR%bI(HqmBWls$&_=#f6zPKvl;F>iKz|t?F~ONEi`|alLv?Rj+-F zy0;-5D|=4s0C8CI+y87;&sX1i8MR;Vt*Ya8g=LDuI8{AYC=~ZAFz)F)S-sw@Ui;&F zvgFpPK6^RKCjKFvUwzR(q-YkJnc%ak2dP(zo}vJk3!n@O8S;K1fIW=b@e1%;1&E#$ zLAI)Qs#omWi|Tcw_w_4Yt2(ldk$QKiPanIGbv;!Hw|zhf6I2P8e<>yOGU~Py^s}m$ ze8`s(>dOOe*>xYQFNS={R9~hqlssIV_O|*Gex5I~>y(%XLHn>coO1PuRXv-yrn7@y zh{t2B31fqd27}hsm6iKOmv={CQfK5L(JlO64?mqyfCDLNWg}`u#yrOTG9Q6zk--kE z^Vl(6MgBhUqbaW@Cb=I#qvi*w^3+y=RV|W5&`=bjpj`-B=F)u?(+MaJ-~rAZVAQok zFmcXVpKHAp&?7!XWA3dKiXWwh?_G<0NAMl#;hQJNKRYjzHcyVqcAnvhM)-46SNWOO z`ZXVO_-IvkFkKej)5oY46Kz#LtzP>Yb!p(Vs-Jluz)6CS9_w6WRX-xkaFNQ{E}WOA z9?Rr$h=9FJu~i)zM+rA&O2X|Fg%(l?hb!PUUrCAn@|&&drTWpR`#lS7tm^ZG1GXtP zIa2YzdQ93v>Zj`QN=cPlDCV7TwBI+l&1shBEmE7e`&-FIXQ{ zkGnSWXvz1z^q><~iQA-(GbQn;13djoo}{)DIYDf>^FC)r1gzf-8N{a&KB01&V8anI z23JNP!>Ahz^#}9Nl%~m%)iZl3ljrmUK(Uk4gQqxuGama%f1ptAVihmyxgMTB@H`d@ z7frbX_$XJ*s1R3xfI0@ra|Ij}y)|`$d`2shRXhQiEV8DFk2IpZr!}pThkxq_Jcu5M z`2k<^;`#w?NEnS$#2mfzDyI;|{QwucQ71~uYm1TA8!RNpx5`-55R`pz_1e9IajjrK+(l1;`f&CoTu|r!1uy?oT zjBF7_ z5AMM)0TjmBjRtZq;6?l0o_~-c#W3u{DfC{ zPVf_MRj)BWVG&}1pU``u>nA*y;3ur*o98D?R~WUQP^VDD{Dd>qYs^n5RmxQP2@=6i z@DqLwz63u(Yis2vysQ9Ye!_GG81oZ8QLiyS;dS*I^AqHDPtQ+CQl!NE1V`ynb`l9>Z34CQ?t@l+r%3PqYvw{$w5h5;#|v1ZztC3_68(k!iW7d!UznjvQ~rYX43xhho`F@Z{Dl_v zsQd-x8Myw!OC)Q5;c0nN{(@|k)&7Eb2ClzQtsa%XFhjm8f8lnOsQiT+BvJVb6XZ#1 ztNaB_qx0~#xXU0ngn5=XO`8iGhLa%wAl90)OZf}RI67bL>FiWo=KP(fxWB;pO(70& zGCz{@o5Ea+GrQ3IP+y6|IRQ#B4agAJOHS+h(Q9$WTp+f9iH56yP}ky28p%c8vaY@M zFC>*1i@CZ{ep0?Wzo)$az$TH|%SyP`Tn*9)N9nV5L|<~>yu7Q)ds($dFr^YI&=Z=B zXL;t9aXXpIXb=Oe#q#U)wH|VLhWQygDD;gqVevjS6*3>MW^2{OOh0;G&dKMT!_`Vj zB~@F_Ifo%>OUcQGK|(SKMh|}*_vM()j2BCqomBra2AKXfIJ)7pp6(4FC4_aQK8~#Z z(DOc@nx8=>p z-Qx71{hh;S1W2e$rSYrw)%lX(p}(qUQ$07S=MUAhED@>N_sIZ(S*M=o4wh$$+End3 z5a7AyJDwLj46*ZuP{jO3p5BwC9eMR--Rg^z>I?j^jtV3=FVO(rcu9pXI1Sbsp7i2INX(tXR!#c?X8QcC0ltMRKK$@QzJ~@cGC$>l4EEtK z<&KQZQ1iBvtp1IJJN>H%f3zT+kyeW&$<}`?(J=+2P+c_*?V9;H6gbLZbYTlIEbBFv{CV$wl^eg`V z!2j7C2qMK^beIElPD?=#fzh1^u_yP0wDjQ;JDk)Ktz zxfFjRcgL`O)0s0ua<*!oX(C_MKC$ea_9%Q)MNevR{VvwoMSPHWuklvVj-+9qaY`Qr zSs{P>TROhBZ^;*w1YYlU8(1EGKV`~JZnp_L*VPyMtuZf#xAq-=4mypC%0{=;qj+D( z{)zpt!m;aZ9g7Y z5A5mP6Eu7M-`mr?)&G?}y)%K(|D8QmoTQuzWlukK5&s)|`Z+R%yln&Wzp$sBE_i}H zed5}GYfshuaNLHCcnKSpoxpO5k4k>51x-#!#P| zP@npez=>3Yg!Lr+h^_gp29MdApg^#~W=PIR9YPP8-SSGaaYA{d^X86$&L&re)D(dBCienL## z&Kyk^-J)V>7qCiJ&Ka`OTAqv9nG2lnNloPK7=I8yVs>fMfmM!`%U0D5dMEhY}p4v44_P{VeMm{>K%Fbg6(idQt%yr+fb5e{ElH zfvWeqdIAfS+qVqP2sb6s9La&;;3og4u~F0zvS=20H*Rb*NM!w1?7q1lh;xs>oEy$K z{4&6471>7PcZ`7TW;;D#?&1bHLgBfCjK~}+k=wWQ;#@;d16x!4;YCTI8`p=#`*?@1 zL32-_`KwgU*>2vH9_(rF{y5lkhyR-ZCsJ@`f3_@_FzxsjGBv*+;227E=%iZLkchHc zCdp-w2YYV)`ap5WsCk=Iv%SHZlFWr7pT7o})Ar%eD^ve~XrCU;I$3{we42FopevmMf%G!jc#FPPsgH&A*@?r7q^d=E5# zogOr8sh@v+u;-rL9|d|YH9s#fzjux&LxX&nC!-Rlo67IDg{GV4P}jHOubJ(+eT^C! z9Xfpl(Bsz_iPHy2*7v~VlWcDSDgF@jB!{eN$SLr%TpqRZLL#;d=}wRpCQP<$^DxW<9VG4mp=`4NDZvBXfI| z_Rmc#rAbtmLn+NcW55)S0Z{J6dVfWMY$aYyLLl79{`?2emWxUAWvfy>6GqhPG8Ud} zWY3OKCmTqt5YLwyb${WRDMWV(+VIWC0y>webnz9QxmgFx^a?bIrb*kIJqmhm3sfCcM!X@wbd**pIn?T?8_j~_+{d^?P&YYP!bLPyM zGiT13fkj1!wx#s*Ydzb74GC-v$1>Fv7F zrqw(Q^ze`nS>vHPxenl;KqgR^=AGGG?EX+&^j9!qQ}W39mcCWrK zcL2>u-fB71kIzSM<$|PA|X+bns8eM#3|-4CY--O`6%6t zsv46u%Qm>ynO}2Z;7D)(ZGj_w{j)&6`W@*RAL@|IM^}`OhvpM@HPHDYURnqfj< zXiv3i_5#>j+QkB74O-wDz?k&6q1?*d75gLqqRXPDYBl2^_7Vmio;Q@Q34{I;e#)R1 z{hL8g#-M|Eg1UY09;lZ*?`~zcdItz#)S=&1wOjA0FLm6&UoW6TjIH&12Ib+n7N$=}9B*{-CqQl1jj|+TXK5kq(R>^-y?#fQUjKEvCu654B71Uhup zMgQPen$dz1asK3`ZPuF68NL59%tDZ5FsXund^xAc@cs@QCBr*n#0Q-S(X070I&O`v z8rEe0?e@(3KwIum`P)_7R3uTcU(@RX*SI755 z(%v(q7Z#)77Z_Z{AaCQ#Vvyo423Z|v5Hfh7FBG^ zCDIw!`=eKueB!Ooim%XI^1Pi&UY-jw%kNLr??ZsfOZDHHm!<{Rq91v^w2*jbaS{d4 zoj_-*7A&xle%hkX_&9ym#K|L*U)bE(dG!2AmHG1>WNfX_|17B+Q@0^be-Ci8>c1jh z|6B3;F+X*9V*i`@nJo3+hx*n0N52A{DgOCtXh|2VYG1tSu920ht${rn^%SW(7gcxB zQ(Md{`VLh&)<{=)HiOhx5(q3q<+9IyMC^DAXD4zc;J6}o!xg6nZzJCJ# z?XBJnDm0pX?)tf>9cXsed5j4oC9VP4_iCXP07o|70tCdIFNlMV8<2Pl66-5F*;pG} zqVx{~N& zB!?W8dWL;sG~)=gOR473s3_GqCl#eyCCE9cQmS!P!OG)sTLG2ouA|bzr<6{eG8WGd z*Qf6&g*Hw1aNhS%f`=F%Rm=r*F=NPAEtt<0sWE9y3ewd8l^WxYlp6go(&!+_6+{jO z>35hFC71|?@@htogT8|VZ>orrb=J7+YeEv=dCgzvAm z;_X0PWzFQInsLb@^uSEyBlNMV<9z_ny8%?M4?V}`x9J?` z%R!tjew$|Xmkf#iKKD=Q!4kU%rW+)Q&;OqMr^*Un<*w*a(1C(z=@|UA6)RP_EpIG2 z`MXzo6t4$9wH9s`f8G9S517Y$@L4U|<9@b74#qFAN~?qM>=&QtQF^+RuEgNk_c*Y; z@S`>_7oWmvcaYVdw5w9wncB0e0jO$?VbdiXzSi^&&U zLEps!27Wpdjh%#HSo^!acqBMwk=NObaFICwk2wNlwcr>OLUa!X^W1Gn2(%5gB>0|AI_Rflb@%VO3Y64>d`_XNV-~;Vy{pw@ z0lel?Kf`qu!D%|&_T8xz{c zW;-;j?pl!cxT=mk`MwR6S9SbSzVDasZSws)`Q9$yZ^$<{eOj>)0b#$LEj+3qVk`0_?zPyWC5(l)Jmay(8 zti}jy%;@cE)Z>u*<_$kSbM7ca5}$E%%j2M{Yx5dRtt}zR=0jqo4p`lKort=BD%GmLCh3%0W~G`56J1vGWoX{Y zawyDZ*;#amvh>W=Kg9bjukhLW{px(wujuGR8?~#q6YkIW$NV0pSL20Ji(EVS6LDtN z&sP2%7cb1GZh&zGFn%A212S*V7;a(P1Qb^n#f#B@clFwMr3+Lox1*M~0HamI zo8Ru-w*6AmV`o`4-OHLV<1Fk8P!#j4r@o^0W`6~k(x2}+mpb?{_2;X=(_QlWf1o)3 z2ZhDlfOCE-&Dfh!tyU_FvR75&#;%%i$`)9|`!nqQ)*We>3S+S(Ln(t&hl$Zse>m=J z>B$n4QMUg=_wW>7(_O#PVJHt3O$-+xx3@tNak@ zT_pw`{2-gDUHDuBI(3d&06)vJjQIU~V}wB#e~x^hCQ2enucG8t^=mBRJ>?S9{2H9? zOyJf_H|n4>)_b%+*J%OXaHUMV+{b#1`v1g9|Is7*gkyL_Khf01O4wtOo4`Hfp`Q0n zApsOd_pP{gcv#?SUJSoXgS>~$pMe;dFNqu``=K~DlzXi1TiWDl$E)s(&9=w*ud#I6 z1!q|>A1ClvoTIer<-kcW`LLH@f*X^_U6)7ls(nTS2r7q=I*40{T|}XQhZ|^n9rH9y z^eBxEDH=~kJ#cAx|0T_V*9UPPu{sIE&|oxcf!mSQMSg6Adq0MIKXy9*dwuNK`{0z- zMgz9OAbBr1vEZfKzTdy7IjVMaqP^1Ol&h3;MVjfCo?CeSgF`^dhknn?M>G&0U9N;s zMG(uR>LlQdJ(CuoOGBJxQ1$N(!TEn6gN}vt*yNOI8|gF)>3bd$q#;idk$wweR;^FU z9`QMrg2*bFshu)Yt`o zNEmJLW)KS;IFu=L;3$7Zjqg0p)a$n)K?_8uH>Pa>mz#8Kg1x+;G3^L{_94!-h_1jT zC9r=6z8i#@UVcKLW19cCnt@P_2ZIlV-kUe)X0C0*@T>Va~xMmgJ&IFSSu;;c-}Wo&A&vzf%5O{f25+1^a<{{i9` z4?E}0jObhQ`pi2nqOZuia9$rVQpA?h&K8-o73a^_mw$)bBO|MR3uaE`5NSI1aQpHyGt3 zjrG{zHtrDXTEnN4zP%nf17RUt9Dls(@<-e159rE6G(hAKpF%Wo3c7 zR8{M19^(rfo1>etKZ$?O`a&Etl@jw>99EWHk$}RS3xTcWYxEjQIO6U4YmD`Re<&X% z6N=3J*PA@jGz*Yiiw<})zHrtZXg2E2i;%*LfrcWr5O<113k@dSZtj z?>U_tVxL;oex6Y6qzkrMw)yO;4!MQwEkt_0bG@`NIreDeWy`WY^$OK&tlE6DUpIG_ z(ppcrNbKty5Duu8?u$XoD$BzsU90c^(!_rJ zQ5*5o>bln6L=!vh>A9P9x~V+WfEzS0a4=~HDbDcFiFam0u^Y~4{MnR-GjTX!G~!Gg z=F?t{Y4BKSbi(Kkb2wSXXyzG9B|zhLcTq;f-kG>kYt{6tQ|q&BcTXBB6j@^O{3^aa z4osGW5wS;nL0vO}S5=-xV zuCq5sdWqQ|b=dYXOD9<>Iw|t@VKI>U)nfFDA^~;>sJTnuJk6@vTE+Grv1(o^r7O`J z!guMHwu#nS!YXa}YQQUs(D08tna#C!|LC95q8kU4iw3;1us|Kg0DL!fe~}kX2j^fA z^s3G@*v$MhWr4!4{rrVVTuohkOea+F_%$WpecBHJOK+u&4b|Os5g=+Ya}kZAE&ebC z6`{lqlz0+|Yt<8REC!mNRAH4c=_SRBWjr~a@VzA-gDB`K~RL4j!e2j)d72?y5!{KR? z=QW}}W0$=5_7$#i0%GCgea3dYJBjDf^v=nn@n%8IL?l!EzO5~KuQ!*awJBcbx?!SxTAjA=f3sGr6l79kJZbhJ zp9>eAwIzuw$7--*_?i+>c#gfeI4NeRlZ1GRd{>} zANi$E7cn0n$$8jkyrUcM$+L$%kI=(YQhbK#mDow(Pu1t#P+i4k?7%v0(T(Yh>}dk0 ztu1z~8}B|;_O>sanPYtHajiEaAYH8|^t!syFOp_^i&)w6RXZ|Ef8EZUMeU1WqK zTW zAGYQ!WGr|3SD@w-S@R71UPWa_^EAhn#pO9Mlh{B@4h!e_j5@PH;RmXocn?{&@9*%3 zY9rY48A%y4^lyD-&FJFaF6Kp0%Qr*nqZ+vP=UONam6>Pt`T+hHc%~$iyZ$c@L!i_A{nV>K-*bT`tx|z87gxmh!$u&UovOJGrvPB2vrS)UosWm>G8}_R>hy8V%Y?eVi~vEWwWj9Pg(J0Qt_>~ z*qMxqM4!LGF@paTG{0<%LLCks*=NR~HUWyn0P{dA7<1x!5M!$!454JJtDPuJO*LsjM~2s(Qfl*coZt&+&>Vwj3w*k!*0TeF*pMHs^e z38d;@TxDmkv$BsvHtofdy=H=){Z}g+fd@8Php)6V4Q5t#)_(6)OylTBs3}6o6XH-a z0hKWK-W%D^Va`_7&hEnknzY$C-maGK&!O6 z-um9Jg=oV_-0#b~;XY#)-dvuV1^r-jH`M_9cVlmTwAUENU`Vzg{bKcS(IhPYA>OC0 z?=PB){q4u7vp8HdOWwMoJE5pBd~X+VB?pSb_g4bIYfQ_*ONkeSbFi`U|2g%=q0&M8zbv|t{fsI7=URrp~xz^8r&Ko74uIMFHDk+~!<{50l=66YLOeULi%epXJT8G)IMWS%ka<3SbgMoe{^#+_ zfe#}`W)A1b2}?qjmVnVub4$w}S_W>$eR;K$U*r1B8qfI=@0_jBY^fymutnYLLg+mcUu@ zn5SBg@nr(WuqQ-jrWDV7TLQuw(I|~M3<%o}L>O^|fUvy0vtbt`Vk63YNJ|bxi}O;- zaliLP8|QStW(Vh`hzCO(e6altjt}AUbmhOzn6P`WWaky)oE(3pD_>_xKcegk`h{>P zaX~D^&d7LM91&&Ts^Z;}%HQcum9Ie+s~Vl&zzDwralc77cgWD@gNQI{2>~}Dn*?O` zDnO=~Zvv((e@Bn}Wb=t``Oo#pPcj#D%jc4tSijTc&1GHnzuY4~Roycg$B+JOc2}%0 zwn65}s6zVBaUpG0FB#3ocwkVPp=cYSE2%J?S_bZEp+9wNxx%g)b*b$3Yl~`}-mT&DE|OAe6;tVFNx_?8l8PeFnT_KS}fr`q+ck4)|X; znIA#L>W;>T08Jd=b@(l4T!;4$B(ED9j}9Xm%AcsOu^^7d7k3{6jk}J420YB0%#x$f zpvzJs8Vo@ZG;l#bFO|hJNQr#*t3E`-iwuxp(abm+C(KAd!-D{#?eL_cbk~Ag!4Dbh z$$ex!2VC-+%=J*R5Tl9_L8>|LD6H0@Od?kQ#Baf>P^*4c^15NQgblqSx!9Uz50)6j;*x0a!hxfEE4{E5r4MfV~A)q z87F$F$T%I^-wNz-=%MHW)I<(OC91W_9Al$NN}3Z?$JiSIjG9{{#bQ-5u+wa0lH%qR zb9L8`B=h;MAIavET|ZLI-| z|C)b+C<8T;%Pu*p>lM4LuA2_3Pl&t_is+?I1e|~(Vu3dg>}%~bf51Q8^bzPna(}F5 z^ahdD?ftk8K7_93EmiLc!defn>aRc{E{b@+u(Dm#s%HXRl=4B^%Bz#;{G7Hk9lE!+ zV6CGSqS0|6&@f$Fv4^+IR}TYlpm91+_Oxn-mYur{4U|GtA|u$_ zyWU%ngam)>F=H{Iv|uX!9aAKqw2zLt1pkz^u3B~_xLA%n?emW@KMVuXt0T2%Dx~k* zppZ7YGlog&#EpP3lRehm`4?6n3SjsV(NAmQ{0f1%0_2^=d=c9yZ4gM6W{A9dsbf4;rVK12Nq^gE|02Dt<8;4y->+dZ^Y|+ zc1_Rvv=EUt9|LG*2Ub|d8y=0HT4d*``f|$S_1!i1==xw;=rpg8`mj`vJ!XAeEf+2X zZd0el>)JInp)M1*=Gp6n9HB>d|H@uxkVE+uq)u$=KR`iL=Wq(H^aiIRwwd%<^*5Z( zh%%@2s#Wb*0b9vb#aPbGdKrPa3uupQ3vUu8sCge_+nu5 znzV`%U4M&}0~h^Geu!U`;TmgEhM5N9B=a^FA`Zh<-KI8d)CB zONDo$!oZhXH3a6LT6K_8%YOlD%tnnV@fu^#+xqg`!;e1N$amz`XrZ%+8ayqARCbj5 z@w(D8T4;bIy{#LCCEWR&8_A*c$L4qz8}I4YsQVe>cY#{tS;AMc4pg;sM72;gkSgX8 z|Ke-@XQSHH|6`5s2AwX$9DwraJ_G>Eqo;=KQJ@A+vF` zpzoQ#!tjY)I=pP&=fWZw++H|EBBxv~bv=%{dJOEZSlIx&$j2*-y(Hs7RzB9a+Ew4@ zv-l>85tQmLMfI$1op4Us=k$|hxzHJzU59n}Qp8co>p#~c zJ~%S|;>z}pvW&^ydVGl9RlT&AAs|*!4&{TxuUaZJz z%*d^?vJk&fdAKoOd#EvQS-$rBru_6H{=P^;poA>#@E@dlay?$C_10Ck<9*Eqs02PC z|I$|M4b)fOyy0>D&RbSKHR8#w8>3#K-GHP>%^++;u&Cd!NsG6#;LdN7)fH8cBHwUvSAspsyUEt#r=J&+SU7-CnG!Z zl6tWtRKStoD7z4;BMn-8UJhtzf~jxs~@is^R*9 zx|LWR)U6dx9yQZ>e>*6Nx5=v?!)L(E2bp%h&XLc&5}%!~apZBM&xSskZ&tOd9sj+6 z6vDj$lsLcTZ0tIt8Miy@*XzGj^BeEy+A|zpMs}8(-`Ydx$G`^Y4l`0k{Hyc7MkIyt19s56{C_-^NKJ z(zdzEdj&pX^=x+ex%PXvqfrP$a={u-BHM0xI%|SvWtIz0 z@VHa+j$XErCDyaiLl#Jp%VX~Z%o_rD>163N78BtrSMhth1gkeLSnmW3UXe`U9@l~A zt079UUleI-J!8#=4G7kQfK+}}jQddaQne;g=Y2zg7W-quVoLt}|N0g5Xb<$O;}O0> zok;0dOTYeq(XXC?&8thl8jHGm=vTk^U+Y)r;5?627l>~4?N>^-+Msl+f0WizuWCVR z554M5NlMVGo&}rQI$I4+`zU9hHy_|U=~_Iv{@V8?{kQw6D=>Bc*ZV2iM`1tJrEklA ziu$(NPpNAUpvWZd$-4GamcHG!pOS49_fw*8A8SAL@AU2D35om=_>%l!?WRuWZt8TO zdmr>|wVP6CblE4o|O3i*QfgSFG^d&p|J@SC#U7GypiK12i1^*hKh-YaXY#41M|!~V zhSZn{*ev>d_B{y6Ax%xj?EuF$1biV8$7KrecpFeo86R-0WS1|Cw>w)weU2C#scx#O z?jMAj5Qo|Z6Fdg;VH=8PhG_Kp?of3K>M9#5Q$amT)SgW2L#+Z_^@7#tmsopH-4g_S zKd}$nU{XiB6Kp^ntrPH30(K+cG6ne8e^@pCRssH=2%aDB#ta2D!-l#=LDdrKjyRM< zL7ikn6)LERV3*j9W*EAG-JO588Xc?vs|66+V!X!L3b5vR3-Ct_Ho9>S0qH3c2dtAQ z&g{4TW&v(gfE5IMGLbNq3UIOw_>=-HBOuQR;x(2iz+KN-HC8CV+1*FZp`aeNp?E$C z1aBwQka%4xGBo>U8|oYdb!&Gb*XtF(K%4Y*VRg0})4)8l;@`Gr7zzT9eemV)|>)pcXNy3YmB zZv$SY0N*Fz^h7S$`m1>A-GWGA8fn%hXf*NrnPEVx`cAx$!Y6sd=g}vBq%Z8Ex7O(K;i2@+ z&-Xzw^ol#v9_+X1Xg&>3bm!v43JN2C&fph3yza@#GCyUHhrqWRF8oCR4^PUO1}A>; z7ZN9aEU8+E_gBHcc3Pqr7Y{o1@VH6dfF~!*$^AC(_tW=}qc2w;#7J>?obu%=#}A)z zW6rGN@X|^WBXZHZkj3J*3+pf1yESJ9?1{6H2WKu%_{N;sg+M5DJP^YB;OsBmxn}r~ z!z%q**1O^?E&g2NXJYX_s4aT<6KE37!#>wRyg`U&f#66lFo#WSi`UqRzyx%CD1s9P z;Q$#p8_8HI4>arho8Ss|7VvM0vIj6kUyL8)!;@!>r!V?ssp`tCK>Kl8buDsav+Zr& zaiC$_=rovcZ$#RGhQXkK7MzW5^d<*o9HJSbDYi=gD!8s?*Mb)>k9fv_CjOim&*$Ffyx@eY2tJsapwumzu;xg~8^7?n12c;X)`+q#{X(B?JmhKn+Mrv57~s7k)cU z?!VQ3*BW(i-@5quFbcAFx-o8K zblI>?olOq9!Nsn#>BBun7Cq!(OB&9AK)--xdm>aBWPh-b9fmKA-v6?Yx4 zyg(`!5zy2GUh9lK8$DmraCeO(wi8}l;v*P6sSAq_#~TMRk<)!ZVz|%sY4pg@O`UYk z^BISY^w^4c<=-IPtE%-FLrtuFop4Yq#Gkmoo@H=`JirCjeDBg5xD?E`PsOQt!$m`j zjSo1b`r{fwxh@vQxXxw>vm4>;<_#C*Gjo(LT!z_j4&q_A!Y|Qh>?ep;gF7rFXaq4A zr+q{YX+*q*54VAiH_pjvDiGUpQ-OWh0GcIIiu)g5xDfTi`_kA7$upRu3%zXg8Q*tK zL^K6|&5Xi*tJ8lQ(4j+D&33jK4k)&*^Jja*uRH=$f>tP=0^EJ!l$`PI-P)r2H)EUW zjE;A~9FAsi-L3VISiZx;4Ru=RnbSbEt}P@)#^6L@hl46dxIjEs8Q-(NfI^P)0u)k0 zj)r5RKa_~jX>};X9N*gGEC%qNy7g3eq)7T99YRs%G;_e0I&JgucnFb^&?wMgj4_;RJj;B>~>TAT{1A zal1?yABEx9r)+}5$8eJ-{)FX{_uGs+f*`!yU5LSJ8=+Ny0K#CcHTL4lYpt3gk-P`} zqVdJ_gvea#b$;KuUH0RM@4tf1pXGSGYt)_2z4%IxfAxxgrNzHe<6kN9ujKewlKu5_ z>|{^q%-u!P8_c?Q78`q=8=cK#{(vQ}-0h2;@#wXP(pg(PbJS;{{T0J;L~^qaxH%g= zqtnVxWZb4V(BzChjTvt=6h~4%3vKdho+x7QD0|kzu;&KevEN(cgx@awHt!M^$;Xo0 z_eB1l-t{|!zbPxMez#wa-|C?~fj9ZPe^>q%{yrdMB>5Zon+FiuilW}Ae>HyNxLbEN zi}^EQIG|sM3ro5;e7-k)Dtw6$xfR_qWD}g3{R4A1!A@S_KezId0{@`;wjuD@iKM{c zR&*ene{wfe&Ua4K9;|n5jD3pwSctzHP^xTWY+Hi7!;Ju5J~L3yxnO(*H*GB_ejmoc zx7v_q?2F#s*3wyQtdr>_2R==OveY6<)f+~rV=wUIeqZ>E73cQiZNGz1iWIz}s4r?P z9Ik6`_9|`)RWcd>jW>Qh15o+=4%U?okB#lt_e!P*qVSY1oPm->I5ux`;!J;<+Au4TZ@}^F_Kmke&@^yPCBVG$}d+9D|_2q7DIts)04&vSK zEA?<;J^}zHh~xe5!S^)iJcSADfvn1metK_CO}@yv{5KlOYXL|$f2^wga#$|;OtVTD|?>3ph^FRg zfFCr3Id1etzJ8$5k&e_5x6XPMoQ=})<68bOZW}DFYr(!$ylnK}VOCQi>B+ydtiL|~ zEp93l^$~xwRC=hEfAOD5+cHT-B8aI4KW?OUX5OlDsJ&rs@CWbJPj{FM31bn-7^i;Z z%MZ6z1oPHmB0xoopd0e49*R(0cbdmrP}EgSgm&0+dQClPQjcWwTcpPIF^L`Tg%m8j z>8yoqVU(g5CUqa6SN5p^N*o((0y#ERaUA*_Q2sT9mh0CEJLFBe*=ykMA8j}V>gUFmG7nt)C5A&D<`*Z%?cojFa=o= z(B!BKHc6A?ouJn}$V%O%Wc z5An~Q1`Ov^euEE7Oe%t63zb5@Kp_qhIm`SS_32`@GatbQzZU9_zYkR%e`@DhkQY#N zpjR|_jrZuj4EcpK_~?Po7IcAmsC7(1?uF8u*ZI6N?d|77iv)TQ%4yZvzA z&(|JoG%kp}R2$BpWF+CrVO!pzodeCwleGuyAQq5wza`hh$FUtqw1Xf@U_&z6F=0Hx z>`Ths#F_U{gHbZcydFui4-n}$1g-w4-I1jAuN18*e07%BsC@)An4<&`^kAJlA60Pq zGw^q8mexOiwl{qBP(W7_n$B!C9fli8=KeTeg^$D42Ib?8lHuldB%(h)0-EPJdBgLlXP+M;k^Lf$f{Fci>O#YW%z%3k>u+U*yJ|EIj>G zzb(b*GQ+Q?NZpZO3M-4{B;c6vsrW2Vm*t+FUN*oR&MG#x@eO^Dn&#z_np&BB;-iv~Gu%N#w)|!A6=kr_rkQbd}LSQ2Ql*-YdNA}4Oj}$C2>%01o(Q-0}vVihIp8}1v zYtVR;!z^vZ2^=bH;ipl#zcpt%)cFBu!@(=JaSn&xZHYnJK+Xns4z20$b(?r51L@j| zDWbl41NBbAo`JN;*eCN&ocB>p|KO&w&8SFLEiCuNubn^XYW>QIzT)CF=U+MD%IU?P zLS(}y7E*Bam6M7Kbl-GO@$2}1Vu60ON6kk#4tZUlz_%nrTe=sJzKDJR;o&~_FAiwI z%g|iaUG3)=7r~oAZ`XqGSVmVn1}-?+8@_X=H+$2S>J-mF zk5;(1@}8Wb4*xL7UaS&c*B8<0^uflE4D*C%;7*i7v$fDEs3iIfw0Ug>WK$D}6yixj zH03y31bCZpN`Z2Lw`V1AgDo$CU9W|6fU*|26HtP7=q7NKFo3Ni21ZFFtAB(v{{cV} z?ggz#zH-9Vg<2@0N@ht(qqa(=m%Yo8XPP;OIH8rPTIdA@OC1W+w%&Xazd@!uSM_HC zHjaaAhVW>fZM+I#I=lg{0qi;tEJuULVht$cH9n4=PEO47x}#c<)e;U0=sK`tov`Ag zNQ_+mWM%t_^FFM}0xy0*jL;5L;0=YjUlqR*XUErUb}U|Fvmwajb!~wU4cLx;GEgO< zNB-b*&jQ=^0sd7L7TcA8?PR|kXcxAt*y#)BgY8Pdc3a2iHv2M~wBTP^1x925M??$O z@@Jqu-G74AyT)cauX~^t>_8^=$l$ndCGfQoI$_3sMEZl}eo!oTy4UqFS#FbSAx%*yiKvT3--m@&$jJsc?mJVwPNtp6$fJ$QC{@sK}{vAErCB@cGWIWuYdmNQm=OV#@tOmY70{Tan4|5 zo>QvbT5pt$)cVUBYm}7O%dn-Gm_wktMf>;Tl&8Ei)A3u)Tdb!>dk=Yhv@qrhLmP_- zOWMS7jra+i4GiYN(i1z|p3j^W1HCX3i49X*aTO*+J^pW$NpUK`ZTURVlFw9uF(|r>v zniT(D9ygjq!X7_M9y2OI3G&!FS$7l2h+f1DoaAI z26PVz{a04dQ$o|;ew2i^xbc4`p?RR#O+sg&w+TW>3sNzG#QpaY`e|XjxP)HHpZ`um zGqRX`=*hS-C%sEXANhAO+WVa)qn}KW(Y${gMMu*-4LCpDp;l3^|pC1zWe80$N z<0$#;#i-dscntZ>jf#@b2ygqp$mc9nV>3U zuJW!q-%>lgk-M-_zG}b!daqk=^A}X+Qk^ol0^I440$?I%b!ZL~lBNQzx{1 zoW@~Su_$`|V>uv;?LMbE(}f@o5c zqc4AnFGFfU2G!^?!uGLY*G3(L#YSd4k8w?$=_Dt^ItE^xf!;eIas}(Jn{q zAP3_^5aFGsA|ES@>St4`-Y+-itT<`jj1qY#+13$>_(YOpeZKZ|Qs! zD1wGiN*kh6!OgN*#ooYqy7itScI0Gf1Y}fzlo^4xgIb8s2jYH`sWfEXE8j0r6&)YG zX(VqHXv250x&y@L-k}Af_#G+4R8P|uKMHVfWR4Tl!HYX!1MU5^#fy;^z=fxa|BesC z%&p_gtM%Jc64<9!B!I5}Yc}d!3uT&X&N}z5L^~6$5Mf!>H&l&{j-#Vsi>VJ3rNC7#|4;^Q){kDMg4x=b4MDVtO9lNVIkDR3kQ2#Ke+MacM&k%?Q?z; zE!`%gyQyp>>Xp&O{VyX6ohwQ1Vngn6QI@uDTRyDY_PF;aLLe(6mdhGs*zbf1+ZuLE zl!oZ9z@}>0S3oRwP1(dx+~<**q}ODU`cAKVUD+NJcOG>@gczGKlsKH?Dx6RPn;dDw z41BBBA^Z1S^_y%J=-8$#7^`G2b*CB}~KWZLP%v=~Q8Z?GBZhx;aG>Vp;7A_i& z*>G|sA1&q5f)lgfz+wos0VRSU&Vjt~kh^baH?PK+n; z+Z&!+5}rRecT@CZ4b~fREm(~7s`*k*O>h77rh-{W1oUf__|sG%vcTI^Fk4cAZGQ^I zvhx!JA|whkL6D|`EPgcw$Orr{em`oo07nh6jkP$YIdMQQh|_|p%=a1vp4bDBW741N z)&|yhCc4j9{R@LpEDs$k2+N{ZAEB2P`WvbWUr`a-071}>{y&D_uxlcc6(4YsaEB*O z3vI%-F8P+(c3%|5&-R9PRosEYU|27Z=j7T$A0B(Wyd!SO63DX6f%#r10sVL%ZCAyW z;p4HtGFsp;ydVRYO&g}M)3qDdYFp>i~lK#}_avV1#3@2N(hO}!SNg4D<&J8Wpg%8d7+grNLFL20+p8R}L zc*-;w@?jY*8|Y0gnw=1@-Bni*Lj@K7wUajWtZx!RgRp%)*lmvdjJ&*Gx*hFh_j#B_ zG=KVawm-)MWX0>eF5Z+&IxB0`bvQU6tJRvH?&*d50CuqKnAM#W0v6)u`4{blYI z;VFagA{i%a@7%ho4w{oj)>q=qr9$vUxbmkO%CU`~`EnG}Z82A6C~C>{|L*TAzqnllxzbuR%GjT5OJr zdTh;W%tw3*wr*jO;~)*_m4L93EXS-^2&1>5LF)9sX2X%}&AZS$YL^_gr(i9PElpT^ z#XgURun{Zoi#)@zx<=hcmL7g#Iex`_rL{P|M|CS8RE)KHIK*VAnLJqqGeBLNm=xFn z7eU&&0|yV`ep{dxIEZ+}EAW8@`Uc*@9^|^FhjBMF(l(U+je7RleZoZkpXuR;Bz;ra z12|)c_N)cTE&7PRv$5jvL(5p$xXs~p?L6>lv2jiMiFL8bdieSZ3m@0I;&7-7D2gM_ zbRLupKk(^^NAd5mfN?e|o$0~tm1vhN^8JgcjyEwvAncy#G+av&M=i7r5DGPEm6Js+ zoDv`i0RjBqs00w1;#56wFXVe>bUk!&3-<)?hc3+EM8Pq$Dvtd{#wl>G2WLMZ2lYTm zGwnMJE%xp>0H6a)v)JZ=ZC|FtRavn82hK}v3MzV9gfw49hZ0(hpYda0MSt|VqWJWp zEgl&oqL~HF&rqrx1Br|Y<4*QAjB*WtsUBYkUFqlKxI2Ic*Un4Bb198a2=~G0_YY6R z!K;6xVrGEWVJ8Ao1=$wqeM1aAAiY@y?ah`hB62TWfKB~YXPprscVKD6>LP z1C5nE8hc;%VQ>|ji%fW{ZjB6ZME?v@5SN!#nF4evR#RF_85tYhB|(up+i1x}+wWoX zupr&|$Y?a`T}@usUa#|tbgy%6mVp~>3T9LLyeWJ<Y}_yD__XUx$2)(Du7m>a zab4(h&P~Vv;;x#Go7Vj!^v0ANm^k>bh>EF=`=xR$>lDXnA;ds%e?O>eOC5)kwmQ(< zc;}($1hfOJo%7Mm{4DtT8p$5lVgLQy9~W2*|2H*ET9CF=Zo;+DaC|it&~wsZ&cL_m z1!~O^ntzPR5}o@6>@7~L^sxjcKK(z*I{nqtod852+qoI3Kc5eiSvf={0dUhH3GcwV8eL#0jLw> zT?d9W_?+Mu5*Mccf5QdnXc8^a5tv^3!;hkGcrLs^Fr&h1&G6q4z5-7s`18Z_herln z=5C(zGhDRfzu9N}c^T_5wkm-TJqM1Wp74cg_k^(x)tPfavMzlKM zc3u$~H3~a*OqMKe*Q0MV%SOEgG=YZ+=Jph9yg0CA<*WohkLXMrNxEVr$R`+IWsu}S zbHtw;yRV3(j6!|HDhrjyURC@79K)k&(&-D_*+ghp*&o8AqmO=TZR zJ@&`wsXw-KqKhk`W50=^;|jtqJ`;=USHjP+XDLRXwU%{a5CTN(%O1O3p(B`Xe$`#F zB`=#3zl4UOFs#GUr3IIuw<6i9NRK^w5wPk@@5{VRRZQT2O}Yp(Y&`vA zair-z@b&CdD48w-rf}cD^VQKJ$bj5U-UIt$r(r(=TvsfQN*zoA&Pe>#F3L`|FHre=kOQGEew5;LHiVN@OkZ1|-YJ5r;c{_rfv`AHL( zwgPX^Dj+ov6UP7X=t3y{v9PR@YFuCJF@o4nJ_awj1eHbH_y2~C4*B^<8Z4_8$lz+B zGE5Rr_?NKF+PK}$}8nHOzO&|flf_#$Ix=Ao(5+JCR#T@B5f`pX}Vt-q{AMMvo`=1Icp z(C$6qfq2SC3!M%51|Qw%2hf|;=!QF=BW1nrZl+Awyqnna3C>Rw_ zI;twbh(Og;17iLLfWnVBrgk>a`sDsd3tS?pl_&%crpuu!z?lKVR|8kGiKFLy7rxLu z5fC8F{--g|MX3jQzyAhjWZRG-OdUTF>RJnq^`%cSzDEH4WZOkx)ONenL^{oSN0={CvfJ;K}qU@aH`rS!5pltJm|M@EGav#vOq9X{4Yl{uF#(mfp zJT#Sgh3;Oj1$v>9z;0|9cta-qt!B3QoEtr(2V7jX#WVWWi#y9U;p{dqCx7(CW$W>E zPmVKx^xe*~*RjAID#it9Nw~Z>DRz_48CN_ejV?l%*+$fbAIYPOlC=;QXWl_Nx(H7O zy{&$vjxI{oLcF9CIccMd(zFnf#gAU2i+X9HH}M0Z0Z>O8AeoXz_bT)I+?{jp0DyCJ zk<n5vrx& zf)KN3rN^?Q8;6H<~2A|DS*5wA&{Exkn z%!yr`rmckJsY@yicqXO8z+Yds8?T3Wa?ZrlAP{dm(e2UzV(J`P=#C8aeHy;AdaLiD z_&(42J{8~dtnb12&bPi#!gr1JJqX{;*7rbsKWcsB62Q<7>-#u-pMt9k*)FbE30-1+ z_rrIAg+nI3e`%%n#&;FI*~2<$Q_C=T_>l}Lo8IK0zqr>pz9~ONzChAdfLjKW%^)m8 zcttNkQ>FI0Dx9@Slfl-;H4uf~FbLp!ukuWX1GfzUtpwV^UPusPb0x439888u$?68t zeNGZnv>=}4iudOyNlev(c*jc;*#6DVZkCn(_%a+7UEy!H9&T;(?0D*&jwcr*D zk^?_bAaP+mp8gU@az+&2Ye*a3VAor2B-4!zuJz!gN$|m{^B652SF={LEDf?mTZv0o zoppuACmz?wTFre((^ldc9VaXjF;`Tpxm!Wqm~$LUe(iB>(`rgp+O0VQSn@l(jiuFG zZKn-n+HOg^)J_}ZtiwZHx8^(|$!FQgCt1nMBst4Y9&9B)Ey?XT-3FSs=A3FJzbMH& z?Bt%~$dC5IocGAW5)+xV5jul4*&L-VMt13K`u1jhf* zpYhd=vQjUF(tW(P((j9UB9rmHUrIU9n&iV-P@S{bU03#r?ncN9figbW3S7EtKEZo>kf~xU2pxy zFk7Q|(-LFRB||VVA_JVokpT~QYLYxPmxDTYCzY9zE8q{+1`qHDTepQ8wcr@EChKEM zG}KtuLD_sZl8i5OxU7~2ZuO@-%T95Bq6Hrnw5G8SCKqUt``XIER{*0#`)j)gPu4)JB zhMrJYSx_m7P>ieZ*5U{YDm4*mU{5ICW6T!Q5~22j54+X16$ymul?cWCL^mkfVF;C; z2=#PNs0S>lj6|pfJ)v&1pn4}l(Xi01MS7UC#XgBpj6LrL#d8@#WhO$=uHOxcaWjPK zn+Wv{61ze1T!2vh5~1pPLcM^5LU>$fDTutt5iQ1x6QHZml&z33UITCWCMYCjrLQs3 zyq8ds)cyGi4J0L^F&)^&(GZd7G@~$B+x4OsJ?cf6GZHD=9Of|8y@svGI0`EI_@x!YwN0%x72q>7MG)9_+Dd%`7X-X%|oR+3i2Q!nPL7Z0TK$vQIMY! zk{M=20wna4qaYU&k{RZe36M}FkAmdu46iZ6%t?UkbqvUh2+0hy0|#Grk7&v3*>_$X z^cpkF<^)Kn9!Ej01ub7=hWS@O%4NdTplpq*#no(lV!UJiB>^?43P)A5lhrW8oSx7i zrr%MJj8WvgbeI>hL5_MXA`Yo$ZbBpIKw?peG!&&6clLC?##}SW1{af07%Mf*_078R zk^DA!AJl4TXauGgU!HN8@1w~zg62AYNxxqs8j{BAN7e{^pJAHh?!g92f~Cv{m?pWO zGEGKoA=8A;O-vKcxP@tw`wG*92c|Ghav46dM!2$oX~K29A!ChvozFBWQI51iJWj;- zOIFLYqYYQ4hMI*b1eJ>DCaSv91i7Lr=L7Gm=~wtAXg|v@LF`F>3EB_wOCiB8L9vQo zRISZ&e#yMNjbB2-nfwxR{Q_U2A7HMI!;1>-+`a{A=hB7lx-{#Z*&((WsCI9r!Fp0d z``1Lc(5Lw#)86d;8f9PZewe1PEA+TGYxgmVj3;4JJ?^!5pKIpc(m?Q~*MS*yj;cfa z3l%Pfb{G#JeeRDD4~-9P;_Fgq>htpoQ{ zeM5Z?5Zj5mg8a>TixK$|JlU>~JyzYY>MMIO4zwS6Qg54iDf)nYvTtTX=~(BhRYVrg zv*yJ?-vKD_gHk8eB;u*N+x&SRSZ%wN^}ii2dp}Vy+N66u&_UUy7{o$sJ z{Rxdkl2wO)0t&;PBh*m{2#M5v0a%wj5Fa5jKRWL}ErF1n0a8GYdgJyj+YcwPALamX zp=GC8YkY(r>Bh(Ad?ez0VKV%c#h5fvTe%>K*5YB{$T!#>nNeg5s+QiFn-CF@hF~ZC zb)bV)X4>z2>#t=2&U~9=qWpGr_fJ|dfJE=i-P+0rm-D1fTlxHQ(p@*c(_6nP%-B(A ze5SiT(B1E9k>|m#-mrJLFFYd)tWZ1h1n^DdW~|(^h8NZh$YdVW>1DZ050_+h<>mDD zgqMv%vd7rsacyrstVetU_IiwsMh#PSyb7nSTt=qURxaoEw9xpx5PG+3m)^R)Fr&p2 znS^jt_rLBfQSFzo{hIFWXZE(*uT|}P6WSk;;R)Bq+ixk1Ogek7-g*d41a>B)C(P1T z^5OG-+R}?aPi%Yf%rH9v-5;+Kc``Qm(7RIAXfZnNMW+jDj&9Uz<$)k*RJtdf-k=A} zeytrqn~jw!>Tw8v4-<#PB6-Ho%v~GOsXC$6*ZNnM@9gT;+5h zC`)&5)b2Y4cv}r>D`jxpJGJ{Jpn5)TsDXt79hk8LQJB=`l+{+gNV5T`jorHL+SmHE zp0N{j)*{=;M(D9OJnN{j_S9fBn5nH;-gB(=nsa)Gms_NEnILk+chO$e=|W>ipuMlQ z^da^%U_yDCodq6f-5~>)0iL}IN|jaWIg zHF?^FC!PB0t?g@yEiXq;hU|W#He~eV�L-3d?Qr(20RE3 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%0DCW^$2)xU&2)?O{L+cws$b#G29rVo^6}tj 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 z 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

MdN4yR3)wpZh&)84YJt9HA%2|?nL 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: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 z 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Ñ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

FYZz9iig;;$m@tO>(Zdq2pk0 zlw~^5Qn2c-7$-g__UYmD{3AXgJ}VZ93sxN#CyGltK6RvtWiOA3W1hEcmGn^JXmRXS zbz=4^rg)Tif|w^xh}g}J1Qr6tjpDK5+wroVG4Wb)WIRXws-vgFAl}6u6E6`@6syFW zi~aN7h+m1n3*Ml1Visvf=j|`F?jM>dW@_%-(Ve3@Cv=YOoU*zn^BX+bmbyL9?p)9r zyn0(_PG?eQ6Fsuiz0(U&0iC{`-i#wbTRTymKAlH`vH&+2MEZ(cc6T0JeQ5QX)U~R8 z|IH8D=p&tnJKI+NXEfT#yBc>*biMOh=gQ*ivaPZqUF1#@C_f5Dt8_44U6Y`ejVkJu zF0mU{lq3Bl!$^ioYo+E+zKctEbmY)=6T0FhhE9E_ursWHoG`NMuH=nmUQ`S3h=ZTx zfyA-PMHYq4Y+5U^{@QI41WJ!MjF3c1?n@#h`Sxg8N9R<@d9SOIN3tSGqU@*CUm7dB zESt2JA?u0QlHlDnD6q2TkW^Uzp!rVIVwq6ZD4io)En6+kmhM`MPe5c5s`XW4We*nS zNzZ#FO1^b2myDK-DovK~I!8!fOYceNNwt!E+1{nwxCyc?EuK3FJ4V00yY_>$UQ#DX zls=`Wq9)3ylA+jG)W|ujWIsEH$f#b{Se|exzmp`HC4DPRU&D~~>sr)h?UCx$*75sa zQo*{SZkn^UX_#<_3@00!cPimW!q~125{kq}k}Ufw`BY2=F+s1SJ0xLkV#$J3FOXf81$7;g6&u5PtTrO0WJy!!C~57QyV5=n?SY4>k{j+{ zaBn5YB$4t|lvHw7dR=-=x<@)rvQ1Je3zlJ}An+9>lA)ve@$bp(y1vQ$WM31uLb;Ml z(x`+1U6BAbO02PI+a=YV)shrRi1dmyL-MrKReD-BsOv+*h%TelcdfP6yJcyTt!uT? zhn*^1x^%wmmCJZcl7t4H?kb6!l$bE8Yu6e?Hif%3x<~d|Ru1T|t4DUFubCwEmRV;e ziz464`gUE0Gwo*;dpmWgrCTI!sClyKfBGEEnxqTYMRX_aK??+Ec)v>C(uADA`^ay3_i8idIkP+Mn=2_H{KG*e1$0Z7uDw%Kea8*Igbm zB(epvF_PVdJrNlaom86;(KS;#5vNU9*p*2SdQs# z>HgN$+kL)!to&`)r0!>_Gu3nC_^z|v-@Bw;hr6TJ+sm(aUF(W{aetjv^QrZN<(%%9 z-41|1N`AV_lQl_xvTIM*BG$34Dc#KOaq{IrqM>_a_xr8~T{pXL0RLPQ7s$_cUF~vO zE9km6FOS;WCG0-leY*Q<*PE`kZg%&IZfv)ke6)OL*UIj9plzZq2l*KJnRSo4&vh+d zf2#Xbmv9|Q9^2j7{k8i;*U9d~F*{;iCC|DtfEQ8SU%EdNh3kgOAFp2^7j+Nl=62m* z7rs6S(5`YT79fA!b#CcX)iU`Kd6V9{su9{oa5`N&PUcO|a<-lX`K#n}MV9kgfayE7 zp*G47xLD6fkPEk=QUIO`@N9XOTqO@M?o#B*dy1*@bqe0>nI2sERK@tptx25Cuz9Ck z5=`#ctN8jlPO%{dmY#VkEUI?j^MI z2nsUL7RBpL`lO(eKPb$KFAAfg8&DdM_9{$@pGm(JUv2PH(LcEW>Ia|*DuxOn0)&CE z5E>#u6;K&e4kh~GAtF?-tbu4yEd(z&x7jfQVGC)R125HN? zAv3fvSqteQ9VCZ#rl=tVGC?Xx0d+xA2!bR~AnpV-2Y#es$bAh)lcYo=|H`2&`8yI)dba5B_A5Cie~<;a#f8}IjEdeE-HPp zvx*EksvJ^Ks#yT+RS~6UQf8|>RVPzCR9{Oekelkb(>S!ds@usO9g^Gx)j)o#QfLV} zCB;j{hP+jCROkkqY6-+19G!e zb5;G4`zwbj2Pg+BZz$uSvC6-cqm_G8?n0B4la+~nQNAwhBhh_ zm1~vjlyj4JL93M)mFJZ?%2UcM%H7K2$^zvDU70IU|v9d-< zR<-)KP!e<>N`+#fJZL|(4SE2DMN0UW@gUYaG)!ep7peA1&fR@%CI!NuOUZP&CUZf6JFH?uAkD#)NA?lm# z2^*HG;Z$Gs3U#Eq-b1RY_mHTT1AMi5rFz7Mjp|kEIQ3dJn2pA+QIFr?q+W-5hZO?( zD0Kp`UIDDfs9n_2>WG4M8$vAW)iE1ldy~~k>N)BZb*g&(JZJSnb)q^=ovwybfwo!J zn*%b`nd%6&A=ODONL{LqSH}YWNWjlhFIE3s_e_kFs%lk(im7T;)v36uL28bw zMMYMzRLv?u>Vyq{tJ_qqsDsdX##MdWQN~*ssRz>aFTM>fP$c z>icSY&sm;*=Pb0^v+6TytQxI8s6L>+t-hu{s$p%op&_eD>MNQ+4FTZMnmd}W+HY!i z%~;J@%~4H)=7|PTU(WN?eO_};Q;n@w|Fv;9DEYpj z(nQ$6QkQAGH5#?2X7|RcnljB-HChu7Y8}y>(md7N+W1&grCHd~s99s*ck=~VL(`PK-wUD}mt+qG$FyS0b3hqdl$m$iF9 z2?R>^YY%9TYWHdnYA2-~(;nBRYR_rUYR_m-YforTYGe*u0_+D+{h?KSNU?RxE1?IrD-jhD4Mwby~I+uB>&G1|M@zk$R*+B@2Z+992! z&8p2W&CSdQY1fSRwU4xhjoY=4wWqXCv<}*STI0su+I!j~+I?EChNt0cIyGXARAbn< z(&ptS&1|i9;~XHBrhTXRuF2MZ(R|hX(7>7(noR9C&CiXKw7)dNwIj5#+F{zE+QHg^ zz{_dciNMbpS{LA%yLP75S!<{D)Y=2Dg0yqB!CG%^h&E80p$*qA(}rpzv@zPX+Pt)q zv2ckH^tHM}I+nIs3u|L_XLK`B{VJn$=XKL`e!6sBf)1rSwIMuxua2!9rn{v3 zQhAy%P;rULD&0KtW)rkFG=8rX8)bjvCYC z^=S)qYVA?oCfx|2b%IWn7NjH8C+P<07K1wBI+?IZJ6yM3SEuD@<=W@knlwh5wUwZ? zx?r7)Zl=jqAEYnW#naKciTaPa@p^xKHOhLbov)i2Y>gGG({-k6bXr}2evV!UupuDr z)QNN}^po|Ubd@@bF2k%Dbn(qR*#3$jH-Q(;tnn?q_b#VCr?Hn?YKV zf!DX{S^DaXMt!vSzJ9IV{&}Xp+UdyaDE%e<22kfH*aIc$Yiq{Yt$(p0xBz|zXJ_Kz61W(?4d=m? za9$<`HtO@?$1ooL7cPSt#w%f4;lOMmoSVsqIWP@o!4$X#7QjTf8g7Ie;ClFerX|xM zdtP=E{1j%wT=3TpyE(SOJh&OA!&NXF9s;Z};1xz*#KJf#JQ`Re!(KpNEnEj%_Yz%J zT6awMWyNQ&&fX4-;5Tq5{1WbgKf&)|6|97fumxV$X9YIEui&NGFW|aN6KtLDB+Bg! zV)!%s7S_TaVFZ@Jy>JKYm_>q5!Wwu))2qy}$k4_8kYUI;WH|D#K@E>b{z3|2819Bg zBH#bm-vjKAKz3zMK+a^z;X%kiWFoRG^S-TJLy_JL30Pm6vicib1+;a+Ly!T;Pk34O z7kCunjTFIlNP@SYaWdk8xFgfErLZ$H39(0b{zfV?Nw5nt9hrqV zAhlsD7e|7BbvO;w9AxxCa^)A{AF#zZ6LCXkBllo`Bt3JkP0G_a7zsn>BYOA&9KJXh z`3;9>FGKlzSdGLWYmjKf%@B(` zFm6QBkY8{Fl7yrq8<1Vb-|#$SJ(7r|AlAE14mrMqW0s~O>yRbL&#Ylcs4*Ea!`aAI z1OXH}D-Kb>AK)zHE1ZL5AY+hxcpEY%OA4RK&O~x;{cOp!zCWWu*)m}Bde&}a7qa6| zi32FviFjrTVF=!XJjr|kzt8*vryI8;YeCERWm(@DYaS2sGWuS`6*-a3{O@yx48ymi zJ>QSC!21xlqD{z^Fn2?r^lErBqBWGl2atnEK-?-(B(eoTA<3X_rQvtsOyFA-BF^a4 zgU?^ae4|va*30$XdWBx5|E&L}H|t^jc*AqOQ6FLas!uk4)DJYE48sgAhH%3u!$gBa z=EARF#u>&M250Vu7c%V(MaI#Y*#=ibe}l7OkYSRcpCQOlk?Cm6F|0St zH&{O-nTENB1j9l@pkbpSA~QMr1iam_!w_azWC%4Zv%ZsXyusg)4n9{YhGc`AW0b+i zu+p$RbA=(s;FXzcSYYtX41^CF@P-1zQNwe?n5^k=nc=lTWH1^A!Z!>-@C8GYfn-1% zFvdjV1H)|t-+(jxYxroqYrq*#8J=V=g^w8?8KxV{4TlY-hQ4R4HJ&q!gt3OxhGN6} z%w_O++h?N3pfCg)-x@f^jal7By5WKGjR7$@tbz?u#$JQPP?L#d{WR7Z)P_z&tKpNu z1)h@a3O+}#3`_&dpf#8b?tMFnSq}!&9@K7{?l2 zj0x~!<1pjWtX;;TMtkEd;{oFr!(8Ju<0j(@<8q_ic+j}km~Gr{Jeidbrx?qO>Bim0 z^TrtCStD#LG`hi;jC^B7R;BS@<0IoC_$*wVcSw7Y=~^;Okjl@FI9E zoCR-$_rQB$vt68n^(HiHehB2@b`g1f_+i9?JV$zv7s!=OuaK9>C6M+bd_vwM1)JU= zcQ(C4ZUgv$d_=w=UpKkFxCOWaO#2+H_fPdV4J+wqYAN}K{6q$thM0aKIgZ0kqfKK>qfEn0f0-zNcZ&Xy_7?fHXrgJ7X`E@OX^Ls8={GXjG|kkD>~kmr zIv>va&zY3}&AwkMt!3TFbkhXWSW~`shUo`#8aa!cLoOnhfyY;nxY91<)}{i41H8S1 z+(hmo_mJxdjra(841C5S8#@pLhg2XEq!cMe3XyWe>jh~O8Nnk0q#ns}tU+jq`wI|~ zi!hN|M33+h$|e?~1D>+H%)G)%GzAl#im@>Fw?)L!zPMppDEEa z7?+x}A?K8dgIQ@x0C@t?UH3G(}*B{&rx5Bi^ z6ajc!0PmjbG^|U`T%aS>^05*JOQVRZE^*sM?K3;^qguF%?5N+yT|`M z0pC;1GZ{@Uwhw#tcGj1dbtbh5GA)^}GHvtrUAFtxi7tNejMt(Z>Z>L5#U_F2){d4P z4zI}-H&gzBnC|T2eXx)ZeC`-q_EDWSEWXp`by9XoZe`ocrRLp-* z?)Oo#f6no9JXV`I9`WX6^Iivc_YLM$^BQxK4PR?!M`!&vG9uGV3MaC2&0dyG<{g{& zn73`-v)K&N9U!eYM+mNLp3-|70M&fMeBJ!Kf@Q8V*O+-LF#yo!d``Q0ahl4kHeWO6 zo9~$Sn|H?gh;Eyg7C%jd%>=W_Y&QR%V=+HB_W(H(n4yr(FU(I9IcA>K+Gai|6__Pv zg;`_M^Vq(EL!v;QlTX!x4@DN z;21yOQe-)4DY2A-(gX|Iav`^S>!jCt7L298Wq@U%WvFGaWr$^1?(`QUEaNPjEfXxG zE#obJS;kn#TK432_e`}+0UiZf9Dt8L7C+11mcy19!HbZMyc&m$6xM}+BNmh z)IO=X^!#s|^O`<2KGcN&ZFE;t_jEkn@odLysn=6qugJ0dM(SqXr`}Axl6pJ!R_dM9 zlO6A-oKN!4?0Awo)M4*5 z(lOjI$}!B*$S}gO^XeGKXh#pnq$iPBGuAQ6ChwFV6YARI9Oo~dx!A$c2$|h6(J|i9 z!7tZLz1jjVTB*$NlDUO+r>5dtWSx9C(c3gXTv7MuzBQ-UjL+qH0`^Vz`bI70K zztm@`PdnCfyhzR4sj$P5TFl{0b)|Yz`A7dYRqyzj`XlvwsxS3@s>o5>!9Pcea7Y~C z4yhxulhGk_BsmiCXw?pRC%Z%G&^eMFCPyYmK}YdURUHK!B^}Kjr5$A*MI0p@l^m5F zdPyE(TkJK3qbvzhZxXAfsDXMxMDJNI$+c5Xw~r1Nm+p#1)S zUpXlMY4YzZ2Rny42Ri#YhdD<$2RQpVA9ot!e1z)n{L9$4#wh0m=Xk6h?HuRK(Ycm$ zs&krivU7@amUE_ahI6_zv2%mYe>n?wUg%69YLRoEbAhwAbBS}l^Fyavo&RN+$2xf(M>@53-gG>0 z{Oh>qxb7(6yy|$=>9OOQ2-*o=t-dpR2^NMrCwcE~H&Qnh5wY{}YI{DXw@H&z6O0A2|3(lS$$97bD z?>X-}efs`ezBtpIVO`9wYZkAwMCvt*)A_>L#4vozb7$G*j?Rhb4BPYMDnBte)#7q= z4(pQWN_Nf5f480gU$*kfM*fZKf_7hCoLm|I(w}hnSFc*8v$!H&rW8HaGPjGzT&}{d z09dzyQ^`-^M3dy0Fqdy;#md%pWlmwsKBxaYX%y7zSX1(<75?|D%yO@HuR;E|yS?kKYmNIKcSzTD?v?HfUDmqKyEeKHxVN}Bx&Q9c z&wbc65%<{X-saxr-tOMv-s|4%-s;}%-tR7g9rkoN>YnD>;6Cp@(`B9etb3mOxI0tV zL+&$fao1CB5$dqJf7g@l)9w@Q99@sOue-0gFSu8^d%K!uPndxiT$mwoO#?g#Fh?sM*Y?pyBLU1NGIN&DCR2>*NNe(YZAKIpc&r@9xo zpShp7pSq8@7rNWH{=?(F(`AV}0r%_GWrBMd{qt__ve@0&)x_1>)!)_8)x*`tHOMv6 zHQF`R)vL<@_hi>B*G$(W*M|BtTrJ#FT+>~fTnk-0TZZ7jz$Wop+t-65`(N`r*3ny6tkhZn<2pC$8tN zSFT5{r>@udFZsZg>MG)X@4D$~=8kbo-5uSZT*>ZmcOo8jfBg3nyXEd!cc{CJ+vhU6 z^WeWpc6TQHSu?v0Zk;=?yM%jXtxE37U1QRUy7RlsyNkK&yX$nV>u%t#?e5`j>+axg zo`1eo)!WEh&)dLT-#g6H z#M{){$TJ>&JMNXu)505gCRC#X{~L`Sylm-h+aM_kFjD-gl_3-aoy?x^?sB^Tv65czvFp z-u*XvdGU3;b2h=k8j?T#n5 zTR+c6PqZh>W5MIz;8A)rdGsF6Blj3QDV}7{50BFG!gJ4))04|n#*@!e)>G1>_ZIck z^wjaBcx!oDdYW}>?y2p0*X_Nhsi&2vmuHrzvuBv6ho`HjyJwO5}&`}-U4Zryd= zH_~(`OLuwSmVZ}1-!1<4msde3?1U%c+U=Dp{=>wV*`mU-XN zk6w?r@v=|ex8CR82VSQ)_SF-w!@K$JPwx+Jw=VH%qO^Or^K`w4zx}tnE=d!o`MhCi zv1zh2N!qe!dnz0}y>Z!y4ijIQ(u`@N9u`i^mv(9u|9c50<*%7GIsepMpPE*G^tMB- zG=Ekl?QMq|X+4S#Ppg|&r^kr2k!hpS#-{z5Ha=~1+PJjVJ;tQ9LVaB}A&viyh&NVm zT-me7q_l}?jng`(O-}1}?JumYjkWdC8l<(rZ0oc}X)V*5rnOJ&iiuun{nH*+nb~7O z+VmAmHb1N~1!`g1qBQ;;>a)}4q>a!o#ryj49{=r&K3_3#8Jveuj(Wadp6H4pl?hi1sUA`zq*h3skb3Y9LYk7a z89|?~IZjXD*R&032kwAV6nwrew8!V&LwYdR8>$a;eAnme7t%jNGLZQpP$S4G4F1{i z@Dp(!!(^PuFb$eNm0=!EW#GGufQv)^4p|n0U&9N%Dr8N_hLBBAn@Qil!&d0+sNErZ zNV+#%X9nM2tAnqdY3Ql^sjg6 zse3s0foGrZAt7}UlL7u9nD`X( z8K+Bp5BY%;CUB5kXm}`&dqi``7VjWmHC56;&;?I?l|f8CnbHX4JvS8TF7g2wKrFw2{C!rn(7E z*9bh0W<)gywm`LHxzE>1paauwLfeM6!YX(z(KQnX| zP3DBogPPC!3z_myE+T$0!M{V7g8xA+LoFwne`-bOO1M>m1ZPeKIiGJGP7&FVA@i@^ z$kI(vo0;=>w}x&*vLkdS&K=nodJy_h=#kK)8K(TRJRZZDBz|{_&76kf&ndYKzDiU6 zypr3{c&i=oUg&+CT;gB%5d4Vh$D#k>G!viiDe4)`@G%PY0`(GSoVY^WH1~vhiAtmX zE#-HF-&6Mi{4w-1bzi_=iT)P)9sC0oLeB&V4GV(`XD5V2FvUO4D4d`YgCv%wabfYS zFNTs(Ck;y=O2)c4sWU7|;P~BC#H%x;8s@c7$zeL2(xNAsfuM=?%}|ywTbMm83sknS z>|wdX^5WzapRXXQP*~xxBH&`E;wb(qLAfNjR9G2c*|737W18Zb%*MK>KWE6tT#*h z;_RUQa05_-!Ul&84I3Udigd?>jSZU+HZg2+*k55&*!&aho!yW#henL{{X>jX}| zx&U`E>=Mqax&d_?XHoHgj{9K`!H>iK#i>+Jpq_={1@W*~q~`#-h)O@h%M2^ZlcGJZ-zP!3EaN`aHf@LU3ClWB1} znJzpfTpw->H<6y1ApQ=7bK&;zOyQZs`LoFa_rl)-=%P5EtQ1&yLRp#cDma&{dN_an zSWPxx3#x8-Jz%r&=HV^CZBZRjfvXeMox{5k)g9O){7+!d@Lo74&*vKzJ~n(jcpA>c z3#{@pe?s13WJ|)A3OfHluLxf$NY;d}4PO_&F?Wx0L1fv2y=ur!XA+sIx8xBL=Kz@=-)9n zI1egsL=j*ynieNqGNM#O8KTNYlqXyvq7qII#Mf(7HIneV`~g*qoF~{gqDe$kxMmS8 zB3j~9L7%TRnQ8-UOH})a&JkTAx)O~u6(hPw{29>`rw;Z;(ihbarw{rc*+85^I2fl8 z;_pzz=!mfq<08gKOo*5W|5wBmGUGpWaAw5ph@E)S~0ry87jyOsjf7g>loryTl65*+sS0ipB_n&Erzb$0u zUc>|NBR2mp)PJZasAnX74t$Avg-Ruf|Ig=$aN=B5zfMOlP0|Rzq3%<}7pQO4`F!7@ zexQE(6PDwvR%BRY1kPHGjEo{Du0}`3;LO%I==excq!_2S%5Z+GB2r1Z>G$=kq(~Lc zcGZwx@^2>sD|Ekf4J46k>w)GM^=ce2ww?Rh2&KutAVSd{y^0t8NVuU)fOamsBTEP zv7pz4>SlzS3py=`Zpo5Xk*%TI6W$9Q+n~4JMsk1>h<}~(z$by7pS@f z#y?`E&cE(zY32K{W59qGF8^9e49T8vYl`5l%3S46GG>CgDc zh}wWNp!sxb)Q+g#MDcDf)PB@~sDn|5X?g@_MDsnL?|9S+qE1rpPkB5Ob(Uo330?+X z`DG?B&7U-V8(sW^CNlE?_&Dm{sQ;o~M!mw>)2=8F$$0REOw} zz)q+xB<~9BPLzKJ9|gqq1olGpA+8_6z=V(oMh`-7@Gt!#(ZiyLBOO6Hqkv=R%vkVv zq9@VBzu#n>Wj>80vw?G?7XcR&|2M%U1pTv1iC#u zy#;P7YFG50=)E`@{Q&eqoR99`>1gzEs!rg%^fS?Cac24jB$uME;N*1t6WZuo(RZTn zMc*e=4}p(S|3*InK1IEZP6hgW4xpPTpASC(pehagCi-pkJL2C*e*k}s{tWy|5@SOlEGA1e}8q8lYgkxhw)Z-QB7zxqRm;{>1D9gbLlqyC|6aOCR zs6n0_lM-W$u|Qc-_6(Dm;Im}N(%0j2c}%XDJm}{oGx^wL0jdfTE(9!$Dne7?4!kZA zQ!=JhOqrl=S?VgpR0_(2*H$6Dsxj4KszcQvt|qV+QT%Les5->eWf@+{pt^ocL!uhT zG>vHn)m$(WxKj&~wfd#gI;Krb+n9DS?SJXuBTSHWB)T(Ay0T6;sGiL6ck2b$JEm_; zznB3~1A}^jM>9BPXv~P;b^;S4|7SNaHHu7)7R-)~83#9>CKF>O#Y~BrD(L%HPWvSZ z?1)!8V`lx2Zu*>1%_b}65S$B~_sb3oXtFS75!B*e`u^RPu>2pWWvJyOS;2DQT?2aM zZ@a5#x;kbJRqJ9lP_-#$Gf`Wq_xZNPY=_Ub+G+u`lxNB73j=3X91CQI!cWLKQ%;T7U zW1hl2i*dv_N$LT5QE9}zCisS6@E*K-7xN+JOU$>JA2B~OOoYUS#)if6GvNezh0lG^ zQL)i9iH(hm6~#*65=bH=D348yRmQ4_*2fwM`&ZkbIaD^1<%um2TPU^!bjjFKz%nGo zE1$9Dp{k;)$JU^ke|;^uda?CM))?3{wi&Q_Y)g`~CfGK%Lu|*`PO)9!x}v(p_8_^> z_h)SH*nU(Gj2#p^ICco!h}hAwV`3*lO^uxqJ2Q56?3~!Sa0^fiV;99P2K%q2P%BaE zVmHU`VChbx_5k zlmjb%&-g_{u~%bnlG$4X@BEK-cVq9x-bepI>_frSGlAys@|=37Aa}*O1T~QD!SvVIZ`6H{{Sg}ym%gXZ7tLHuTx?t% zaq)2?!eXE_E`d$>*Coa&;*@c!3@M)J{*vICZ(Q~XnBmYa5dzgu3~&G$d1@}pNEt{|BxMCXdcmCmrD67iKYqQkjel?@nB*UQ>$tWo=@8eEX*{ou>l)V$zI$9xn)U(rCAuH5f7}3? z^ZN`G=s|IVnHvH%l(=DW!@(m_qvFQIjRQ|aO+w+jLV|x0#7_X@rp8T+n@-#ef-`}$ zP_v2SR|KxPar5F9&~zbqQQYFVrE$yRRzj~L`D)t5D=u;C;?@(l0k|=4Gwp1N+fLO^ z%7NYej6)cZ?_s_DPzOoN7MIlU*f*TeS`as`Vr^D z8!q?>{t9CXUq9j_;-duKKY{1X@v%rnC~>?rUKTHpR|uw(;#F{JnrH~?Sl>vLDc&BR znW&ucx#A1P7m6>;CW;bOEFQnI8md%$+4yqc@~j_t6n?J2@`~}5sjkAZs#H}2S4aJU zsu5o+zIJ>asJbZORUf_q%^HClqngAwjc*p;GQM?u8@TqU4)LAhyTo^o?-}1GzJL4x zB>rnq{9x!I@k4>b;)k;wf778y5kH!y<0y}hpBO(GdTRVMlFW>s1)hzXL;PIeJk&ze zVv+>z#`6*+|HLl`u83d7x~qv=8^3|@#`sO(&GFmfcYt@H_L5w<555A%??-wdL+4=p zp$y3p_@g8{Cg_}qKS|vw@M%E@f9IJy&s5;v7m!?x$FHf2zZ!on{(Ah4UnT;RKHp9B zZVCFg%L`*pLqxOA^v0hm-w$xKjVFPb5p1&OcWuC6h(<*ME-s79u}rVA{n%t`b4mTXeCVo zD^wyiNi;w$Dup0OC`H>eC z6#^DT6+@K}l@yf%mll-~l@*m2Re-K2stojBRj8^es>U*WWD0Z*f%dPdl_9AEUsqI* zru9V)h-wIIBx+34!2JT;RMd=gngd%9)k@S_)JD{n=yt#kM0F&HS98FfMO}#NPBZ^r ze~NmFdb6Z2RsBT+Scb2FqCs$jMMGFNR5T2FIP-Y+DjFpkBN~fjf@mViCjloD^%p_^ z{icYfie|viM9mh>70nYZ6#Xse2mXXhL`!M99K3?)l{8sJc{OF9Zw*ua^=qkL2VPI~ zM$sn1n?+ki+n{z37r2|xw-bJsXg5vw5Z)`=C)%H3j$d&A*+J1^(Gk&6(Q)V#sFR}8 zqBEkiqH}`z^P&sXU8H=8b*~V0Rdfw}Lv#yxTXdIo{g3OO=mC<4Bz**YEc#FM6#Sed z_$n$&6*)z2IJ}t@_?qVFf2x3bBYG=(Cwfo%AL-O*@E6fn!J6;TKZySsNJSyyFmZ%9 zQXD1b_lg$B5ax9(Q@j&iaX}qXkQ2@Yv{)<=OT`IdnK)6b5G%z=SfLWDgVt$+9KTZg zOA^>Gg>>`;4FrvJ)+9C)Wfj}RoY*eTM05NUQk+GcRh&(nU7S;#N1PXVK5>3=0dYZb zVKx)k|NrKqWVRTvxL{RDf&O)EX>mDmd2t1CMR6r@WpNd8RdF?Ob@3nK8seJ&b6qWT z>j)<5itCB%!#7}AW2X4KHiK&(l;Cp*^DUuTiCY8Ph}(+WvAhFO9SL@#X%}!es)PSL z-D&!#xYuv{!P9s>3sZeieFf9~sO~Sw@LnK+8z>$m9!&fY@lfzE@o@17@ko-463k`1 zo8ONXkI67IRy>X+l|Rpzu!UeVVWEX>Kqm0&=DjjSb7rb6mzGc&Y;es&WSIGFVfBx%KqK2 zim$`pK;0DI65kfz6W=HO2jYj|M?^m+_^39uveT0 ze2sd8dW-U3ABg%W{v`e^{sR3~`~&!tq#=?}Nth&D5+T9s@hJX^l0-{lpkq;SG{bu? zh!O$CC<$>=V1h&@NdzlNk|a?}G(_RE95`8`ml&w`?~b2sNz4+9#F`-ubOUUYWR_$j zGub6MB)KHH1@n2J^GOOw3V{ogyr`fX*a6Rjg3{8=m4PZNDF-aiGJaKMNfk*oB-JIg zfej>0B`qawCG900C7sw@7fDx1ceoxb;aB#N^b7KQhVRBnHb63v^#&0&7&wGwLz(ig z3g8II$X`06STb5NRx%!LB1OII+3SNJ5W1a7rt4cuDEIzh(ov7Y!1l8uthk}Z;L#O;vmlI&)4 zd!Y6*$FJEZ*)KULIV3qu(<6kB0*^~h(Cj4TQW6}0n{X`D1(DuR|srN9J~Oqxh~_&$d+ zKl$sWlqR9CLaE7|Mye&8Opu?~F_j`UNR3hxyoF>|DJQklZYDN`pT|LGmF6HxE@^IX z9zmDiGk*rpXX#e~X+hG*5t7m(P(`K11oOqEC8ebVK7AdpN=qwBD@m)9{vW@cs!7sX zLA`p!H3T*ys(}{X-jDL0v-JL@G~?) zuQzlb<_A(Wh$Vxm8p0BOw_(H$2acloXz3W~IOy@x3DQZ@$XMtx+=Sb&C z=Svq#7s354T?$-=@?XoPE1Bk#)zqzF=~|}f65qO@WP@~*z;C8{s~`)k+s3jT(w$7> zdmgHHOZP(I@Ji`n=@IEs=`rbX=}GA+>1pX1=~+5+POvVpFMdiOy@>n@>0Je0BkG3q zCgJqC+d=*=b@y0$AL;>f_`XN_MBvi*dG_1%1=5$&SJG6l6Xg<2xuvfKF0j*k=?Ce@ z4EZO4{|x;_-~;QvNx#$dr=NpnLJ~p~0+W6YV?H7wl4*Z0CLt~%o@63|k_0I@0VN|o zu#+4vkt7P5E5S)bt7sCK{gu^ZLL-<Zv{xQnF`-gI6>znLKN4yt)JmvLdUX@(CDf-=4G1?(XhePBK6n)sNfVMb zCD<&(MDv6e39XQ|W_cT?@NS!gb_pF4Itr3bOm}9g3sd+`E1?H-J)wG|`qHFd!k~m9 z2}6k+1{_ZF5tQ*+3Tkx180ORe9KTcJ$lUl}rYDkQGH`0bv<%(p#Lr^sY^XWJ%_TUG zb?`5m5*AXoi16ZsCDboX_y=kkamy1{(v*LUs}fdIw>DuN)CSZR*569hHs-e{>`vH| zu$TFLRP6^JVCkWRBMC>DJC<-9`b5IXgi|cTvmNNO3Fm<4Q5OUqyvobmC8)~@SAf@8 z#y{%o2{);~m2i)B9zfw2hEo4;!hfuT_X;JvfO~~t+u$oPp+U^prQ6-g32vmqQSizh4wN@Oyk6J;t{GEsV& zNoJMVpgB|~SvFZNS#Hwt-#0(i1q2yhW0e(RzA#h~>WUIBMzA=|{QHz3uB5CKxU{S+ zuslgB5UePxB&$LcKB8sSWi_d;MYuL~c$HOFkLvoehO$P`jb%+_O<5n$IiQ;hy#MYz zwm{l4sM9LQ`6pYGtPSh5leLHLi0Z^L|72(4yV3N|pl(lDFM;n1-A~qEkPMIwlns&% zK{AY_BLzMG?g1Q)&Un_Hz*L~m^F-O?pnM8((}FVLJg=wAX0ZND*(}*?<}yysk37^pl5M}_=@UY= zT`;#3dY5dsAi+;XiQ5a@$MOTRgG}S6q_V@ZqwvRM$7LsEr)6hJ@0?&F{eI^K=>>sK zpZNcxE(Wc7?3V1d42K0Ey(habdnkJ>`&ag#?1}8D?3rLS zUQ-Touc%7}yMj8uK1w&~djwNnqF)2wpxzSqj$rWW_ayrW{4Dz-`zHG?`yu-&^T|Tw zq4F>}J|oE^Oy<++gLk>>^GlNXW~mKT#3hc1CCiAujpQCFI9 z8G>blCh%;A`tpLjqCltbhIhIDAGvUb*Oh;ntCAt9n!yKls3xy2|3h9wUQ=FMURPdE zULSJ}Pz_Oy$eP9k@fnsfKF`WqGL2_T@-_k&*w@c(bV1=fD>% z%DKlL|r4!H}dTkavfG~jFbTlst9J`m*h`@|IQJ~Q`4{uTNM@8w~Md=Jl> zz>%mZ>Z1wACB_pL10}SRKv@P>5Ur#MzMF$mC90Xn`@j;li8|`_gpG+NuvswUe*}KC zvfP%)G0peviJ9TEBxVCIFGI!Lzl*W{J&z$y+40MAka7 z9qqJF?2y&9FUs{UjN-|v~&E3r>vKVhRrJza(>LGB-nKLE=J^ zEJ|FO_z%>w41K&enj|ZMt5EBRTMyhw6n{6LZ<9d#6MR<|lx-t!M^LthxV^xAL>&Mg zBr326&qsergxzC_#}iKoCQc@vqV6=|GX&4k>;mPB;LE5hsB4KgfVWV$QTI@Iw++Du z1Os<_Byf)t{}s6Z5}ykkJ|88%gnyNo8k7e1@w0>UoIw*V>O4UyKmYodSN1TM9RFOb?GRpiqInxTJ=!U)| zg^FcrqO{Z}D|D=rLX@8Qz-m7mSZ-v>3}t1`#*|%=Ns*blEa0rD?1~(UoQhm*hTkAy`#Wou>Xf)*!B?qLv`74P95@@p({DU(rC(P|*l!V?`6vYf7-0qB)yvK~+m| zYogmI+On?ye(ez$r-ZrHGe6lvfebsbj1wCO!!$W<0oea zx%9Q^Y7QpmD;6jgDi$mL{(np_A^m>@Q!52}m14DGE%WP`;_tPdxeZVosoO+(t75xi zhhnEfdA57t$ z0=yP@yfaxDuJo@6U?hADDpna!I^qm{{A56oBtff)S1YwjgVMx$W+;o&rsQan1)Nox zU73^kT*}-u_un_avLNw=l*PfNm1UG=i7y8%udD#9sH{X1e!hybDs**aEoE(GU7FTY z)@OZwrU7wHl+BdQp;{>0&~681r=Ynm%C12kpLdkql|7LCnIXsLAZ0IQZ)G3keMztX zFBANoGhPFf1C@h*nH)@$A%sW#(iiSBQaMUFS~-TyjHQ#~loOPb*{Z*kQ>dOwc^cta z%GreH0Oz6R6X)N10nrPUiEA>zA-ELyk8&B&%atn#uOx_PWt0PtbG32}N!BUX z6W##asNAgFqTC9#jbwpYp0|@^C&Ar9QZ={lJx@XU(v)t*h!s>u!p+9 ztXKJ3`G#fhl<$=vm7n3iuf-UNt7feUILU7 zl>n3_B@(S5s3aIz_5Yn!WSxefHc6M1@|%4Og3Op?5;${`g*j`IjcAS~{zs81$Y+Mj zmXtjyM^Gw!yg8F{CFTBYHxJUhsC=}WKdHcP=Y+fYbwR;gA%QNER5YoWz^AV)PSXoYak|?!X?utojp4PnPy# z3O@l9XnxOrN&QJOAZcLIu%zM8BQi_`?kwbyNu!cRV{S~+Sm3w}E5=hl0X&iFNl8-# zQ&XX*34CDhnSyMtK+jKFAaDzl7Qro{$+D#7P%DyF3nl{ltw~x-(sjV~NgI+j1;}BqvFFir{HF zaRz)Ab%A<*^(Cq=3o<;L61b~LHw5k`)%TL_Cq00ENc_Ko34T|+PL}i}=_yH{B|Rtn z0{HTmxmQ6+YLN5qMUwE@*d>N08v%lSygRzfO7+)WOdIlHLU+?}J?W{Xek$ zBT=7{KGWn2_-oQP;=a?&zwQThKY2!lsQ5fo6{d=Yic!U?Bq|xn}(=4Q-S+rAxSo14x)0>iCmNeb3Er(i?m<9K1rcO0|~y^_2a)ZBT6r@_~Ec^)BSw1ic+h?_|n9y-VQt5WP>eUyud%Jdhzf zs5+h@2~6Vs3aV4IcN%;abv|hJg6bmkm!K}AuBxu9Zm{$w)Lqp*)qT|i)kD=I)nnEP z+~w&n30{HEkUdwuK=KmxO663!z-~I>QF*C)1AdEoNBn!$2b%lu^D)Tr*(Z{GQ~gl= zRQXgP>QHr<+CLi(j-=Y31Y;EKMT29BjswQiR1B7&r0N8c$Y?I7jL!>dCDBPh6;Wz+ zGGU!suQos#)h4x>B*Ay~JB!*zdUjyups6g>WmRW~%7MzI&aKWXn8^p7UtIuLP>|w1 zQ0l@0UsRxrLzkewq`DMTX?0m(Ig*v99sZG3AiAQuGPnw=s=B)R4{%L&ZD1XBT_B$I zsOuBP=K{+3jG%4;-BjI7-GXKqlJy4;Kn-CNL!pLKH$pvWR>k)RS2fxbI&`rm}PzQM1&u z!E;!O@7mP!1A0g^?i#i+kgOVrENE7hyi>!3HNH>tOPx1zSGx2t!kcdB=(cf;*L z?M2~v2f_X71L}k7L+ZooBkE)76Y7)dQ|i;CgO6nJIn;U71)AX{R#Y8{ayV7{F7w-JiXK*nlMd-1|Nl*Xic0ZUL%GUUJ{K|BO{p{n5aiz5uBni0L>^1%8KGNnSjD8vnIPH2eO=+T$$`V!Tj`hl83n!%bOtUFXQ zjOyXwk(yD&jRlU=jMq${y@`Y;Yo=(X5j7n+Lo<`;S(-WE`I-fqg_^}sf0Gn{6E!P{ zS_xc*TBBJ9T#wqI*$mu<@?Sfkc4~HMc9UeUW}jw1Q3nVf)EovMK^-OjnC67$6x3PG z1S)okKz8);4nhXE0Q}jE{z+?gL+L8 ze09*ggZilXtofq(s`;k*t_jhGYQwbQ+6ZlwHd-5_jn&3!5Hm5e1Hjg&1HlH@X zwt%*vwy?H{wy3tawuH8%wv@KCww$)SwxYI@wz9U0wz~EYZ4GTLZ5?f0Z9Q!REj}Y^ z8*7_rn`)bBn`>KWTWMQs+iKfsJ7_y;J8QdWyK1{>yK8%Bdun@Wdu#h>`)d1X`)dbi z2Wkgt2Wy9FhiQjvM`%ZCM`_1t$7?5OCu%2YCu{%GPSH-&PS?)R&eYD*&eqP+&ehJ> zF3>L2F48X6{;gf2U8Y^GU7=m6U9DZCU8`NEU9a7!-K5>D-J;#9-LBoG-L2iD-K*WN zJ)k|LJ&H%kU&krqI}`0Gs?UQjqONIgXm4xp()2#zN7VUO<9C;3@c#+?Q>ve9UuaXc z4y{wrS)YIA{^^5<$v${FgLYmYn$84qk>8dVWWrMPEa20|QyiX{(GLot+{R662a-HP5$qk?yCO1xQ zlH3BSb#j~Jw#n_2J0y36>w@C1uF2i0!e>XQo~Yi*eUkgKv>#Lc6~Dv&$pgvMAcBM0 ziXl)#lZOFEB##7+W*vT)F~p5c9+x~mc>>Xsfl~xC(*!!>eW#;0gY{=Jg`X@X&w-np zJP)`)ko$L7_)8Mlc@a8)CofH2mb^T91@ubPYSfzK^~oE+o02yJ@f`%gt;yR72Ug>= zv%v3y-YxKZp!cE0!O3pssX`R zg1nC-DxP`~%kghH1)84>TvA*=aZl=-`DhTbCZfk&{FW!sqw^mZcIrQ4k$ z-$VUgmhWRKuoAD@>JI1*>JI4+>yGG->W=G9=uTqljP9K7{BNey*9FuCOkLDn`t9tM z-==uogyz?DH+8p&zRf1@F%`H&I^QR~2f&BAM;YcGGyfk^Pk>K#uV|X8bL!kWkIqYd z8f83VChDE;J>d^D|H%4*yMLm|XWf?!z3R6VNd zr!*w0F|Y}$SxR$Y3zD@2wjzqZhyQ9FL5)7+8nrf+^iIBt78& zMD=2MZ>T;geTnavGJxg$E(3$yAmWAqho%fq8JRLFWlYLgxbZ<#`1ut4WS0GvGM#CD z&)L+?OPQatfa*m-6Z{lj(LuJ1olmmD3^HrqRe%rZ0(wo5Bs5@-tE>r#; z?x#FN@(A@9^>50Pl&56kdCJR_)D#D_i+KOEJH?aYr9Lg?4b45)~0-h z{*v-FQt8!78)f0%v6jN0pr=nV3r7HM2g8 zKI?DtY`@6@t8)CNmy>3>GW2r8=hGL^7X%j~y&^#qMT4CG4#kiaXL$*zlFacFrQk{j zC1t293ofTGudfKMgsM#QDwOekrM?=|fjXSr8SAFrLPUHOLTpG1J+Gn^Q&q| zry7A96Ws*ZRNqYBoObv%E%YskYbD5j-HT6J|1!~rBy9<{quuu44*HJ3PBh`ycA>hf zzPrAMAn&Q~rSGlpqwlNlhjgHRkf6t}X`n7{-pjCn>ejM3w@6HjQipB zbNvN$FQP7?E|bYC1cPUm6v)Jy#<;#2ib!u*7bC^yimMsBEZe_`^`cP}5M$P}@+)P}fk8tf^110YM+R8W|ch z*Mz91hGr}wBfjR$w}fhiYGY_iv-aSQhR%krhVF(QG{bWrsGg`^sNSePsJ@1N!2X5- zhJl8`P(utufx}S44I>Pr3}Xyqp~s>4YrJ8CVWI&)$3pSfWCQ*+nqew%8j8PW7-kw~ z8Ri&>@y(@-pIUP6HyAd8 zH=#Bgwivb@@5)?19>gO276Ix1S)N9xxm<95Nh+KVmovJZ3l!w*CvuZBy&%Z4k4tA=Y(*HJf6w+wfH_YC)e4^aH|(7@v(f{%g!8J-aR z6!?s&=fD@Jmxfmc2iS>n8Qehr@)*1ZB7A9v*M>KSw{Y(a9}J(spHW{8-+J0rKM>ySZ7QD>Wv1Y32Y`E zi_u0nu+|Qj$(Y%g)tHUsISA$y%;X|EH!v?z`2;c$$zn#Njib;x90V?DZ}zOkXP5p)w{Ghho;E84+V zQ)63WJ7Wi9CnQ}_-HknfJ&nESL~n3kR6kUI<3Qse<6z?u<51%;<8b2$<4EIZ;~3*u z<9Oo)<3!^m<7DGs#wo_B#%ads#u>($##zQW#<|9M#`(sD#zn@(#=nhAjsF;z8J8PZ z7*`rs8CM(E7}pxt8P^*(7&jU>88;iZ8n+p@8+RCY8h06Y8}}IZ8uuCZ8xI%{84nwe z7>^o{8IK!J7*85c8BZI}7|$Bd8P6Lp7%v(x87~{J8m}2|7;hSH8SfbH8t)nJ8y^@S z8Xp<|HU4LOVti_RW_)gZVSH(PWlS|Xj83D==r($cX~x&aH^#Tdcg7FKkH$~N&&Dst zZ^rM&pGKcC#1v)I6u*aO~q+e8eE2IeuuzSHYh7+ zDi2>FD8u{0sjpyR z%ya^H8g<5W7I@Bd!E_0H*>nZSU)N1HOgBxpO?OOpO%F^DO^;3gnx2@RnVy?om|mGu zO%9XOi6X4V4Gv>4AbLR8r3+7Ak zmr3sm@G9z>`MUXr`6kpYlHVbC*L>gn!2F14ybc3?Vt!_RVSZ_T1)WNBhuKM#%j^Mr z&1t~bwD*SaTi`p?d-F&0C-7(U7vNX(58zL8h$Ym*|LMXA;u*Uok}5upB08ESF+{}z z<1Hef7$vbtEeRHxMQ%y7C@e`9jYVtGS@afz#b_~E%odBqYOz^3i`|mRlEsqMlFgFc zlEaeIlFO3YlE;$IlHXF$Qpi%oQq)q+QruF)Qqoe|QpQr&QqEG|Qo&NuQpr-;QpHl$ zQjOfZx}~P2j-{@pK5>nJO)bqVEiA2|+M?Q7I$AoBURQ$MEZqtBu=FC_*V2#h0Lwtj zAfg6ahFFF|4I_^KQ{$({0?qr8mQhGXTgF(%TEFfyV@3ic;>+>sgnop2Of&p_Ch9+ePk>J?FIX?t;;=a3Tr5fdQ@el3JV?AGO|!fPzxic? zU;Wnd&hj3ePqh2_w^QGcez*Lz_$(pTP;0m~{l4ic!WtEnM_Xg8u|Y}tEPnQ3jkk)d z3IAsw-w%+U+?teOMhl;8)me=ha^dcNZ4ykFiM9YalpU4Hnwex-fLX2Ci00Sjq$-y+ zw>7UdA6$Oc3*4gsOA1m|h$Tg+Drzl3R4HI-)-B6aU@t$Hw^p!Lq`k_NtAMLot68fP z{|8O^`I^>R*4oy()&?|d2yQIsHx+1n6}7fxzBN<)KJAF>VC_WHF4k^P-BCSIe_DG1 z`&j!~2Y?5mhFFJMhg(Nl$5_W&$5|&>Ct4?2CnKL?oeISF)Yci`nbz6BIo7$rc_in1 zc-NhE0dvcsmZMf!S6WwD*V25ebsN-n>kjKq>n^B0*1fc|&$=J#p!JaTF!+e|D9!yl z^LWg90@+E_Db#7}8S7c=IqP{ccM*6Qb(Oel*6W0CSZ`WyS#J}4$9mU#&w8I|e2;AX z&-%pr)cVZ&9LWpRE80n=>;OB7c3Itoy}&foYt%c`2h>Lte|@%oq3Wxjf#EiMRY67C zqJaDrZHpl)78pk}e+OSzs2737D2YuDOhhScNj5b&8KpzvJ)uCo%>XpoOg6L4Vzb(8 zHaqEMvSqeqAquYwfpeg8+H%=)(<~1-FDf4@Kh5x6Fi`~w7Gf!XuflLeP$f~NXs3*= zoUOdA0$fE~HQOH~t!1lYt81%gs}I+JB#nTLiNg22l<`%IsAj+xwwAV5Ea&gl+SV4n z9m(1g>|pC?>ul>nr@Gp@*}B_$P}dXO%hns%$JQ4(z&4O{2HA!X9%>tA8%`9zH@>z( zkF<>fjwb0C+gRH;s0p^oz`sc5pTysH>ZXFH*`^aW6F7_Jb8K^|nn!p(!3DNOgck$< zu`MGS9|e?G*j7QUwygoKCD}TH>unos8;SDYeKYh{)OOoW+b-~K+a5u8uWi5W0PzQH zhrvf|M}fy|$89IUr%C4w@GMd1fai(g_r3si5p{_smu*+5x@x;d)OFhp@J*WDvfZZY zj_t1Pp6x!|W7~hgC$^`g^PKhr|J`0N{}SpIDwQS<)^XW9O#9b)nNNdyZF^&TOOkiC z_qGqVk3@ea_|^7}FuyK@3+2K%UWF5kAc*H~Tr^Y+Ck9GT2{gx79IE7;f=gnl3QEnK zhD+g0oSCz*#L978R=Dh_93;)j<>GR)ejccNTp?g#t_W9@D@HoSfhAF;h%3#N;mUF4 zp(}8eNK%=r%KgFB;A(QUxY}GDt}a)PtIsvy8gh-e##|GwDc6i^&b8oLa;>=5TpO+} z*N$t?b>_NoUAb;tcdiH5lk3Ix=K65`xc=M#ZXh>^8_W&ihH}HX5!^^_6gQR|$BpME za1*&n+!SsqH;tRl&ERHobGW(OJZ?U>kXyw4%`M@Ua?7~o+)8d0w}xBGt>e~n8@P?! zW^N0&mD|Q`=XP*Axn10DZV$JY+sEza4sZv#L)>BR2zQh_#vSKQa3{Ib+!^jHcaA&H zUEnTqSGjB4b?ydtle@*;;qGz|xQE;$?lJc-_k?@OJ>#BpFSu7+D(B#woQLyrY20h> z4fmFN$9>>Fai6&_+*j@!_nrH}{p5UHh&|LEW)HVV*dy&x_Go*IJ=Pv)7um&jiCt<> zu*>X;c7=pFJUifFJ;HqbbA?lS$jEqd3yzWMSCTCWqTES zReLpib$bnaO?xeSZF?PiU3)!yeR~6YLwh58V|x>OQ+soJ3wuj@D|>5u8+%)OM|)T7 z6u7$Ed%^X#_aRwddq4XC`#|Wy_94Kb_F=#g_EGjR_OWCFuh7`XQ{~@dqJ6UcFZ(q6 zbo&hCGwrkNv%z!hbM5o!+b50m^P@C@p#{ha+g_=5c+$uHS2+ppNK+OOHK+i%)$ z*>BtL+V9yP*dN*-*&o~g{r|D|9&k-9O~ZHy;m{#;R76oqa&k@(P^ltCKx#w~1se(o zA_(?gP$2f+yJEpYu=k3nh$R;61yJmm*spp?^35rMfWdq3^E~hK|NX!3jlbD4yJvUL z?(EF$%pP>Aa;kQE?o{LS!s(^cE2q~^Z=Bvby>qH{dhaB0`r!1@>66oEr>{=moc?h7 z?)1ayr_-NKbxtxTg%g9rw)kc$AypAp9ta^@Thjuoc`rxjUZ z17T|bTTWY!J;wo3P9&Z~hQyOx4v$Xb96raH(}Ckc=UwaTP(8SDIs?X?#(HqPINqEt zbj}xIKaM|y-8rE&j(RGB%=Msg(VU);is8gT*asj1pdV)dgo6Q;zhp?K01V-zafa68 zGdRP^bQXl!03!g#b0(0u$z(`8KMhjTIWx(89w#5-`J6=%E(Tb_S;kob@hZ+n2sd#y zLkQA{42cx@HR$wqh<5-K0_>!5yE!5PA8;RXA8{XZpKzaYtGLzNXWW<2$}8?0?py9VZY}pcSHk_k z{mA{q{mlK!{l@)+`7t|GXLp!3K(9Wnk>WO-x-lz|hcR_tof3zDKga$({ zgnY6)8j6OY;bH@MaQAz(TR{!{wAT*=v+=cb_S$oqPb`uDnw^N zdNw)-or}&x=c5bIg^*tauoz$o0O<4RGITk*0$qu&LRXWRHRxJ0CQ8>qYCW0T0O3Y- z6PYeRx1u}HLUb3p8!bXbXfe7M-G}Z+51@z8!{`z8D0&P%j-EhIqNmU^=vnj}T7sTO zFQ6CEOK2Hdj$TEtq1RC{dIP5K90)kok}3XY?zievr9_c4Vj=RRE5` z)8G+UCQlP$7JwE{o2Lu09?y_0X?TW88S#t(&*quXrKV(T-l(nx1NW1YyD10k1(LWt9Nq86X$%yWUfD~)r5xFfFAYdQ3|=O0I4_$wf;W;knm2|wmN$VnkvEAqnKy+u zl{bwyotML#!OP?2^Mt%vyxF`tyt&ZwJl=fX0^UO2V%`$oGTw6D3f?N-YTg>&THZR| zdfo=!M&4%L7IFmCj1XagN`9+KnyOK#g4xO2P3HEHVG&P6#>Hf~m$#31fOmva3i%JbuMmFY{iv^7N2X*D%Ik3qj2MOTrvW);Jw_8! zTJ<@ijvi(Jc|**o5!M)ElX(*eP3ud{AZ1SGEHEp~noPAI!y6!Y=I+@DBW?;FH$^*y;5Mr~iIoMoC%>y8Q^T~Jt87{;Y(O9aC z2$y2Zu;qYVfvv<=)t9cu)?jO~b!2`$wtvAH)C6{g8CfM&Q@#(wi7VBu|3#6 zY(I7YJBS^^4r50EcN9B@9mh^!C$ZDm8SE@}4lBV*u?yHm>=IUnUB=3>E7(=+8g?BM zV>hsy*e&cHb{~6)J;I(~Pq9j@3aiGRVb8G|>;?7;dyT!p-eT{tTI@Y0!KBy+>?8IG z`;2|TzF~i0-?1OqPwY>u4wGSWOo1_Q4V;Oya0J)Jb#Pr=57);Ha3kCpXX7TgDQQP${FH8wi+0fI;|RJPG1t zx<(3~N~frLX^nCOE*&r#cxF9*IGq|n#v>sd1u&Y%Qmu?3b7S#wGdH8&M0lpAlgfE8tGJxgy3VbD96HbbBYBd?J!Pi2(9^X)3 zPK|&HH{zS>@tf(?7Q6sbTk&o94jQu)--Yic(?t-9XsoiGVluxM!hHby@dGO52k|42 zI}LCKKZ}>(=kZef0)7cE!>{01@oV^X{04ptzl~SmcksLTef$Cb5PyU}#-HF%@k+c3 zug0I@&+!`k1^yC$g}=t%;BWDFcrE@Om*7(T1O5^JjDNwu;eX)Y@gMk4{7<|Nm*H|; zfiw6Td?sI$&*E$G5xzEGhp)%i=Ns@1`9^$WKAUgCH|3l0Tk>1+ZTPMEw){5ywtPE& zJ3f3n!?))<@E!S1d=8%rdDtC%KEDIsh40Gm#CIn#1lEJ^$@hYscRhx{!u`x9`7Vv} zT~%^^`~ZF+neWCA=7;lp@OwforoKjReqS=3$RErf!XL&T&L3G{2AVW~Tzzf=nVLw3 zlOUYTpHg22zG40}$W13PIb=AK40Fj4xGX=PFC^2mXv}Q>97xRtn8%+F;Q|`JkiUq( zm`pF_FQakG`78NrAib8qj=!G2fy8d)Z{lx;Q~|(N5<|@m6>jJ6sK*u7r&McD>7Dgu zyXsSoYwfPb@8Rzy)BE`c`G@((`6v0O`Dgg&09OKVo?i;#1+vCP{w01Hznp)S%w6MO zhxjJ{7K9Zf2E4-jyZn1}`ab^wol^GvkpGzfg#VOZ$*@?Y^^^WX5_ z^4~*k34j#f6aO>)>=*tw{vZ7B{GWUoUqRwDoQd{WWTR%X}>%Yf;um3^+qy8uT&-$18m-%1yzcDB`CwFu1 zx!mep|GYtYIeDA&&gE6-`R5PH&&l7Me=ff|-(NULm?PXQY}93=j7*`yWWnp1n3~nU zm#s|or-19M?b^#^_709t9Ii};@<4hz%VZr~T-~U8nldd!CZi_^Q06L+D;P~@Pyt;j z=a8TRsseaH$Vmn(06EQ|sY0##V$~HeCI2KkO+ddiU*9@0YHG~Xh>7ub?9|!a!_&_{ zAh26da7g#iuyA$HA3SvU$kAiRPno>>KYL#DLis#F8V&Dd)7qAtwTAw$i*MY#bz9x@4W!ldc@DSf$i2LMy7+cgj{o(W zx9^nwH*V$E{`t<-`>Q^$?)~@f+kZg)`!_d!rlxXhG#$Tk{)w4W|NhO5-_ok-{3*vz ztRFE8P3OPi{i(gF?s@9ThWTsy{(Fi<#p>U`x$!rwe?$L`XQ46usLn!T`cZwJU?J+p zucTjf^hZ6f+*iLoPf>nj`cZxV!kxQztABrr@>NH!?7w;Xqd4TR`$yTzulq;&{z~53 z-1|4T|8#Vl-+v7|U;X=U-L`#)`uA_x`O1+i`>%QN^40I&Up@aIT2aqGi1%+yIluBR z_56d7Fci;J_dLO?|LXl43piyfzxJ=BKPCTBr61+`5v!n{fBY~1Y;OJjmwz@E@2Xtv zfBC1X{-NYT|I0ts$$us1YEFJOxBvc^f2x-s|M%*j4M!mV&GR>p+7e$7v~}^;aodu% zhwfOuBd0KRXXLKcyYhAq+Y?>1zG${6tGL%*|9$iKjoKf7An4%YgX0b*9S%LR{7BBx z)MJsyS0B$iG3;dYsr9F3pUyhd>#YB|`R7KJ#Gel;U0gcuLPKBwUaCs2$54o^8B&P@ zLm+cu)GB-#mEv&50zoW8CLhdDNJlWFis=mS7&2<*>lk08g$#-G5JOR0!jM;71N;+! z_l%66e=wF^mNU`?+8TAWrW*268x5%()lkShHNcLpp%C}hkO&5A)XB3n6qQpoq>A|( z3i&!H+XH3Cq3nXj*Seb;a%m-$NuW%oA(87b>lD^Zu>CV-wH=xA$9_zyLcmni^#@!g zQz4xU@jRwNz82!$P<^hQdV8Xb$IR}JoggHKCw#0e?pnQmQ2x73vNJYiC=co64d!=)ygBZDx|%&V9vB) z&Y*0XmRK@ZOCVbbWd&MKrF#K)R!b(ot|eDI(UK}^Azue&I!J}o43Q}85SiQ=QB?XO zVo4Yxki{Vqc@iQQXCo5vWJIQzi-5%m%63560i?F>G*T+Qgh&LpkUDuKJSTy2Ie?LN z?avn4rQ&wl5&^C)lXz(>q@mhUd2em-TWHtHM`>5Qo1!gO%+rQ-0NidUJElENb_sBI zwH4wTcuuMa10AWNl@8bgb!z4AI*+A+IudCQ9a%(so-LK+q zx)OmvS0?YTtEkM-1xp^lJY9)mjjlqvQ&%$Zkgg)*obJzxE4os}LtTaJ4V3?YG95ih zmbo5$LZc_Y%h!`iy!8Z%?t0*}*Hegx=t%@4^klVD^qy7-^~92;dV;zQdU8dPUZvtB z)VZpssC}UKv*J0FN%aJ>KlN(m+WMtZ6Madgt-hj`r~kB~lm0b{pZ+vilzy$Eul_x8 zs=j34D1Dh^y1xADe0{NGwSJ~-o4!Q8U;nB2w7x`fRbN(nUteDF9Ll8nS+Y8PtWL|I z;=QqfMBK_iR_kOSuW&UmR=@q5nn&ub2!Buij);sB^oZ^m6Wc4Ucc1u#zWw?S7??O{ za8h#0kkquH>BBNIhi7Gv7&&V6n6cx=PnbAq@|3C5rsvFdwjwmw^Ixxm`u>|=Np)*DZ~lUXix#V&`Q|JdN{g2I{(rar>gRvXTxt|cmNun= z=Ijb3=ZO>Hf2x1tEc(w@fwE4h>%Teu(betm)7)RL{6F7+&F^Gl{ePW#V*mZO)?fYn zH|7GWV^N;#ex3j3?RV-aPkqmSmkT!Szj;pDJP%br^Xe^1O)bhz`)}Tg)toI@$;p4+ ze+~Rsb><1Xc7t8(-|xS{mi~A5pQ?4easR3(|HksKIs4_`?Xx+l)wuuWtoY4KQbLCQ zI`f45`){qk`uSHUg()g%?AK6z|Gzpv|IhBf=2xHFzd6cxbo#yh_^OWU_ecKuo>#8?Kiz--iWaQ?Mu)0L@z?kN&z%DPjuzas|9@_I z`uC(@TaW#B6Ds`aZ=*1TJDY^`uz z==wYB3pNbf_;KTzO-gfh#&=x?U1H$_IQ&5#URTW8_x%gR)dc zU0OCnUOJKSUXsrks946xNMFZTCf>#n35ppq$w`L%S{XwusQ}+q6+_)E!C`*Zv@{}5!5-Q zsi?WE`Kk1#<|WBvD0>BEpEa*aWZ=6pU@2-_uzpswXFZqj!B5o%{7aE6g|r_F<`c?B zv*dTCv&1jwf)8pX_^h^r@9H4bDFxrvEtb5lk|mbbvc$3zB9lFWuRSp$sGJlZM5qYIQXEt07L@x*RK7P z3T0VPHc`7yE(9Oc3czm%I1JB~Xje*aXiF89;JcClP7b~+1Mo4~0AS!}^3svK3f7S+ zdO#N0D({NB-p^_^xh)kE$BVBsvx1@8F-()b*&<*OixA z=!)g-bf?KWfS<`vS0Ro9|5Uv0hi!pwG@0;8=-8Mu1sIANa0L>dCN+df%5_*SjFOuP6BaOs`HZ1>cn%>KK84s+IoFW%l})B+mMR zIxqcNd9Z$nG+H0N<JR;|QkDUH0cHSxGy}Q9#Xu_YHONv#7)a#t2HzB^P&Up$kulTYXScZqhR7lV z!IQNHwelSXrPqoLdyK_*l}~5Wa0RTqyA{ z6v(<6N)$Z}rP4&eWgE(CCmYJ^W*bW7Dzf{*b=wLg=MN-t$V**K%Rx|v1_`4TAK03>u;I%HfbQ&Cc`Um^(4UvQO3?hq6*AyTKOJJ%X~=?8=2-*dl?P{iIgcL|$oS zB9+*iWXWAjBywMqFXB)Wi6GWQmNC#o9y`?Jjbf~cLY`+*D_?B#RJn(KVG{H8;H^X=5s`2SbJHB(6DLA(xNkC{St!mM`U1+zNoEi;L<(o9iXYbLMw!%RF& zVHUDZ+q_n8W?m|`F&{2)H198QF_+7_nu~Ko%#919pe(_>Vquaw-*}k0jbyaByk?rY zc)@J*;IB)dYy&*E!(5(q&|Fq~)?8k3#at}8XD*OEH?RHv-n>Hmhq*+oX;D{eWFddt z(n2h8v=GQ#Eo$Yy7O~4LeMFQ} zflBDxe*ocwPR}5{&tr*UtEgI3%fIUR@PPqo>~e7hdq1si`z!D2!|XuwY8>4Rm}6=p z*rrsQzqvq7%sDaSZb99{z;_-^&Nb;YPX;T0MkX=IV`x`7gSr_@S?B6MTKId1!yx#) zfS&MJ$|RRKsNO42jF?_K>XQ=sixN2X6BNSXlHXXUzqbp`M$#_-J_&@Ii*hwmo_=zU zsjpSke2_pW>;=g6T3TmR|CuMSvP!k#ho<%a=@l(~3V z=I~LYp9Xe-dHBRrwmEnbTYfK^X)gk0Ev+PzB5|Jy>(9 zZE|PR)Z4+OV<-4Zp?+qSo1^}w2D!Nhl9x2nfZ~Q{Q52`LLF#AX*DXSPghT8RxYZ4x zv(R5d_$f`n5d>){FM|+!oS2X_SUmcMtug)mk{aUJv@#Dhs99+pW=@@U{i&@ckqj{GQz{MO30O*`t% z|KdJ-Gb@;sIy4=&_Q+8TCJT6*fnmd!TsD-W5vG-zRi&4UvhD+)Aiop(wOwL6rw)Z} zmpyXy*zpr!#0~sdb?>QR7xcz%#GaMR;ui)-&N1}~nxPTwKAI$2x1qjoQez~h{SwMg zoK%NS-4Ft@fcaK7tV=U`YNOD@CFDp0FQ)diKh5V=8*JijAUP=2unx)O%`NIF!p@!? zYa_ZsnX8*=)Lvee0V}rV(6sSslK*=vim4j?p zTSre{xuNOp*A~1{Fbkx3cJ4rbNe7eAXkQCx-b3waO56>DZ8whC()6d0`qbvIvR0X1 zg4li|@@THnNRE(=56b}06g?G6GA7wQO~nor2{-V2V9LPol@p+=ZLXGrJzKg3G>TNKgsj8mI#83(THewXP-82y$eS^jvnG{8o+)!;* zDU6!Gku?O^F~#f|np(tgjS2dtwTd>Bnxd+uz$bs?tf~`Zrkj zK{&%L&H784N^&E0iw5}w|EnX}vI5JZSO-Q+VjePFJB$Jz&M<`bG*@ob4 z%Gsr9x!LPs3=LJSkYp4TwNZz@`T^65Cwc5sj#YKif4RX+Q-v-u7Zj6k(Tbo4;*@|A ziahLS@{3si01y}SPL8G&;>J_l#DPFJOmhq679q}ht!?Q~r@82_o4fIZG@g&a*+u(oQMtsMGpL zqG1GB1#shEj_A~ZkEf~^5_CohsIc$`#VUcA6yV3yg%|41Jn#xymXgwmVnJ<`CY;|a zTS)h?aB5HYCe1jBq->%N=wQJa4J5R}pezQABPD+^;2qr`v^r+SQ zWj1JSSC&Bg^9!glGG~d#ZrS*qEusw6OrftrWD-3IzjZQo*qd}NIgF$mCnY8 zYMOJZ*>JQqq|x^es^q46+WT7@n%d8#{f5-M8%`ui$%F)<57P}i6C@wVRr)-o=FKNHA)pCR2nh|Vkv>Q%n53~n$#Z~usRLd!x?sI^ zY&tDWNkbt?Y%OV3g*-aa2ldYGlxQZ6g!RmfHU|wLly3SRBCX9NTPTJxg`?%(VT)%VJU@ZEU~5Qmruz!VWtVqtwARJV!9xYVj<+D z^ymqjgVIze)(qT@;GWDq^Y@q+EiU?5G*R?Y)VughafiLz;J-iGuupq`*8UIsha9Me zFA|Fm+8$bTh;ew(;q&m{$!t7gay0Mg$D;|yDvpI5FFDRRvF3#4$>}HMCsR+|I@RU$ z(bMhE%slh*jNjQEXI;#ndQF z)WiY90+vGaZ5LH)AjOjM@5xZ=D@hZCw&K>AuBql&MNSxLW~N$gyo-tb*2tbfvmQca zYZ#}BUPnq7nyqpP?VRZT*EZ|rMr*==PBw}=6XVn%1OR!KqK;^4whjndAjL*)s;~u` zz*IOpS(9v(u0{y&2Hrs{&eS-mO`ztl15h(s&(0h5P8;pPgi0zIMAu+NB@A)ElAxx_ zYSOEu=2V2?WShX}pm*g!)zl+I3Eew==p^imw6ac-2X$y6r(R{8^eEMwd`V5Y@i^%X zRev=^Wjc8(Z4yS)MubN!C*iVaj+W?kZ^XMXoS-Fetk7osFBd81d$q-3ehGlV3f1eU~Z>H3`HjOv!p8EY~ZDdTGYIg6yLEEIZI6% zRc=pu&k-YqX6xI8Lmj11HCc9gyE}JieBv>ujqHuzn%r{qj#H6sO*E7G(Gs+zMR=a5 zm81-k#Qq>&iCRddrGK0Iw^!(B9PK>mkAvcybP_temB<88f z#M5*_sIuyMZ^A=Jz0t+BDSc9Hs?)2eHkIlqvD>U^b-!W7fj~i^D|;tZ30jYb7Mt)n zf|`^yDRyJj$i1UVBAtMH1BFn_^A~OeWt(aQ5`8*R&MLK8=jga;$#DKOz5!`CABBnTq8>s_3ku% z{FXN~%#!kz8fh2Qc2}iOmDz-G(zKzpc2R4ulnBbIX6B@!o2F!?m7AcFroF2^14^-=Hn390HOK>UHHqn@#f*ies+1vUl-k3DoKbyu+Q_0xA`T5SqRMIOtsC{) z3gL?(G+&@4LQ}1``x7MpD{msr6;K&^S6xiy8K}uh5*iN48K^ZUg}ZW!D82z|QoSh? z+N4QIDPtS1zicbJU&g-ddwIm=ZI_>3wkZ!OpHyC0{-j+0ir1CQE32hVIu8>#o?hHWZ^dWo19|dS>Y7nHDS4MyYR6vfWc_1 z9FuAs2$_Earu)P5>Y**!jUR-60UAWbuJynqvh}|%kop_I^o4o=jUNV_&%XwK@EG~? zhEP3FU3ozHKL8z1sQ(Ya&x@Kuay(6g&VcwAf#nX*HUoajeq15(4}k5)V45nQC1Mw~ zpi^I^1El@}SoM|FB)EY4YdFi`K|KnlH~K><9KbgLvOg!l(=Z*93`Yty93XBCet>EI zXAebx0n?j*n!#ufg?|IuHrEDG@Oxl0?4VBbz-F|A@_!E+)*G5?^lJgRe-0XqmhfB? zV7Fqh7&d@!02YI|HTfH0+d}!@1iv;=w+%U)kf48-5dSk^Gpyj5-vHYh%9{s2C~f#z zK(ZO|BWe+U4Vs2ucq36xY*zK4!7ziee;%R}wIuNV- z_kqpOg8Iz^lYu~aV`#kIP~7OJ3Auj}$aN!H|JR`{tRUkz&=yMn)t?{rU`L1u1p|}- zLcwA90r&$10(1ii1_%Y{2@ng=8=w!sV1OY2sQ~E!*#M&eMgvR$m09*k&0dxlN2j~OPA0QE6IKU);*#JcV&HQBT z{`>#NXvElW;M(D}nooIOnRS*c?FONS9o{<5X+OY856QJ&VdvbYgRWW26^3DLt!-~u zxLPI}b4}K_iZH)mHG_>=3iN_ozhsn}9m6h~U$Q%3;H(>=@1nJUYi&5vGR1kJjYww} zKSygdCbBx|P-b_|;j+V3hs$=X7AH6dS><-s+6tF*M#D|75F!`m4}efo2_;v#z5$R9 z2Z#WO0uTW70Eh;N0Z?7%1jzRV=m*drU;w~CfI$E$0L1za1t4f310WNCpoI|tBLS2& zF&5I}0LB9-X=5^^rvOX^m;um~P8I-eA;4k)f?k#a5cIMNU^Re}Zp>l*TL2KW(-y!9 zfS?^W03QH?c7gyx0m1;H0pbAq0TA>w3?LIA3t$9*5P+boIRNtkRs*a9*bJ}*K;`GH zC$|~ZbG!Rx=0ZHme_ZRYrfrdHLGg?Z-P>8Z3U+k(=Catfh4t~aIlkI4b2X-Wv5^{k zrkzONI8v9D)be<2do5#3=7BndM86gE>KNJD-e9WF7q z`CCJl2QPJ~bv*Bs!TpY|8y_SPT zR6y^x4%d3el*zK6R?T*L;CFWGvhmoqQ4X@~Efe*-4$155bthn;-m15VzPz%5oq z@PDcEo}Pws%iNgUm!Y>E)>c(HymOE^>RPdUgooP4r!)ncJjQJXAB ztKf_9KOD=lt%MV|^|T(d^Rvh3Y2!GCo_gzQJl=cE=PcxW40GWM(|jHM;D33=xkIXx zbd7WJxi7YheCGzt;C|FSec2JcJ0lP^pIJ~i1pQjP4*oC4%{p!2|3$2u?#=7UpUGV$ zIlAL^a<$Gt-b*h{y?DQ=xyjg4r(3yNy>&68$>%Pom)qpGz`XN6<-IK5*EKEQBF_`c zyYdeHZ!$+cu1J>MUGFZI5^RQ7UtP8+j~y)>srNnid&AbA-)IxWFP#;`zaA9Je=$3)Y&QQ%s|)ZS)jB(0aXvQZk2yV@`#9%2 z+t2;Ux9U(Ao2j2uG<)8G`NG(-`b^{D9m;)V*~dH7?OZzPrNbX>W!bMC_T`0k=;%`N z*we+^rApt&WvW-Jlt`DHk+Gj_jYO?}=1g?yezC_wS@yn#1um!3L|68^_$7C)dgb!X zc_5p8=uHPc4jwRyTQ$Pn6muQDHcb=&%*cJ2=DlTx-DPVBtW zaK5{xf1#*AbiuvIeWSa4^;h?^MSrw5@wjg`G{3D!dyh7*e(U>qj9WW?ZLWv?T8FiB zJvvR<;j#VT0T19+bM~!0_@w*V+lMZM{;_mxdVuHS!p)*#MqWN8n`GHLJhyln?kK9U z@_J)6*sF)1Pm;fv(0Dyt57YkFVX;P36{?aKBy^x1gUsMd3{cUV=O z#aQqA-ql94MGvYixPO`tv0^ne6K7VQM9;hjjv#*(1)@j?@*ss{Wa{Kh{PtJx1Obyr(kP~n<;7-8ZfXV=t`D^yUz!iZ+g3E~HdgLVb|oG7_;IVd!^-43U` zt)e6kEj@RUp=grmk06WSK=17$&)~qZ_e^BjMN1Qd_dgE_t_d0&e5_YSaJJs);E%}} zJ~M)2Yz&GwZvP=#Se=h+K6{#97F;GY3Xx^ohCFyaca{}@&-1+G$dIs*)R5sJCHq;X zxA!gx=^wly7l&O6yB)SIl^>pXCGe`xpRrk-A3i-Hzfn&UMmXpU_=t?h-jRc%Y!-);Y{y{E%?hn)`J9Kv{K@m3uUXr1XG%U5mLRi1)srby4e*)=A_<_NiS~UWhm1gLFZBk*CuTIW zGt-^v!SrN$F};~S%q~n{W>=;k)1Mi@3}kj=1~G$~u(6n-%rIs+GlCh(jA9CyuQZQp z9@7*fS4XUAJ7+|I{bH*Q*=6lrvV}MQ)0F=#yCz$hJtNyi+fvg`voF#QVQ7KdM@w5v zM@vu3K+90eLd!<0wU&dHlNPFlY4No>Yx!vTY6WYBX+>y7Y6-OBw0dg|&`Q#xMmAHU zheltGSdB3nx8YE8g)v7Xoj9yF`Te_ZG1YmN^9tuWwm`qe`G<3&{&@Wv9b_F+T+X|6 zH;6TuW-#Bt%5939gY#vBKiqz}8F&0{kkRo*M~6;*I(Zm=+Ib*r1P52a}62p zy_^Se+GO7|yyz}7?CP=9!`0}P$6%v4&lyHFo_=1djOKWidhIvbXLQ0S)O)6PziwN- zE4?px*BM#*v^L)6bI@m>Pl*p^{J_W6_?^#JAM-AqyPWHy;fwkn@_p-j#W`^@`I^+7x|V)L>1mnjib zA~KGjh}auZ5^+A_W}xBua`T4~Pa@t%NX=nt4ynaZ2a!X`ZfFh0Q8S~MMcboJc^ut!IqFi>%c#*&pQFA;$+A;> zw6@N@(qCYCb$;+{!EQmPzyktV_R4KT&(sLa*k1*n`7Z?TAIY-q&L*54-eXA*o@GXg zQxCsr|LBnD&fz`IRj03vzIm=7dUI~thiZ zd-wF|IjE=klG!$nrAY;ar74~}dUmhUj%gY50sXf4jIZ_i@B5wH!)98?ZpdHi^Fm}% zJkg39YdF!gOuogl-Km++;s*B$D{~Tc*l-|ke8H~RzTOp|9+`*tz7gB9*WJlq@-*~h zYZ5k0ihUMq-Rnxh^YWmwdu7)*oME@_g>mwF>07@j-_uK$eY@9bZS$)ueG+=#)t+%h zx~flH&503lx7jsTuYAJd#%$>mF3Y}KcI3*;D^KHO*^7H^vRWEf6Sw%JpT*gefz};+ zyW$V7I9ZSCZE3CWyxaT5lRuy2^e($r(wmuUc>U9-bnDl>XX!r6cXxa!_U-erkB4M< zyweJo_=Na{@tZkVpA}xlEiS}gj8DAjS&)45X}nEB-xeJcIwfdy4oVmoD!8THSFbOz zi=6uU^mV98?Q36g>W)pnrJ?e{?0)fg-b8ra6>l|b>2Y^*;Jkht`*k?{;_#V%SNmP- z$L;r1#O~j!zjMDfc@{0i@sIk)-dlLj{Bw$4%stBitL~k;*Kcu$mDrS4p#q)K1^q`^s^M`YO-tNLy+sP22@<0LG3SaNmMyXu7jn)tJ-7gZ@X z-I8jnJ)bG6MN*|b|}RcRTAC22OnpI?BKPJ8lVV#VUt z9f!IN4IesWXq3^R>(T7JW7loZKUzNY$k4K(mxi8comy^|_ra-p=*ywCL&qn3rtcKF z+TMGW_xfwP!7%S(>|uR|Z9B@+8&T8iZPl=6!?fOh8Ft;)JOj@-`($*xju~l}G!0~{ zdt~@!$lvB+1^Ejy=I&r-Dl!Z*IkmCF-QVAmypz~Tk|b@U@=VR)qa_Q5mw9y?zIOg? zNuqR;aFp~|=8yLWrR*$=EZeMhSzp?qS+zn=$eNWEXKSDG ztbApbEc;kiC8wNoA?s**c+ID@X>rf8-ef(FFv_;aA1NB&?v@4N~5c6tZ%OoUfXC+RWr)^fLrPR~fo$)7QHre^Q$8)ezO;><& zeAs*Il51bABpX}58FJOrYm{Cu<5%oG=wM+Fuij=|H`#5!vQ4mk&}Dt6r<@U`w>TT8 zrcJyy`C_tJ^}1vayJ79)^~dh4YwIwk>*%?5<#soZ6k@|h&K>>0pnO!t=rP(u?WT`9 z@VwKggnm~?-fwHzKC=BYyFj}IqVj?ncEj84X?L!jK|6FFx!`qsP5Z>LPpp#0^c)jC=Jv9EK=?p@1=8V+8*Xnp$Y@vFvlTKnN!=MkMuIwy%zSJrgg zykb)4-R}FnI~p6U!Pn`EcaKHJ+tz52IqOKfYU3k5d5;b|9F~O5 zT$7%EaP3y@g=?8>bqlY1B$w~@h_TJ~$iBUMPJu_yb%WLo@ECc_#K3Fw$xRQ8wruiU ze*G!oxd02K4AA z?6$0%V2{I|W9{vWhmD;W?6Gy=#&XfhBD*t)={}Qz#qFPs+4{=$v&q$9pI~9Kd+;0bGkv_adPRH*A8ziL=W5<5>0`LTWCKzBD6axh-aVb& zPJ4CU>Mk33ZQ`?t)!5g?(&LYhM`Eo;eF#g(E}oD_{4nnyl^JDXao~i{X~)yoq9%ww zY3th=juX8<-)30V`RQ?~*Gb#uq!b>XMVeY{V zEDgxZf1g>|pF803y@$N>p&hW{mgait178i)-J6{_C-IBLD&G_S)eF|Pn&3azuVwz5 zjIX-IMSp_S+UJDWoEXeX39lM#R#)Ye()yYAvlnr@`>r0cW5~)OD~23=78G1!GOegY zgzkK0vTg0c)K|}kJWqLk)g)8&UBusJ8aynx&cr`0yGH2Mx^+xVn`5%bqlY+K4od^p{gKI$WrBEp9V3;pMladoN!MK5NyZ`jsfT`ti`9 zDuyYV`BETwwZF|m)`Fkjqx*ofCXY|CDsOrK)g+jdIw zezYWKFzO*HoY^g`%@U6SE$=DpJ}IdNi`;US3|kiBCdiD*oRrxqlbty&L!9yc-NuYg zQeVmD%;9aiZC^D!yUo1JFA`khCMkaHF#J?p&ns=Nm6Vo$DS7chD9RsD>wcFnXPQQF_KS6p^-@C^6wxR;2pMifC`_Sm4!)u3kpBXRKAG}++ac0%sOsCX`7nhe@w!LQMA9}q@uZel@d!4{y`DEXnsiyb0t7om zrJ4b)UhH*V7<4--zN+elPPS?ywGsvu!?yAsqvn;a>{L`UVLS1>*VaEb&!V1ki z!$QKM!-j-)k2`eOEj-Z6HC)qN*L-pK>hM1kk%+p)RP)6V`^`^AOo%Nt7e_pb5StHb zJ2)~Ua#EyeRI8{&i-{JKqSi&tvp5>H%;J62?ZmSI3nz&M6@nWAnLreMFnVLRm6mOL zI`s66%JBdcL#W|{y*Kq9XYJajXP=RMiu(km>c=B3tXl9BrX_4mxRhYhH??AC z-=lra`*rNMxWD-T*8%+otZKOt)g1V~CEsr1Kx@u2?!JMYI3EVOw=zm>muR1eC%Pv7 zk*G09Z;-*DQG-g;i&|9;HA}L!;Uod8PuiCxN;;GDJn3E1=cF%5vZTP|+~lIP`F`ogBl)4sJ|TBp|g(@N5oakjSRxE&k% zp!LV0xu{Wki}Ww;ZPMM-1Je7a4^Ho3dm+8QtS&vf&XN|}jpH&u7nzd}ixKW9t z6THu-)bdu2nU0=I`JvZq?DDbS#{SG*$sH9~GU3{UX%lxj{`qn4#HWrYCjL3mY?8wy zpGi(`k&}*d#!Om2sc4e(I{EtKl~a05eLux*N+N&q)bI{A(~PHe zo;JYKds_Etanppl)21z*CY|=@w5<+BaRoV@W_-)h=>Nye_*~6=?fj!{PXuJwB;c~PYsJ$Ae2ECv;Ytt~|1G`O1J*9al%JKCt@b>W%Ac*MD@G z<)QGHa3^)c=MA!KFVK5hZnOleKQj6&8s*u?d&lN`H`|?AT=1h{>dlAqZnPTTI)3|_ zDt=*P;iPS&3-158lE;}VH#)PW+fK_}W!%xb9~n6BDSQ(8W{aNYf~WnW z!18`;&!nQ|BHeC&#U7Kk@f`MF+&^Jl%fyTWV*6>_5rOfCS{$CU)v377Dfsa4!%M)Y zc0l{g;r%zC9=2}z?C{IO+Q-fm^*^?~owts`dRg}QW0PBUuaq30eF8bzV@@?U8m#Ti zv$yW97_|TF!~M_t%_u1^S?lb6S(eQ@-%ps{Z>&h?yz{o6=cn5$&W|Z=wIn6Q?${l- zRBZkyS@sXkpj{_RceOoO6qhRQD!bfA_m7153;c_VOKdO7vV|7|BB$4wOn3?D9~Xln zz>9RraoGDy8+G55*o~MO{^iozvJB@IFn3SNZnUVm>>ctVUQ+%I?WcEb(cEj-t}iq8 z69A@>s9_Y0eLy-yd_SXh!i`od*}3J3I?~(2LuCXlUg- zXC0B;-NMJz(V_U<)@b9go;@BMd?0yXH_!NC=)vV2upY5BS`xVoa+1Jivb%hsydQzOg1QBzm*2ix{VSTTFh!fsbMsW0EW z-23wAOV?M?uP?uT`#SJV;Txm3E#LKhx3S03+UK>&Z9;}Dm2L@CNKM-I9CYP_P1}Bx z4f(5GM9T~l=@AKz#d^E9*10PpTWnNi)3g$5;$bnG7UM{EkmHO4ybR8N#M zID952&awX#Bi$g53&+KC@S{xKjv*a5Kb`J5?sw9d6gP?O(*0oPDT7xGp2EvY5ZH1$ zO?%QYGp)kWaKN{~v4ed&|LEk~d8gCNta{kKjZW(1SMBFJ4seQb8qz&;VA#cd zA%}bB#v}0|35R2B;&P_dTCswVJvVUuUNIL>aK0>dzW03lsC)m1xjT<*Bfs+oug=lw zo=GR^T$9OZyPH1Jlf+4P(n&h$$lSNN&1Jw~W3a*C`vSW1%uMpkOpZx1>C9v%GtpTp zU8qojEFsHf4wXwPl~h=TRak{7K>@ObIm~Gr*so^ynb*wjKKt6|wf`*L@7M49DM8z9 zz(}Rfuk;D#La?*(pOEL8+-hvOt=rk%oF4m|!q0!e?u?jv9)Id^d;Qyg{N1B3{L%b_ z2j(6hJkETHv-H6C|BWm}llF_EPB^gWK}3cj}TE}D{f{);bMPm!PhoN3~#*50p` z{oO0~U*}!UOYq#o3%XyP%V|FFy<{Jh$EXw7sJ6du?C-s`;;f^Yu@?T{PQ& zQ_Hqj&R=cxHTHfJ{y*M*`Impke&d5Jzxvx}I(~NKD+M2Dd+{5Z0>fM9zrA}hSn$=h z9ymLhTKJQ~&$K@+c)o4B^9$`B%S4C$)enCChx z>$~}p+^_yS8kNv2kYB;NJu{2k)l3y1~Kb>Kz{XoWY<{NeI^e!HH{LMYp zjz8P(y!w+2|90n2P0inLcmD9rW z;=qX}Es=}&Ur5~-LYZeX<*S?XnnK@B${`r-6X6v>) zUx%}uTR%EbRjixKy!(j@X*1u7zR7)jyVLQl?atH1UxS}6ufO^3mm6NL{P<7RhdkpP zKJZsR_5AoR=fCJ*2t4x*3;FS>i~siU^t0Z=zQ)hhe~q~r>UgE&jhp|crzQR)A~2E3 z1kYV40hwH(;)DP)S#^T)r4k@th76KLZY4kfne-Cmmq7~L_9`6zIvfLvZ-D)993X&9 z`X(Iv7I+Je0|byD*-=vh1dz$T8f-XF0tApCxrsmt5I}-tUr`AVK!W6k2PHrN36fpL zR?1fB+ICyO&CU01_xpLIwyRL9&;r1PCBOvZJX42vD4Y86bcJiVnyC0VGIv zIh6nbBuMr;l>h-GNOnAx00AUO_C1vV0VGKFft3IOBv71(3=lv9#RbR!0VGIvM3n#m zBuMr}l>h-GNOp^r00AUOc1e{00VGIvj+FobBv5og1_&TQvTv#c2p~bSd#VHoAc5jN z$N&K(P#};20!X0vF=T)M5+r-8N`L?oDE<;MKmZAn{bwaW011*ES0x}pvJ#5I_ROzd{BG zAVIP_tON*9Y=K=k4w7wsB|rcPU~i}b0VGg-0B!>aAc5k8kO2Znp!g7EfB-T%e;8&! z0>!hCf#M^u0>yK%0um^mhZ&F{*@0IA1du@Sr!WH&C_W0e0R)gh@d9Lk01_xZ1{olL z1d5MC1_&U5;uDYo0!W~E5i&pk2^61%3=lv9#it+x1du=hJ!>UE0GXUW12a&37G{6| z5-9!*GC%+c6rY0(5I}-tS6c}XKmx_*At!wSGEjUGW`HDD=yW51Om@4!3^O2s;wx|) zKmeJX_rMHDpx6r;Ab=z5I}`dTU_E|)6K=HyeO1KM^19xMx6%0I3dhwYO==gd*u-!?1AXo8Ycxdsl zXBrg6&-@1NrXy&M)3gd@P7K4%ZkrF^SNg}|I8Pk>4J~G z0Uv$y11A(mp85QTzVM;{(c1X``}+FQhmq~hTbK~(-~E32_jTX@#gE*n-_Ft&nTuRSR8g?#9u#xmF1}J0EbA!Gta61oqhNWoYDHd^4+pOhu-pwUu--1%aecJ`O`de^l$&R=)x<%J-X-S9&!)0XLrvV zdoS+&*+;hbX1|!W@7BKSAG!Sz`6J$!GT!*Y%RhKI<7Ik}^X1UX$5TG?d_3h>&n>0= z=D82N()5buxxVLaK7ad_=~q@?*?Q#@uYTjz%2%6SZFx2F+{WOU;3|Lh4I=ca_x-Q6(VmJf=c|LCa(#BY^W2wa|Kad^#?rOc+Aim} z-+kfyuNC#uYwqu)LFew7WxDI*zonDU-Mp8o8vAJG3tzZ=(mJ#YQN$+5qEx9dk;#qXEDU-?31_fOw@ z*!`{LzrR%y6JohBWAjH}9Vy#_Ki$7fywW~!@?Xau{!W?JUYaPW{d(W{rmz3% zn;-ht_doixx6Z%q`r-L^ue{rq`bK)&9!q+wrKI?sysg60;;-I(2F^MAZ+@TzDf#5c zi_{-dW~vU<^xfWb_;B4{AG_52Uh{nO$ERmo&bP9yldVlB{(i2j{ohWdcl7=+tMlTX zpPv5G@r!S%ljkV@CvRI@n_IJ6i(BH>{MPc;y{*L7+Sc^e!>x@ic`LrPvNg5!U~6?N zwl%l4v^BZ4u(iH5vvq&#(U!FJc&F%rZ}0imo)7LmyZa}*@9aSpAKdRx38vUn z`chcfnDXIQs1$FCD&>zU*Hhdnns0r0Z?9r{_eZ;d59I9R?iB14?&R&{@6_)!>>Szo z)7=+#?oM)Vc(bcmFzpRuW_eo=jhI{o#vgo-PiYhb)RnE zo_$~0cVpk!o7|gk?ECt@Z|{3+pYoN|SAM(ipZ5J~?{D`0{oY^ieSh!o_Wsk}f83k0 z@1=bo-~GYvXZE%1d}vqR{p9|sU1|5jyL)y&xcB+Jtve@nPVVq;{>z(xc=KQ1WZzW1 z`HMGy`R2%*Hbqr&O>tfE;o>93O~rHN@pEj~k5m3z%3r4ZRmxwd{3PY4DgQm?m+({k z=P5r+`MZ?AP5GOYAEdmM@)s#Dr+hKxA5!2kc*<{6KAQ50luxI8?ms@8MgPZVK9(|_ zBB#uxoK88DayI1?yD#p3a`#iapWgkMt@!t|NdMzYFjJkSPFLfqO7(43k&07| zsXQ9D=DOyFW>Ax^$&<%PE)UG&>Yb;YML}hHODl~n&X-lO{?aF=A@=g)2=zC>Ckj)PHWC+&T8xw zPW4d))lUsj4!9b!lX6jml$*Lvd8iu{N!_G|s9|b^8l}7xMctxk%18Mrh6+$YDnxPA z7_J-Jv3sKuu70sVF5GBr!hQS%f_Rj4XeI+b39stl?O zRlX`uWmcI~Hr0?SSAA2Jr*^7c>Or+zeO>KQ-%yk4o9ZF;x@uLmp;}XIs5RF73* z)m_!RYEHGSda9aH$*P2ELA9uQsG3$qRTC;v6;TPQSyfyWr|we^s06h@J){T~L|>ND!oYOPwQM%8+Ck6NYH zsMTt-+M>3q8`Vwfqv~VoX7zD(i@H_asqRppQn#zy)F;&^)ECs3)z?*S)qtvBbwlM* z4XRu!yUL*=R0cJsHmQwjr|O#Ok!ne`qFPodRjH~pRi8@hJ*_&UYFC|7omX8@T~=LD zwW?02GStUZ%_>Y~R1K>~)T3&zno{3V(`ujEuhx0>UKFlhjd_h;lh^FEc&*-Eug!~l z`@D89;qCVhcpctrUZ>aP9rU`r*S#L^4KL}v=^gS8dq=#ZUayz(-ty93pV#kYyaCv^ z81#m`oOjH7+Z*=s-f{08Z^SEjC%kvPQLpHo^xpGMc_nYmJMEqE%HCP;oOj+E_ultD z@Fu(q-iO{r?~-@fyW)N1UG=Vc*S#BFwO8Za^lo_{d!KlpdbhnhUL|#aN~O}MbSi_& zq_U`NDu>FY@~C{OfGVU8QbklTRYH|gWmGv;K^>whsVb_Ps-bGB!&DtrPc=|Ss79)Z zI!Ya*nyKSd3)M=UpiWY4R6BKw>YzHQ)6^O2EOm}LPhFrcQkSU9)D`L~)kSqvJ(P-4 zQyNN3=_oygQU(g6jFgEoQx?if^-?xUOIQ4XG+uSE!5B#p)7u znfj2rRQ*78Uv*He)TV0Fv>9}TwoH3STdvKdHQIx80j<`mw5hrSI;Ad6x1*iXNxES} zrB3#DPWM1h z8+?XLQk4!^x+2{Px|wdJ zi*-kIEp(yope|c?j6P1U>1_0hZe8c1t@I;ZAHAyE(8YB)y{YS`o%8^0r|;_$x-H#9 zorzx7E$WtZgY-4JmtN4B=?6N3cF-2O*_Vp0>W}-D_37xAep6rLd#c~iH~3n7M}3d= z+xmz4EcCGNx<8>$Ll^XG`gMJyug>>G|43i$Tht%(WuV#Uie8CkqD%TF-vPAMSL@r+ z*ZYq6B8D4&zdvMP{C)#(U=2?HxZ#@L?H~5v^iLWDgWccnziS8@2K+;Q+8;Iy`U(GS zgTsHv;PQ_d0*0tz#4j3d`MrLhf5PDL_xVXbXBhP}2FhPy$~8>|<^wsVV$)&M!$2Z1 z7sxX$1f~O3rXo|NX)AO*@yv49w;F%_B)nF>tz0yBXJfpSxcX*N)8iU;JtK~t@% z)Rb?^HZ2D3SZ-Q4%eW;J3WmZVJ~UzpSSBp2g$_{`Unpw1ZSh!cSj5l`8)NZX{Gp(w zChWD0hj>fa;VA9 zG6O`E9_WvHqVDLm=&gZ)C_6A19f~@mH=_eiyOVHkO)XFLIeVQeQ@C?&YGZ0=YI|yP z%IaL2GCLnlIh^ZLkEd)-i}UH!lc|2^>eS|7VkSPbHMlXjG_x=>JF`CccyMlJZE$<= z{>+1!CxcH1muDW%EY27`oAan=Z65QOJnQoY&&K@f`~~uQ;vzYifY&}wI1`@4dGgw# zb8&vgv3QBBAAYc$SiUn78M(PeuC)RUoV^^mPrU88P@99Ca*)~R!~F71vkX2{cC*A8mkTBSZ8oiR)sWP@li zdkX0?UAgXn{)Df=RBxIJ-3txdJlb+P;6GxTvP@d;SuCCkU8>$q7odgcNgwN! z&~#|pG82+QGnSY|vdE#9@R7)9R4MHYT0L9y`Pypjh%I1uI#cNz+A7^4U8Qc$P@pZ; zHfl-jP3@4@Ls#og(wX`jbhfI$4rf;`Ouu@K}fdDh2|}@mbfJzx*wVi zB|@Bi)Yck489oti3wv#>J!lWvLjzRQ8@&~!qufAn;DD4W4LV)U>S?9>fIHQl?p~RB zG?V7;_1HWM%fo9!Yuv^`ZLO|Gm#ru1a3R?`X7 zLWr`R3j1vBVHu}ww`^hiZTpygY=9pa9|#ZJ9!QhYrL~z1_v#GpxskX`K3pyzY0?gB zE9epJsP?d~PM4!U?Hl*s@wb~Eh8UaQ))Z-s6luNMdR@SlMz_%ox*-cg+7bGk@4Qd&Pxvw&GnW}ws58D6j~h7y*ek#YO6NTzh%ndx3!uB2OZoUK%QOv`Em+MxD{;j!VV;k4ozb1vUDb8!O7&Ixa(#_{ zl&;hl>WlSd`Xc=yeYO6ezC>T4uhsX!m2!`xUA`LhFnS*CM0LJyUp;yR)%se{OTKgH z1+*4zM=$u!qDRqFXa{=H*M^=zPok$$m9GvxgKB)uXcKzH*NEzU$Iw=^0ag1h`yTl3 z`wwCZ{zd5S=VAdS_S z4zfDaWm5*5%3d@*4(Ls}Y?mpY#Y|^SJ*KNBC95)JvRUjEliGB_bl$WRNM{S#bnb~| zIkX;HwJ5Etp+(DjTvq*@<` zo?4V#7N-hlaOu`1%hS-K(57W2v=Leg9k5;u&)Cp#%y!S#6~1dzhi7dU!dJsr!YdZZ zrVAUwXT$S$EIeluY~!|`@NJtuJYh42&xN&N(RMz3Dcl{Nv_)<6wrSfP+ZZ0PT@K5( zDVrwD+rqZf;WObAkvsMY`}xR2`=v<4emXK~pRr%>kJ(Q}7VUTK)AkFIJJG9=j!1Ll zY@|IR*)K;#`?CGM{hmE)pR-?yv_;ND&P7@x7bAlGcx1}HWKY;zBeV7ed)zMDJ0lP5 ze3Xk$MSaoRQ5o9KlLOJ{{6H|uMw#ejG&&H82BP-{#-kGhV^JY`H+nBRJ>ZXu1EFYS zU}j(2j94)LrJzb*IYt?yZ>;ccz@<&X%*? zX>x{~=RP1mp4pf=8QGp$hvx5-na!Dl?m~BwduOK4qm(n^+w&ezYJ9-s@*IdeJ^kA#Wyz5?4qS z*+r6xq9OO9Yw^b7^~J$O&tk*y%JQS-ijmdjrRBBd<>lg`oks^&t45Tol_Q5nsz*lG zylWF9!pPl`k+sPBo%Qz7j?q)2!uqXI{pRwhZu8-04&ANm($(wh^b~zq@1-xJ7+k~p zB6;fx`S@iH|uHosJ=;mi$115qHoaqXg#VyyHTUhu8gbXvaGq*gIqb6 zW6kAkCRezEE8w!N`5Ycj*p_TJ!@c3_;bq&6@F-kon+y|Sci0!c750Rk;l8jwVhgX? z9N~4_ip>%p4)=%cVQ=`6jR`N<7Hxy!fpDJnq3v3j3j4!D;gPU4tcn;TSmd!?9eHBk zvTGyjc0)uH(M7r=tMz2pXA-t`2Mr ztPIRX??>fmVqkqB7F`;MM;{I>3?!n90}rDQq7Mev29}~T(S_)Aba~*>zlIxk#>dAC&XuN_Rp0U_3W|(~}=3J%#aMPf>ixlM~O2>qsV{ zB?Ac!=})LhU!ruVWN3YPb9rO=$Z+Fu({So)&B*PIv5l3{7Hvq2qV?=k`?h^08gaHt zrE)cG^QAHkY!#Pp-CB;0v}${Fo%C^ii~caSVViK?bqdZCT26agJEpCn!&;T@G_BUP z>QCtXv;oC^N3b-e9&5nruxf6=)NgW_2-6X^5wn{LtcBKt)O3JG zc8_?-#fkOs#z}aHr`2(Eo4!LIqyzLReTW{T8Tz!oQ{S#Xsb^_BYC{KnPTw`35$!{J z(SD!ZXGJm8j1s;R>sd&5*=y}%x2o7r~uG<%*s!=7YMu`TSd=>*%#o?~66W9*RWx~bOM$kkXIxFT!0 zwVtcxj&Q}+8m`P*Vr}9|t%t0Y)@o~&^)Oe*9p%E|E!$A!c6c_d#Am`gw#T-Guo#{S zr{VX*vG5aHIzAVc!{gxx;d|kUa44JzN5jEzDlUZ|h9|>g;X7eAd;q^2j)b4uxNtnY zZ4<(Lcs{Ho1|!!ZbmV%(7fB_&k>SWlgo^kh)8RlQOH3o!$UuaQj7AO+=>!uAMqCj` z#2N8K+>s38R^&$HW~4vzIJy~4btoNa;#M?WREitXOmRKB9o-q&9(X$NBzi#H8aUus zjqXGrMW03=52T7~(I*2L;wdTSl$_JfD^jO)K{_d2mM%$M(s^mpc}|*fwoCV%SEVUu zhjd1|D4mwtq_a}Fe8gQTACjx(TDjg`A(zRA2?!QJR?kPpQx;^pzm zcyYWWUL7xuk9un3HSw}ImoSjQL^yFfQ58qYu>_kKPw)vn8A^CPWkWX?A1^;ye!5&c za(E2A|!^k?-B^cp&V_M>O9a^^gC4y#~BOoy$< zxTSCgo<%H%GYQ$*Em0nfypyOK=^Q;n>vd=83;J{V^ZJW=7wSaazCrZ5?+{bTT)-}2 zSFnrNRqQf$%QR}DOti^sYUVDoE!=Ug$y#r1ur^wcT8~(pt;ejn_)2&=oP%fMS$H0v ziSv=MNDje8#v^$|IFe1|61OASVvd+A&N?4Dd!%`1!l{xLoN?!U=bZC_v)LVr9Csgc zA9Wv&-||EfLgMIf{YZ!QlHO-(<&Ikm@d7*_&nF6qJCQ{v?djCk(&O55beO)Z@51uL z)7m>)p7!`|_}pkDQb^>BM)Hi-pp9tH)2NO_Z=lyv4_d|aU@EMd>Bd;oB{pF4n;6px zYm42JX+A6)n248&{y<#=mJ!NgDw3VwsrcxEm=E z(;Wq3v4}}F36-ppPO?b2q?HVkMp}02r4^@HGD$|MS2`vimruG|QC*1Aw zQMpw=a|hOjtXEVI7PSvtVPUu*uHaSe)%+3HG+>9Cwzx zU_Ebb#54ILcoW`$mlGL$1@S0yh**h~5!GU?nBk}qtHer?kT#ra&UI&>WS1T}Ps<&0 zySr09 zuh3EY78>%gJ{k@9f~YGaLk5XWBagilY@1#1FVa^W4dfT&t2p$S}$>ztQWX` zHjB^Y^Z0E3INppO#gE}Rd<$Mp)DX4AVXAWtvq%EgI z>X!zkPWM^aDV=ejlTW+PxzEcT?z8T*@ze3n_?dV|ym>ftHEY$sc5l7h+mHFsi0P^} zs_oT@v>zSw4YGpiv9n97(&sq3wW4-Xi|cH%o*k^Gk`g;PUadmVRExq zxGUDnTq~Z>pTG*$bNE?&J+c-#Levut#6~2~aa7EAG>I4GOYWP}MfbLI zGI2iMM~VsMO7?2b>OF0r?kYWohS3-u@!j!_`y_gb*6MGg9IDY@$1X7*O!VFJP5Le~ z6TS#KjtaiJaNR{7jrwFCiN$<(&?(=v?*?`goALEBYNm&=G8i*w8p4c>g_$;)nPKb} z=EXEj7o%eWn2nh+=^5EXV+JO`&YG?=K5X9P$0&@!Q059_Vn(oTM$4#}QS1gwvOZSD z`PqjimK|XiOkS2^X*O=sSV!5LtkxQ2d#v5uEw+mrhF6+Nm{iskliC_$d$;2N zWLh-otQ?D4@0*6$3%Hika|X^}wZe5e&76k2gctJ`tI2BRN_ZV-wqjhb)x;UCM$W>a z9A>?YtGSE#6}+6Uo(Mq%tSwgl@D4ZqA9J#_lAx)@rlsnE42ZSQwu%nYGbQB2ZhzwyTa)L+|@`M6M ziQ_ntFBCaih+4<6)G4-zLsFY~N<1mnI8KQ5jxnj)p>&-VN2E$etJp5?I1f6S#pB`u z*C9uhqr%Z4-jZmEmAc)$l;z5Fg`_U`sFdLfOKGlj7bh9zEACUoZAs(yOIO`$w^#B> zloXJ%U6Uk0Vm#nMW%yEeYh{aDBX`MHWxvNHUx`m8LLPOzCoUy8k1F03C&+t=%kiu6e)6`* zPL6pTWOqF12`*BLbBSAv(}{{9IWdzMAY+NyL}-y&WEbg0-(q0Vzj%E3#Bl3y%kYtr z+||aB11tANn6;^qbECddVPj(B?uKh?O4~)-b$UIj*Xa%V2~m2?jbV>WW9)6##@VdB_ywX^ zh-rJY)7oy@p&QT3JH{%XEUCqb2k{I*%^-7JO^IS#;fZ z4}Ij5(M8`w-!!`Fn?Y}5ljyQ<&UY7mh$eh1z9}?@&imrN`@RKq4o#pBd=F3&jiPZ> z!aR(FiDHYGopCX4<_2>g8)OJ(9=pbnjDTHdrm+|{z}&$i*f{nOo5iNEFy>_LVLUd6 zEn#7H2J2@gFcF)?64(Ov0F$veb{AVUO|S>do2JJmrFoX!HsKs@O*7wN@3A|kN%k%~ z&C2YC>4_=TY`0FaTc!-Nz&a74Yu0OAKR3WRt)m>n4O-pYAUA9svJzI8^}6*I zH^e!tcFxD$!H#$E*YIK7gJ0rL@ojt$Z^K7$0>4Of@%=cC zllUO+#5?&>yq&+oU*OAxQsE?jRJcN%5UPaZ!bP#0I4PVGx`f|gJdPOd_5h=+u$gps%`>fxF|l|qMbNo){m1dKQ$ z)CpFi)6pg3;(%xr+Z=;ptK*7zRcv&ebZEs>jt+-T>=UnvCmcr|8nIh+i3Sl9dqhGs ziT$EQJmwIj7DuzgDcVG{s1i$Ey<)oq74_nAN0Z~BWEZWXT8v8*k}M^pVwah?FXg-P zT+7m3X@QT z=;GSAo3zF!Jm&aya)`X2NF;8M3yFB*L4qWQ$@zqbyh&CKS>lyLbwlCB+M&ZkcNT9i zRu6HDCx`jP@x`&lnxWK{jFrrl^p&iYw&Apu!quZA1*>p@rPZd9VYXC!?%nsqD$yaW*N&g&$07tmYL;7tfSTd zcN-7lC_j$#I1ArSVLXIi5CV8FffIeidEt^^BhCsJg>%Abhg+<0txD6L5%+a@)a`ZO zkUcUf<8fPjG4U`lLXMKzE3)>oKoEA~x)@oU9+}*j)q1TF{0@FaxGJ1+tVxGleepT% zHQfp}#KhTbvw(LA{lrMi?#|w(pJVAwDO$KdYfade(N|Fu$uXM zxQVy$llU|q=8U|RpTaRdhD$gqz=>1BMK}nZU=XemPQpV_qF!(l8bKvoC$z$4#|`m< zW6|agEBihM`l#c`NP1 z#j7Q&%_BvtGb8sl*iqxAY4g4o*Z1ikp&V0Y=BzXLnC%8Z5{w-ax*U(CE$M;Qt{-Dk zjR%Zd>|^#07vaXNx2<7oFF%V95jTlj;+1<(r0ek`L&rxFTDR`HZcyjZxpV{ib-G{g z&@a?Uz-0Zn&nURXZY99brc@Jqe{a8|6}xkLFv!*Z=vb_ zC+I4=gB~)5nKWa8vCx=ltTbjDqfDvs4wGY?W#*WBOoXX0&M?KsgGQN|X6`b#nF%J> zSY%8$PBJ3HGbKie8E49k^Gt>@-zYFKrp%aS%rj0gHNjeQtGObWA8a(|25Zb2!DHr< z;0}8rm>zt>76*?68_b!(%HTFzA8ZIV1*?O3!O~!}xypRR+-|NgSDMp;C(KRe!$D=R z&3xRP6Fg}y3T6k7nrnk)!8&teFe_MXt_mIu)|<c;5KIl$1rG(w z%?a+lb%B$(d)5cm32vHuzzN(c$6Ft954lB7w9Z>)ZkAi(=C~La;%dwT|!v-_JYwTl^^R;ji-x z_)R{<+jx#2=6Rmx6F9}s;ZN}ud>voIah~PFJj37SNxqLCEjs>yTVRHCHjUyo19HK~zm_rgd(dd{EdmIsBTD&2!;=HJH$fDYDPqaA3#YZCQ z@J?DCxv}h6T`V(J8S8e`yHaC^V_C8C*iqMES4~VAtB!TJiepD&?XH|yohvU^6+7-q zkDYWKaTUbUVo#+*u@+ZDY+E|!DvdR}GGaxs{8(YE!BrnSxAn- ztRmLxYIK#vYGb_2$pKlCC*^=!mcw$yeOC_26Eg39C_j)znU!PmjLf+s@@?5Cv+i;C zoP5XamlxzIc~%a)r{(*y;J)pS%0YQiX5@J}$b#&P55+z4 zb?f67oh%b5;JpTBt z_-H&5-|&pbA9+?hq4Mfj|bxqJ>GaYPQ`;{#=87`79J&b z5*(Snkh`#*ph@MzY9d5tEo>zi@=0PdF-AU4_(_&bTUbwIE~G9r4b3gK47Cn54$Ur3 zFU~AB4^1w{7LN_xTRc8=bVyv37Ujj_mBN)nD-|ncD+gE33>U4O9uAPDE1koYDP(1FYpt>UE;1F z3Q=N$hzgIzO>sk97uUo-$ClXXYKk3;opv3K-E~j6m*ji#$@o-!%agZoo19-fF;um3 zarB|~hR&%^HB=jGjHk?xIlF_Kee5|ow5WCIA27AX`^>Rmhq*b}X@1H*v@TdD`6w^) zclil^Qjmm6;+`N9Q^FImId(kO5_=@C$WiyQyedoaSbRF3zYr$dhN@TQN9yU*=HtOd z>kfX8hzb1;!qFN#5fj~$ZaF>^k1tMdENL5PQkQ1P_Mb5iIF_|7!L#PpAWyDn6U>QV z>ezv?9e7>Vv@zwFvhP6O6frH#2(oZsGIdfpxh?L94#&yZhP*DX$(!!cgt6G*lb%`~`+uf0^NsAtR7w zs56us3jMi;Dno@o+mK^O3mo(p8EOoN{YCylL#g2*Q)@WnFEJc8WE#r+d4@`VdfZsQr_3UfYq$=GE)5XcPl7%v)IjrGQ(#&xE_SQuDh7MX2k znYn6Qvz{~VFh`7fbAF&Js0wO>7lUZf7&HgZ1uvMdnsdf1W?j${yc#?kJUZ56RtGNy zuLO1G?qIjMGiV5!f>+E2b9>NezGSwVv0z8gWUd>_4s@9>nlA)T15SixB4Sk_o>?_+DlSp8T=@48jlTR4{5 zdvL63EWNj7EPL#!^@%mRH)E`Mta|MD*pac)vBt65v14ORV>!KLV_R??%mZ-!(uT3j z-r}*ezSgm#vAnSzYhLe$wQ}t6*s(r|m-&*uqQ0!YX+Fl+^v(0-eUJI9@$|k8eu+Qc zH^o2YkM>peHT4ztCHNhFoj=%@)0Z*6%`3-?`>Og<$M5q`_(eW_ysj^^ueNWMU*R9| zrF{?i1wOlPj?Wy=?OWzs`WpLY`TD-Yea(HF{E@zru`Rx#@4$FQ-x`0YFV0u=mG$NK z<@L=8Y2y$0r$RyBf&S{ghs3(@l(;WEAm)gii3MVrNDym8!9@DRvhbK#CANhbB6lKf zVxHI#Hi+_xiV2y>p4cLu2n%q9t!-jO*b*KIPl)vXMPXiu3lD_*#HO%Gr1n1+N+!j0BKAAsRHF<0@;23n2O%_a!IEEcXlhu<)C$lDtC*6*kN!md=3MX$k zGA2tWk5BFpHdn=DTdZ=jdD81RIO%fu982!>$-|Silg60E)g9Bu)UH#pUe`red(0NY zU8iH3*x8sp)*CzTQn^ZJt*&lYN6Z@2xJ*g(u2>vDC)F1XIQ46ZA&i?K_w zzL+D{AG_jm#(G?+t26dkz8t&cGP^L>RhKSyE@pJ0G59Ofb=HN&RIxKLoePf=kBePTPirFV}?d&}=cUE#|%*yWnjj%V3 zZkun0q^B8D8%2=5 z5kEhD$eo>@p5{*h$vTG5Qd_Fc+c8)60|CY2vh) zOP_M5mGKfzIK4Q18D}h{g|fVk*T!q&UoAe%H_Q9@tGM6tHvT65As(_ETY{GAc-RuK zoLG)5@8VVQTw=(YPGl1U)>J}D2#M@zA~9&?6MfcvqTd=z#1qNHh;`U1CMInSskYRV ztu8fg8?kkyCTyd&`czY@In|PCPh}DxQ)9N)RA;I&^)cOTZ%p^tJJSv6x^#WIIo+0S zO?RX}q`T}b>GpJ2x+#rk4l+lXuNfjkW)3r__DKhyjb=}?Tz1NFk_+d6eA=PD7O2=RLHXKM z<&r6DTrXWq%32rT*0~KTy&F(zRhufkN~hAguN!LBrWYeotdMklGZ6#4fR1oior$i0Wr7a^q z_+Amc+SkNe;yv+#s3y9#J=$90IZ;l0AYKx0h-X9@SPr)NUVyc}X5Tws1=#4T_ci#Q zf-Sx}-+SLP@T0HE_Z)2X4F)CxQvq4PXXpud4buVAAP?*t<^p|z`9N>LZVKy)j7!M2w`U77KM+U-x8z_UvFcvs8RDv^sk-%sG3vHT^kS&CU^d@u28Zw2p zLZHbKfk?dA;WH{0l zdCI*+-*B(FXJ|QB!9C~7xHsrqw3K_xUB~jF6=)S#$-P2fanI38^aWRiKI5vn*Jus* zj;lsli(sjXH^&>}oaNLKvDC+77TyxIG{ry08{%=xg!MczY8|s)CdRF2i9(_`b&=>x zP1|}>-KnnBjIGz+o$g8dGgOAN`!ca?JR8YvPe3z?dC4DLCvBP3c1i>pe=ZFIN$s=&oSz~Bt!w`Of;iygl6#hvAcyPuZZ6s?LD zMdO}Qxu*Q!GPx1ANd>!&sx3FHl6z&|dGBlBBT-KbXzPdu;uSckeF^sXx_zC#E?=*2 zIj|I14JZOD0i$Ur^eJRAZHGo8qmjZ^E%%-qPR-edQiG}f)If^2_ojtxE`PDOw6ndm zyi>CKXt#Z@d9P_trEJ^lP_*o|D?0XC_ZnPg_eWQ&ORdx>+gweqW>=jHP}aNFl`XDD zm(`7^%qoW)b=%z*_m;}$#@q_;l6S@X4yXa%0E^yLZ#D21SoU@h3tpwSnP?~4h<@Lc zuajsY`h26>5p5IEN{nfTwL{uQqKg>xP57$8ao>pVEjV_~dmQqO`i6aPz)9b0kT$3T zs(>;OGJG?v2i5|+A=nf&XaYdM71|4(ZEcx8hsGo4TVs*=$XsM5G98(SOh%?6vk_UO zfve*_ay94&u8C{p>bcf1ek_1XK=ed*&&B0KGf=Gfe6?$eUf zT?>qByNR8pm7UAQ$Gg3I-FrQIoqL^%uDw2&PTAw?aCN)dU7)hdrB!YyH2?$2&ib?Dx6V=BPwb$i@))h9RZ-gO_izqohY78T*%cH2~&-Zih@yY4l5OOgUdk-%AmV6(;Ca@V)_}+nYz8T+wZ`#)Y&iWR8 zN?$El57vPn!5Z+?UffIv1z!|~@-VigehKON5 zWHuotJan;znlRHrh%s19o{%@>4t)u&MU;`1NDF zcstj|b#U$R_h<|E4y{8!psiddSBv(=GnQ#<)*@ND5X^9ABvB~u~d;b zkbWY{ZI8qmYq3}&mWt!4(bR%%B-L+^+mqRtUCN5tRMz9r=69F+U0YtnJEuhhAJIkI zj6;{-TN-dR%1QT;+w4WX^IDm9&1Vf@0ZZU8M1;tY)ufK7B3)cP+JFwn2jYYAp?JAi zCeB(XQi06pC8tWRwFO*D7Vm<#1#AWPm)uKFcDof_ifz?bx60>P`m*F*!k2m!y^8+5 zzCFEi*fr=Ha{1hpdr!5a+Esm0H3F?b3xIi>fhNG}UDnPJ)5NvFsci?_z;&P6x1x<3 z909>#4;+QoBM*^oZX~{JTe8hM4wgn-3hmdB%`~t#xHsy8lt!iD`l{_wxm5cqzx&wz zS!MHf0$sqGcE{Tf^a8tHhqnjl2HJp6-tB7weIMZTwgVm4g-Axo3AJ{Xm?svA1!9g^ z)he}mUk}&~YJ8ob&escW`ue~PUkBI)f14LboUv~8k8PLn_6FntQR1A)*dQ!sQK@`W}cV8js7MYPux*2hQ* zQihZxn~^675Gh6MCVk`)(#!R5BU~Rh%nfjj=n&V0Hlu@FKbNamYfCxqLX=ak6E~&usaSW!O{)T`uc~kEkehJ_ zRYA936?Px1++N)K#q04Ncn`gVci-#sjsfEU>GgUw#F2Lb7zLEXwNZgk5$lAS&=R0l ztJP~2gh9JOY-#~Qr`__IeI_65Lw%Uf>O*`M-zZ20f`OxeKkzMZ95^$SK$nKE0bgL> z^aQ#xJc2F^bl@=*2oyu-hKEon5D7&?MGzDEY&s3OOl&9=Itg*1JySSTiJ%d4yuB5WakVVQ|vS&Fesi#$FXKex!@ z)A4I8b^MKZ-I!bD)&*;|IFnknO{Jz&qv?tCSb97i%p~l5ZZn^A7 zRG<np>j$WG)nvK`rtyg^Nx{0P8*Vs(>|M6;J?H!a{5juofYkhP*zn*x^*X%0|3}j+cfNLyAGgqRXzdDFxM;`_g^xj;Z3Rg8RY^ z0+Ki5O?$OK!m9xQKnGmQV?fG#9fRaedPT33*d`o=oiJCA@B|=qHCZ!=mS&>T?WdTGUgF;WGZEzFkemeh&R%Jd_X=T z?~ytL;0DnRPQyKBhS4FkA00r!xGw$_+l=eu+W1DiQB+zL)>Z3rY9*z%scZ}B#k4$~ z&la+QrLx@-#gfaZbSRfyMV^G}$}Ot&K;E16UU&^a&U@}Hc+b3_h+P8J?hqEO9F&3c zAmw{Re}w9x68a(il%Y&M(=(=mX+jziki#Q~k%P!4r{(mVjvGM@@n;wmH^$ejD(jg2 zi-TS&_FQ@)z@#(k7QtiR0_gWWrmquTm}AqpeJQ=SyscburBq4PLr;mP2!Dthfk${L z{uqCPm*7`k6Hta1<2d2e`U#u%kl5B@S`Tqdd?EG;ht{e+AV|WlJt977zY=bOAbf051H{TK%@TtI%Zw+L8YES{LgR7ttTn0~kO;8p6nl7a)=qGdw z^pq~6o1qtUCH;(kPM6c)Ot0t$=q3G;iJIOqtf`WzVuGeOOf^%(oS0rQFPX53Hoay- zrds9$^OkwRFs82SYg8TcHPVbwkrt#42}FoU#N>}0MH-<_q!npLI*@VnI6_9c5nsf@ z!JLB|MG*c58zAZ`NP;$~1IXXd6+jI(ol@z3$CxGj#wUtpi&D2K*( z;+2>=j>Na)_P8@{itolNFh_hpZjD!A&oN6Jj=SPxXp7h+c8D5lo7gI9t=-~=wMXm} z*R5S*vj|w#*0of-*n7Q-rL}2n%9JX#n%c0f+W?!+HfdL;SJNx$<+LI_VV|;#_LEFF zbC$ixUS%({=h+2^+<`m1jsr(L7t5XJq5MVuowL^2SD1HxURJmsd!Be6c_dY-r_59C zDaT*n&v6)dhF9Q~_)~mG8zA^1fdtH$19udp|m&gzb@r_`yn z^t64(UYv_$igK6v#e!>jRI%#%q|B-+JZaTaPeGMYovHGwXP%r21eR;*Wxzd z)iwM6Ep7$uz#AL^s_{>N1K0taz)QReufZ+A7JvaFaY}$-lyGYaEw25lJ<=X%L&OOY zCOp~*ks!Wk86rl+39ptTNUckIsAY-ITAmPyb6?7*1q;5cPw?e@n_$An`+A|YZv#B@ zL7)kY`;4II(}8(k(wFf`K0O%o!Qj5u0B(Vu&_}v~Zlc@h4|FZv4K>oObRGSUuA!Uh z_jEno19d^|bO+Qz4>N+Po0&vLnWSlw$(h=iF{YWBxXuE)GM$^onL#FQ%9zq7$y6}4 zFlVMACTohBMwo<2H04d5Ob64-^fFycA9HD%Vp67lW`OBoE=+7>5Sc>8kZ@!e8ArrO zFA|N6B77tg89^qHlgJQ~i1Z^uBp#VYhEMvCScHkpAY5bsIgQBC6?7gw;@lj?;oMhF zfy%DUKwi$z9dbTypCh;h^nhDNmrxJ)g>!Kvw}=L~W6l>R;tiN5UW;{M{&*Ai5yRuH zSO*q}*I|e8HY^xFj(>?aV(+m|>?q!XdE@mM9dE`yU|-|y7#XMH{o<%-v`&bdR?s>i zj*CO0$!f6niF)gZI3_~YVR2A|QU)7j+q8kU&6GB!Pnm3nlqLnFbg7M$-Ug;r>3RE{ zU7ZHf>uH&t&qOn)88*XZQubITX@8hIbdU}qM>vf6qQb+%Rlc~;>)c;HR}FY~0iX85 zcj=?KZtPnewwhALl-wTAl;rY`^4%TfnBuvo5&wWU;2-flpdPQolf;#;i0Y!d>3(Pc z>ZE(<4!RF2f(M~#W)?|C=8#o1#09x;TsY3eLvc7|v~8sxvf43=Ki4NIEi)ND+opqEq6e2-}bpV%xH5 z(n3bEdzPy_m#Q{=A85r}a2Ie+ToPF#M;vSOL_m8%6o@l|)|x>Sd_)b?w{ZKN0MUzWYg zSE|oSH}KM90rBNx^()V7Pm%he`e3=*^95+faliw3fnqYKEh4XoAzH@Bk##h}op5YC zkvUu**;Beo)NeeU_yN#?9|9$0Nc)g{M1Ipgp-QR86b6n$W6)!Gfsr$h;Pc2ugyjaY z0jv+}$A++35w)7FmXtQVZ}TR9)|>R6ka?dwc)`903H- zjRyb<=*5qL9=r?h$3s96D5D1OKAZ%;0)Bu7z5$hFSo@ePCCkVvvVwd{J||z2C)!i( z6Y>SgY9rcbWI4%bquNj4OX>x+3qGY}^bS}_J)<1p9#}THZ&qK4&JUsViiaUyMinri^vjE#9l>~k%#PM18*#K)-^6%NwpP&r9_%&H+*26ySj& zyoRhM-;%sGu8nD5lY;gQ`Hrfk-c!r;3cW-t=p|^8ehoimpRncZGq#K^z5az{xg58N zf@m@>##8YHQ7+n3j+8C6WY?z+=_k2F4$gmDo>R1qGeWC#>0`^nW)G2rX4pVBX zhiat;s1~Y;@_IFfsUz?h{0e>p=P4gJPPJ2Bu%41rYg8K*1U1wU)kl2+PrzA< z1t%##NPqzl2gBeL)j`cr&D1irPBl>5^fCPg`b_WAAiWAX=&v+JZ$L*hN;9CFw$KEv zffSIE*3x^ljrP+{S`U%58rq@1(0bZKf1@{OFHO^HGzA)Ihz6i7+DyCX0Ih{|kcM7^ zHfbNd38}7avLFA^A3g? z2lD|oGqo_lxR`YYW7G`Fd}5r8i2)fMv&n2TUS^AV4;z?0<|C|UG>nC5g5SXPFvMt? z8u);I3)`4#xCO3*?TnGxU_LVl(+qo<2H4H)F#F6GW`rGOJJ@!%ncYNG$T&O3uF?%` z3;U5BWSiIt_C5QKZDsq}E>@4cVEb4Dg3uq>SL_>hhOJ{?voG07R)e&$0HQ-0*-my9 znPg|#HKc~^VF%c1c8b*^8%PBUBE#%kwwtYD>)BdXjjSWR>>NAI4zbT!B~s28@g+Qr zKIRKtF<;6<=oYF+&$$Zz34g)8;a~81?ul^48PKPEHIJe%`AhB*U&cS=-}0~dD&B~i zP&0bQ)$j=VoPWkw@~?#=;j!>acqE+1iv>BBjz1S(2vS^zy%fp?1y&_I6qHyY{)&Gp zlnR;n8(|S!!gBF4p;~w*T*g@M z7e%GGDMF$_ypHm-u8Br*U0fCw;)^uHFU(2syHG)Z8DukDJT)VDMu5A~uT=lGYmOWkS9(A`` z;j!Zwj^f1{EB-{Yh40}m9KlO8`}htH;}(1ucj7j@O!FBxlQMFhEY&TL<+?|@W%9Z1sZL2I zLG;=bB!Dc9P#aVX)Kdx2L_t&vl1wKoFbRfa z`rrr?WLU<>NDR-MFo#SR9AkQ6k>QwjILd^WR`@IPjfpcf!!Q_fN^4n|-C)(MlC>fV zwg;B67G#A*5f!`28re;Doz<~0vc{TOIlI7`*ewKQ&4`87ut$uZ1z3m$*=5#l zWD%s5H?Ui56AvL4w1@BD+xSL)fVZP{d?(+ol-FzMHqA7-~b? z`8}~#*uXvt?}a9zL#Pu5g>|f3Xb^gYcA-zG7j&2wYZUs0cS5hA!ditEp;P!EXs}JJ zS?Cf#tW8j30JbeU#Lwc6=n~DMQ~V+h2v*T;U1AY&SG0?mxFy1(N3@8jcpY3Sezxvg zZK7KYr0CR+&7X4G!l_+bBt@n6#c1j{wQXZkC#hhHO@&h5QlD&&v@`uFy>18WJL&DT zJ^e8II9r@OvzKHG_Pjl3f0TWhdy%Wm6=kb(PqNQ*g&dj71qa@G)VXO_YBM$V!!7i&japk&4 z?dem0!H@8A4S^rv6z;`w{Hdl=JvJhkuu)-5m=qw4 z5WkAJcqkr-qi=`5&WQt4iDIq1M_HCbSd$xG$G_{-7*!R-q*>n4|?1jB7 z`!uU?yvnUOE^`;T^ITb>yzs2>v{1DhUG7&q$Q*b^d#tI{f}%$ER_CGepqKhWozotu zB>W`&IQ%HQ&w5xl`x)IsVQfm65vGMN)^tireNJ!KFYVR2*SQbQMFrp)P=6ww`epZ+hyw*(0mDbuTvTt&$j;mZn zVM#Hh9#(5S8=gURwdR%PrRJTcN>i&j#@}jQYicxaG%qv_x?0_5vR>Dyd$0ST+a=%W z_Q;RA9kNdMNdH8CL_O9Qz)LU;l?Q#)6?jYqs1kjU3Q-J2QUn#I9_qhQG*zTO2TS!7 z<)^+<#rg~I3@i)MkPkY9P9OsELf@bO6og2~58==OR26(4d>nil3_&l04D=N$4Za9I z3swdzg2&L4;1N_2o`h%M%J35WJUj=xkr&}b_*r-vo`NZ87M_OZVL3bjufPki41O9W z5HIo-Ay^+0VkveHVc28#5DBmc$TxN$q1i+BTH@hx#Dg3m2ka6186nxPtdAuTKO1Dj zEQNT{C4P-p@bkQim+>pS3&l}2??%6(2PnX=@*Y&q`_Kh`k*Clj^b4|&YIr|-h_3Tr zPy!{d%jBY<7OscVf(2U=)`Tr=MX+NFf(lQ}LS^5X0iJNQ+T1A|6=dA}@x-n8=8Ql-pJ;y~q-_pqNW}ZTZw? z>cDnr%chE?htgTmNrtvgrKS+N`yVH<;(|(xN+jaIU zdy%6u`#f8feVHwGyv=>cDIM=}HM#e>+FVKA?|7Im$`|La9G4C(Z_O7upBE|%9nL=I zYT;AidWcBwldpnR;S<)0IWR$dBt6QnC<6Fs^_RURH1*Vk5RAnuk>&9JQby0=%4AI>rbg_eU-japMV4?28j>{@z5#s zAy^$&!D@I7ejR=j=GYj^B5^i|oL(34Q{)7RAR#2menSM7XQK#%gb|Q8@OmENgXku| zhe5(8?DO>s{SGFHSurD~#UpE(R4yIao=RVBCcDx8D*Mp!I$M`pbEq7T^ADX$MYpa? zR~P&kT!)Q3hnRSyu%^&@#?@nL25-=W@k8=}#7TjAr;k%L`ULe>-wg*Kz-2H>r+&%K1=lmKkAcIj!IK!lt|^NI(>saL%r9hpw3_t8VL3W z^H2dA3`$U6Fb53>yMjHzG}IC74h{t~&`2-~ZNMMGP2t*bbNF5OW4I;U7;XsHhik%h z;rHPrA|U5%akL~_6wR||?BnRe=mq;ET3{bV6G#S;5Q$AAB9dmaY=*sLuhe?f54Mke!Q7ZxfCZC)2wTGAWWahZo{3+r z#mS;%PAo}Yh{x7~_%N9leOABqQlzX`;-lm%DPVgcy_P83ODSkOwpB^Aty=Qgt|2M* zuW7_irv0{~G;A+%Ja)XzK61RtHs#cg#@xE2KKC)#oNLKF$v5Pjd0XC|cjW7wFAG(L z7lpxsxv*B~cd8YQnlmVieBx>A8%b4IR|v`}^`yE*6UCb}r+Bl5CMmK{7a)&GKiRJf zlHbS@f3g3u|B1iCU*>=6f9SuU%Kgv$kNlAp91qR}&!NfS zXmBbx9lU_9pxIzYxINq&ZVT&R5Z1z*@bhS8v^@GWnnx~?9CC#ekY~|~Xj!z#e2$zU z7f5Mzmye>Kc@A~+d;AW+&!3_$o<(ttz%bzevj|@75POm=O_n8t*7D>xYsmIas+DS_ zx6*s*o9#GFrTytZ+Lxx&@3OVon(PxtYYuR<<;wD^I6RJbYT7h0yhoG3`!wwuhK!Jdx@q0GE=4PfjwNSwBf1dz+~1~u;qTCQ=_~#1`fh!vzSOu7d|{jqRv8}~ zWx=OLd9cLz(D>X~VSHvRH&z65>44+d zp;x@w9niemeZBi~w|ZB(x3Z_&Q|uWOCdKNWQL(lMDGptvE3L#`gzLbSQf8Er67p<$ zjGh&>LJfNm59(P`n?1{Ffi!ti_&Hv{uZ@`a8GeBeX>z!P4{C-rS^N^u<1$^6JS7vP zNXm6lk|PbC7#SydvRD7sf56xHtNjbQe*J5It^b|BM_=cE<^SNX^1t`L@%QPK!KL6@ za5=abTnWB3t_BssS4IrB!2RK&a96l5Y=wKn-QmG-Pq;HY5U!1unV%-#Mr)#PqA&fW z=J(O+=o53f`Casomr#NydAo3oJxf+3pC>;`by6t(E&U-|mwlgY&uJX6LaAO=k7-6V zMF+(PSNMn~LuSboxu}!KG}+*9@_+O<`Umv&{z3i7@f%~c@wHJER0l`GV__$3gB`FP z9t{tNo1*p6hUjy1WAsC`F8b8`%=|H0VWzHeQeSx=pGJ@PPl7|(7J}HGKw~??XJJ=x z3IXgzvMO1be3d-0Myw4IYkQfjmm;>4bR>=1!)Ye{FIb^PcG|Hp_*?xQ{z1PfYzS(Cw&3TWF4$zW1Z#}7#x~%nFt6s$My23w4uf?Gjnu+azvcY^ldUhti3onFUncth=m=~k6Xh*cl{KEX! z+!n1i4@Fy|ti37rqTSKy zs66`GJRY5m4o7>VFU^YZV6@iU6;1OwRN_VcQS2Noj^+81*eRdoFVSy2%|DD4#jf}` zALB!OktNEf_)EUT@;Da79$T)^2%q2se2~we4=raX%jftcUu-$%8LYrx@E0i0Ke80i zJeuLp`79dd&-fFbu$ zM;endwhpOZlF|<|ne;`vT{=sjri(H*dpv!WPN%K*N11H;JbjsF)5V!oI+y0tiF8S( zkdCHfX(63YWAFqcdCXXw7zKD;-ZA&m4`}j_h+sTeiZ{kZs8}XX~?F z*$qcuZZOxI>(343x^msQj$BW!GpBXv9MAI4^A-8Ze9-YUPdmOj_VSOzC_O`+cTwlG{6D~uL8og;-|=b&@QIpMSvumW1xDdd%pjwby}(Q&DuRH!lAx%nI z+v7}W=1InGuX6Ndd$T>+Go^Cp-R|k~+uhpTn%(t1Okq`M_D}_|r{1$D%!(ry<+@b* zTwh%m%5!DWn%{M$bb8j+fLf#8zHS=SYP-kbv3eFYGR@-yxn@c8uhJ{@tNL00ykF*D)GzCm`XxOc z{1WsAyNx}@gJ75O2=>8WVK}@MUW+QDrIs?wi&(iOD_jekLK+)L=4=_Pcx_ozdQfqs z*Qxc3{$)R)U)O8&8~P=Gzj46WcReWUH68~2uqs*=duqvIgUQik!8(*Yv*xX1$#d&S za!Sfs^EOxh;Tohf=(Ku;f5orUe+`Zp2aQL;VIvV7GLk_gd<+B8k7jkW-rQhbk2acL z#wsn(ELE1*u?owp*bB>ZOF=jna@d)W$MQl>m`IK%FRYWvdFjkHCrwKQ+l(|Tm1W8^ z4*P3IfA*#0m17{g=>Q!=xyMd-zSOy&_vD{AYYOT@$=ayV9M(i%T3%Tmtu>j?Z5!&> zmXJfMetxv-U-K*d$3b6k%s6hOg8rZ-><9;7G>nBmg>B*Ou>JZn;0)8SF1itIF*lpF z(N^=@*qd0jr8;&YTnWXAqC^3^6lBRu>s(Tvyt2+D=aaL^sbrCDIw_MDB)Rl7^DHx% zH8}K+7x}7une$7&%c)au>UYCCVKBNGJ;O>84--qth2(N_F?nHIl$NArX(&6K^X50z zHL*ttP#uKd#foh!$xB;B=6R;t@iMPh!@4b9s5Y(e%d%|q=Ug=AUI*1G|m{O zjCt~}jpakEHulc)*7Dv`V|ko-ns|~Z zPn=^1@v=l|;*ss4?Xj)Irbw}Yb<7B&hdb=A?E1g!Rkzl0lOHHo*03Y%8aNjr9JL7_qQW_>sq2`(B>f(yna zBO5#j6XC<~QTP-l!+7{>_;b`9{Sw`d?nOUE`^`h<5%W%TH#%%~MLp5|=%{(n?2PuA z2h1&&_E>AICDs+|jCI7CW6hSPSX->s@;*_Y_>lORs7ur)8WPQk#za%1$a;mnOSB|( zNqrJZ8j>4HFsVsulh18Hax-a>K9G(o0)XW2Qc{YyX&O z$uwp5>~)#Q6X)qe(U>^2` zz0uy-n7Pf;9qWs=TUrx6F=MjQhDq(2)=XPQo~?5%<~YZeBkDMH9ORpwN{uO5ez0t$ z!ZFw%K8WJcPRqD?!c0bq=wY-!HWV9-4a7Puor(5DTcRWJ!nTz}l2tZ1X_KsyLn^h~ zrH)KjrZcmUUCu6Muj2x8h@(3HCjU17%-Q197uGbB<}Qmlxty~Xo*v9NRhr=#nsiG4 zH*!I(ISvQHaae%AMyJhF=A&p=!jiNmvE*ypE89z3y+e`x=vd7uauv?QJfh=*-@rV6~dK06Gfy78+C^4AmPxK^8tPib^ti{%`#HZw5awq9Z?kAneced@MBl$ULPuh|- zwl}tF+iub=9ZFB_9toF7>6zUt?MgcmA-SYI=|K7{mD|hg+tMfLi?lEGW(G2EZGD-M z%uuE$GoI;98EHj!}%PO-QS#?&EZFH<>f$VBlm2GgKj?Em9)8+IzZEih> zIW}@&&f-wz1~ZzRI;YI7<;;%v`MP{V{zJYoUz@MV^Nx@CxFhCxm#@$J^3R>r^};2Q zKgyH&_l3H`hr(20vM^DYE{r%wox6qof>{Un8JBw7+AUSgz#6p+43 zF^Q5+rJy8AeyPIllfFqIX)ZI9k!RL3OPSfsWM(BZpIOLEXOx+Vj4ZR9QDoLKQyCzm z$*f+3xfe57)}C#0*s`Cp&TO*-$?CG&Y^wv!TC!W&&8#u2%7EDx2b?u!^;v7ykcD%O z>~_|ig|b^Ya}LT`9gdtWXLDF{Sk9C)*XUw6wu6%#KHQ$jJ96kBryd~F`AIOj7 zyYnsizI<^X>Uc=L=_3K9WDqpX5V%ChyPFc{cwoAIt~x;rz!!eW9_? zP-reR6=n-F1w#QUI0}=_S*N=&=R|cL`%bpX`O<082|)F_U+tW!KzEa3+A*m znz!iJ6Rl26zi2MAj^(ZTWOUfF83SWO79de!eQJGXEw=`fbv7`wnK5Ma8LxdW>&kx4 zwmUxM#`6<-(a~C%D~vfcetk@n$ViFcMk18_mYmGLa<&!b3#-OdREip6O5;ZxlXPc0 z9G>icb}E0GUo&ndbO~)DoQx*fWF&c#thZ$)V+OZFnJ?MB+-}b9*vZZ2XY$i|35H_N ztvM-wy{bN!=ko0ZW8t8XhAXY7$%5p~&gYlSV1i4YN$1jqWX_l}oem_kl{v7(8Nz;O zKgi2T#7j)nYUUY?ibtDSs4mXGIOJ39*9g|0$p0WXYL+H7d%FuU#8&m9&< zE&7BzCo4SNxj23*tC7{pKFAtmjj|S5tE@xTDeIB-$_8YEvJu&+Y(h3En~}}RoU(1% z?zNrflWa#;Cwne?A$uu%C3`Kamd(lLWipvuwjf)SeU`ao`?7$HmIYeWBAU~87a#DUI|0?&%DY;*MEDy+Oc~JgM9+ETiu>3?Gk+brs{Gr?~ zJC$>CULKRj<$^pR7v)KLN-oLM^6MfZ&&l)hg8WQ=F29gp%CF=_3&jf$7fKeIWN&26 zvP#+cKmN(D|9{C?|L^niAOGYh|Mi@I|4Tpp+gE@6rnnLvwguKj%JP5%3vo63uZn?ELcZ(jZn zV>i{4^EbzT`wwpZCGn4Mevki`n_0K==Gp(GyIIItZuandH!uG-c@zDU(9MbV*i95Y zyLtZ4?%dkE`h{ETGyl!4&@cR*TfejX_imYsfBn`^f9W@G*@pk+t--m{TmOEj^486t zRNdZZ#&PTde--*3T{8zWu+a{_<`3xBkZM|5E+S zx1V|b-fiH|f8+Kq+5gGygIvjN&99f;{-ygBx9|PhtJ|L6uem+{z3uj|{f)lczVFkw z@1Fmg+sWVl0iC`{lh=IGZQbp!+NUj%-^cH6U;Z<`HSy; zcmAbe^3K)V|90nBfBz5fTz>zvJHKsSxpVceH}2T8raLu~`{%2_ zdT;pZpWaKjpWORf$rtx}sQ35or!~!G8t1_j~==J^I{z@5k`hd#;wyz3*83-u!&w9)Ee~hlaUd{9$I| zzy0Cr;vfF-;Q#nXKXBB)_~Gw2m;4ZY{p<(&w`zV!T(Il{F>*7^*{Ih@U=hu!+9q8!(T}jepsElasM3o zx%>b8{a?EesQ=D=6ZJpeSN-kZyniuNbbsn!m)+0JR^M;1)!+Y4_ucQfJ$nDozW=NH z9slO{?*HSz@^A0|A^oTKrNZL60?M{=h7f3x0tzX;vE|KtDZz5o4t=sy25r}r&% z>i)6&>i$p0Za%=*e)fSa|5qOn!Y@C#Ecu5Iz8n7O1EBuVgI{_0^nvQnUqATWY~2I$ zSK1$JWrrU8UT*e*;itd*z@_|m55~X!=>xW0_TVoI@5u*qGnWtk1pU8gd+(^G(&+CuSVl+bp!6agrGs4u>)1&sAt9tEq!-c~ zA-$S}6e*!vN5`&X87ua#=vc5Jwh`u4PvTk9 zsr9@aYxX>JdV}YauNytPqIP*+esaW<0G#uDJ#fQw#=(1@eS}WW`5)hV9^doL(_>`F z6R4cz)dz%log5S81!PV4n%gteYY15CHD39<*Py7->-$NxmzM{A)Q96W2q?YgwXXMq zf$UyDXN#AtXSbL9)ZbplCuh9wUAgS_6}azJ@$tFWCsel=P~7L`RSELO?4IOZ15EW+ z+>i18l$++g=xmmEKl?ZDE?}*9g9zp=vf;d2Sxj%#YoT`=TkRc%v3e_>*Lru3Z1aB7 ze!zRgC0@fik;J|A1FeNOaj_EC)4>9c6$pwDnes}C@I z%cuY4L!Zf%XFgGb?|ohk{_q*zH`aG+i>L3$z7SuzG|t!OXR7b%Pjh|m`z-NAoml7F zGK}zj@}Ld-FrDFX`)`Z|;Kee#1bZU+(@0zrJ_LewDvu`t7Zm=l9FVQa|DSb$;!b62CjS z1i!Can0^!5gnmcaYQH-z7QbbRYQGX$i(kjxoqqH89rhdj{oSuke%)^#(C+tq@P%LZ zkB@#Hhraj$z!?7lsh5B2(NKTTnQ;GMpG1EJFv~v*Sn5AC0`Ui`k^UeM(*NmUl0Tt` z>mcQ`Gej%{eKL$`1dsL^6&inh<^)k!9N#t&HuLSu0Qboh5wVzPyRse zkpJi52?4Dj?|^8nU%;so5dpJ1lLMXsvjdpGvVgBXc>!y&g#m+TOu!((3K$%a1)xU^ z0U=}72Yi!M2R!TF6wtSQPryL;v4C!mGXXik^?~Fmp*s-oXu*3Z#&^q`bP;sI^P_}RUl)(=F zDJ54!r+|mzryL&0nDT1h{3#gb?^6Jvc#1q1KLsQvO?d+FrvOJ(Q-I2@q4tsJhO3S8elwR!B`si0SXP3;&w zGZnaTV`}G*N29UtrYiitOa=YyoBCsLTu@J!U(kZ~u%MoieG=4J)fLp* z`8`Mx1PXrhadNQ2XKHZa%*f!1W%0q4hV)?nf!V<)mM;o^{&7`sv#2OINLdp6sI@E@ zTFDMJJrf7B&#Hn~jME1{lRAP?eNDjtY-jNJBNu}Is=XDQ{`FBX(AE_! zX!#P{#~BU|8k`vNDaS7)3UpOSdu@G4sn3>>hrqrNP1DhkTe5Q@A7ZYC08bx;EEGNuG4ynYbanm= z`8Yg26af2&4s8q#70r(i9eR=(`f=fc(5H%(p?|UqLd(CGh7RUZLKmelLKT24RH4;| z!amqSk3OppZG5vOH2uq-&~Bfjp@;9E4ej1{GqmgDqtJBAi_p)&$52J#&(P0rL19hD zCWQfqgThEaY*=+h!g1@5fMk;MEvscQ^asYe?+@{d}L=&KxAxpcqFMe zKJrmzM&uc)5u8UlLwJ1_^92t2>PKvzU#ELY?#F4xs>tu>-H~3M zTOvm;?v4D*^Kj%C&9O+y+jEg;_Fj$TUA`OX!|sTb55JGh{q;*^F91ZsJjO>2;(bP& zDF;U#8jg+nIzKHcV1G{3!KL$~?xL4RWdPtPz^62-rJEepGa`r@`=uhPC)X5Z8gxbd zIlD2+-MlTT|Ji}4lJpRGR8e)NdmlQPHSZQGH)}qICEBqS~n*(E#8# z%CzVSPo_t+fjQB@g{9GoN8spNJ*Ck;r^}*cz2(v9&ywi2AG+wHfGfHW-4dTuAQz_F1qGpdas{Ws| zsOz_Bb55<8mffE}ty_Vf_Hl$h?X5yMO<19v*7uiXS`W}LZQsa_X-6L(oW=&uOluvy zHErzLJf0JS?UuxxKCX@NAemww4!L4-;f*nU*S5!W8V<(XY&{*b z5x5d_v-F>s){*Bi!$&^EZ14FQ(<2%m+t}$Fdo(vZR`fG5HnAxqcIfDW*u&SB$M$p< z#v%sMu}69-v2#CgVxxNGv8{vaV+R%PST9gx?8xICv4f`$$13v9!~)qjV$UG{iT&Q% z89UPQA+{A5jKzRFMw^s-#Qhxhin|7c#0|3(;)dI@<2*LbiUT^A$9);hk8AD3#3=w) z+~W~xoX+{EL$IG}Yy+^}?GT>GcpaovN*;`+%K;+8$X8s`G;$JKVeh=a9!i0c~} zi0hm7cwVs}VNkRx;k2PJVGzJ40AZ|zCqP94GFPAQ9BfMf6io@Lajy_0~;VM(7xl9GBPIZ4I!3zFJ^)k&BUSQ7dfK8a9}??~!f^EL@A`qXOab|YsnSu_me@O|2fKmr^%my_sPA7z9tJ>f#ja_$ z^$cW0!HgdY%naaP#td1MXvVlW>5TEG)iav=tutOdshjbobL)&A_JJ9|@R=Es2iIl{ zUB5qLxclV{pr?066zInc(EmeS|BRI{fEhu`aVdP7XUYgDAVtB9O6eV*k)rr}R?63r zr72O**Q5x0p(!<=Fe$k*dWyAMkTMKtQ-D2=l)tVwr1WUFrYK(QOWC>ZXv%0=U`lRl zTT1T8(-ffleM&p7YdF4boQp1NmR@*HUr7{nXJS^wh!q?^2fo-%>xy zL1_cIo@qc-NZL^Fv@`(7OxyQrLE7ERzo%(BA!)EdWSYE(ng;ZU)5HOav@;{dv_4FA z+KHUzv{&dIX6r8EUmBaL)x?a?`h8gQ2N!8$?1x*f$1KY zu=JkRJ3`RNfozo!Geh3P&ZSUTwc5aj}7`no}KdekFM`aGE|{ndye{avmz zUGcOzJr}ffbl?99o}G5wc<+FzaF=;($_x75`BD`h28Qt>&b-P zte@z?tiFg}vQ^V2Wk09;XE$a9XV05IE&JI(YIdPwPWJcnOR{g`R%aidP>>A*{r7pE z0M8ydU6$QHmYIFHTb#{&rOv+o&XS$pSe^Z>b#u0+Wmk6VuA|v~QRlPo1Glp~k9K5_ zbarR&9q!BS0e;D;91O@A?wOVY>`cvRWz8MUGybSg7~hGjXu?{qoCr=2gk*|;6~23!G}46PhaQsfj{SfqI+{@ z`~A$B@}Co%|8+J5N(X-Rn2q)I7#SPl0Rn}1i~va<05E5im7~B%p?LUUS)=RnQQJC7 z(IN7w%gZDZ?3?f(H68bHZ;n?V`A+eZDifyROU0G$Wz9JT+0 zXwWVYNIAOnpN?NgXa9RBy}dx7G2Wwb|LcqZ5um}b38T+?=IHp_XzYJ529yi>9JLbk z6M%vMpllQYXv}}Q#{ad+?$Nu}fd22dGhy^LCytI2N5>_3$h`0Qp@r(g33;A*EAp&) z?Zuu0EF=%(lV`~H&P&U4<(yMZZB0WaM%) z^A_a2&3l^nF7HKNN8aN+&w}v6wS_UTSXfX=dWou3Tk4OTkK`kH$Z=>TT8+Mn`4tbr zPhrerEM?>}<}>zk_jAp>za?g6WQ{jC7@PwBo)-x2%>#`VKTQNjfX9HxgJZw};Bnw@ zdH&!7`2hvL7WfwYQ4muYRk*IuTsWcVMR8|w8f-c&2ezO@SyEA=E0L8{mWWCeCB>yv zknzY0q!cMbRw6r50<;!A1`~?mWA0<_VcIZAJQ`2LH*s(tL$jU7=R0 z<#t}_L!Qun&_I?nqu&LFdn=LTnHwDe*=@j1z-$#F&GX`1!seE z!8mYL{;~Y5cjmYViz^BlSoZvU;?DU=rFJy&i2sThKf)SFkdk*Ft0JMFaww#Odn z7;FZWQO{s942)_#TvR)P&+A(#&~fwf=}crCaVOas@0C14d;47P(C!5hHM zU?*4&t_IV=EO2xF$^6s#GYhf`vI~AM$SgQnFsX2I;etYE;f6v(k)lXdMT8=95wWPRxWAYU||^Xb`mxSn~e>{Mq*R2F<39GFE$Mufc3+AVt>Vk zV*~LE@q6%x@OSX1@jLNH@YnEr@qgj>;ZNZI#P7%djbB){qwGZ4ucV=}aU_4zMABf{ zSkh#Y7im0cxXh2_OZq{YMAnfRWEmGo!y2!@OCfzi$Q#CXIw!nnuS!{}lhW!z?*V;pCkXIx@@WPD-#!{}ff zVwf3C3?<_k;|wE%d6RLOv7gb;Xk)x%++l1euPfJ;yUO+D+HyyEO}Vv|(34Rk;1a+hGeqV*X z!q39*qo3o4ME#;c(SWE=v_z6CxhN4!Wzs>ZpklaUrm{-8SGh&`xAL%Zk1|@lQGG_e zOI@$7Q#Ys&tGBE7s!yt$)yLI`)H~Fh)PJhaskf@ntBSoo0s{2*#RR`^d?ECD0+4tM$)-0@9P&2P)Y0XXWMetqlLGV@Zb?{m6J@8ZTBk&3E zU*IR;%iss#(0SXfw5SX)?A=q{`)JYKY^Xiw3$qPC**MP8bt zMSF`L6dftLSahjqV^Mk0$)e3gr;E5n&x-aJ9fmc-T3}mY7FaE;3DyAH0IP#l!Q8NI zuzFZE>>J#xq;Rw$^0SgpB_Kp^Nk_>*$#BU~$&ZrPC0|PVN}iOwEBRXTz2texNXfU7 zk0m=w*CKBtA0lrc+mY9iPms@$kC9iAmyy?y50H0}_mFMKE67X8TgXo2Ph>x88af6Y zi;hOeq4%S=qBo-(&|A>k&=W9em|~0`GaEY>TZH9e(b(nKLhK6cDr_lsEp`!h2^NEm z!!EL~*X$EN?DT0(knoCL}`H+3dXUSj4SIEc7Psu09Kgkct zXUIp%7s=h^*W^y}Ve(D#U*taW5ArASEAlz=G4d^P7x^>!AbE&(|t$Bb;|IA#cQ z9y65b#{@AWm`j)*%wXnh=2)f=a}jd_Gn$#goXCt}{>t=a9xZPvKV5#He1G|-@UcMJ=Xh6m7kS5cM|g*Mhj`t* zR^DaaY2JC>CEnk>>%0&APy95&3c*UjcEL`8M0i0sQ8ZRGPBdOLNz^AC6b=ZxL~ljE zi2cO=;_+f%v5(kW{Hu7ZI6%BwvR1N2vRtxEa$j;&(k6Kzxg}9bD@U7Nf@B^tX@$5# zQlY3&R;Vh*$|uS_z1Q*Tf|Qje(n)e|&t)gaA%^*l|t`hohJ`h)s~`iuIz+EX*A z{-OS?ey@J5ey$!+e^q}}i}ZYbg`THhY|Jx~jWi?Gc-J(}Ji*MhzN&gr^{MK4Rj>V& zz14o-e$jr~e%XHAe#L&zao15)1Fp%hDXdvtlUEZ784sBN34p{vG9Y1)@8ECXY{+a# z3gid44;%yuheSgXAu}QAkW7d-1d+cX-<5wY|3d!7{44pl@^J--f`S5c0j2<2fG@aN z;9b~Um;ilQ6a@8$b`^asdR-I>1&YQ&Cqlc6{Gj8Zy+xCtgGGHsKZ~9hc|*rSCqq48 zV_-L6S@8R?e_+R9mtd!0Ct-iXj=)-BmtnVI$6#k+-X*I`LJ(6CsfaYh6od~V2r&r} ziO5DUO1GEpDcxN<7FmoeLViF3$WO>#WFHcQ>PIG{lh8ZRd(k`5yV2R03=A2A!XmI_ z>|*R@tP!ikI^nh2?#1cWf#iMm8~XWNGnMB zB!6-MIf@cWSw+dBWK-r-)=GV{3COwDFq^p%i`WyOd`dj)d`b&BjJ)R+D5|~7$km<$5F`Y~}6VGHa z*-Qu1%Isk(n0h9fNoHc1wajv61rx(mGwYb?ObT;7vy!P~YME1+8m5dXX9}2h=F{@K z<#)3FaM|fS^4wwd*wIFFP2{_zg+&f{8ssk@+Dj`SHu-^LA(L(H|_}c z2lp#?kn6#_%X`H8m-m2olGnw1#e2tl%KL}+gm;hE!F$YW=RM@T9hGVCyy1!Eu3EcvTo73KRK?0!03zSdpJ-iYP=BDvA*$iekkn;u!Hv zak@BZH0?A)JWZS|&K6G>XNrp?r4q0NDJhf`Nb)7!k`I#Sl24M4lJ}CQl4p_*iC$`w z>ZI$X7O7ckkUo_9%Erk8WaDK%vWc=uGH=$}h@(<#(lrYETJM zd8pIX@#<_%s%DucM3b+H*A#1VHH$R~ns7~wW{Dv!mD^j5t?->f(2YxR2ldVRfKr{AV`>o@7Q z>#Oy3dYisUZ`W_oFEuVRGK~VG(8x6^jU1!G$Tn(>l}5g?!su^aVS!m>maUd87NJ#a zJ#0N{Jz~9MyK5V%`d&504pa?Rjk6C`{iu3ie{O$de{6qc@3jAGe`tSVZ?`|SzqUgh zc@D7SzT>6iu>)CysX1Bms;;v>y+M&z4xvGC5Hth}DTJ(npdehxO2|6MVn``uH3Sct z0$C2hK&TKpga9EzeupfAupm4L43ZDIolh@d7BC7}1rG}D7Niz777Cz3=mO|EC^la&w(h_7OYBDMU6^e>Rd7_d~UZ@0AJjw@^f$~SiqM}e~sNc{z z=+PF(=ws-E=)cgjFmo^sm>NtA#*DRN_1M$c{n+E!yV!f!HtcKcBWwru3ibf@3HB)V z8nzXC9(xme2Af4FBbW(lf}C)Q&`j7vXd=`Sb`fj@Ho-u!6Ig_O1OcIuz$EM?R1mfj z<`Y^7VuFsKA~*}FXR2}dd=m5`7mJSmtgp%^H3N+X3yVNv!{c2SC{Y|0kO zZpxn&0fkRFNU5TTC{9WRg-+p8c2blS4yBUPK&hdur);E{C|fCFij3l*SSV(SoHC1^ zO`lDlLwC@t=vKOoZlOnAy&}$s84UVGfjgar(-GM&+_S zIiJhNalV%Oa)!!*@?SUs9MI@bvp>owbH;GIIh9-)w}PwSM(~1o6L@~SVBRF&L>|EP z;YIR{ydS)uyzjhmd=LIGZvr30AK(q~0G=m*GXEQIBA+NA2yO}f5wr=e3vLMR2yP3i zgeKu#;apL=C{>gx$`a*>vPBC;@uK;nnWB~A0`V&GI`L}pT5*DSxfmiQO2`tbgeDM?OnFPrh89B2ShtmamZiCeM|xmd}?b$q9;TMWdog(V)1d zxURUVxUIOOxU6VXTvbFVBb8yw70RW`mC9gMyedQ$rb<;ssZvyts%fezszg5=KaDZ`v-PBBNC=UV1lkQS6hZrNs$TV+;>^`!Nj^_aEQde-{T_RQ8{dunU9J-5BE z#n~s@{p{g(Px~}`kNv&i~Xzpp1s@t!T!!(?0`EEjzS02@xk%U(d+o?`004< z=y$w#bUXSSZylc;(rSIRvAUv$SwpYk)Uaz>YiPCO>i(^(bvHn&AsZmgkoAx)5Dmlv zu|b+36i6e)2~k4~5KR8PeE&kf!mWkdN4MVr-3HwQ6+xF5Z-%;{MralEFjNKI0(C;S zLgi2k^be>4S`FO@h+2dOu^#a!LWYndEQm%# z6~cvRLcA}%S$e(nUg@3EYo)hJJ&_s6*{G!`I%+X$4JsEk6P1t3LqSp5sClRY)IwAy zssyzJH5auCH3zi-m4%vxT7+7TT83VXhGYJ~Y{TrrT*V&4-oU=Z-ojqM2I9V8C*h{z z#^b(Y18_gFL)a1QS?pL`FfIb;ivzIZaFcPX@f!#S2>S`Q2>%k^5_$;d2~EVWglmN7 zgdc?agfE2e1RSxGaGKCTcuKfHcu2TQI7hflxIws1xI*|$XeT@(WR;Q2Xl2AQWErKb ztjto@RMuR!x9oP=KV=mp21!Ozk~ky@iALg*JjkBZyOeR%rb*B&-4!i8Yfoi-llCb0RtEoWb%mP9`Uo6VHj^WO1T6 zNt}6{FwPn-f@|cOxO%RRyPoUM8~sGZi{WMRvU!QTEM6)vffvi0$@Ao;@l*I2{2BbI z{80WhekwncAIFd7NAQ#R(flm_AU|Ee7BB=|g2#dvf;WN=L8sugpj}WcbP68}e;2I~ zEfcL1Ef=j8<%!ma){35qK8UblqPR?q6f?yfF-^=8my4-liWn`%i}@0sgexhRjFC=~ zj+J^!$4TANH`3SA)w21rWwMpBwX!_fA{kt^T(-HQxnf7frV6;6Ehoqe<;8NcoF)g$ znR29@E-#Q5$*J;uIYyo*|4osrC{vIWn-v=sn-uMed?i>3QI06@DVM5Ns|r+L)e6-@ z)jHKY)f?3(RiEmos$Vruy+FNCovRk8=WE(D{hCXbzqU*BS~H~iq4CvT(p=GW zYhGzuH6Gdy&A*z58bI?xb6s;w^FZ@mb5--J)<^qHCz=t>L;Xwr8~t7VEB#~rdwqw#TmMx5LH|zQu79h)qhDz( zHbRZZjqS!`#=nhcjHiu9j3O=wl}sW$L#{%OK>mib z=SvI31+s#Qg7eTP&>PU((Cg4^&<^Ms=soBK=sRdD^dG1d+6KK3eF=R4y#oCLy$O8; zJqHbh6~ZZSA{-1~2VVte!=dmzI0{|@FN2rD7s3f}4txlH8F2w|9dR7-H{t-|Fk(NV z6>$Y|0&xj(6mbS|4RHu@1aT8_3}Ht+D1BJ^s5A?+)9+zi}u+$>xcE)DlPE*%HPCF2(1 zqVW_*EIu9|hrdYZC3F*fiT=c2iP6M3Vm5IpF^V{a7)+c?oK1`&#u7b=3B(Ly5^*tc zCNZ5ji5N;;M2sgU5+@V82w}uD;xwW+kzM92yIZCwSxD6+J83=1OmdSpki?{DGKq?z z&Y|W}@l*~qm%5xvqt2x+p~9#oR4H{Obrp3cl|jv>E~J)GKU2ii94eK%h{~oeqY9~T z>S8LNx|TYhx`sNNill<6`P3|G0X3Z}qb{KSPG3%6N?$@>NncEFpnDAr(ue5%^gjAe zdIReL>k6xib%xc#atl3i|{jf+0b_;HSV>I4Jlb z_$c@;7#6sNhlL$Ns0bs%iV8%K{7 zm6geOGLEcVhLee9LK#7Ju;Ng~z6zsUFIUQ~a)n$cm&$E&nOq~UkXz&%X> zp~Y&8v@9(|JJ~SK(5Lq_4Co)|zw6f-e(JpqzZyIYKlEOP@rDP+>&BbLTgGR`C&tId z8^+s4ovFdpY5Ldn+VsNo-1O4))bz$AH0#X@GtQiA7May%tyy5!m{n%JS!!NjSz}pk zDYFnQB#YjnwdgE2EEFr%>abd@HfxpDYIRvRSnXD)^|ST4^@Fw7`pJ6R`p){w`qJ8E z{bKF5ezX2k1=u{QKvm{ALHO@5WYUl4xrjy|WJF!l(lkJ@4#5v2Ina(07!3lA4oq5he z=UQj6Gt1dh-B{gR-B9hUan(3#YHM!Q4AczQ{H*z2!>bk5ifg&GK6PGo-gUd{e$@5X z?QYAq#g1W@)hy~@*dIwc@4P>`2hJ0>4Ch0 zJcm5YR~D!W-W7BgWEAc$Oe~&K>{;wzJOuSA4lnj74k#W|JOGU-9#;%N`=KUy1>6p= zgX`fcxB||HuZK(F2Dk%mgA3tmxDhUcZ-7_9N8t35r-)C8e-ZZ)?-7p?9}(S%uZWk3 z=ZGhW4~S=o4#XqGTSO;9RQkO1RVe|fMk!HplpZBTsZb)68D&BlQI)6)locgGDNt~9 z3Azyd5Pb*Tj=qI{ioTD2g#HJ854{Yt6vM_G!KC1laEozh90$k472pbSTpR`rQV|+qh6!dQ`@M2QC-xX)J@c8>LY3`)lNM}Jxtw3 zy+mD2Uq@dG1{)CcyPx%mmC9bk&R{QK&t!MACa}HPOWEVu!>k{yx$JQE5NjSgitWXYWKU#I zV;eYjj)|k>=s0Rl6-UO=b5xvK&N6Nxx0YMYb#a&S*75RrYk7D+kI&%?_*_1j&*Fmw zV+3Oba)DhiRX9=TDV!qo6HXEa3jY?WL=_^PNG)QClp?mMQlt?b6z>!t67Lc35Lb$K ziJQgS#2dxC#hb-j#dQ+1WWA(DQZ3maaY{G>2B#K zsZrJ_Gs_$@yR1fLm04sBGMh{%tCML9+_J4Qwd_PiYsJaYCaT-zN9E__TjV?CXXR() z7v)XzTk;F?OY-aT8}fbfWAYmLNqLL>5BXmCpYl!et8$*=rQ((1U&S*;oD!u(DorZA zN~1EUtSXCYy=scOR=ZWZN!y}5uDzu_r`@gHtKFqNrah!RtG%h+sjb%@(B9TIX}4=n zXg6y&XfJDTXdASDYWHb(Xdh_nv`4gU+Kt+F?LF;3+9%rmT89>=&o;ywk_>diB14)X z(lE^sVhA%VHKZ688-6qVZiqHy8KxUj4GRqZhIxie!%V{xLxLgEFvk#Q2sLCF{0x1@ zE@Q9pi*dj>V*F$rGX5|Q8b2F97`u&4rcI_6Q?u!vsoV6{w9D)^uQxl*RpuJ=LJP%0 zwcNL~S=uc%)?aO7Y=G6vHf)__8*7_j`^7fiHevfGqu;N0o7I{$FiJ9jxH&RVC!xyAX(X>+Qb z)y~aMxzp&}T4Lnh^~FR&E!7W5RXEM8K)ws>ao z;^NiCtBQXwh8H7>7Zqn0FDykJI2JxC6NTxXm~dt^w!5?ZfTCwcwn%ow!XnD~^Qw3zv## z5zC1+#EnE9v6k3KtRk)_nu!+T7GevLLOejMBMQr;Ws)*k*}<~E$_|tEll~+fBpoH~ zB<&-CXur^cX#Y}wQm4>*sjsQgG=Tbn`jQ$(i=d5A6GvN(exe4_`lwyhMYM^uH`GC@ z7j1~zP5qTNjuuRdr}@x+P!nhqXy2$)Y5DYR^eyzw^grkx3=jjLk6|okC$KBo2KFVk zlWk?2*cLXP4QA`u2zCuy$Y!wBY$%({E?`60F!lzvi;ZG~*f=(wEoYP2c6K3qJ)6o_ zu&dbwwunt*%h(4w`#24p{hW=Qdd{Dm!<;70Hcm5VD`yjDC#R9Ko%0u`j$6-#^9p!q z9)^eIp?IY{91p=O;o*4(zKL(<>-j3aoUh{>`4xN#f1+T5pi&Soj1-0lBZT3?SYfCz zNf;(<6gCN)g$+Whs7hoK8AUh6C&X>y8{#|STjG1-E8@|%L*lFAddViqMoFV&v!p>H zq|cQelpd1)B|R#;E;}vTExRS#Cp#v)COa&*dwG|O6J6I!-rV=c5DZl6Bs?Uv*x(DBUDoqApxFsGXr3&`#8O>b_~G>%M5G==!wX z+OOInt-tQQ_MLXBZbX};i_oR%#^{E%k-8t+OkIMmOZ!&)S=*!S*9PmNbs4(Jx)5Eu z4zDjZ5DY|v$ne6zGr$c+hEhX;0cSuM@(pMM(?Byo40#5O0cBtt7zU|9gsBsm*-J{I~h8 z`HuOX`M&vtx!ru)e8zmy{Lp;feB6A>{K)*9Wu2wU@~@@S^2qYm^4QX0>9TCJHd;4X z8?4c`SX;a;&X#7IVhgiPwfWgXYzekRTcFL~7HkW!h1-H`p|+H&xT@f)(5mRF*s7^j zK~+3^xt(n%+v)an#|%fZW4a^Dk>E&k=p1^7*`ac%9a@Ldaoc&`dBJ(c`N(<1+2-tZ zb~+zA-#Ocz9nKrh9_KmdTjw?B73VGI8|O{uedkr@bLTT>m-CMEuJf?-h4Yg0kh7wC zclEC7z191xx7KW~xmz>7c4Fdn*y8cd%}v zd!WwG9q69w4suU%KXu=9x4G}S@40Weueu+&AG)u*+ub+Zf7O4e@2>w^|E0dS{`ZEZ z4de!X1E+!1AZ!pcls8Zshz*Q}p~iv6;YOgbuW>>XsHwkkuyJD3_@;49n&!LBJ}tg2 z;rRjiLHVKie)-Sxa|&M+mKS4-S;f3!QZb>JS9o?o(tuLm(y66MrJ<$KrIDpQrMpoFP=BJfqYk6?qxPb9qIRGTqV}Nn zp$?(QXbPHyW~1MsyU=gYZ_)pv*I-U!ns7UCHMonoL%2)0v$z|$bC>oO{q?OY0X-PB$Z9XlRwwOkv5or(_m{vq%)2K8oZ2=8UE2cqd>u7nj z-)T^K5xtncoxYR4i++WEnLds&mhlT?5BoZM3;QzrB>NWo3LDM7z&^!pW?y6PV2>-` z#@@?5&fd-5$!=q}vj1jpW?yCRV&7!%V;^MiXJ6!;;hg1M=iK95<6P#n zaZYg_a!ztCaUOG?aGJQyTq=*mBl8%%G9H~r<0<&{{Ehq#d?&w}zllFtpcJGFQ-ztr zg~Dv%0^v+ymM}wjLik2lFKQBP5;ck%M4LrhMAagp{6hRv z{88K~elFfBStea6T_HUp{aboidO$kbNL%(w)+OtZ-Ix6zCb=y_da|J(YFK z9?Cjp|5V(oXs@_kai_w+a$03jrDtVSWprggrFUg`<&?_M%9zT@l|GeIE4?ZME8{EU zDwir`iVB5PaX`_dn66A#GL#2Yf2j7Vj;Ri-cB%HOcB>Al4yul-wyVCVpz2~ZOkJ#7 zuA}SL=?Zl?9bC6a_q&d$Tdc$Dmg(|!D|7_iZ@N+)N0+B#=>$5cj;zD#EIN`7r7O~v z=@>eKzD!TlHyEl6wFZ~LX)qd8h8jbiL1Hi%wit85L{p|I#*}P|HKm(UM$5~3P0!6Q&0oyl%-_u&=D_u@&7J1Y<}2oB<`?F-X29HI z9yB{FPK(|0-SWxOYx!*XYGGJe)@|19)@<8vwmG&%w&k{2wgt9@w#Bv#TdwVtZB|uU z)y%4_s<~COt8%J@c8OhP*V_l|*^ZfxSq_)O?r=D)jw(l@E7CR573KQH<>QjN=C~HP z!d$T~f0u{rcUP**+vVlD?u>8^IOAObu6}2qGsiW?HCp)OOm@w6&2&w71-d+4lU*au zUtJ*ApmVD0WcAJJ)78hSk5?b5Zmm9CeX9D;ntL^qYyE3|Yu&ZAwHs^@r+D)c>d-sPC`utIuvwHs~4* z4HXTQ4YCGxgR8;WU~iB%R5!>Qj1BQkK~2$3kxhY3$xRVW!A&tuzD*%bQBB5XeY2r? zZ}Xn!`^^uU2b%p`7Pchh$LGi7$K^-oC+B}Fa1~pMt;PCcZLy}fvRGZLC{`6efZv0+ z!T*7$md2N6mByB)lqQxYl%|)amC8zcOTUyJMKRE{QGvP>nDe;9xRbap+;iN&xKYtk z+%sGc@g4CMv77js_?D=&F~ z&RfnG&TGzR&PxuD$KtVhwfuwpU3@!#Cw~wB0Dl{QAKzEtC-4{e2(*Hw!j-~R!WF`; z!gs>MqFthcqNAcCqC=tsq8*~oqtb=L;xUpz@sRk7c>Ji$(ujDRWS3-z1Su_*7E9sM zA}K<8T6#u$Ryw}Ir{aqYQ~}5aW!@FvWRokt%EnauS~0f5V^qRsSoTZBXIZbzw_;Mo z+lti61(i!GvnyBD&8eJTxvFwe<%-JW%C(glmGdiSRW7TXSGioFP*f`9if@W9iWKDu z)dkfJ)iu>c)n(O5)jL(G8lgt2H9DoPO1E8Ct=p(uuiK)N>9*?XbMbV6O7&aP|GQS_$`I}Ljb7Y+LjyA8(-hYcqU zdkt3&=MCo!Hw;G&`wSNh*9?aYM+~iozYV7h&kP3*Gfmm11*YFji%kWl*`_6?J*Iu8 zy{0dwucpZL!Rx24_gg=H{p9sA>wVVyub;Ah!g{au6W9N;K74(^`q1@YOSy$>;aJ#~ zYRd*ozlCkhv#qlg+90;IwiULeRg0>0_DcI4N4;aSqru^Jv^X|7nj9M)n_L>#J{Qqd z>{{WfaKT+jm(aD!1##uOur8*n%C*)-b4gq<7t~eY0=qaakxS;nxzH|xi|kUm@?0gZ z%hhM9uU4P0zF2*F#WImOI^@>dtg$xa-_o+?(8E>IdB4+>&J>nj6 zkF7slKTSi(%e~71HmH1%olri+9@TOw_u&3t#JyE?8%Y-}oQ@QSnK_az2OMYz9Zno3 zF

iEVeALWU(!l1(qzy!c3SmVP=}(OqdxanF&tvO=x1>{Ez>`eZH%odiCn6>eZ)C zpX$A9?_A~AN{I4DrKW1H>Zod$>X_=VYPafu>bR0^= zHOIC4wYlmJy6(Cjy0*G5x^B9zy3M*xI);9LVYs2MVTfU{VU%H@q0lhQ05>2Epn+yW zn}{ZkiELt<7$%H~X(E|$rd{S8=FjFYX0_$A^@{ZmE5k;&?X;h^AGM#bAGhzY@3J4V zpRu2`AF-deU$XyZKV{!$-)+BQFL3O&@39}YS2+H3zHmNq-gW-%{LA^=`Ox{%`OJCE zdCz&(`Nnz6`P8|}dDD5@3AjEvUpntQaqcBC!7qY z!|w3fus^&ZoC&W9H-=r|rf@b~AKn%Yg|~-Sh1Z35hF6AHhp#kVZM@vLBYHD>Cwjd6 zVf0q?el$M@k0D~4Vq0SCVjE+tVjE&BVyj~}W4B{BVz*-7V(2&~j*ah)&u*I5G^MF? zqJ5%mqGJM@=$dGkXq9N4$V(he+)K1cLX)kM!;=$|i<3)}OOj`jr;{g=N0P^qyOMj8 zSChMwCzJba;dSJ-<#ph7;??mU@b2>-@c$G&5?v5o7Tp$|7d;f+6a69jTlBl=qUeE$DgIU5 zLDE+-R53)+OHrhNDd38H#c)M$MS)^~VuYfDvYoQEvZb<>a6UF{?Pu^e$Rf{{@(t={?7iu{>0wG_00)!{pO6oYiM)m zLHJDg_we!Xo$w#wui@9>3*p=0_2C!cbKz^@x8bMZ>*15(OW~v8E8#!G#>P91cN-r^ zhsTOyBV)s2g|Qv6J+a-f`>_YHhcQ~55-*RF;z#0#;s@e~;|rS>G|g#R)3mm!U!rFM zkra-$Vk+!F+(lu#Y zTAtRW&1q*^n2uyZnWLHiGNZDyva_?xvcxPYOU_QhZ71#`?jSxT&!e6$KU4me{*Hc> zag6bm)tlFg*OS+s_mKCJ|CIlX|55Z_^q1(R=&R_1=&k6TXqsYzVvJ&vV!WbQQK~3W z%v4NKOjgWNOjV3i%vN+)_E4@<8mkOd`&An?8#ISCZ!{OQm$biYFKYkMB6Rt>p}JwZ z0^M-kcAZTBlPs$LtY2hUXjp7mV3=okYp5}qOjeV{wBMXF>nwMzx2^4MLR*Cm?#S5z zN3*@ZqlM#NJJiwE(aO=m@x$KN)y37-)!WtG)yu_k^WFR0pWRHa$Xo6edO2R6SKyU; zx70iQE`Ob$5+DXh0YZQrC=1jF=Y(d5_JnqYwug3v+DE!azK4fII!Ag$n!`OKT_VFG zeIp$s{|mQ>d=9scbc*zfbc=iow~c%Ww~OS$|Ajk5{tb7HA|56#q%NSIFaN##1N{f9Kd+_uKM_RyMbtt(M=@8iSg}yCNHI?_ zUolYGPuW*#s_Ly4Y5vfT(iQ8*=+<%6}Setid>6bQg?-0<`%oZxpm%Z?>w*G zTjT9g-=ltOz2EQi(*x8%d0>8MZfIU;Uub4zYGh($cw~BHS_F(tj*N&*ij0iRiWEnl zH$H28+BhLLC3YnCIL3{ijh~Jmjgy;*O_LMT6Y~>u6QzmSi7APhiHnJz$==C6$zI7R zNo=wxH83?GH8Pc-8kQQKDoDXnd(ykp2h+#WXVT}=zo!qUPo+hJ<7)J;^{bPz+QnVsebRmy=HIE`bK}mpYS*MgZ`*L=4S@jfd!$Z5p-m6WJv@SSrC~QSr}Oq znID-Mdm0nPE8^$l_$F!-GJ#9r6H61Q#KOel#G(W?flmC9=$kA`PE8V%gyj6x!qm*v z+|=aMxYX>_wA7^3_|(|c^wh-E-Sn08gY=#B`Sc&@d+E#Rhv`@8+v!{B8|nY0ucz;) zcW2&bCS=ED$7V~j;%sAfMRq!-3Hy@#Cs|2ZM!i)&#)V=4YzQ059?nDXqP)NPUB%tR zoyF(GR7IHruC!HIt7@whnrm8tfp2IuNo-RbvmBEh(;UT)sg4;A&^6XI+BMFlajV=_ z?q;{o>-T!SF7G^F-}<|) z`6KgB=3^!=J0M$3{EnpvJ1 zl%1bdWz|_t_8M_CZ!fQpxUaakxSyDH zI~F(=I&^Nm+u*Ko=iG5`lXta$m4BsQ7Li8ek;+I_WKm2RXEX^@vXnH{KGQMNCDS?6 zEz>pgOXh!>w%G;Q>TFF`pVegtk@yO^VVY}u{Tly?kSbCg(L~e{W!%RsUDf` znSV3wva7N}1yAwWAacxbO?S<7WxOfhdjDDfl2}z-6~7Q?HEnF-Cin?Kq9EBb(>t>; z+nPN{JXE>VvCeOcSR&R)MM9Vuo$Q+#u3X~CdTS%P)Sir5BTnd312Yv0kz!TGlwFjK zXaBEzfWZzq0Bi|%%E5>9&-KgwloZN=&4oh{L(t9K9JYB+3w$%7nb=HfrscX1DQ@mD zWL)!)-1ufxbDLb-+=S+d&D30ZZc=kea}Tg5IJtRBa~H5HIJJ3Nb33p-IK6pBa~rTN zIJ0?Ha|f^^IJ>#Dxf9qKoYOqFnbKU=Ol_t$mp9X!`wZzjWWbPtLk5C_zzIXf4uRzI za_w?chpcS@0na0TN9;gsM_fYW6}BoogE)=&1+g4)2yqaxa%?Nuj3GZYOL9MQi<%cV zFKb3NFKJ%d%xGpdvzpuII_7S+_}pS!i+=C{xk0&sIX+wfXTk@;v2Yfg-OOp`HuIYK z&C}q+;UnOy;X~kq;YZ+C#$6s)1Ro8b03Q#ZRaja$yRdCx2o{C~VGXb-ECy?W#bF3| zKK#eeK0D{8<)FFMExLg#TC8l*DmNqtfwhHIG>e+W&DY1J#-+z)#$6is%Q*kIz_^p+ zer-X)P%(5&IfjMdVE!b$Qe84w5jI3Eq7Gq4I1o;R3lTv05%mZk!i(@A+=yw2@raR# z0>l7B1knP~648k0farqgf#`#fB4h{!LXJQq=m-&lg?NH^ig=EAhNwg+5mksTxvsfx zx$e0hxt_URx!$=xxxP6jj0I!EI4~}Z2jjy8Fd?i01_R+>K3D)Ez(Q~+I1C&P{>aV6 z{m8*`@LYbbAcx2m=7#2m<%Z`*mJ2}| zAYn)Z(g=w{VvsoG=TaP!grp#8NCuLHEQkC8SqWJMSq)hOSqoVQSr6F;*$&wO*$LSN z*$vqP*$deR*$+7YIS4rfISe@hISM%jIRQBdIR!ZlIRp6(au(96IIp;Mahu|{#qEmQ z7k4P`Slp?&b8(mAuEpJoyBGH;?pfTcxOZ`%;=aZGiu)H2C>~fmsCaPkkYZRdyg0wO zpcqkHSUj|NSn=@U+bz$wJlFC}%kwS&zxV$C?r4FeAOR!&OMxH@lM4m&QN1jB^!OX@8Fj9;RBf-Ql z|6=m6t+8#e-?7cu9JUv3GHxMm0d5|Sj;q6+$DPAn#JwgDrxZ~}P)1Sk)ULDw+7z0c z_Nlyvo}>3*^kkf1v|&$VFJU9uV|Y$pjJJxnkN2GSp5I0=OfW>u7VE_4#n;4l#hoSN zC1S-0(dm(!wdm#HDry`djQAi~6Ir0|r8uB{w2J$BIDe@We zHu3>-9%e4ajqzYMVZLI%VZLD6VV7gG*jBhaTyNY!+(YDI+#(zc$Hd8TGTZ^&JKQte zN8D@NTih$$OWc3BFS!5V{>Ht){e}An_W}1F_Z;^I_Z@eac!$`FGMZ9MQBgD$0=1Sp zjrOwq&+-@LE$I+?72QAw7=0MM8K)TS*f=(xjb&rlt9dVYqXi=cBLqc)Q38(mqPVN1 zi=;#{TQW;BL$Xy_SLLp{r+T64qaLgtrXH>a)y3+u>TznX+Njy0Iih*1xvPDm{ivOy zJFHXb&+7*v2P3ga9I^u0gj|JOgItZwA={$*qS~Q)qB^3wpt_<;XX>@I8$o607$ zC-PqLUh-b^-thk6f8@6nOc#t76bmK@U}CPgM%+tME+I)M5{85+K}!e{mV_!vy8KtEpCg~;4W{mf)#FygxuH<0s>%;!E(O@e}Y9@k8*_@U!s6_#*sZ z{7C#?#P`H!#J`D)Nf^>B(lXKl5|T87geIX#Q%Ud0Gbm|F17#g0Ls>~_qC_e6lvR{4 z#Y0(5DW}q?WmGEFNA*$z)RDAVwAr+ov>CJ@EkujZe6+vIJJ17kC*4E;OouWCGq?;k zL(9-HZZR$}ZZa-1J}~}fd|~{>=*I5Ku4Bj8QMQGxVY}HiCq6@f6rcoX0Y*R*5CwF>BEftCQ-BkY1U&KY;!+7+(j>7; zToSj$E=fv661^lSQAm6ep(HA4kQgPk5~ai>QAr#Ujig=@k;El7iAG^i7!}nDwvwe} zDo-kpE2C8-)kW$_>Jqh0^G@?rdrWs!cSNVre>V`!QA^m8w!|$-OTx0_BqFPjUStxPL2g8DLdsETR6VK+WkyL*Nt74mK-HoYC^gE3szBAC zq9_w8fC{1XC_Dy>Az&&nT8su$jX8w*ftiXe!A`wwJb^wvo1twu9D(-jCjk z-jm*+-j!ZWPtarZ6uprirT)zNp6r?I8SGhXGy5$20{bNU2>UpDANvaXE_);UD*GDyJo`8H zI`$#CN9{le74*WcROMWMQ z3w~#QPkuXoYko&Tdx2Eo6*LMe1t~$5Kr3(x(t?;kE>H-}0=K{<2ny7Kgdi+12t)#< zAYaTE3&dt|cS(QAQ^`xoN69wH1<7;C4#^?OVaY+s6Uj!&b;(u9Udc(xKFKl37RgP? zDai-P5y=6`W652~Imsr;JIOuC4ap-(qr$IfPXw#SBaR5}J?g|74dOMz>F%Yj|Ny}@n4-N7@V%OP!}rEx%XR&-``YIJV2 zG`cVPGK!7SV_D>8JK{*V8e9T*7q{uB8Pz)c zCHz_ZUi=#T4*VJXar`0t2K+JnN&Ij4t@w@jZTJKD_4u{;Blz4;NZdSdj-U^w8|lmGYv|wTZ5X2%Jcf&5XLuN1hLhoAxEbA;1DQjZ2xced zFy=C*f+=LOne&-*m=dO#DPnS&v)T99y*O<-|FPe&0nS_Y4|Z$L2li+7yPsA^&FoL? zuAG*fnY?+tjl4s=Cp-jy6n_YRD1QupFn<`om|wvE%+Cp~3O)#~3H}hg7VH*m75q=| zO7Ko_QgB(YQ*cM{T(DR0yWoM~qu^J;ZNU@4eZduhNL(v+hr6tng($Ufh(oWJM=|;tV#SX<0_+ELX{JxYyIFI6MeOVk_HtJJI2 zE7U91)f$J!sc~t3)120v(45i$+OL`~nzq{Z+Gfpvn%3HT+LqNlsykG7te&r1q+6(4 zpxdY0ue+?fqC2lM>#h2n{)gUZXlZO^Y+-C`Y;A-Z^Nb~Czxjw6YUyI>Xz6O1Xt`l| zZnUY*(^k4A5 z54;FG3H%j!9(WV@JMb*&YeYwvM3+XFMcJ{6*!kF-*vA+U zUl+d{e;AK8H8qiuJCGgF9ntweZMh232=o`!aC9$p9(o#jFuEVQ8@em{8>$7m2YML# z0}6(2kM4`^gZ_wmiyDOq1&Pjm{pk7m=&0dmh4Y0t;bdW{5HB1q+#&2OTq?u}rwcy`(85{5X~H?e5yE-G?!rF8*+P%lE#4!} zmkgB*lN3q{B=036X`|F7bxQftYN=LAk%pxbsaqSaX zJX73O{HFL_FaVH?KR?gqYMQ!CO;I0KpHiPu zZ&&Y7A5tGw?^7RF?^Sy>ziQ5DE^01mhHD3FhiHdsUunVWq17eT1FOeZPpU>#kE$M0 zJ-B*oH9?2gF?9?bQAgL6>qxpX-80=&-JiOLx)-`vx?8$By-R;vpI6hh#%+KZdmGyu z+Zl%#;l>`uF2f*m{>CY0hB;zBWja;$gw94j3uhr*?GSzR`l(WP_s z@pSQY@^tX@^tAKz_H_63@^toe^(^%1eLCMSz7;-g{U-kv|26;b{%rvum>2vUXc7Dt z_!NKye*{_uzXTeCkAwGvPlDLcve44dtCpqx zC-F^9>k_vTh~(Jhw4@2CM;p;J^aAu8^ip&gdJ&q3)}WDS0$Pn$p|xlfx-(jimZE8x zM$CJR2rI{4!QRH+!d}OA!F9&<#m&Uc!p*>)!2QRcPY@CKgt-Jdfkl`@SWGA;5D6#( zfiQ-^C6o|G6KI5y1P);wVK#w8XhUjGYD;=ZYDI2G&Lck}JtKW1wIoj|W)^X}ME>08Y7tSV5 z11G?-aB4Ue93e-~Dd!P+7#@X3;xPy)9+^kr;dv=ulDCQXJMTR20`C&9oL|Q0@`Zdp zpU(fvzlrTHunM;dR|vzxT|%=^BitrjD~t($71jz*3O5TKLc1^`Obgcuv%+75HsM(D ze(~Sp*Wx0HUwTmbQF>dtUHVvhLHbPkUHVPhN_IwiUbAg>SNd7{Kj|sy z6=^@&F6kZV-_l#szoZ|eZ>2A#r==&Q8>FwLN2D*LUlnaD+g1Khyi-h98kJV%fU5pg zy{fub^{sMN{WMxpK~#CF=BkdWN2-5SpH&0Ya5YcOSF_a$bwGVheO zT+!UsOw!KKPSZ}*mT0GF#np4Fk<~n%P$$)W*EQ%H^+Rfg)%33!SyNckw`Ney=$ZyY z%+P3$e-Hcm6nGJ?i&#<|8Z#!};0W3h3%Ib%+kFPJZxub2l|7F*_9##nn< z^Q}eJ;a1REU~OreV4Gx{Xq#;F*Jf(twbivNYNNG>YB$z4)Ou>eweH&Gwc6U6T0^a) zc5N-eA!3|y9Chq=oOJARoOYadY;$aNoOR$_8JEko(beFJy6RnCSJ)kJkMIoil4)T>krrOufOYm=tlXVGLxb$OO%<*8p@JoYs;#r zmDDTL3)HLBKd9|!?P=jg}i$LS~O(->05dd3FE zI>u$@W9D||ZssHA09HQh8?z_tJ@Y&B6I00g!0g2Om)Vxpg4K;Rn7xR-lH=q2&N<3? z#W~A4&AG_A!g1p@`&gx7_Sgtvq@g{>+c3jZg3EBsUVRd_}CkMODRyzrv1 zV@0=$P8DZ`cZ9Nv@4^}4DdOqkxHu|4D1Ij%Eg2&jDH$Uxk>O=9*;tuCwpcbqhLGjU z`pc*?vaCQxl*weHWQ8)hY`kolY>I58Y>sT8Y=-Q-%q{CHL&`X^xiY1!LdKBwt?XA> zSP53bDkoOTDhE_9Rn{pj%86Bos_|9BtEQ+%sK%+_Duil+YNBeqYK*GCs!%mdg-{o& z#cGlIiTbYksrt71mimGEk-A1>&_p$1%}&id4NCh)TV5@xmREPwx6!xPx6-%J$MrFN zRR3K6RKKW(STnx{U4yN`*DR}9QiH0&)MO2-4Rj;gC^Qm`MMjxXX=EAsMz&F5tTNUS zu9>f!+gq>}yMZb-s0mb*U9+Rav{)2H0NJLh8QMcC33;d#bj5-Lcwt zwI6Cf)spJk)xEFnPUw^*-PW|Qj3-x#FPuG9)Df+ZDx-DLW6@L5lhM=BGtqa^f1(#+t>Ss{Ht|2>f5qR$U&a54zlm>Y z+T3&^b1`!{V?%C6??P`!??9hIA4YFN??E3xZ$+O$o3UD~5&IDP0{aa61p5>_2KSKg zl5myqf^dm&k8p-?nedeGjPQp5c2agtwn4U5wo`_zq*PW^aw`{A3My%pl1hH%(n?+>y>fn~u##9g zMTu2Ts+w0dvuZ|_Tvetbs2D1`YPM>oilU;bXey1mTHQkPUJYpeQGZZ>Q|Hv5)F0Ik zG!HdYtys&~(zP6|PAk$%v@|VGE7Y>JZ?*pFU#nx)@oHbSyV_74st#A1tMxjw&Z-+( zcStut-%me8-$OrGKS-a|FV|~pj@B@1WHo}CZH66&U52nxXABvw#( zy5+j>dh9yqy6(E-O1Yo9#h#yX!ydk;!lUpwJq8cQv)ohZv3sN*wnyfXcyyi`&kT>y z!}fW6Zr?fI8Q*WdlfLb~6TaiVQ@+Rb59?pnzpMXP|E>P7`e*eo>bLtLfwqBWf4e|7 zusyIOxHyOlmIm>`X+c5|9b6DZ1(CsJK}>K)aCWd;sCP&b5``*4XG4=3NDUe3ZENWQRFt1^9!_0=VhInH<8i_VWFGkNt&qmKhKS#euzefL!5@V{E zCe|h1HQqhmF5WHPA^u_$B9=dTc%UCdv-|nPxM>#bMy`L8}uFY zb@cD(%jgg2OXyc_*wGvZrNg>I3SZ z)W_84)ECs3)F;$u)Q8lLG&ZfS+*wYgbLa#*iH@gVrQe{pW6WnL82cCtSTk8mSXvgF z#bGg6Wh^pF%^JaWa>-mgcNMpq%i!v{7_NXjo-5_naFx7YcsF@Bcq{np_-THsVqHaJ z#j%Pl6;~_HS0pR;R2-<-Sh2I>kBW;Gn=39dGca;iF~X)U*1z*Bp)Mp$w$av%K-U5vJ0}$vPfl9rLode zSy$OmIYZf?j4J0=p{uwmj!L9bsH7^WI;0+|>8NS1X{+h3d8~P=snZ&@W-Uv5tU6o0 zwt7eP`s$U{eqBIUuN$o|)^E_S*T2!f)BjS_SmUix*TiblHIbS?&E6VkO+!)3DSe?V0n-l>>KJ68Wd88szch4DpcKIX|OlM8=?(04dI4V!@34TL#W}G#&wPB z8&@{2Zd}#a6ir2w(F@Tl(H1d7%pUtU);r!OzBRt>C%oLMsY6rSrejT86Tc>2BxWZ| zlb=%mraq<)W~OErXQ7xDnD6NSp}(SAV%lKZVp?JDVVqbO){U*lda&=Y+i|0bQ;Cy_ zV~I0~^y{tX;e`Ou0ZK!Xl zuc@!7e^a?M9xYuSDQD9ebQb*y{SN&h{XYFE{Skd3qmr?Qv5TQ$30N{#Ig7xuu?#E) zOUyE{*0O@EjVwQF6Dz@5#fq@Dutu{hxN@$Jo8fNfy0}5^uiVw#Ft?Grp4-6P!rjc> z$W3rJahtd+xI4INo|ae5+rr<--^t&`&le3Ay{rI4gG7BrKPq6N?xJ?0j}Gpp1w{;`!qwL-7UG4dHn7xPn^-tnOt}f4RbE=#gC)3GyRy&1Gij(AA>csto zBg{r-W0 z{(-@P;eo=yh`@lrpa3FJ5tIdmL1|DM1Vf`jLqo+OXUHA$hH68n8V)q6R8y4!TQ>3Y+ZrrS+>5^odl5<`>ol5>;Vq&%6IZkvXr*JloAE@jq{vDt2zKA0Yu zE|{Je3uXi6J|=_>V?SakL@`lEtRQlU)kG0dNaPVKiE^TZ$R=ut$H<4tXUM0>GRi>e zcxpBEJ+%{UF=IO`#9Ghtur9K8vktS)v3_HL>{Hxh-1FQ6+=JXZ+>_ih+~eGf+#}p8 z+-uy!Tovy$|15tW|0Mqme=mQ!s6;eHL=lNaWYJ{NToGHu5-kxe5KRya}u~ytl za$LSm{)_yCe3kr|e64(k{HT1Ne7Ag!e7St5{BY&j%0DWvRQ^_Zy>egWrOMlt_bN|R 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࿬sq7A?qawTQGH?Mj+LpE4q5qwyC|#L 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

-nXgPxSms&#(3TR?qPvPt*k+_aobnYJ>Ef>-mG) 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 VL$=egN_s1nuNt=!K=sn0{|^z@15*G1 literal 0 HcmV?d00001 diff --git a/intelliaide/vendor/lxml/etree.h b/intelliaide/vendor/lxml/etree.h new file mode 100644 index 0000000..10a6039 --- /dev/null +++ b/intelliaide/vendor/lxml/etree.h @@ -0,0 +1,244 @@ +/* Generated by Cython 3.2.4 */ + +#ifndef __PYX_HAVE__lxml__etree +#define __PYX_HAVE__lxml__etree + +#include "Python.h" +struct LxmlDocument; +struct LxmlElement; +struct LxmlElementTree; +struct LxmlElementTagMatcher; +struct LxmlElementIterator; +struct LxmlElementBase; +struct LxmlElementClassLookup; +struct LxmlFallbackElementClassLookup; + +/* "lxml/etree.pyx":456 + * + * # type of a function that steps from node to node + * ctypedef public xmlNode* (*_node_to_node_function)(xmlNode*) # <<<<<<<<<<<<<< + * + * +*/ +typedef xmlNode *(*_node_to_node_function)(xmlNode *); + +/* "lxml/etree.pyx":470 + * # Public Python API + * + * @cython.final # <<<<<<<<<<<<<< + * @cython.freelist(8) + * cdef public class _Document [ type LxmlDocumentType, object LxmlDocument ]: +*/ +struct LxmlDocument { + PyObject_HEAD + struct __pyx_vtabstruct_4lxml_5etree__Document *__pyx_vtab; + int _ns_counter; + PyObject *_prefix_tail; + xmlDoc *_c_doc; + struct __pyx_obj_4lxml_5etree__BaseParser *_parser; +}; + +/* "lxml/etree.pyx":822 + * + * + * @cython.no_gc_clear # <<<<<<<<<<<<<< + * cdef public class _Element [ type LxmlElementType, object LxmlElement ]: + * """Element class. +*/ +struct LxmlElement { + PyObject_HEAD + struct LxmlDocument *_doc; + xmlNode *_c_node; + PyObject *_tag; +}; + +/* "lxml/etree.pyx":1996 + * + * + * cdef public class _ElementTree [ type LxmlElementTreeType, # <<<<<<<<<<<<<< + * object LxmlElementTree ]: + * cdef _Document _doc +*/ +struct LxmlElementTree { + PyObject_HEAD + struct __pyx_vtabstruct_4lxml_5etree__ElementTree *__pyx_vtab; + struct LxmlDocument *_doc; + struct LxmlElement *_context_node; +}; + +/* "lxml/etree.pyx":2770 + * + * + * cdef public class _ElementTagMatcher [ object LxmlElementTagMatcher, # <<<<<<<<<<<<<< + * type LxmlElementTagMatcherType ]: + * """ +*/ +struct LxmlElementTagMatcher { + PyObject_HEAD + struct __pyx_vtabstruct_4lxml_5etree__ElementTagMatcher *__pyx_vtab; + PyObject *_pystrings; + int _node_type; + char *_href; + char *_name; +}; + +/* "lxml/etree.pyx":2801 + * self._name = NULL + * + * cdef public class _ElementIterator(_ElementTagMatcher) [ # <<<<<<<<<<<<<< + * object LxmlElementIterator, type LxmlElementIteratorType ]: + * """ +*/ +struct LxmlElementIterator { + struct LxmlElementTagMatcher __pyx_base; + struct LxmlElement *_node; + _node_to_node_function _next_element; +}; + +/* "src/lxml/classlookup.pxi":6 + * # Custom Element classes + * + * cdef public class ElementBase(_Element) [ type LxmlElementBaseType, # <<<<<<<<<<<<<< + * object LxmlElementBase ]: + * """ElementBase(*children, attrib=None, nsmap=None, **_extra) +*/ +struct LxmlElementBase { + struct LxmlElement __pyx_base; +}; + +/* "src/lxml/classlookup.pxi":210 + * # Element class lookup + * + * ctypedef public object (*_element_class_lookup_function)(object, _Document, xmlNode*) # <<<<<<<<<<<<<< + * + * # class to store element class lookup functions +*/ +typedef PyObject *(*_element_class_lookup_function)(PyObject *, struct LxmlDocument *, xmlNode *); + +/* "src/lxml/classlookup.pxi":213 + * + * # class to store element class lookup functions + * cdef public class ElementClassLookup [ type LxmlElementClassLookupType, # <<<<<<<<<<<<<< + * object LxmlElementClassLookup ]: + * """ElementClassLookup(self) +*/ +struct LxmlElementClassLookup { + PyObject_HEAD + _element_class_lookup_function _lookup_function; +}; + +/* "src/lxml/classlookup.pxi":221 + * + * + * cdef public class FallbackElementClassLookup(ElementClassLookup) \ # <<<<<<<<<<<<<< + * [ type LxmlFallbackElementClassLookupType, + * object LxmlFallbackElementClassLookup ]: +*/ +struct LxmlFallbackElementClassLookup { + struct LxmlElementClassLookup __pyx_base; + struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup *__pyx_vtab; + struct LxmlElementClassLookup *fallback; + _element_class_lookup_function _fallback_function; +}; + +#ifndef __PYX_HAVE_API__lxml__etree + +#ifdef CYTHON_EXTERN_C + #undef __PYX_EXTERN_C + #define __PYX_EXTERN_C CYTHON_EXTERN_C +#elif defined(__PYX_EXTERN_C) + #ifdef _MSC_VER + #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.") + #else + #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead. + #endif +#else + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#ifndef DL_IMPORT + #define DL_IMPORT(_T) _T +#endif + +__PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlDocumentType; +__PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlElementType; +__PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlElementTreeType; +__PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlElementTagMatcherType; +__PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlElementIteratorType; +__PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlElementBaseType; +__PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlElementClassLookupType; +__PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlFallbackElementClassLookupType; + +__PYX_EXTERN_C struct LxmlElement *deepcopyNodeToDocument(struct LxmlDocument *, xmlNode *); +__PYX_EXTERN_C struct LxmlElementTree *elementTreeFactory(struct LxmlElement *); +__PYX_EXTERN_C struct LxmlElementTree *newElementTree(struct LxmlElement *, PyObject *); +__PYX_EXTERN_C struct LxmlElementTree *adoptExternalDocument(xmlDoc *, PyObject *, int); +__PYX_EXTERN_C struct LxmlElement *elementFactory(struct LxmlDocument *, xmlNode *); +__PYX_EXTERN_C struct LxmlElement *makeElement(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *); +__PYX_EXTERN_C struct LxmlElement *makeSubElement(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *); +__PYX_EXTERN_C void setElementClassLookupFunction(_element_class_lookup_function, PyObject *); +__PYX_EXTERN_C PyObject *lookupDefaultElementClass(PyObject *, PyObject *, xmlNode *); +__PYX_EXTERN_C PyObject *lookupNamespaceElementClass(PyObject *, PyObject *, xmlNode *); +__PYX_EXTERN_C PyObject *callLookupFallback(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *); +__PYX_EXTERN_C int tagMatches(xmlNode *, const xmlChar *, const xmlChar *); +__PYX_EXTERN_C struct LxmlDocument *documentOrRaise(PyObject *); +__PYX_EXTERN_C struct LxmlElement *rootNodeOrRaise(PyObject *); +__PYX_EXTERN_C int hasText(xmlNode *); +__PYX_EXTERN_C int hasTail(xmlNode *); +__PYX_EXTERN_C PyObject *textOf(xmlNode *); +__PYX_EXTERN_C PyObject *tailOf(xmlNode *); +__PYX_EXTERN_C int setNodeText(xmlNode *, PyObject *); +__PYX_EXTERN_C int setTailText(xmlNode *, PyObject *); +__PYX_EXTERN_C PyObject *attributeValue(xmlNode *, xmlAttr *); +__PYX_EXTERN_C PyObject *attributeValueFromNsName(xmlNode *, const xmlChar *, const xmlChar *); +__PYX_EXTERN_C PyObject *getAttributeValue(struct LxmlElement *, PyObject *, PyObject *); +__PYX_EXTERN_C PyObject *iterattributes(struct LxmlElement *, int); +__PYX_EXTERN_C PyObject *collectAttributes(xmlNode *, int); +__PYX_EXTERN_C int setAttributeValue(struct LxmlElement *, PyObject *, PyObject *); +__PYX_EXTERN_C int delAttribute(struct LxmlElement *, PyObject *); +__PYX_EXTERN_C int delAttributeFromNsName(xmlNode *, const xmlChar *, const xmlChar *); +__PYX_EXTERN_C int hasChild(xmlNode *); +__PYX_EXTERN_C xmlNode *findChild(xmlNode *, Py_ssize_t); +__PYX_EXTERN_C xmlNode *findChildForwards(xmlNode *, Py_ssize_t); +__PYX_EXTERN_C xmlNode *findChildBackwards(xmlNode *, Py_ssize_t); +__PYX_EXTERN_C xmlNode *nextElement(xmlNode *); +__PYX_EXTERN_C xmlNode *previousElement(xmlNode *); +__PYX_EXTERN_C void appendChild(struct LxmlElement *, struct LxmlElement *); +__PYX_EXTERN_C int appendChildToElement(struct LxmlElement *, struct LxmlElement *); +__PYX_EXTERN_C PyObject *pyunicode(const xmlChar *); +__PYX_EXTERN_C PyObject *utf8(PyObject *); +__PYX_EXTERN_C PyObject *getNsTag(PyObject *); +__PYX_EXTERN_C PyObject *getNsTagWithEmptyNs(PyObject *); +__PYX_EXTERN_C PyObject *namespacedName(xmlNode *); +__PYX_EXTERN_C PyObject *namespacedNameFromNsName(const xmlChar *, const xmlChar *); +__PYX_EXTERN_C void iteratorStoreNext(struct LxmlElementIterator *, struct LxmlElement *); +__PYX_EXTERN_C void initTagMatch(struct LxmlElementTagMatcher *, PyObject *); +__PYX_EXTERN_C xmlNs *findOrBuildNodeNsPrefix(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *); + +#endif /* !__PYX_HAVE_API__lxml__etree */ + +/* WARNING: the interface of the module init function changed in CPython 3.5. */ +/* It now returns a PyModuleDef instance instead of a PyModule instance. */ + +/* WARNING: Use PyImport_AppendInittab("etree", PyInit_etree) instead of calling PyInit_etree directly from Python 3.5 */ +PyMODINIT_FUNC PyInit_etree(void); + +#if PY_VERSION_HEX >= 0x03050000 && (defined(__GNUC__) || defined(__clang__) || defined(_MSC_VER) || (defined(__cplusplus) && __cplusplus >= 201402L)) +#if defined(__cplusplus) && __cplusplus >= 201402L +[[deprecated("Use PyImport_AppendInittab(\"etree\", PyInit_etree) instead of calling PyInit_etree directly.")]] inline +#elif defined(__GNUC__) || defined(__clang__) +__attribute__ ((__deprecated__("Use PyImport_AppendInittab(\"etree\", PyInit_etree) instead of calling PyInit_etree directly."), __unused__)) __inline__ +#elif defined(_MSC_VER) +__declspec(deprecated("Use PyImport_AppendInittab(\"etree\", PyInit_etree) instead of calling PyInit_etree directly.")) __inline +#endif +static PyObject* __PYX_WARN_IF_PyInit_etree_INIT_CALLED(PyObject* res) { + return res; +} +#define PyInit_etree() __PYX_WARN_IF_PyInit_etree_INIT_CALLED(PyInit_etree()) +#endif + +#endif /* !__PYX_HAVE__lxml__etree */ diff --git a/intelliaide/vendor/lxml/etree.pyx b/intelliaide/vendor/lxml/etree.pyx new file mode 100644 index 0000000..149a414 --- /dev/null +++ b/intelliaide/vendor/lxml/etree.pyx @@ -0,0 +1,3858 @@ +# cython: binding=True +# cython: auto_pickle=False +# cython: language_level=3 + +""" +The ``lxml.etree`` module implements the extended ElementTree API for XML. +""" + +__docformat__ = "restructuredtext en" + +__all__ = [ + 'AttributeBasedElementClassLookup', 'C14NError', 'C14NWriterTarget', 'CDATA', + 'Comment', 'CommentBase', 'CustomElementClassLookup', 'DEBUG', + 'DTD', 'DTDError', 'DTDParseError', 'DTDValidateError', + 'DocumentInvalid', 'ETCompatXMLParser', 'ETXPath', 'Element', + 'ElementBase', 'ElementClassLookup', 'ElementDefaultClassLookup', + 'ElementNamespaceClassLookup', 'ElementTree', 'Entity', 'EntityBase', + 'Error', 'ErrorDomains', 'ErrorLevels', 'ErrorTypes', 'Extension', + 'FallbackElementClassLookup', 'FunctionNamespace', 'HTML', 'HTMLParser', + 'ICONV_COMPILED_VERSION', + 'LIBXML_COMPILED_VERSION', 'LIBXML_VERSION', + 'LIBXML_FEATURES', + 'LIBXSLT_COMPILED_VERSION', 'LIBXSLT_VERSION', + 'LXML_VERSION', + 'LxmlError', 'LxmlRegistryError', 'LxmlSyntaxError', + 'NamespaceRegistryError', 'PI', 'PIBase', 'ParseError', + 'ParserBasedElementClassLookup', 'ParserError', 'ProcessingInstruction', + 'PyErrorLog', 'PythonElementClassLookup', 'QName', 'RelaxNG', + 'RelaxNGError', 'RelaxNGErrorTypes', 'RelaxNGParseError', + 'RelaxNGValidateError', 'Resolver', 'Schematron', 'SchematronError', + 'SchematronParseError', 'SchematronValidateError', 'SerialisationError', + 'SubElement', 'TreeBuilder', 'XInclude', 'XIncludeError', 'XML', + 'XMLDTDID', 'XMLID', 'XMLParser', 'XMLSchema', 'XMLSchemaError', + 'XMLSchemaParseError', 'XMLSchemaValidateError', 'XMLSyntaxError', + 'XMLTreeBuilder', 'XPath', 'XPathDocumentEvaluator', 'XPathError', + 'XPathEvalError', 'XPathEvaluator', 'XPathFunctionError', 'XPathResultError', + 'XPathSyntaxError', 'XSLT', 'XSLTAccessControl', 'XSLTApplyError', + 'XSLTError', 'XSLTExtension', 'XSLTExtensionError', 'XSLTParseError', + 'XSLTSaveError', 'canonicalize', + 'cleanup_namespaces', 'clear_error_log', 'dump', + 'fromstring', 'fromstringlist', 'get_default_parser', 'iselement', + 'iterparse', 'iterwalk', 'parse', 'parseid', 'register_namespace', + 'set_default_parser', 'set_element_class_lookup', 'strip_attributes', + 'strip_elements', 'strip_tags', 'tostring', 'tostringlist', 'tounicode', + 'use_global_python_log' + ] + +cimport cython + +from lxml cimport python +from lxml.includes cimport tree, config +from lxml.includes.tree cimport xmlDoc, xmlNode, xmlAttr, xmlNs, _isElement, _getNs +from lxml.includes.tree cimport const_xmlChar, xmlChar, _xcstr +from lxml.python cimport _cstr, _isString +from lxml.includes cimport xpath +from lxml.includes cimport c14n + +# Cython's standard declarations +cimport cpython.mem +cimport cpython.ref +from libc cimport limits, stdio, stdlib +from libc cimport string as cstring_h # not to be confused with stdlib 'string' +from libc.string cimport const_char + +cdef object os_path_abspath +from os.path import abspath as os_path_abspath + +cdef object BytesIO, StringIO +from io import BytesIO, StringIO + +cdef object OrderedDict +from collections import OrderedDict + +cdef object _elementpath +from lxml import _elementpath + +cdef object sys +import sys + +cdef object re +import re + +cdef object partial +from functools import partial + +cdef object islice +from itertools import islice + +cdef object ITER_EMPTY = iter(()) + +cdef object MutableMapping +from collections.abc import MutableMapping + +class _ImmutableMapping(MutableMapping): + def __getitem__(self, key): + raise KeyError, key + + def __setitem__(self, key, value): + raise KeyError, key + + def __delitem__(self, key): + raise KeyError, key + + def __contains__(self, key): + return False + + def __len__(self): + return 0 + + def __iter__(self): + return ITER_EMPTY + iterkeys = itervalues = iteritems = __iter__ + +cdef object IMMUTABLE_EMPTY_MAPPING = _ImmutableMapping() +del _ImmutableMapping + + +# the rules +# --------- +# any libxml C argument/variable is prefixed with c_ +# any non-public function/class is prefixed with an underscore +# instance creation is always through factories + +# what to do with libxml2/libxslt error messages? +# 0 : drop +# 1 : use log +DEF __DEBUG = 1 + +# maximum number of lines in the libxml2/xslt log if __DEBUG == 1 +DEF __MAX_LOG_SIZE = 100 + +# make the compiled-in debug state publicly available +DEBUG = __DEBUG + +# A struct to store a cached qualified tag name+href pair. +# While we can borrow the c_name from the document dict, +# PyPy requires us to store a Python reference for the +# namespace in order to keep the byte buffer alive. +cdef struct qname: + const_xmlChar* c_name + python.PyObject* href + +# initialize parser (and threading) +xmlparser.xmlInitParser() + +# global per-thread setup +tree.xmlThrDefIndentTreeOutput(1) +tree.xmlThrDefLineNumbersDefaultValue(1) + +_initThreadLogging() + +# filename encoding +cdef bytes _FILENAME_ENCODING = (sys.getfilesystemencoding() or sys.getdefaultencoding() or 'ascii').encode("UTF-8") +cdef char* _C_FILENAME_ENCODING = _cstr(_FILENAME_ENCODING) + +# set up some default namespace prefixes +cdef dict _DEFAULT_NAMESPACE_PREFIXES = { + b"http://www.w3.org/XML/1998/namespace": b'xml', + b"http://www.w3.org/1999/xhtml": b"html", + b"http://www.w3.org/1999/XSL/Transform": b"xsl", + b"http://www.w3.org/1999/02/22-rdf-syntax-ns#": b"rdf", + b"http://schemas.xmlsoap.org/wsdl/": b"wsdl", + # xml schema + b"http://www.w3.org/2001/XMLSchema": b"xs", + b"http://www.w3.org/2001/XMLSchema-instance": b"xsi", + # dublin core + b"http://purl.org/dc/elements/1.1/": b"dc", + # objectify + b"http://codespeak.net/lxml/objectify/pytype" : b"py", +} + +# To avoid runtime encoding overhead, we keep a Unicode copy +# of the uri-prefix mapping as (str, str) items view. +cdef object _DEFAULT_NAMESPACE_PREFIXES_ITEMS = [] + +cdef _update_default_namespace_prefixes_items(): + cdef bytes ns, prefix + global _DEFAULT_NAMESPACE_PREFIXES_ITEMS + _DEFAULT_NAMESPACE_PREFIXES_ITEMS = { + ns.decode('utf-8') : prefix.decode('utf-8') + for ns, prefix in _DEFAULT_NAMESPACE_PREFIXES.items() + }.items() + +_update_default_namespace_prefixes_items() + +cdef object _check_internal_prefix = re.compile(br"ns\d+$").match + +def register_namespace(prefix, uri): + """Registers a namespace prefix that newly created Elements in that + namespace will use. The registry is global, and any existing + mapping for either the given prefix or the namespace URI will be + removed. + """ + prefix_utf, uri_utf = _utf8(prefix), _utf8(uri) + if _check_internal_prefix(prefix_utf): + raise ValueError("Prefix format reserved for internal use") + _tagValidOrRaise(prefix_utf) + _uriValidOrRaise(uri_utf) + if (uri_utf == b"http://www.w3.org/XML/1998/namespace" and prefix_utf != b'xml' + or prefix_utf == b'xml' and uri_utf != b"http://www.w3.org/XML/1998/namespace"): + raise ValueError("Cannot change the 'xml' prefix of the XML namespace") + for k, v in list(_DEFAULT_NAMESPACE_PREFIXES.items()): + if k == uri_utf or v == prefix_utf: + del _DEFAULT_NAMESPACE_PREFIXES[k] + _DEFAULT_NAMESPACE_PREFIXES[uri_utf] = prefix_utf + _update_default_namespace_prefixes_items() + + +# Error superclass for ElementTree compatibility +cdef class Error(Exception): + pass + +# module level superclass for all exceptions +cdef class LxmlError(Error): + """Main exception base class for lxml. All other exceptions inherit from + this one. + """ + def __init__(self, message, error_log=None): + super(_Error, self).__init__(message) + if error_log is None: + self.error_log = __copyGlobalErrorLog() + else: + self.error_log = error_log.copy() + +cdef object _Error = Error + + +# superclass for all syntax errors +class LxmlSyntaxError(LxmlError, SyntaxError): + """Base class for all syntax errors. + """ + +cdef class C14NError(LxmlError): + """Error during C14N serialisation. + """ + +# version information +cdef tuple __unpackDottedVersion(version): + version_list = [] + l = (version.decode("ascii").replace('-', '.').split('.') + [0]*4)[:4] + for item in l: + try: + item = int(item) + except ValueError: + if item.startswith('dev'): + count = item[3:] + item = -300 + elif item.startswith('alpha'): + count = item[5:] + item = -200 + elif item.startswith('beta'): + count = item[4:] + item = -100 + else: + count = 0 + if count: + item += int(count) + version_list.append(item) + return tuple(version_list) + +cdef tuple __unpackIntVersion(int c_version, int base=100): + return ( + ((c_version // (base*base)) % base), + ((c_version // base) % base), + (c_version % base) + ) + +cdef int _LIBXML_VERSION_INT +try: + _LIBXML_VERSION_INT = int( + re.match('[0-9]+', (tree.xmlParserVersion).decode("ascii")).group(0)) +except Exception: + print("Unknown libxml2 version: " + (tree.xmlParserVersion).decode("latin1")) + _LIBXML_VERSION_INT = 0 + +LIBXML_VERSION = __unpackIntVersion(_LIBXML_VERSION_INT) +LIBXML_COMPILED_VERSION = __unpackIntVersion(tree.LIBXML_VERSION) +LXML_VERSION = __unpackDottedVersion(tree.LXML_VERSION_STRING) + +__version__ = tree.LXML_VERSION_STRING.decode("ascii") + +cdef extern from *: + """ + #ifdef ZLIB_VERNUM + #define __lxml_zlib_version (ZLIB_VERNUM >> 4) + #else + #define __lxml_zlib_version 0 + #endif + #ifdef _LIBICONV_VERSION + #define __lxml_iconv_version (_LIBICONV_VERSION << 8) + #else + #define __lxml_iconv_version 0 + #endif + """ + # zlib isn't included automatically by libxml2's headers + #long ZLIB_HEX_VERSION "__lxml_zlib_version" + long LIBICONV_HEX_VERSION "__lxml_iconv_version" + +#ZLIB_COMPILED_VERSION = __unpackIntVersion(ZLIB_HEX_VERSION, base=0x10) +ICONV_COMPILED_VERSION = __unpackIntVersion(LIBICONV_HEX_VERSION, base=0x100)[:2] + + +cdef extern from "libxml/xmlversion.h": + """ + static const char* const _lxml_lib_features[] = { +#ifdef LIBXML_HTML_ENABLED + "html", +#endif +#ifdef LIBXML_FTP_ENABLED + "ftp", +#endif +#ifdef LIBXML_HTTP_ENABLED + "http", +#endif +#ifdef LIBXML_CATALOG_ENABLED + "catalog", +#endif +#ifdef LIBXML_XPATH_ENABLED + "xpath", +#endif +#ifdef LIBXML_ICONV_ENABLED + "iconv", +#endif +#ifdef LIBXML_ICU_ENABLED + "icu", +#endif +#ifdef LIBXML_REGEXP_ENABLED + "regexp", +#endif +#ifdef LIBXML_SCHEMAS_ENABLED + "xmlschema", +#endif +#ifdef LIBXML_SCHEMATRON_ENABLED + "schematron", +#endif +#ifdef LIBXML_ZLIB_ENABLED + "zlib", +#endif +#ifdef LIBXML_LZMA_ENABLED + "lzma", +#endif + 0 + }; + """ + const char* const* _LXML_LIB_FEATURES "_lxml_lib_features" + + +cdef set _copy_lib_features(): + features = set() + feature = _LXML_LIB_FEATURES + while feature[0]: + features.add(feature[0].decode('ASCII')) + feature += 1 + return features + +LIBXML_COMPILED_FEATURES = _copy_lib_features() +LIBXML_FEATURES = { + feature_name for feature_id, feature_name in [ + #XML_WITH_THREAD = 1 + #XML_WITH_TREE = 2 + #XML_WITH_OUTPUT = 3 + #XML_WITH_PUSH = 4 + #XML_WITH_READER = 5 + #XML_WITH_PATTERN = 6 + #XML_WITH_WRITER = 7 + #XML_WITH_SAX1 = 8 + (xmlparser.XML_WITH_FTP, "ftp"), # XML_WITH_FTP = 9 + (xmlparser.XML_WITH_HTTP, "http"), # XML_WITH_HTTP = 10 + #XML_WITH_VALID = 11 + (xmlparser.XML_WITH_HTML, "html"), # XML_WITH_HTML = 12 + #XML_WITH_LEGACY = 13 + #XML_WITH_C14N = 14 + (xmlparser.XML_WITH_CATALOG, "catalog"), # XML_WITH_CATALOG = 15 + (xmlparser.XML_WITH_XPATH, "xpath"), # XML_WITH_XPATH = 16 + #XML_WITH_XPTR = 17 + #XML_WITH_XINCLUDE = 18 + (xmlparser.XML_WITH_ICONV, "iconv"), # XML_WITH_ICONV = 19 + #XML_WITH_ISO8859X = 20 + #XML_WITH_UNICODE = 21 + (xmlparser.XML_WITH_REGEXP, "regexp"), # XML_WITH_REGEXP = 22 + #XML_WITH_AUTOMATA = 23 + #XML_WITH_EXPR = 24 + (xmlparser.XML_WITH_SCHEMAS, "xmlschema"), # XML_WITH_SCHEMAS = 25 + (xmlparser.XML_WITH_SCHEMATRON, "schematron"), # XML_WITH_SCHEMATRON = 26 + #XML_WITH_MODULES = 27 + #XML_WITH_DEBUG = 28 + #XML_WITH_DEBUG_MEM = 29 + #XML_WITH_DEBUG_RUN = 30 # unused + (xmlparser.XML_WITH_ZLIB, "zlib"), # XML_WITH_ZLIB = 31 + (xmlparser.XML_WITH_ICU, "icu"), # XML_WITH_ICU = 32 + (xmlparser.XML_WITH_LZMA, "lzma"), # XML_WITH_LZMA = 33 + ] if xmlparser.xmlHasFeature(feature_id) +} + +cdef bint HAS_ZLIB_COMPRESSION = xmlparser.xmlHasFeature(xmlparser.XML_WITH_ZLIB) + + +# class for temporary storage of Python references, +# used e.g. for XPath results +@cython.final +@cython.internal +cdef class _TempStore: + cdef list _storage + def __init__(self): + self._storage = [] + + cdef int add(self, obj) except -1: + self._storage.append(obj) + return 0 + + cdef int clear(self) except -1: + del self._storage[:] + return 0 + + +# class for temporarily storing exceptions raised in extensions +@cython.internal +cdef class _ExceptionContext: + cdef object _exc_info + + cdef int clear(self) except -1: + self._exc_info = None + return 0 + + @cython.final + cdef void _store_raised(self) noexcept: + try: + self._exc_info = sys.exc_info() + except BaseException as e: + self._store_exception(e) + finally: + return # and swallow any further exceptions + + @cython.final + cdef int _store_exception(self, exception) except -1: + self._exc_info = (exception, None, None) + return 0 + + @cython.final + cdef bint _has_raised(self) except -1: + return self._exc_info is not None + + @cython.final + cdef int _raise_if_stored(self) except -1: + if self._exc_info is None: + return 0 + type, value, traceback = self._exc_info + self._exc_info = None + if value is None and traceback is None: + raise type + else: + raise type, value, traceback + + +# type of a function that steps from node to node +ctypedef public xmlNode* (*_node_to_node_function)(xmlNode*) + + +################################################################################ +# Include submodules + +include "proxy.pxi" # Proxy handling (element backpointers/memory/etc.) +include "apihelpers.pxi" # Private helper functions +include "xmlerror.pxi" # Error and log handling + + +################################################################################ +# Public Python API + +@cython.final +@cython.freelist(8) +cdef public class _Document [ type LxmlDocumentType, object LxmlDocument ]: + """Internal base class to reference a libxml document. + + When instances of this class are garbage collected, the libxml + document is cleaned up. + """ + cdef int _ns_counter + cdef bytes _prefix_tail + cdef xmlDoc* _c_doc + cdef _BaseParser _parser + + def __dealloc__(self): + # if there are no more references to the document, it is safe + # to clean the whole thing up, as all nodes have a reference to + # the document + tree.xmlFreeDoc(self._c_doc) + + @cython.final + cdef getroot(self): + # return an element proxy for the document root + cdef xmlNode* c_node + c_node = tree.xmlDocGetRootElement(self._c_doc) + if c_node is NULL: + return None + return _elementFactory(self, c_node) + + @cython.final + cdef bint hasdoctype(self) noexcept: + # DOCTYPE gets parsed into internal subset (xmlDTD*) + return self._c_doc is not NULL and self._c_doc.intSubset is not NULL + + @cython.final + cdef getdoctype(self): + # get doctype info: root tag, public/system ID (or None if not known) + cdef tree.xmlDtd* c_dtd + cdef xmlNode* c_root_node + public_id = None + sys_url = None + c_dtd = self._c_doc.intSubset + if c_dtd is not NULL: + if c_dtd.ExternalID is not NULL: + public_id = funicode(c_dtd.ExternalID) + if c_dtd.SystemID is not NULL: + sys_url = funicode(c_dtd.SystemID) + c_dtd = self._c_doc.extSubset + if c_dtd is not NULL: + if not public_id and c_dtd.ExternalID is not NULL: + public_id = funicode(c_dtd.ExternalID) + if not sys_url and c_dtd.SystemID is not NULL: + sys_url = funicode(c_dtd.SystemID) + c_root_node = tree.xmlDocGetRootElement(self._c_doc) + if c_root_node is NULL: + root_name = None + else: + root_name = funicode(c_root_node.name) + return root_name, public_id, sys_url + + @cython.final + cdef getxmlinfo(self): + # return XML version and encoding (or None if not known) + cdef xmlDoc* c_doc = self._c_doc + if c_doc.version is NULL: + version = None + else: + version = funicode(c_doc.version) + if c_doc.encoding is NULL: + encoding = None + else: + encoding = funicode(c_doc.encoding) + return version, encoding + + @cython.final + cdef isstandalone(self): + # returns True for "standalone=true", + # False for "standalone=false", None if not provided + if self._c_doc.standalone == -1: + return None + else: + return (self._c_doc.standalone == 1) + + @cython.final + cdef bytes buildNewPrefix(self): + # get a new unique prefix ("nsX") for this document + cdef bytes ns + if self._ns_counter < len(_PREFIX_CACHE): + ns = _PREFIX_CACHE[self._ns_counter] + else: + ns = python.PyBytes_FromFormat("ns%d", self._ns_counter) + if self._prefix_tail is not None: + ns += self._prefix_tail + self._ns_counter += 1 + if self._ns_counter < 0: + # overflow! + self._ns_counter = 0 + if self._prefix_tail is None: + self._prefix_tail = b"A" + else: + self._prefix_tail += b"A" + return ns + + @cython.final + cdef xmlNs* _findOrBuildNodeNs(self, xmlNode* c_node, + const_xmlChar* c_href, const_xmlChar* c_prefix, + bint is_attribute) except NULL: + """Get or create namespace structure for a node. Reuses the prefix if + possible. + """ + cdef xmlNs* c_ns + cdef xmlNs* c_doc_ns + cdef python.PyObject* dict_result + if c_node.type != tree.XML_ELEMENT_NODE: + assert c_node.type == tree.XML_ELEMENT_NODE, \ + "invalid node type %d, expected %d" % ( + c_node.type, tree.XML_ELEMENT_NODE) + # look for existing ns declaration + c_ns = _searchNsByHref(c_node, c_href, is_attribute) + if c_ns is not NULL: + if is_attribute and c_ns.prefix is NULL: + # do not put namespaced attributes into the default + # namespace as this would break serialisation + pass + else: + return c_ns + + # none found => determine a suitable new prefix + if c_prefix is NULL: + dict_result = python.PyDict_GetItem( + _DEFAULT_NAMESPACE_PREFIXES, c_href) + if dict_result is not NULL: + prefix = dict_result + else: + prefix = self.buildNewPrefix() + c_prefix = _xcstr(prefix) + + # make sure the prefix is not in use already + while tree.xmlSearchNs(self._c_doc, c_node, c_prefix) is not NULL: + prefix = self.buildNewPrefix() + c_prefix = _xcstr(prefix) + + # declare the namespace and return it + c_ns = tree.xmlNewNs(c_node, c_href, c_prefix) + if c_ns is NULL: + raise MemoryError() + return c_ns + + @cython.final + cdef int _setNodeNs(self, xmlNode* c_node, const_xmlChar* c_href) except -1: + "Lookup namespace structure and set it for the node." + c_ns = self._findOrBuildNodeNs(c_node, c_href, NULL, 0) + tree.xmlSetNs(c_node, c_ns) + + +cdef tuple __initPrefixCache(): + cdef int i + return tuple([ python.PyBytes_FromFormat("ns%d", i) + for i in range(26) ]) + +cdef tuple _PREFIX_CACHE = __initPrefixCache() + + +cdef _Document _documentFactory(xmlDoc* c_doc, _BaseParser parser): + cdef _Document result + result = _Document.__new__(_Document) + result._c_doc = c_doc + result._ns_counter = 0 + result._prefix_tail = None + if parser is None: + parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser() + result._parser = parser + return result + + +cdef object _find_invalid_public_id_characters = re.compile( + ur"[^\x20\x0D\x0Aa-zA-Z0-9'()+,./:=?;!*#@$_%-]+").search + + +cdef class DocInfo: + "Document information provided by parser and DTD." + cdef _Document _doc + def __cinit__(self, tree): + "Create a DocInfo object for an ElementTree object or root Element." + self._doc = _documentOrRaise(tree) + root_name, public_id, system_url = self._doc.getdoctype() + if not root_name and (public_id or system_url): + raise ValueError, "Could not find root node" + + @property + def root_name(self): + """Returns the name of the root node as defined by the DOCTYPE.""" + root_name, public_id, system_url = self._doc.getdoctype() + return root_name + + @cython.final + cdef tree.xmlDtd* _get_c_dtd(self) noexcept: + """"Return the DTD. Create it if it does not yet exist.""" + cdef xmlDoc* c_doc = self._doc._c_doc + cdef xmlNode* c_root_node + cdef const_xmlChar* c_name + + if c_doc.intSubset: + return c_doc.intSubset + + c_root_node = tree.xmlDocGetRootElement(c_doc) + c_name = c_root_node.name if c_root_node else NULL + return tree.xmlCreateIntSubset(c_doc, c_name, NULL, NULL) + + def clear(self): + """Removes DOCTYPE and internal subset from the document.""" + cdef xmlDoc* c_doc = self._doc._c_doc + cdef tree.xmlNode* c_dtd = c_doc.intSubset + if c_dtd is NULL: + return + tree.xmlUnlinkNode(c_dtd) + tree.xmlFreeNode(c_dtd) + + property public_id: + """Public ID of the DOCTYPE. + + Mutable. May be set to a valid string or None. If a DTD does not + exist, setting this variable (even to None) will create one. + """ + def __get__(self): + root_name, public_id, system_url = self._doc.getdoctype() + return public_id + + def __set__(self, value): + cdef xmlChar* c_value = NULL + if value is not None: + match = _find_invalid_public_id_characters(value) + if match: + raise ValueError, f'Invalid character(s) {match.group(0)!r} in public_id.' + value = _utf8(value) + c_value = tree.xmlStrdup(_xcstr(value)) + if not c_value: + raise MemoryError() + + c_dtd = self._get_c_dtd() + if not c_dtd: + tree.xmlFree(c_value) + raise MemoryError() + if c_dtd.ExternalID: + tree.xmlFree(c_dtd.ExternalID) + c_dtd.ExternalID = c_value + + property system_url: + """System ID of the DOCTYPE. + + Mutable. May be set to a valid string or None. If a DTD does not + exist, setting this variable (even to None) will create one. + """ + def __get__(self): + root_name, public_id, system_url = self._doc.getdoctype() + return system_url + + def __set__(self, value): + cdef xmlChar* c_value = NULL + if value is not None: + bvalue = _utf8(value) + # sys_url may be any valid unicode string that can be + # enclosed in single quotes or quotes. + if b"'" in bvalue and b'"' in bvalue: + raise ValueError( + 'System URL may not contain both single (\') and double quotes (").') + c_value = tree.xmlStrdup(_xcstr(bvalue)) + if not c_value: + raise MemoryError() + + c_dtd = self._get_c_dtd() + if not c_dtd: + tree.xmlFree(c_value) + raise MemoryError() + if c_dtd.SystemID: + tree.xmlFree(c_dtd.SystemID) + c_dtd.SystemID = c_value + + @property + def xml_version(self): + """Returns the XML version as declared by the document.""" + xml_version, encoding = self._doc.getxmlinfo() + return xml_version + + @property + def encoding(self): + """Returns the encoding name as declared by the document.""" + xml_version, encoding = self._doc.getxmlinfo() + return encoding + + @property + def standalone(self): + """Returns the standalone flag as declared by the document. The possible + values are True (``standalone='yes'``), False + (``standalone='no'`` or flag not provided in the declaration), + and None (unknown or no declaration found). Note that a + normal truth test on this value will always tell if the + ``standalone`` flag was set to ``'yes'`` or not. + """ + return self._doc.isstandalone() + + property URL: + "The source URL of the document (or None if unknown)." + def __get__(self): + if self._doc._c_doc.URL is NULL: + return None + return _decodeFilename(self._doc._c_doc.URL) + def __set__(self, url): + url = _encodeFilename(url) + c_oldurl = self._doc._c_doc.URL + if url is None: + self._doc._c_doc.URL = NULL + else: + self._doc._c_doc.URL = tree.xmlStrdup(_xcstr(url)) + if c_oldurl is not NULL: + tree.xmlFree(c_oldurl) + + @property + def doctype(self): + """Returns a DOCTYPE declaration string for the document.""" + root_name, public_id, system_url = self._doc.getdoctype() + if system_url: + # If '"' in system_url, we must escape it with single + # quotes, otherwise escape with double quotes. If url + # contains both a single quote and a double quote, XML + # standard is being violated. + if '"' in system_url: + quoted_system_url = f"'{system_url}'" + else: + quoted_system_url = f'"{system_url}"' + if public_id: + if system_url: + return f'' + else: + return f'' + elif system_url: + return f'' + elif self._doc.hasdoctype(): + return f'' + else: + return '' + + @property + def internalDTD(self): + """Returns a DTD validator based on the internal subset of the document.""" + return _dtdFactory(self._doc._c_doc.intSubset) + + @property + def externalDTD(self): + """Returns a DTD validator based on the external subset of the document.""" + return _dtdFactory(self._doc._c_doc.extSubset) + + +@cython.no_gc_clear +cdef public class _Element [ type LxmlElementType, object LxmlElement ]: + """Element class. + + References a document object and a libxml node. + + By pointing to a Document instance, a reference is kept to + _Document as long as there is some pointer to a node in it. + """ + cdef _Document _doc + cdef xmlNode* _c_node + cdef object _tag + + def _init(self): + """_init(self) + + Called after object initialisation. Custom subclasses may override + this if they recursively call _init() in the superclasses. + """ + + @cython.linetrace(False) + @cython.profile(False) + def __dealloc__(self): + #print("trying to free node:", self._c_node) + #displayNode(self._c_node, 0) + if self._c_node is not NULL: + _unregisterProxy(self) + attemptDeallocation(self._c_node) + + # MANIPULATORS + + def __setitem__(self, x, value): + """__setitem__(self, x, value) + + Replaces the given subelement index or slice. + """ + cdef xmlNode* c_node = NULL + cdef xmlNode* c_next + cdef xmlDoc* c_source_doc + cdef _Element element + cdef bint left_to_right + cdef Py_ssize_t slicelength = 0, step = 0 + _assertValidNode(self) + if value is None: + raise ValueError, "cannot assign None" + if isinstance(x, slice): + # slice assignment + _findChildSlice(x, self._c_node, &c_node, &step, &slicelength) + if step > 0: + left_to_right = 1 + else: + left_to_right = 0 + step = -step if step != python.PY_SSIZE_T_MIN else python.PY_SSIZE_T_MAX + _replaceSlice(self, c_node, slicelength, step, left_to_right, value) + return + else: + # otherwise: normal item assignment + element = value + _assertValidNode(element) + c_node = _findChild(self._c_node, x) + if c_node is NULL: + raise IndexError, "list index out of range" + c_source_doc = element._c_node.doc + c_next = element._c_node.next + _removeText(c_node.next) + tree.xmlReplaceNode(c_node, element._c_node) + _moveTail(c_next, element._c_node) + moveNodeToDocument(self._doc, c_source_doc, element._c_node) + if not attemptDeallocation(c_node): + moveNodeToDocument(self._doc, c_node.doc, c_node) + + def __delitem__(self, x): + """__delitem__(self, x) + + Deletes the given subelement or a slice. + """ + cdef xmlNode* c_node = NULL + cdef xmlNode* c_next + cdef Py_ssize_t step = 0, slicelength = 0 + _assertValidNode(self) + if isinstance(x, slice): + # slice deletion + if _isFullSlice(x): + c_node = self._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: + c_next = _nextElement(c_node) + _removeNode(self._doc, c_node) + c_node = c_next + else: + _findChildSlice(x, self._c_node, &c_node, &step, &slicelength) + _deleteSlice(self._doc, c_node, slicelength, step) + else: + # item deletion + c_node = _findChild(self._c_node, x) + if c_node is NULL: + raise IndexError, f"index out of range: {x}" + _removeNode(self._doc, c_node) + + def __deepcopy__(self, memo): + "__deepcopy__(self, memo)" + return self.__copy__() + + def __copy__(self): + "__copy__(self)" + cdef xmlDoc* c_doc + cdef xmlNode* c_node + cdef _Document new_doc + _assertValidNode(self) + c_doc = _copyDocRoot(self._doc._c_doc, self._c_node) # recursive + new_doc = _documentFactory(c_doc, self._doc._parser) + root = new_doc.getroot() + if root is not None: + return root + # Comment/PI + c_node = c_doc.children + while c_node is not NULL and c_node.type != self._c_node.type: + c_node = c_node.next + if c_node is NULL: + return None + return _elementFactory(new_doc, c_node) + + def set(self, key, value): + """set(self, key, value) + + Sets an element attribute. + In HTML documents (not XML or XHTML), the value None is allowed and creates + an attribute without value (just the attribute name). + """ + _assertValidNode(self) + _setAttributeValue(self, key, value) + + def append(self, _Element element not None): + """append(self, element) + + Adds a subelement to the end of this element. + """ + _assertValidNode(self) + _assertValidNode(element) + _appendChild(self, element) + + def addnext(self, _Element element not None): + """addnext(self, element) + + Adds the element as a following sibling directly after this + element. + + This is normally used to set a processing instruction or comment after + the root node of a document. Note that tail text is automatically + discarded when adding at the root level. + """ + _assertValidNode(self) + _assertValidNode(element) + if self._c_node.parent != NULL and not _isElement(self._c_node.parent): + if element._c_node.type not in (tree.XML_PI_NODE, tree.XML_COMMENT_NODE): + raise TypeError, "Only processing instructions and comments can be siblings of the root element" + element.tail = None + _appendSibling(self, element) + + def addprevious(self, _Element element not None): + """addprevious(self, element) + + Adds the element as a preceding sibling directly before this + element. + + This is normally used to set a processing instruction or comment + before the root node of a document. Note that tail text is + automatically discarded when adding at the root level. + """ + _assertValidNode(self) + _assertValidNode(element) + if self._c_node.parent != NULL and not _isElement(self._c_node.parent): + if element._c_node.type != tree.XML_PI_NODE: + if element._c_node.type != tree.XML_COMMENT_NODE: + raise TypeError, "Only processing instructions and comments can be siblings of the root element" + element.tail = None + _prependSibling(self, element) + + def extend(self, elements): + """extend(self, elements) + + Extends the current children by the elements in the iterable. + """ + cdef _Element element + _assertValidNode(self) + for element in elements: + if element is None: + raise TypeError, "Node must not be None" + _assertValidNode(element) + _appendChild(self, element) + + def clear(self, bint keep_tail=False): + """clear(self, keep_tail=False) + + Resets an element. This function removes all subelements, clears + all attributes and sets the text and tail properties to None. + + Pass ``keep_tail=True`` to leave the tail text untouched. + """ + cdef xmlAttr* c_attr + cdef xmlAttr* c_attr_next + cdef xmlNode* c_node + cdef xmlNode* c_node_next + _assertValidNode(self) + c_node = self._c_node + # remove self.text and self.tail + _removeText(c_node.children) + if not keep_tail: + _removeText(c_node.next) + # remove all attributes + c_attr = c_node.properties + if c_attr: + c_node.properties = NULL + tree.xmlFreePropList(c_attr) + # remove all subelements + c_node = c_node.children + if c_node and not _isElement(c_node): + c_node = _nextElement(c_node) + while c_node is not NULL: + c_node_next = _nextElement(c_node) + _removeNode(self._doc, c_node) + c_node = c_node_next + + def insert(self, index: int, _Element element not None): + """insert(self, index, element) + + Inserts a subelement at the given position in this element + """ + cdef xmlNode* c_node + cdef xmlNode* c_next + cdef xmlDoc* c_source_doc + _assertValidNode(self) + _assertValidNode(element) + c_node = _findChild(self._c_node, index) + if c_node is NULL: + _appendChild(self, element) + return + # prevent cycles + if _isAncestorOrSame(element._c_node, self._c_node): + raise ValueError("cannot append parent to itself") + 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) + moveNodeToDocument(self._doc, c_source_doc, element._c_node) + + def remove(self, _Element element not None): + """remove(self, element) + + Removes a matching subelement. Unlike the find methods, this + method compares elements based on identity, not on tag value + or contents. + """ + cdef xmlNode* c_node + cdef xmlNode* c_next + _assertValidNode(self) + _assertValidNode(element) + c_node = element._c_node + if c_node.parent is not self._c_node: + raise ValueError, "Element is not a child of this node." + c_next = element._c_node.next + tree.xmlUnlinkNode(c_node) + _moveTail(c_next, c_node) + # fix namespace declarations + moveNodeToDocument(self._doc, c_node.doc, c_node) + + def replace(self, _Element old_element not None, + _Element new_element not None): + """replace(self, old_element, new_element) + + Replaces a subelement with the element passed as second argument. + """ + cdef xmlNode* c_old_node + cdef xmlNode* c_old_next + cdef xmlNode* c_new_node + cdef xmlNode* c_new_next + cdef xmlDoc* c_source_doc + _assertValidNode(self) + _assertValidNode(old_element) + _assertValidNode(new_element) + c_old_node = old_element._c_node + if c_old_node.parent is not self._c_node: + raise ValueError, "Element is not a child of this node." + c_new_node = new_element._c_node + # prevent cycles + if _isAncestorOrSame(c_new_node, self._c_node): + raise ValueError("cannot append parent to itself") + # replace node + c_old_next = c_old_node.next + c_new_next = c_new_node.next + c_source_doc = c_new_node.doc + tree.xmlReplaceNode(c_old_node, c_new_node) + _moveTail(c_new_next, c_new_node) + _moveTail(c_old_next, c_old_node) + moveNodeToDocument(self._doc, c_source_doc, c_new_node) + # fix namespace declarations + moveNodeToDocument(self._doc, c_old_node.doc, c_old_node) + + # PROPERTIES + property tag: + """Element tag + """ + def __get__(self): + if self._tag is not None: + return self._tag + _assertValidNode(self) + self._tag = _namespacedName(self._c_node) + return self._tag + + def __set__(self, value): + cdef _BaseParser parser + _assertValidNode(self) + ns, name = _getNsTag(value) + parser = self._doc._parser + if parser is not None and parser._for_html: + _htmlTagValidOrRaise(name) + else: + _tagValidOrRaise(name) + self._tag = value + tree.xmlNodeSetName(self._c_node, _xcstr(name)) + if ns is None: + self._c_node.ns = NULL + else: + self._doc._setNodeNs(self._c_node, _xcstr(ns)) + + @property + def attrib(self): + """Element attribute dictionary. Where possible, use get(), set(), + keys(), values() and items() to access element attributes. + """ + return _Attrib.__new__(_Attrib, self) + + property text: + """Text before the first subelement. This is either a string or + the value None, if there was no text. + """ + def __get__(self): + _assertValidNode(self) + return _collectText(self._c_node.children) + + def __set__(self, value): + _assertValidNode(self) + if isinstance(value, QName): + value = _resolveQNameText(self, value).decode('utf8') + _setNodeText(self._c_node, value) + + # using 'del el.text' is the wrong thing to do + #def __del__(self): + # _setNodeText(self._c_node, None) + + property tail: + """Text after this element's end tag, but before the next sibling + element's start tag. This is either a string or the value None, if + there was no text. + """ + def __get__(self): + _assertValidNode(self) + return _collectText(self._c_node.next) + + def __set__(self, value): + _assertValidNode(self) + _setTailText(self._c_node, value) + + # using 'del el.tail' is the wrong thing to do + #def __del__(self): + # _setTailText(self._c_node, None) + + # not in ElementTree, read-only + @property + def prefix(self): + """Namespace prefix or None. + """ + if self._c_node.ns is not NULL: + if self._c_node.ns.prefix is not NULL: + return funicode(self._c_node.ns.prefix) + return None + + # not in ElementTree, read-only + property sourceline: + """Original line number as found by the parser or None if unknown. + """ + def __get__(self): + cdef long line + _assertValidNode(self) + line = tree.xmlGetLineNo(self._c_node) + return line if line > 0 else None + + def __set__(self, line): + _assertValidNode(self) + if line <= 0: + self._c_node.line = 0 + else: + self._c_node.line = line + + # not in ElementTree, read-only + @property + def nsmap(self): + """Namespace prefix->URI mapping known in the context of this + Element. This includes all namespace declarations of the + parents. + + Note that changing the returned dict has no effect on the Element. + """ + _assertValidNode(self) + return _build_nsmap(self._c_node) + + # not in ElementTree, read-only + property base: + """The base URI of the Element (xml:base or HTML base URL). + None if the base URI is unknown. + + Note that the value depends on the URL of the document that + holds the Element if there is no xml:base attribute on the + Element or its ancestors. + + Setting this property will set an xml:base attribute on the + Element, regardless of the document type (XML or HTML). + """ + def __get__(self): + _assertValidNode(self) + c_base = tree.xmlNodeGetBase(self._doc._c_doc, self._c_node) + if c_base is NULL: + if self._doc._c_doc.URL is NULL: + return None + return _decodeFilename(self._doc._c_doc.URL) + try: + base = _decodeFilename(c_base) + finally: + tree.xmlFree(c_base) + return base + + def __set__(self, url): + _assertValidNode(self) + if url is None: + c_base = NULL + else: + url = _encodeFilename(url) + c_base = _xcstr(url) + tree.xmlNodeSetBase(self._c_node, c_base) + + # ACCESSORS + def __repr__(self): + "__repr__(self)" + return "" % (self.tag, id(self)) + + def __getitem__(self, x): + """Returns the subelement at the given position or the requested + slice. + """ + cdef xmlNode* c_node = NULL + cdef Py_ssize_t step = 0, slicelength = 0 + cdef Py_ssize_t c, i + cdef _node_to_node_function next_element + cdef list result + _assertValidNode(self) + if isinstance(x, slice): + # slicing + if _isFullSlice(x): + return _collectChildren(self) + _findChildSlice(x, self._c_node, &c_node, &step, &slicelength) + if c_node is NULL: + return [] + if step > 0: + next_element = _nextElement + else: + step = -step if step != python.PY_SSIZE_T_MIN else python.PY_SSIZE_T_MAX + next_element = _previousElement + result = [] + c = 0 + while c_node is not NULL and c < slicelength: + result.append(_elementFactory(self._doc, c_node)) + c += 1 + for i in range(step): + c_node = next_element(c_node) + if c_node is NULL: + break + return result + else: + # indexing + c_node = _findChild(self._c_node, x) + if c_node is NULL: + raise IndexError, "list index out of range" + return _elementFactory(self._doc, c_node) + + def __len__(self): + """__len__(self) + + Returns the number of subelements. + """ + _assertValidNode(self) + return _countElements(self._c_node.children) + + def __bool__(self): + """__bool__(self)""" + import warnings + warnings.warn( + "Truth-testing of elements was a source of confusion and will always " + "return True in future versions. " + "Use specific 'len(elem)' or 'elem is not None' test instead.", + FutureWarning + ) + # emulate old behaviour + _assertValidNode(self) + return _hasChild(self._c_node) + + def __contains__(self, element): + "__contains__(self, element)" + cdef xmlNode* c_node + _assertValidNode(self) + if not isinstance(element, _Element): + return 0 + c_node = (<_Element>element)._c_node + return c_node is not NULL and c_node.parent is self._c_node + + def __iter__(self): + "__iter__(self)" + return ElementChildIterator(self) + + def __reversed__(self): + "__reversed__(self)" + return ElementChildIterator(self, reversed=True) + + def index(self, child: _Element, start: int = None, stop: int = None): + """index(self, child, start=None, stop=None) + + Find the position of the child within the parent. + + This method is not part of the original ElementTree API. + """ + cdef Py_ssize_t k, l + cdef Py_ssize_t c_start, c_stop + cdef xmlNode* c_child + cdef xmlNode* c_start_node + _assertValidNode(self) + _assertValidNode(child) + c_child = child._c_node + if c_child.parent is not self._c_node: + raise ValueError, "Element is not a child of this node." + + # handle the unbounded search straight away (normal case) + if stop is None and (start is None or start == 0): + k = 0 + c_child = c_child.prev + while c_child is not NULL: + if _isElement(c_child): + k += 1 + c_child = c_child.prev + return k + + # check indices + if start is None: + c_start = 0 + else: + c_start = start + if stop is None: + c_stop = 0 + else: + c_stop = stop + if c_stop == 0 or \ + c_start >= c_stop and (c_stop > 0 or c_start < 0): + raise ValueError, "list.index(x): x not in slice" + + # for negative slice indices, check slice before searching index + if c_start < 0 or c_stop < 0: + # start from right, at most up to leftmost(c_start, c_stop) + if c_start < c_stop: + k = -c_start + else: + k = -c_stop + c_start_node = self._c_node.last + l = 1 + while c_start_node != c_child and l < k: + if _isElement(c_start_node): + l += 1 + c_start_node = c_start_node.prev + if c_start_node == c_child: + # found! before slice end? + if c_stop < 0 and l <= -c_stop: + raise ValueError, "list.index(x): x not in slice" + elif c_start < 0: + raise ValueError, "list.index(x): x not in slice" + + # now determine the index backwards from child + c_child = c_child.prev + k = 0 + if c_stop > 0: + # we can optimize: stop after c_stop elements if not found + while c_child != NULL and k < c_stop: + if _isElement(c_child): + k += 1 + c_child = c_child.prev + if k < c_stop: + return k + else: + # traverse all + while c_child != NULL: + if _isElement(c_child): + k = k + 1 + c_child = c_child.prev + if c_start > 0: + if k >= c_start: + return k + else: + return k + if c_start != 0 or c_stop != 0: + raise ValueError, "list.index(x): x not in slice" + else: + raise ValueError, "list.index(x): x not in list" + + def get(self, key, default=None): + """get(self, key, default=None) + + Gets an element attribute. + """ + _assertValidNode(self) + return _getAttributeValue(self, key, default) + + def keys(self): + """keys(self) + + Gets a list of attribute names. The names are returned in an + arbitrary order (just like for an ordinary Python dictionary). + """ + _assertValidNode(self) + return _collectAttributes(self._c_node, 1) + + def values(self): + """values(self) + + Gets element attribute values as a sequence of strings. The + attributes are returned in an arbitrary order. + """ + _assertValidNode(self) + return _collectAttributes(self._c_node, 2) + + def items(self): + """items(self) + + Gets element attributes, as a sequence. The attributes are returned in + an arbitrary order. + """ + _assertValidNode(self) + return _collectAttributes(self._c_node, 3) + + def getchildren(self): + """getchildren(self) + + Returns all direct children. The elements are returned in document + order. + + :deprecated: Note that this method has been deprecated as of + ElementTree 1.3 and lxml 2.0. New code should use + ``list(element)`` or simply iterate over elements. + """ + _assertValidNode(self) + return _collectChildren(self) + + def getparent(self): + """getparent(self) + + Returns the parent of this element or None for the root element. + """ + cdef xmlNode* c_node + #_assertValidNode(self) # not needed + c_node = _parentElement(self._c_node) + if c_node is NULL: + return None + return _elementFactory(self._doc, c_node) + + def getnext(self): + """getnext(self) + + Returns the following sibling of this element or None. + """ + cdef xmlNode* c_node + #_assertValidNode(self) # not needed + c_node = _nextElement(self._c_node) + if c_node is NULL: + return None + return _elementFactory(self._doc, c_node) + + def getprevious(self): + """getprevious(self) + + Returns the preceding sibling of this element or None. + """ + cdef xmlNode* c_node + #_assertValidNode(self) # not needed + c_node = _previousElement(self._c_node) + if c_node is NULL: + return None + return _elementFactory(self._doc, c_node) + + def itersiblings(self, tag=None, *tags, preceding=False): + """itersiblings(self, tag=None, *tags, preceding=False) + + Iterate over the following or preceding siblings of this element. + + The direction is determined by the 'preceding' keyword which + defaults to False, i.e. forward iteration over the following + siblings. When True, the iterator yields the preceding + siblings in reverse document order, i.e. starting right before + the current element and going backwards. + + Can be restricted to find only elements with specific tags, + see `iter`. + """ + if preceding: + if self._c_node and not self._c_node.prev: + return ITER_EMPTY + elif self._c_node and not self._c_node.next: + return ITER_EMPTY + if tag is not None: + tags += (tag,) + return SiblingsIterator(self, tags, preceding=preceding) + + def iterancestors(self, tag=None, *tags): + """iterancestors(self, tag=None, *tags) + + Iterate over the ancestors of this element (from parent to parent). + + Can be restricted to find only elements with specific tags, + see `iter`. + """ + if self._c_node and not self._c_node.parent: + return ITER_EMPTY + if tag is not None: + tags += (tag,) + return AncestorsIterator(self, tags) + + def iterdescendants(self, tag=None, *tags): + """iterdescendants(self, tag=None, *tags) + + Iterate over the descendants of this element in document order. + + As opposed to ``el.iter()``, this iterator does not yield the element + itself. The returned elements can be restricted to find only elements + with specific tags, see `iter`. + """ + if self._c_node and not self._c_node.children: + return ITER_EMPTY + if tag is not None: + tags += (tag,) + return ElementDepthFirstIterator(self, tags, inclusive=False) + + def iterchildren(self, tag=None, *tags, reversed=False): + """iterchildren(self, tag=None, *tags, reversed=False) + + Iterate over the children of this element. + + As opposed to using normal iteration on this element, the returned + elements can be reversed with the 'reversed' keyword and restricted + to find only elements with specific tags, see `iter`. + """ + if self._c_node and not self._c_node.children: + return ITER_EMPTY + if tag is not None: + tags += (tag,) + return ElementChildIterator(self, tags, reversed=reversed) + + def getroottree(self): + """getroottree(self) + + Return an ElementTree for the root node of the document that + contains this element. + + This is the same as following element.getparent() up the tree until it + returns None (for the root element) and then build an ElementTree for + the last parent that was returned.""" + _assertValidDoc(self._doc) + return _elementTreeFactory(self._doc, None) + + def getiterator(self, tag=None, *tags): + """getiterator(self, tag=None, *tags) + + Returns a sequence or iterator of all elements in the subtree in + document order (depth first pre-order), starting with this + element. + + Can be restricted to find only elements with specific tags, + see `iter`. + + :deprecated: Note that this method is deprecated as of + ElementTree 1.3 and lxml 2.0. It returns an iterator in + lxml, which diverges from the original ElementTree + behaviour. If you want an efficient iterator, use the + ``element.iter()`` method instead. You should only use this + method in new code if you require backwards compatibility + with older versions of lxml or ElementTree. + """ + if tag is not None: + tags += (tag,) + return ElementDepthFirstIterator(self, tags) + + def iter(self, tag=None, *tags): + """iter(self, tag=None, *tags) + + Iterate over all elements in the subtree in document order (depth + first pre-order), starting with this element. + + Can be restricted to find only elements with specific tags: + pass ``"{ns}localname"`` as tag. Either or both of ``ns`` and + ``localname`` can be ``*`` for a wildcard; ``ns`` can be empty + for no namespace. ``"localname"`` is equivalent to ``"{}localname"`` + (i.e. no namespace) but ``"*"`` is ``"{*}*"`` (any or no namespace), + not ``"{}*"``. + + You can also pass the Element, Comment, ProcessingInstruction and + Entity factory functions to look only for the specific element type. + + Passing multiple tags (or a sequence of tags) instead of a single tag + will let the iterator return all elements matching any of these tags, + in document order. + """ + if tag is not None: + tags += (tag,) + return ElementDepthFirstIterator(self, tags) + + def itertext(self, tag=None, *tags, with_tail=True): + """itertext(self, tag=None, *tags, with_tail=True) + + Iterates over the text content of a subtree. + + You can pass tag names to restrict text content to specific elements, + see `iter`. + + You can set the ``with_tail`` keyword argument to ``False`` to skip + over tail text. + """ + if tag is not None: + tags += (tag,) + return ElementTextIterator(self, tags, with_tail=with_tail) + + def makeelement(self, _tag, attrib=None, nsmap=None, **_extra): + """makeelement(self, _tag, attrib=None, nsmap=None, **_extra) + + Creates a new element associated with the same document. + """ + _assertValidDoc(self._doc) + return _makeElement(_tag, NULL, self._doc, None, None, None, + attrib, nsmap, _extra) + + def find(self, path, namespaces=None): + """find(self, path, namespaces=None) + + Finds the first matching subelement, by tag name or path. + + The optional ``namespaces`` argument accepts a + prefix-to-namespace mapping that allows the usage of XPath + prefixes in the path expression. + """ + if isinstance(path, QName): + path = (path).text + return _elementpath.find(self, path, namespaces, with_prefixes=not _isHtmlDocument(self)) + + def findtext(self, path, default=None, namespaces=None): + """findtext(self, path, default=None, namespaces=None) + + Finds text for the first matching subelement, by tag name or path. + + The optional ``namespaces`` argument accepts a + prefix-to-namespace mapping that allows the usage of XPath + prefixes in the path expression. + """ + if isinstance(path, QName): + path = (path).text + return _elementpath.findtext(self, path, default, namespaces, with_prefixes=not _isHtmlDocument(self)) + + def findall(self, path, namespaces=None): + """findall(self, path, namespaces=None) + + Finds all matching subelements, by tag name or path. + + The optional ``namespaces`` argument accepts a + prefix-to-namespace mapping that allows the usage of XPath + prefixes in the path expression. + """ + if isinstance(path, QName): + path = (path).text + return _elementpath.findall(self, path, namespaces, with_prefixes=not _isHtmlDocument(self)) + + def iterfind(self, path, namespaces=None): + """iterfind(self, path, namespaces=None) + + Iterates over all matching subelements, by tag name or path. + + The optional ``namespaces`` argument accepts a + prefix-to-namespace mapping that allows the usage of XPath + prefixes in the path expression. + """ + if isinstance(path, QName): + path = (path).text + return _elementpath.iterfind(self, path, namespaces, with_prefixes=not _isHtmlDocument(self)) + + def xpath(self, _path, *, namespaces=None, extensions=None, + smart_strings=True, **_variables): + """xpath(self, _path, namespaces=None, extensions=None, smart_strings=True, **_variables) + + Evaluate an xpath expression using the element as context node. + """ + evaluator = XPathElementEvaluator(self, namespaces=namespaces, + extensions=extensions, + smart_strings=smart_strings) + return evaluator(_path, **_variables) + + def cssselect(self, expr, *, translator='xml'): + """ + Run the CSS expression on this element and its children, + returning a list of the results. + + Equivalent to lxml.cssselect.CSSSelect(expr)(self) -- note + that pre-compiling the expression can provide a substantial + speedup. + """ + # Do the import here to make the dependency optional. + from lxml.cssselect import CSSSelector + return CSSSelector(expr, translator=translator)(self) + + +@cython.linetrace(False) +cdef _Element _elementFactory(_Document doc, xmlNode* c_node): + cdef _Element result + result = getProxy(c_node) + if result is not None: + return result + if c_node is NULL: + return None + + element_class = LOOKUP_ELEMENT_CLASS( + ELEMENT_CLASS_LOOKUP_STATE, doc, c_node) + if type(element_class) is not type: + if not isinstance(element_class, type): + raise TypeError(f"Element class is not a type, got {type(element_class)}") + if hasProxy(c_node): + # prevent re-entry race condition - we just called into Python + return getProxy(c_node) + result = element_class.__new__(element_class) + if hasProxy(c_node): + # prevent re-entry race condition - we just called into Python + result._c_node = NULL + return getProxy(c_node) + + _registerProxy(result, doc, c_node) + if element_class is not _Element: + result._init() + return result + + +@cython.internal +cdef class __ContentOnlyElement(_Element): + cdef int _raiseImmutable(self) except -1: + raise TypeError, "this element does not have children or attributes" + + def set(self, key, value): + "set(self, key, value)" + self._raiseImmutable() + + def append(self, value): + "append(self, value)" + self._raiseImmutable() + + def insert(self, index, value): + "insert(self, index, value)" + self._raiseImmutable() + + def __setitem__(self, index, value): + "__setitem__(self, index, value)" + self._raiseImmutable() + + @property + def attrib(self): + return IMMUTABLE_EMPTY_MAPPING + + property text: + def __get__(self): + _assertValidNode(self) + return funicodeOrEmpty(self._c_node.content) + + def __set__(self, value): + cdef tree.xmlDict* c_dict + _assertValidNode(self) + if value is None: + c_text = NULL + else: + value = _utf8(value) + c_text = _xcstr(value) + tree.xmlNodeSetContent(self._c_node, c_text) + + # ACCESSORS + def __getitem__(self, x): + "__getitem__(self, x)" + if isinstance(x, slice): + return [] + else: + raise IndexError, "list index out of range" + + def __len__(self): + "__len__(self)" + return 0 + + def get(self, key, default=None): + "get(self, key, default=None)" + return None + + def keys(self): + "keys(self)" + return [] + + def items(self): + "items(self)" + return [] + + def values(self): + "values(self)" + return [] + +cdef class _Comment(__ContentOnlyElement): + @property + def tag(self): + return Comment + + def __repr__(self): + return "" % self.text + +cdef class _ProcessingInstruction(__ContentOnlyElement): + @property + def tag(self): + return ProcessingInstruction + + property target: + # not in ElementTree + def __get__(self): + _assertValidNode(self) + return funicode(self._c_node.name) + + def __set__(self, value): + _assertValidNode(self) + value = _utf8(value) + c_text = _xcstr(value) + tree.xmlNodeSetName(self._c_node, c_text) + + def __repr__(self): + text = self.text + if text: + return "" % (self.target, text) + else: + return "" % self.target + + def get(self, key, default=None): + """get(self, key, default=None) + + Try to parse pseudo-attributes from the text content of the + processing instruction, search for one with the given key as + name and return its associated value. + + Note that this is only a convenience method for the most + common case that all text content is structured in + attribute-like name-value pairs with properly quoted values. + It is not guaranteed to work for all possible text content. + """ + return self.attrib.get(key, default) + + @property + def attrib(self): + """Returns a dict containing all pseudo-attributes that can be + parsed from the text content of this processing instruction. + Note that modifying the dict currently has no effect on the + XML node, although this is not guaranteed to stay this way. + """ + return { attr : (value1 or value2) + for attr, value1, value2 in _FIND_PI_ATTRIBUTES(' ' + self.text) } + +cdef object _FIND_PI_ATTRIBUTES = re.compile(r'\s+(\w+)\s*=\s*(?:\'([^\']*)\'|"([^"]*)")', re.U).findall + +cdef class _Entity(__ContentOnlyElement): + @property + def tag(self): + return Entity + + property name: + # not in ElementTree + def __get__(self): + _assertValidNode(self) + return funicode(self._c_node.name) + + def __set__(self, value): + _assertValidNode(self) + value_utf = _utf8(value) + if b'&' in value_utf or b';' in value_utf: + raise ValueError, f"Invalid entity name '{value}'" + tree.xmlNodeSetName(self._c_node, _xcstr(value_utf)) + + @property + def text(self): + # FIXME: should this be None or '&[VALUE];' or the resolved + # entity value ? + _assertValidNode(self) + return f'&{funicode(self._c_node.name)};' + + def __repr__(self): + return "&%s;" % self.name + + +cdef class QName: + """QName(text_or_uri_or_element, tag=None) + + QName wrapper for qualified XML names. + + Pass a tag name by itself or a namespace URI and a tag name to + create a qualified name. Alternatively, pass an Element to + extract its tag name. ``None`` as first argument is ignored in + order to allow for generic 2-argument usage. + + The ``text`` property holds the qualified name in + ``{namespace}tagname`` notation. The ``namespace`` and + ``localname`` properties hold the respective parts of the tag + name. + + You can pass QName objects wherever a tag name is expected. Also, + setting Element text from a QName will resolve the namespace prefix + on assignment and set a qualified text value. This is helpful in XML + languages like SOAP or XML-Schema that use prefixed tag names in + their text content. + """ + cdef readonly unicode text + cdef readonly unicode localname + cdef readonly unicode namespace + def __init__(self, text_or_uri_or_element, tag=None): + if text_or_uri_or_element is None: + # Allow None as no namespace. + text_or_uri_or_element, tag = tag, None + if not _isString(text_or_uri_or_element): + if isinstance(text_or_uri_or_element, _Element): + text_or_uri_or_element = (<_Element>text_or_uri_or_element).tag + if not _isString(text_or_uri_or_element): + raise ValueError, f"Invalid input tag of type {type(text_or_uri_or_element)!r}" + elif isinstance(text_or_uri_or_element, QName): + text_or_uri_or_element = (text_or_uri_or_element).text + elif text_or_uri_or_element is not None: + text_or_uri_or_element = unicode(text_or_uri_or_element) + else: + raise ValueError, f"Invalid input tag of type {type(text_or_uri_or_element)!r}" + + ns_utf, tag_utf = _getNsTag(text_or_uri_or_element) + if tag is not None: + # either ('ns', 'tag') or ('{ns}oldtag', 'newtag') + if ns_utf is None: + ns_utf = tag_utf # case 1: namespace ended up as tag name + tag_utf = _utf8(tag) + _tagValidOrRaise(tag_utf) + self.localname = (tag_utf).decode('utf8') + if ns_utf is None: + self.namespace = None + self.text = self.localname + else: + self.namespace = (ns_utf).decode('utf8') + self.text = "{%s}%s" % (self.namespace, self.localname) + def __str__(self): + return self.text + def __hash__(self): + return hash(self.text) + def __richcmp__(self, other, int op): + try: + if type(other) is QName: + other = (other).text + elif not isinstance(other, unicode): + other = unicode(other) + except (ValueError, UnicodeDecodeError): + return NotImplemented + return python.PyObject_RichCompare(self.text, other, op) + + +cdef public class _ElementTree [ type LxmlElementTreeType, + object LxmlElementTree ]: + cdef _Document _doc + cdef _Element _context_node + + # Note that _doc is only used to store the original document if we do not + # have a _context_node. All methods should prefer self._context_node._doc + # to honour tree restructuring. _doc can happily be None! + + @cython.final + cdef int _assertHasRoot(self) except -1: + """We have to take care here: the document may not have a root node! + This can happen if ElementTree() is called without any argument and + the caller 'forgets' to call parse() afterwards, so this is a bug in + the caller program. + """ + assert self._context_node is not None, \ + "ElementTree not initialized, missing root" + return 0 + + def parse(self, source, _BaseParser parser=None, *, base_url=None): + """parse(self, source, parser=None, base_url=None) + + Updates self with the content of source and returns its root. + """ + cdef _Document doc = None + try: + doc = _parseDocument(source, parser, base_url) + except _TargetParserResult as result_container: + # raises a TypeError if we don't get an _Element + self._context_node = result_container.result + else: + self._context_node = doc.getroot() + self._doc = None if self._context_node is not None else doc + return self._context_node + + def _setroot(self, _Element root not None): + """_setroot(self, root) + + Relocate the ElementTree to a new root node. + """ + _assertValidNode(root) + if root._c_node.type != tree.XML_ELEMENT_NODE: + raise TypeError, "Only elements can be the root of an ElementTree" + self._context_node = root + self._doc = None + + def getroot(self): + """getroot(self) + + Gets the root element for this tree. + """ + return self._context_node + + def __copy__(self): + return _elementTreeFactory(self._doc, self._context_node) + + def __deepcopy__(self, memo): + cdef _Element root + cdef _Document doc + cdef xmlDoc* c_doc + if self._context_node is not None: + root = self._context_node.__copy__() + assert root is not None + _assertValidNode(root) + _copyNonElementSiblings(self._context_node._c_node, root._c_node) + return _elementTreeFactory(None, root) + elif self._doc is not None: + _assertValidDoc(self._doc) + c_doc = tree.xmlCopyDoc(self._doc._c_doc, 1) + if c_doc is NULL: + raise MemoryError() + doc = _documentFactory(c_doc, self._doc._parser) + return _elementTreeFactory(doc, None) + else: + # so what ... + return self + + # not in ElementTree + @property + def docinfo(self) -> DocInfo: + """Information about the document provided by parser and DTD.""" + self._assertHasRoot() + return DocInfo(self._context_node._doc) + + # not in ElementTree, read-only + @property + def parser(self): + """The parser that was used to parse the document in this ElementTree. + """ + if self._context_node is not None and \ + self._context_node._doc is not None: + return self._context_node._doc._parser + if self._doc is not None: + return self._doc._parser + return None + + def write(self, file, *, encoding=None, method="xml", + bint pretty_print=False, xml_declaration=None, bint with_tail=True, + standalone=None, doctype=None, compression=0, + bint exclusive=False, inclusive_ns_prefixes=None, + bint with_comments=True, bint strip_text=False, + docstring=None): + """write(self, file, encoding=None, method="xml", + pretty_print=False, xml_declaration=None, with_tail=True, + standalone=None, doctype=None, compression=0, + exclusive=False, inclusive_ns_prefixes=None, + with_comments=True, strip_text=False) + + Write the tree to a filename, file or file-like object. + + Defaults to ASCII encoding and writing a declaration as needed. + + The keyword argument 'method' selects the output method: + 'xml', 'html', 'text', 'c14n' or 'c14n2'. Default is 'xml'. + + With ``method="c14n"`` (C14N version 1), the options ``exclusive``, + ``with_comments`` and ``inclusive_ns_prefixes`` request exclusive + C14N, include comments, and list the inclusive prefixes respectively. + + With ``method="c14n2"`` (C14N version 2), the ``with_comments`` and + ``strip_text`` options control the output of comments and text space + according to C14N 2.0. + + Passing a boolean value to the ``standalone`` option will + output an XML declaration with the corresponding + ``standalone`` flag. + + The ``doctype`` option allows passing in a plain string that will + be serialised before the XML tree. Note that passing in non + well-formed content here will make the XML output non well-formed. + Also, an existing doctype in the document tree will not be removed + when serialising an ElementTree instance. + + The ``compression`` option enables GZip compression level 1-9. + + The ``inclusive_ns_prefixes`` should be a list of namespace strings + (i.e. ['xs', 'xsi']) that will be promoted to the top-level element + during exclusive C14N serialisation. This parameter is ignored if + exclusive mode=False. + + If exclusive=True and no list is provided, a namespace will only be + rendered if it is used by the immediate parent or one of its attributes + and its prefix and values have not already been rendered by an ancestor + of the namespace node's parent element. + """ + cdef bint write_declaration + cdef int is_standalone + + self._assertHasRoot() + _assertValidNode(self._context_node) + if compression is None or compression < 0: + compression = 0 + + # C14N serialisation + if method in ('c14n', 'c14n2'): + if encoding is not None: + raise ValueError("Cannot specify encoding with C14N") + if xml_declaration: + raise ValueError("Cannot enable XML declaration in C14N") + + if method == 'c14n': + _tofilelikeC14N(file, self._context_node, exclusive, with_comments, + compression, inclusive_ns_prefixes) + else: # c14n2 + with _open_utf8_file(file, compression=compression) as f: + target = C14NWriterTarget( + f.write, with_comments=with_comments, strip_text=strip_text) + _tree_to_target(self, target) + return + + if not with_comments: + raise ValueError("Can only discard comments in C14N serialisation") + # suppress decl. in default case (purely for ElementTree compatibility) + if xml_declaration is not None: + write_declaration = xml_declaration + if encoding is None: + encoding = 'ASCII' + else: + encoding = encoding.upper() + elif encoding is None: + encoding = 'ASCII' + write_declaration = 0 + else: + encoding = encoding.upper() + write_declaration = encoding not in ( + 'US-ASCII', 'ASCII', 'UTF8', 'UTF-8') + if standalone is None: + is_standalone = -1 + elif standalone: + write_declaration = 1 + is_standalone = 1 + else: + write_declaration = 1 + is_standalone = 0 + + if docstring is not None and doctype is None: + import warnings + warnings.warn( + "The 'docstring' option is deprecated. Use 'doctype' instead.", + DeprecationWarning) + doctype = docstring + + _tofilelike(file, self._context_node, encoding, doctype, method, + write_declaration, 1, pretty_print, with_tail, + is_standalone, compression) + + def getpath(self, _Element element not None): + """getpath(self, element) + + Returns a structural, absolute XPath expression to find the element. + + For namespaced elements, the expression uses prefixes from the + document, which therefore need to be provided in order to make any + use of the expression in XPath. + + Also see the method getelementpath(self, element), which returns a + self-contained ElementPath expression. + """ + cdef _Document doc + cdef _Element root + cdef xmlDoc* c_doc + _assertValidNode(element) + if self._context_node is not None: + root = self._context_node + doc = root._doc + elif self._doc is not None: + doc = self._doc + root = doc.getroot() + else: + raise ValueError, "Element is not in this tree." + _assertValidDoc(doc) + _assertValidNode(root) + if element._doc is not doc: + raise ValueError, "Element is not in this tree." + + c_doc = _fakeRootDoc(doc._c_doc, root._c_node) + c_path = tree.xmlGetNodePath(element._c_node) + _destroyFakeDoc(doc._c_doc, c_doc) + if c_path is NULL: + raise MemoryError() + path = funicode(c_path) + tree.xmlFree(c_path) + return path + + def getelementpath(self, _Element element not None): + """getelementpath(self, element) + + Returns a structural, absolute ElementPath expression to find the + element. This path can be used in the .find() method to look up + the element, provided that the elements along the path and their + list of immediate children were not modified in between. + + ElementPath has the advantage over an XPath expression (as returned + by the .getpath() method) that it does not require additional prefix + declarations. It is always self-contained. + """ + cdef _Element root + cdef Py_ssize_t count + _assertValidNode(element) + if element._c_node.type != tree.XML_ELEMENT_NODE: + raise ValueError, "input is not an Element" + if self._context_node is not None: + root = self._context_node + elif self._doc is not None: + root = self._doc.getroot() + else: + raise ValueError, "Element is not in this tree" + _assertValidNode(root) + if element._doc is not root._doc: + raise ValueError, "Element is not in this tree" + + path = [] + c_element = element._c_node + while c_element is not root._c_node: + c_name = c_element.name + c_href = _getNs(c_element) + tag = _namespacedNameFromNsName(c_href, c_name) + if c_href is NULL: + c_href = b'' # no namespace (NULL is wildcard) + # use tag[N] if there are preceding siblings with the same tag + count = 0 + c_node = c_element.prev + while c_node is not NULL: + if c_node.type == tree.XML_ELEMENT_NODE: + if _tagMatches(c_node, c_href, c_name): + count += 1 + c_node = c_node.prev + if count: + tag = f'{tag}[{count+1}]' + else: + # use tag[1] if there are following siblings with the same tag + c_node = c_element.next + while c_node is not NULL: + if c_node.type == tree.XML_ELEMENT_NODE: + if _tagMatches(c_node, c_href, c_name): + tag += '[1]' + break + c_node = c_node.next + + path.append(tag) + c_element = c_element.parent + if c_element is NULL or c_element.type != tree.XML_ELEMENT_NODE: + raise ValueError, "Element is not in this tree." + if not path: + return '.' + path.reverse() + return '/'.join(path) + + def getiterator(self, tag=None, *tags): + """getiterator(self, *tags, tag=None) + + Returns a sequence or iterator of all elements in document order + (depth first pre-order), starting with the root element. + + Can be restricted to find only elements with specific tags, + see `_Element.iter`. + + :deprecated: Note that this method is deprecated as of + ElementTree 1.3 and lxml 2.0. It returns an iterator in + lxml, which diverges from the original ElementTree + behaviour. If you want an efficient iterator, use the + ``tree.iter()`` method instead. You should only use this + method in new code if you require backwards compatibility + with older versions of lxml or ElementTree. + """ + root = self.getroot() + if root is None: + return ITER_EMPTY + if tag is not None: + tags += (tag,) + return root.getiterator(*tags) + + def iter(self, tag=None, *tags): + """iter(self, tag=None, *tags) + + Creates an iterator for the root element. The iterator loops over + all elements in this tree, in document order. Note that siblings + of the root element (comments or processing instructions) are not + returned by the iterator. + + Can be restricted to find only elements with specific tags, + see `_Element.iter`. + """ + root = self.getroot() + if root is None: + return ITER_EMPTY + if tag is not None: + tags += (tag,) + return root.iter(*tags) + + def find(self, path, namespaces=None): + """find(self, path, namespaces=None) + + Finds the first toplevel element with given tag. Same as + ``tree.getroot().find(path)``. + + The optional ``namespaces`` argument accepts a + prefix-to-namespace mapping that allows the usage of XPath + prefixes in the path expression. + """ + self._assertHasRoot() + root = self.getroot() + if _isString(path): + if path[:1] == "/": + path = "." + path + from warnings import warn + warn( + "This search incorrectly ignores the root element, and will be " + "fixed in a future version. If you rely on the current " + f"behaviour, change it to {path!r}", + FutureWarning, stacklevel=1 + ) + return root.find(path, namespaces) + + def findtext(self, path, default=None, namespaces=None): + """findtext(self, path, default=None, namespaces=None) + + Finds the text for the first element matching the ElementPath + expression. Same as getroot().findtext(path) + + The optional ``namespaces`` argument accepts a + prefix-to-namespace mapping that allows the usage of XPath + prefixes in the path expression. + """ + self._assertHasRoot() + root = self.getroot() + if _isString(path): + if path[:1] == "/": + path = "." + path + from warnings import warn + warn( + "This search incorrectly ignores the root element, and will be " + "fixed in a future version. If you rely on the current " + f"behaviour, change it to {path!r}", + FutureWarning, stacklevel=1 + ) + return root.findtext(path, default, namespaces) + + def findall(self, path, namespaces=None): + """findall(self, path, namespaces=None) + + Finds all elements matching the ElementPath expression. Same as + getroot().findall(path). + + The optional ``namespaces`` argument accepts a + prefix-to-namespace mapping that allows the usage of XPath + prefixes in the path expression. + """ + self._assertHasRoot() + root = self.getroot() + if _isString(path): + if path[:1] == "/": + path = "." + path + from warnings import warn + warn( + "This search incorrectly ignores the root element, and will be " + "fixed in a future version. If you rely on the current " + f"behaviour, change it to {path!r}", + FutureWarning, stacklevel=1 + ) + return root.findall(path, namespaces) + + def iterfind(self, path, namespaces=None): + """iterfind(self, path, namespaces=None) + + Iterates over all elements matching the ElementPath expression. + Same as getroot().iterfind(path). + + The optional ``namespaces`` argument accepts a + prefix-to-namespace mapping that allows the usage of XPath + prefixes in the path expression. + """ + self._assertHasRoot() + root = self.getroot() + if _isString(path): + if path[:1] == "/": + path = "." + path + from warnings import warn + warn( + "This search incorrectly ignores the root element, and will be " + "fixed in a future version. If you rely on the current " + f"behaviour, change it to {path!r}", + FutureWarning, stacklevel=1 + ) + return root.iterfind(path, namespaces) + + def xpath(self, _path, *, namespaces=None, extensions=None, + smart_strings=True, **_variables): + """xpath(self, _path, namespaces=None, extensions=None, smart_strings=True, **_variables) + + XPath evaluate in context of document. + + ``namespaces`` is an optional dictionary with prefix to namespace URI + mappings, used by XPath. ``extensions`` defines additional extension + functions. + + Returns a list (nodeset), or bool, float or string. + + In case of a list result, return Element for element nodes, + string for text and attribute values. + + Note: if you are going to apply multiple XPath expressions + against the same document, it is more efficient to use + XPathEvaluator directly. + """ + self._assertHasRoot() + evaluator = XPathDocumentEvaluator(self, namespaces=namespaces, + extensions=extensions, + smart_strings=smart_strings) + return evaluator(_path, **_variables) + + def xslt(self, _xslt, extensions=None, access_control=None, **_kw): + """xslt(self, _xslt, extensions=None, access_control=None, **_kw) + + Transform this document using other document. + + xslt is a tree that should be XSLT + keyword parameters are XSLT transformation parameters. + + Returns the transformed tree. + + Note: if you are going to apply the same XSLT stylesheet against + multiple documents, it is more efficient to use the XSLT + class directly. + """ + self._assertHasRoot() + style = XSLT(_xslt, extensions=extensions, + access_control=access_control) + return style(self, **_kw) + + def relaxng(self, relaxng): + """relaxng(self, relaxng) + + Validate this document using other document. + + The relaxng argument is a tree that should contain a Relax NG schema. + + Returns True or False, depending on whether validation + succeeded. + + Note: if you are going to apply the same Relax NG schema against + multiple documents, it is more efficient to use the RelaxNG + class directly. + """ + self._assertHasRoot() + schema = RelaxNG(relaxng) + return schema.validate(self) + + def xmlschema(self, xmlschema): + """xmlschema(self, xmlschema) + + Validate this document using other document. + + The xmlschema argument is a tree that should contain an XML Schema. + + Returns True or False, depending on whether validation + succeeded. + + Note: If you are going to apply the same XML Schema against + multiple documents, it is more efficient to use the XMLSchema + class directly. + """ + self._assertHasRoot() + schema = XMLSchema(xmlschema) + return schema.validate(self) + + def xinclude(self): + """xinclude(self) + + Process the XInclude nodes in this document and include the + referenced XML fragments. + + There is support for loading files through the file system, HTTP and + FTP. + + Note that XInclude does not support custom resolvers in Python space + due to restrictions of libxml2 <= 2.6.29. + """ + self._assertHasRoot() + XInclude()(self._context_node) + + def write_c14n(self, file, *, bint exclusive=False, bint with_comments=True, + compression=0, inclusive_ns_prefixes=None): + """write_c14n(self, file, exclusive=False, with_comments=True, + compression=0, inclusive_ns_prefixes=None) + + C14N write of document. Always writes UTF-8. + + The ``compression`` option enables GZip compression level 1-9. + + The ``inclusive_ns_prefixes`` should be a list of namespace strings + (i.e. ['xs', 'xsi']) that will be promoted to the top-level element + during exclusive C14N serialisation. This parameter is ignored if + exclusive mode=False. + + If exclusive=True and no list is provided, a namespace will only be + rendered if it is used by the immediate parent or one of its attributes + and its prefix and values have not already been rendered by an ancestor + of the namespace node's parent element. + + NOTE: This method is deprecated as of lxml 4.4 and will be removed in a + future release. Use ``.write(f, method="c14n")`` instead. + """ + self._assertHasRoot() + _assertValidNode(self._context_node) + if compression is None or compression < 0: + compression = 0 + + _tofilelikeC14N(file, self._context_node, exclusive, with_comments, + compression, inclusive_ns_prefixes) + +cdef _ElementTree _elementTreeFactory(_Document doc, _Element context_node): + return _newElementTree(doc, context_node, _ElementTree) + +cdef _ElementTree _newElementTree(_Document doc, _Element context_node, + object baseclass): + cdef _ElementTree result + result = baseclass() + if context_node is None and doc is not None: + context_node = doc.getroot() + if context_node is None: + _assertValidDoc(doc) + result._doc = doc + else: + _assertValidNode(context_node) + result._context_node = context_node + return result + + +@cython.final +@cython.freelist(16) +cdef class _Attrib: + """A dict-like proxy for the ``Element.attrib`` property. + """ + cdef _Element _element + def __cinit__(self, _Element element not None): + _assertValidNode(element) + self._element = element + + # MANIPULATORS + def __setitem__(self, key, value): + _assertValidNode(self._element) + _setAttributeValue(self._element, key, value) + + def __delitem__(self, key): + _assertValidNode(self._element) + _delAttribute(self._element, key) + + def update(self, sequence_or_dict): + _assertValidNode(self._element) + if isinstance(sequence_or_dict, (dict, _Attrib)): + sequence_or_dict = sequence_or_dict.items() + for key, value in sequence_or_dict: + _setAttributeValue(self._element, key, value) + + def pop(self, key, *default): + if len(default) > 1: + raise TypeError, f"pop expected at most 2 arguments, got {len(default)+1}" + _assertValidNode(self._element) + result = _getAttributeValue(self._element, key, None) + if result is None: + if not default: + raise KeyError, key + result = default[0] + else: + _delAttribute(self._element, key) + return result + + def clear(self): + _assertValidNode(self._element) + c_attrs = self._element._c_node.properties + if c_attrs: + self._element._c_node.properties = NULL + tree.xmlFreePropList(c_attrs) + + # ACCESSORS + def __repr__(self): + _assertValidNode(self._element) + return repr(dict( _collectAttributes(self._element._c_node, 3) )) + + def __copy__(self): + _assertValidNode(self._element) + return dict(_collectAttributes(self._element._c_node, 3)) + + def __deepcopy__(self, memo): + _assertValidNode(self._element) + return dict(_collectAttributes(self._element._c_node, 3)) + + def __getitem__(self, key): + _assertValidNode(self._element) + result = _getAttributeValue(self._element, key, None) + if result is None: + raise KeyError, key + return result + + def __bool__(self): + _assertValidNode(self._element) + cdef xmlAttr* c_attr = self._element._c_node.properties + while c_attr is not NULL: + if c_attr.type == tree.XML_ATTRIBUTE_NODE: + return 1 + c_attr = c_attr.next + return 0 + + def __len__(self): + _assertValidNode(self._element) + cdef xmlAttr* c_attr = self._element._c_node.properties + cdef Py_ssize_t c = 0 + while c_attr is not NULL: + if c_attr.type == tree.XML_ATTRIBUTE_NODE: + c += 1 + c_attr = c_attr.next + return c + + def get(self, key, default=None): + _assertValidNode(self._element) + return _getAttributeValue(self._element, key, default) + + def keys(self): + _assertValidNode(self._element) + return _collectAttributes(self._element._c_node, 1) + + def __iter__(self): + _assertValidNode(self._element) + return iter(_collectAttributes(self._element._c_node, 1)) + + def iterkeys(self): + _assertValidNode(self._element) + return iter(_collectAttributes(self._element._c_node, 1)) + + def values(self): + _assertValidNode(self._element) + return _collectAttributes(self._element._c_node, 2) + + def itervalues(self): + _assertValidNode(self._element) + return iter(_collectAttributes(self._element._c_node, 2)) + + def items(self): + _assertValidNode(self._element) + return _collectAttributes(self._element._c_node, 3) + + def iteritems(self): + _assertValidNode(self._element) + return iter(_collectAttributes(self._element._c_node, 3)) + + def has_key(self, key): + _assertValidNode(self._element) + return key in self + + def __contains__(self, key): + _assertValidNode(self._element) + cdef xmlNode* c_node + ns, tag = _getNsTag(key) + c_node = self._element._c_node + c_href = NULL if ns is None else _xcstr(ns) + return 1 if tree.xmlHasNsProp(c_node, _xcstr(tag), c_href) else 0 + + def __richcmp__(self, other, int op): + try: + one = dict(self.items()) + if not isinstance(other, dict): + other = dict(other) + except (TypeError, ValueError): + return NotImplemented + return python.PyObject_RichCompare(one, other, op) + +MutableMapping.register(_Attrib) + + +@cython.final +@cython.internal +cdef class _AttribIterator: + """Attribute iterator - for internal use only! + """ + # XML attributes must not be removed while running! + cdef _Element _node + cdef xmlAttr* _c_attr + cdef int _keysvalues # 1 - keys, 2 - values, 3 - items (key, value) + def __iter__(self): + return self + + def __next__(self): + cdef xmlAttr* c_attr + if self._node is None: + raise StopIteration + c_attr = self._c_attr + while c_attr is not NULL and c_attr.type != tree.XML_ATTRIBUTE_NODE: + c_attr = c_attr.next + if c_attr is NULL: + self._node = None + raise StopIteration + + self._c_attr = c_attr.next + if self._keysvalues == 1: + return _namespacedName(c_attr) + elif self._keysvalues == 2: + return _attributeValue(self._node._c_node, c_attr) + else: + return (_namespacedName(c_attr), + _attributeValue(self._node._c_node, c_attr)) + +cdef object _attributeIteratorFactory(_Element element, int keysvalues): + cdef _AttribIterator attribs + if element._c_node.properties is NULL: + return ITER_EMPTY + attribs = _AttribIterator() + attribs._node = element + attribs._c_attr = element._c_node.properties + attribs._keysvalues = keysvalues + return attribs + + +cdef public class _ElementTagMatcher [ object LxmlElementTagMatcher, + type LxmlElementTagMatcherType ]: + """ + Dead but public. :) + """ + cdef object _pystrings + cdef int _node_type + cdef char* _href + cdef char* _name + cdef _initTagMatch(self, tag): + self._href = NULL + self._name = NULL + if tag is None: + self._node_type = 0 + elif tag is Comment: + self._node_type = tree.XML_COMMENT_NODE + elif tag is ProcessingInstruction: + self._node_type = tree.XML_PI_NODE + elif tag is Entity: + self._node_type = tree.XML_ENTITY_REF_NODE + elif tag is Element: + self._node_type = tree.XML_ELEMENT_NODE + else: + self._node_type = tree.XML_ELEMENT_NODE + self._pystrings = _getNsTag(tag) + if self._pystrings[0] is not None: + self._href = _cstr(self._pystrings[0]) + self._name = _cstr(self._pystrings[1]) + if self._name[0] == c'*' and self._name[1] == c'\0': + self._name = NULL + +cdef public class _ElementIterator(_ElementTagMatcher) [ + object LxmlElementIterator, type LxmlElementIteratorType ]: + """ + Dead but public. :) + """ + # we keep Python references here to control GC + cdef _Element _node + cdef _node_to_node_function _next_element + def __iter__(self): + return self + + cdef void _storeNext(self, _Element node): + cdef xmlNode* c_node + c_node = self._next_element(node._c_node) + while c_node is not NULL and \ + self._node_type != 0 and \ + (self._node_type != c_node.type or + not _tagMatches(c_node, self._href, self._name)): + c_node = self._next_element(c_node) + if c_node is NULL: + self._node = None + else: + # Python ref: + self._node = _elementFactory(node._doc, c_node) + + def __next__(self): + cdef xmlNode* c_node + cdef _Element current_node + if self._node is None: + raise StopIteration + # Python ref: + current_node = self._node + self._storeNext(current_node) + return current_node + +@cython.final +@cython.internal +cdef class _MultiTagMatcher: + """ + Match an xmlNode against a list of tags. + """ + cdef list _py_tags + cdef qname* _cached_tags + cdef size_t _tag_count + cdef size_t _cached_size + cdef _Document _cached_doc + cdef int _node_types + + def __cinit__(self, tags): + self._py_tags = [] + self.initTagMatch(tags) + + def __dealloc__(self): + self._clear() + + cdef bint rejectsAll(self) noexcept: + return not self._tag_count and not self._node_types + + cdef bint rejectsAllAttributes(self) noexcept: + return not self._tag_count + + cdef bint matchesType(self, int node_type) noexcept: + if node_type == tree.XML_ELEMENT_NODE and self._tag_count: + return True + return self._node_types & (1 << node_type) + + cdef void _clear(self) noexcept: + cdef size_t i, count + count = self._tag_count + self._tag_count = 0 + if self._cached_tags: + for i in range(count): + cpython.ref.Py_XDECREF(self._cached_tags[i].href) + python.lxml_free(self._cached_tags) + self._cached_tags = NULL + + cdef initTagMatch(self, tags): + self._cached_doc = None + del self._py_tags[:] + self._clear() + if tags is None or tags == (): + # no selection in tags argument => match anything + self._node_types = ( + 1 << tree.XML_COMMENT_NODE | + 1 << tree.XML_PI_NODE | + 1 << tree.XML_ENTITY_REF_NODE | + 1 << tree.XML_ELEMENT_NODE) + else: + self._node_types = 0 + self._storeTags(tags, set()) + + cdef _storeTags(self, tag, set seen): + if tag is Comment: + self._node_types |= 1 << tree.XML_COMMENT_NODE + elif tag is ProcessingInstruction: + self._node_types |= 1 << tree.XML_PI_NODE + elif tag is Entity: + self._node_types |= 1 << tree.XML_ENTITY_REF_NODE + elif tag is Element: + self._node_types |= 1 << tree.XML_ELEMENT_NODE + elif python._isString(tag): + if tag in seen: + return + seen.add(tag) + if tag in ('*', '{*}*'): + self._node_types |= 1 << tree.XML_ELEMENT_NODE + else: + href, name = _getNsTag(tag) + if name == b'*': + name = None + if href is None: + href = b'' # no namespace + elif href == b'*': + href = None # wildcard: any namespace, including none + self._py_tags.append((href, name)) + elif isinstance(tag, QName): + self._storeTags(tag.text, seen) + else: + # support a sequence of tags + for item in tag: + self._storeTags(item, seen) + + cdef inline int cacheTags(self, _Document doc, bint force_into_dict=False) except -1: + """ + Look up the tag names in the doc dict to enable string pointer comparisons. + """ + cdef size_t dict_size = tree.xmlDictSize(doc._c_doc.dict) + if doc is self._cached_doc and dict_size == self._cached_size: + # doc and dict didn't change => names already cached + return 0 + self._tag_count = 0 + if not self._py_tags: + self._cached_doc = doc + self._cached_size = dict_size + return 0 + if not self._cached_tags: + self._cached_tags = python.lxml_malloc(len(self._py_tags), sizeof(qname)) + if not self._cached_tags: + self._cached_doc = None + raise MemoryError() + self._tag_count = _mapTagsToQnameMatchArray( + doc._c_doc, self._py_tags, self._cached_tags, force_into_dict) + self._cached_doc = doc + self._cached_size = dict_size + return 0 + + cdef inline bint matches(self, xmlNode* c_node) noexcept: + cdef qname* c_qname + if self._node_types & (1 << c_node.type): + return True + elif c_node.type == tree.XML_ELEMENT_NODE: + for c_qname in self._cached_tags[:self._tag_count]: + if _tagMatchesExactly(c_node, c_qname): + return True + return False + + cdef inline bint matchesNsTag(self, const_xmlChar* c_href, + const_xmlChar* c_name) noexcept: + cdef qname* c_qname + if self._node_types & (1 << tree.XML_ELEMENT_NODE): + return True + for c_qname in self._cached_tags[:self._tag_count]: + if _nsTagMatchesExactly(c_href, c_name, c_qname): + return True + return False + + cdef inline bint matchesAttribute(self, xmlAttr* c_attr) noexcept: + """Attribute matches differ from Element matches in that they do + not care about node types. + """ + cdef qname* c_qname + for c_qname in self._cached_tags[:self._tag_count]: + if _tagMatchesExactly(c_attr, c_qname): + return True + return False + +cdef class _ElementMatchIterator: + cdef _Element _node + cdef _node_to_node_function _next_element + cdef _MultiTagMatcher _matcher + + @cython.final + cdef _initTagMatcher(self, tags): + self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tags) + + def __iter__(self): + return self + + @cython.final + cdef int _storeNext(self, _Element node) except -1: + self._matcher.cacheTags(node._doc) + c_node = self._next_element(node._c_node) + while c_node is not NULL and not self._matcher.matches(c_node): + c_node = self._next_element(c_node) + # store Python ref to next node to make sure it's kept alive + self._node = _elementFactory(node._doc, c_node) if c_node is not NULL else None + return 0 + + def __next__(self): + cdef _Element current_node = self._node + if current_node is None: + raise StopIteration + self._storeNext(current_node) + return current_node + +cdef class ElementChildIterator(_ElementMatchIterator): + """ElementChildIterator(self, node, tag=None, reversed=False) + Iterates over the children of an element. + """ + def __cinit__(self, _Element node not None, tag=None, *, bint reversed=False): + cdef xmlNode* c_node + _assertValidNode(node) + self._initTagMatcher(tag) + if reversed: + c_node = _findChildBackwards(node._c_node, 0) + self._next_element = _previousElement + else: + c_node = _findChildForwards(node._c_node, 0) + self._next_element = _nextElement + self._matcher.cacheTags(node._doc) + while c_node is not NULL and not self._matcher.matches(c_node): + c_node = self._next_element(c_node) + # store Python ref to next node to make sure it's kept alive + self._node = _elementFactory(node._doc, c_node) if c_node is not NULL else None + +cdef class SiblingsIterator(_ElementMatchIterator): + """SiblingsIterator(self, node, tag=None, preceding=False) + Iterates over the siblings of an element. + + You can pass the boolean keyword ``preceding`` to specify the direction. + """ + def __cinit__(self, _Element node not None, tag=None, *, bint preceding=False): + _assertValidNode(node) + self._initTagMatcher(tag) + if preceding: + self._next_element = _previousElement + else: + self._next_element = _nextElement + self._storeNext(node) + +cdef class AncestorsIterator(_ElementMatchIterator): + """AncestorsIterator(self, node, tag=None) + Iterates over the ancestors of an element (from parent to parent). + """ + def __cinit__(self, _Element node not None, tag=None): + _assertValidNode(node) + self._initTagMatcher(tag) + self._next_element = _parentElement + self._storeNext(node) + +cdef class ElementDepthFirstIterator: + """ElementDepthFirstIterator(self, node, tag=None, inclusive=True) + Iterates over an element and its sub-elements in document order (depth + first pre-order). + + Note that this also includes comments, entities and processing + instructions. To filter them out, check if the ``tag`` property + of the returned element is a string (i.e. not None and not a + factory function), or pass the ``Element`` factory for the ``tag`` + argument to receive only Elements. + + If the optional ``tag`` argument is not None, the iterator returns only + the elements that match the respective name and namespace. + + The optional boolean argument 'inclusive' defaults to True and can be set + to False to exclude the start element itself. + + Note that the behaviour of this iterator is completely undefined if the + tree it traverses is modified during iteration. + """ + # we keep Python references here to control GC + # keep the next Element after the one we return, and the (s)top node + cdef _Element _next_node + cdef _Element _top_node + cdef _MultiTagMatcher _matcher + def __cinit__(self, _Element node not None, tag=None, *, bint inclusive=True): + _assertValidNode(node) + self._top_node = node + self._next_node = node + self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag) + self._matcher.cacheTags(node._doc) + if not inclusive or not self._matcher.matches(node._c_node): + # find start node (this cannot raise StopIteration, self._next_node != None) + next(self) + + def __iter__(self): + return self + + def __next__(self): + cdef xmlNode* c_node + cdef _Element current_node = self._next_node + if current_node is None: + raise StopIteration + c_node = current_node._c_node + self._matcher.cacheTags(current_node._doc) + if not self._matcher._tag_count: + # no tag name was found in the dict => not in document either + # try to match by node type + c_node = self._nextNodeAnyTag(c_node) + else: + c_node = self._nextNodeMatchTag(c_node) + if c_node is NULL: + self._next_node = None + else: + self._next_node = _elementFactory(current_node._doc, c_node) + return current_node + + @cython.final + cdef xmlNode* _nextNodeAnyTag(self, xmlNode* c_node) noexcept: + cdef int node_types = self._matcher._node_types + if not node_types: + return NULL + tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0) + if node_types & (1 << c_node.type): + return c_node + tree.END_FOR_EACH_ELEMENT_FROM(c_node) + return NULL + + @cython.final + cdef xmlNode* _nextNodeMatchTag(self, xmlNode* c_node) noexcept: + tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0) + if self._matcher.matches(c_node): + return c_node + tree.END_FOR_EACH_ELEMENT_FROM(c_node) + return NULL + + +cdef class ElementTextIterator: + """ElementTextIterator(self, element, tag=None, with_tail=True) + Iterates over the text content of a subtree. + + You can pass the ``tag`` keyword argument to restrict text content to a + specific tag name. + + You can set the ``with_tail`` keyword argument to ``False`` to skip over + tail text (e.g. if you know that it's only whitespace from pretty-printing). + """ + cdef object _events + cdef _Element _start_element + def __cinit__(self, _Element element not None, tag=None, *, bint with_tail=True): + _assertValidNode(element) + if with_tail: + events = ("start", "comment", "pi", "end") + else: + events = ("start",) + self._start_element = element + self._events = iterwalk(element, events=events, tag=tag) + + def __iter__(self): + return self + + def __next__(self): + cdef _Element element + result = None + while result is None: + event, element = next(self._events) # raises StopIteration + if event == "start": + result = element.text + elif element is not self._start_element: + result = element.tail + return result + + +cdef xmlNode* _createElement(xmlDoc* c_doc, object name_utf) except NULL: + cdef xmlNode* c_node + c_node = tree.xmlNewDocNode(c_doc, NULL, _xcstr(name_utf), NULL) + return c_node + +cdef xmlNode* _createComment(xmlDoc* c_doc, const_xmlChar* text) noexcept: + cdef xmlNode* c_node + c_node = tree.xmlNewDocComment(c_doc, text) + return c_node + +cdef xmlNode* _createPI(xmlDoc* c_doc, const_xmlChar* target, const_xmlChar* text) noexcept: + cdef xmlNode* c_node + c_node = tree.xmlNewDocPI(c_doc, target, text) + return c_node + +cdef xmlNode* _createEntity(xmlDoc* c_doc, const_xmlChar* name) noexcept: + cdef xmlNode* c_node + c_node = tree.xmlNewReference(c_doc, name) + return c_node + +# module-level API for ElementTree + +from abc import ABC + +class Element(ABC): + """Element(_tag, attrib=None, nsmap=None, **_extra) + + Element factory, as a class. + + An instance of this class is an object implementing the + Element interface. + + >>> element = Element("test") + >>> type(element) + + >>> isinstance(element, Element) + True + >>> issubclass(_Element, Element) + True + + Also look at the `_Element.makeelement()` and + `_BaseParser.makeelement()` methods, which provide a faster way to + create an Element within a specific document or parser context. + """ + def __new__(cls, _tag, attrib=None, nsmap=None, **_extra): + return _makeElement(_tag, NULL, None, None, None, None, + attrib, nsmap, _extra) + +# Register _Element as a virtual subclass of Element +Element.register(_Element) + + +def Comment(text=None): + """Comment(text=None) + + Comment element factory. This factory function creates a special element that will + be serialized as an XML comment. + """ + cdef _Document doc + cdef xmlNode* c_node + cdef xmlDoc* c_doc + + if text is None: + text = b'' + else: + text = _utf8(text) + if b'--' in text or text.endswith(b'-'): + raise ValueError("Comment may not contain '--' or end with '-'") + + c_doc = _newXMLDoc() + doc = _documentFactory(c_doc, None) + c_node = _createComment(c_doc, _xcstr(text)) + tree.xmlAddChild(c_doc, c_node) + return _elementFactory(doc, c_node) + + +def ProcessingInstruction(target, text=None): + """ProcessingInstruction(target, text=None) + + ProcessingInstruction element factory. This factory function creates a + special element that will be serialized as an XML processing instruction. + """ + cdef _Document doc + cdef xmlNode* c_node + cdef xmlDoc* c_doc + + target = _utf8(target) + _tagValidOrRaise(target) + if target.lower() == b'xml': + raise ValueError, f"Invalid PI name '{target}'" + + if text is None: + text = b'' + else: + text = _utf8(text) + if b'?>' in text: + raise ValueError, "PI text must not contain '?>'" + + c_doc = _newXMLDoc() + doc = _documentFactory(c_doc, None) + c_node = _createPI(c_doc, _xcstr(target), _xcstr(text)) + tree.xmlAddChild(c_doc, c_node) + return _elementFactory(doc, c_node) + +PI = ProcessingInstruction + + +cdef class CDATA: + """CDATA(data) + + CDATA factory. This factory creates an opaque data object that + can be used to set Element text. The usual way to use it is:: + + >>> el = Element('content') + >>> el.text = CDATA('a string') + + >>> print(el.text) + a string + >>> print(tostring(el, encoding="unicode")) + + """ + cdef bytes _utf8_data + def __cinit__(self, data): + self._utf8_data = _utf8(data) + + +def Entity(name): + """Entity(name) + + Entity factory. This factory function creates a special element + that will be serialized as an XML entity reference or character + reference. Note, however, that entities will not be automatically + declared in the document. A document that uses entity references + requires a DTD to define the entities. + """ + cdef _Document doc + cdef xmlNode* c_node + 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) + c_node = _createEntity(c_doc, c_name) + tree.xmlAddChild(c_doc, c_node) + return _elementFactory(doc, c_node) + + +def SubElement(_Element _parent not None, _tag, + attrib=None, nsmap=None, **_extra): + """SubElement(_parent, _tag, attrib=None, nsmap=None, **_extra) + + Subelement factory. This function creates an element instance, and + appends it to an existing element. + """ + return _makeSubElement(_parent, _tag, None, None, attrib, nsmap, _extra) + +from typing import Generic, TypeVar + +T = TypeVar("T") + +class ElementTree(ABC, Generic[T]): + def __new__(cls, _Element element=None, *, file=None, _BaseParser parser=None): + """ElementTree(element=None, file=None, parser=None) + + ElementTree wrapper class. + """ + cdef xmlNode* c_next + cdef xmlNode* c_node + cdef xmlNode* c_node_copy + cdef xmlDoc* c_doc + cdef _ElementTree etree + cdef _Document doc + + if element is not None: + doc = element._doc + elif file is not None: + try: + doc = _parseDocument(file, parser, None) + except _TargetParserResult as result_container: + return result_container.result + else: + c_doc = _newXMLDoc() + doc = _documentFactory(c_doc, parser) + + return _elementTreeFactory(doc, element) + +# Register _ElementTree as a virtual subclass of ElementTree +ElementTree.register(_ElementTree) + +# Remove "ABC" and typing helpers from module dict +del ABC, Generic, TypeVar, T + +def HTML(text, _BaseParser parser=None, *, base_url=None): + """HTML(text, parser=None, base_url=None) + + Parses an HTML document from a string constant. Returns the root + node (or the result returned by a parser target). This function + can be used to embed "HTML literals" in Python code. + + To override the parser with a different ``HTMLParser`` you can pass it to + the ``parser`` keyword argument. + + The ``base_url`` keyword argument allows to set the original base URL of + the document to support relative Paths when looking up external entities + (DTD, XInclude, ...). + """ + cdef _Document doc + if parser is None: + parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser() + if not isinstance(parser, HTMLParser): + parser = __DEFAULT_HTML_PARSER + try: + doc = _parseMemoryDocument(text, base_url, parser) + return doc.getroot() + except _TargetParserResult as result_container: + return result_container.result + + +def XML(text, _BaseParser parser=None, *, base_url=None): + """XML(text, parser=None, base_url=None) + + Parses an XML document or fragment from a string constant. + Returns the root node (or the result returned by a parser target). + This function can be used to embed "XML literals" in Python code, + like in + + >>> root = XML("") + >>> print(root.tag) + root + + To override the parser with a different ``XMLParser`` you can pass it to + the ``parser`` keyword argument. + + The ``base_url`` keyword argument allows to set the original base URL of + the document to support relative Paths when looking up external entities + (DTD, XInclude, ...). + """ + cdef _Document doc + if parser is None: + parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser() + if not isinstance(parser, XMLParser): + parser = __DEFAULT_XML_PARSER + try: + doc = _parseMemoryDocument(text, base_url, parser) + return doc.getroot() + except _TargetParserResult as result_container: + return result_container.result + + +def fromstring(text, _BaseParser parser=None, *, base_url=None): + """fromstring(text, parser=None, base_url=None) + + Parses an XML document or fragment from a string. Returns the + root node (or the result returned by a parser target). + + To override the default parser with a different parser you can pass it to + the ``parser`` keyword argument. + + The ``base_url`` keyword argument allows to set the original base URL of + the document to support relative Paths when looking up external entities + (DTD, XInclude, ...). + """ + cdef _Document doc + try: + doc = _parseMemoryDocument(text, base_url, parser) + return doc.getroot() + except _TargetParserResult as result_container: + return result_container.result + + +def fromstringlist(strings, _BaseParser parser=None): + """fromstringlist(strings, parser=None) + + Parses an XML document from a sequence of strings. Returns the + root node (or the result returned by a parser target). + + To override the default parser with a different parser you can pass it to + the ``parser`` keyword argument. + """ + cdef _Document doc + if isinstance(strings, (bytes, unicode)): + raise ValueError("passing a single string into fromstringlist() is not" + " efficient, use fromstring() instead") + if parser is None: + parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser() + feed = parser.feed + for data in strings: + feed(data) + return parser.close() + + +def iselement(element): + """iselement(element) + + Checks if an object appears to be a valid element object. + """ + return isinstance(element, _Element) and (<_Element>element)._c_node is not NULL + + +def indent(tree, space=" ", *, Py_ssize_t level=0): + """indent(tree, space=" ", level=0) + + Indent an XML document by inserting newlines and indentation space + after elements. + + *tree* is the ElementTree or Element to modify. The (root) element + itself will not be changed, but the tail text of all elements in its + subtree will be adapted. + + *space* is the whitespace to insert for each indentation level, two + space characters by default. + + *level* is the initial indentation level. Setting this to a higher + value than 0 can be used for indenting subtrees that are more deeply + nested inside of a document. + """ + root = _rootNodeOrRaise(tree) + if level < 0: + raise ValueError(f"Initial indentation level must be >= 0, got {level}") + if _hasChild(root._c_node): + space = _utf8(space) + indent = b"\n" + level * space + _indent_children(root._c_node, 1, space, [indent, indent + space]) + + +cdef int _indent_children(xmlNode* c_node, Py_ssize_t level, bytes one_space, list indentations) except -1: + # Reuse indentation strings for speed. + if len(indentations) <= level: + indentations.append(indentations[-1] + one_space) + + # Start a new indentation level for the first child. + child_indentation = indentations[level] + if not _hasNonWhitespaceText(c_node): + _setNodeText(c_node, child_indentation) + + # Recursively indent all children. + cdef xmlNode* c_child = _findChildForwards(c_node, 0) + while c_child is not NULL: + if _hasChild(c_child): + _indent_children(c_child, level+1, one_space, indentations) + c_next_child = _nextElement(c_child) + if not _hasNonWhitespaceTail(c_child): + if c_next_child is NULL: + # Dedent after the last child. + child_indentation = indentations[level-1] + _setTailText(c_child, child_indentation) + c_child = c_next_child + return 0 + + +def dump(_Element elem not None, *, bint pretty_print=True, bint with_tail=True): + """dump(elem, pretty_print=True, with_tail=True) + + Writes an element tree or element structure to sys.stdout. This function + should be used for debugging only. + """ + xml = tostring(elem, pretty_print=pretty_print, with_tail=with_tail, encoding='unicode') + if not pretty_print: + xml += '\n' + sys.stdout.write(xml) + + +def tostring(element_or_tree, *, encoding=None, method="xml", + xml_declaration=None, bint pretty_print=False, bint with_tail=True, + standalone=None, doctype=None, + # method='c14n' + bint exclusive=False, inclusive_ns_prefixes=None, + # method='c14n2' + bint with_comments=True, bint strip_text=False, + ): + """tostring(element_or_tree, encoding=None, method="xml", + xml_declaration=None, pretty_print=False, with_tail=True, + standalone=None, doctype=None, + exclusive=False, inclusive_ns_prefixes=None, + with_comments=True, strip_text=False, + ) + + Serialize an element to an encoded string representation of its XML + tree. + + Defaults to ASCII encoding without XML declaration. This + behaviour can be configured with the keyword arguments 'encoding' + (string) and 'xml_declaration' (bool). Note that changing the + encoding to a non UTF-8 compatible encoding will enable a + declaration by default. + + You can also serialise to a Unicode string without declaration by + passing the name ``'unicode'`` as encoding (or the ``str`` function + in Py3 or ``unicode`` in Py2). This changes the return value from + a byte string to an unencoded unicode string. + + The keyword argument 'pretty_print' (bool) enables formatted XML. + + The keyword argument 'method' selects the output method: 'xml', + 'html', plain 'text' (text content without tags), 'c14n' or 'c14n2'. + Default is 'xml'. + + With ``method="c14n"`` (C14N version 1), the options ``exclusive``, + ``with_comments`` and ``inclusive_ns_prefixes`` request exclusive + C14N, include comments, and list the inclusive prefixes respectively. + + With ``method="c14n2"`` (C14N version 2), the ``with_comments`` and + ``strip_text`` options control the output of comments and text space + according to C14N 2.0. + + Passing a boolean value to the ``standalone`` option will output + an XML declaration with the corresponding ``standalone`` flag. + + The ``doctype`` option allows passing in a plain string that will + be serialised before the XML tree. Note that passing in non + well-formed content here will make the XML output non well-formed. + Also, an existing doctype in the document tree will not be removed + when serialising an ElementTree instance. + + You can prevent the tail text of the element from being serialised + by passing the boolean ``with_tail`` option. This has no impact + on the tail text of children, which will always be serialised. + """ + cdef bint write_declaration + cdef int is_standalone + # C14N serialisation + if method in ('c14n', 'c14n2'): + if encoding is not None: + raise ValueError("Cannot specify encoding with C14N") + if xml_declaration: + raise ValueError("Cannot enable XML declaration in C14N") + if method == 'c14n': + return _tostringC14N(element_or_tree, exclusive, with_comments, inclusive_ns_prefixes) + else: + out = BytesIO() + target = C14NWriterTarget( + utf8_writer(out).write, + with_comments=with_comments, strip_text=strip_text) + _tree_to_target(element_or_tree, target) + return out.getvalue() + if not with_comments: + raise ValueError("Can only discard comments in C14N serialisation") + if strip_text: + raise ValueError("Can only strip text in C14N 2.0 serialisation") + if encoding is unicode or (encoding is not None and encoding.lower() == 'unicode'): + if xml_declaration: + raise ValueError, \ + "Serialisation to unicode must not request an XML declaration" + write_declaration = 0 + encoding = unicode + elif xml_declaration is None: + # by default, write an XML declaration only for non-standard encodings + write_declaration = encoding is not None and encoding.upper() not in \ + ('ASCII', 'UTF-8', 'UTF8', 'US-ASCII') + else: + write_declaration = xml_declaration + if encoding is None: + encoding = 'ASCII' + if standalone is None: + is_standalone = -1 + elif standalone: + write_declaration = 1 + is_standalone = 1 + else: + write_declaration = 1 + is_standalone = 0 + + if isinstance(element_or_tree, _Element): + return _tostring(<_Element>element_or_tree, encoding, doctype, method, + write_declaration, 0, pretty_print, with_tail, + is_standalone) + elif isinstance(element_or_tree, _ElementTree): + return _tostring((<_ElementTree>element_or_tree)._context_node, + encoding, doctype, method, write_declaration, 1, + pretty_print, with_tail, is_standalone) + else: + raise TypeError, f"Type '{python._fqtypename(element_or_tree).decode('utf8')}' cannot be serialized." + + + +def tostringlist(element_or_tree, *args, **kwargs): + """tostringlist(element_or_tree, *args, **kwargs) + + Serialize an element to an encoded string representation of its XML + tree, stored in a list of partial strings. + + This is purely for ElementTree 1.3 compatibility. The result is a + single string wrapped in a list. + """ + return [tostring(element_or_tree, *args, **kwargs)] + + +def tounicode(element_or_tree, *, method="xml", bint pretty_print=False, + bint with_tail=True, doctype=None): + """tounicode(element_or_tree, method="xml", pretty_print=False, + with_tail=True, doctype=None) + + Serialize an element to the Python unicode representation of its XML + tree. + + :deprecated: use ``tostring(el, encoding='unicode')`` instead. + + Note that the result does not carry an XML encoding declaration and is + therefore not necessarily suited for serialization to byte streams without + further treatment. + + The boolean keyword argument 'pretty_print' enables formatted XML. + + The keyword argument 'method' selects the output method: 'xml', + 'html' or plain 'text'. + + You can prevent the tail text of the element from being serialised + by passing the boolean ``with_tail`` option. This has no impact + on the tail text of children, which will always be serialised. + """ + if isinstance(element_or_tree, _Element): + return _tostring(<_Element>element_or_tree, unicode, doctype, method, + 0, 0, pretty_print, with_tail, -1) + elif isinstance(element_or_tree, _ElementTree): + return _tostring((<_ElementTree>element_or_tree)._context_node, + unicode, doctype, method, 0, 1, pretty_print, + with_tail, -1) + else: + raise TypeError, f"Type '{type(element_or_tree)}' cannot be serialized." + + +def parse(source, _BaseParser parser=None, *, base_url=None): + """parse(source, parser=None, base_url=None) + + Return an ElementTree object loaded with source elements. If no parser + is provided as second argument, the default parser is used. + + The ``source`` can be any of the following: + + - a file name/path + - a file object + - a file-like object + - a URL using the HTTP or FTP protocol + + To parse from a string, use the ``fromstring()`` function instead. + + Note that it is generally faster to parse from a file path or URL + than from an open file object or file-like object. Transparent + decompression from gzip compressed sources is supported (unless + explicitly disabled in libxml2). + + The ``base_url`` keyword allows setting a URL for the document + when parsing from a file-like object. This is needed when looking + up external entities (DTD, XInclude, ...) with relative paths. + """ + cdef _Document doc + try: + doc = _parseDocument(source, parser, base_url) + return _elementTreeFactory(doc, None) + except _TargetParserResult as result_container: + return result_container.result + + +def adopt_external_document(capsule, _BaseParser parser=None): + """adopt_external_document(capsule, parser=None) + + Unpack a libxml2 document pointer from a PyCapsule and wrap it in an + lxml ElementTree object. + + This allows external libraries to build XML/HTML trees using libxml2 + and then pass them efficiently into lxml for further processing. + + If a ``parser`` is provided, it will be used for configuring the + lxml document. No parsing will be done. + + The capsule must have the name ``"libxml2:xmlDoc"`` and its pointer + value must reference a correct libxml2 document of type ``xmlDoc*``. + The creator of the capsule must take care to correctly clean up the + document using an appropriate capsule destructor. By default, the + libxml2 document will be copied to let lxml safely own the memory + of the internal tree that it uses. + + If the capsule context is non-NULL, it must point to a C string that + can be compared using ``strcmp()``. If the context string equals + ``"destructor:xmlFreeDoc"``, the libxml2 document will not be copied + but the capsule invalidated instead by clearing its destructor and + name. That way, lxml takes ownership of the libxml2 document in memory + without creating a copy first, and the capsule destructor will not be + called. The document will then eventually be cleaned up by lxml using + the libxml2 API function ``xmlFreeDoc()`` once it is no longer used. + + If no copy is made, later modifications of the tree outside of lxml + should not be attempted after transferring the ownership. + """ + cdef xmlDoc* c_doc + cdef bint is_owned = False + c_doc = python.lxml_unpack_xmldoc_capsule(capsule, &is_owned) + doc = _adoptForeignDoc(c_doc, parser, is_owned) + return _elementTreeFactory(doc, None) + + +################################################################################ +# Include submodules + +include "readonlytree.pxi" # Read-only implementation of Element proxies +include "classlookup.pxi" # Element class lookup mechanisms +include "nsclasses.pxi" # Namespace implementation and registry +include "docloader.pxi" # Support for custom document loaders +include "parser.pxi" # XML and HTML parsers +include "saxparser.pxi" # SAX-like Parser interface and tree builder +include "parsertarget.pxi" # ET Parser target +include "serializer.pxi" # XML output functions +include "iterparse.pxi" # incremental XML parsing +include "xmlid.pxi" # XMLID and IDDict +include "xinclude.pxi" # XInclude +include "cleanup.pxi" # Cleanup and recursive element removal functions + + +################################################################################ +# Include submodules for XPath and XSLT + +include "extensions.pxi" # XPath/XSLT extension functions +include "xpath.pxi" # XPath evaluation +include "xslt.pxi" # XSL transformations +include "xsltext.pxi" # XSL extension elements + + +################################################################################ +# Validation + +cdef class DocumentInvalid(LxmlError): + """Validation error. + + Raised by all document validators when their ``assertValid(tree)`` + method fails. + """ + + +cdef class _Validator: + "Base class for XML validators." + cdef _ErrorLog _error_log + def __cinit__(self): + self._error_log = _ErrorLog() + + def validate(self, etree): + """validate(self, etree) + + Validate the document using this schema. + + Returns true if document is valid, false if not. + """ + return self(etree) + + def assertValid(self, etree): + """assertValid(self, etree) + + Raises `DocumentInvalid` if the document does not comply with the schema. + """ + if not self(etree): + raise DocumentInvalid(self._error_log._buildExceptionMessage( + "Document does not comply with schema"), + self._error_log) + + def assert_(self, etree): + """assert_(self, etree) + + Raises `AssertionError` if the document does not comply with the schema. + """ + if not self(etree): + raise AssertionError, self._error_log._buildExceptionMessage( + "Document does not comply with schema") + + cpdef _append_log_message(self, int domain, int type, int level, int line, + message, filename): + self._error_log._receiveGeneric(domain, type, level, line, message, + filename) + + cpdef _clear_error_log(self): + self._error_log.clear() + + @property + def error_log(self): + """The log of validation errors and warnings.""" + assert self._error_log is not None, "XPath evaluator not initialised" + return self._error_log.copy() + +include "dtd.pxi" # DTD +include "relaxng.pxi" # RelaxNG +include "xmlschema.pxi" # XMLSchema +include "schematron.pxi" # Schematron (requires libxml2 2.6.21+) + +################################################################################ +# Public C API + +include "public-api.pxi" + +################################################################################ +# Other stuff + +include "debug.pxi" diff --git a/intelliaide/vendor/lxml/etree_api.h b/intelliaide/vendor/lxml/etree_api.h new file mode 100644 index 0000000..702fef2 --- /dev/null +++ b/intelliaide/vendor/lxml/etree_api.h @@ -0,0 +1,214 @@ +/* Generated by Cython 3.2.4 */ + +#ifndef __PYX_HAVE_API__lxml__etree +#define __PYX_HAVE_API__lxml__etree +#ifdef __MINGW64__ +#define MS_WIN64 +#endif +#include "Python.h" +#include "etree.h" + +static struct LxmlElement *(*__pyx_api_f_4lxml_5etree_deepcopyNodeToDocument)(struct LxmlDocument *, xmlNode *) = 0; +#define deepcopyNodeToDocument __pyx_api_f_4lxml_5etree_deepcopyNodeToDocument +static struct LxmlElementTree *(*__pyx_api_f_4lxml_5etree_elementTreeFactory)(struct LxmlElement *) = 0; +#define elementTreeFactory __pyx_api_f_4lxml_5etree_elementTreeFactory +static struct LxmlElementTree *(*__pyx_api_f_4lxml_5etree_newElementTree)(struct LxmlElement *, PyObject *) = 0; +#define newElementTree __pyx_api_f_4lxml_5etree_newElementTree +static struct LxmlElementTree *(*__pyx_api_f_4lxml_5etree_adoptExternalDocument)(xmlDoc *, PyObject *, int) = 0; +#define adoptExternalDocument __pyx_api_f_4lxml_5etree_adoptExternalDocument +static struct LxmlElement *(*__pyx_api_f_4lxml_5etree_elementFactory)(struct LxmlDocument *, xmlNode *) = 0; +#define elementFactory __pyx_api_f_4lxml_5etree_elementFactory +static struct LxmlElement *(*__pyx_api_f_4lxml_5etree_makeElement)(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *) = 0; +#define makeElement __pyx_api_f_4lxml_5etree_makeElement +static struct LxmlElement *(*__pyx_api_f_4lxml_5etree_makeSubElement)(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *) = 0; +#define makeSubElement __pyx_api_f_4lxml_5etree_makeSubElement +static void (*__pyx_api_f_4lxml_5etree_setElementClassLookupFunction)(_element_class_lookup_function, PyObject *) = 0; +#define setElementClassLookupFunction __pyx_api_f_4lxml_5etree_setElementClassLookupFunction +static PyObject *(*__pyx_api_f_4lxml_5etree_lookupDefaultElementClass)(PyObject *, PyObject *, xmlNode *) = 0; +#define lookupDefaultElementClass __pyx_api_f_4lxml_5etree_lookupDefaultElementClass +static PyObject *(*__pyx_api_f_4lxml_5etree_lookupNamespaceElementClass)(PyObject *, PyObject *, xmlNode *) = 0; +#define lookupNamespaceElementClass __pyx_api_f_4lxml_5etree_lookupNamespaceElementClass +static PyObject *(*__pyx_api_f_4lxml_5etree_callLookupFallback)(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *) = 0; +#define callLookupFallback __pyx_api_f_4lxml_5etree_callLookupFallback +static int (*__pyx_api_f_4lxml_5etree_tagMatches)(xmlNode *, const xmlChar *, const xmlChar *) = 0; +#define tagMatches __pyx_api_f_4lxml_5etree_tagMatches +static struct LxmlDocument *(*__pyx_api_f_4lxml_5etree_documentOrRaise)(PyObject *) = 0; +#define documentOrRaise __pyx_api_f_4lxml_5etree_documentOrRaise +static struct LxmlElement *(*__pyx_api_f_4lxml_5etree_rootNodeOrRaise)(PyObject *) = 0; +#define rootNodeOrRaise __pyx_api_f_4lxml_5etree_rootNodeOrRaise +static int (*__pyx_api_f_4lxml_5etree_hasText)(xmlNode *) = 0; +#define hasText __pyx_api_f_4lxml_5etree_hasText +static int (*__pyx_api_f_4lxml_5etree_hasTail)(xmlNode *) = 0; +#define hasTail __pyx_api_f_4lxml_5etree_hasTail +static PyObject *(*__pyx_api_f_4lxml_5etree_textOf)(xmlNode *) = 0; +#define textOf __pyx_api_f_4lxml_5etree_textOf +static PyObject *(*__pyx_api_f_4lxml_5etree_tailOf)(xmlNode *) = 0; +#define tailOf __pyx_api_f_4lxml_5etree_tailOf +static int (*__pyx_api_f_4lxml_5etree_setNodeText)(xmlNode *, PyObject *) = 0; +#define setNodeText __pyx_api_f_4lxml_5etree_setNodeText +static int (*__pyx_api_f_4lxml_5etree_setTailText)(xmlNode *, PyObject *) = 0; +#define setTailText __pyx_api_f_4lxml_5etree_setTailText +static PyObject *(*__pyx_api_f_4lxml_5etree_attributeValue)(xmlNode *, xmlAttr *) = 0; +#define attributeValue __pyx_api_f_4lxml_5etree_attributeValue +static PyObject *(*__pyx_api_f_4lxml_5etree_attributeValueFromNsName)(xmlNode *, const xmlChar *, const xmlChar *) = 0; +#define attributeValueFromNsName __pyx_api_f_4lxml_5etree_attributeValueFromNsName +static PyObject *(*__pyx_api_f_4lxml_5etree_getAttributeValue)(struct LxmlElement *, PyObject *, PyObject *) = 0; +#define getAttributeValue __pyx_api_f_4lxml_5etree_getAttributeValue +static PyObject *(*__pyx_api_f_4lxml_5etree_iterattributes)(struct LxmlElement *, int) = 0; +#define iterattributes __pyx_api_f_4lxml_5etree_iterattributes +static PyObject *(*__pyx_api_f_4lxml_5etree_collectAttributes)(xmlNode *, int) = 0; +#define collectAttributes __pyx_api_f_4lxml_5etree_collectAttributes +static int (*__pyx_api_f_4lxml_5etree_setAttributeValue)(struct LxmlElement *, PyObject *, PyObject *) = 0; +#define setAttributeValue __pyx_api_f_4lxml_5etree_setAttributeValue +static int (*__pyx_api_f_4lxml_5etree_delAttribute)(struct LxmlElement *, PyObject *) = 0; +#define delAttribute __pyx_api_f_4lxml_5etree_delAttribute +static int (*__pyx_api_f_4lxml_5etree_delAttributeFromNsName)(xmlNode *, const xmlChar *, const xmlChar *) = 0; +#define delAttributeFromNsName __pyx_api_f_4lxml_5etree_delAttributeFromNsName +static int (*__pyx_api_f_4lxml_5etree_hasChild)(xmlNode *) = 0; +#define hasChild __pyx_api_f_4lxml_5etree_hasChild +static xmlNode *(*__pyx_api_f_4lxml_5etree_findChild)(xmlNode *, Py_ssize_t) = 0; +#define findChild __pyx_api_f_4lxml_5etree_findChild +static xmlNode *(*__pyx_api_f_4lxml_5etree_findChildForwards)(xmlNode *, Py_ssize_t) = 0; +#define findChildForwards __pyx_api_f_4lxml_5etree_findChildForwards +static xmlNode *(*__pyx_api_f_4lxml_5etree_findChildBackwards)(xmlNode *, Py_ssize_t) = 0; +#define findChildBackwards __pyx_api_f_4lxml_5etree_findChildBackwards +static xmlNode *(*__pyx_api_f_4lxml_5etree_nextElement)(xmlNode *) = 0; +#define nextElement __pyx_api_f_4lxml_5etree_nextElement +static xmlNode *(*__pyx_api_f_4lxml_5etree_previousElement)(xmlNode *) = 0; +#define previousElement __pyx_api_f_4lxml_5etree_previousElement +static void (*__pyx_api_f_4lxml_5etree_appendChild)(struct LxmlElement *, struct LxmlElement *) = 0; +#define appendChild __pyx_api_f_4lxml_5etree_appendChild +static int (*__pyx_api_f_4lxml_5etree_appendChildToElement)(struct LxmlElement *, struct LxmlElement *) = 0; +#define appendChildToElement __pyx_api_f_4lxml_5etree_appendChildToElement +static PyObject *(*__pyx_api_f_4lxml_5etree_pyunicode)(const xmlChar *) = 0; +#define pyunicode __pyx_api_f_4lxml_5etree_pyunicode +static PyObject *(*__pyx_api_f_4lxml_5etree_utf8)(PyObject *) = 0; +#define utf8 __pyx_api_f_4lxml_5etree_utf8 +static PyObject *(*__pyx_api_f_4lxml_5etree_getNsTag)(PyObject *) = 0; +#define getNsTag __pyx_api_f_4lxml_5etree_getNsTag +static PyObject *(*__pyx_api_f_4lxml_5etree_getNsTagWithEmptyNs)(PyObject *) = 0; +#define getNsTagWithEmptyNs __pyx_api_f_4lxml_5etree_getNsTagWithEmptyNs +static PyObject *(*__pyx_api_f_4lxml_5etree_namespacedName)(xmlNode *) = 0; +#define namespacedName __pyx_api_f_4lxml_5etree_namespacedName +static PyObject *(*__pyx_api_f_4lxml_5etree_namespacedNameFromNsName)(const xmlChar *, const xmlChar *) = 0; +#define namespacedNameFromNsName __pyx_api_f_4lxml_5etree_namespacedNameFromNsName +static void (*__pyx_api_f_4lxml_5etree_iteratorStoreNext)(struct LxmlElementIterator *, struct LxmlElement *) = 0; +#define iteratorStoreNext __pyx_api_f_4lxml_5etree_iteratorStoreNext +static void (*__pyx_api_f_4lxml_5etree_initTagMatch)(struct LxmlElementTagMatcher *, PyObject *) = 0; +#define initTagMatch __pyx_api_f_4lxml_5etree_initTagMatch +static xmlNs *(*__pyx_api_f_4lxml_5etree_findOrBuildNodeNsPrefix)(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *) = 0; +#define findOrBuildNodeNsPrefix __pyx_api_f_4lxml_5etree_findOrBuildNodeNsPrefix +static int __Pyx_ImportFunction_3_2_4(PyObject *module, const char *funcname, void (**f)(void), const char *sig); + +#ifndef __PYX_HAVE_RT_ImportFromPxd_3_2_4 +#define __PYX_HAVE_RT_ImportFromPxd_3_2_4 +static int __Pyx_ImportFromPxd_3_2_4(PyObject *module, const char *name, void **p, const char *sig, const char *what) { + PyObject *d = 0; + PyObject *cobj = 0; + d = PyObject_GetAttrString(module, "__pyx_capi__"); + if (!d) + goto bad; +#if (defined(Py_LIMITED_API) && Py_LIMITED_API >= 0x030d0000) || (!defined(Py_LIMITED_API) && PY_VERSION_HEX >= 0x030d0000) + PyDict_GetItemStringRef(d, name, &cobj); +#else + cobj = PyDict_GetItemString(d, name); + Py_XINCREF(cobj); +#endif + if (!cobj) { + PyErr_Format(PyExc_ImportError, + "%.200s does not export expected C %.8s %.200s", + PyModule_GetName(module), what, name); + goto bad; + } + if (!PyCapsule_IsValid(cobj, sig)) { + PyErr_Format(PyExc_TypeError, + "C %.8s %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", + what, PyModule_GetName(module), name, sig, PyCapsule_GetName(cobj)); + goto bad; + } + *p = PyCapsule_GetPointer(cobj, sig); + if (!(*p)) + goto bad; + Py_DECREF(d); + Py_DECREF(cobj); + return 0; +bad: + Py_XDECREF(d); + Py_XDECREF(cobj); + return -1; +} +#endif + +#ifndef __PYX_HAVE_RT_ImportFunction_3_2_4 +#define __PYX_HAVE_RT_ImportFunction_3_2_4 +static int __Pyx_ImportFunction_3_2_4(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { + union { + void (*fp)(void); + void *p; + } tmp; + int result = __Pyx_ImportFromPxd_3_2_4(module, funcname, &tmp.p, sig, "function"); + if (result == 0) { + *f = tmp.fp; + } + return result; +} +#endif + + +static int import_lxml__etree(void) { + PyObject *module = 0; + module = PyImport_ImportModule("lxml.etree"); + if (!module) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "deepcopyNodeToDocument", (void (**)(void))&__pyx_api_f_4lxml_5etree_deepcopyNodeToDocument, "struct LxmlElement *(struct LxmlDocument *, xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "elementTreeFactory", (void (**)(void))&__pyx_api_f_4lxml_5etree_elementTreeFactory, "struct LxmlElementTree *(struct LxmlElement *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "newElementTree", (void (**)(void))&__pyx_api_f_4lxml_5etree_newElementTree, "struct LxmlElementTree *(struct LxmlElement *, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "adoptExternalDocument", (void (**)(void))&__pyx_api_f_4lxml_5etree_adoptExternalDocument, "struct LxmlElementTree *(xmlDoc *, PyObject *, int)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "elementFactory", (void (**)(void))&__pyx_api_f_4lxml_5etree_elementFactory, "struct LxmlElement *(struct LxmlDocument *, xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "makeElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_makeElement, "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "makeSubElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_makeSubElement, "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "setElementClassLookupFunction", (void (**)(void))&__pyx_api_f_4lxml_5etree_setElementClassLookupFunction, "void (_element_class_lookup_function, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "lookupDefaultElementClass", (void (**)(void))&__pyx_api_f_4lxml_5etree_lookupDefaultElementClass, "PyObject *(PyObject *, PyObject *, xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "lookupNamespaceElementClass", (void (**)(void))&__pyx_api_f_4lxml_5etree_lookupNamespaceElementClass, "PyObject *(PyObject *, PyObject *, xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "callLookupFallback", (void (**)(void))&__pyx_api_f_4lxml_5etree_callLookupFallback, "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "tagMatches", (void (**)(void))&__pyx_api_f_4lxml_5etree_tagMatches, "int (xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "documentOrRaise", (void (**)(void))&__pyx_api_f_4lxml_5etree_documentOrRaise, "struct LxmlDocument *(PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "rootNodeOrRaise", (void (**)(void))&__pyx_api_f_4lxml_5etree_rootNodeOrRaise, "struct LxmlElement *(PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "hasText", (void (**)(void))&__pyx_api_f_4lxml_5etree_hasText, "int (xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "hasTail", (void (**)(void))&__pyx_api_f_4lxml_5etree_hasTail, "int (xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "textOf", (void (**)(void))&__pyx_api_f_4lxml_5etree_textOf, "PyObject *(xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "tailOf", (void (**)(void))&__pyx_api_f_4lxml_5etree_tailOf, "PyObject *(xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "setNodeText", (void (**)(void))&__pyx_api_f_4lxml_5etree_setNodeText, "int (xmlNode *, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "setTailText", (void (**)(void))&__pyx_api_f_4lxml_5etree_setTailText, "int (xmlNode *, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "attributeValue", (void (**)(void))&__pyx_api_f_4lxml_5etree_attributeValue, "PyObject *(xmlNode *, xmlAttr *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "attributeValueFromNsName", (void (**)(void))&__pyx_api_f_4lxml_5etree_attributeValueFromNsName, "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "getAttributeValue", (void (**)(void))&__pyx_api_f_4lxml_5etree_getAttributeValue, "PyObject *(struct LxmlElement *, PyObject *, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "iterattributes", (void (**)(void))&__pyx_api_f_4lxml_5etree_iterattributes, "PyObject *(struct LxmlElement *, int)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "collectAttributes", (void (**)(void))&__pyx_api_f_4lxml_5etree_collectAttributes, "PyObject *(xmlNode *, int)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "setAttributeValue", (void (**)(void))&__pyx_api_f_4lxml_5etree_setAttributeValue, "int (struct LxmlElement *, PyObject *, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "delAttribute", (void (**)(void))&__pyx_api_f_4lxml_5etree_delAttribute, "int (struct LxmlElement *, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "delAttributeFromNsName", (void (**)(void))&__pyx_api_f_4lxml_5etree_delAttributeFromNsName, "int (xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "hasChild", (void (**)(void))&__pyx_api_f_4lxml_5etree_hasChild, "int (xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "findChild", (void (**)(void))&__pyx_api_f_4lxml_5etree_findChild, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "findChildForwards", (void (**)(void))&__pyx_api_f_4lxml_5etree_findChildForwards, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "findChildBackwards", (void (**)(void))&__pyx_api_f_4lxml_5etree_findChildBackwards, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "nextElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_nextElement, "xmlNode *(xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "previousElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_previousElement, "xmlNode *(xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "appendChild", (void (**)(void))&__pyx_api_f_4lxml_5etree_appendChild, "void (struct LxmlElement *, struct LxmlElement *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "appendChildToElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_appendChildToElement, "int (struct LxmlElement *, struct LxmlElement *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "pyunicode", (void (**)(void))&__pyx_api_f_4lxml_5etree_pyunicode, "PyObject *(const xmlChar *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "utf8", (void (**)(void))&__pyx_api_f_4lxml_5etree_utf8, "PyObject *(PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "getNsTag", (void (**)(void))&__pyx_api_f_4lxml_5etree_getNsTag, "PyObject *(PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "getNsTagWithEmptyNs", (void (**)(void))&__pyx_api_f_4lxml_5etree_getNsTagWithEmptyNs, "PyObject *(PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "namespacedName", (void (**)(void))&__pyx_api_f_4lxml_5etree_namespacedName, "PyObject *(xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "namespacedNameFromNsName", (void (**)(void))&__pyx_api_f_4lxml_5etree_namespacedNameFromNsName, "PyObject *(const xmlChar *, const xmlChar *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "iteratorStoreNext", (void (**)(void))&__pyx_api_f_4lxml_5etree_iteratorStoreNext, "void (struct LxmlElementIterator *, struct LxmlElement *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "initTagMatch", (void (**)(void))&__pyx_api_f_4lxml_5etree_initTagMatch, "void (struct LxmlElementTagMatcher *, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction_3_2_4(module, "findOrBuildNodeNsPrefix", (void (**)(void))&__pyx_api_f_4lxml_5etree_findOrBuildNodeNsPrefix, "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad; + Py_DECREF(module); module = 0; + return 0; + bad: + Py_XDECREF(module); + return -1; +} + +#endif /* !__PYX_HAVE_API__lxml__etree */ diff --git a/intelliaide/vendor/lxml/extensions.pxi b/intelliaide/vendor/lxml/extensions.pxi new file mode 100644 index 0000000..5945080 --- /dev/null +++ b/intelliaide/vendor/lxml/extensions.pxi @@ -0,0 +1,838 @@ +# support for extension functions in XPath and XSLT + +cdef class XPathError(LxmlError): + """Base class of all XPath errors. + """ + +cdef class XPathEvalError(XPathError): + """Error during XPath evaluation. + """ + +cdef class XPathFunctionError(XPathEvalError): + """Internal error looking up an XPath extension function. + """ + +cdef class XPathResultError(XPathEvalError): + """Error handling an XPath result. + """ + + +# forward declarations + +ctypedef int (*_register_function)(void* ctxt, name_utf, ns_uri_utf) +cdef class _ExsltRegExp + +################################################################################ +# Base class for XSLT and XPath evaluation contexts: functions, namespaces, ... + +@cython.internal +cdef class _BaseContext: + cdef xpath.xmlXPathContext* _xpathCtxt + cdef _Document _doc + cdef dict _extensions + cdef list _namespaces + cdef list _global_namespaces + cdef dict _utf_refs + cdef dict _function_cache + cdef dict _eval_context_dict + cdef bint _build_smart_strings + # for exception handling and temporary reference keeping: + cdef _TempStore _temp_refs + cdef set _temp_documents + cdef _ExceptionContext _exc + cdef _ErrorLog _error_log + + def __init__(self, namespaces, extensions, error_log, enable_regexp, + build_smart_strings): + cdef _ExsltRegExp _regexp + cdef dict new_extensions + cdef list ns + self._utf_refs = {} + self._global_namespaces = [] + self._function_cache = {} + self._eval_context_dict = None + self._error_log = error_log + + if extensions is not None: + # convert extensions to UTF-8 + if isinstance(extensions, dict): + extensions = (extensions,) + # format: [ {(ns, name):function} ] -> {(ns_utf, name_utf):function} + new_extensions = {} + for extension in extensions: + for (ns_uri, name), function in extension.items(): + if name is None: + raise ValueError, "extensions must have non empty names" + ns_utf = self._to_utf(ns_uri) + name_utf = self._to_utf(name) + new_extensions[(ns_utf, name_utf)] = function + extensions = new_extensions or None + + if namespaces is not None: + if isinstance(namespaces, dict): + namespaces = namespaces.items() + if namespaces: + ns = [] + for prefix, ns_uri in namespaces: + if prefix is None or not prefix: + raise TypeError, \ + "empty namespace prefix is not supported in XPath" + if ns_uri is None or not ns_uri: + raise TypeError, \ + "setting default namespace is not supported in XPath" + prefix_utf = self._to_utf(prefix) + ns_uri_utf = self._to_utf(ns_uri) + ns.append( (prefix_utf, ns_uri_utf) ) + namespaces = ns + else: + namespaces = None + + self._doc = None + self._exc = _ExceptionContext() + self._extensions = extensions + self._namespaces = namespaces + self._temp_refs = _TempStore() + self._temp_documents = set() + self._build_smart_strings = build_smart_strings + + if enable_regexp: + _regexp = _ExsltRegExp() + _regexp._register_in_context(self) + + cdef _BaseContext _copy(self): + cdef _BaseContext context + if self._namespaces is not None: + namespaces = self._namespaces[:] + else: + namespaces = None + context = self.__class__(namespaces, None, self._error_log, False, + self._build_smart_strings) + if self._extensions is not None: + context._extensions = self._extensions.copy() + return context + + cdef bytes _to_utf(self, s): + "Convert to UTF-8 and keep a reference to the encoded string" + cdef python.PyObject* dict_result + if s is None: + return None + dict_result = python.PyDict_GetItem(self._utf_refs, s) + if dict_result is not NULL: + return dict_result + utf = _utf8(s) + self._utf_refs[s] = utf + if python.IS_PYPY: + # use C level refs, PyPy refs are not enough! + python.Py_INCREF(utf) + return utf + + cdef void _set_xpath_context(self, xpath.xmlXPathContext* xpathCtxt) noexcept: + self._xpathCtxt = xpathCtxt + xpathCtxt.userData = self + # Need a cast here because older libxml2 releases do not use 'const' in the functype. + xpathCtxt.error = _receiveXPathError + + @cython.final + cdef _register_context(self, _Document doc): + self._doc = doc + self._exc.clear() + + @cython.final + cdef _cleanup_context(self): + #xpath.xmlXPathRegisteredNsCleanup(self._xpathCtxt) + #self.unregisterGlobalNamespaces() + if python.IS_PYPY: + # clean up double refs in PyPy (see "_to_utf()" method) + for ref in self._utf_refs.itervalues(): + python.Py_DECREF(ref) + self._utf_refs.clear() + self._eval_context_dict = None + self._doc = None + + @cython.final + cdef _release_context(self): + if self._xpathCtxt is not NULL: + self._xpathCtxt.userData = NULL + self._xpathCtxt = NULL + + # namespaces (internal UTF-8 methods with leading '_') + + cdef addNamespace(self, prefix, ns_uri): + cdef list namespaces + if prefix is None: + raise TypeError, "empty prefix is not supported in XPath" + prefix_utf = self._to_utf(prefix) + ns_uri_utf = self._to_utf(ns_uri) + new_item = (prefix_utf, ns_uri_utf) + if self._namespaces is None: + self._namespaces = [new_item] + else: + namespaces = [] + for item in self._namespaces: + if item[0] == prefix_utf: + item = new_item + new_item = None + namespaces.append(item) + if new_item is not None: + namespaces.append(new_item) + self._namespaces = namespaces + if self._xpathCtxt is not NULL: + xpath.xmlXPathRegisterNs( + self._xpathCtxt, _xcstr(prefix_utf), _xcstr(ns_uri_utf)) + + cdef registerNamespace(self, prefix, ns_uri): + if prefix is None: + raise TypeError, "empty prefix is not supported in XPath" + prefix_utf = self._to_utf(prefix) + ns_uri_utf = self._to_utf(ns_uri) + self._global_namespaces.append(prefix_utf) + xpath.xmlXPathRegisterNs(self._xpathCtxt, + _xcstr(prefix_utf), _xcstr(ns_uri_utf)) + + cdef registerLocalNamespaces(self): + if self._namespaces is None: + return + for prefix_utf, ns_uri_utf in self._namespaces: + xpath.xmlXPathRegisterNs( + self._xpathCtxt, _xcstr(prefix_utf), _xcstr(ns_uri_utf)) + + cdef registerGlobalNamespaces(self): + cdef list ns_prefixes = _find_all_extension_prefixes() + if python.PyList_GET_SIZE(ns_prefixes) > 0: + for prefix_utf, ns_uri_utf in ns_prefixes: + self._global_namespaces.append(prefix_utf) + xpath.xmlXPathRegisterNs( + self._xpathCtxt, _xcstr(prefix_utf), _xcstr(ns_uri_utf)) + + cdef unregisterGlobalNamespaces(self): + if python.PyList_GET_SIZE(self._global_namespaces) > 0: + for prefix_utf in self._global_namespaces: + xpath.xmlXPathRegisterNs(self._xpathCtxt, + _xcstr(prefix_utf), NULL) + del self._global_namespaces[:] + + cdef void _unregisterNamespace(self, prefix_utf) noexcept: + xpath.xmlXPathRegisterNs(self._xpathCtxt, + _xcstr(prefix_utf), NULL) + + # extension functions + + cdef int _addLocalExtensionFunction(self, ns_utf, name_utf, function) except -1: + if self._extensions is None: + self._extensions = {} + self._extensions[(ns_utf, name_utf)] = function + return 0 + + cdef registerGlobalFunctions(self, void* ctxt, + _register_function reg_func): + cdef python.PyObject* dict_result + cdef dict d + for ns_utf, ns_functions in __FUNCTION_NAMESPACE_REGISTRIES.iteritems(): + dict_result = python.PyDict_GetItem( + self._function_cache, ns_utf) + if dict_result is not NULL: + d = dict_result + else: + d = {} + self._function_cache[ns_utf] = d + for name_utf, function in ns_functions.iteritems(): + d[name_utf] = function + reg_func(ctxt, name_utf, ns_utf) + + cdef registerLocalFunctions(self, void* ctxt, + _register_function reg_func): + cdef python.PyObject* dict_result + cdef dict d + if self._extensions is None: + return # done + last_ns = None + d = None + for (ns_utf, name_utf), function in self._extensions.iteritems(): + if ns_utf is not last_ns or d is None: + last_ns = ns_utf + dict_result = python.PyDict_GetItem( + self._function_cache, ns_utf) + if dict_result is not NULL: + d = dict_result + else: + d = {} + self._function_cache[ns_utf] = d + d[name_utf] = function + reg_func(ctxt, name_utf, ns_utf) + + cdef unregisterAllFunctions(self, void* ctxt, + _register_function unreg_func): + for ns_utf, functions in self._function_cache.iteritems(): + for name_utf in functions: + unreg_func(ctxt, name_utf, ns_utf) + + cdef unregisterGlobalFunctions(self, void* ctxt, + _register_function unreg_func): + for ns_utf, functions in self._function_cache.items(): + for name_utf in functions: + if self._extensions is None or \ + (ns_utf, name_utf) not in self._extensions: + unreg_func(ctxt, name_utf, ns_utf) + + @cython.final + cdef _find_cached_function(self, const_xmlChar* c_ns_uri, const_xmlChar* c_name): + """Lookup an extension function in the cache and return it. + + Parameters: c_ns_uri may be NULL, c_name must not be NULL + """ + cdef python.PyObject* c_dict + cdef python.PyObject* dict_result + c_dict = python.PyDict_GetItem( + self._function_cache, None if c_ns_uri is NULL else c_ns_uri) + if c_dict is not NULL: + dict_result = python.PyDict_GetItem( + c_dict, c_name) + if dict_result is not NULL: + return dict_result + return None + + # Python access to the XPath context for extension functions + + @property + def context_node(self): + cdef xmlNode* c_node + if self._xpathCtxt is NULL: + raise XPathError, \ + "XPath context is only usable during the evaluation" + c_node = self._xpathCtxt.node + if c_node is NULL: + raise XPathError, "no context node" + if c_node.doc != self._xpathCtxt.doc: + raise XPathError, \ + "document-external context nodes are not supported" + if self._doc is None: + raise XPathError, "document context is missing" + return _elementFactory(self._doc, c_node) + + @property + def eval_context(self): + if self._eval_context_dict is None: + self._eval_context_dict = {} + return self._eval_context_dict + + # Python reference keeping during XPath function evaluation + + @cython.final + cdef _release_temp_refs(self): + "Free temporarily referenced objects from this context." + self._temp_refs.clear() + self._temp_documents.clear() + + @cython.final + cdef _hold(self, obj): + """A way to temporarily hold references to nodes in the evaluator. + + This is needed because otherwise nodes created in XPath extension + functions would be reference counted too soon, during the XPath + evaluation. This is most important in the case of exceptions. + """ + cdef _Element element + if isinstance(obj, _Element): + self._temp_refs.add(obj) + self._temp_documents.add((<_Element>obj)._doc) + return + elif _isString(obj) or not python.PySequence_Check(obj): + return + for o in obj: + if isinstance(o, _Element): + #print "Holding element:", element._c_node + self._temp_refs.add(o) + #print "Holding document:", element._doc._c_doc + self._temp_documents.add((<_Element>o)._doc) + + @cython.final + cdef _Document _findDocumentForNode(self, xmlNode* c_node): + """If an XPath expression returns an element from a different + document than the current context document, we call this to + see if it was possibly created by an extension and is a known + document instance. + """ + cdef _Document doc + for doc in self._temp_documents: + if doc is not None and doc._c_doc is c_node.doc: + return doc + return None + + +# libxml2 keeps these error messages in a static array in its code +# and doesn't give us access to them ... + +cdef tuple LIBXML2_XPATH_ERROR_MESSAGES = ( + b"Ok", + b"Number encoding", + b"Unfinished literal", + b"Start of literal", + b"Expected $ for variable reference", + b"Undefined variable", + b"Invalid predicate", + b"Invalid expression", + b"Missing closing curly brace", + b"Unregistered function", + b"Invalid operand", + b"Invalid type", + b"Invalid number of arguments", + b"Invalid context size", + b"Invalid context position", + b"Memory allocation error", + b"Syntax error", + b"Resource error", + b"Sub resource error", + b"Undefined namespace prefix", + b"Encoding error", + b"Char out of XML range", + b"Invalid or incomplete context", + b"Stack usage error", + b"Forbidden variable\n", + b"?? Unknown error ??\n", +) + +cdef void _forwardXPathError(void* c_ctxt, const xmlerror.xmlError* c_error) noexcept with gil: + cdef xmlerror.xmlError error + cdef int xpath_code + if c_error.message is not NULL: + error.message = c_error.message + else: + xpath_code = c_error.code - xmlerror.XML_XPATH_EXPRESSION_OK + if 0 <= xpath_code < len(LIBXML2_XPATH_ERROR_MESSAGES): + error.message = _cstr(LIBXML2_XPATH_ERROR_MESSAGES[xpath_code]) + else: + error.message = b"unknown error" + error.domain = c_error.domain + error.code = c_error.code + error.level = c_error.level + error.line = c_error.line + error.int2 = c_error.int1 # column + error.file = c_error.file + error.node = NULL + + (<_BaseContext>c_ctxt)._error_log._receive(&error) + +cdef void _receiveXPathError(void* c_context, const xmlerror.xmlError* error) noexcept nogil: + if not __DEBUG: + return + if c_context is NULL: + _forwardError(NULL, error) + else: + _forwardXPathError(c_context, error) + + +def Extension(module, function_mapping=None, *, ns=None): + """Extension(module, function_mapping=None, ns=None) + + Build a dictionary of extension functions from the functions + defined in a module or the methods of an object. + + As second argument, you can pass an additional mapping of + attribute names to XPath function names, or a list of function + names that should be taken. + + The ``ns`` keyword argument accepts a namespace URI for the XPath + functions. + """ + cdef dict functions = {} + if isinstance(function_mapping, dict): + for function_name, xpath_name in function_mapping.items(): + functions[(ns, xpath_name)] = getattr(module, function_name) + else: + if function_mapping is None: + function_mapping = [ name for name in dir(module) + if not name.startswith('_') ] + for function_name in function_mapping: + functions[(ns, function_name)] = getattr(module, function_name) + return functions + +################################################################################ +# EXSLT regexp implementation + +@cython.final +@cython.internal +cdef class _ExsltRegExp: + cdef dict _compile_map + def __cinit__(self): + self._compile_map = {} + + cdef _make_string(self, value): + if _isString(value): + return value + elif isinstance(value, list): + # node set: take recursive text concatenation of first element + if python.PyList_GET_SIZE(value) == 0: + return '' + firstnode = value[0] + if _isString(firstnode): + return firstnode + elif isinstance(firstnode, _Element): + c_text = tree.xmlNodeGetContent((<_Element>firstnode)._c_node) + if c_text is NULL: + raise MemoryError() + try: + return funicode(c_text) + finally: + tree.xmlFree(c_text) + else: + return unicode(firstnode) + else: + return unicode(value) + + cdef _compile(self, rexp, ignore_case): + cdef python.PyObject* c_result + rexp = self._make_string(rexp) + key = (rexp, ignore_case) + c_result = python.PyDict_GetItem(self._compile_map, key) + if c_result is not NULL: + return c_result + py_flags = re.UNICODE + if ignore_case: + py_flags = py_flags | re.IGNORECASE + rexp_compiled = re.compile(rexp, py_flags) + self._compile_map[key] = rexp_compiled + return rexp_compiled + + def test(self, ctxt, s, rexp, flags=''): + flags = self._make_string(flags) + s = self._make_string(s) + rexpc = self._compile(rexp, 'i' in flags) + if rexpc.search(s) is None: + return False + else: + return True + + def match(self, ctxt, s, rexp, flags=''): + cdef list result_list + flags = self._make_string(flags) + s = self._make_string(s) + rexpc = self._compile(rexp, 'i' in flags) + if 'g' in flags: + results = rexpc.findall(s) + if not results: + return () + else: + result = rexpc.search(s) + if not result: + return () + results = [ result.group() ] + results.extend( result.groups('') ) + result_list = [] + root = Element('matches') + for s_match in results: + if python.PyTuple_CheckExact(s_match): + s_match = ''.join(s_match) + elem = SubElement(root, 'match') + elem.text = s_match + result_list.append(elem) + return result_list + + def replace(self, ctxt, s, rexp, flags, replacement): + replacement = self._make_string(replacement) + flags = self._make_string(flags) + s = self._make_string(s) + rexpc = self._compile(rexp, 'i' in flags) + count: object = 0 if 'g' in flags else 1 + return rexpc.sub(replacement, s, count) + + cdef _register_in_context(self, _BaseContext context): + ns = b"http://exslt.org/regular-expressions" + context._addLocalExtensionFunction(ns, b"test", self.test) + context._addLocalExtensionFunction(ns, b"match", self.match) + context._addLocalExtensionFunction(ns, b"replace", self.replace) + + +################################################################################ +# helper functions + +cdef xpath.xmlXPathObject* _wrapXPathObject(object obj, _Document doc, + _BaseContext context) except NULL: + cdef xpath.xmlNodeSet* resultSet + cdef _Element fake_node = None + cdef xmlNode* c_node + + if isinstance(obj, unicode): + obj = _utf8(obj) + if isinstance(obj, bytes): + # libxml2 copies the string value + return xpath.xmlXPathNewCString(_cstr(obj)) + if isinstance(obj, bool): + return xpath.xmlXPathNewBoolean(obj) + if python.PyNumber_Check(obj): + return xpath.xmlXPathNewFloat(obj) + if obj is None: + resultSet = xpath.xmlXPathNodeSetCreate(NULL) + elif isinstance(obj, _Element): + resultSet = xpath.xmlXPathNodeSetCreate((<_Element>obj)._c_node) + elif python.PySequence_Check(obj): + resultSet = xpath.xmlXPathNodeSetCreate(NULL) + try: + for value in obj: + if isinstance(value, _Element): + if context is not None: + context._hold(value) + xpath.xmlXPathNodeSetAdd(resultSet, (<_Element>value)._c_node) + else: + if context is None or doc is None: + raise XPathResultError, \ + f"Non-Element values not supported at this point - got {value!r}" + # support strings by appending text nodes to an Element + if isinstance(value, unicode): + value = _utf8(value) + if isinstance(value, bytes): + if fake_node is None: + fake_node = _makeElement("text-root", NULL, doc, None, + None, None, None, None, None) + context._hold(fake_node) + else: + # append a comment node to keep the text nodes separate + c_node = tree.xmlNewDocComment(doc._c_doc, "") + if c_node is NULL: + raise MemoryError() + tree.xmlAddChild(fake_node._c_node, c_node) + context._hold(value) + c_node = tree.xmlNewDocText(doc._c_doc, _xcstr(value)) + if c_node is NULL: + raise MemoryError() + tree.xmlAddChild(fake_node._c_node, c_node) + xpath.xmlXPathNodeSetAdd(resultSet, c_node) + else: + raise XPathResultError, \ + f"This is not a supported node-set result: {value!r}" + except: + xpath.xmlXPathFreeNodeSet(resultSet) + raise + else: + raise XPathResultError, f"Unknown return type: {python._fqtypename(obj).decode('utf8')}" + return xpath.xmlXPathWrapNodeSet(resultSet) + +cdef object _unwrapXPathObject(xpath.xmlXPathObject* xpathObj, + _Document doc, _BaseContext context): + if xpathObj.type == xpath.XPATH_UNDEFINED: + raise XPathResultError, "Undefined xpath result" + elif xpathObj.type == xpath.XPATH_NODESET: + return _createNodeSetResult(xpathObj, doc, context) + elif xpathObj.type == xpath.XPATH_BOOLEAN: + return xpathObj.boolval + elif xpathObj.type == xpath.XPATH_NUMBER: + return xpathObj.floatval + elif xpathObj.type == xpath.XPATH_STRING: + stringval = funicode(xpathObj.stringval) + if context._build_smart_strings: + stringval = _elementStringResultFactory( + stringval, None, None, False) + return stringval + elif xpathObj.type == xpath.XPATH_POINT: + raise NotImplementedError, "XPATH_POINT" + elif xpathObj.type == xpath.XPATH_RANGE: + raise NotImplementedError, "XPATH_RANGE" + elif xpathObj.type == xpath.XPATH_LOCATIONSET: + raise NotImplementedError, "XPATH_LOCATIONSET" + elif xpathObj.type == xpath.XPATH_USERS: + raise NotImplementedError, "XPATH_USERS" + elif xpathObj.type == xpath.XPATH_XSLT_TREE: + return _createNodeSetResult(xpathObj, doc, context) + else: + raise XPathResultError, f"Unknown xpath result {xpathObj.type}" + +cdef object _createNodeSetResult(xpath.xmlXPathObject* xpathObj, _Document doc, + _BaseContext context): + cdef xmlNode* c_node + cdef int i + cdef list result + result = [] + if xpathObj.nodesetval is NULL: + return result + for i in range(xpathObj.nodesetval.nodeNr): + c_node = xpathObj.nodesetval.nodeTab[i] + _unpackNodeSetEntry(result, c_node, doc, context, + xpathObj.type == xpath.XPATH_XSLT_TREE) + return result + +cdef _unpackNodeSetEntry(list results, xmlNode* c_node, _Document doc, + _BaseContext context, bint is_fragment): + cdef xmlNode* c_child + if _isElement(c_node): + if c_node.doc != doc._c_doc and c_node.doc._private is NULL: + # XXX: works, but maybe not always the right thing to do? + # XPath: only runs when extensions create or copy trees + # -> we store Python refs to these, so that is OK + # XSLT: can it leak when merging trees from multiple sources? + c_node = tree.xmlDocCopyNode(c_node, doc._c_doc, 1) + if not c_node: + raise MemoryError() + # FIXME: call _instantiateElementFromXPath() instead? + results.append( + _fakeDocElementFactory(doc, c_node)) + elif c_node.type == tree.XML_TEXT_NODE or \ + c_node.type == tree.XML_CDATA_SECTION_NODE or \ + c_node.type == tree.XML_ATTRIBUTE_NODE: + results.append( + _buildElementStringResult(doc, c_node, context)) + elif c_node.type == tree.XML_NAMESPACE_DECL: + results.append( (funicodeOrNone((c_node).prefix), + funicodeOrNone((c_node).href)) ) + elif c_node.type == tree.XML_DOCUMENT_NODE or \ + c_node.type == tree.XML_HTML_DOCUMENT_NODE: + # ignored for everything but result tree fragments + if is_fragment: + c_child = c_node.children + while c_child is not NULL: + _unpackNodeSetEntry(results, c_child, doc, context, 0) + c_child = c_child.next + elif c_node.type == tree.XML_XINCLUDE_START or \ + c_node.type == tree.XML_XINCLUDE_END: + pass + else: + raise NotImplementedError, \ + f"Not yet implemented result node type: {c_node.type}" + +cdef void _freeXPathObject(xpath.xmlXPathObject* xpathObj) noexcept: + """Free the XPath object, but *never* free the *content* of node sets. + Python dealloc will do that for us. + """ + if xpathObj.nodesetval is not NULL: + xpath.xmlXPathFreeNodeSet(xpathObj.nodesetval) + xpathObj.nodesetval = NULL + xpath.xmlXPathFreeObject(xpathObj) + +cdef _Element _instantiateElementFromXPath(xmlNode* c_node, _Document doc, + _BaseContext context): + # NOTE: this may copy the element - only call this when it can't leak + if c_node.doc != doc._c_doc and c_node.doc._private is NULL: + # not from the context document and not from a fake document + # either => may still be from a known document, e.g. one + # created by an extension function + node_doc = context._findDocumentForNode(c_node) + if node_doc is None: + # not from a known document at all! => can only make a + # safety copy here + c_node = tree.xmlDocCopyNode(c_node, doc._c_doc, 1) + if not c_node: + raise MemoryError() + else: + doc = node_doc + return _fakeDocElementFactory(doc, c_node) + +################################################################################ +# special str/unicode subclasses + +@cython.final +cdef class _ElementUnicodeResult(unicode): + cdef _Element _parent + cdef readonly object attrname + cdef readonly bint is_tail + + def getparent(self): + return self._parent + + @property + def is_text(self): + return self._parent is not None and not (self.is_tail or self.attrname is not None) + + @property + def is_attribute(self): + return self.attrname is not None + +cdef object _elementStringResultFactory(string_value, _Element parent, + attrname, bint is_tail): + result = _ElementUnicodeResult(string_value) + result._parent = parent + result.is_tail = is_tail + result.attrname = attrname + return result + +cdef object _buildElementStringResult(_Document doc, xmlNode* c_node, + _BaseContext context): + cdef _Element parent = None + cdef object attrname = None + cdef xmlNode* c_element + cdef bint is_tail + + if c_node.type == tree.XML_ATTRIBUTE_NODE: + attrname = _namespacedName(c_node) + is_tail = 0 + s = tree.xmlNodeGetContent(c_node) + if s is NULL: + raise MemoryError() + try: + value = funicode(s) + finally: + tree.xmlFree(s) + c_element = NULL + else: + #assert c_node.type == tree.XML_TEXT_NODE or c_node.type == tree.XML_CDATA_SECTION_NODE, "invalid node type" + # may be tail text or normal text + value = funicode(c_node.content) + c_element = _previousElement(c_node) + is_tail = c_element is not NULL + + if not context._build_smart_strings: + return value + + if c_element is NULL: + # non-tail text or attribute text + c_element = c_node.parent + while c_element is not NULL and not _isElement(c_element): + c_element = c_element.parent + + if c_element is not NULL: + parent = _instantiateElementFromXPath(c_element, doc, context) + + return _elementStringResultFactory( + value, parent, attrname, is_tail) + +################################################################################ +# callbacks for XPath/XSLT extension functions + +cdef void _extension_function_call(_BaseContext context, function, + xpath.xmlXPathParserContext* ctxt, int nargs) noexcept: + cdef _Document doc + cdef xpath.xmlXPathObject* obj + cdef list args + cdef int i + doc = context._doc + try: + args = [] + for i in range(nargs): + obj = xpath.valuePop(ctxt) + try: + o = _unwrapXPathObject(obj, doc, context) + finally: + _freeXPathObject(obj) + args.append(o) + args.reverse() + + res = function(context, *args) + # wrap result for XPath consumption + obj = _wrapXPathObject(res, doc, context) + # prevent Python from deallocating elements handed to libxml2 + context._hold(res) + xpath.valuePush(ctxt, obj) + except: + xpath.xmlXPathErr(ctxt, xpath.XPATH_EXPR_ERROR) + context._exc._store_raised() + finally: + return # swallow any further exceptions + +# lookup the function by name and call it + +cdef void _xpath_function_call(xpath.xmlXPathParserContext* ctxt, + int nargs) noexcept with gil: + cdef _BaseContext context + cdef xpath.xmlXPathContext* rctxt = ctxt.context + context = <_BaseContext> rctxt.userData + try: + function = context._find_cached_function(rctxt.functionURI, rctxt.function) + if function is not None: + _extension_function_call(context, function, ctxt, nargs) + else: + xpath.xmlXPathErr(ctxt, xpath.XPATH_UNKNOWN_FUNC_ERROR) + context._exc._store_exception(XPathFunctionError( + f"XPath function '{_namespacedNameFromNsName(rctxt.functionURI, rctxt.function)}' not found")) + except: + # may not be the right error, but we need to tell libxml2 *something* + xpath.xmlXPathErr(ctxt, xpath.XPATH_UNKNOWN_FUNC_ERROR) + context._exc._store_raised() + finally: + return # swallow any further exceptions diff --git a/intelliaide/vendor/lxml/html/ElementSoup.py b/intelliaide/vendor/lxml/html/ElementSoup.py new file mode 100644 index 0000000..c35365d --- /dev/null +++ b/intelliaide/vendor/lxml/html/ElementSoup.py @@ -0,0 +1,10 @@ +__doc__ = """Legacy interface to the BeautifulSoup HTML parser. +""" + +__all__ = ["parse", "convert_tree"] + +from .soupparser import convert_tree, parse as _parse + +def parse(file, beautifulsoup=None, makeelement=None): + root = _parse(file, beautifulsoup=beautifulsoup, makeelement=makeelement) + return root.getroot() diff --git a/intelliaide/vendor/lxml/html/__init__.py b/intelliaide/vendor/lxml/html/__init__.py new file mode 100644 index 0000000..2cee9f4 --- /dev/null +++ b/intelliaide/vendor/lxml/html/__init__.py @@ -0,0 +1,1927 @@ +# Copyright (c) 2004 Ian Bicking. 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 Ian Bicking 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 IAN BICKING 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. + +"""The ``lxml.html`` tool set for HTML handling. +""" + + +__all__ = [ + 'document_fromstring', 'fragment_fromstring', 'fragments_fromstring', 'fromstring', + 'tostring', 'Element', 'defs', 'open_in_browser', 'submit_form', + 'find_rel_links', 'find_class', 'make_links_absolute', + 'resolve_base_href', 'iterlinks', 'rewrite_links', 'parse'] + + +import copy +import re + +from collections.abc import MutableMapping, MutableSet +from functools import partial +from urllib.parse import urljoin + +from .. import etree +from . import defs +from ._setmixin import SetMixin + + +def __fix_docstring(s): + # TODO: remove and clean up doctests + if not s: + return s + sub = re.compile(r"^(\s*)u'", re.M).sub + return sub(r"\1'", s) + + +XHTML_NAMESPACE = "http://www.w3.org/1999/xhtml" + +_rel_links_xpath = etree.XPath("descendant-or-self::a[@rel]|descendant-or-self::x:a[@rel]", + namespaces={'x':XHTML_NAMESPACE}) +_options_xpath = etree.XPath("descendant-or-self::option|descendant-or-self::x:option", + namespaces={'x':XHTML_NAMESPACE}) +_forms_xpath = etree.XPath("descendant-or-self::form|descendant-or-self::x:form", + namespaces={'x':XHTML_NAMESPACE}) +#_class_xpath = etree.XPath(r"descendant-or-self::*[regexp:match(@class, concat('\b', $class_name, '\b'))]", {'regexp': 'http://exslt.org/regular-expressions'}) +_class_xpath = etree.XPath("descendant-or-self::*[@class and contains(concat(' ', normalize-space(@class), ' '), concat(' ', $class_name, ' '))]") +_id_xpath = etree.XPath("descendant-or-self::*[@id=$id]") +_collect_string_content = etree.XPath("string()", smart_strings=False) +_iter_css_urls = re.compile(r'url\(('+'["][^"]*["]|'+"['][^']*[']|"+r'[^)]*)\)', re.I).finditer +_iter_css_imports = re.compile(r'@import "(.*?)"').finditer +_label_xpath = etree.XPath("//label[@for=$id]|//x:label[@for=$id]", + namespaces={'x':XHTML_NAMESPACE}) +_archive_re = re.compile(r'[^ ]+') +_parse_meta_refresh_url = re.compile( + r'[^;=]*;\s*(?:url\s*=\s*)?(?P.*)$', re.I).search + + +def _unquote_match(s, pos): + if s[:1] == '"' and s[-1:] == '"' or s[:1] == "'" and s[-1:] == "'": + return s[1:-1], pos+1 + else: + return s,pos + + +def _transform_result(typ, result): + """Convert the result back into the input type. + """ + if issubclass(typ, bytes): + return tostring(result, encoding='utf-8') + elif issubclass(typ, str): + return tostring(result, encoding='unicode') + else: + return result + + +def _nons(tag): + if isinstance(tag, str): + if tag[0] == '{' and tag[1:len(XHTML_NAMESPACE)+1] == XHTML_NAMESPACE: + return tag.split('}')[-1] + return tag + + +class Classes(MutableSet): + """Provides access to an element's class attribute as a set-like collection. + Usage:: + + >>> el = fromstring('') + >>> classes = el.classes # or: classes = Classes(el.attrib) + >>> classes |= ['block', 'paragraph'] + >>> el.get('class') + 'hidden large block paragraph' + >>> classes.toggle('hidden') + False + >>> el.get('class') + 'large block paragraph' + >>> classes -= ('some', 'classes', 'block') + >>> el.get('class') + 'large paragraph' + """ + def __init__(self, attributes): + self._attributes = attributes + self._get_class_value = partial(attributes.get, 'class', '') + + def add(self, value): + """ + Add a class. + + This has no effect if the class is already present. + """ + if not value or re.search(r'\s', value): + raise ValueError("Invalid class name: %r" % value) + classes = self._get_class_value().split() + if value in classes: + return + classes.append(value) + self._attributes['class'] = ' '.join(classes) + + def discard(self, value): + """ + Remove a class if it is currently present. + + If the class is not present, do nothing. + """ + if not value or re.search(r'\s', value): + raise ValueError("Invalid class name: %r" % value) + classes = [name for name in self._get_class_value().split() + if name != value] + if classes: + self._attributes['class'] = ' '.join(classes) + elif 'class' in self._attributes: + del self._attributes['class'] + + def remove(self, value): + """ + Remove a class; it must currently be present. + + If the class is not present, raise a KeyError. + """ + if not value or re.search(r'\s', value): + raise ValueError("Invalid class name: %r" % value) + super().remove(value) + + def __contains__(self, name): + classes = self._get_class_value() + return name in classes and name in classes.split() + + def __iter__(self): + return iter(self._get_class_value().split()) + + def __len__(self): + return len(self._get_class_value().split()) + + # non-standard methods + + def update(self, values): + """ + Add all names from 'values'. + """ + classes = self._get_class_value().split() + extended = False + for value in values: + if value not in classes: + classes.append(value) + extended = True + if extended: + self._attributes['class'] = ' '.join(classes) + + def toggle(self, value): + """ + Add a class name if it isn't there yet, or remove it if it exists. + + Returns true if the class was added (and is now enabled) and + false if it was removed (and is now disabled). + """ + if not value or re.search(r'\s', value): + raise ValueError("Invalid class name: %r" % value) + classes = self._get_class_value().split() + try: + classes.remove(value) + enabled = False + except ValueError: + classes.append(value) + enabled = True + if classes: + self._attributes['class'] = ' '.join(classes) + else: + del self._attributes['class'] + return enabled + + +class HtmlMixin: + + def set(self, key, value=None): + """set(self, key, value=None) + + Sets an element attribute. If no value is provided, or if the value is None, + creates a 'boolean' attribute without value, e.g. "
" + for ``form.set('novalidate')``. + """ + super().set(key, value) + + @property + def classes(self): + """ + A set-like wrapper around the 'class' attribute. + """ + return Classes(self.attrib) + + @classes.setter + def classes(self, classes): + assert isinstance(classes, Classes) # only allow "el.classes |= ..." etc. + value = classes._get_class_value() + if value: + self.set('class', value) + elif self.get('class') is not None: + del self.attrib['class'] + + @property + def base_url(self): + """ + Returns the base URL, given when the page was parsed. + + Use with ``urlparse.urljoin(el.base_url, href)`` to get + absolute URLs. + """ + return self.getroottree().docinfo.URL + + @property + def forms(self): + """ + Return a list of all the forms + """ + return _forms_xpath(self) + + @property + def body(self): + """ + Return the element. Can be called from a child element + to get the document's head. + """ + for element in self.getroottree().iter("body", f"{{{XHTML_NAMESPACE}}}body"): + return element + return None + + @property + def head(self): + """ + Returns the element. Can be called from a child + element to get the document's head. + """ + for element in self.getroottree().iter("head", f"{{{XHTML_NAMESPACE}}}head"): + return element + return None + + @property + def label(self): + """ + Get or set any

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�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

gw$4?Q0hV8oyn6md``N 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

JMh`rF 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�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μOU>|jXr8y6E~FM?0=|_QcC^> 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%0A>ffL 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®DYe4qIskA)zl5Z+Zjx2!aIG6 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

Tv=T<6pZ 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