From 4087681b38b0cb3baadba1fd40cafed3144c3ac8 Mon Sep 17 00:00:00 2001 From: YQisme <1398757912@qq.com> Date: Mon, 27 Nov 2023 20:01:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/CODE_OF_CONDUCT.md | 76 - .github/CONTRIBUTING.md | 1 - .github/ISSUE_TEMPLATE/config.yml | 9 - .github/ISSUE_TEMPLATE/error-report.md | 46 - .github/ISSUE_TEMPLATE/feature_request.md | 21 - .github/ISSUE_TEMPLATE/general_questions.md | 7 - .../reimplementation_questions.md | 67 - .github/pull_request_template.md | 25 - .github/workflows/ci.yml | 27 + .github/workflows/deploy.yml | 28 - README.md | 242 +-- .../advanced_guides/conventions.md | 0 .../advanced_guides/customize_dataset.md | 0 .../advanced_guides/customize_losses.md | 0 .../advanced_guides/customize_models.md | 0 .../advanced_guides/customize_runtime.md | 0 .../advanced_guides/customize_transforms.md | 0 docs/{zh_cn => }/advanced_guides/data_flow.md | 0 docs/{zh_cn => }/advanced_guides/datasets.md | 0 docs/{zh_cn => }/advanced_guides/engine.md | 0 .../{zh_cn => }/advanced_guides/evaluation.md | 0 docs/{zh_cn => }/advanced_guides/how_to.md | 0 docs/{zh_cn => }/advanced_guides/index.rst | 0 docs/{zh_cn => }/advanced_guides/models.md | 0 .../{zh_cn => }/advanced_guides/structures.md | 0 .../{zh_cn => }/advanced_guides/transforms.md | 0 docs/{zh_cn => }/article.md | 0 docs/assets/favicon.jpg | Bin 0 -> 715300 bytes docs/assets/logo.jpg | Bin 0 -> 715300 bytes docs/en/Makefile | 20 - docs/en/_static/css/readthedocs.css | 6 - docs/en/_static/image/mmdet-logo.png | Bin 32181 -> 0 bytes docs/en/advanced_guides/conventions.md | 111 -- docs/en/advanced_guides/customize_dataset.md | 433 ----- docs/en/advanced_guides/customize_losses.md | 126 -- docs/en/advanced_guides/customize_models.md | 412 ---- docs/en/advanced_guides/customize_runtime.md | 391 ---- .../advanced_guides/customize_transforms.md | 49 - docs/en/advanced_guides/data_flow.md | 1 - docs/en/advanced_guides/datasets.md | 1 - docs/en/advanced_guides/engine.md | 1 - docs/en/advanced_guides/evaluation.md | 1 - docs/en/advanced_guides/how_to.md | 222 --- docs/en/advanced_guides/index.rst | 34 - docs/en/advanced_guides/models.md | 1 - docs/en/advanced_guides/structures.md | 1 - docs/en/advanced_guides/transforms.md | 42 - docs/en/api.rst | 161 -- docs/en/conf.py | 116 -- docs/en/dataset_zoo.md | 1 - docs/en/get_started.md | 297 --- docs/en/index.rst | 63 - docs/en/make.bat | 35 - docs/en/migration.md | 1 - .../migration/api_and_registry_migration.md | 1 - docs/en/migration/config_migration.md | 819 -------- docs/en/migration/dataset_migration.md | 1 - docs/en/migration/migration.md | 12 - docs/en/migration/migration_faq.md | 1 - docs/en/migration/model_migration.md | 1 - docs/en/model_zoo.md | 358 ---- docs/en/notes/changelog.md | 603 ------ docs/en/notes/changelog_v2.x.md | 1681 ----------------- docs/en/notes/compatibility.md | 178 -- docs/en/notes/contribution_guide.md | 1 - docs/en/notes/faq.md | 240 --- docs/en/notes/projects.md | 57 - docs/en/overview.md | 54 - docs/en/stat.py | 64 - docs/en/switch_language.md | 3 - docs/en/user_guides/config.md | 612 ------ docs/en/user_guides/dataset_prepare.md | 310 --- docs/en/user_guides/deploy.md | 173 -- docs/en/user_guides/finetune.md | 96 - docs/en/user_guides/index.rst | 41 - docs/en/user_guides/inference.md | 440 ----- docs/en/user_guides/init_cfg.md | 161 -- docs/en/user_guides/label_studio.md | 256 --- docs/en/user_guides/new_model.md | 290 --- .../en/user_guides/robustness_benchmarking.md | 110 -- docs/en/user_guides/semi_det.md | 325 ---- docs/en/user_guides/single_stage_as_rpn.md | 176 -- docs/en/user_guides/test.md | 303 --- .../en/user_guides/test_results_submission.md | 182 -- .../en/user_guides/tracking_analysis_tools.md | 86 - docs/en/user_guides/tracking_config.md | 112 -- .../user_guides/tracking_dataset_prepare.md | 247 --- docs/en/user_guides/tracking_inference.md | 55 - docs/en/user_guides/tracking_train_test.md | 229 --- docs/en/user_guides/tracking_visualization.md | 47 - docs/en/user_guides/train.md | 456 ----- docs/en/user_guides/useful_hooks.md | 105 - docs/en/user_guides/useful_tools.md | 660 ------- docs/en/user_guides/visualization.md | 91 - docs/{zh_cn => }/get_started.md | 0 README_zh-CN.md => docs/index.md | 0 .../migration/api_and_registry_migration.md | 0 .../{zh_cn => }/migration/config_migration.md | 0 .../migration/dataset_migration.md | 0 docs/{zh_cn => }/migration/migration.md | 0 docs/{zh_cn => }/migration/migration_faq.md | 0 docs/{zh_cn => }/migration/model_migration.md | 0 docs/{zh_cn => }/model_zoo.md | 0 docs/{zh_cn => }/notes/compatibility.md | 0 docs/{zh_cn => }/notes/faq.md | 0 docs/{zh_cn => }/notes/projects.md | 0 docs/{zh_cn => }/overview.md | 0 docs/{zh_cn => }/user_guides/config.md | 0 .../user_guides/dataset_prepare.md | 0 docs/{zh_cn => }/user_guides/deploy.md | 0 docs/{zh_cn => }/user_guides/finetune.md | 0 docs/{zh_cn => }/user_guides/index.rst | 0 docs/{zh_cn => }/user_guides/inference.md | 0 docs/{zh_cn => }/user_guides/init_cfg.md | 0 docs/{zh_cn => }/user_guides/label_studio.md | 0 docs/{zh_cn => }/user_guides/new_model.md | 0 .../user_guides/robustness_benchmarking.md | 0 docs/{zh_cn => }/user_guides/semi_det.md | 0 .../user_guides/single_stage_as_rpn.md | 0 docs/{zh_cn => }/user_guides/test.md | 0 .../user_guides/test_results_submission.md | 0 .../user_guides/tracking_analysis_tools.md | 0 .../user_guides/tracking_config.md | 0 .../user_guides/tracking_dataset_prepare.md | 0 .../user_guides/tracking_interference.md | 0 .../user_guides/tracking_train_test_zh_cn.md | 0 .../user_guides/tracking_visualization.md | 0 docs/{zh_cn => }/user_guides/train.md | 0 docs/{zh_cn => }/user_guides/useful_hooks.md | 0 docs/{zh_cn => }/user_guides/useful_tools.md | 0 docs/{zh_cn => }/user_guides/visualization.md | 0 docs/zh_cn/Makefile | 20 - docs/zh_cn/_static/css/readthedocs.css | 6 - docs/zh_cn/_static/image/mmdet-logo.png | Bin 32181 -> 0 bytes docs/zh_cn/api.rst | 161 -- docs/zh_cn/conf.py | 118 -- docs/zh_cn/index.rst | 67 - docs/zh_cn/make.bat | 35 - docs/zh_cn/stat.py | 64 - docs/zh_cn/switch_language.md | 3 - mkdocs.yml | 106 ++ 141 files changed, 264 insertions(+), 13028 deletions(-) delete mode 100644 .github/CODE_OF_CONDUCT.md delete mode 100644 .github/CONTRIBUTING.md delete mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/ISSUE_TEMPLATE/error-report.md delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 .github/ISSUE_TEMPLATE/general_questions.md delete mode 100644 .github/ISSUE_TEMPLATE/reimplementation_questions.md delete mode 100644 .github/pull_request_template.md create mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/deploy.yml rename docs/{zh_cn => }/advanced_guides/conventions.md (100%) rename docs/{zh_cn => }/advanced_guides/customize_dataset.md (100%) rename docs/{zh_cn => }/advanced_guides/customize_losses.md (100%) rename docs/{zh_cn => }/advanced_guides/customize_models.md (100%) rename docs/{zh_cn => }/advanced_guides/customize_runtime.md (100%) rename docs/{zh_cn => }/advanced_guides/customize_transforms.md (100%) rename docs/{zh_cn => }/advanced_guides/data_flow.md (100%) rename docs/{zh_cn => }/advanced_guides/datasets.md (100%) rename docs/{zh_cn => }/advanced_guides/engine.md (100%) rename docs/{zh_cn => }/advanced_guides/evaluation.md (100%) rename docs/{zh_cn => }/advanced_guides/how_to.md (100%) rename docs/{zh_cn => }/advanced_guides/index.rst (100%) rename docs/{zh_cn => }/advanced_guides/models.md (100%) rename docs/{zh_cn => }/advanced_guides/structures.md (100%) rename docs/{zh_cn => }/advanced_guides/transforms.md (100%) rename docs/{zh_cn => }/article.md (100%) create mode 100644 docs/assets/favicon.jpg create mode 100644 docs/assets/logo.jpg delete mode 100644 docs/en/Makefile delete mode 100644 docs/en/_static/css/readthedocs.css delete mode 100644 docs/en/_static/image/mmdet-logo.png delete mode 100644 docs/en/advanced_guides/conventions.md delete mode 100644 docs/en/advanced_guides/customize_dataset.md delete mode 100644 docs/en/advanced_guides/customize_losses.md delete mode 100644 docs/en/advanced_guides/customize_models.md delete mode 100644 docs/en/advanced_guides/customize_runtime.md delete mode 100644 docs/en/advanced_guides/customize_transforms.md delete mode 100644 docs/en/advanced_guides/data_flow.md delete mode 100644 docs/en/advanced_guides/datasets.md delete mode 100644 docs/en/advanced_guides/engine.md delete mode 100644 docs/en/advanced_guides/evaluation.md delete mode 100644 docs/en/advanced_guides/how_to.md delete mode 100644 docs/en/advanced_guides/index.rst delete mode 100644 docs/en/advanced_guides/models.md delete mode 100644 docs/en/advanced_guides/structures.md delete mode 100644 docs/en/advanced_guides/transforms.md delete mode 100644 docs/en/api.rst delete mode 100644 docs/en/conf.py delete mode 100644 docs/en/dataset_zoo.md delete mode 100644 docs/en/get_started.md delete mode 100644 docs/en/index.rst delete mode 100644 docs/en/make.bat delete mode 100644 docs/en/migration.md delete mode 100644 docs/en/migration/api_and_registry_migration.md delete mode 100644 docs/en/migration/config_migration.md delete mode 100644 docs/en/migration/dataset_migration.md delete mode 100644 docs/en/migration/migration.md delete mode 100644 docs/en/migration/migration_faq.md delete mode 100644 docs/en/migration/model_migration.md delete mode 100644 docs/en/model_zoo.md delete mode 100644 docs/en/notes/changelog.md delete mode 100644 docs/en/notes/changelog_v2.x.md delete mode 100644 docs/en/notes/compatibility.md delete mode 100644 docs/en/notes/contribution_guide.md delete mode 100644 docs/en/notes/faq.md delete mode 100644 docs/en/notes/projects.md delete mode 100644 docs/en/overview.md delete mode 100755 docs/en/stat.py delete mode 100644 docs/en/switch_language.md delete mode 100644 docs/en/user_guides/config.md delete mode 100644 docs/en/user_guides/dataset_prepare.md delete mode 100644 docs/en/user_guides/deploy.md delete mode 100644 docs/en/user_guides/finetune.md delete mode 100644 docs/en/user_guides/index.rst delete mode 100644 docs/en/user_guides/inference.md delete mode 100644 docs/en/user_guides/init_cfg.md delete mode 100644 docs/en/user_guides/label_studio.md delete mode 100644 docs/en/user_guides/new_model.md delete mode 100644 docs/en/user_guides/robustness_benchmarking.md delete mode 100644 docs/en/user_guides/semi_det.md delete mode 100644 docs/en/user_guides/single_stage_as_rpn.md delete mode 100644 docs/en/user_guides/test.md delete mode 100644 docs/en/user_guides/test_results_submission.md delete mode 100644 docs/en/user_guides/tracking_analysis_tools.md delete mode 100644 docs/en/user_guides/tracking_config.md delete mode 100644 docs/en/user_guides/tracking_dataset_prepare.md delete mode 100644 docs/en/user_guides/tracking_inference.md delete mode 100644 docs/en/user_guides/tracking_train_test.md delete mode 100644 docs/en/user_guides/tracking_visualization.md delete mode 100644 docs/en/user_guides/train.md delete mode 100644 docs/en/user_guides/useful_hooks.md delete mode 100644 docs/en/user_guides/useful_tools.md delete mode 100644 docs/en/user_guides/visualization.md rename docs/{zh_cn => }/get_started.md (100%) rename README_zh-CN.md => docs/index.md (100%) rename docs/{zh_cn => }/migration/api_and_registry_migration.md (100%) rename docs/{zh_cn => }/migration/config_migration.md (100%) rename docs/{zh_cn => }/migration/dataset_migration.md (100%) rename docs/{zh_cn => }/migration/migration.md (100%) rename docs/{zh_cn => }/migration/migration_faq.md (100%) rename docs/{zh_cn => }/migration/model_migration.md (100%) rename docs/{zh_cn => }/model_zoo.md (100%) rename docs/{zh_cn => }/notes/compatibility.md (100%) rename docs/{zh_cn => }/notes/faq.md (100%) rename docs/{zh_cn => }/notes/projects.md (100%) rename docs/{zh_cn => }/overview.md (100%) rename docs/{zh_cn => }/user_guides/config.md (100%) rename docs/{zh_cn => }/user_guides/dataset_prepare.md (100%) rename docs/{zh_cn => }/user_guides/deploy.md (100%) rename docs/{zh_cn => }/user_guides/finetune.md (100%) rename docs/{zh_cn => }/user_guides/index.rst (100%) rename docs/{zh_cn => }/user_guides/inference.md (100%) rename docs/{zh_cn => }/user_guides/init_cfg.md (100%) rename docs/{zh_cn => }/user_guides/label_studio.md (100%) rename docs/{zh_cn => }/user_guides/new_model.md (100%) rename docs/{zh_cn => }/user_guides/robustness_benchmarking.md (100%) rename docs/{zh_cn => }/user_guides/semi_det.md (100%) rename docs/{zh_cn => }/user_guides/single_stage_as_rpn.md (100%) rename docs/{zh_cn => }/user_guides/test.md (100%) rename docs/{zh_cn => }/user_guides/test_results_submission.md (100%) rename docs/{zh_cn => }/user_guides/tracking_analysis_tools.md (100%) rename docs/{zh_cn => }/user_guides/tracking_config.md (100%) rename docs/{zh_cn => }/user_guides/tracking_dataset_prepare.md (100%) rename docs/{zh_cn => }/user_guides/tracking_interference.md (100%) rename docs/{zh_cn => }/user_guides/tracking_train_test_zh_cn.md (100%) rename docs/{zh_cn => }/user_guides/tracking_visualization.md (100%) rename docs/{zh_cn => }/user_guides/train.md (100%) rename docs/{zh_cn => }/user_guides/useful_hooks.md (100%) rename docs/{zh_cn => }/user_guides/useful_tools.md (100%) rename docs/{zh_cn => }/user_guides/visualization.md (100%) delete mode 100644 docs/zh_cn/Makefile delete mode 100644 docs/zh_cn/_static/css/readthedocs.css delete mode 100644 docs/zh_cn/_static/image/mmdet-logo.png delete mode 100644 docs/zh_cn/api.rst delete mode 100644 docs/zh_cn/conf.py delete mode 100644 docs/zh_cn/index.rst delete mode 100644 docs/zh_cn/make.bat delete mode 100755 docs/zh_cn/stat.py delete mode 100644 docs/zh_cn/switch_language.md create mode 100644 mkdocs.yml diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md deleted file mode 100644 index 92afad1c5ab..00000000000 --- a/.github/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,76 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, sex characteristics, gender identity and expression, -level of experience, education, socio-economic status, nationality, personal -appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual attention or - advances -- Trolling, insulting/derogatory comments, and personal or political attacks -- Public or private harassment -- Publishing others' private information, such as a physical or electronic - address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at chenkaidev@gmail.com. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq - -[homepage]: https://www.contributor-covenant.org diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md deleted file mode 100644 index c6696262b4a..00000000000 --- a/.github/CONTRIBUTING.md +++ /dev/null @@ -1 +0,0 @@ -We appreciate all contributions to improve MMDetection. Please refer to [CONTRIBUTING.md](https://github.com/open-mmlab/mmcv/blob/master/CONTRIBUTING.md) in MMCV for more details about the contributing guideline. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 56bbd88fddf..00000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,9 +0,0 @@ -blank_issues_enabled: false - -contact_links: - - name: Common Issues - url: https://mmdetection.readthedocs.io/en/latest/faq.html - about: Check if your issue already has solutions - - name: MMDetection Documentation - url: https://mmdetection.readthedocs.io/en/latest/ - about: Check if your question is answered in docs diff --git a/.github/ISSUE_TEMPLATE/error-report.md b/.github/ISSUE_TEMPLATE/error-report.md deleted file mode 100644 index 9dbd3ff165b..00000000000 --- a/.github/ISSUE_TEMPLATE/error-report.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -name: Error report -about: Create a report to help us improve -title: '' -labels: '' -assignees: '' ---- - -Thanks for your error report and we appreciate it a lot. - -**Checklist** - -1. I have searched related issues but cannot get the expected help. -2. I have read the [FAQ documentation](https://mmdetection.readthedocs.io/en/latest/faq.html) but cannot get the expected help. -3. The bug has not been fixed in the latest version. - -**Describe the bug** -A clear and concise description of what the bug is. - -**Reproduction** - -1. What command or script did you run? - -```none -A placeholder for the command. -``` - -2. Did you make any modifications on the code or config? Did you understand what you have modified? -3. What dataset did you use? - -**Environment** - -1. Please run `python mmdet/utils/collect_env.py` to collect necessary environment information and paste it here. -2. You may add addition that may be helpful for locating the problem, such as - - How you installed PyTorch \[e.g., pip, conda, source\] - - Other environment variables that may be related (such as `$PATH`, `$LD_LIBRARY_PATH`, `$PYTHONPATH`, etc.) - -**Error traceback** -If applicable, paste the error trackback here. - -```none -A placeholder for trackback. -``` - -**Bug fix** -If you have already identified the reason, you can provide the information here. If you are willing to create a PR to fix it, please also leave a comment here and that would be much appreciated! diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 7bf92e8c912..00000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: '' -labels: '' -assignees: '' ---- - -**Describe the feature** - -**Motivation** -A clear and concise description of the motivation of the feature. -Ex1. It is inconvenient when \[....\]. -Ex2. There is a recent paper \[....\], which is very helpful for \[....\]. - -**Related resources** -If there is an official code release or third-party implementations, please also provide the information here, which would be very helpful. - -**Additional context** -Add any other context or screenshots about the feature request here. -If you would like to implement the feature and create a PR, please leave a comment here and that would be much appreciated. diff --git a/.github/ISSUE_TEMPLATE/general_questions.md b/.github/ISSUE_TEMPLATE/general_questions.md deleted file mode 100644 index f02dd63a809..00000000000 --- a/.github/ISSUE_TEMPLATE/general_questions.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -name: General questions -about: Ask general questions to get help -title: '' -labels: '' -assignees: '' ---- diff --git a/.github/ISSUE_TEMPLATE/reimplementation_questions.md b/.github/ISSUE_TEMPLATE/reimplementation_questions.md deleted file mode 100644 index 83607ac3402..00000000000 --- a/.github/ISSUE_TEMPLATE/reimplementation_questions.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -name: Reimplementation Questions -about: Ask about questions during model reimplementation -title: '' -labels: reimplementation -assignees: '' ---- - -**Notice** - -There are several common situations in the reimplementation issues as below - -1. Reimplement a model in the model zoo using the provided configs -2. Reimplement a model in the model zoo on other dataset (e.g., custom datasets) -3. Reimplement a custom model but all the components are implemented in MMDetection -4. Reimplement a custom model with new modules implemented by yourself - -There are several things to do for different cases as below. - -- For case 1 & 3, please follow the steps in the following sections thus we could help to quick identify the issue. -- For case 2 & 4, please understand that we are not able to do much help here because we usually do not know the full code and the users should be responsible to the code they write. -- One suggestion for case 2 & 4 is that the users should first check whether the bug lies in the self-implemented code or the original code. For example, users can first make sure that the same model runs well on supported datasets. If you still need help, please describe what you have done and what you obtain in the issue, and follow the steps in the following sections and try as clear as possible so that we can better help you. - -**Checklist** - -1. I have searched related issues but cannot get the expected help. -2. The issue has not been fixed in the latest version. - -**Describe the issue** - -A clear and concise description of what the problem you meet and what have you done. - -**Reproduction** - -1. What command or script did you run? - -```none -A placeholder for the command. -``` - -2. What config dir you run? - -```none -A placeholder for the config. -``` - -3. Did you make any modifications on the code or config? Did you understand what you have modified? -4. What dataset did you use? - -**Environment** - -1. Please run `python mmdet/utils/collect_env.py` to collect necessary environment information and paste it here. -2. You may add addition that may be helpful for locating the problem, such as - 1. How you installed PyTorch \[e.g., pip, conda, source\] - 2. Other environment variables that may be related (such as `$PATH`, `$LD_LIBRARY_PATH`, `$PYTHONPATH`, etc.) - -**Results** - -If applicable, paste the related results here, e.g., what you expect and what you get. - -```none -A placeholder for results comparison -``` - -**Issue fix** - -If you have already identified the reason, you can provide the information here. If you are willing to create a PR to fix it, please also leave a comment here and that would be much appreciated! diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md deleted file mode 100644 index 7a9f0d901f4..00000000000 --- a/.github/pull_request_template.md +++ /dev/null @@ -1,25 +0,0 @@ -Thanks for your contribution and we appreciate it a lot. The following instructions would make your pull request more healthy and more easily get feedback. If you do not understand some items, don't worry, just make the pull request and seek help from maintainers. - -## Motivation - -Please describe the motivation of this PR and the goal you want to achieve through this PR. - -## Modification - -Please briefly describe what modification is made in this PR. - -## BC-breaking (Optional) - -Does the modification introduce changes that break the backward-compatibility of the downstream repos? -If so, please describe how it breaks the compatibility and how the downstream projects should modify their code to keep compatibility with this PR. - -## Use cases (Optional) - -If this PR introduces a new feature, it is better to list some use cases here, and update the documentation. - -## Checklist - -1. Pre-commit or other linting tools are used to fix the potential lint issues. -2. The modification is covered by complete unit tests. If not, please add more unit test to ensure the correctness. -3. If the modification has potential influence on downstream projects, this PR should be tested with downstream projects, like MMDet or MMPreTrain. -4. The documentation has been modified accordingly, like docstring or example tutorials. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000000..ba88e56d9ab --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,27 @@ +name: ci +on: + push: + branches: + - master + - main +permissions: + contents: write +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: 3.x + - uses: actions/cache@v3 + with: + key: mkdocs-material-${{ github.ref }} + path: .cache + restore-keys: | + mkdocs-material- + - run: pip install mkdocs-material + - run: pip install mkdocs-jupyter + - run: pip install jieba + - run: pip install mkdocs-git-revision-date-localized-plugin + - run: mkdocs gh-deploy --force \ No newline at end of file diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml deleted file mode 100644 index f575061468b..00000000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: deploy - -on: push - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - build-n-publish: - runs-on: ubuntu-latest - if: startsWith(github.event.ref, 'refs/tags') - steps: - - uses: actions/checkout@v2 - - name: Set up Python 3.7 - uses: actions/setup-python@v2 - with: - python-version: 3.7 - - name: Install torch - run: pip install torch - - name: Install wheel - run: pip install wheel - - name: Build MMDetection - run: python setup.py sdist bdist_wheel - - name: Publish distribution to PyPI - run: | - pip install twine - twine upload dist/* -u __token__ -p ${{ secrets.pypi_password }} diff --git a/README.md b/README.md index 09e20cf70fe..ccf1cbf0082 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,14 @@
|
5}9Y!%;6ytQ!_Yjt-!I6125g*E@ zm3FaH+lq{e`PUmZneL~h#*fOExb&skDD3>({1# ztwyxv>+M=Dq)C)G%YVFonWX}hkD0Ok ZsVmO&t8VGle^TY z>^o`4pr&-=wK<#drWOYo=~H6FKQj~CwIEO!dI~m=$EOr+JwK%)e1~lTxaYlCw~yu~ zph(GJJ?lm&_9zGIU6d(vJF}jw`Bjkk!Ou==UtIA`RR=hy`d4qE$Lcp2Ij+mWc79A! z-MakE`?&uA6O;WbleV{eiIz27vm6h^*QaQ9D+ yE$ST$HjKi;$`}Jkl&t zuXB@tKQmfSvK}(BihAgeWcU+j4~KMpU&U9eutyt50dH1D10RSL<6bP+CD*lktH};p zS1tM1r~FCQKj9kicAep<4%gZqZM+ X3lC!8l!Ht^YtWs%uv>$X#Of% g?Pw`4cBStC+R7YrB+*MoS!5rCp+UU&Ct}9kWO==y}LB?qyUIrt3>&dRQuH&DEaK zIsX6@>H_;wc+}=N&Ii`9HuuFZB$9b2nlY1_(zQogZcOlTn2BO*Ij|il+v!I%zJ{@} z!21i&(v*782YOm$YynB r<%dQ1lRy$DY+{7&A!{^uVnvJ95khDBOuM)|aPwj5y-E9XC%A zpyL2lEhfi-+rDeB@a~H)sUu3bOGtTVJZH85`iki0jWu)2tIbzLM#`FPs!Jiw#G^37 z+>V*Y)Ky5lKY6WO4>&WH N*&F*+yj-J3*wEQ&qPjPsnV;D^G%_86c zIj$T=E}aT)t$A4-@TXC=OAial^*GOlKL};wc_Ubma?(n6h4;;Fc!tgOTjQkY8=V)4 zZrygTp#b#YgWkK(7kGm}@SZFsyf!%3I@7Fn=%Gpa z` O4yE9i~j(JFML1vS8t)nvPZUiw*LTGaV`k_0sJ~wYph>b zXwmsVth0AuL9QzE#*)mY3rxiyOs^G?*Ah&`l3BXuzdXj~Q?DkTueti33nGOSl2%=g zn&ZSOz>qLH)@{bFSpzd;cOZXS#kjsmKoU3tyien2#>jj-Yc`)@CT`tI?jOUEgZ%5y z!{O>;rm54_v*=uDVWZD3g8X&;pi@n0v|T1`*9tbvDxbU55&7556YBR`tnDn0%t_Ag z$2Etl>oV#$jU Enab6kVp9`j*$iabi8=gba zd*D}0wl_X5)|S@VZI;S^d2rc0cL4g=k&cx-Os#DZ^!O|fv!=QAlRl#OYw@F1zqm=z zA1Qg2nEbx{{cGMlEAc`f5o$h2P*s17V;!sF{{XYz*=ez9T0HLrBZqj-3!XAh;w#bq z7saS}Wy8JXlR3dEPalsJ^0TQdGrbwvE{53bj-5(wa*d_X`qx~B39QVLV8xH-EAqqk z%qJTIup>@}1H0SD#apT3#;JBihm) zLi1j6;JFRF#Djy1f5cx9n_V@4a2ftkE6}NcQpR&bsrrT=HFWZ~8n0AxJ}dFl?sXi1 za5=9y)I33Xe8d?_C!jS~S-NY9%I`QFo_`w8RwQD+rk)m^G_=(Gmm8Z`tlH+#k?t6_ zOKv{&*)FAZ!Ey)tJPJZRX^oC6qTLbTxyoCzHe%e9nn6-5CAk3Ng1F$)BINpPHuGH~ z-9MEHIA$Gwwe%muj|luPh8V7IHF#%`46;nipQU{1G_n3{AolrGL( zMJZN`jAvu)om1nNfP5JVhf0MdDln@G1{{0lysyRIwJx)%?@cn^I|zCLrzh*k;=Cu! z+njP~jK! cA58Yjaa z5o?=FI&`r{-}2H$A%3~7**+^;Y4G`4K8ppnZ!$m}pTLUewJ(U8_N2#k^FX~e!IU4N zt6st%7Ocst(%D$+7vQzFlB*`Y;tNYe>e0h0v;P3!C%sE1qwwRxaN^G1 6SLSbX@}Z zYUF-6tPMlPTF$AHKA|^1!y6SJmTM8a&<-m%QgYp!MujM9qCKRRLQBZfH+{@Wrj|Rg z(t>eK+&>!4uBQG%zpq+rZRd;{Mrt?bgF}e58djUgr|zb+4)r#$dW9;}cP%+_z^55l zqTQwS)tiU6xt0eUf{sOcAB28Bc)!A>0^hyNE5_MavHo@DVTh-z5 R$iI7^#=k!qy7v`5 zj;(v9NUdviECd| QQuUup&3-w!Xlz@yCEZBO=Fj1%{*_kC}7Uxlb5=$e#~9 zT+MZ52livPIDr%`c70b71$s3uyv|jfP;ZwNMaB6ZQ>Of2_%Gx60&3b<_FU3%S($J% z^h)Tz;gtRz{6&N99vRo5CAkr+oc%Gjxi1s`z;iKo(KSVL{3|0WlloVYc#Gf{#b1Rp znXRC_c$DNln>+qE0=cStb){-o^gSv#sx_MWwjss#XRG*&_5<++v$4~zBbhpm3D4 n&xN5{SwSCO=Nu2Fg23}pWRN|(a_0JR6j4~N$a72KCnMxA51goDSq73{ti{{Vu6 zo0$>~e@PC90i;p}Jx(!Ps+JO~vs|q79xF1Uu9BKQMAbYks%Xy3d#Bu5y6{AZMP&JZ zoqn9@J~;SE@ruoS# sYW_jcx`5qo}>pR?+0;#Ts_NUC~N;y#>H_Ipvt zD8pS!;y=cov3@l_mN?>^BR@)9h4PSX$mW_?YMQXno-ipqhWgR3Vq7~Sn{}rv;}tX7 zpG+Ev##gm1dYRh8nY_irbm?6`g8m|SgTS(bqiS |-i4>Z?vSKBVw}?XBW%ETnpzNq-pN`HWBLiuCAyHhd!ZuWTUkW{n-C%!3A4<2_G& z=Drn<;HwUCQ~k4cIOe^2d7PTHXx#GZWYi_CH_Fefyixli=$<0Zr|{dw=!L#zvyx>) z>x`HG06DG>`$hQE@P0rifv>FN?}0ENd*-}%N%5|)pv;e9e>JNq$T6`PuW#@N?U&+> z1IxD7rvBHm92B@>c y7l{`Eiyut3I{R0T zd{F(5{Cn_#wyWX!q}24K`GecBX2(!=fzuW4(Z 3Gy zcIjV9{4V{aG!GU!Ti-}6COmDBWLH%1_&h@QG-sEHuf!QzyI$5GdGi$49wG3Z!H)XY zWeRY2E(h|in?v!YpQtEH+hC`mVVu|5ddGzPHRGE$Ed&<|!~JAobNs8oz9W9j^J(oR z=7cw|Uni;jE0$PV)K%c_iNj}@EW%2jB0kQ4fyK$DSl%d?PPqW}^4lNdNgb-LQgzsR zXBid5-|4!yhi?i>l3Prt?zaNBG=CTwfQI!j{W9I_D9Sgqqh@<`DAlJM!d%h(PKMgX z=Ehy|IF>HB93SUh1)RoBp@t1**;|XCvRcivJ-7q$HLV@J?VE*`6(s%FQb_#qUDV}c z#Kc;!sj+7mfyO{+o9_yJ^G9oZBaO2JoUgaH^Q^eF0;s``#s>vkii&Ce)rH-Xrz(2Z z>Pb5@&h~R}(AU(gcEXY{!5?+2bHV;2eZt=1w*kN=vTpSRxU-5AzzPBS;8spsO}P@Q zW-RA5647X8;<0das&CNsUlHhb`o)UMioSe&s| ~|RGN*CE|Z)uhMz(^82srSB>;x3ySqcA-Wg*UjgQPLcF*_NW#Q^w zM$8PCOr)GQ_|>g;GKEiLHyP~AMzgin?Mk|-JyiRShx4m?CYvOXv_$Wo9zJj41B$@Z zE+4{o$sE5lGIFh)_pRM0P!ZlkcN=CIIBt4 !W-?x{|#I9WTz>|40eAiichJh#RQ z*DI}fPiqpXkzScSuz%hs1l38c#LI%Yt#mxvILg$eb zzI)fLYdRQaW{r94T&>-KRv?OUf|AtwN;uDHYLRwlfOw0*Y>e#^^ISE}jmDQZ?-7O$ zb6-ziX)ACK%gu2 `f(22uXIsTGSQv% JDo4?SO>vaw>|UR<15r26Vz=zP_zbtYD#As?hk%B_FBg zHK-+|wMR#y>hdp#EH0pJw^nlet^UXu1M@ZPkn5k@+H4Y@OC}rNj2ij-!xJ=~8@)l* zMn~sfso 4B_AoUs6@8jMPd&r0XC}9dzcbDLEqH&+yE3BYHvFr`ZsBNU zWFrQ?qWFbmmzr#cZckeI!^GD9P0={VY}d?Y*mX{P$ooDU#k%-d##^Hq`HX>7SoOtR z-SV)iQgkN1MyBW8M`62-CgaUFcIqo6Q#CZU+{x>^`qz1K#yvJu(-8jvTH!QU_stOX zb^c l=UN)FvuFxf{Jv`u z`3mJ!8pCg1m9{XjJoGe4gQ-OC)B`YL#y zStzcD%+Ch7B`a#rr+f+GnIV{37WpSnFnV#ouI)9EXKgEP`?x)8!Tc+#6`tJZ41;gJ zGhObls~GG^ErP Y z<<^;Pt6QV(S6LJ= `|*wyyN)`F`p@=%_|^Tj5B3(bDz2dq%NsWV zlny@}W4(ONX@_!a5leI1;p(dZr 9tKECA@;@}DQmyG#*}p3EABlepbzcB#l3L!v!9l{wf&uzh z10+Ooiu%4~C3w4|3Uy;s;SpOnr!B)m;gI2nA-nO=)GBuI)`p{-msE79^XS#lCEfJb zj9z(KSN`)Hnx@U|nsd}=rE|(oOzMnO5=d->H*6Y&jMR kMg%Zpn?4B%;9ad(s*j< z+G MOH#W_Wm*rjJ7Sr>BiS#n;HAg*@zP&4vjke GMOG8 JuRfp!K8p&*az2WXT(8f;+-jY}O zqmlifG=H+{&|a$GN;YTdll^PQ+pT>m@#9PTcZELCqc00&emE8LTUF$hy{-*kribU= zBjxJ{oyu`mQ%Q|s)}VTwv-GH#b6-GyUmeQQ4Xh7J`eWdI@YMVsZOO?`mmh{}=9z_i zKkVbId3uG`p3TDz!|@ Dd3UYc*@i |xovN4hJ@~ToK=DT&&})5^ZfN7WgPKP$fN02 zTc$@^uF7-Gdoey*J&XDs;j`2&q#SIKTk;^+)qW ;qV_S<%anBaZ@{{S;yb*o$Mgfadc*U&;rr8OjQ`!|QhN}Reo z9K6YreQLWcU6^&MtTM-rE1pNaOpR04m9hmd1HBmxm5-6pCPvZkS5wiK72-Z2w);M% zIuVbUk@%YTAbJoh%YGqg!rxRf4w4N1Rl|#o;dAMDa%x1Vr^jL0#~8&YudOa=zO@X}F&NbhoK)tbm1-ntbw3RCW2X3`#$DLkAn*8pTKnt5 zdWV^B1eyEGpVGfLw0omze++|yt`F;9c6=$ wXG$3%R1_-<%5g^Td{bNZ_syO8bHZ7uqe&y9|ay$KY$^FNhjTSn3xG zw;NcB^l=fiS`HDe 5a4nT>CI&@=aI#H^>}j4quZk{Xd#~T9B^rW{ZxeYu5)1K zm4B@w_w}c9^{YlKdi^LTA4(L^-kobm>2g_Aj=lN*w4bFZ>VBmDrjsVTW8NK#N>N5A z9f5gZ1zL@8qN?DQ6>xphde==A)QN|^HNI+AVU9kO&Rg2Hld+eOcl4y7^`z-s=7?@N z%_iRc{VClCp`;WxJuDul7^e@WO$rNVzj~4w%dq1HoFmNAT}f`qwoPjZEJ>@Y$n~U+ zHh>2Pr7NF7Ud&f2QAdv|oXxStM>n{{SYGFDHXe`;m a^1=Nf0b(M zllfM~5aHzDdXBj@)d<;K`j|mcqK;csx@)V;n~diz<*)MMxBeFRd}`h&7qhNxw8+}! z%MLdvB}eD{tC+fFfCL co6E_+FOe?A7+RKi1V=wpsarm0;!qZcz z>Pu*!o^b{)N}9vc`06_^POS599C(6H5qN^`@s49=!hJA5!ntWpSh|xeM_Q>N>s;09 zIkzTy7#uWk)T2s02wSZ*w;1nEZl3hh-`2co=+9U|#VsdqdQscbvFl=m6m6r^(w$l% zJp!HAx4kq}_OLb0!bF2C#{!oxGf8zJ>!Lc(hk7Wux@*ao_i^&M>Be(MiuGfvYAh7~ z>OYlzI~w1;xR1j=8%PjsxRF2uziihGSe|?JCcd_{u(TsWJH5`_MPFk vWPBTd}n6>2ojIILNmpJHoR_YiT-Z)vdn!;JdYZL)N( zlf$+$UtPr%XkFd5g 5#Sg;82E12Q@^!ay?*d!&c%TxNdSUJ&>vd#O&-EO3ff7p z_?qQS+b-a*j3B|l1L=>-zB@P1so+z#uc7T>a+%^{qa8b#eh>Ix2A2TT^@UiGes3+f z1M6IO#Shv&?Hu@b!jXoOPu=c^IXUBwYmxY^@vl OHX?;8FBK*k-3jJ739^cQxMc5wR sZ#_Ifq=idwnqPg-#w^arhefuTuDlu6$V6g_<+NU|RwO;A1^V9@wvW@a~as;J**y z!o(3bNZmShsjq-oNGDfWzJ*e)8uxVeT}*$99y(tO*vTP$%eM%*=Q!*7*T#M*@g2s$ zt4(t=mMq!kx}S?56QuEmxpyQ-ZM1A+jdRD!N|X5FyzbpvR^5#E&3)ccmi ePgg0xs&M+nT?u4MtJaRn z)Oj!i^RVEbU)H@}z+M!y(^eBWY1s8%pRQ}l{2O&G#lV_=OCP!h1$(cAQ_hwtAAmbo z#O5`pN<5K1+Y3!eI<20er0BXet&iF#w#Em`7$-lSZuoaaO>$u1C7q!D7RK++xs7jL zvCwqb=DL{?Lg(f<>0ds4O#P{!Oj#{-X}qTUt0J~PD*5al7Z;7GXvXOC@ezEIo1MK+ zr@k(HYSMlZXfF`Dh|jQuRbWnWfKTIJoSzjwDc<}>@gvVX%{XS ?EnH5LcAU@KDAQ&?Dp~$Nj$ BRW=sM>qMlUi4T{% zALo{A0f9_!T-D1xDr>-507PD_#{(6!r=1@~CFhN`8TzW^s8juUrx@Q>!L+nSUYDWX zYZ?13yUM-YRFFN%t=n${?T~%C`Ws~K6~S-HtKWFq{^1N!80{hG76b@>go?qM;z^jZ z$j*IOl4)~7I||b~2`BKbfgllEKBqeKz4C&as(e({Zms^yXpmT2V*|>GL;nEZKxVkz zrM>9#$?L^0X)TAyw|kP@UtQiYY3`<+pZVz_Z|hJ6BAvAGDcdSFmg5>JPeD!!DR`rl z2*Ax7I@Fzgsif_zvH~_!%``SDT>6TM$j`MaphE5q^`^HT#*_irQMcyxHJ3L+dAbeG zX#75u{iDAWxaXcJa}17=m!(Kotu>UMl=lJ>lyWiaQtiiXX&py7;;)ye3mky^A6k ~ecf-`T_1NOXV=F=&nT{KpJ^ujUoPU7-0BhX`#@lTCM_~*S zH_BO;aOaLm6}RI50NLl^@5LoI)(suJ(sSlp$@25+0j?k759}*BFL~h`*zRI)nGh1k z*BP%T7atTqXS N<7YR$0&Q0SIyF&$W9|t9bHaVRhXeH?WmQ?XpZyB)^rjW8x?5 zZLj!dH@eXnYIdqKwQ;z9Ij;uPw0qqS>8-ErWVMxeD(Xk;iu(8A&+Ua{sd;vq)NN>b z7vpc^&3azF;g19SVzgP=?Jk^-B#nV@%RcqTJhKgmT-aIJ_B-hDW@(hkQqFMg$N7=@ z 87cON7X=Kxby6!gVdxYBPUj5vj!HsmtnnyPK?7p!b3oi`0!bSgEW zEfWbXV`_o4{m11Qsl~OyY TSPfe^3^{o4kg>7o2G(?)hS#4o0(xwpOd* zyNhiL#f|-;qsjZfHcm?CkC>CwpVGc%xUuqE3my$Zu@*SRYfqk+T@ODQhoz2-RTjO^ z(BFyQvqyqHIB2h~_+!a}{$$>*1_H4oJdAtS!rnjlJ>q|bx}(LY*v)Smwi05vQ_oRd z=fNM3y63`OTHGw{KA2k)z|2V7o^i+d#eMG{rQpBXFTkfO4CX}VAO}Vu{x$94>%y(0 zEzgIoJZ4QRRD9IW&X0!w03W Q6*wZh-0IMFZs^9oQ C(NE#hPp{37!^NU~#!*UO^tBw)bntRjKoF`sPbnP^#}9osR*~ zbtlr?$0;Bag01!KUH+S_G%#!%Nl$j-YI2Y}-mQ zg!Jjt^EJwN^G^QHy%WSS44wVzEA7t{pD%4o>eaS-rgRIb3y5Q#2r=XXTQS0y)}|(4 z1Fy|(c)$hr zrkuI1ndj!XeQDw%t#n(ozTA#6wp2K+yIbhBD>EAmIN*<`dh^d0Yd`Re_}PK^Y_1OP zVbFg=Te@xO7rtV*?xb9+4u_25w2aorCMyEv7}Z-#QZF57?|Gt ~WxTk1SHavdgZ!( ad8uXY#h+8Uo$6V1;e72G3<#b(Y za>7*KbbSTk`` 0zGF@8< z7rk!^ic0ADyml6*7OT+6dtNt{+&UWPHT?~6(!#k@&-m9 pZ-1~)EEd1aKQ8`z~@sKEY4y$i(Jx$zyW7a>4xysC~XyA4r&UUYtE z4knlTT|7sXjL!$&Df>;kzSLzupeDT&!FP@Qg>HIm;C`mOmqU%C)FlJ&ZExgj(fk85 zPvN;k4XqsBSo{F5OE0OUW9od)eMKnFUHMM;SA*@^OOP}2 i1dO2I z8s@()r(L BZwXZjDIpKozmDw9Q44=X-*pI#Z+|8e_HOP zQL1uh6>4kRN65+Nc57Qom|O0YjFnT5#2#xskSlD@wO*DpZ)TmIOprV9d8{dWubG`y zHC(HyNn~~fq;1aJvv)Oe*poD5bzXlept;XZD@N5=$r`Bnoa5<}jMlWL?_A2YKXTSR z7r|FXX?)oZ4*cV_bRI16FpX9K-#=6MV~XYUITK5>c~2`J89mr_u5#~GZ9?(pcH=yM zO8RNzKCg#RPgZ<2EUjX(?-3>L#QF>2KB@N2G@aas$K(Zd%i?MDUlBobZ7GU%JA*0b zAd2(9g)8 JNqg02rTA ziq6ATaF>rB Lw{eOHH1GcaT_@p67oS?AITFVn<;mi`2Uhq)CZFI~ zJWB?n1 &!E*KH9UWK8m-3!Rfzi 98J=-^tLN7HJ2U$9mQx_HrW^JUW6W} zn~06z(bPcOmztRTy*gDGS%y6-&zti4*KzT-QIojkkna`r{{ZZx;${+EX_7ui-ck4g zUoES2J?qo{0{EC{emv96kG46a5w~HEy#7_ Y B!-;k)P4b;~Q1I4L6Z_c;EwmL{LIp*VL(x0GVOr |*0}J*H;B1t 9$B%jj0aG5~C9E$r3##Sk>coyw&9JRS+@AF{dzC*gVF-XXI zqis3%I5qR!Jy!H(N$(bZqvCE8mmNzP6{Se8z@~W3MAbWYs6UFnz9-|b(b@F~#@7e6 zeGmIP>Vj)4n>IgpkUqJuoxg~8uT=OCsvA!gEIGo+y#53K0Iyy)Z%5kUC**zS2V%ad zoluqZlegY+-?bNp8&C1i+SPF#%9hW$IQ~Ms67n7Kx}I_UE9@`Y*Ge*Jb{ERLq?jl0 zC;HdPSMcq;WgQuEKPt;9sOw=Peuv!gHXrJlw9?T%e)ER7Ql#UpQ)N8nwY3P$b2{zs zip_5M72PCFIcS+(hB1zLp)$1T2cV_~`G@6P%^i2 JKBOD904Mb6n``j@KhK8}m~)9`zHc&T73tfm>{V^ue#IKW5(%8;cLI zvt^f&^x#*@vJI>adf&h=5r1X)uGTheB#pHCcQx07tL$sWN6GO%2kZH5NF}OQUnB2d z58Qt5Y3Rcrn8kQM#?2LNH7kOnhGJ{kG#jrmRD;GdTzAHOC+$|NKHQQqpTfS%yi~U8 zej~z|$y3C8IUgcxmf^#I1#wpiwb*<0uSwTz%reTXJO2Pm;593MDrV0B=bHJd%FO-# zi_sL_cf#w`kyvsm&JWY3D{%*0jz<-heICn(7{cfLYske$_L1x1rS?i*qoAYGgV*{} zezoSE!j26;^rljd^=QqKQP+-{;*fWx&N=D-0PCtoOsIHc-;?~!EjNwF2R#1(T6+F< z;-2^@siU_o#xqG8 31cDDO+#Be`4>Z42AKO;Jl @n1$mvxZ z=K5D$`Dy5kV%(L;o8Ftdo+->f8fSk_)yFAan;~|d{V2!fN3AY5bfh*X>rdOz L7 z@9R>pd {3b_^RssyCifU4SX~I00~EoZ60O+070=oYMq#T zzbW}t`)BzY$oQ?}A>z*zTuBRVvb4+=!`K`aA5)s_wTs{QS3eC!q)+8*I>Fj_`H?Y} zVsX#{2jYDz#pZFA9Y8qGuQln_wjT`|Uuo*k&ajl;V~?IbUj%*F{;Z9gB$9ck+cdP! zb6y=ubUwNu!lNRjsM@%vqBI-)RPW_U-!#9CbCfPRQqoe^y$Ku!E2Z!~s>`Z*&byXA zewa1Q1tfquB;vaGRkTeV0=CJf89uy^{ gKCuYC9u;kdN5lf=4&A+7EI0M#Q8yx1jp{42 UfwzuNKj$^s`1{0HI`*cP zXmev1?%=mhNh6Ho@~(^F{{X=&*`XJji+!8U`I&ggTwssVzZtEFg*vjt*46Ysb<1-4 zI2 7Y=w3o96yJg9b`<~xg^j&jQ z(taK3u5Fe$iY`3H#(uf4kiIZ}&_+v%qq39Fn4iDYeSVeUsbVuq{{XvJ{EwxljC84c zNG@1@EWhK=ik6-OwtpxrxAKA`O!LU ro zHOu$8xs|1vj(H@GdjVdf@O#2b51Xi6N4{))ihFeA*V^Imw6fYxtd-_`!l{VOF&@q? z(L0}npAYT4CuFx*2hF>2xr<|uZ`P^&c=6<#SA;KCGEm(!K!j(w&O!VutNzxG2yPLV zX!6?)k< s&mM6<}-D<*}1a_)BAT7XspDQb(``zUL7x zXs9hNd?r~4^UkdG U%GS?=5W4-vEzXS4nyCipRq?`SX>?{uMbj^7f Bjm9-`uNFNv2?pxwGB~ZVo76y-rQGvad4Iv zp-}BrTz;I^PK|36G899Qzj?pHt9YAH^5ZBDF >KC6@{kdEzVO~y=#l7$s_|< z>`CcU+%bHfwFPdvA2U{?sW&D!JoTpmnohXyR;=wB {hAK4qOhPIJ0he{~X! zt2Y4q3eUK@d6|((RL(n&m1=1wxmAgzV-j$ylaI=wW!N_3nrwIMQ$#!fD)pSpYUPY# zM#ca fe+B+_7;m}gx29Mw6ryNL7h79OIhGK~KK;y#prDw(4I zkVe+1{Ij1*Vj4SlsTYp;H61y9`K5MAI?3Lqx4fF(Ws(_MCtgD-Ak}5`rz+x{Wa93f zh-o!vsy&zC-|aQyKLW`bN2tkjY^VKPjmI6jSJHkI{jfYO@ebK^zZYroqqy7VG<%0W z_^*PMiu9>G)4>M4dO4+fHd57jpDm8z{3a^$g5;NYpLY1G_Gb8h@i`jr!+N|nH% y6(^@x2GfTHl6ej!ipIn%$J=KbWq6xO32&=1>JW53YZ7oP(}pJpiIv~EBj=@q&hpr}#!C@Tw6`kwZ}y_`Z-b^5 zo+Gn)V+RL%5Z{?K>l#nRj|%)qwF@J{vbg3ch$rdAUSEkn3jQ={<{f)ax3#%tz>@_? z&wssKXNW&zm@jQxQ1E89vZH*-7?D@6IL_l<{R;T1D$#1BPm`@Is}(z9smlvjze4AT zz6 Qh vndS>d*s zx)s15%BnPKMm(^RlJhf`ey1yAsY;x?t%>3ACW9+xD~ovn>9v%f=T^VrTj^4-$r6_J zQV;a5J68AwtQ?*7LzD0O_El6A6jVUEOBmff0qK%%Q0bAQ8+{`klWve^#71{X_lPmN zyBRt1^X&Wl1=|nXbzk>+9>?o7TV`S_);!$sC$b+HMlu}KrMrQxknsl<_lkEG=kUBM zrooh3(P*qsNg4@0Hc_rtNg!$_vO}Q$pWY}nn9zdbOfC^W;SQF}KRo(9R`sw6IqYG+ zAgNexlvUd0ORAcFQD*)Q6V$_dT%Rt;iiDs`W7tUoao9F$-cWA!$m~QKuGsrB{p<$w z)9pul-|9WKtT$wuIwMWzPIv@is!8bCmz4Rn_M&^B4E|#S_8`CnK4Js;5sZ5m9x& z4G(HHDKBt5bbfT%4}&|S%NGvF68}80+?x_iC^cBdc* -d~R> zUc(`s4K(#>h>Dx0|3K(nx2M fV?3<6L#rVvh`0<+&O_Zsl$6I{N1! z#(%_TIF;QCV6j7Fk^3gaxE@ZWTZ;4DRj`gVjb2XkwV?3amg=TIMote$?dv3=J{vQU z#nAcreQ@$~j{IDh&_j0L58A3;{|D>c;dG8$gQ?=^g1zaODWJ?YIy4DwgH Cp+s;=ZJq<`l z<8HC&n;Wn*W6prh?pvRnUX3TiYt*{)f-I8`)eT=o_ikqJ3qezRM!)sn4-7InCVg|U zCpBE#u?~=8#8(mO+N-!ald3_c*_>BwZGMY9R|ye&S)ibpRV@i{mPY^Zj#7!-2(-c> zgqZ*Di7tN+DsJBhOlK{(N#$mm r?`XNOVEEu{&+59CYd~QWROZYf-_14uM;jx~Tqdg8y9-cdw z^%l?DPI0$rl^-KFw!1$lL~dihndthL{!Koh(bl~j?X1UZF1qcHj!WJZ&)Z2g!>|3T zSrk^Wbnt9G5LyVTrv4RHZ)F_gs?zbMlWN ??kS!K^!Cq+aq6J&~bclu$wz M`>App_)1aiT zo;ViYXd2}gYO4ILUgQ8b`Q<%+%8}ns&*-O17n)-~dv#)9#+M}sA$%ywT;yhYAOsGT z8QQaz8kB_&^m!i{c+Dr)J6s(L8>_`-=a1`arw9m$xXc<(l)%wng1S4%xe}nPsdF)7 zD0p5g|N5un*A3@SpF5caG(CEtO{a(Lntzv6ge)3jUC>wqkceN%@3A>Q?bz0&1CvI7 z1x9d+Y=ijFW0jg-annU$Wtm(4D7lEF4y3E;0ay1tUucS|89gfMu?x>zgeU&7p*5TC zHwP)GOuxyfEVrM!8k$k)`OX7t6J2Ak@KPuMFmGj6WgChBR;XiKX87N-p!2}nT|0Ew zG;>fUGzaP&n~n_vvkr0r>2rEeUJ*`DlM2ja-5H?B{j_@A*N0n!k~!NT6^pBZYlbbw z0md7Oe;xm+2(gl#9O<{yfcTa{8g@)+INNy3i|Gdv(uK1A)jn*$jO6_f)P|slkkZ|0 z6l mEkSS75Q|tkCV)lN01z!pxP^FrhAhKk3S r+OJy zE3_t^Vk!o{PhqDuI$MYPhB*Ox>}>?Ll%6h$$R&Lk?@i>fz};Rg@X3JI2PdPWS*gY7 zZx({X(sgyavjKxCka7L|Ue_7(*T>VJIjNDsr$fKY#%Q=C?u!Sv-Lzw9Jlr>79?S1i zu^gkyc1D8EWLg=83pfd; o^C*bl031N!WG z^hq>V+mgPIn-b)nXV!gH@SB7xp2PC5C{E
^UVqVW?vSN@2!_}Tf4;Y7$Ega19@ zvh%=)h@pp0qt4)4!FqDtdzDOEKtI;k(f+L-jEfY*=j0KWn~#ES@xOKS)}wujM<<9F zJp{`N=+jr9&X6IB{7@!5t<_J&P(3r_yPl2|S=W4TXs`T!)aKt$&W_csG?74UOi;WO zb6v9$KF)3{H`)^77A#dzX}sVnW7hL>%1>Jzsg5tAXyMvs8EcBGr;99ho*Dn~kc5-n z&ZtqMpa@9_kQntbI7aY _1us{7VeHhOG0M0cO(g>;??Wf^9WlRoau%YA7V5Ymi( z-W)RZ0Rs`?T-gQQPOo5Ik{t~qSzi2*PJEjgpccSFQ;Y%t{CR=E5w>B@e>$a?*aJ$) zOX^dq;oN*DEg=iR@&?&~5k*QkOd!j+TiA}Du^UwCqKFt#w;!7^aDHbW!((l^6f(FG zOGq1H=RJvOZ!4B54qw&0KbXCW)Y;PXsyZDXzG0PptqEFRY`49$UxW8dl=^&}`QU%} zv& O@M6(e`NI$7bW@H+xl~8~UB``U^1Ww<3KwyjHZa8t3p=ttN^JQc0IKN19HY z_o^ZCZ?b|U^oP^qeY~^?{bwe|uS?`LsxEbCIXLHPttv}mG*| mVTt+w&Atk|Za>LcjKE^RC-T}S7ZOPF$2?np2HuI?GPa)UF$I<8T+Q(k&C*WT3; z{~LE$WWTy&XWYqTneEjYIDMZppA6@; 1j;IyU&jv zvi |kfIg4cOfza?F=|S* z!cpC&9^^aX3e=_3Edf)L35RPbtaS`!fF~mGA6aS|G=<{3?mU&Y|88|!8cRLL{NwaU zVtnJ0!}@d}9P^fFn7qA)LhAeyQ|SV=0m*lyo8i?#Qdzx)LvSpJ)jHjpOPy=?0T<&8 zBYfu#)M#01to@AbV(*#Bp^LEsGdjbrRaM@c&IEldshIYiBnl#w#klz;Q0@xnUd=s- zsy3+BwsNUtFyzd8C-bR!!j!q@D3zG-O-{2l`f+8ARMTHG=F#45=dQG933NH>3hw=C z4R4FMPa=lH)`i$OH4? b 8M))ccsQUrU0AM9Zgfe&MUvMD}$>x|LKhi za_rj4+*qXZ93PVZA*jN4=J2`#>oxm!^oQV*R_nz#fBz}D`Z|&U^UJ8g+i!T7a>6?n z8?7iTP=+NC< (aR8k=r{hBwjat*o%GZ9J;D+3=2Vf} zo1LQlf|n%k&&Yf;kyBQBcXg(v!`XEPGaN|}Wzs5!h9SF#cTwT00a;+Boa7wJ_c=~- zR?Mz9=^(7Il47aMXn9e-`?=@_TBO{XDsH)@BSJ6Rtkhcb7ad~jmx(|c$+<}Q* mX!-lRN%8(4ys;a3HS3Ll-or&CYJ|(w;I#;dgq5{LOX3Sw zT&e)TXkD51Rtn<_b)eYQO60ADop0~rXNzqIeTX@uVthW;G1=wicI(jT^z7rWe|lGm zYmBJ|Lk-G>r7|Lc50WjYl#yV252_%s3MgwDsK0T$6*S=*EEStrAuuu4z?80Wpb-cX zLn9QuCX>{d8K&st3D|C^{}0?VMS5Pi_ZYArZK->Z5dD8t7+>fZ8?guUyLKZs%uB)B z2JvpNa5C%|1IX*W>mzMba1LkOsE`wAIRnf`Tga#N0>;ebd}uj>#KPCJSIj_?{n?j0 z%3jDN0N|~|#6d4j!K5F`3LjziAH?X{RDFWZ*VKLoWNC+Rhp*E(;enoGK1a{SFJpNw zbrg%1rap(ULY*`q8hNz%z85cSiukDY{2$y1kYs?iVOi?cA(N_o$ngC-d(c@_Q*x3{ z(^s}!<)vIDJQMlXig>F{Dzq)A`?R-kuf{~>Eb|AjlL|{7CeKS n% zaragfcz#N?HgC)39g|b#W;3~M) wj&jZ+%$6mOkg@99o{vTK{-nA8d*a|-I!69Z zKyL>TN9F>)R#*>8ve?tx*YiuOrmu@0>MxdgLVn5g%eYx?Go2>VnaZKH^`##9mj3fk zw@>d6mO96;k{${kNuZ}q?F?qU6Gaa cB@9o*MY!2Yt z7J0PT>w9Z9&DB2VeU!;?Un=eby1+~44(sgWve{X2rb7XQ+x+TMrg!E4TiWj(wE}|= z 9{nS!qf^Qo`K`F(Rj4w%^nAWv|713S zJ&faDe1EX|s%OcJAj9 nE(3$}$`rYn$t6Pq4g1LRi*>)-wKYiPhn?>8-j1M(->(M! zPEMCtnZJ$qNx+6M9S3Mb+?V;$g78pxA14^~_XvH7Red?AnF7TynC;oCcL~{<*#Cwy zhVm*8a|ev{P`dDAnX|wr;V8JD9T2>+q;^2OKZG7l=M=56>GbPdC3z}Pqjxs45Yd8c z6%JOGReFFVk)=^@|9ZYMmP4ZY@OLi#QnsU=_Rg-Dg77R+7{=+GVF0R9J` z;_>$NW>?N4%Z_E!&QPzdAa=%hb=Ke7s hVV05-1kI_Tq(vZM!=)XQ<0)R~j)JRD!JNcsy z&n$cDZke2I>j>?;d*fDQ>$i!8;iy*&!zMJZL CX|L5tN^yeg_lIE#47SMxa<7Y)nfU+N(mU-pX=~JkJ>T@5w8; zKE})Q5j*=T!Fc~XH>@#{9nVSq3BGvNI&2!J@};zKBYg(z06?9FMbb4%{G&hHH0#x% zdbDm~huJRKTMQ2$lnUP1)Ye+-6*N#dOv>Xc%wF9CJ}4=Ht`X7Z1h~oR$LSfh3w7t( zwyQXktql9Tlr%ijeQYuy(1BYqc~~}$NyB)_q_9*i$~l$b;-qytzi>AmM8r)75w(^G z09_%^*T| 0 zqG<%{a_ReHACVEchn~Kg9YK8IH7$=(yq^t{0JpyJfTXe|#b?n~>-CpxAtB9sr*D6{ z@g5tvKfF~c>iw8eoUya5(L&*Sn}e#h aCH5E)-K{wy~EhoQ)#VL8|8ZJegfIOVR)=aOu- zavna((nav n+j2+;FF)ym-IYxt$Orc?4Lg)693=lC00C?B?gZ9b!#> zb&1Wz4|&cBqwsjwM0TQ(s`es?!f9$&Ps=oF9Gp1W53XH}j)XYbmGe$kVKcsre-u0A zXQl3S$7ei2uh} F1Iov}_)AT-tz}~C=_I5@)hxIQ zl@NDPCKMe-_kl~VS;hQSe}zKxnC{!?BZmZ2q{~@3{G}_hj3S79fa;OBbVsnR6r=EU z^33X2WRM?~p45m9Dt97D*p9xhz#2~KI*O(6O6xIF1IAkk(eR$f*S4ssuW?7nonbE~ zkKLE{qZYs{)oA C7!FYU~* z)cUKPDquHML;}}H2_X1w-4tx=PKrmvgto7pTPel^EANXa^H$#%bvRy<$vost5;=;V z8DBfMo?&5jV?1Bfe~s!AHfJf{8@};UokE8Nd%(leu^gtpbvl>o^Wa^#$S`HJz|{!e z(8~1${I5G9tt~A@tHiu#bzDExu`By2; 7Il$0zE1#R+Db-T#o z X{$`FDY^i1Z>CmF>BWACdT(T2Ydb$Yn(YHQ#LY@u@B+D zxyzgx6!O}ZAd!fzoAuV{o7@xrv`0Uetq&|@H^}g-w%Ta)6eO+dzN=A?Myssej2o%x zE9%)Zo(ournw;Ob-Rcwm#bi55CKePB+^@H%oUTMv_$w8WEpo&Sv=~yx4g7=WNO56^ zy=6`8j^0I)F92en?KEtDsvuGFGcu;wBHLRJnyrdjF^^dG_FH#9%#|89@Fg;3^w+wh z2 WPTvnHql*OcHa} fXY74X!b@@p{4z5|`{v$6LT+sUredvlTFo7p29w>e z3EoJ4U$USOeKt!|cWsca+51%&nv-pL39`aKR{_@&Wu1Ya99cErjjS{!K%6W5UbLMy z{ytA+WJJTWxZ-jXwy;1{U*IqQuQMq7H}EvZjpf#IPA|%dxFhT!6YztsZeMBrK) `#ysKxAxBv9FNO z##hbuQVvMY)`0wQ^ioece)$1(5_ M z{3vefi!(EeG!v>)vr#xt2419!cv5R ^scwdlk+y4pr=e zU4ln&eo(**P0Z?VlO&b2Q91J6Vr*&(O|syvV&oYO$V?KkLI90+ay9#xY+7Qw-4y1h zjMA{5&O8PCAj40b3GiGm!)TZ|a-j|C-<>X}!p?isK?i2E$?p_WgGXZ8GvmzU@N4~f zx@}%2>8y!g190_3%K4)k6vmf{(BR0`*`b?7;hvj~Y{mN*jt4U`$J0xqA{z&0uk-EQ z6h2@x2!8l4wO5{OLI(6p?P%!Kw0aaZ2>7}uT2SLq4{QH1z_ZHBWQI?>t^DPbyUR-p z^g8t`*U}>QU?YArScL@(BB^uGTz1dQtqAnLC$qO}@=PrEkI&DI#}9BcX12ZtO&kNg z+cP&e&Pqdm0KVOTM5S#nWd%Bjq@v3D!7UbYbb7Z$h&^-Z-G 4K_t5f|C@#92j49s{+o8*^^g)e z9Wpmi*K{48x`e;^Fq~_y9Gxb=mUwYst~|2r*gIl4fQ9>WqlvnY?7f)&N$J6j)cU3r z# xngrlpEvyXSDR~zGg+7o_1KlK zNvo!nRRgp}=qjX6M*z-6bai 5-L-g%%`g2D$2b@8Zy0TBCnhwpDqk6BL}7v~a^{7UO%RLE4U$BRd$1Uj zrO@S^feo23fA_bp`>^D!`A=gLpua|y;jW{-xIr5ti}qyEpxdB>0h9bDAVLI)s#60W zS1_eL^sJ(XV MYh#m-2dzzU z+c|YUh?}GT7pj( WQU9wSZk@%#sstaajX Pd@N DT-6`^s>Z;moCgjCyxwENo zr{E06!dY`89?6i_Eo@CXAYO_6xEO(b)#cN%$lLnd_sJYz2#3i|2C%c>Iq#evS+zPb zRgn)Cgbf(!qnpS+ GZgjdKI+(O9Bl{GQ?`@ZJ?>AU4h>hD-zJUQ3fY@uifXKu#jl|6&rQt5GC zl?phDa#VC|oNa75Q2i;Ui|lYFoO7(GNJ-lQ3W=RP-EIqKww>JV;NQwLuHZ1a*q)Ti zGTfKKNlQ8+QJ0Pg+qOR<{OMbqwsu|5%EFj4vT>{5`$(HU)9uMCa4a<`|ICYK2MvdI zSOfZ7Pw!_O=FYQz-jl62qpPATk34{4%HR?D=*U_kd(;l=oxX9J;DQ29$zxHw5w JqXP?OhH~BsoLiLF+7$HyQ*m!+%qSn`GtQ(^aE;T(XdE^y zsl7{lt&0Q2kPf&;X*3tiRUd6Zgdj@1{5neyH-nf&i^=>2ZDBzoFv9o0oA9g4d`IrJ zNXpy-+q%!Z7rD?h;@Z&Wszr|@HLJqIPl#e=eg1=z(Y*iK!i-F`Q%?MJL`jD|z!qko z_l%N3PZ7SOwBA1&1SEw_mG|hwEvtILs0s?OYr^bd_jjA9OuK)kHQE|WjZbF^J>~-; z0Ro_|*G~=xVCUHLv0H@xeQniEe2&ATOqnyH=Jo1E4r z#^{-e&8ChST23{@?+x`2`B-VC%Rbtgn8S1RcIqlAA+A@--tA3HAKRNw=p}sIZrB>K z6InZ%6+=ljTmh1^Ig5@)sYAdi^Vs1SJ$<6@Oxf#QNa#pDyI}e;A7wyeXRii@qr>E{ z2C_Y6N>2S237GYTP0b^MhUsw_{hLSJQRz`VF#jH~PfKMNY;Zcd=#4lY2|j%e*)qq+ zDCjtHo76Ppz7)mr)nB2Y9`Wr9bL0`vkEbK_KYbAh?$HSdWgrWgxd6JaN_+vQQrx&> zy;g`nFx|+kgSuP3TR%MuxCrcEoh7l^JiPAJgeO38EWiG>2#i6!xGunqCa+AL|Nk7C z3%DE|)cS -x} zJ`k=A0*6`|I~#U1(1MA7H+FE&H*RO9r8uXs6hwajm?FA1&c7qcpT*H%N-E1TNbyu6 zs7}O& ;o?31i_l zF`oT_Z+0HmU2r!6vp^e3gQS*9>oHMH%m;g-tH$xgy=JH450>SHOj1#`*#Xt|=Z6yQ z& wu^U FJ z8pZkQCkBK`lS6#Ji~hY7NMiP+m^SxBy @FC+`TQp+EGCIGiSBCuxN}J+|p%P|*{zA2q1C;V-)c1I?z(tRIVx3oB8jp1^ z+U(di$jLW@F88jP magDUp z@}+A=oDgwU|KD5f0NaD?PryIr&si}OkHk+=S&;>yKe=~gVgs7N3W4hdx=WdO({Btm z&dJ_@$5B~rjRt7Q`GHz>9lbOoc5XIPRzWVe<(YoPbJ1imf{?0HY1dJRm9({@!Worp z0joKjTvf1cx*6U5-fOTH< ){sf^@Y#Foi@}Nqi-yzMaC4?9sug=){_#FSLHv>&atkwIc!TCf%WsozdFrljgI#j z6di As3F9!&Hl5z!WHVhTFDf=N^-38C9<5rvsIB&I$64UKK zJBg!tg3v6bQPK2NjZu@4dTx*;8{4ot0LuNX%-6B0vGue3=gmiwuMhl2%^J6otqJc3 zS83rS`>Rkt @jUFdzb#$k#S3tVZKnpFw0X>!y;lQt`RY|pp7 0%QE`VfCz1>s_kIHLPY0mc`Pxfv@s?!1`I;? 0+aq~i_rYvdt>@u4)3LHL*dldJkOhnD6W{%oHC z;8=%7 zTAH`4u#3#A#EAUkG%L@Cn{(xmHOP0z4PL>t45J46y@((5E@5z{xL8;3Qt(y=Z7AT_ zt~&{E>~Ag9Q3rJjgZuL~QkaJwJ1OCBXZ>onV65=5fe4-)#kktY-WA*^6v;~iV>~Eg z%iV)s&3`T^8yuwO{|6UnP8f+x&5ZYfVG8m`r?bfW_!C|$JjKn^56qLt3hrp?P