algorand-python-testing 1.2.0b6__tar.gz → 1.2.0b7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/CHANGELOG.md +2 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/PKG-INFO +1 -1
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/pyproject.toml +3 -3
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.approval.teal +1 -1
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.arc56.json +1 -1
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/.coveragerc +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/.editorconfig +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/.github/dependabot.yml +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/.github/pull_request_template.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/.github/workflows/cd.yaml +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/.github/workflows/ci.yaml +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/.github/workflows/gh-pages.yaml +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/.gitignore +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/.pre-commit-config.yaml +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/.vscode/extensions.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/.vscode/launch.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/.vscode/settings.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/CONTRIBUTING.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/LICENSE +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/README.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/Makefile +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/_static/custom.css +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/algopy.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/api.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/conf.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/coverage.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/examples.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/faq.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/index.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/make.bat +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/testing-guide/arc4-types.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/testing-guide/avm-types.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/testing-guide/concepts.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/testing-guide/contract-testing.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/testing-guide/index.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/testing-guide/opcodes.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/testing-guide/signature-testing.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/testing-guide/state-management.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/testing-guide/subroutines.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/testing-guide/transactions.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/README.md +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/auction/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/auction/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/auction/test_contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/htlc_logicsig/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/htlc_logicsig/signature.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/htlc_logicsig/test_signature.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/marketplace/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/marketplace/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/marketplace/test_contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/proof_of_attendance/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/proof_of_attendance/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/proof_of_attendance/test_contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/scratch_storage/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/scratch_storage/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/scratch_storage/test_contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/simple_voting/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/simple_voting/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/simple_voting/test_contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/zk_whitelist/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/zk_whitelist/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/zk_whitelist/test_contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/scripts/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/scripts/check_stubs_cov.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/scripts/refresh_test_artifacts.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/scripts/validate_examples.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/arc4.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/compiled.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/constants.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/context.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/context_helpers/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/context_helpers/context_storage.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/context_helpers/ledger_context.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/context_helpers/txn_context.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/decorators/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/decorators/arc4.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/decorators/subroutine.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/enums.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/gtxn.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/itxn.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/itxn_loader.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/models/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/models/account.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/models/application.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/models/asset.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/models/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/models/logicsig.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/models/template_variable.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/models/txn_fields.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/models/unsigned_builtins.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/mutable.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/op/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/op/block.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/op/constants.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/op/crypto.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/op/global_values.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/op/itxn.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/op/misc.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/op/pure.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/op/txn.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/primitives/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/primitives/array.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/primitives/biguint.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/primitives/bytes.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/primitives/fixed_bytes.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/primitives/string.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/primitives/uint64.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/protocols.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/py.typed +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/serialize.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/state/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/state/box.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/state/global_map.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/state/global_state.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/state/local_map.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/state/local_state.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/state/utils.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/utilities/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/utilities/budget.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/utilities/log.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/utilities/size_of.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/utils.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/value_generators/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/value_generators/arc4.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/value_generators/avm.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/value_generators/txn.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/algopy/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/algopy/arc4.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/algopy/gtxn.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/algopy/itxn.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/algopy/op.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/algopy/py.typed +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/algopy_testing/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/algopy_testing/py.typed +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/templates/.macros.j2 +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/templates/.release_notes.md.j2 +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/templates/CHANGELOG.md.j2 +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/arc4/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/arc4/conftest.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/arc4/test_abi_call.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/arc4/test_address.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/arc4/test_arc4_method_signature.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/arc4/test_bool.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/arc4/test_dynamic_array.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/arc4/test_dynamic_bytes.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/arc4/test_emit.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/arc4/test_static_array.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/arc4/test_string.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/arc4/test_struct.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/arc4/test_tuple.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/arc4/test_ufixednxm.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/arc4/test_uintn.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/AVM12/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/AVM12/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/AVM12/data/Contract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/AVM12/data/Contract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/AVM12/data/Contract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/AVM12/data/ContractV0.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/AVM12/data/ContractV0.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/AVM12/data/ContractV0.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/AVM12/data/ContractV1.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/AVM12/data/ContractV1.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/AVM12/data/ContractV1.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arc4ABIMethod/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arc4ABIMethod/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arc4ABIMethod/data/SignaturesContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arc4InnerTxns/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arc4InnerTxns/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arc4InnerTxns/data/Arc4InnerTxnsContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arc4PrimitiveOps/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arc4PrimitiveOps/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arc4PrimitiveOps/data/Arc4PrimitiveOpsContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/data/Contract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/data/Contract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/data/Contract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/data/Contract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/data/DynamicArrayInitContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/data/DynamicArrayInitContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/data/DynamicArrayInitContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/data/ImmutableArrayContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/data/ImmutableArrayContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/data/ImmutableArrayContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/data/ImmutableArrayContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/data/ImmutableArrayInitContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/data/ImmutableArrayInitContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/data/ImmutableArrayInitContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/data/StaticSizeContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/data/StaticSizeContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/data/StaticSizeContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/data/StaticSizeContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/immutable.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/static_size.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Arrays/uint64.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/BoxContract/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/BoxContract/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/BoxContract/data/BoxContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/BoxContract/data/BoxContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/BoxContract/data/BoxContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/BoxContract/data/BoxContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Contains/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Contains/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Contains/data/MyContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Contains/data/MyContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/CreatedAppAsset/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/CreatedAppAsset/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/CreatedAppAsset/data/AppCall.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/CreatedAppAsset/data/AppCall.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/CreatedAppAsset/data/AppCall.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/CreatedAppAsset/data/AppCall.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/CreatedAppAsset/data/AppExpectingEffects.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/CreatedAppAsset/data/AppExpectingEffects.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/CreatedAppAsset/data/AppExpectingEffects.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/CreatedAppAsset/data/AppExpectingEffects.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/CreatedAppAsset/other.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/CryptoOps/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/CryptoOps/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/CryptoOps/data/CryptoOpsContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/CryptoOps/data/CryptoOpsContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/CryptoOps/data/CryptoOpsContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/CryptoOps/data/CryptoOpsContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/DynamicITxnGroup/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/DynamicITxnGroup/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/DynamicITxnGroup/data/DynamicItxnGroup.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/DynamicITxnGroup/data/DynamicItxnGroup.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/DynamicITxnGroup/data/DynamicItxnGroup.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/DynamicITxnGroup/data/VerifierContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/DynamicITxnGroup/data/VerifierContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/DynamicITxnGroup/data/VerifierContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/DynamicITxnGroup/verifier.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/GlobalStateValidator/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/GlobalStateValidator/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/GlobalStateValidator/data/GlobalStateValidator.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/MiscellaneousOps/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/MiscellaneousOps/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/MiscellaneousOps/data/MiscellaneousOpsContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/PrimitiveOps/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/PrimitiveOps/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/PrimitiveOps/data/PrimitiveOpsContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateMutations/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateMutations/data/Contract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateMutations/data/Contract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateMutations/data/Contract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateMutations/data/StateMutations.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateMutations/data/StateMutations.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateMutations/data/StateMutations.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateMutations/data/StateMutations.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateMutations/statemutations.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/GlobalMapContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/GlobalMapContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/GlobalMapContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/GlobalStateContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/GlobalStateContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/GlobalStateContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/GlobalStateContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/ITxnOpsContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/ITxnOpsContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/ITxnOpsContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/ITxnOpsContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/LocalMapContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/LocalMapContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/LocalMapContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/LocalStateContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/LocalStateContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/LocalStateContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/LocalStateContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAcctParamsGet.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAcctParamsGet.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAcctParamsGet.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAcctParamsGetContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppGlobalContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppGlobalContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppGlobalContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppGlobalContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppGlobalExContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppGlobalExContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppGlobalExContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppGlobalExContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppLocalContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppLocalContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppLocalContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppLocalContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppLocalExContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppLocalExContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppLocalExContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppLocalExContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppParamsContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppParamsContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppParamsContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAppParamsContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAssetHoldingContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAssetHoldingContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAssetHoldingContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAssetHoldingContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAssetParamsContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAssetParamsContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAssetParamsContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/StateOps/data/StateAssetParamsContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Tuples/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Tuples/contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Tuples/data/TuplesContract.approval.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Tuples/data/TuplesContract.arc32.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Tuples/data/TuplesContract.arc56.json +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/Tuples/data/TuplesContract.clear.teal +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/artifacts/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/avm12/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/avm12/conftest.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/avm12/test_avm12.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/common.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/conftest.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/contexts/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/dynamic_itxn_group/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/dynamic_itxn_group/test_dynamic_itxn_group.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/models/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/models/test_asset.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/models/test_box.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/models/test_box_map.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/models/test_box_ref.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/models/test_contract.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/models/test_uenumerate.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/models/test_urange.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/primitives/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/primitives/conftest.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/primitives/test_biguint.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/primitives/test_bytes.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/primitives/test_fixed_bytes.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/primitives/test_string.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/primitives/test_uint64.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/state/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/state/conftest.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/state/test_global_map.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/state/test_global_state.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/state/test_local_map.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/state/test_local_state.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/state/test_mutations.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/test_array.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/test_context.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/test_miscellaneous_op.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/test_op.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/util.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/utilities/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/utilities/conftest.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/utilities/test_log.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/utilities/test_size_of.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/value_generators/__init__.py +0 -0
- {algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/tests/value_generators/test_avm.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: algorand-python-testing
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.0b7
|
|
4
4
|
Summary: Algorand Python testing library
|
|
5
5
|
Project-URL: Documentation, https://github.com/algorandfoundation/puya/tree/main/algopy_testing#README.md
|
|
6
6
|
Project-URL: Issues, https://github.com/algorandfoundation/puya/issues
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "algorand-python-testing"
|
|
7
|
-
version = "1.2.0-beta.
|
|
7
|
+
version = "1.2.0-beta.7"
|
|
8
8
|
description = 'Algorand Python testing library'
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.12"
|
|
@@ -50,7 +50,7 @@ type = "virtual"
|
|
|
50
50
|
path = ".venv"
|
|
51
51
|
python = "3.12"
|
|
52
52
|
dependencies = [
|
|
53
|
-
"puyapy>=5.
|
|
53
|
+
"puyapy>=5.8.0",
|
|
54
54
|
"pytest>=7.4",
|
|
55
55
|
"pytest-mock>=3.10.0",
|
|
56
56
|
"pytest-xdist[psutil]>=3.3",
|
|
@@ -132,7 +132,7 @@ dependencies = [
|
|
|
132
132
|
"pytest-cov>=4.1.0",
|
|
133
133
|
"py-algorand-sdk>=2.4.0",
|
|
134
134
|
"algokit-utils>=4.0.0",
|
|
135
|
-
"puyapy>=5.
|
|
135
|
+
"puyapy>=5.8.0",
|
|
136
136
|
]
|
|
137
137
|
|
|
138
138
|
[tool.hatch.envs.test.scripts]
|
|
@@ -1769,7 +1769,7 @@ verify_logged_errs_after_if_else@13:
|
|
|
1769
1769
|
|
|
1770
1770
|
verify_logged_errs_after_if_else@15:
|
|
1771
1771
|
// tests/artifacts/PrimitiveOps/contract.py:407-408
|
|
1772
|
-
// # "AER:arg08:arg is
|
|
1772
|
+
// # "AER:arg08:arg is eight (08)"
|
|
1773
1773
|
// if arg == 8:
|
|
1774
1774
|
dup
|
|
1775
1775
|
pushint 8
|
|
@@ -1657,7 +1657,7 @@
|
|
|
1657
1657
|
}
|
|
1658
1658
|
},
|
|
1659
1659
|
"source": {
|
|
1660
|
-
"approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAxIDAKICAgIGJ5dGVjYmxvY2sgMHgxNTFmN2M3NSAweDAwICItIiAweDE1MWY3Yzc1MDAyMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxOAogICAgLy8gY2xhc3MgUHJpbWl0aXZlT3BzQ29udHJhY3QoQVJDNENvbnRyYWN0KToKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX19fYWxnb3B5X2RlZmF1bHRfY3JlYXRlQDY4CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQKICAgIHB1c2hieXRlc3MgMHg3MjVjNjkyYiAweDE3MzE0NTU5IDB4NTNmMzQ4OTMgMHg4OGM4YjI2OSAweGE0NjRiN2FiIDB4OWM4YjExYjggMHg2ZjQwNjU0ZSAweGVjOWEyOTc0IDB4Yzc5MzcwOGYgMHg3ZGRiNzQ5OSAweGEyMWM0NDNkIDB4NmU3ZmIyMTIgMHhiMDA3ZmNiMCAweDJlYmMyMGQ0IDB4YjA5NTRiNjYgMHhkZDE0MGFlZiAweGFjZTQ3NGRhIDB4YmE2OTQ5OTAgMHg2ZGI1ODFjMCAweDkxYzhkYjg5IDB4ZGJlNzcxNTggMHg5YTBmMjJlMSAweDY0MDMzZDM3IDB4MmE3MjM3YzUgMHhlM2E5NDQ1OCAweDQyZjg3ZjdkIDB4MmI1NTQyYTQgMHg5YmUyZmJlOSAweDFjZDkyNTE1IDB4NjRlMTcwNWMgMHhmMTI3MWM1MCAweDJhYjYzYjcwIDB4ODM0YmI3ZDIgMHg1MzE2MjBkNyAweDNmYjllNzY5IDB4ZmE4ZGIwYmMgMHhhNzJlYTQ4NSAweGI3YjBiYTE5IDB4NzQ0NjBjNDIgMHhhYjMyMDczOCAweDUyYWQ0NjU0IDB4MTAxNTYzOTkgMHgwZjA3NTk1NyAweGJkODQzZGZmIDB4YjM3N2QzODEgMHg4OTc2NzI2NSAweDQ1NmI0YjIzIDB4MzNkMWI4OGMgMHg2YmY5NzNlYSAweDY3Y2Q2YmIyIDB4M2Y1ODgwNWEgMHgxZTEzMDAzOSAweDUwOWRjOTFkIDB4YTU2NGEyMDIgMHgyMzY1MDc2MyAweGY4YzhmOGQ1IDB4MjNmYWY3YTQgMHg3ZDBhZmUxNSAweDQ4NTgxYWRmIDB4M2RhZWY5Y2QgMHhlZDY3NTVlMSAvLyBtZXRob2QgInZlcmlmeV91aW50NjRfaW5pdChieXRlW10pdWludDY0IiwgbWV0aG9kICJ2ZXJpZnlfdWludDY0X2FkZCh1aW50NjQsdWludDY0KXVpbnQ2NCIsIG1ldGhvZCAidmVyaWZ5X3VpbnQ2NF9zdWIodWludDY0LHVpbnQ2NCl1aW50NjQiLCBtZXRob2QgInZlcmlmeV91aW50NjRfbXVsKHVpbnQ2NCx1aW50NjQpdWludDY0IiwgbWV0aG9kICJ2ZXJpZnlfdWludDY0X2Rpdih1aW50NjQsdWludDY0KXVpbnQ2NCIsIG1ldGhvZCAidmVyaWZ5X3VpbnQ2NF9tb2QodWludDY0LHVpbnQ2NCl1aW50NjQiLCBtZXRob2QgInZlcmlmeV91aW50NjRfYW5kKHVpbnQ2NCx1aW50NjQpdWludDY0IiwgbWV0aG9kICJ2ZXJpZnlfdWludDY0X29yKHVpbnQ2NCx1aW50NjQpdWludDY0IiwgbWV0aG9kICJ2ZXJpZnlfdWludDY0X3hvcih1aW50NjQsdWludDY0KXVpbnQ2NCIsIG1ldGhvZCAidmVyaWZ5X3VpbnQ2NF9ub3QodWludDY0KXVpbnQ2NCIsIG1ldGhvZCAidmVyaWZ5X3VpbnQ2NF9sc2hpZnQodWludDY0LHVpbnQ2NCl1aW50NjQiLCBtZXRob2QgInZlcmlmeV91aW50NjRfcnNoaWZ0KHVpbnQ2NCx1aW50NjQpdWludDY0IiwgbWV0aG9kICJ2ZXJpZnlfdWludDY0X3Bvdyh1aW50NjQsdWludDY0KXVpbnQ2NCIsIG1ldGhvZCAidmVyaWZ5X3VpbnQ2NF9lcSh1aW50NjQsdWludDY0KWJvb2wiLCBtZXRob2QgInZlcmlmeV91aW50NjRfbmUodWludDY0LHVpbnQ2NClib29sIiwgbWV0aG9kICJ2ZXJpZnlfdWludDY0X2x0KHVpbnQ2NCx1aW50NjQpYm9vbCIsIG1ldGhvZCAidmVyaWZ5X3VpbnQ2NF9sZSh1aW50NjQsdWludDY0KWJvb2wiLCBtZXRob2QgInZlcmlmeV91aW50NjRfZ3QodWludDY0LHVpbnQ2NClib29sIiwgbWV0aG9kICJ2ZXJpZnlfdWludDY0X2dlKHVpbnQ2NCx1aW50NjQpYm9vbCIsIG1ldGhvZCAidmVyaWZ5X2J5dGVzX2luaXQodWludDY0KWJ5dGVbXSIsIG1ldGhvZCAidmVyaWZ5X2J5dGVzX2FkZChieXRlW10sYnl0ZVtdLHVpbnQ2NCx1aW50NjQpYnl0ZVtdIiwgbWV0aG9kICJ2ZXJpZnlfYnl0ZXNfZXEoYnl0ZVtdLGJ5dGVbXSlib29sIiwgbWV0aG9kICJ2ZXJpZnlfYnl0ZXNfbmUoYnl0ZVtdLGJ5dGVbXSlib29sIiwgbWV0aG9kICJ2ZXJpZnlfYnl0ZXNfYW5kKGJ5dGVbXSxieXRlW10pYnl0ZVtdIiwgbWV0aG9kICJ2ZXJpZnlfYnl0ZXNfb3IoYnl0ZVtdLGJ5dGVbXSlieXRlW10iLCBtZXRob2QgInZlcmlmeV9ieXRlc194b3IoYnl0ZVtdLGJ5dGVbXSlieXRlW10iLCBtZXRob2QgInZlcmlmeV9ieXRlc19ub3QoYnl0ZVtdLHVpbnQ2NClieXRlW10iLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X2FkZChieXRlW10sYnl0ZVtdKWJ5dGVbXSIsIG1ldGhvZCAidmVyaWZ5X2JpZ3VpbnRfYWRkX3VpbnQ2NChieXRlW10sdWludDY0KWJ5dGVbXSIsIG1ldGhvZCAidmVyaWZ5X2JpZ3VpbnRfc3ViKGJ5dGVbXSxieXRlW10pYnl0ZVtdIiwgbWV0aG9kICJ2ZXJpZnlfYmlndWludF9zdWJfdWludDY0KGJ5dGVbXSx1aW50NjQpYnl0ZVtdIiwgbWV0aG9kICJ2ZXJpZnlfYmlndWludF9tdWwoYnl0ZVtdLGJ5dGVbXSlieXRlW10iLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X211bF91aW50NjQoYnl0ZVtdLHVpbnQ2NClieXRlW10iLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X2RpdihieXRlW10sYnl0ZVtdKWJ5dGVbXSIsIG1ldGhvZCAidmVyaWZ5X2JpZ3VpbnRfZGl2X3VpbnQ2NChieXRlW10sdWludDY0KWJ5dGVbXSIsIG1ldGhvZCAidmVyaWZ5X2JpZ3VpbnRfbW9kKGJ5dGVbXSxieXRlW10pYnl0ZVtdIiwgbWV0aG9kICJ2ZXJpZnlfYmlndWludF9tb2RfdWludDY0KGJ5dGVbXSx1aW50NjQpYnl0ZVtdIiwgbWV0aG9kICJ2ZXJpZnlfYmlndWludF9hbmQoYnl0ZVtdLGJ5dGVbXSlieXRlW10iLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X2FuZF91aW50NjQoYnl0ZVtdLHVpbnQ2NClieXRlW10iLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X29yKGJ5dGVbXSxieXRlW10pYnl0ZVtdIiwgbWV0aG9kICJ2ZXJpZnlfYmlndWludF9vcl91aW50NjQoYnl0ZVtdLHVpbnQ2NClieXRlW10iLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X3hvcihieXRlW10sYnl0ZVtdKWJ5dGVbXSIsIG1ldGhvZCAidmVyaWZ5X2JpZ3VpbnRfeG9yX3VpbnQ2NChieXRlW10sdWludDY0KWJ5dGVbXSIsIG1ldGhvZCAidmVyaWZ5X2JpZ3VpbnRfZXEoYnl0ZVtdLGJ5dGVbXSlib29sIiwgbWV0aG9kICJ2ZXJpZnlfYmlndWludF9lcV91aW50NjQoYnl0ZVtdLHVpbnQ2NClib29sIiwgbWV0aG9kICJ2ZXJpZnlfYmlndWludF9uZShieXRlW10sYnl0ZVtdKWJvb2wiLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X25lX3VpbnQ2NChieXRlW10sdWludDY0KWJvb2wiLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X2x0KGJ5dGVbXSxieXRlW10pYm9vbCIsIG1ldGhvZCAidmVyaWZ5X2JpZ3VpbnRfbHRfdWludDY0KGJ5dGVbXSx1aW50NjQpYm9vbCIsIG1ldGhvZCAidmVyaWZ5X2JpZ3VpbnRfbGUoYnl0ZVtdLGJ5dGVbXSlib29sIiwgbWV0aG9kICJ2ZXJpZnlfYmlndWludF9sZV91aW50NjQoYnl0ZVtdLHVpbnQ2NClib29sIiwgbWV0aG9kICJ2ZXJpZnlfYmlndWludF9ndChieXRlW10sYnl0ZVtdKWJvb2wiLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X2d0X3VpbnQ2NChieXRlW10sdWludDY0KWJvb2wiLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X2dlKGJ5dGVbXSxieXRlW10pYm9vbCIsIG1ldGhvZCAidmVyaWZ5X2JpZ3VpbnRfZ2VfdWludDY0KGJ5dGVbXSx1aW50NjQpYm9vbCIsIG1ldGhvZCAidmVyaWZ5X3N0cmluZ19pbml0KHN0cmluZylzdHJpbmciLCBtZXRob2QgInZlcmlmeV9zdHJpbmdfc3RhcnRzd2l0aChzdHJpbmcsc3RyaW5nKWJvb2wiLCBtZXRob2QgInZlcmlmeV9zdHJpbmdfZW5kc3dpdGgoc3RyaW5nLHN0cmluZylib29sIiwgbWV0aG9kICJ2ZXJpZnlfc3RyaW5nX2pvaW4oc3RyaW5nLHN0cmluZylzdHJpbmciLCBtZXRob2QgInZlcmlmeV9sb2coc3RyaW5nLHVpbnQ2NCxieXRlW10sYnl0ZVtdLGJvb2wsc3RyaW5nLHVpbnQ2NCx1aW50MjU2LHVmaXhlZDMyeDgsdWZpeGVkMjU2eDE2LGJ5dGVbXSxieXRlW10sYnl0ZVtdLGJ5dGVbNV0pdm9pZCIsIG1ldGhvZCAidmVyaWZ5X2xvZ2dlZF9lcnJzKHVpbnQ2NCl2b2lkIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggdmVyaWZ5X3VpbnQ2NF9pbml0IHZlcmlmeV91aW50NjRfYWRkIHZlcmlmeV91aW50NjRfc3ViIHZlcmlmeV91aW50NjRfbXVsIHZlcmlmeV91aW50NjRfZGl2IHZlcmlmeV91aW50NjRfbW9kIHZlcmlmeV91aW50NjRfYW5kIHZlcmlmeV91aW50NjRfb3IgdmVyaWZ5X3VpbnQ2NF94b3IgdmVyaWZ5X3VpbnQ2NF9ub3QgdmVyaWZ5X3VpbnQ2NF9sc2hpZnQgdmVyaWZ5X3VpbnQ2NF9yc2hpZnQgdmVyaWZ5X3VpbnQ2NF9wb3cgdmVyaWZ5X3VpbnQ2NF9lcSB2ZXJpZnlfdWludDY0X25lIHZlcmlmeV91aW50NjRfbHQgdmVyaWZ5X3VpbnQ2NF9sZSB2ZXJpZnlfdWludDY0X2d0IHZlcmlmeV91aW50NjRfZ2UgdmVyaWZ5X2J5dGVzX2luaXQgdmVyaWZ5X2J5dGVzX2FkZCB2ZXJpZnlfYnl0ZXNfZXEgdmVyaWZ5X2J5dGVzX25lIHZlcmlmeV9ieXRlc19hbmQgdmVyaWZ5X2J5dGVzX29yIHZlcmlmeV9ieXRlc194b3IgdmVyaWZ5X2J5dGVzX25vdCB2ZXJpZnlfYmlndWludF9hZGQgdmVyaWZ5X2JpZ3VpbnRfYWRkX3VpbnQ2NCB2ZXJpZnlfYmlndWludF9zdWIgdmVyaWZ5X2JpZ3VpbnRfc3ViX3VpbnQ2NCB2ZXJpZnlfYmlndWludF9tdWwgdmVyaWZ5X2JpZ3VpbnRfbXVsX3VpbnQ2NCB2ZXJpZnlfYmlndWludF9kaXYgdmVyaWZ5X2JpZ3VpbnRfZGl2X3VpbnQ2NCB2ZXJpZnlfYmlndWludF9tb2QgdmVyaWZ5X2JpZ3VpbnRfbW9kX3VpbnQ2NCB2ZXJpZnlfYmlndWludF9hbmQgdmVyaWZ5X2JpZ3VpbnRfYW5kX3VpbnQ2NCB2ZXJpZnlfYmlndWludF9vciB2ZXJpZnlfYmlndWludF9vcl91aW50NjQgdmVyaWZ5X2JpZ3VpbnRfeG9yIHZlcmlmeV9iaWd1aW50X3hvcl91aW50NjQgdmVyaWZ5X2JpZ3VpbnRfZXEgdmVyaWZ5X2JpZ3VpbnRfZXFfdWludDY0IHZlcmlmeV9iaWd1aW50X25lIHZlcmlmeV9iaWd1aW50X25lX3VpbnQ2NCB2ZXJpZnlfYmlndWludF9sdCB2ZXJpZnlfYmlndWludF9sdF91aW50NjQgdmVyaWZ5X2JpZ3VpbnRfbGUgdmVyaWZ5X2JpZ3VpbnRfbGVfdWludDY0IHZlcmlmeV9iaWd1aW50X2d0IHZlcmlmeV9iaWd1aW50X2d0X3VpbnQ2NCB2ZXJpZnlfYmlndWludF9nZSB2ZXJpZnlfYmlndWludF9nZV91aW50NjQgdmVyaWZ5X3N0cmluZ19pbml0IHZlcmlmeV9zdHJpbmdfc3RhcnRzd2l0aCB2ZXJpZnlfc3RyaW5nX2VuZHN3aXRoIHZlcmlmeV9zdHJpbmdfam9pbiB2ZXJpZnlfbG9nIHZlcmlmeV9sb2dnZWRfZXJycwogICAgZXJyCgptYWluX19fYWxnb3B5X2RlZmF1bHRfY3JlYXRlQDY4OgogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgICYmCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV91aW50NjRfaW5pdFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV91aW50NjRfaW5pdDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyMQogICAgLy8gcmVzdWx0ID0gb3AuYnRvaShyYXdfdmFsdWUpCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaXRvYgogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X3VpbnQ2NF9hZGRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X2FkZDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI2CiAgICAvLyByZXN1bHQgPSBhICsgYgogICAgKwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyNAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGl0b2IKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV91aW50NjRfc3ViW3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X3VpbnQ2NF9zdWI6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozMQogICAgLy8gcmVzdWx0ID0gYSAtIGIKICAgIC0KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpdG9iCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfdWludDY0X211bFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV91aW50NjRfbXVsOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozNAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzYKICAgIC8vIHJlc3VsdCA9IGEgKiBiCiAgICAqCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaXRvYgogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X3VpbnQ2NF9kaXZbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X2RpdjoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjQxCiAgICAvLyByZXN1bHQgPSBhIC8vIGIKICAgIC8KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpdG9iCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfdWludDY0X21vZFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV91aW50NjRfbW9kOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo0NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NDYKICAgIC8vIHJlc3VsdCA9IGEgJSBiCiAgICAlCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjQ0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaXRvYgogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X3VpbnQ2NF9hbmRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X2FuZDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NDkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjUxCiAgICAvLyByZXN1bHQgPSBhICYgYgogICAgJgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo0OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGl0b2IKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV91aW50NjRfb3Jbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X29yOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo1NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NTYKICAgIC8vIHJlc3VsdCA9IGEgfCBiCiAgICB8CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjU0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaXRvYgogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X3VpbnQ2NF94b3Jbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X3hvcjoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NTkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjYxCiAgICAvLyByZXN1bHQgPSBhIF4gYgogICAgXgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo1OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGl0b2IKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV91aW50NjRfbm90W3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X3VpbnQ2NF9ub3Q6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjY0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo2NgogICAgLy8gcmVzdWx0ID0gfmEKICAgIH4KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NjQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpdG9iCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfdWludDY0X2xzaGlmdFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV91aW50NjRfbHNoaWZ0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo2OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NzEKICAgIC8vIHJlc3VsdCA9IGEgPDwgYgogICAgc2hsCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjY5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaXRvYgogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X3VpbnQ2NF9yc2hpZnRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X3JzaGlmdDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NzQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5Ojc2CiAgICAvLyByZXN1bHQgPSBhID4+IGIKICAgIHNocgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo3NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGl0b2IKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV91aW50NjRfcG93W3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X3VpbnQ2NF9wb3c6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5Ojc5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo4MQogICAgLy8gcmVzdWx0ID0gYSoqYgogICAgZXhwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5Ojc5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaXRvYgogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X3VpbnQ2NF9lcVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV91aW50NjRfZXE6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5Ojg0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo4NgogICAgLy8gcmVzdWx0ID0gYSA9PSBiCiAgICA9PQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo4NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfdWludDY0X25lW3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X3VpbnQ2NF9uZToKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6ODkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjkxCiAgICAvLyByZXN1bHQgPSBhICE9IGIKICAgICE9CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5Ojg5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV91aW50NjRfbHRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X2x0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo5NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6OTYKICAgIC8vIHJlc3VsdCA9IGEgPCBiCiAgICA8CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5Ojk0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV91aW50NjRfbGVbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X2xlOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo5OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTAxCiAgICAvLyByZXN1bHQgPSBhIDw9IGIKICAgIDw9CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5Ojk5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV91aW50NjRfZ3Rbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X2d0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxMDQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjEwNgogICAgLy8gcmVzdWx0ID0gYSA+IGIKICAgID4KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTA0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV91aW50NjRfZ2Vbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X2dlOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxMDkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjExMQogICAgLy8gcmVzdWx0ID0gYSA+PSBiCiAgICA+PQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxMDkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBieXRlY18xIC8vIDB4MDAKICAgIGludGNfMSAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2J5dGVzX2luaXRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYnl0ZXNfaW5pdDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTE0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxMTYKICAgIC8vIHJlc3VsdCA9IG9wLml0b2IocmF3X3ZhbHVlKQogICAgaXRvYgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxMTQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBwdXNoYnl0ZXMgMHgxNTFmN2M3NTAwMDgKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYnl0ZXNfYWRkW3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2J5dGVzX2FkZDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTE5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA0CiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjEyMwogICAgLy8gYSA9IG9wLmJ6ZXJvKHBhZF9hX3NpemUpICsgYQogICAgc3dhcAogICAgYnplcm8KICAgIHVuY292ZXIgMwogICAgY29uY2F0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjEyNAogICAgLy8gYiA9IG9wLmJ6ZXJvKHBhZF9iX3NpemUpICsgYgogICAgc3dhcAogICAgYnplcm8KICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjEyNQogICAgLy8gcmVzdWx0ID0gYSArIGIKICAgIGNvbmNhdAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxMjYKICAgIC8vIHJlc3VsdCA9IG9wLnNoYTI1NihyZXN1bHQpCiAgICBzaGEyNTYKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTE5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMyAvLyAweDE1MWY3Yzc1MDAyMAogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9ieXRlc19lcVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9ieXRlc19lcToKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTI5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjEzMQogICAgLy8gcmVzdWx0ID0gYSA9PSBiCiAgICA9PQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxMjkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBieXRlY18xIC8vIDB4MDAKICAgIGludGNfMSAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2J5dGVzX25lW3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2J5dGVzX25lOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxMzQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTM2CiAgICAvLyByZXN1bHQgPSBhICE9IGIKICAgICE9CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjEzNAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYnl0ZXNfYW5kW3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2J5dGVzX2FuZDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTM5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE0MQogICAgLy8gcmVzdWx0ID0gYSAmIGIKICAgIGImCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjEzOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYnl0ZXNfb3Jbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYnl0ZXNfb3I6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE0NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxNDYKICAgIC8vIHJlc3VsdCA9IGEgfCBiCiAgICBifAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxNDQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2J5dGVzX3hvcltyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9ieXRlc194b3I6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE0OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxNTEKICAgIC8vIHJlc3VsdCA9IGEgXiBiCiAgICBiXgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxNDkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2J5dGVzX25vdFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9ieXRlc19ub3Q6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE1NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE1NgogICAgLy8gYSA9IG9wLmJ6ZXJvKHBhZF9zaXplKSArIGEKICAgIGJ6ZXJvCiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTU3CiAgICAvLyByZXN1bHQgPSB+YQogICAgYn4KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTU4CiAgICAvLyByZXN1bHQgPSBvcC5zaGEyNTYocmVzdWx0KQogICAgc2hhMjU2CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE1NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzMgLy8gMHgxNTFmN2M3NTAwMjAKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9hZGRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9hZGQ6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE2MQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxNjUKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCArIGJfYmlndWludAogICAgYisKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTYxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9iaWd1aW50X2FkZF91aW50NjRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9hZGRfdWludDY0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxNjgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxNzEKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCArIGIKICAgIGl0b2IKICAgIGIrCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE2OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9zdWJbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9zdWI6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE3NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxNzgKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCAtIGJfYmlndWludAogICAgYi0KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTc0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9iaWd1aW50X3N1Yl91aW50NjRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9zdWJfdWludDY0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxODEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxODQKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCAtIGIKICAgIGl0b2IKICAgIGItCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE4MQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9tdWxbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9tdWw6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE4NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxOTEKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCAqIGJfYmlndWludAogICAgYioKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTg3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9iaWd1aW50X211bF91aW50NjRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9tdWxfdWludDY0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxOTQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxOTcKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCAqIGIKICAgIGl0b2IKICAgIGIqCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE5NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9kaXZbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9kaXY6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjIwMAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyMDQKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCAvLyBiX2JpZ3VpbnQKICAgIGIvCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjIwMAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9kaXZfdWludDY0W3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2JpZ3VpbnRfZGl2X3VpbnQ2NDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjA3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjEwCiAgICAvLyByZXN1bHQgPSBhX2JpZ3VpbnQgLy8gYgogICAgaXRvYgogICAgYi8KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjA3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9iaWd1aW50X21vZFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9iaWd1aW50X21vZDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjEzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjIxNwogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50ICUgYl9iaWd1aW50CiAgICBiJQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyMTMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2JpZ3VpbnRfbW9kX3VpbnQ2NFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9iaWd1aW50X21vZF91aW50NjQ6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjIyMAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjIyMwogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50ICUgYgogICAgaXRvYgogICAgYiUKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjIwCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9iaWd1aW50X2FuZFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9iaWd1aW50X2FuZDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjI2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjIzMAogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50ICYgYl9iaWd1aW50CiAgICBiJgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyMjYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2JpZ3VpbnRfYW5kX3VpbnQ2NFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9iaWd1aW50X2FuZF91aW50NjQ6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjIzMwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjIzNgogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50ICYgYgogICAgaXRvYgogICAgYiYKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjMzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9iaWd1aW50X29yW3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2JpZ3VpbnRfb3I6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjIzOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyNDMKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCB8IGJfYmlndWludAogICAgYnwKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjM5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9iaWd1aW50X29yX3VpbnQ2NFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9iaWd1aW50X29yX3VpbnQ2NDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjQ2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjQ5CiAgICAvLyByZXN1bHQgPSBhX2JpZ3VpbnQgfCBiCiAgICBpdG9iCiAgICBifAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyNDYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2JpZ3VpbnRfeG9yW3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2JpZ3VpbnRfeG9yOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyNTIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjU2CiAgICAvLyByZXN1bHQgPSBhX2JpZ3VpbnQgXiBiX2JpZ3VpbnQKICAgIGJeCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI1MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF94b3JfdWludDY0W3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2JpZ3VpbnRfeG9yX3VpbnQ2NDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjU5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjYyCiAgICAvLyByZXN1bHQgPSBhX2JpZ3VpbnQgXiBiCiAgICBpdG9iCiAgICBiXgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyNTkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2JpZ3VpbnRfZXFbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9lcToKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjY1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI2OQogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50ID09IGJfYmlndWludAogICAgYj09CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI2NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9lcV91aW50NjRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9lcV91aW50NjQ6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI3MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI3NQogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50ID09IGIKICAgIGl0b2IKICAgIGI9PQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyNzIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBieXRlY18xIC8vIDB4MDAKICAgIGludGNfMSAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2JpZ3VpbnRfbmVbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9uZToKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6Mjc4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI4MgogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50ICE9IGJfYmlndWludAogICAgYiE9CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI3OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9uZV91aW50NjRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9uZV91aW50NjQ6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI4NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI4OAogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50ICE9IGIKICAgIGl0b2IKICAgIGIhPQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyODUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBieXRlY18xIC8vIDB4MDAKICAgIGludGNfMSAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2JpZ3VpbnRfbHRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9sdDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjkxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI5NQogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50IDwgYl9iaWd1aW50CiAgICBiPAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyOTEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBieXRlY18xIC8vIDB4MDAKICAgIGludGNfMSAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2JpZ3VpbnRfbHRfdWludDY0W3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2JpZ3VpbnRfbHRfdWludDY0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyOTgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozMDEKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCA8IGIKICAgIGl0b2IKICAgIGI8CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI5OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9sZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9iaWd1aW50X2xlOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozMDQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzA4CiAgICAvLyByZXN1bHQgPSBhX2JpZ3VpbnQgPD0gYl9iaWd1aW50CiAgICBiPD0KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzA0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9iaWd1aW50X2xlX3VpbnQ2NFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9iaWd1aW50X2xlX3VpbnQ2NDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzExCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzE0CiAgICAvLyByZXN1bHQgPSBhX2JpZ3VpbnQgPD0gYgogICAgaXRvYgogICAgYjw9CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjMxMQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9ndFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9iaWd1aW50X2d0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozMTcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzIxCiAgICAvLyByZXN1bHQgPSBhX2JpZ3VpbnQgPiBiX2JpZ3VpbnQKICAgIGI+CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjMxNwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9ndF91aW50NjRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9ndF91aW50NjQ6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjMyNAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjMyNwogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50ID4gYgogICAgaXRvYgogICAgYj4KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzI0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9iaWd1aW50X2dlW3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2JpZ3VpbnRfZ2U6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjMzMAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozMzQKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCA+PSBiX2JpZ3VpbnQKICAgIGI+PQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozMzAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBieXRlY18xIC8vIDB4MDAKICAgIGludGNfMSAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2JpZ3VpbnRfZ2VfdWludDY0W3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2JpZ3VpbnRfZ2VfdWludDY0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozMzcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozNDAKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCA+PSBiCiAgICBpdG9iCiAgICBiPj0KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzM3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9zdHJpbmdfaW5pdFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9zdHJpbmdfaW5pdDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzQzCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM0NQogICAgLy8gcmVzdWx0ID0gU3RyaW5nKCJIZWxsbywgIikgKyBhCiAgICBwdXNoYnl0ZXMgIkhlbGxvLCAiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzQzCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfc3RyaW5nX3N0YXJ0c3dpdGhbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfc3RyaW5nX3N0YXJ0c3dpdGg6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM0OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgZHVwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBleHRyYWN0IDIgMAogICAgZHVwCiAgICBjb3ZlciAyCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM1MAogICAgLy8gcmVzdWx0ID0gYS5zdGFydHN3aXRoKGIpCiAgICBsZW4KICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBsZW4KICAgID4KICAgIGJ6IHZlcmlmeV9zdHJpbmdfc3RhcnRzd2l0aF90ZXJuYXJ5X2ZhbHNlQDMKICAgIGludGNfMSAvLyAwCgp2ZXJpZnlfc3RyaW5nX3N0YXJ0c3dpdGhfdGVybmFyeV9tZXJnZUA0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozNDgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCnZlcmlmeV9zdHJpbmdfc3RhcnRzd2l0aF90ZXJuYXJ5X2ZhbHNlQDM6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM1MAogICAgLy8gcmVzdWx0ID0gYS5zdGFydHN3aXRoKGIpCiAgICBkaWcgMgogICAgaW50Y18xIC8vIDAKICAgIGRpZyAyCiAgICBleHRyYWN0MwogICAgZGlnIDIKICAgID09CiAgICBiIHZlcmlmeV9zdHJpbmdfc3RhcnRzd2l0aF90ZXJuYXJ5X21lcmdlQDQKCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9zdHJpbmdfZW5kc3dpdGhbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfc3RyaW5nX2VuZHN3aXRoOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozNTMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIGR1cAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIGR1cAogICAgY292ZXIgMgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozNTUKICAgIC8vIHJlc3VsdCA9IGEuZW5kc3dpdGgoYikKICAgIGxlbgogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGxlbgogICAgZHVwCiAgICBjb3ZlciAyCiAgICA+CiAgICBieiB2ZXJpZnlfc3RyaW5nX2VuZHN3aXRoX3Rlcm5hcnlfZmFsc2VAMwogICAgaW50Y18xIC8vIDAKCnZlcmlmeV9zdHJpbmdfZW5kc3dpdGhfdGVybmFyeV9tZXJnZUA0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozNTMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCnZlcmlmeV9zdHJpbmdfZW5kc3dpdGhfdGVybmFyeV9mYWxzZUAzOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozNTUKICAgIC8vIHJlc3VsdCA9IGEuZW5kc3dpdGgoYikKICAgIGR1cAogICAgZGlnIDIKICAgIGR1cAogICAgY292ZXIgMgogICAgLQogICAgZGlnIDUKICAgIHN3YXAKICAgIHVuY292ZXIgMgogICAgZXh0cmFjdDMKICAgIGRpZyAzCiAgICA9PQogICAgYiB2ZXJpZnlfc3RyaW5nX2VuZHN3aXRoX3Rlcm5hcnlfbWVyZ2VANAoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X3N0cmluZ19qb2luW3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X3N0cmluZ19qb2luOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozNTgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM2MAogICAgLy8gcmVzdWx0ID0gU3RyaW5nKCIsICIpLmpvaW4oKGEsIGIpKQogICAgc3dhcAogICAgcHVzaGJ5dGVzICIsICIKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM1OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2xvZ1tyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9sb2c6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM2MwogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDQKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA1CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA2CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA3CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA4CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA5CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxMgogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEzCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6Mzg1CiAgICAvLyBsb2coYSwgYiwgYywgZF9iaWd1aW50LCBlLCBmLCBnLCBoLCBpLCBqLCBhcmM0X2ssIGFyYzRfbSwgYXJjNF9uLCBvLCBzZXA9Ii0iKQogICAgdW5jb3ZlciAxMwogICAgYnl0ZWNfMiAvLyAiLSIKICAgIGNvbmNhdAogICAgdW5jb3ZlciAxMwogICAgaXRvYgogICAgY29uY2F0CiAgICBieXRlY18yIC8vICItIgogICAgY29uY2F0CiAgICB1bmNvdmVyIDEyCiAgICBjb25jYXQKICAgIGJ5dGVjXzIgLy8gIi0iCiAgICBjb25jYXQKICAgIHVuY292ZXIgMTEKICAgIGNvbmNhdAogICAgYnl0ZWNfMiAvLyAiLSIKICAgIGNvbmNhdAogICAgdW5jb3ZlciAxMAogICAgY29uY2F0CiAgICBieXRlY18yIC8vICItIgogICAgY29uY2F0CiAgICB1bmNvdmVyIDkKICAgIGNvbmNhdAogICAgYnl0ZWNfMiAvLyAiLSIKICAgIGNvbmNhdAogICAgdW5jb3ZlciA4CiAgICBjb25jYXQKICAgIGJ5dGVjXzIgLy8gIi0iCiAgICBjb25jYXQKICAgIHVuY292ZXIgNwogICAgY29uY2F0CiAgICBieXRlY18yIC8vICItIgogICAgY29uY2F0CiAgICB1bmNvdmVyIDYKICAgIGNvbmNhdAogICAgYnl0ZWNfMiAvLyAiLSIKICAgIGNvbmNhdAogICAgdW5jb3ZlciA1CiAgICBjb25jYXQKICAgIGJ5dGVjXzIgLy8gIi0iCiAgICBjb25jYXQKICAgIHVuY292ZXIgNAogICAgY29uY2F0CiAgICBieXRlY18yIC8vICItIgogICAgY29uY2F0CiAgICB1bmNvdmVyIDMKICAgIGNvbmNhdAogICAgYnl0ZWNfMiAvLyAiLSIKICAgIGNvbmNhdAogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIGJ5dGVjXzIgLy8gIi0iCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM2MwogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfbG9nZ2VkX2VycnNbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfbG9nZ2VkX2VycnM6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM4NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICBkdXAKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6Mzg5LTM5MAogICAgLy8gIyAiRVJSOjAxIgogICAgLy8gbG9nZ2VkX2Fzc2VydChhcmcgIT0gMSwgIjAxIikKICAgIGludGNfMCAvLyAxCiAgICAhPQogICAgYm56IHZlcmlmeV9sb2dnZWRfZXJyc19hZnRlcl9hc3NlcnRAMwogICAgcHVzaGJ5dGVzICJFUlI6MDEiCiAgICBsb2cKICAgIGVyciAvLyBFUlI6MDEKCnZlcmlmeV9sb2dnZWRfZXJyc19hZnRlcl9hc3NlcnRAMzoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzkxLTM5MgogICAgLy8gIyAiRVJSOmFyZzAyOmFyZyBpcyB0d28iCiAgICAvLyBsb2dnZWRfYXNzZXJ0KGFyZyAhPSAyLCAiYXJnMDIiLCBlcnJvcl9tZXNzYWdlPSJhcmcgaXMgdHdvIikKICAgIGR1cAogICAgcHVzaGludCAyCiAgICAhPQogICAgYm56IHZlcmlmeV9sb2dnZWRfZXJyc19hZnRlcl9hc3NlcnRANQogICAgcHVzaGJ5dGVzICJFUlI6YXJnMDI6YXJnIGlzIHR3byIKICAgIGxvZwogICAgZXJyIC8vIEVSUjphcmcwMjphcmcgaXMgdHdvCgp2ZXJpZnlfbG9nZ2VkX2VycnNfYWZ0ZXJfYXNzZXJ0QDU6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM5My0zOTQKICAgIC8vICMgIkFFUjphcmcwMyIKICAgIC8vIGxvZ2dlZF9hc3NlcnQoYXJnICE9IDMsICJhcmcwMyIsIHByZWZpeD0iQUVSIikKICAgIGR1cAogICAgcHVzaGludCAzCiAgICAhPQogICAgYm56IHZlcmlmeV9sb2dnZWRfZXJyc19hZnRlcl9hc3NlcnRANwogICAgcHVzaGJ5dGVzICJBRVI6YXJnMDMiCiAgICBsb2cKICAgIGVyciAvLyBBRVI6YXJnMDMKCnZlcmlmeV9sb2dnZWRfZXJyc19hZnRlcl9hc3NlcnRANzoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6Mzk1LTM5NgogICAgLy8gIyAiQUVSOmFyZzA0OmFyZyBpcyA0IgogICAgLy8gbG9nZ2VkX2Fzc2VydChhcmcgIT0gNCwgImFyZzA0IiwgZXJyb3JfbWVzc2FnZT0iYXJnIGlzIDQiLCBwcmVmaXg9IkFFUiIpCiAgICBkdXAKICAgIHB1c2hpbnQgNAogICAgIT0KICAgIGJueiB2ZXJpZnlfbG9nZ2VkX2VycnNfYWZ0ZXJfYXNzZXJ0QDkKICAgIHB1c2hieXRlcyAiQUVSOmFyZzA0OmFyZyBpcyA0IgogICAgbG9nCiAgICBlcnIgLy8gQUVSOmFyZzA0OmFyZyBpcyA0Cgp2ZXJpZnlfbG9nZ2VkX2VycnNfYWZ0ZXJfYXNzZXJ0QDk6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM5OC0zOTkKICAgIC8vICMgIkVSUjphcmcwNSIKICAgIC8vIGlmIGFyZyA9PSA1OgogICAgZHVwCiAgICBwdXNoaW50IDUKICAgID09CiAgICBieiB2ZXJpZnlfbG9nZ2VkX2VycnNfYWZ0ZXJfaWZfZWxzZUAxMQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo0MDAKICAgIC8vIGxvZ2dlZF9lcnIoImFyZzA1IikKICAgIHB1c2hieXRlcyAiRVJSOmFyZzA1IgogICAgbG9nCiAgICBlcnIgLy8gRVJSOmFyZzA1Cgp2ZXJpZnlfbG9nZ2VkX2VycnNfYWZ0ZXJfaWZfZWxzZUAxMToKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NDAxLTQwMgogICAgLy8gIyAiRVJSOmFyZzA2OmFyZyB3YXMgNiIKICAgIC8vIGlmIGFyZyA9PSA2OgogICAgZHVwCiAgICBwdXNoaW50IDYKICAgID09CiAgICBieiB2ZXJpZnlfbG9nZ2VkX2VycnNfYWZ0ZXJfaWZfZWxzZUAxMwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo0MDMKICAgIC8vIGxvZ2dlZF9lcnIoIjA2IiwgZXJyb3JfbWVzc2FnZT0iYXJnIHdhcyA2IikKICAgIHB1c2hieXRlcyAiRVJSOjA2OmFyZyB3YXMgNiIKICAgIGxvZwogICAgZXJyIC8vIEVSUjowNjphcmcgd2FzIDYKCnZlcmlmeV9sb2dnZWRfZXJyc19hZnRlcl9pZl9lbHNlQDEzOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo0MDQtNDA1CiAgICAvLyAjICJBRVI6YXJnMDciCiAgICAvLyBpZiBhcmcgPT0gNzoKICAgIGR1cAogICAgcHVzaGludCA3CiAgICA9PQogICAgYnogdmVyaWZ5X2xvZ2dlZF9lcnJzX2FmdGVyX2lmX2Vsc2VAMTUKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NDA2CiAgICAvLyBsb2dnZWRfZXJyKCJhcmcwNyIsIHByZWZpeD0iQUVSIikKICAgIHB1c2hieXRlcyAiQUVSOmFyZzA3IgogICAgbG9nCiAgICBlcnIgLy8gQUVSOmFyZzA3Cgp2ZXJpZnlfbG9nZ2VkX2VycnNfYWZ0ZXJfaWZfZWxzZUAxNToKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NDA3LTQwOAogICAgLy8gIyAiQUVSOmFyZzA4OmFyZyBpcyBzZXZlbiAoMDgpIgogICAgLy8gaWYgYXJnID09IDg6CiAgICBkdXAKICAgIHB1c2hpbnQgOAogICAgPT0KICAgIGJ6IHZlcmlmeV9sb2dnZWRfZXJyc19hZnRlcl9pZl9lbHNlQDE3CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjQwOQogICAgLy8gbG9nZ2VkX2VycigiYXJnMDgiLCBlcnJvcl9tZXNzYWdlPSJhcmcgaXMgZWlnaHQgKDA4KSIsIHByZWZpeD0iQUVSIikKICAgIHB1c2hieXRlcyAiQUVSOmFyZzA4OmFyZyBpcyBlaWdodCAoMDgpIgogICAgbG9nCiAgICBlcnIgLy8gQUVSOmFyZzA4OmFyZyBpcyBlaWdodCAoMDgpCgp2ZXJpZnlfbG9nZ2VkX2VycnNfYWZ0ZXJfaWZfZWxzZUAxNzoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6Mzg3CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4K",
|
|
1660
|
+
"approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAxIDAKICAgIGJ5dGVjYmxvY2sgMHgxNTFmN2M3NSAweDAwICItIiAweDE1MWY3Yzc1MDAyMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxOAogICAgLy8gY2xhc3MgUHJpbWl0aXZlT3BzQ29udHJhY3QoQVJDNENvbnRyYWN0KToKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX19fYWxnb3B5X2RlZmF1bHRfY3JlYXRlQDY4CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQKICAgIHB1c2hieXRlc3MgMHg3MjVjNjkyYiAweDE3MzE0NTU5IDB4NTNmMzQ4OTMgMHg4OGM4YjI2OSAweGE0NjRiN2FiIDB4OWM4YjExYjggMHg2ZjQwNjU0ZSAweGVjOWEyOTc0IDB4Yzc5MzcwOGYgMHg3ZGRiNzQ5OSAweGEyMWM0NDNkIDB4NmU3ZmIyMTIgMHhiMDA3ZmNiMCAweDJlYmMyMGQ0IDB4YjA5NTRiNjYgMHhkZDE0MGFlZiAweGFjZTQ3NGRhIDB4YmE2OTQ5OTAgMHg2ZGI1ODFjMCAweDkxYzhkYjg5IDB4ZGJlNzcxNTggMHg5YTBmMjJlMSAweDY0MDMzZDM3IDB4MmE3MjM3YzUgMHhlM2E5NDQ1OCAweDQyZjg3ZjdkIDB4MmI1NTQyYTQgMHg5YmUyZmJlOSAweDFjZDkyNTE1IDB4NjRlMTcwNWMgMHhmMTI3MWM1MCAweDJhYjYzYjcwIDB4ODM0YmI3ZDIgMHg1MzE2MjBkNyAweDNmYjllNzY5IDB4ZmE4ZGIwYmMgMHhhNzJlYTQ4NSAweGI3YjBiYTE5IDB4NzQ0NjBjNDIgMHhhYjMyMDczOCAweDUyYWQ0NjU0IDB4MTAxNTYzOTkgMHgwZjA3NTk1NyAweGJkODQzZGZmIDB4YjM3N2QzODEgMHg4OTc2NzI2NSAweDQ1NmI0YjIzIDB4MzNkMWI4OGMgMHg2YmY5NzNlYSAweDY3Y2Q2YmIyIDB4M2Y1ODgwNWEgMHgxZTEzMDAzOSAweDUwOWRjOTFkIDB4YTU2NGEyMDIgMHgyMzY1MDc2MyAweGY4YzhmOGQ1IDB4MjNmYWY3YTQgMHg3ZDBhZmUxNSAweDQ4NTgxYWRmIDB4M2RhZWY5Y2QgMHhlZDY3NTVlMSAvLyBtZXRob2QgInZlcmlmeV91aW50NjRfaW5pdChieXRlW10pdWludDY0IiwgbWV0aG9kICJ2ZXJpZnlfdWludDY0X2FkZCh1aW50NjQsdWludDY0KXVpbnQ2NCIsIG1ldGhvZCAidmVyaWZ5X3VpbnQ2NF9zdWIodWludDY0LHVpbnQ2NCl1aW50NjQiLCBtZXRob2QgInZlcmlmeV91aW50NjRfbXVsKHVpbnQ2NCx1aW50NjQpdWludDY0IiwgbWV0aG9kICJ2ZXJpZnlfdWludDY0X2Rpdih1aW50NjQsdWludDY0KXVpbnQ2NCIsIG1ldGhvZCAidmVyaWZ5X3VpbnQ2NF9tb2QodWludDY0LHVpbnQ2NCl1aW50NjQiLCBtZXRob2QgInZlcmlmeV91aW50NjRfYW5kKHVpbnQ2NCx1aW50NjQpdWludDY0IiwgbWV0aG9kICJ2ZXJpZnlfdWludDY0X29yKHVpbnQ2NCx1aW50NjQpdWludDY0IiwgbWV0aG9kICJ2ZXJpZnlfdWludDY0X3hvcih1aW50NjQsdWludDY0KXVpbnQ2NCIsIG1ldGhvZCAidmVyaWZ5X3VpbnQ2NF9ub3QodWludDY0KXVpbnQ2NCIsIG1ldGhvZCAidmVyaWZ5X3VpbnQ2NF9sc2hpZnQodWludDY0LHVpbnQ2NCl1aW50NjQiLCBtZXRob2QgInZlcmlmeV91aW50NjRfcnNoaWZ0KHVpbnQ2NCx1aW50NjQpdWludDY0IiwgbWV0aG9kICJ2ZXJpZnlfdWludDY0X3Bvdyh1aW50NjQsdWludDY0KXVpbnQ2NCIsIG1ldGhvZCAidmVyaWZ5X3VpbnQ2NF9lcSh1aW50NjQsdWludDY0KWJvb2wiLCBtZXRob2QgInZlcmlmeV91aW50NjRfbmUodWludDY0LHVpbnQ2NClib29sIiwgbWV0aG9kICJ2ZXJpZnlfdWludDY0X2x0KHVpbnQ2NCx1aW50NjQpYm9vbCIsIG1ldGhvZCAidmVyaWZ5X3VpbnQ2NF9sZSh1aW50NjQsdWludDY0KWJvb2wiLCBtZXRob2QgInZlcmlmeV91aW50NjRfZ3QodWludDY0LHVpbnQ2NClib29sIiwgbWV0aG9kICJ2ZXJpZnlfdWludDY0X2dlKHVpbnQ2NCx1aW50NjQpYm9vbCIsIG1ldGhvZCAidmVyaWZ5X2J5dGVzX2luaXQodWludDY0KWJ5dGVbXSIsIG1ldGhvZCAidmVyaWZ5X2J5dGVzX2FkZChieXRlW10sYnl0ZVtdLHVpbnQ2NCx1aW50NjQpYnl0ZVtdIiwgbWV0aG9kICJ2ZXJpZnlfYnl0ZXNfZXEoYnl0ZVtdLGJ5dGVbXSlib29sIiwgbWV0aG9kICJ2ZXJpZnlfYnl0ZXNfbmUoYnl0ZVtdLGJ5dGVbXSlib29sIiwgbWV0aG9kICJ2ZXJpZnlfYnl0ZXNfYW5kKGJ5dGVbXSxieXRlW10pYnl0ZVtdIiwgbWV0aG9kICJ2ZXJpZnlfYnl0ZXNfb3IoYnl0ZVtdLGJ5dGVbXSlieXRlW10iLCBtZXRob2QgInZlcmlmeV9ieXRlc194b3IoYnl0ZVtdLGJ5dGVbXSlieXRlW10iLCBtZXRob2QgInZlcmlmeV9ieXRlc19ub3QoYnl0ZVtdLHVpbnQ2NClieXRlW10iLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X2FkZChieXRlW10sYnl0ZVtdKWJ5dGVbXSIsIG1ldGhvZCAidmVyaWZ5X2JpZ3VpbnRfYWRkX3VpbnQ2NChieXRlW10sdWludDY0KWJ5dGVbXSIsIG1ldGhvZCAidmVyaWZ5X2JpZ3VpbnRfc3ViKGJ5dGVbXSxieXRlW10pYnl0ZVtdIiwgbWV0aG9kICJ2ZXJpZnlfYmlndWludF9zdWJfdWludDY0KGJ5dGVbXSx1aW50NjQpYnl0ZVtdIiwgbWV0aG9kICJ2ZXJpZnlfYmlndWludF9tdWwoYnl0ZVtdLGJ5dGVbXSlieXRlW10iLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X211bF91aW50NjQoYnl0ZVtdLHVpbnQ2NClieXRlW10iLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X2RpdihieXRlW10sYnl0ZVtdKWJ5dGVbXSIsIG1ldGhvZCAidmVyaWZ5X2JpZ3VpbnRfZGl2X3VpbnQ2NChieXRlW10sdWludDY0KWJ5dGVbXSIsIG1ldGhvZCAidmVyaWZ5X2JpZ3VpbnRfbW9kKGJ5dGVbXSxieXRlW10pYnl0ZVtdIiwgbWV0aG9kICJ2ZXJpZnlfYmlndWludF9tb2RfdWludDY0KGJ5dGVbXSx1aW50NjQpYnl0ZVtdIiwgbWV0aG9kICJ2ZXJpZnlfYmlndWludF9hbmQoYnl0ZVtdLGJ5dGVbXSlieXRlW10iLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X2FuZF91aW50NjQoYnl0ZVtdLHVpbnQ2NClieXRlW10iLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X29yKGJ5dGVbXSxieXRlW10pYnl0ZVtdIiwgbWV0aG9kICJ2ZXJpZnlfYmlndWludF9vcl91aW50NjQoYnl0ZVtdLHVpbnQ2NClieXRlW10iLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X3hvcihieXRlW10sYnl0ZVtdKWJ5dGVbXSIsIG1ldGhvZCAidmVyaWZ5X2JpZ3VpbnRfeG9yX3VpbnQ2NChieXRlW10sdWludDY0KWJ5dGVbXSIsIG1ldGhvZCAidmVyaWZ5X2JpZ3VpbnRfZXEoYnl0ZVtdLGJ5dGVbXSlib29sIiwgbWV0aG9kICJ2ZXJpZnlfYmlndWludF9lcV91aW50NjQoYnl0ZVtdLHVpbnQ2NClib29sIiwgbWV0aG9kICJ2ZXJpZnlfYmlndWludF9uZShieXRlW10sYnl0ZVtdKWJvb2wiLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X25lX3VpbnQ2NChieXRlW10sdWludDY0KWJvb2wiLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X2x0KGJ5dGVbXSxieXRlW10pYm9vbCIsIG1ldGhvZCAidmVyaWZ5X2JpZ3VpbnRfbHRfdWludDY0KGJ5dGVbXSx1aW50NjQpYm9vbCIsIG1ldGhvZCAidmVyaWZ5X2JpZ3VpbnRfbGUoYnl0ZVtdLGJ5dGVbXSlib29sIiwgbWV0aG9kICJ2ZXJpZnlfYmlndWludF9sZV91aW50NjQoYnl0ZVtdLHVpbnQ2NClib29sIiwgbWV0aG9kICJ2ZXJpZnlfYmlndWludF9ndChieXRlW10sYnl0ZVtdKWJvb2wiLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X2d0X3VpbnQ2NChieXRlW10sdWludDY0KWJvb2wiLCBtZXRob2QgInZlcmlmeV9iaWd1aW50X2dlKGJ5dGVbXSxieXRlW10pYm9vbCIsIG1ldGhvZCAidmVyaWZ5X2JpZ3VpbnRfZ2VfdWludDY0KGJ5dGVbXSx1aW50NjQpYm9vbCIsIG1ldGhvZCAidmVyaWZ5X3N0cmluZ19pbml0KHN0cmluZylzdHJpbmciLCBtZXRob2QgInZlcmlmeV9zdHJpbmdfc3RhcnRzd2l0aChzdHJpbmcsc3RyaW5nKWJvb2wiLCBtZXRob2QgInZlcmlmeV9zdHJpbmdfZW5kc3dpdGgoc3RyaW5nLHN0cmluZylib29sIiwgbWV0aG9kICJ2ZXJpZnlfc3RyaW5nX2pvaW4oc3RyaW5nLHN0cmluZylzdHJpbmciLCBtZXRob2QgInZlcmlmeV9sb2coc3RyaW5nLHVpbnQ2NCxieXRlW10sYnl0ZVtdLGJvb2wsc3RyaW5nLHVpbnQ2NCx1aW50MjU2LHVmaXhlZDMyeDgsdWZpeGVkMjU2eDE2LGJ5dGVbXSxieXRlW10sYnl0ZVtdLGJ5dGVbNV0pdm9pZCIsIG1ldGhvZCAidmVyaWZ5X2xvZ2dlZF9lcnJzKHVpbnQ2NCl2b2lkIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggdmVyaWZ5X3VpbnQ2NF9pbml0IHZlcmlmeV91aW50NjRfYWRkIHZlcmlmeV91aW50NjRfc3ViIHZlcmlmeV91aW50NjRfbXVsIHZlcmlmeV91aW50NjRfZGl2IHZlcmlmeV91aW50NjRfbW9kIHZlcmlmeV91aW50NjRfYW5kIHZlcmlmeV91aW50NjRfb3IgdmVyaWZ5X3VpbnQ2NF94b3IgdmVyaWZ5X3VpbnQ2NF9ub3QgdmVyaWZ5X3VpbnQ2NF9sc2hpZnQgdmVyaWZ5X3VpbnQ2NF9yc2hpZnQgdmVyaWZ5X3VpbnQ2NF9wb3cgdmVyaWZ5X3VpbnQ2NF9lcSB2ZXJpZnlfdWludDY0X25lIHZlcmlmeV91aW50NjRfbHQgdmVyaWZ5X3VpbnQ2NF9sZSB2ZXJpZnlfdWludDY0X2d0IHZlcmlmeV91aW50NjRfZ2UgdmVyaWZ5X2J5dGVzX2luaXQgdmVyaWZ5X2J5dGVzX2FkZCB2ZXJpZnlfYnl0ZXNfZXEgdmVyaWZ5X2J5dGVzX25lIHZlcmlmeV9ieXRlc19hbmQgdmVyaWZ5X2J5dGVzX29yIHZlcmlmeV9ieXRlc194b3IgdmVyaWZ5X2J5dGVzX25vdCB2ZXJpZnlfYmlndWludF9hZGQgdmVyaWZ5X2JpZ3VpbnRfYWRkX3VpbnQ2NCB2ZXJpZnlfYmlndWludF9zdWIgdmVyaWZ5X2JpZ3VpbnRfc3ViX3VpbnQ2NCB2ZXJpZnlfYmlndWludF9tdWwgdmVyaWZ5X2JpZ3VpbnRfbXVsX3VpbnQ2NCB2ZXJpZnlfYmlndWludF9kaXYgdmVyaWZ5X2JpZ3VpbnRfZGl2X3VpbnQ2NCB2ZXJpZnlfYmlndWludF9tb2QgdmVyaWZ5X2JpZ3VpbnRfbW9kX3VpbnQ2NCB2ZXJpZnlfYmlndWludF9hbmQgdmVyaWZ5X2JpZ3VpbnRfYW5kX3VpbnQ2NCB2ZXJpZnlfYmlndWludF9vciB2ZXJpZnlfYmlndWludF9vcl91aW50NjQgdmVyaWZ5X2JpZ3VpbnRfeG9yIHZlcmlmeV9iaWd1aW50X3hvcl91aW50NjQgdmVyaWZ5X2JpZ3VpbnRfZXEgdmVyaWZ5X2JpZ3VpbnRfZXFfdWludDY0IHZlcmlmeV9iaWd1aW50X25lIHZlcmlmeV9iaWd1aW50X25lX3VpbnQ2NCB2ZXJpZnlfYmlndWludF9sdCB2ZXJpZnlfYmlndWludF9sdF91aW50NjQgdmVyaWZ5X2JpZ3VpbnRfbGUgdmVyaWZ5X2JpZ3VpbnRfbGVfdWludDY0IHZlcmlmeV9iaWd1aW50X2d0IHZlcmlmeV9iaWd1aW50X2d0X3VpbnQ2NCB2ZXJpZnlfYmlndWludF9nZSB2ZXJpZnlfYmlndWludF9nZV91aW50NjQgdmVyaWZ5X3N0cmluZ19pbml0IHZlcmlmeV9zdHJpbmdfc3RhcnRzd2l0aCB2ZXJpZnlfc3RyaW5nX2VuZHN3aXRoIHZlcmlmeV9zdHJpbmdfam9pbiB2ZXJpZnlfbG9nIHZlcmlmeV9sb2dnZWRfZXJycwogICAgZXJyCgptYWluX19fYWxnb3B5X2RlZmF1bHRfY3JlYXRlQDY4OgogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgICYmCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV91aW50NjRfaW5pdFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV91aW50NjRfaW5pdDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyMQogICAgLy8gcmVzdWx0ID0gb3AuYnRvaShyYXdfdmFsdWUpCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaXRvYgogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X3VpbnQ2NF9hZGRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X2FkZDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI2CiAgICAvLyByZXN1bHQgPSBhICsgYgogICAgKwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyNAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGl0b2IKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV91aW50NjRfc3ViW3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X3VpbnQ2NF9zdWI6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozMQogICAgLy8gcmVzdWx0ID0gYSAtIGIKICAgIC0KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpdG9iCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfdWludDY0X211bFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV91aW50NjRfbXVsOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozNAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzYKICAgIC8vIHJlc3VsdCA9IGEgKiBiCiAgICAqCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaXRvYgogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X3VpbnQ2NF9kaXZbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X2RpdjoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjQxCiAgICAvLyByZXN1bHQgPSBhIC8vIGIKICAgIC8KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpdG9iCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfdWludDY0X21vZFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV91aW50NjRfbW9kOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo0NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NDYKICAgIC8vIHJlc3VsdCA9IGEgJSBiCiAgICAlCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjQ0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaXRvYgogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X3VpbnQ2NF9hbmRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X2FuZDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NDkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjUxCiAgICAvLyByZXN1bHQgPSBhICYgYgogICAgJgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo0OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGl0b2IKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV91aW50NjRfb3Jbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X29yOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo1NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NTYKICAgIC8vIHJlc3VsdCA9IGEgfCBiCiAgICB8CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjU0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaXRvYgogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X3VpbnQ2NF94b3Jbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X3hvcjoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NTkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjYxCiAgICAvLyByZXN1bHQgPSBhIF4gYgogICAgXgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo1OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGl0b2IKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV91aW50NjRfbm90W3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X3VpbnQ2NF9ub3Q6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjY0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo2NgogICAgLy8gcmVzdWx0ID0gfmEKICAgIH4KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NjQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpdG9iCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfdWludDY0X2xzaGlmdFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV91aW50NjRfbHNoaWZ0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo2OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NzEKICAgIC8vIHJlc3VsdCA9IGEgPDwgYgogICAgc2hsCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjY5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaXRvYgogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X3VpbnQ2NF9yc2hpZnRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X3JzaGlmdDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NzQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5Ojc2CiAgICAvLyByZXN1bHQgPSBhID4+IGIKICAgIHNocgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo3NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGl0b2IKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV91aW50NjRfcG93W3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X3VpbnQ2NF9wb3c6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5Ojc5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo4MQogICAgLy8gcmVzdWx0ID0gYSoqYgogICAgZXhwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5Ojc5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaXRvYgogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X3VpbnQ2NF9lcVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV91aW50NjRfZXE6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5Ojg0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo4NgogICAgLy8gcmVzdWx0ID0gYSA9PSBiCiAgICA9PQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo4NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfdWludDY0X25lW3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X3VpbnQ2NF9uZToKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6ODkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjkxCiAgICAvLyByZXN1bHQgPSBhICE9IGIKICAgICE9CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5Ojg5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV91aW50NjRfbHRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X2x0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo5NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6OTYKICAgIC8vIHJlc3VsdCA9IGEgPCBiCiAgICA8CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5Ojk0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV91aW50NjRfbGVbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X2xlOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo5OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTAxCiAgICAvLyByZXN1bHQgPSBhIDw9IGIKICAgIDw9CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5Ojk5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV91aW50NjRfZ3Rbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X2d0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxMDQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjEwNgogICAgLy8gcmVzdWx0ID0gYSA+IGIKICAgID4KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTA0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV91aW50NjRfZ2Vbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfdWludDY0X2dlOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxMDkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjExMQogICAgLy8gcmVzdWx0ID0gYSA+PSBiCiAgICA+PQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxMDkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBieXRlY18xIC8vIDB4MDAKICAgIGludGNfMSAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2J5dGVzX2luaXRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYnl0ZXNfaW5pdDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTE0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxMTYKICAgIC8vIHJlc3VsdCA9IG9wLml0b2IocmF3X3ZhbHVlKQogICAgaXRvYgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxMTQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBwdXNoYnl0ZXMgMHgxNTFmN2M3NTAwMDgKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYnl0ZXNfYWRkW3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2J5dGVzX2FkZDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTE5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA0CiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjEyMwogICAgLy8gYSA9IG9wLmJ6ZXJvKHBhZF9hX3NpemUpICsgYQogICAgc3dhcAogICAgYnplcm8KICAgIHVuY292ZXIgMwogICAgY29uY2F0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjEyNAogICAgLy8gYiA9IG9wLmJ6ZXJvKHBhZF9iX3NpemUpICsgYgogICAgc3dhcAogICAgYnplcm8KICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjEyNQogICAgLy8gcmVzdWx0ID0gYSArIGIKICAgIGNvbmNhdAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxMjYKICAgIC8vIHJlc3VsdCA9IG9wLnNoYTI1NihyZXN1bHQpCiAgICBzaGEyNTYKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTE5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMyAvLyAweDE1MWY3Yzc1MDAyMAogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9ieXRlc19lcVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9ieXRlc19lcToKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTI5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjEzMQogICAgLy8gcmVzdWx0ID0gYSA9PSBiCiAgICA9PQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxMjkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBieXRlY18xIC8vIDB4MDAKICAgIGludGNfMSAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2J5dGVzX25lW3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2J5dGVzX25lOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxMzQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTM2CiAgICAvLyByZXN1bHQgPSBhICE9IGIKICAgICE9CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjEzNAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYnl0ZXNfYW5kW3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2J5dGVzX2FuZDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTM5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE0MQogICAgLy8gcmVzdWx0ID0gYSAmIGIKICAgIGImCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjEzOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYnl0ZXNfb3Jbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYnl0ZXNfb3I6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE0NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxNDYKICAgIC8vIHJlc3VsdCA9IGEgfCBiCiAgICBifAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxNDQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2J5dGVzX3hvcltyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9ieXRlc194b3I6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE0OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxNTEKICAgIC8vIHJlc3VsdCA9IGEgXiBiCiAgICBiXgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxNDkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2J5dGVzX25vdFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9ieXRlc19ub3Q6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE1NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE1NgogICAgLy8gYSA9IG9wLmJ6ZXJvKHBhZF9zaXplKSArIGEKICAgIGJ6ZXJvCiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTU3CiAgICAvLyByZXN1bHQgPSB+YQogICAgYn4KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTU4CiAgICAvLyByZXN1bHQgPSBvcC5zaGEyNTYocmVzdWx0KQogICAgc2hhMjU2CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE1NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzMgLy8gMHgxNTFmN2M3NTAwMjAKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9hZGRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9hZGQ6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE2MQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxNjUKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCArIGJfYmlndWludAogICAgYisKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTYxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9iaWd1aW50X2FkZF91aW50NjRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9hZGRfdWludDY0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxNjgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxNzEKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCArIGIKICAgIGl0b2IKICAgIGIrCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE2OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9zdWJbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9zdWI6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE3NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxNzgKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCAtIGJfYmlndWludAogICAgYi0KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTc0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9iaWd1aW50X3N1Yl91aW50NjRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9zdWJfdWludDY0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxODEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxODQKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCAtIGIKICAgIGl0b2IKICAgIGItCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE4MQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9tdWxbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9tdWw6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE4NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxOTEKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCAqIGJfYmlndWludAogICAgYioKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MTg3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9iaWd1aW50X211bF91aW50NjRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9tdWxfdWludDY0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxOTQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToxOTcKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCAqIGIKICAgIGl0b2IKICAgIGIqCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjE5NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9kaXZbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9kaXY6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjIwMAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyMDQKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCAvLyBiX2JpZ3VpbnQKICAgIGIvCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjIwMAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9kaXZfdWludDY0W3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2JpZ3VpbnRfZGl2X3VpbnQ2NDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjA3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjEwCiAgICAvLyByZXN1bHQgPSBhX2JpZ3VpbnQgLy8gYgogICAgaXRvYgogICAgYi8KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjA3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9iaWd1aW50X21vZFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9iaWd1aW50X21vZDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjEzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjIxNwogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50ICUgYl9iaWd1aW50CiAgICBiJQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyMTMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2JpZ3VpbnRfbW9kX3VpbnQ2NFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9iaWd1aW50X21vZF91aW50NjQ6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjIyMAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjIyMwogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50ICUgYgogICAgaXRvYgogICAgYiUKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjIwCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9iaWd1aW50X2FuZFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9iaWd1aW50X2FuZDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjI2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjIzMAogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50ICYgYl9iaWd1aW50CiAgICBiJgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyMjYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2JpZ3VpbnRfYW5kX3VpbnQ2NFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9iaWd1aW50X2FuZF91aW50NjQ6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjIzMwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjIzNgogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50ICYgYgogICAgaXRvYgogICAgYiYKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjMzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9iaWd1aW50X29yW3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2JpZ3VpbnRfb3I6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjIzOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyNDMKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCB8IGJfYmlndWludAogICAgYnwKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjM5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9iaWd1aW50X29yX3VpbnQ2NFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9iaWd1aW50X29yX3VpbnQ2NDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjQ2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjQ5CiAgICAvLyByZXN1bHQgPSBhX2JpZ3VpbnQgfCBiCiAgICBpdG9iCiAgICBifAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyNDYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2JpZ3VpbnRfeG9yW3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2JpZ3VpbnRfeG9yOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyNTIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjU2CiAgICAvLyByZXN1bHQgPSBhX2JpZ3VpbnQgXiBiX2JpZ3VpbnQKICAgIGJeCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI1MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF94b3JfdWludDY0W3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2JpZ3VpbnRfeG9yX3VpbnQ2NDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjU5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjYyCiAgICAvLyByZXN1bHQgPSBhX2JpZ3VpbnQgXiBiCiAgICBpdG9iCiAgICBiXgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyNTkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2JpZ3VpbnRfZXFbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9lcToKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjY1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI2OQogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50ID09IGJfYmlndWludAogICAgYj09CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI2NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9lcV91aW50NjRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9lcV91aW50NjQ6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI3MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI3NQogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50ID09IGIKICAgIGl0b2IKICAgIGI9PQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyNzIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBieXRlY18xIC8vIDB4MDAKICAgIGludGNfMSAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2JpZ3VpbnRfbmVbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9uZToKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6Mjc4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI4MgogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50ICE9IGJfYmlndWludAogICAgYiE9CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI3OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9uZV91aW50NjRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9uZV91aW50NjQ6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI4NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI4OAogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50ICE9IGIKICAgIGl0b2IKICAgIGIhPQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyODUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBieXRlY18xIC8vIDB4MDAKICAgIGludGNfMSAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2JpZ3VpbnRfbHRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9sdDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MjkxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI5NQogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50IDwgYl9iaWd1aW50CiAgICBiPAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyOTEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBieXRlY18xIC8vIDB4MDAKICAgIGludGNfMSAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2JpZ3VpbnRfbHRfdWludDY0W3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2JpZ3VpbnRfbHRfdWludDY0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weToyOTgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozMDEKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCA8IGIKICAgIGl0b2IKICAgIGI8CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjI5OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9sZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9iaWd1aW50X2xlOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozMDQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzA4CiAgICAvLyByZXN1bHQgPSBhX2JpZ3VpbnQgPD0gYl9iaWd1aW50CiAgICBiPD0KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzA0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9iaWd1aW50X2xlX3VpbnQ2NFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9iaWd1aW50X2xlX3VpbnQ2NDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzExCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzE0CiAgICAvLyByZXN1bHQgPSBhX2JpZ3VpbnQgPD0gYgogICAgaXRvYgogICAgYjw9CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjMxMQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9ndFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9iaWd1aW50X2d0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozMTcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzIxCiAgICAvLyByZXN1bHQgPSBhX2JpZ3VpbnQgPiBiX2JpZ3VpbnQKICAgIGI+CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjMxNwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfYmlndWludF9ndF91aW50NjRbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfYmlndWludF9ndF91aW50NjQ6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjMyNAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjMyNwogICAgLy8gcmVzdWx0ID0gYV9iaWd1aW50ID4gYgogICAgaXRvYgogICAgYj4KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzI0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9iaWd1aW50X2dlW3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2JpZ3VpbnRfZ2U6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjMzMAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBleHRyYWN0IDIgMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozMzQKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCA+PSBiX2JpZ3VpbnQKICAgIGI+PQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozMzAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBieXRlY18xIC8vIDB4MDAKICAgIGludGNfMSAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2JpZ3VpbnRfZ2VfdWludDY0W3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X2JpZ3VpbnRfZ2VfdWludDY0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozMzcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozNDAKICAgIC8vIHJlc3VsdCA9IGFfYmlndWludCA+PSBiCiAgICBpdG9iCiAgICBiPj0KICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzM3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9zdHJpbmdfaW5pdFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9zdHJpbmdfaW5pdDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzQzCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM0NQogICAgLy8gcmVzdWx0ID0gU3RyaW5nKCJIZWxsbywgIikgKyBhCiAgICBwdXNoYnl0ZXMgIkhlbGxvLCAiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzQzCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfc3RyaW5nX3N0YXJ0c3dpdGhbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfc3RyaW5nX3N0YXJ0c3dpdGg6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM0OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgZHVwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBleHRyYWN0IDIgMAogICAgZHVwCiAgICBjb3ZlciAyCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM1MAogICAgLy8gcmVzdWx0ID0gYS5zdGFydHN3aXRoKGIpCiAgICBsZW4KICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBsZW4KICAgID4KICAgIGJ6IHZlcmlmeV9zdHJpbmdfc3RhcnRzd2l0aF90ZXJuYXJ5X2ZhbHNlQDMKICAgIGludGNfMSAvLyAwCgp2ZXJpZnlfc3RyaW5nX3N0YXJ0c3dpdGhfdGVybmFyeV9tZXJnZUA0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozNDgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCnZlcmlmeV9zdHJpbmdfc3RhcnRzd2l0aF90ZXJuYXJ5X2ZhbHNlQDM6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM1MAogICAgLy8gcmVzdWx0ID0gYS5zdGFydHN3aXRoKGIpCiAgICBkaWcgMgogICAgaW50Y18xIC8vIDAKICAgIGRpZyAyCiAgICBleHRyYWN0MwogICAgZGlnIDIKICAgID09CiAgICBiIHZlcmlmeV9zdHJpbmdfc3RhcnRzd2l0aF90ZXJuYXJ5X21lcmdlQDQKCgovLyB0ZXN0cy5hcnRpZmFjdHMuUHJpbWl0aXZlT3BzLmNvbnRyYWN0LlByaW1pdGl2ZU9wc0NvbnRyYWN0LnZlcmlmeV9zdHJpbmdfZW5kc3dpdGhbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfc3RyaW5nX2VuZHN3aXRoOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozNTMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIGR1cAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZXh0cmFjdCAyIDAKICAgIGR1cAogICAgY292ZXIgMgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozNTUKICAgIC8vIHJlc3VsdCA9IGEuZW5kc3dpdGgoYikKICAgIGxlbgogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGxlbgogICAgZHVwCiAgICBjb3ZlciAyCiAgICA+CiAgICBieiB2ZXJpZnlfc3RyaW5nX2VuZHN3aXRoX3Rlcm5hcnlfZmFsc2VAMwogICAgaW50Y18xIC8vIDAKCnZlcmlmeV9zdHJpbmdfZW5kc3dpdGhfdGVybmFyeV9tZXJnZUA0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozNTMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCnZlcmlmeV9zdHJpbmdfZW5kc3dpdGhfdGVybmFyeV9mYWxzZUAzOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozNTUKICAgIC8vIHJlc3VsdCA9IGEuZW5kc3dpdGgoYikKICAgIGR1cAogICAgZGlnIDIKICAgIGR1cAogICAgY292ZXIgMgogICAgLQogICAgZGlnIDUKICAgIHN3YXAKICAgIHVuY292ZXIgMgogICAgZXh0cmFjdDMKICAgIGRpZyAzCiAgICA9PQogICAgYiB2ZXJpZnlfc3RyaW5nX2VuZHN3aXRoX3Rlcm5hcnlfbWVyZ2VANAoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X3N0cmluZ19qb2luW3JvdXRpbmddKCkgLT4gdm9pZDoKdmVyaWZ5X3N0cmluZ19qb2luOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTozNTgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGV4dHJhY3QgMiAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM2MAogICAgLy8gcmVzdWx0ID0gU3RyaW5nKCIsICIpLmpvaW4oKGEsIGIpKQogICAgc3dhcAogICAgcHVzaGJ5dGVzICIsICIKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM1OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5QcmltaXRpdmVPcHMuY29udHJhY3QuUHJpbWl0aXZlT3BzQ29udHJhY3QudmVyaWZ5X2xvZ1tyb3V0aW5nXSgpIC0+IHZvaWQ6CnZlcmlmeV9sb2c6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM2MwogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDQKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA1CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA2CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA3CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA4CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA5CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTEKICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxMgogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEzCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6Mzg1CiAgICAvLyBsb2coYSwgYiwgYywgZF9iaWd1aW50LCBlLCBmLCBnLCBoLCBpLCBqLCBhcmM0X2ssIGFyYzRfbSwgYXJjNF9uLCBvLCBzZXA9Ii0iKQogICAgdW5jb3ZlciAxMwogICAgYnl0ZWNfMiAvLyAiLSIKICAgIGNvbmNhdAogICAgdW5jb3ZlciAxMwogICAgaXRvYgogICAgY29uY2F0CiAgICBieXRlY18yIC8vICItIgogICAgY29uY2F0CiAgICB1bmNvdmVyIDEyCiAgICBjb25jYXQKICAgIGJ5dGVjXzIgLy8gIi0iCiAgICBjb25jYXQKICAgIHVuY292ZXIgMTEKICAgIGNvbmNhdAogICAgYnl0ZWNfMiAvLyAiLSIKICAgIGNvbmNhdAogICAgdW5jb3ZlciAxMAogICAgY29uY2F0CiAgICBieXRlY18yIC8vICItIgogICAgY29uY2F0CiAgICB1bmNvdmVyIDkKICAgIGNvbmNhdAogICAgYnl0ZWNfMiAvLyAiLSIKICAgIGNvbmNhdAogICAgdW5jb3ZlciA4CiAgICBjb25jYXQKICAgIGJ5dGVjXzIgLy8gIi0iCiAgICBjb25jYXQKICAgIHVuY292ZXIgNwogICAgY29uY2F0CiAgICBieXRlY18yIC8vICItIgogICAgY29uY2F0CiAgICB1bmNvdmVyIDYKICAgIGNvbmNhdAogICAgYnl0ZWNfMiAvLyAiLSIKICAgIGNvbmNhdAogICAgdW5jb3ZlciA1CiAgICBjb25jYXQKICAgIGJ5dGVjXzIgLy8gIi0iCiAgICBjb25jYXQKICAgIHVuY292ZXIgNAogICAgY29uY2F0CiAgICBieXRlY18yIC8vICItIgogICAgY29uY2F0CiAgICB1bmNvdmVyIDMKICAgIGNvbmNhdAogICAgYnl0ZWNfMiAvLyAiLSIKICAgIGNvbmNhdAogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIGJ5dGVjXzIgLy8gIi0iCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM2MwogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlByaW1pdGl2ZU9wcy5jb250cmFjdC5QcmltaXRpdmVPcHNDb250cmFjdC52ZXJpZnlfbG9nZ2VkX2VycnNbcm91dGluZ10oKSAtPiB2b2lkOgp2ZXJpZnlfbG9nZ2VkX2VycnM6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM4NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICBkdXAKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6Mzg5LTM5MAogICAgLy8gIyAiRVJSOjAxIgogICAgLy8gbG9nZ2VkX2Fzc2VydChhcmcgIT0gMSwgIjAxIikKICAgIGludGNfMCAvLyAxCiAgICAhPQogICAgYm56IHZlcmlmeV9sb2dnZWRfZXJyc19hZnRlcl9hc3NlcnRAMwogICAgcHVzaGJ5dGVzICJFUlI6MDEiCiAgICBsb2cKICAgIGVyciAvLyBFUlI6MDEKCnZlcmlmeV9sb2dnZWRfZXJyc19hZnRlcl9hc3NlcnRAMzoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6MzkxLTM5MgogICAgLy8gIyAiRVJSOmFyZzAyOmFyZyBpcyB0d28iCiAgICAvLyBsb2dnZWRfYXNzZXJ0KGFyZyAhPSAyLCAiYXJnMDIiLCBlcnJvcl9tZXNzYWdlPSJhcmcgaXMgdHdvIikKICAgIGR1cAogICAgcHVzaGludCAyCiAgICAhPQogICAgYm56IHZlcmlmeV9sb2dnZWRfZXJyc19hZnRlcl9hc3NlcnRANQogICAgcHVzaGJ5dGVzICJFUlI6YXJnMDI6YXJnIGlzIHR3byIKICAgIGxvZwogICAgZXJyIC8vIEVSUjphcmcwMjphcmcgaXMgdHdvCgp2ZXJpZnlfbG9nZ2VkX2VycnNfYWZ0ZXJfYXNzZXJ0QDU6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM5My0zOTQKICAgIC8vICMgIkFFUjphcmcwMyIKICAgIC8vIGxvZ2dlZF9hc3NlcnQoYXJnICE9IDMsICJhcmcwMyIsIHByZWZpeD0iQUVSIikKICAgIGR1cAogICAgcHVzaGludCAzCiAgICAhPQogICAgYm56IHZlcmlmeV9sb2dnZWRfZXJyc19hZnRlcl9hc3NlcnRANwogICAgcHVzaGJ5dGVzICJBRVI6YXJnMDMiCiAgICBsb2cKICAgIGVyciAvLyBBRVI6YXJnMDMKCnZlcmlmeV9sb2dnZWRfZXJyc19hZnRlcl9hc3NlcnRANzoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6Mzk1LTM5NgogICAgLy8gIyAiQUVSOmFyZzA0OmFyZyBpcyA0IgogICAgLy8gbG9nZ2VkX2Fzc2VydChhcmcgIT0gNCwgImFyZzA0IiwgZXJyb3JfbWVzc2FnZT0iYXJnIGlzIDQiLCBwcmVmaXg9IkFFUiIpCiAgICBkdXAKICAgIHB1c2hpbnQgNAogICAgIT0KICAgIGJueiB2ZXJpZnlfbG9nZ2VkX2VycnNfYWZ0ZXJfYXNzZXJ0QDkKICAgIHB1c2hieXRlcyAiQUVSOmFyZzA0OmFyZyBpcyA0IgogICAgbG9nCiAgICBlcnIgLy8gQUVSOmFyZzA0OmFyZyBpcyA0Cgp2ZXJpZnlfbG9nZ2VkX2VycnNfYWZ0ZXJfYXNzZXJ0QDk6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjM5OC0zOTkKICAgIC8vICMgIkVSUjphcmcwNSIKICAgIC8vIGlmIGFyZyA9PSA1OgogICAgZHVwCiAgICBwdXNoaW50IDUKICAgID09CiAgICBieiB2ZXJpZnlfbG9nZ2VkX2VycnNfYWZ0ZXJfaWZfZWxzZUAxMQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo0MDAKICAgIC8vIGxvZ2dlZF9lcnIoImFyZzA1IikKICAgIHB1c2hieXRlcyAiRVJSOmFyZzA1IgogICAgbG9nCiAgICBlcnIgLy8gRVJSOmFyZzA1Cgp2ZXJpZnlfbG9nZ2VkX2VycnNfYWZ0ZXJfaWZfZWxzZUAxMToKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NDAxLTQwMgogICAgLy8gIyAiRVJSOmFyZzA2OmFyZyB3YXMgNiIKICAgIC8vIGlmIGFyZyA9PSA2OgogICAgZHVwCiAgICBwdXNoaW50IDYKICAgID09CiAgICBieiB2ZXJpZnlfbG9nZ2VkX2VycnNfYWZ0ZXJfaWZfZWxzZUAxMwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo0MDMKICAgIC8vIGxvZ2dlZF9lcnIoIjA2IiwgZXJyb3JfbWVzc2FnZT0iYXJnIHdhcyA2IikKICAgIHB1c2hieXRlcyAiRVJSOjA2OmFyZyB3YXMgNiIKICAgIGxvZwogICAgZXJyIC8vIEVSUjowNjphcmcgd2FzIDYKCnZlcmlmeV9sb2dnZWRfZXJyc19hZnRlcl9pZl9lbHNlQDEzOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1ByaW1pdGl2ZU9wcy9jb250cmFjdC5weTo0MDQtNDA1CiAgICAvLyAjICJBRVI6YXJnMDciCiAgICAvLyBpZiBhcmcgPT0gNzoKICAgIGR1cAogICAgcHVzaGludCA3CiAgICA9PQogICAgYnogdmVyaWZ5X2xvZ2dlZF9lcnJzX2FmdGVyX2lmX2Vsc2VAMTUKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NDA2CiAgICAvLyBsb2dnZWRfZXJyKCJhcmcwNyIsIHByZWZpeD0iQUVSIikKICAgIHB1c2hieXRlcyAiQUVSOmFyZzA3IgogICAgbG9nCiAgICBlcnIgLy8gQUVSOmFyZzA3Cgp2ZXJpZnlfbG9nZ2VkX2VycnNfYWZ0ZXJfaWZfZWxzZUAxNToKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6NDA3LTQwOAogICAgLy8gIyAiQUVSOmFyZzA4OmFyZyBpcyBlaWdodCAoMDgpIgogICAgLy8gaWYgYXJnID09IDg6CiAgICBkdXAKICAgIHB1c2hpbnQgOAogICAgPT0KICAgIGJ6IHZlcmlmeV9sb2dnZWRfZXJyc19hZnRlcl9pZl9lbHNlQDE3CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvUHJpbWl0aXZlT3BzL2NvbnRyYWN0LnB5OjQwOQogICAgLy8gbG9nZ2VkX2VycigiYXJnMDgiLCBlcnJvcl9tZXNzYWdlPSJhcmcgaXMgZWlnaHQgKDA4KSIsIHByZWZpeD0iQUVSIikKICAgIHB1c2hieXRlcyAiQUVSOmFyZzA4OmFyZyBpcyBlaWdodCAoMDgpIgogICAgbG9nCiAgICBlcnIgLy8gQUVSOmFyZzA4OmFyZyBpcyBlaWdodCAoMDgpCgp2ZXJpZnlfbG9nZ2VkX2VycnNfYWZ0ZXJfaWZfZWxzZUAxNzoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9QcmltaXRpdmVPcHMvY29udHJhY3QucHk6Mzg3CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4K",
|
|
1661
1661
|
"clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg=="
|
|
1662
1662
|
},
|
|
1663
1663
|
"byteCode": {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/.github/pull_request_template.md
RENAMED
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/.github/workflows/cd.yaml
RENAMED
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/.github/workflows/ci.yaml
RENAMED
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/.github/workflows/gh-pages.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/testing-guide/arc4-types.md
RENAMED
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/testing-guide/avm-types.md
RENAMED
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/testing-guide/concepts.md
RENAMED
|
File without changes
|
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/testing-guide/index.md
RENAMED
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/docs/testing-guide/opcodes.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/auction/__init__.py
RENAMED
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/auction/contract.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/marketplace/__init__.py
RENAMED
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/examples/marketplace/contract.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/scripts/check_stubs_cov.py
RENAMED
|
File without changes
|
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/scripts/validate_examples.py
RENAMED
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/__init__.py
RENAMED
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/arc4.py
RENAMED
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/compiled.py
RENAMED
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/constants.py
RENAMED
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/context.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/enums.py
RENAMED
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/gtxn.py
RENAMED
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/itxn.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/mutable.py
RENAMED
|
File without changes
|
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/op/block.py
RENAMED
|
File without changes
|
|
File without changes
|
{algorand_python_testing-1.2.0b6 → algorand_python_testing-1.2.0b7}/src/_algopy_testing/op/crypto.py
RENAMED
|
File without changes
|